操作系统结构设计
3.分层式结构OS
②自顶向下的分层 基本概念: 从顶层的目标系统An(总体功能模块)出发,向下通过若干层,最后过渡到宿 主系统A0。 为实现An,对An进行第一次细化,由此形成虚机器An-1; 由于An-1只是关于模块的描述,它无法在物理机器上运行,故需对An_1的功能 进一步细化,利用更多的子模块来实现An_1功能,由此形成虚机器An-2; An-2仍然只是有关子模块的描述而无法运行,需再对An-2进行细化,如此形成 An-3,An-4,...,直至产生能在物理机器上运行的程序,即虚机器A1。 自顶向下分层法的实质是,对目标系统的逐步求精。
14.1 操作系统设计概述
⑶结构设计的作用
为了实现OS的正确性、可维护性、可适应性、可移植性 等设计目标,必须经过功能设计、算法设计和结构设计三个 阶段。 ★结构设计具有独特的不可被替代的作用; ★模块化结构能较好地保证正确性; ★具有模块化结构的OS,有助于提高系统的“可适应性” 和“可移植性”; ★分层式结构比模块化结构能更好的保证操作系统设计 目标的实现; ★微内核OS结构,又比分层式结构能更好,也更容易地 保证操作系统设计目标的实现;
3.分层式结构OS
④分层结构的优缺点
★易保证系统的正确性。由于把一个大型操作系统,按照一定的原 则,分为若干个功能较为单一的模块,再进一步将这些模块,按一定的 规则,组织成层次结构,并使之具有单向依赖关系,这样就形成了上一 层功能是下一层功能的扩充或延伸,下一层功能为上一层功能提供了支 撑和基础,使整个系统中的接口少而清晰。采取自下而上的设计方式, 使所有设计中的决定都是有序的,或者说是建立在较为可靠基础上的, 这样,就比较容易保证整个系统的正确性。 ★易扩充和易维护性。在系统中增加、修改或替换一个层次中的模 块或整个层次,只要不改变相应层次间的接口,就不会影响其他层次, 这必将使系统维护和扩充变得更加容易。 ★系统效率降低。分层结构也存在某些问题,由于层次结构是分层 单向依赖的,必须在每层之间都要建立层次间的通信机制,特别是当系 统较大、所设层次较多时,OS每执行一个功能,通常要自上而下地穿越 多个层次,这无疑会增加系统的通信开销,从而导致系统效率的降低。
14.1 操作系统设计概述
2.OS的设计目标
⑴完善的功能:OS所具备的功能,取决于其运行的平台和环境, 以及应用的需求。 ⑵高效性:OS的高效性:①在OS中引入多道程序运行机制,提高 系统中各种资源的利用率;②在运行时间的分配方面,应该是用于运 行用户程序的时间尽可能多,而用于系统管理的时间尽可能地减少。
⑶可靠性:①能保证处理结果的正确性;②OS的运行的可靠性。
⑷安全性:OS的安全性是整个系统的基础。在设计OS时,应设置 多道防线,以确保OS的安全性能达到“可信任计算机系统评价标准 (TCSEC)”的C2级或更高。
⑸“可移植性”和“可适应性”:为了使OS能方便的运行在各种 硬件平台上,应使OS具有可移植性。在设计OS时,应使与硬件有关的 部分相对独立,并放在紧靠近硬件的位置。
设计者注重实现功能和高效率,缺乏首尾一致的设计思想。
程序设计的技巧,表现在如何编制紧凑的程序,以便于有效 地利用内存。 随着系统的不断扩大,由于缺乏清晰的程序结构,一方面会 使所编制出的程序错误很多,给调试工作带来很多困难,另一方面 也使程序难以阅读和理解,增加了维护人员的负担。
14.2 传统结构的操作系统
2. 模块化结构OS
★模块独立性
在模块-接口法设计方法中,关键问题在于模块的划分和模块之 间接口的规定。 模块内部的复杂性,以及模块间交互的复杂性,决定了操作系统 的复杂性。 在划分模块时: ◆模块划分的过小,虽然可以降低模块本身的复杂性,但会引起模块 之间的联系过多,从而造成系统比较混乱; ◆模块划分的过大,会增加模块内部的复杂性,使内部的联系增加。 在划分模块时,应在两者间进行权衡。
2. 模块化结构OS
衡量模块的独立性有以下两个标准: ①内聚性 指模块内部各部分间联系的紧密程度。内聚性越高,模块独立性 越强。 根据模块的内聚性,又可把模块分为五类: 逻辑内聚模块:由若干个相关或相似的“处理”聚合成一个模块,即 该模块实现一组逻辑相关的任务; 时间内聚模块:由若干个“处理”时间相同的任务,聚合成一个模块; 过程内聚模块:由若干个相关,且必须按一定逻辑顺序处理的任务, 聚合成一个模块; 数据内聚模块:由若干个具有基于相同数据结构的“处理”聚合成一 个模块; 功能内聚模块:为实现特定单一任务而构成的模块。 以按功能内聚所形成模块的内聚性为最好,数据内聚模块次之。
3.分层式结构OS
③层次的设置
一个操作系统应分为几个层次,每个层次具有什么功能,各层间的顺序应如 何确定,是层次式结构设计的关键问题。下面列出了在对OS做分层结构设计时, 应如何进行分层所必须考虑的几个因素: ◆程序嵌套:OS层次时,首先需要考虑,将在实现OS每个功能时所形成的程 序嵌套模块,排成有序层次;或者按进程间单向发送信息的顺序来分层。 ◆可移植性:将那些与硬件紧密相关的软件,放在最低层,使其紧靠着硬件。 ◆运行频率;将那些经常活跃的模块放在最接近硬件的A1层。 ◆公用模块:把供多种管理程序调用的公用模块,设置在最低层或次低层。 ◆用户接口:用户与OS的接口都应设置在操作系统的最高层,直接提供给用 户使用。 ◆在虚拟存储器环境下,应将存储器管理模块设置在较低的层次中,如A2层。 在一般情况下,一个操作系统按照层次结构的原则,从底向上可以被安排为: 裸机、与硬件紧密相关的功能、进程和线程的管理、内存管理、设备管理、文 件管理、作业管理和命令管理,最上面是用户。
2. 模块化结构OS
②耦合度
指模块间相互联系和相互影响的程度。 耦合可分为以下三种: 数据耦合:模块间只存在明显的数据传送关系,即模块之间是通 过调用关系传递被处理的数据; 控制耦合:模块之间通过调用关系不仅传递被处理的数据,而且 还传递对运行有影响的控制信息; 非法耦合:模块间彼此直接使用或修改对方的数据。 上述中的第一种的耦合度较低,应减少第二种耦合,而不允许出 现第三种耦合。
14.1 操作系统设计概述
3. OS结构设计简介
⑴用工程化的方法对操作系统进行开发 ★早期OS的规模很小,OS是否是有结构的并不那么重要。 ★但随着OS规模的愈来愈大,应采用工程化的开发方法来进行 开发。 ★软件工程的目标:所开发出的软件产品应具有良好的软件质 量和合理的费用。 ★软件质量的评价指标:功能性、有效性、可靠性、易使用性、 可维护性和易移植性等。 ★软件开发方法:模块化、结构化、面向数据结构、面向对象 的方法等。 ★利用不同的开发方法,所开发出的操作系统将具有不同的操 作系统结构。
14.1 操作系统设计概述
⑵几种主要的操作系统结构
★OS结构:系统中各部分程序的存在方式及其相互联系; ★当前主要存在的操作系统结构: ①无结构:如果OS中各部分,是以最基本的过程形式存在,而 且,每个过程都可随意地调用其它过程; ②模块化:对OS中各部分经过精心的划分和组合,形成若干个 相对独立的模块,并为模块间定义了良好的接口; ③分层式:按模块间的调用顺序,对模块进行分层,在各层之 间只存在单向的依赖关系; ④微内核:人们集模块化结构、层次式结构、客户/服务器模 式和面向对象技术之长,推出的一种崭新的OS结构。该OS结构已成 为现代OS的主要结构。
2. 模块化结构OS
★模块化程序设计技术的基本概念 基于“分解”和“模块化”原则, 对大型软件的复杂度进行控制。 将OS按其功能,精心地划分为若 干个具有一定独立性和大小的模块, 每个模块具有某方面的管理功能,并 仔细地规定好各模块间的接口,使各 模块之间能通过该接口实现交互,然 后再进一步多次细分各模块为子模块, 孙模块,……。 这种设计方法称为模块-接口法, 由此所构成的就是具有模块化结构的 操作系统。
返回
第十四章操作系统结构设计
14.2 传统结构的操作系统
14.2 传统结构的操作系统
★传统结构的操作系统
第一代:早期的无结构操作系统
第二代:模块化结构的操作系统 第三代:分层式结构的操作系统
★现代结构的OS
微内核结构的OS
14.2 传统结构的操作系统
1.无结构操作系统(整体系统结构)
OS并不存在任何结构,只是庞大的一组过程的集合,每个过 程可以任意地相互调用其它过程,致使操作系统内部既复杂又混乱。
第十四章操作系统结构设计
14.3 面向对象的程序设计
14.3 面向对象的程序设计
1.面向对象技术的引入
★传统的设计方式的缺陷 ⑴在利用面向过程的程序设计技术设计操作系统时,首先要为系统中各 种硬件和软件资源,设计出相应的数据结构和一组程序。对于系统中的共享 资源,会有许多程序访问用以描述该资源的数据结构。在这些程序中,如果 任何一个程序操作出现了错误,就可能造成该数据结构出错,此错误将会影 响到另一个访问它的程序,并会在系统中不断扩大,直至整个系统。 ⑵采用模块化结构和层次化结构技术设计操作系统时,虽可使发生错误 的机会减少,但终难避免。一旦发生错误,该错误会通过模块以及层次之间 数据的流动,从而进一步影响到其它模块和层次,同样可能导致整个系统的 破坏。 ⑶在系统中采用了大量的全局性变量,会很容易被人查看和修改,使系 统的安全性受到威胁。 ★解决方法 引入类和对象的概念。在操作系统中,所谓“类”是指,为一个非共享 资源定义一个数据结构,以及作用在该数据结构上的一组操作等,并将它们 封装起来,称之为“类程”。并规定,在类程中的数据结构,只能被该类程 内的一组过程访问,其它进程要想访问该类程中的数据,必需通过该类程方 能进行。这样,在类程中的数据,也就能得到很好的保护。
3.分层式结构OS
铺设这些中间层的方法有以下两种:
①自底向上的分层 基本原则:每一步设计都是建立在可靠的基础上。 基本概念:在用这种方法构成的操作系统时,将一个操作系统分为若干个层 次,每层又由若干个模块组成,各层之间只存在着单向的依赖关系,即高层仅依 赖于紧邻它的低层。例如: ◆在调试第一层软件A1时,由于它使用的是一个完全确定的物理机器(宿主 系统)所提供的功能,在对第1层A1软件经过精心设计和几乎是穷尽无遗的测试后, 可以认为A1是正确的,而且它将与其所有的高层软件A2,...,An无关; ◆在调试第二层软件A2时,它也只使用了软件A1和物理机器所提供的功能, 而与其高层软件A3,...,An无关,如此一层一层地自底向上增添软件层,每一 层都实现若干功能,最后总能构成一个能满足需要的OS。