黑盒中有什么
内核几大的功能:
- 管理CPU。进程管理
- 管理内存
- 管理硬盘。文件系统
- 管理显卡
- 管理网卡
- 管理各种I/O设备
宏内核
应用程序调用接口 => 处理器切换特权模式,开始运行内核代码 => 内核分配一块内存 => 把首地址返回给API => API返回,在这块内存,运行用户模式下的应用程序
微内核
把实际的进程管理、内存管理、设备管理、文件管理等服务功能,做成一个个服务进程。
采用消息通信。应用程序 => 微内核(让当前的进程停止运行) => 相应的服务进程(返回内存地址消息) => 微内核 => 应用程序
宏微内核的优缺点
宏内核的优点:性能好。
宏内核的缺点是:没有模块化,高度耦合。(可能有连锁反应、编译费时长)
微内核的优点:利于协作开发、移植性好
微内核的缺点:性能差(这也是商业级的系统很少采用它的主要原因)
分离硬件的相关性
抽象层。如进程包含两个机制:进程调度 + 进程切换。其实调度算法很少变,但是切换涉及到的上下文和具体的机器有关。所以可以把所有和硬件相关的代码抽离出来。
我们的选择
混合内核
三大层:
- 内核接口层
- 内核功能层(进程、内存、中断、设备)
- 内核硬件层(初始化、CPU控制、中断处理、物理内存管理、平台相关功能)