<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[heiworld的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/heiworld</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; heiworld]]></copyright><item><title><![CDATA[一个简单的鸽巢原理的应用]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/32948675</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/32948675</guid><author>heiworld</author><pubDate>Sat, 21 Jun 2014 19:37:14 +0800</pubDate><description><![CDATA[证明:对每个整数n，存在一个数是n的倍数，且它的十进制表示中只出现0和1]]></description><category></category></item><item><title><![CDATA[对虚拟化技术的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/32341933</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/32341933</guid><author>heiworld</author><pubDate>Thu, 19 Jun 2014 20:38:28 +0800</pubDate><description><![CDATA[VMM为每个虚拟机分配一套数据结构来管理状态，包括虚拟处理器的全套寄存器，物理内存使用情况、虚拟
设备状态。VMM调度虚拟机时，将其部分状态恢复到主机系统中。Guest OS运行在低特权级，涉及到需要特
权级操作的时候，比如写CS或者GDT寄存器的时候，权限不错会导致异常，运行权自动交还给VMM，VMM可以
使用一些二进制翻译的技术，比如把压cs寄存器的指令替换成压到栈上面，把读取GDT的指]]></description><category></category></item><item><title><![CDATA[GDB调试中查看栈信息]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/28302971</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/28302971</guid><author>heiworld</author><pubDate>Tue, 03 Jun 2014 21:51:48 +0800</pubDate><description><![CDATA[查看栈信息
当程序被停住了，你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数，函数的地址，函数参数，函数内的局部变量都会被压入“栈”（Stack）中。你可以用GDB命令来查看当前的栈中的信息。
下面是一些查看函数调用栈信息的GDB命令：
    Backtrace，bt 打印当前的函数调用栈的所有信息。如：        
        (gdb) bt
    ]]></description><category></category></item><item><title><![CDATA[电梯算法]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/27978521</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/27978521</guid><author>heiworld</author><pubDate>Sun, 01 Jun 2014 18:58:01 +0800</pubDate><description><![CDATA[在看linux 0.11版本的块设备驱动部分，里面提到了电梯算法，]]></description><category></category></item><item><title><![CDATA[Git fetch和git pull的区别]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/26966179</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/26966179</guid><author>heiworld</author><pubDate>Sun, 25 May 2014 16:41:43 +0800</pubDate><description><![CDATA[Git中从远程的分支获取最新的版本到本地有这样2个命令：
1. git fetch：相当于是从远程获取最新版本到本地，不会自动merge]]></description><category></category></item><item><title><![CDATA[对linux 0.11版本内核中进程创建fork()的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25792855</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25792855</guid><author>heiworld</author><pubDate>Wed, 14 May 2014 13:41:38 +0800</pubDate><description><![CDATA[首先来看一下fork的系统调用，源码如下：]]></description><category></category></item><item><title><![CDATA[对linux 0.11版本内核中的进程退出和回收的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25747345</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25747345</guid><author>heiworld</author><pubDate>Tue, 13 May 2014 23:04:04 +0800</pubDate><description><![CDATA[常常看到调用exit结束进程，那结束进程到底做了哪些事情叫结束进程呢？目前在看的linux 0.11版本的内核里面的exit()系统调用里面就是调用了do_exit()，它的源码如下：]]></description><category></category></item><item><title><![CDATA[对linux 0.11版本内核的kill系统调用的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25734675</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25734675</guid><author>heiworld</author><pubDate>Tue, 13 May 2014 19:02:03 +0800</pubDate><description><![CDATA[kill系统调用以前一直认为只是用来杀死某个进程的，看了源码纠正下自己的错误认识。源码如下：]]></description><category></category></item><item><title><![CDATA[对linux 0.11版本中do_signal()的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25563125</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25563125</guid><author>heiworld</author><pubDate>Sun, 11 May 2014 21:55:41 +0800</pubDate><description><![CDATA[do_signal()的做法蛮让人印象深刻的，在此记录下来。
do_signal()函数式内核系统调用(int 0x80)中断处理程序中对信号预处理程序。假如看过系统调用或者时钟中断的源码，会发现他们在退出的时候总会检查下信号位图，假如有的会就会调用do_signal，它会把信号的处理函数插入到用户程序堆栈中，然后修改中断返回的环境，直接返回到用户态的信号处理函数中先，再从用户态中跳转到原先执行]]></description><category></category></item><item><title><![CDATA[linux 0.11版本内核中信号signal()和sigaction()的区别]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25560815</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25560815</guid><author>heiworld</author><pubDate>Sun, 11 May 2014 20:54:29 +0800</pubDate><description><![CDATA[记录下我对这两个有关信号程序的理解，signal()和sigaction()主要用来设置针对某一信号的处理程序，这两个系统调用会首先会在进程自己的任务数据结构中设置sigaction[]结构数组，该元素结构如下图所示：]]></description><category></category></item><item><title><![CDATA[对于ftok的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25426723</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25426723</guid><author>heiworld</author><pubDate>Fri, 09 May 2014 21:55:39 +0800</pubDate><description><![CDATA[回顾了一下以前的实验，一直不理解]]></description><category></category></item><item><title><![CDATA[对于linux 0.11版本中睡眠和唤醒函数的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25418655</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25418655</guid><author>heiworld</author><pubDate>Fri, 09 May 2014 18:15:27 +0800</pubDate><description><![CDATA[sleep_on()函数主要是为了在一个进程所请求的资源忙的时候进行进程调度，并把该进程放到等待队列上等待一段时间。代码如下：
void sleep_on(struct task_struct **p)
{
	struct task_struct *tmp;

	if (!p)
		return;
	if (current == &(init_task.task))
		panic("task[]]></description><category></category></item><item><title><![CDATA[对linux 0.11版本中switch_to()的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25397155</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25397155</guid><author>heiworld</author><pubDate>Fri, 09 May 2014 15:24:20 +0800</pubDate><description><![CDATA[switch_to的代码在linux-0.11\include\linux中的sched.h。它是一个宏定义，代码如下：]]></description><category></category></item><item><title><![CDATA[对linux 0.11版本中进程调度源码的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25388981</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25388981</guid><author>heiworld</author><pubDate>Fri, 09 May 2014 13:56:54 +0800</pubDate><description><![CDATA[刚看到有关进程调度的源码，记录下。部分源码如下：
void schedule(void)
{
	int i,next,c;
	struct task_struct ** p;

/* check alarm, wake up any interruptible tasks that have got a signal */

	for(p = &LAST_TASK ; p > &FIRST_TA]]></description><category></category></item><item><title><![CDATA[剑指offer面试题42]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/25241891</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/25241891</guid><author>heiworld</author><pubDate>Wed, 07 May 2014 20:17:22 +0800</pubDate><description><![CDATA[题目42：翻转单词顺序，翻转句子中单词的顺序]]></description><category></category></item><item><title><![CDATA[函数对象]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/24497595</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/24497595</guid><author>heiworld</author><pubDate>Fri, 25 Apr 2014 22:01:26 +0800</pubDate><description><![CDATA[总结下函数对象
函数对象可以认为是重载了]]></description><category></category></item><item><title><![CDATA[智能指针]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/24435955</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/24435955</guid><author>heiworld</author><pubDate>Thu, 24 Apr 2014 21:56:25 +0800</pubDate><description><![CDATA[刚看到c++中智能指针，总结下]]></description><category></category></item><item><title><![CDATA[排列的问题]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/24430331</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/24430331</guid><author>heiworld</author><pubDate>Thu, 24 Apr 2014 19:35:36 +0800</pubDate><description><![CDATA[今天上离散数学，几道有意思的题整理了下。]]></description><category></category></item><item><title><![CDATA[实地址模式和保护模式的理解]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/24371677</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/24371677</guid><author>heiworld</author><pubDate>Wed, 23 Apr 2014 16:46:03 +0800</pubDate><description><![CDATA[在微处理器的历史上，第一款微处理器芯片4004是由Intel推出的，那是一个4位的微处理器。在4004之后，intel推出了一款8位处理器8080，它有1个主累加器（寄存器A）和6个次累加器（寄存器B,C,D,E,H和L）,几个次累加器可以配对（如组成BC, DE或HL）用来访问16位的内存地址，也就是说8080可访问到64K内的地址空间。另外，那时还没有段的概念，访问内存都要通过绝对地址，因此程]]></description><category></category></item><item><title><![CDATA[bochs安装]]></title><link>https://blog.youkuaiyun.com/heiworld/article/details/24292375</link><guid>https://blog.youkuaiyun.com/heiworld/article/details/24292375</guid><author>heiworld</author><pubDate>Tue, 22 Apr 2014 10:43:26 +0800</pubDate><description><![CDATA[最近想照着书和网上的资料写]]></description><category></category></item></channel></rss>