原文链接 http://www.openpcba.com/web/contents/get?id=4638&tid=15
linux内核整体架构:
上图说明了Linux内核的整体架构。根据内核的核心功能,Linux内核提出了5个子系统,分别负责如下的功能:
Process Scheduler,也称作进程管理、进程调度。负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。
Memory Manager,内存管理。负责管理Memory(内存)资源,以便让各个进程可以安全地 共享机器的内存资源。另外,内存管理会提供虚拟内存的机制,该机制可以让进程使用多于系 统可用Memory的内存,不用的内存会通过文件系统保存在外部非易失存储器中,需要使用的 时候,再取回到内存中。
VFS(Virtual File System),虚拟文件系统。Linux内核将不同功能的外部设备,例如Disk设 备(硬盘、磁盘、NAND Flash、Nor Flash等)、输入输出设备、显示设备等等,抽象为可 以通过统一的文件操作接口(open、close、read、write等)来访问。这就是Linux系统“一切 皆是文件”的体现(其实Linux做的并不彻底,因为CPU、内存、网络等还不是文件,如果真的 需要一切皆是文件,还得看贝尔实验室正在开发的"[Plan 9](http://plan9.bell-labs.com/plan9/)”的)。
Network,网络子系统。负责管理系统的网络设备,并实现多种多样的网络标准。
IPC(Inter-Process Communication),进程间通信。IPC不管理任何的硬件,它主要负责Linux系统中进程之间的通信。
Linux内核的任务:
1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。
3.内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。
4.内核就像一个库,提供了一组面向系统的命令。系统调用对于应用程序来说,就像调用普通函数一样。
内核实现策略:
1.微内核。最基本的功能由中央内核(微内核)实现。所有其他的功能都委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。
2.宏内核。内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。
哪些地方用到了内核机制?
1.进程(在cpu的虚拟内存中分配地址空间,各个进程的地址空间完全独立;同时执行的进程数最多不超过cpu数目)之间进行通 信,需要使用特定的内核机制。
2.进程间切换(同时执行的进程数最多不超过cpu数目),也需要用到内核机制。
进程切换也需要像FreeRTOS任务切换一样保存状态,并将进程置于闲置状态/恢复状态。
3.进程的调度。确认哪个进程运行多长的时间。
网友评论