第8章 操作系统设计_第1页
第8章 操作系统设计_第2页
第8章 操作系统设计_第3页
第8章 操作系统设计_第4页
第8章 操作系统设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章操作系统设计

第8章操作系统设计

学习目标和学习要点8.1操作系统的设计问题8.2操作系统的设计目标8.3操作系统的设计阶段8.4操作系统的结构设计8.5其他设计问题8.6Linux的体系结构8.7Windows2000/XP的体系结构本章小结返回到目录[本章学习目标]

掌握:操作系统设计的难点,操作系统的设计目标。理解:操作系统设计的三个阶段,操作系统的结构设计中的模块设计的主要原则(比较管程、类程和进程的主要区别),操作系统的接口设计,以及操作系统的实现技术。了解:Linux及WindowsXP实例,本章其他内容。[本章学习要点]

本章重点是理解并掌握操作系统设计难点、操作系统的设计目标(功能设计、算法设计、结构设计)、操作系统设计的三个阶段、操作系统结构设计中的模块设计的主要原则、操作系统的接口设计,以及操作系统的实现技术。返回到本章第8章操作系统设计1.复杂程度高主要表现在:程序长,有的功能模块包含数百万条指令;接口信息多,各个组成部分之间的信息交换很多,而且错综复杂;动态性强,程序本身包含较多的动态部分;并行性强,不同部分之间可以同时操作。2.研制周期长一般的软件研制开发周期包括:(1)需求捕获,由用户提供软件的需求,并根据需求制作软件规格说明书。(2)设计者根据软件规格说明书进行软件设计。(3)实现者编写程序,调试、测试并整理各种开发文档,然后提交给用户使用,在应用的过程中不断地改进和提高软件的品质。3.正确性难以保证第8章操作系统设计8.1操作系统的设计问题返回到本章1.可靠性可靠性包括了正确性和健壮性。2.高效性对于支持多道程序设计的操作系统来说,其根本目标是提高系统中各种资源的利用率,即提高系统的运行效率。

3.易维护性易维护性包括易读性、易扩充性、易剪裁性、易修改性等。4.易移植性可移植性指的是把一个程序从一个计算机系统环境中移到另一个计算机系统环境中并能正常运行的特性。第8章操作系统设计8.2操作系统的设计目标返回到本章5.安全性操作系统的安全性是计算机软件系统安全性的基础,它为用户数据保护提供了最基本的机制。6.可适应性可适应性指的是一种特定计算机系统环境中的软件对于另一种计算机系统环境的适应能力。7.简明性无简明性,开发人员就无法了解一个大型程序的设计目的和细节。具有简明性、可靠性、可适应性的系统称为可维护的系统,称之为易管理的。对于可适应性和可移植性,统称为灵活性。第8章操作系统设计1.功能设计功能设计指的是根据系统的设计目标和使用要求,确定所设计的操作系统应具备哪些功能,以及操作系统的类型。2.算法设计算法设计是根据计算机的性能和操作系统的功能,来选择和设计满足系统功能的算法和策略,并分析和估算其效能。3.结构设计结构设计则是按照系统的功能和特性要求,选择合适的结构,使用相应结构设计方法将系统逐步地分解、抽象和综合,使操作系统结构清晰、简明、可靠、易读、易修改,而且使用方便,适应性强。第8章操作系统设计8.3操作系统的设计阶段

返回到本章第8章操作系统设计8.4操作系统的结构设计

8.4.1何谓“结构”8.4.2设计模块的主要原则返回到本章8.4.1何谓“结构”结构就是构成一个事物的各种基本成分以及它们之间的关系。所谓操作系统的结构,是指其各部分程序的存在方式及相互关系。若操作系统的各部分程序以程序模块方式存在,相互之间通过调用建立起关系,那么这种操作系统具有模块接口结构;若各部分程序以进程的方式存在,相互之间通过通信建立起关系,那么这种操作系统具有进程结构;若操作系统能按照各模块的调用顺序或主进程的信息发送顺序把模块和进程分层,各层之间只能单向依赖,这样就分别产生了模块层次结构的操作系统或进程层次结构的操作系统。第8章操作系统设计返回到本节1.模块划分模块划分应该遵循高内聚、低耦合的原则。即模块内部要紧凑、联系密切而模块之间的联系要比较松散。一般可以采取以数据结构为中心的模块划分方法。依据面向对象的观点,这些模块应该与系统中的实体具有一定的对应关系。在很多时候,模块和对象、对象类是一致的。但是对于操作系统来说,仅仅有一般面向对象系统的基本概念还不足以很好地表达它的复杂性,比如,操作系统中的并发控制就不好直接表达。衡量一个模块独立性的尺度是内聚(cohesion)和耦合(coupling)。内聚是模块的相对功能强度的一种度量,它反映了一个模块所包含的功能多少以及这些功能之间的相互关联程度。耦合则是模块之间相互依赖性的一种度量,即模块之间相互联系以及相互影响的程度。模块划分应该遵循高内聚、低耦合的原则。

