第七章 操作系统设计
7.1 操作系统设计目标
1、正确性困难:并发性、共享性、随机性(中断)
2、高效性多道程序设计的目标是提高资源利用率,但系统开销加大
Tu:运行目态程序所用的时间
Tsu:运行管态程序为用户服务所用的时间
Tsm:运行管态程序做系统管理工作所用的时间系统运行效率:
=(Tu+Tsu)/(Tu+Tsu+Tsm)
3、易维护易读性易扩充性易修改性易裁减性
4、易移植性
7.2 操作系统基本内核和体系结构
7.2.1 内核的基本组成
中断处理
进程调度
同步机制同步原语模块 中断处理模块进程调度模块基本内核组成及联系
7.2.2 操作系统体系结构
1、主动模块和被动模块主动模块(进程模块):
可以获得处理机而运行被动模块(普通模块):
没有获得处理机的资格,但可以被主动模块所调用管理资源
2、相互作用
(1) 主动模块与主动模块间的相互作用
* 直接相互作用:消息传递
* 间接相互作用:
主动模块调用被动模块,被动模块存取共享变量主动模块 主动模块主动模块与主动模块 之间的相互作用信件或消息
(a)直接相互作用主动模块 主动模块被动模块共享变量
(b)间接相互作用
(2) 主动模块与被动模块间的相互作用
主动模块可以调用被动模块
被动模块不能调用主动模块被动模块 被动模块被动模块主动模块与被动模块 之间的相互作用主动模块
......
主动模块 主动模块......
(3) 被动模块与被动模块间的相互作用
主动模块调用被动模块
被动模块又调用另一个被动模块
3、基于共享变量的结构操作系统由一组普通模块和一组进程模块组成。普通模块位于系统的下层,进程模块位于系统的上层。进程模块之间主要通过调用普通模块,后者访问共享变量发生间接相互作用。
优点:运行效率高缺点:不适合于分布式系统主动模块 主动模块被动模块 被动模块
…..,…...
主动模块被动模块
…...
被动模块 被动模块
…..,…...
被动模块
…...
…...
…...
…...
共享变量
4、基于消息传递的结构操作系统由内核及一组进程模块构成,进程与进程之间的相互作用采用消息通信或信件通信方式实现。
优点:系统清晰,灵活性好适合分布式系统和非分布式系统缺点:进程之间的转接带来较大的系统开销主动模块 主动模块主动模块 主动模块
…..,…...
主动模块主动模块
…...
主动模块 主动模块
…..,…...
主动模块
…...
…...
…...
…...
高级通信原语基本内核
7.3 操作系统的结构设计设计一个操作系统:
功能设计算法设计结构设计结构设计,按照系统的功能和特性要求,选择合适的结构,使用相应的结构设计方法将系统逐步地分解、抽象和综合,使操作系统结构清晰、简单、可靠、易读、易修改,而且使用方便,适应性强程序结构软件结构操作系统的结构:
整体式结构层次式结构进程分层结构虚拟机结构层次管程结构客户 -服务器结构
1、整体式结构模块接口法,无序模块法,模块组合法首先确定操作系统的总体功能,
然后将总功能分解为若干个子功能,
实现每个子功能的称为模块。继续分解,直至每个模块仅包含单一功能为止。最后通过接口将所有模块连接起来形成一个整体。
模块 3
模块 2
模块 7
模块 1
模块 6
模块 5
模块 8
模块 4
特点:根据功能划分模块数据基本上作为全局量使用在系统内部,不同模块之间可以不加控制地互相调用和转移信息的传递方式可以根据需要随意约定,因而可能会造成模块间的循环调用优点:
结构紧密
接口简单直接
模块之间转接的灵活性使系统效率高缺点:由于模块之间可以任意相互调用,形成网络,各模块互相联系,
独立性差,系统结构不清晰数据作为全局量处理,系统内各模块均可对其进行存取和修改,
造成模块间更为隐蔽的关系。使得难于对软件结构作出综合性理解,
难于修改,可靠性、易读性、适应性难以保证由于模块接口法常以大型表格为中心,为保证数据完整性,往往采用全局封中断的方法,从而限制了系统的并发性。
结论:可适应性较差,适用于规模较小、使用环境比较稳定却要求效率较高的系统主过程服务过程公用过程整体式操作系统的简单结构模型
2、层次式结构按此模型构造的第一个操作系统是 E.W.Dijkstra和他的学生在荷兰开发的 THE系统( 1968年)
该系统分为六层:
层次 功能
5 操作员
4 用户程序
3 输入 /输出管理
2 操作员 -进程通信
1 内存和磁盘管理
0 处理器分配和多道程序
3、进程分层结构采用进程概念后,把含有并发活动的系统划分为若干异步运行的、与时间无关的顺序程序模块。
操作系统的任务就是协调这些异步运行的进程,使它们能够协调工作。
进程分层结构是把系统中所有的进程模块按照一定的原则排列在若干层上,并且要求这些层之间是一种单向依赖关系 。 系统有一个核心和位于各层上的若干进程组成 。
优点:进程模块的独立性强,易维护,易调整,整个系统结构清晰,形式整齐划一 。
缺点:由于系统中所有进程的控制转移,通讯等任务全部交给系统的核心去管理,要花费一定的代价 。 主要有:
1,每一个进程必须设立进程控制块,
用以保留进程的状态信息,增加了内存开销;
2,进程之间的控制转移,状态保留及信息传送,均由核心管理,时间消耗多,效率下降;
3,系统并发活动过多,调度负担过重,且同步操作过于分散,易于造成死锁,影响了系统的安全性 。
4、虚拟机结构系统调用陷入陷入
I/O指令 CMS CMS CMS
370虚拟机
VM/370
370裸机虚拟机思想的应用:在奔腾 CPU
上运行老的 MS-DOS程序。
Intel在奔腾芯片上提供了一个虚拟 8086模式,在此模式下,奔腾机就像一台 8086计算机一样,
包括 1M字节内的 16位寻址方式。
虚拟 8086模式被 Windows,OS/2
及其他操作系统用于运行 MS-DOS
程序。程序在虚拟 8086模式下启动,执行一般的指令时它们在裸机上运行。但是,当一个程序试图陷入系统来执行一条系统调用时,或者试图执行受保护的 I/O
操作时,将发生一条虚拟机监控程序的陷入两种设计方法:
第一种,MS-DOS本身被装入虚拟
8086模式的地址空间,虚拟机仅仅将该陷入传回给 DOS
第二种:虚拟机监控程序仅仅捕获第一条陷入并自己执行 I/O操作。
5、层次管程结构为了控制并发程序设计的复杂性,使并发程序易于理解和易于保证其正确性,人们在吸取模块组合结构和进程分层结构优点的基础上,不断寻求一种抽象的概念和严格的表示法,从而发展了以数据为中心的模块概念和操作系统的层次管程结构。
管程的提出采用 PV同步机制来编写并发程序,
对于共享变量及信号量变量的操作将被分散于各个进程当中。
其缺点是(1)易读性差,因为要了解对于一组共享变量及信号量的操作是否正确,则必须通读整个系统或者并发程序
(2)不利于修改和维护,因为程序的局部性很差,所以任一组变量或一段代码的修改都可能影响全局;
(3)正确性难以保证,因为操作系统或并发程序通常很大,要保证这样一个复杂的系统没有逻辑错误是很难的。
管程:一种同步机制
(管程 -类程 -进程 )
管程定义,指关于共享资源的数据及在其上操作的一组过程或共享数据结构及其规定的所有操作系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,
同时分析了共享资源和专用资源在管理上的差别,按不同的管理方式定义模块的类型和结构,使同步操作相对集中,从而增加了模块的相对独立性 。
从功能和实现相结合的观点出发,从系统中提炼出管程,类程,一般模块和进程等几种基本成分,使一个复杂的系统可分解为由这几种基本成分构成的模型 。 同时,
在分解和提炼这些模块的基础上,将它们按照一定的准则编入各层,包括核心在内 。
核心是最内层,可看成是管理中央处理机的一个专门管程 。 最外层是反映系统并发度的若干管程,类程和一般模块 。 我们称操作系统的这种结构为层次管程结构,这种结构设计方法为 PCM方法 。
层次管程结构的优点是:
( 1) 结构清晰统一
( 2) 同步操作相对集中,增加了系统的安全性
( 3) 用高级语言书写程序,可以缩短系统的研制周期,利用编译时的检查取代硬件保护机构,不仅更加灵活,而且降低了运行时检查的开销
( 4) 由于只有进程是系统中并发执行的单位,因此可以按照系统要求的并发度来设臵进程 。 由于去掉了不必要的平行性,从而减少了系统开销层次管程结构的局限性主要有两点:
第一,由于管程概念的一个重要特征是保证模块内数据的完整性,因而,为了保证每一个管程所管理的数据的完整性,可以采用局部互斥技术,或用缩小临界区的办法。但在解决任意管程嵌套调用问题时,仅是局部互斥就难于实现了,就要根据具体情况,或者采用全局互斥,或者采用限制嵌套类型与重数等策略,这些都限制了使用范围。
第二,虽然资源管理的局部化增加了模块的独立性和系统的安全性,但对全局性资源,或者同时涉及多个资源的管理时就不方便了,这也是引起管程嵌套调用的一个因素 。
管程:记录,协调各进程对临界资源的使用要求,供进程实现同步与互斥,并完成对共享变量的修改类程:指一个专用 ( 独占 ) 的数据结构,以及在此数据结构上定义的所有操作进程:执行单位,实现系统中并发工作的基本成分建立于进程、类程、管程基础上的系统结构模式是从各进程出发,
对类程和管程的一系列嵌套调用,
直到系统核心。
P P
P
M
M
C
C
6、客户 -服务器结构微内核现代操作系统的一个趋势,
将传统操作系统的大部分代码分离出来放在更高的层次上。即从操作系统中去掉尽可能多的东西,
而只留一个最小的核心通常的实现方法是将大多数操作系统功能由用户进程来实现核心的全部工作是处理客户与服务器间的通信。操作系统被分割成许多部分,每一部分只处理一方面的功能,如文件服务、进程服务、终端服务或存储器服务在微内核之上建有应用运行环境的服务器( Workspace OS称之为个性服务器,Windows NT称之为保护子系统),微内核操作系统可以提供多种 OS运行环境微内核结构的设计目标:
为构造其他操作系统提供基础支持大而稀疏的空间能透明地使用网络资源在系统一级和应用一级均可拓展并行性高度的可移植性途径:
1,把传统意义上属于操作系统的代码由低层移向高层,由核心移向用户,要增加新功能仅需加结点
2,消息传送机制
Client/Server
Client模块:采集数据,进行完整性检查,将服务要求通过消息传送给命名的模块
Service模块:从 Client端接受数据和要求,进行处理,返回处理结果
Server:命名的 Service集合对分布式,网络式系统很适应特点:每一部分变得很小,更易于管理。而且,由于所有服务器以用户进程的形式运行,而不是运行在核心态,所以它们不直接访问硬件。这样处理的结果是:假如在文件服务器中发生错误,文件服务器可能崩溃,但不会导致整个系统的崩溃客户一服务器模型的另一个优点是它适用于分布式系统,如果一个客户通过消息传递与服务器通信,客户无需知道这条消息是在本机处理还是通过网络送给远程机器上的服务器优点:
易于扩充,易于移植提高系统的可靠性提供多种操作环境适宜于分布计算模式有助于多处理器系统的实现支持实时任务缺点:
消息传递方式增加开销,使响应变慢几个商品化系统:
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
终端服务器核心功能:管理下列抽象资源进程,线程,存储对象,端口,
消息进程:一个被动成分,是可以发生一次执行的基本环境,包括一个可编址的空间,几个线程;是分配资源的基本单位,进程中可以拥有一些活动成分线程:系统中可以执行的实体,
每个线程有一个程序指针及若干个与之相关的寄存器,是进程的一部分存储对象:是一个可映射到进程编址空间的数据结构,一个对象可以是拥有若干页面的页框;进程运行时可能由于一个存储对象不在而缺页,此时由核心向服务器发消息,要求服务端口:受保护的信箱,附加了权限 。 端口在核心中,可由进程创建,由进程拥有;处理消息的排队;创建端口的进程可授权其他进程使用端口;一个进程可以有几个端口,用于与核心通信进程管理:
进程是微内核管理的资源之一,其功能是管理进程和线程,以及对线程进行调度进程:微内核中进程是被动的,为线程提供活动舞台由编址空间,
一组线程,多个端口和其他成分组成进程端口用来提供进程和核心的通信 ( 系统调用在微内核中仍保留,单数目下降 ),进程通过端口与核心联络初始端口用于进程初始化例外端口用于向进程报错寄存器端口共进程与系统的标准
Server通信在微内核中端口是受保护的信箱,
是单向的,若要应答,需要两个端口其他:挂起的指针,独立于线程的状态
( 两种状态:可执行态,挂起态 ) ;若处于可执行态,它的处于可执行态的线程可被调度和执行;进程处于阻塞态,
它的线程均不可执行;调度参数主要指示此进程可在那些处理机上执行 ( 分布式系统 ) ;优先数,在进程创建线程时赋予线程;仿真地址是用于向核心指示进程空间中放仿真的地址,有的进程就是用于仿真一定的操作系统的;统计部件用于统计各部件的利用率等线程:微内核中的活动实体,一个线程只属于一个进程,线程共享进程的地址空间和进程的资源线程本身也有其私有资源,如端口,亦可动态创建端口线程由核心管理,可并行;在单
CPU中,往往采用分时方式,在多 CPU中,有几个线程可以同时运行,同步,互斥,调度变得更为重要,正确性,安全性更为突出线程有运行态,阻塞态,可运行态相当 Server功能的进程的线程向用户提供一种原语,Service由线程实现调度:将 CPU赋予线程;在多 CPU的机器中,CPU分组,每个 CPU组都是封闭的,独立于其他 CPU的,有其相应的独立资源线程赋予 CPU组,分静态,动态静态:在系统运行前规定线程在几个
CPU上运行动态:在调整负荷时进行,调整后一段时间内在几个固定 CPU上执行存储管理原则上基于请求页式,有虚存,
分为两类:
依 赖 于 机 器 的,在 Server中,
Pmap在微内核中管理 MMU
与机器无关的,存储管理是在用户态下运行,处理存储管理中的逻辑部分虚存:存储是线性空间,采用稀疏的方式使用
Region:由基址和长度表示,以页为单位
Memory Object:存储对象,可以是一页,也可以是几页,或数据结构,或文件;映射到虚存的单位是 Memory Object,形成
Region,并分类,处理方式不同共享线程共享进程的地址空间,涉及到保护问题,保护采用几种方法:
将共享资源为每个线程设复制
( 不常用 )
加锁,互斥 ( 常用 ),将大部分线程设为 readonly,仅有一个可写内存管理:
manage分类:不同的存储对象由不同的 manage管理
manage有端口,线程通过消息要求服务,结果通过消息传回给用户用户程序 2
用户程序 1
服务例程分配表
1
2
3
4主存用户程序在用户态运行操作系统在核心态运行