http://ettc.sysu.edu.cn/2005wlkc/caozuoxitong/book/chapter1/lesson7/lesson7.htm
随着操作系统的发展,功能越强,OS自身代码量越大--采用良好的结构:有利于保证正确性以及自身修改和扩充。
操作系统的设计原则:
1) 可维护性
容易修改与否称为可维护性;有三种可能的维护:
² 改错性维护:改正已发现的错误;
² 适应性维护:修改软件,使之适应新的运行环境(硬件环境和软件环境);如:操作系统的移植。
² 完善性维护:增加新功能。
2) 可靠性
可靠性包括两方面:
² 正确性:正确实现所要求的功能和性能;
² 稳健性:对意外(故障和误操作)作出适当的处理。
3) 可理解性
易于理解,以方便测试、维护和交流。
4) 性能
有效地使用系统资源;尽可能快地响应用户请求。
1.5.1整体或模块结构(monolithic system or modular system)
整个系统按功能进行设计和模块划分。系统是一个单一的、庞大的的软件系统。这种结构思想来源于服务功能观点,而不是资源管理的观点。
模块结构的特点:
模块由众多服务过程(模块接口)组成,可以随意调用其他模块中的服务过程--如 UNIX系统(注意:OSF/1不是)。
² 优点:具有一定灵活性,在运行中的高效率
² 缺点:功能划分和模块接口难保正确和合理;模块之间的依赖关系(功能调用关系)复杂(调用深度和方向),降低了模块之间的相对独立性--不利于修改。
1.5.2 分层结构或虚拟机(layered system or virtual machine)
从资源管理观点出发,划分层次。在某一层次上代码只能调用低层次上的代码,使模块间的调用变为有序性。系统每加一层,就构成一个比原来功能更强的虚拟机。有利于系统的维护性和可靠性。
1.分层结构的特点
² 优点:
¨ 功能明确,调用关系清晰(高层对低层单向依赖),有利于保证设计和实现的正确性
¨ 低层和高层可分别实现(便于扩充);高层错误不会影响到低层;避免递归调用
² 缺点:降低了运行效率,各系统对具体划分多少层次有不同的看法。
2.分层原则
² 被调用功能在低层:如文件系统管理--设备管理--设备驱动程序。
² 活跃功能在低层:提高运行效率。
² 资源管理的公用模块放在最低层:如缓冲区队列、堆栈操作。
² 存储器管理放在次低层:便于利用虚拟存储功能。
² 最低层的硬件抽象层:与机器特点紧密相关的软件放在最低层。如Windows NT中的HAL--单处理、多处理。
² 资源分配策略和外壳放在最外层,便于修改或适应不同环境。
² 调用跨越的层次:相邻层(最严格)、所有下层、部分下层。
1.5.3 客户/服务器模型或微内核结构(client-server model or microkernel)
把操作系统分成若干分别完成一组特定功能的服务进程,等待客户提出请求;而系统内核只实现操作系统的基本功能(如:虚拟存储、消息传递)。
微内核(micro-kernel):将更多操作系统功能放在核心之外,作为独立的服务进程运行;服务进程(或称作“保护子系统”)和客户进程(系统客户和应用客户)--需支持多进程。
本地过程调用 (LPC, Local Procedure Call):一种进程之间请求-应答式的消息(Message)传递机制--普通过程调用:执行点的直接转移(到子程序中)。
消息:是一定格式的数据结构。
①发起调用,送出请求消息。
②请求消息到达并进行处理。
③送出回答消息。
④整理回答消息,返回结果。
如:对文件create, read, write。
微内核模式的特点:
² 优点:
¨ 良好的扩充性:只需添加支持新功能的服务进程即可
¨ 可靠性好:调用关系明确,执行转移不易混乱
¨ 便于网络服务,实现分布式处理:以同样的调用形式,在下层可通过核心中的网络传送到远方服务器上
(远地过程调用 RPC, Remote Procedure Call)
RPC的过程:RPC应用程序--RPC Stub--Network--RPC Server--进行本地调用
² 缺点:
消息传递比直接调用效率要低一些 (但可以通过提高硬件性能来补偿)