第8章操作系统设计8.4.2设计模块的主要原则

返回到本节2.模块分类从并发程序的角度来看,操作系统的基本构成模块大约有三种:进程、类程以及管程。

3.进程进程的概念是大家所熟知的,在并发程序设计中,进程的静态定义由以下几方面组成:私有数据、若干顺序程序以及权限。需要明确几点:进程所操作的数据应该是它的私有数据,别的进程不能访问;进程掌握一定的系统资源,进程与进程之间是并发执行的,对资源的访问也是并发进行的。进程内并发执行的基本单位是线程,每一个线程对应一段顺序程序。第8章操作系统设计返回到本节4.类程类程定义了一个非共享的数据结构、作用在这个数据结构上的一组操作以及一些必要的初始化自己的代码,如图8-1所示。从面向对象的角度来看,类程对应了系统中的各种专用资源实体,可以用系统对象以及对象类来表示。对于操作系统来说,类程则是专用资源的管理者,对类程的调用表示对专用资源的使用。一般来说,每个类程只能在操作系统初始化的时候初始化一次。图8-1类程的构成第8章操作系统设计返回到本节5.管程管程定义了一个共享数据结构、作用在其上的一组操作、初始化代码以及权限,如图8-2所示。图8-2管程的构成从面向对象的角度来看,管程不能直接用一般的对象和对象类表示,必须用带有并发控制机构(例如锁)的对象或者对象类来表示,它们对应了操作系统中的临界共享资源的实体。从操作系统的角度来看,管程就是公共资源的管理者,对管程的调用表示了对公共资源的访问。这里的资源共享可以是在所有进程间的,也可以是都分进程间的。

第8章操作系统设计返回到本节6.比较管程、类程和进程类程与管程非常相似,但是它们之间也有三个主要的区别:(1)类程代表非共享数据结构,管程代表共享数据结构。(2)管程的定义比类程的定义增加了权限部分,这个权限指出了该类管程对其他那些类的管程具有调用权限。(3)管程主要用于操作系统的进程同步,它为操作系统的构造提供了有力的工具。进程通过管程管理共享资源、实现相互通信。多个进程不能同时调用同一个管程,它们对管程的访问必须串行化,这些同步关系将由并发程序设计语言以及相应的编译系统自动处理。

第8章操作系统设计返回到本节第8章操作系统设计8.5其他设计问题8.5.1操作系统的接口设计8.5.2几种操作系统的实现技术返回到本章8.5.1操作系统的接口设计操作系统的接口应该简单、完善并且可以有效地实现。简单的接口易懂、易用,并且实现起来极少出现错误。操作系统的接口设计包括两方面的内容:用户界面设计以及程序设计接口的设计。1.操作系统的用户界面设计现在的操作系统通常包含了图形用户界面,许多系统才用了图符式图形用户界面的交互设计范型。2.程序设计接口这方面目前使用得比较多的范型接口是由POSIX规范定义的,各种UNIX均提供符合POSIX规范的程序设计接口。Windows2000/XP则主要提供了Win32规范型的程序设计接口。第8章操作系统设计返回到本节1.策略与机制的分离所谓机制就是为实现某一个功能而提供的基础设施,而策略就是对这些基础设施加以利用、通过不同的组合方式、不同的参数配置等等实现不同的功能目标。2.静态结构与动态结构通常静态结构更加容易理解,效率高,而动态结构实现往往比较复杂,但是具有更好的扩展性。一般来说,当存储空间非常充裕的时候可以考虑采用静态结构,而在对实现的扩展性和适应性要求严格的地方则采用动态结构。

