
OS之操作系统结构设计.ppt
72页操作系统的设计 操作系统设计目标 1、可靠性 Ø 正确性困难:并发性、共享性、随机性 (中断) Ø 健壮性(鲁棒性)2、高效性多道程序设计的目标是提高资源 利用率,但系统开销加大 Tu:运行目态程序所用的时间 Tsu:运行管态程序为用户服务所用 的时间 Tsm:运行管态程序做系统管理工作 所用的时间 系统运行效率: =(Tu+Tsu)/(Tu+Tsu+Tsm)3、易维护易读性易扩充性易修改性易裁减性 4、易移植性 5、安全性 6、可适应性 7、简明性设计一个操作系统主要包括 功能设计 算法设计 结构设计操作系统的结构设计结构设计:按照系统的功能和特性要求,选择 合适的结构,使用相应的结构设计 方法将系统逐步地分解、抽象和综 合,使操作系统结构清晰、简单、 可靠、易读、易修改,而且使用方 便,适应性强操作系统的结构:• 整体式结构 • 层次式结构 • 进程分层结构 • 层次管程结构 • 客户-服务器结构1.整体式结构 模块接口法(无序模块法,模块组合法)首先确定操作系统的总体功能, 然后将总功能分解为若干个子功能, 实现每个子功能的模块称为模块继 续分解,直至每个模块仅包含单一功 能为止。
最后通过接口将所有模块连 接起来形成一个整体模块3模块2模块7模块1模块6模块5模块8模块4特点:根据功能划分模块• 数据基本上作为全局量使用 • 在系统内部,不同模块程序之间可以不加控制地互相调用和转移 • 信息的传递方式可根据需要随意约定因而造成模块间的循环调用优点:• 结构紧密 • 接口简单直接 • 模块间转接的灵活性使系统效率高缺点(1):• 由于模块之间可以任意相互调用,形 成网络,各模块互相联系,独立性差, 系统结构不清晰 • 数据作为全局量处理,系统内各模块 均可对其进行存取和修改,造成模块间 更为隐蔽的关系,使得难于对软件结构 作出综合性的理解,难于修改,可靠性 、易读性、适应性难以保证缺点(2):• 由于模块接口法常以大型表格为中心,为 保证数据完整性,往往采用全局封中断的方 法,从而限制了系统的并发性结论可适应性较差 适用于规模较小使用环境比较稳定却要求效率较高的系统用户程序2用户程序1服务例程分配表1234主 存用户程序 在用户态运行操作系统 在核心态运行2. 层次式结构 按此模型构造的第一个操作系统是E.W.Dijkstra和他的学生在荷兰开发的THE系统(1968年)THE系统分为六层:层次功能5 操作员4 用户程序3 输入/输出管理2 操作员-进程通信1 内存和磁盘管理0 处理器分配和多道程序3. 进程分层结构• 采用进程概念后把含有并发活动的系统分为若干异步运行的与时间无关的顺序程序模块 • 操作系统的任务就是协调这些异步运行的进程使它们能够协调工作进程分层结构把系统中所有的进程模块按照一定的原则排列在若干层上并要求这些层间是一种单向依赖关系系统由一个核心和位于各层上的若干进程组成优点:进程模块的独立性强、易维护、易调整 整个系统结构清晰、形式整齐划一缺点:由于系统中所有进程的控制转移、通讯等 任务全部交给系统的核心去管理,要花费 一定的代价主要缺点有: • 每一个进程必须设立进程控制块用以保留进程的状态信息增加了内存开销• 进程间控制转移、状态保留及信息传送均由核心管理时间消耗多,效率下降• 系统并发活动过多,调度负担过重且同步操作过于分散易于造成死锁,影响了系统的安全性4、虚拟机结构系统调用陷入 陷入I/O指令CMSCMSCMS370虚拟机VM/370370裸机虚拟机思想的应用:在奔腾CPU 上运行老的MS-DOS程序 Intel在奔腾芯片上提供了一个 虚拟8086模式,在此模式下,奔 腾机就像一台8086计算机一样, 包括1M字节内的16位寻址方式虚拟8086模式被Windows、OS/2 及其他操作系统用于运行MS-DOS 程序。
程序在虚拟8086模式下启 动,执行一般的指令时它们在裸 机上运行但是,当一个程序试 图陷入系统来执行一条系统调用 时,或者试图执行受保护的I/O 操作时,将发生一条虚拟机监控 程序的陷入两种设计方法: 第一种:MS-DOS本身被装入虚拟 8086模式的地址空间,虚拟机仅仅 将该陷入传回给DOS 第二种:虚拟机监控程序仅仅捕获 第一条陷入并自己执行I/O操作IBM390与Linux: Linux在S/390下有三种实现模式: 本地运行模式:即独立运行模式,Linux 可以不依赖S/390自己的任何操作系统完 整地运行 逻辑分区运行模式:Linux在S/390的硬 件逻辑分区内运行,S/390最大支持15个 独立的逻辑分区 VM/ESA模式:把Linux当成一个虚拟机来 运行,VM提供虚拟的CPU、I/O子系统和 内存资源IBM390与Linux: 用户既可以选择把OS/390与Linux共 存,只是简单地共享硬件,也可以 将两者设置成客户/服务器模式来应 用,非常灵活 为了控制并发程序设计的复杂性 使并发程序易于理解和易于保证其正确性 吸取模块组合结构和进程分层结构优点 不断寻求一种抽象的概念和严格的表示法发展了以数据为中心的模块概念和操作系统的层次管程结构5. 层次管程结构系统按资源管理的观点分解成若 干模块,用数据表示抽象系统资源 ,同时分析了共享资源和专用资源 在管理上的差别,按不同的管理方 式定义模块的类型和结构,使同步 操作相对集中,从而增加了模块的 相对独立性从功能和实现相结合的观点出发,从系统中提 炼出管程、类程、一般模块和进程等几种基本 成分,使一个复杂的系统可分解为由这几种基 本成分构成的模型 在分解和提炼这些模块的基础上,将它们按照 一定的准则编入各层,包括核心在内 核心是最内层,可看成是管理中央处理机的一 个专门管程 最外层是反映系统并发度的若干管程、类程和 一般模块 称操作系统的这种结构为层次管程结构 这种结构设计方法为PCM方法层次管程结构的优点(1):• 结构清晰统一 • 同步操作相对集中,增加系统安全性 • 用高级语言书写程序可以缩短系统的研制周期利用编译时检查取代硬件保护机构更加灵活降低了运行时检查的开销层次管程结构的优点(2):• 由于只有进程是系统中并发执行单位因此可按照系统要求的并发度设置进程 • 由于去掉了不必要的平行性从而减少了系统开销层次管程结构的局限性(1)管程概念的一重要特征是保证模块内数据的完整性 为了保证每一管程所管理的数据的完整性可采用局部互斥技术,或缩小临界区但在解决任意管程嵌套调用问题时仅是局部互斥难于实现要根据具体情况,或采用全局互斥或采用限制嵌套类型与重数等策略导致使用范围受到限制层次管程结构的局限性(2)资源管理局部化增加了模块的独立性和系统的安全性 但对全局性资源或同时涉及多个资源的管理时不方便这也是引起管程嵌套调用的一个因素• 管程:记录、协调各进程对临界资源使用要求供进程实现同步与互斥并完成对共享变量的修改• 类程:指一个专用(独占)的数据结构以及在此数据结构上定义的所有操作• 进程:执行单位实现系统中并发工作的基本成分管程、类程与进程的比较建立于进程、类程、管程基础上的系统结构模式是从各进程出发对类程和管程的一系列嵌套调用直到系统核心PPPMMCC6. 客户- 服务器结构(微内核)现代操作系统的一个趋势将传统操作系统大部分代码分离出来放在更高的层次上即从操作系统中去掉尽可能多的东西而只留一个最小的核心通常的实现方法• 将多数操作系统功能由用户进程来实现• 核心:只处理客户与服务器间的通信• 操作系统被分割成许多部分每一部分只处理一方面的功能如文件服务、进程服务、终端服务或存储器服务等在微内核上建有应用运行环境的服务器Workspace OS称之为个服务器Windows NT称之为保护子系统微内核操作系统可提供多种OS运行环境微内核结构的设计目标:• 为构造其他操作系统提供基础 • 支持大而稀疏的空间 • 能透明地使用网络资源 • 在系统一级和应用一级均可拓展并行性 • 高度的可移植性途径: 1、把传统意义上属于操作系统的代码由低层移向高层由核心移向用户要增加新功能仅需加结点 2、消息传送机制Client/Server特点:每一部分变得很小,更易于管理所有服务器以用户进程的形式运行而不是运行在核心态所以它们不直接访问硬件这样处理的结果:假如在文件服务器中发生错误文件服务器可能崩溃但不会导致整个系统的崩溃客户/服务器模型另一个优点适用于分布式系统如果一个客户通过消息传递与服务器通信客户无需知道消息是在本机处理还是通过网络送给远程机器的服务器优点:易于扩充,易于移植提高系统的可靠性提供多种操作环境适宜于分布计算模式有助于多处理器系统的实现支持实时任务缺点:消息传递方式增加开销使响应变慢几个商品化系统:NextStep XINU,OSF/1 1.3, Workspace OS,Chorus/Mix V.4 Mac G3,Windows NT,QNX,CTOS应用程序微内核操作系统DOS服务器UNI服务器VMS服务器OS/2服务器基于微内核的开放式系统环境系统程序接口 (SPI)应用程序接口 (API)客户 进程客户 进程进程 服务器终端 服务器文件 服务器内存 服务器。
核心客户向服务器进程发送 消息,以获得服务客户服务器模型客户向服务器发送 消息,以获得服务一个分布式系统中的客户服务器模型机器1客户核心机器2文件服务器核心机器3进程服务器核心机器4终端服务器核心其他设计问题 1、接口设计 ü 用户界面设计 ü 程序设计接口 2、一些实现技术 ü 策略与机制的分离 ü 静态结构与动态结构 ü 自顶向下的实现与自底向上的实现 ü 隐藏硬件细节 ü 间接处理 补充:Windows 2000/XP系统模型• 融合了分层操作系统和微内核操作系统的设 计思想,使用面向对象的分析与设计,采用 整体式的实现 • Windows 2000/XP通过硬件机制实现了核心 态以及用户态两个特权级别 对性能影响很 大的操作系统组件运行在核心态核心内没 有保护 • 设计充分体现了机制与策略分离的思想• Windows 2000/XP的核心态组件使用了 面向对象设计原则 • 出于可移植性以及效率因素的考虑,大 部分代码使用了基于C语言的对象实现 • Windows 2000/XP的很多系统服务运行 在核心态,这使得Windows 2000/XP更 加高效,而且也是相当稳定的 1、Windows 2000/XP的构成• 用户态组件 – 系统支持进程(system support process),不是 Windows 2000/XP服务,不由服务控制器启动 – 服务进程(service process),Windows 2000/XP的 服务 – 环境子系统(enviroment subsystems),它们向应用 程序提供操作系统功能调用接口包括:Win32、 POSIX和OS/2 1.2 – 应用程序(user applications),五种类型:Win32、 Windows 3.1、MS-DOS、POSIX 或OS/2 1.2 – 子系统动态链接库:调用层转换和映射• 核心态组件 – 核心(kernel)包含了最低级的操作系统功能,例如线 程调度、中断和异常调度、多处理器同步等。
同时它 也提供了执行体(Executive)用来实现高级结构的一 组例程和基本对象 – 执行体包含基本的操作系统服务,例如内存管理器、 进程和线程管理、安全控制、I/O以及进程间的通信 – 硬件抽象层(HAL, Hardware Abstraction Layer)将内 核、设备驱动程序以及执行体同硬件分隔开来,实现 硬件映射 – 设备驱动程序(Device Drivers)包括文件系统和硬件 设备驱动程序等,其中硬件设备驱动程序将用户的I/O 函数调用转换为对特定硬件设备的I/O请求 – 窗口和图形系统包含了实现图形用户界面(GUI。
