王道笔记
1.系统调用
操作系统作为用户和计算机硬件之间的接口,需要像上提供一些简单的服务。主要包括命令接口和程序接口,程序接口由一组系统调用组成。应用程序可以通过系统调用来请求操作系统的内核服务。
凡是与资源共享有关的操作,都需要通过系统调用的方式来像内核请求服务。
应用程序->trap(非特权指令,目态)->系统调用程序(管态)->系统调用处理程序->处理完成->目态。
2.微内核
3.分层结构
特征:
- 内核分多层,每一层可以单向调用更低一层的接口。
优点:
- 便于调试和验证,自底向上依次调试验证。
- 容易扩充层数,和维护(接口都是定义好的,若要在中间增加一层,只需要做好中间和上下两层之间的接口即可)
缺点:
- 仅可调用相邻底层,难以定义各层边界(因为有的层次之间需要相互调用)。2效率低,不可跨层调用,系统执行时间长。
4.模块
特征:
- 将内核划分为多个模块,各模块之间相互协作。
- 内核=主模块+可加载内核模块
- 主模块:只负责核心功能,如进程调度,内存管理
- 可加载内核模块:可以动态加载新模块到内核,而无需编译整个内核
优点:
- 模块间逻辑清晰,易于维护,确定模块间接口时就可以多模块同时开发
- 支持动态加载新的内核模块,增强操作系统适应性
- 任何模块都可以直接调用其他模块,无需进行消息传递进行通信,效率高
缺点:
- 模块间的接口未必合理
- 模块间相互依赖,难以调试和验证
5.宏内核、微内核
特征:
大内核:
- 所有系统功能都放在内核中
微内核:
- 只把“中断”、“原语”、“进程通信”等核心功能放入内核。进程管理、文件管理、设备管理等功能以用户进程形式运行在用户态。
优点:
宏内核:
- 性能高,内核内部各种功能都可以直接调用
微内核:
- 内核小,功能少,易于维护,可靠性高
- 内核外的某个功能模块出错时不会导致整个系统崩溃
缺点:
宏内核:
- 内核复杂,难以维护
- 内核中某一功能出错,就会导致系统崩溃
微内核:
- 性能低,需要频繁切换用户态/核心态
- 用户态下的各功能之间不能直接调用,只能通过“消息传递”来实现通信