内核的函数以相当直接了当的方式直接获得动态内存,这是因为: 1、内核是操作系统中优先级最高的成分,如果某个内核函数请求动态内存,那么,必定有正当的理由发出那个请求,因此没有道理推迟这个请求。 2、内核信任自己。所有的内核函数假定是没有错的。 当给用户态进程分配内存时情况完全不一样: 1、进程对动态内存的请求被认为不是紧迫的,例如,当进程的可执行文件被装入时,进程并不一定立即对又有的代码页进行访问,类似的当进程调用malloc以获得动态内存时,也并不意味着进程很快就会访问所有所获得的内存。因此,一般来说,内核总是尽量…

2013年10月6日 0条评论 12点热度 阅读全文

内核抢占:如果进程正执行内核函数时,即他在内核态运行,允许发生内核切换,那么这个内核是抢占的。 无论是在抢占或者是非抢占内核中,运行在内核中的进程都可以放弃cpu,比如其原因是,进程由于等待资源而不得不转入睡眠状态。我们把这种进程切换叫做计划性进程切换。但是,抢占内核在响应引起进程切换的异步事件的方式上与非抢占内核是有差别的,我们将把这种进程叫做强制性进程切换。 所有的进程切换都由宏switch_to 宏来完成。在抢占内核和非抢占内核中,当进程执行完某些具有内核功能的线程,而且调度程序被调用后,就发生进程切换。因此…

2013年9月30日 0条评论 6点热度 阅读全文

中断通常定义为一个事件,该事件改变处理器执行的指令顺序。这个事件与cpu芯片内外部硬件电路产生的电信号相对应。 同步中断:当前指令执行时的有cpu控制单元产生的,之所以成为同步,是因为只有在一条指令结束后才会发出中断。 异步中断:由其他硬件设备依照cpu时钟信号随机产生的。 同步中断和异步中断通常成为异常和中断,异常是有程序的错误产生的,或者是又内核必须处理的异常条件产生的。第一种情况下,内核通过发送一个每个unix程序员都熟悉的信号来处理异常。第二种情况下,内核执行恢复异常需要的所有步骤,入缺页,或对内核提供的一…

2013年9月30日 0条评论 4点热度 阅读全文