操作系统结构
操作系统结构
- 前言
- 分层法
- 模块化
- 宏内核与微内核
- 宏内核
- 微内核
- 外核
- 经典试题
前言
随着操作系统功能的不断增多和代码的规模的不断扩大,提供合理的结构,对于降低操作系统复杂度、提升操作系统安全与可靠性来说变得尤为重要。
分层法
分层法是将操作系统分为若干层,最底层为硬件,最高层为用户接口,每层只能调用紧邻它的底层的功能和服务。
优点:
1)便于系统的调试和验证,简化了系统的设计和实现。
第一层可先调试而无须考虑系统的其他部分,因为它只使用了基本硬件。第一层调试完且验证正确后,就可以调试第二层,如此向上,如果在调试某层时发现错误,那么错误应该在这一层上,这是因为它的低层都调好了。
2)易扩充和易维护。
在系统中增加、修改或替换一层中的模块或整层时,只要不改变相应层间的接口,就不会影响其他层。
缺点:
1)合理定义各层比较困难。
因为依赖关系固定后,往往就显得不灵活。
2)效率较差。
操作系统每执行一个功能,通常要自上而下地穿越多层,各层之间都有相应的层间通信机制,这无疑增加了额外的开销,倒是系统效率降低。
模块化
模块化是将操作系统按功能划分为若干具有一定独立性的模块。每个模块具有某方面的功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。还可以进一步将各模块细分为若干具有一定功能的子模块,同样也规定好了各子模块之间的接口。这种设计方式被称为模块-接口法。
优点:
1)提高了操作系统设计的正确性、可理解性和可维护性
2)增强了操作系统的可适应性
3)加速了操作系统的开发过程
缺点:
1)模块间的接口规定了很难满足对接口的实际需求
2)各模块的每个决定无法建立在上一个已验证的正确决定的基础上,因此无法找到一个可靠的决定顺序
在划分模块的时,如果将模块划分得太小,虽然能降低模块本身的复杂性,但会使得模块之间的联系过多,造成系统比较混乱;如果模块划分得过大,又会增加模块内部的复杂性,显然应在两者间进行权衡。此外,在划分模块时,要充分考虑模块的独立性问题,因为模块模块独立性越高,各模块间的交互就越少,系统的结构也就越清晰,衡量模块的独立性主要有两个标准:
- 内聚性:模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好。
- 耦合度:模块之间相互联系和相互影响的程度。耦合程度越低,模块独立性越好。
宏内核与微内核
从操作系统的内核架构来划分,可分为宏内核和微内核。
宏内核
宏内核,也称单内核或大内核,是指将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。例如主流的Windows、Android、IOS、macOS、Linux等都是基于宏内核的构架。
微内核
微内核,指将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。那些移除内核的操作系统代码根据分层的原则被分成若干服务程序,他们的执行相互独立,交互则都借助于微内核进行通信。
微内核结构将操作系统分为两大部分:微内核和多个服务器。
微内核:
他是精心设计的、能实现操作系统最基本核心功能的小型内核,通常包含:
1)与硬件处理紧密相关的部分。
2)一些较基本的功能。
3)客户和服务器之间的通信。
微内核机构中,为了实现高可靠性,只有微内核运行在内核态,其余的绝大部分功能都放在微内核外得一组服务器(进程)中实现,如用于提供对进程(线程)进行管理的进程(线程)服务器、提供虚拟存储器管理功能的虚拟存储器服务器等,他们都是作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现交互。
微内核结构通常利用 “机制与策略分离” 的原理来构造OS结构,将机制部分以及与硬件紧密相连的部分放入微内核,将策略部分放入微内核外的服务器中。微内核通常具有如下功能:
1)进程(线程)管理
2)低级存储器管理
3)中断和陷入处理
微内核操作系统将进程管理、存储器管理以及I/O管理这些功能一分为二,属于机制的很小一部分放入微内核,而绝大部分放入微内核外的各种服务器实现,大多数服务器都要比微内核大。因此,在采用客户/服务器模式时,能把微内核做得很小。
微内核的特点:
- 扩展性和灵活性
- 可靠性和安全性
- 可移植性
- 分布式计算
微内核结构的主要问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大。为了改善运行效率,可以将那些频繁使用的系统服务移回内核,从而保证系统性能,但这又会使微内核的容量明显的增大。
外核
外核的程序在内核态中运行,他的任务是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。每个用户层的虚拟机可以运行自己的操作系统,但限制只能使用已经申请并且获得分配的那部分资源。
外核机制的优点是减少了映射层。在其他的设计中,每个虚拟机都认为他有自己的磁盘,其盘块号从0到最大编号,这样虚拟机监控程序就必须维护一张表格以重映像磁盘地址(或其他资源),有了外核,这个重映射处理就不需要了。外核只需要记录已经分配给各个虚拟机的有关资源即可。这个方法还有一个优点,它将多道程序(在外核)与用户操作系统代码(在用户空间内)加以分离,而且相应的负载并不重,因为外核所做的只是保持多个虚拟机彼此不发生冲突。
经典试题
- 用分层式构架设计的操作系统结构特点是?___________.
- 相对于微内核系统来说,宏内核操作系统的缺点是?___________.
- 微内核操作系统的特点是?________________.