基于linux内核2.6.24版本,书籍:Professional Linux Kernel Architecture英文版(可在https://github.com/welldef/os_books.git下载)
1 一些概念
1.1 微内核和单体内核
微内核:只有最基本的功能直接在中央内核(微内核)中实现。所有其他功能都委托给各自独立的进程,这些进程通过通信接口与微内核通信,例如各种文件系统、内存管理等。理论上,这是一种非常优雅的方法,因为各个部分明显相互隔离,这迫使程序员使用“精益”编程技术。这种方法的其他好处是动态可扩展性和在运行时交换重要组件的能力。然而,由于需要额外的CPU时间来支持组件之间的复杂通信,微内核在实践中并没有真正建立起来
单体内核:内核的整个代码(包括其所有子系统,如内存管理、文件系统或设备驱动程序)都打包到一个文件中。每个函数都可以访问内核的所有其他部分
linux使用的是单体内核,但其模块化特性确实在一定程度上借鉴了微内核的理念
1.2 内核组成
进程、任务切换和调度
在Unix下运行的应用程序、服务和其他程序被称为进程。各个进程的地址空间是完全独立的。
linux是多任务系统,多任务系统中,内核将负责进程的切换。既然是多任务系统,则该系统必须给每个单独的进程一种CPU始终可用的错觉。这是通过在CPU资源被回收并且进程被置于空闲状态之前保存进程的所有状态来实现的。当该进程被重新激活时,恢复保存的状态。
内核还必须决定如何分配CPU时间。重要进程被分配了更大的CPU时间份额,而不太重要的进程则被分配了更小的份额。决定哪个进程运行多长时间被称为进程的调度
1.2.1 进程
Linux采用树形结构管理进程之间的关系,称之为进程树,其中每个进程都依赖于一个父进程。内核启动时会初始化1号进程-init进程,init进程作为所有用户进程的根,它负责进一步的系统初始化工作以及显示登录提示等等功能。(新版本的内核1号进程已经变为systemd了)
标签:Kernel,内核,微内核,Linux,进程,Professional,CPU,Architecture From: https://www.cnblogs.com/zhenjingcool/p/18420697