🌹😊🌹博客主页:【Hello_shuoCSDN博客】
✨操作系统详见 【操作系统专项】
✨C语言知识详见:【C语言专项】
目录
操作系统的内核
操作系统结构——分层结构
操作系统结构——模块化
操作系统结构——宏内核、微内核
操作系统结构——外核
操作系统的内核
内核是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
原语是一种特殊的程序,具有原子性。也就是说,这段程序的运行必须一气呵成,不可被“中断”。
时钟管理是利用时钟中断实现计时功能。
非内核功能 (如GUI) ——Ubuntu、CentOS的开发团队,其主要工作是实现非内核功能,而内核都是用了Linux内核。
把所有功能都包括在操作系统内核中的叫做大内核,而内核中如果只保留与硬件最紧密的这一部分,那么这种内核就叫做微内核。
注意:操作系统的内核需要运行在内核态,操作系统的非内核功能运行在用户态。
一个故事:现在,应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理、存储管理、设备管理
注意:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性
(补充:这里的变态是简写易懂的形式,在真正书写的时候要书写——CPU状态的转换)
典型的大内核 / 宏内核 / 单内核 操作系统——Linux、UNIX
典型的 微内核 操作系统——Windows NT
知识总框:
操作系统体系结构的特征、思想以及优缺点:
操作系统结构——分层结构
(最底层是硬件,最高层是用户接口,每层可调用更低一层)
内核分多层,每层可单向调用更低一层提供的接口
优点:
1.便于调试和验证,自底向上逐层调试验证
2.易扩充和易维护,各层之间调用接口清晰固定
缺点:
1.仅可调用相邻低层,难以合理定义各层的边界
2.效率低,不可跨层调用,系统调用执行时间长
操作系统结构——模块化
模块化是将操作系统按功能划分为若干个具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。把这种设计方法称为模块-接口法,如图所示为由模块、子模块等组成的模块化操作系统结构。
将内核划分为多个模块,各模块之间相互协作。
内核=主模块+可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核
优点:
1模块间逻辑清晰易于维护,确定横块间接口后即可多模块同时开发
2. 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
3. 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
缺点:
1.模块间的接口定义未必合理、实用
2.模块间相互依赖,更难调试和验证
操作系统结构——宏内核、微内核
操作系统结构——外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
优点:
1. 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。
2. 减少了虚拟硬件资源的“映射层”,提升效率。
缺点:
1.降低了系统的一致性
2.使系统变得更复杂