Linux进程/内核模型

     内核必须实现一组服务和相应的接口,应用程序则可以使用这些接口,而不是直接与硬件打交道。

      

    Linux内核主要由以下5个子系统组成:进程调度、内存管理、虚拟文件系统、进程间通信以及设备驱动。

     在这个组成中,最核心的就是进程管理->进程调度和进程间通信。

     在Linux系统中,我们编写的任何应用层程序,不管是上层还是属于中间框架层的代码,甚至是最底层的驱动代码,都可以以进程的形式在系统上运行。CPU可以运行在用户态和内核态。

     在Linux 进程/内核模型中,每个进程就是执行在机器上的唯一的镜像,它们对系统服务具有排他性,当进程需要访问系统服务时,它会发出系统调用(对内核的请求),硬件则将权利模式由用户状态切换到内核模式。内核过程又会适时通过硬件强制返回用户模式。当一个程序执行在用户模式下,它就不能直接地访问内核数据结构或内核的程序。

     

     进程是动态的实体,其在系统中的生命是有限的。Linux内核是以线程为调度的单位。

     任务:进程的集合,其中可以包含一个或多个进程。

     异步:两个事件的发生是没有任何关联的,一件事的发生不会因另一事件的发生而有任何变化。

     同步:两个事件之间有先后顺序之分,一个事件的发生一定是发生在某个事件之后。

     如:一个程序访问某一硬件资源时,另一个程序也要访问该硬件资源,后一个程序就要等待前一个程序,我们就说这两个程序同步访问该硬件资源。(同步不是两个事件同时发生)

     内核不是进程,而是进程的管理者。

     内核例程如何被激活:1.进程调用系统调用;2.CPU正执行进程发出的异常信号,表示诸如无效指令等非常规条件发生;3.外围设备发出一个中断信号到CPU,每个中断信号都是由一个叫做中断处理句柄的内核程序来处理的,中断与CPU的执行是异步的,所以中断的发生时不可预期的;4.内核线程被调度执行。

     

     异常与中断的区别:

     相同点:都会导致CPU停下当前的进程进入专门的处理例程。

     不同点:异常是同步发生的,它一定是发生在某一错误后,而中断是异步发生的,它的发生时随机的。

 

posted @ 2016-06-25 03:41  时光撒谎  阅读(1821)  评论(0编辑  收藏  举报