3.自顶向下的实现与自底向上的实现系统设计一般来说是自顶向下的。实现系统的时候,理论上可以是自顶向下的,也可以是自底向上的。第8章操作系统设计8.5.2几种操作系统的实现技术返回到本节4.隐藏硬件细节硬件的种类太繁多了,只有一些非常底层细节才可以被隐藏在向硬件抽象层这样的系统模块中,可是还有许多的硬件细节是无法被这样隐藏的。简单的处理方法就是发生中断时系统产生一个特定的消息,消息内容仅仅表明中断的类型,系统并不处理,而由收到消息的调度程序根据系统中断和驱动程序的映射表格,调度相应的驱动程序处理。通常的处理办法是两种:(1)动态检测信息,填入系统表格,例如内存大小的处理。(2)使用编译器提供的编译指示(例如C语言的宏开关),使用一个文件和设置编译指示开关,要求编译器编译代码的不同部分而生成不同的版本。

5.间接处理间接处理是指在被处理的对象和处理者之间增加一个映射层,以适应系统的不同应用场合。第8章操作系统设计返回到本节6.其他其他的设计和实现问题还很多,比如如何优化一个操作系统的性能,这个问题比较复杂,主要的问题包括:优化什么样的代码、时间和空间的权衡、如何使用缓冲技术、如何寻找系统瓶颈等等,这里就不再展开详细的讨论了,有兴趣的读者可参看相关书籍。另一个需要提一下的是操作系统开发过程中的项目管理问题。操作系统软件很庞大,往往会有一个庞大的开发团队,如何管理好这个团队,并且保证软件的质量是一门很大的学问,有兴趣的读者可以参看软件工程的有关书籍,结合操作系统的特点加以思考。第8章操作系统设计返回到本节8.6.1进程管理子系统8.6.2内存管理子系统8.6.3虚拟文件系统8.6.4进程间通信子系统8.6.5网络接口子系统8.6Linux的体系结构第8章操作系统设计返回到本章

Linux的内核结构简单,工作效率高;进程调度方式简单而有效;提供了多种形式的虚拟管理技术;并且为多种文件系统提供了一个统一的虚拟文件系统(VFS)接口;支持多种协议、网卡,还有强大的网络功能。

Linux内核主要包括进程调度、内存管理、虚拟文件系统(VFS)、进程通信(IPC)和网络接口五个子系统。五个子系统之间的关系如图8-3所示。8-3Linux内核子系统及其之间的关系第8章操作系统设计返回到本节Linux是一个多任务操作系统,它要保证CPU时刻保持在使用状态。进程调度是Linux操作系统的核心,它具有以下功能:允许进程建立自己的新拷贝;决定哪一个进程将占有CPU,使得可运行进程之间进行有效的转移;接受中断并把它们发送到合适的内核系统;发送信号给用户进程;管理定时器硬件;当进程结束后,释放进程所占用的资源;支持动态装入模块,这些模块代表着内核启动以后所增加的内核功能,这种可装入模块将由虚拟文件系统和网络接口使用。进程调度提供了两级接口:用户进程可以调用的有限的系统调用接口;为内核的其他子系统提供丰富的接口。第8章操作系统设计8.6.1进程管理子系统返回到本节内存管理子系统提供以下功能。1.巨大的地址空间操作系统使系统显得拥有比实际空间更大的内存。虚拟内存可以比系统中的物理内存大许多倍。2.进程保护系统中的每一个进程都有自己的虚拟地址空间。这些虚拟的地址空间是完全相互分离的,所以运行一个应用程序的进程不会影响另外的进程。另外,硬件的虚拟内存机制允许对内存区写保护,这可以防止代码和数据被程序恶意地覆盖。3.内存映射内存映射用来将映像和数据映射到进程的地址空间。用内存映射,文件的内容被直接连接到进程的虚拟地址空间。4.公平分配物理内存内存管理子系统允许系统中每一个运行中的进程公平地共享系统的物理内存。5.共享虚拟内存利用虚拟内存可以方便地隔离各进程的地址空间。但是,如果将不同进程的虚拟地址映射到同一物理地址,则可以实现内存共享,这就是共享虚拟内存的本质。

第8章操作系统设计8.6.2内存管理子系统返回到本节虚拟文件系统又称虚拟文件系统转换(VFS)。它的虚拟性,是因为它所有关数据结构都是在运行以后才建立,在卸载时删除,而在磁盘上并没有存储这些数据结构。整个Linux文件系统的逻辑关系如图8-4所示。

图8-4Linux中文件系统的逻辑关系示意图

第8章操作系统设计8.6.3虚拟文件系统返回到本节为了使进程能在同一项任务上协调工作,它们彼此之间必须能够进行通信。Linux支持许多不同形式的进程间通信(IPC)机制。1.信号信号可以通知进程系统正在出现的事件,内核可以给任何正在执行的进程发信号,用户进程也可以给同组的其他进程发信号。2.文件锁

