操作系统的结构设计

1.操作系统的内部结构

现代操作系统从内部结构来分析,通常包括内核和核外两部分。
(1)操作系统的内核
操作系统在整体上处于硬件和应用程序之间,其顶层是应用程序。操作系统的内核是对硬件的首次扩充,是实现操作系统各项功能的基础。操作系统内核部分是指在系统保护好的运行环境,所以它将一些与硬件密切相关的模块,运行频率较高的模块,关键性的数据结构以及公共的基本操作模块等纳入内核,并使之常驻内存,以提高操作系统的效率。传统操作系统的内核通常的功能模块有:进程,线程及其管理,存储管理,设备管理和文件系统。
操作系统的内核有两种组织形式:
强内核:是基于传统的集中式操作系统的内核结构。其系统调用是通过陷入内核实现的,在内核完成所需要的服务,最后返回结果给用户程序。
微内核:是一种新的结构组织形式。微内核的设计目标是使操作系统的内核尽可能小,使其他所有操作系统服务都放在核外用户级完成。微内核几乎不做工作,仅仅提供四种服务:进程间通信机制,某些存储管理,有限的低级进程管理和调度,低级I/0。微内核的优点是灵活性好,开放性好和扩充性好。
(2)操作系统的核外
操作系统的核外为用户提供各种操作命令(UNIX把他们称为Shell命令)和程序设计环境。核外由Shell解释程序,支持程序设计的各种语言,编译程序和解释程序,实用程序和系统库等组成。

2.操作系统结构的设计模式

操作系统是一个大型的系统软件,其内部的组织结构已经历了四代的变革
(1)整体式系统
该设计模式是把操作系统组织成一个过程集合,任一个过程可以调用其它过程。其优点是不强调信息的隐蔽,而且过程之间的调用不受任何约束。操作系统内部不存在任何结构,因此也叫无结构操作系统。采用这种结构的操作系统不仅调试和维护不方便,而且其可读性和可扩充性都较差。
(2)模块化结构
模块化结构中采用了模块化程序设计技术,将操作系统按其功能划分成若干个具有一定独立性和大小的模块,并规定好各模块间的接口,使得它们之间能够交互。对较大的模块还可进一步细化成若干个子模块;采用这种结构可加速操作系统的研制过程。操作系统设计的正确性高,可适应性好,但模块的划分和接口的规定较困难,而且模块间还存在着复杂的依赖关系,使操作系统结构变得不够清晰。
(3)分层式结构
分层式结构使对模块化结构的一种改进,它将操作系统按其功能流程图的调用次序以及其他一些原则划分为若干个层次,每一层代码只能使用较低层代码提供的功能和服务,并采用自底向上或者自顶向下增添软件的方法来研制系统。由于它将模块之间的复杂依赖管旭改为单向依赖关系,并消除了某些循环依赖关系,因此能使操作系统结构变得非常清晰,从而使系统的调试和验证更方便,正确性更高。(这让我想到了OSI的七层模型或者说TCP/IP的五层结构模型)
(4)微内核结构
微内核的主要思想是,在操作系统内核中只留下一些最基本的功能,而将其他服务尽可能地从内核中分离出去,用若干种运行在用户态下地进程来实现,形成所谓的”客户/服务器端”模式。普通用户进程可通过内核向服务器进程发送请求,以取得操作系统的服务。采用微内核结构,不仅提高了系统的灵活性和可扩充性,还增加了系统的可靠性。微内核的另一个优点是它比较适用于分布式系统。