Linux允许用户进程限制其他进程对一个文件全部或部分地存取,这就是通过文件锁机制实现的。3.管道管道是一个固定大小的缓冲区。

4.等待队列

Linux等待队列是一个简单的数据结构。该队列中的元素包含一个指向进程task_struct结构的指针以及一个指向等待队列中下一个元素的指针。第8章操作系统设计8.6.4进程间通信子系统

返回到本节5.信号量信号量是用等待队列实现的,每一个信号量都有一个相关的值。6.消息队列消息队列是一线性链表。如果该进程向消息队列写入,则消息可以复制到消息队列的末尾。在进行复制之前,必须判断消息队列当前是否已满。7.共享内存共享内存是IPC中最快的一种通信形式,这种机制允许共享内存的一个区域。共享内存区域的建立是由内存管理系统完成的。8.套接口套接口(Sockets)的实现类似于管道,从某种意义上说,它们都是基于内存中一页的循环缓冲区,但Sockets给每一个通信方向提供独立的缓冲区。在上述的各种通信机制中,Linux都提供了相应的接口。第8章操作系统设计返回到本节1.Linux的网络层次结构在Linux中,网络数据从用户进程传输到网络设备要经过四个层次,如图8-5所示。

第8章操作系统设计8.6.5网络接口子系统返回到本节2.网络子系统的描述

BSD套接口模型是呈现给用户进程的,这是一个面向连接的模型。BSD套接口模型处理任务的过程类似于VFS,并且为套接口的连接管理着一个通用的数据结构。网络的I/O开始于对套接口的读和写,调用了read/write系统调用,而系统调用是由虚拟文件系统的一个功能块处理的。传输层的write例程负责把引入的数据拆分成传输数据包。UDP提供一种无连接的、不可靠的数据传输服务,它负责从IP接受数据包,寻找目的套接字。

IP提供了一种数据包的传输服务。对于给定的数据包和数据包的目的地,IP通信层负责把数据包发送到主机。

ARP(地址解析协议)负责把IP转换成实际的硬件地址,ARP支持各种硬件设备,如以太网、FDDI等。网络子系统为串行连接、并行连接、以太网连接都提供了自己的设备驱动程序,为各种硬件设备提供的抽象接口,隐藏了通信媒体之间的差异。第8章操作系统设计返回到本节8.7.1Windows2000/XP的体系结构8.7.2核心态组件8.7Windows2000/XP的体系结构第8章操作系统设计返回到本章Windows2000/XP通过硬件机制实现了核心态(管态,kernelmode)和用户态(目态,usermode)两个特权级别。Windows2000/XP的体系结构如图8-6所示。

图8-6Windows2000/XP的体系结构第8章操作系统设计8.7.1Windows2000/XP的体系结构

返回到本节1.用户进程用户进程包括四种基本类型。(1)系统支持进程(systemsupportprocess)其主要包括:

①Idle进程

②系统进程

③会话管理器

④登录进程

⑤本地安全身份验证服务器

⑥服务控制器(2)服务进程(serviceprocess)它们是Windows2000/XP所提供的服务,例如事件日志服务等。(3)环境子系统(environmentsubsystem)环境子系统的作用是将基本的执行体系服务的某些子集提供给应用程序。Windows2000/XP有三种环境子系统:Win32、POSIX和S/2。(4)应用程序(userapplixation)应用程序包括Win32、Windows3.1、MS-DOS、POSIX或OS/2共5

种类型。第8章操作系统设计返回到本节2.子系统动态链接库从图8-9中可以看出服务进程和应用程序不能直接调用操作系统服务,它们必须通过子系统动态链接库subsysremDLLs)和系统交互。子系统动态链接库的作用是将文档化函数(公开的调用接口)转化为适当的Windows2000/XP内部系统调用。第8章操作系统设计返回到本节图8-6中粗横线以下为核心态组件,它们运行在统一的核心地址空间中。1.核心核心包括了最低级的操作系统功能,其始终运行在核心作用态,代码短小紧凑,可移植性也好,优先级最高,它提供以下功能:(1)线程安排和调度;(2)陷阱处理和异常调度;(3)中断处理和调度;(4)多处理器同步;(5)供执行体使用的基本内核对象。2.执行体

Windows2000/XP的执行体是NTOSKRNI.EXE。它包括了基本的操作系统服务,例如内存管理器、进程和线程管理、安全控制、I/O以及进程的通信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论