操作系统结构 (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统是一种大型、复杂的并发系统,为了研制操作系统,首先必须研究它的结构,力求设计出结构良好的程序。操作系统的结构设计有两层含义:一是研究操作系统的整体结构,由程序的构成成分组成操作系统程序的构造过程和方法;二是研究操作系统程序的局部结构,包括数据结构和控制结构。采用不同的构件和构造方法可组成不同结构的操作系统。本节将在讨论操作系统构件之后,全面介绍各种操作系统的构造方法。

1.2.1 操作系统的组件

通常把组成操作系统程序的基本单位称作操作系统的构件。剖析现代操作系统,构成操作系统的基本单位除内核之外,主要还有进程、线程、类程和管程。

1.内核

现代操作系统中大都采用了进程的概念,为了解决系统的并发性、共享性和随机性,并使进程能协调地工作,单靠计算机硬件提供的功能是十分不够的。例如,进程调度工作目前就不能用硬件来实现;而进程自己调度自己也是困难的。所以,系统必须有一个软件部分能对硬件处理器及有关资源进行首次改造,以便给进程的执行提供良好运行环境,这个部分就是操作系统的内核。

由于操作系统设计的目标和环境不同,内核的大小和功能有很大差别。有些设计希望把内核做得尽量小仅具有极少的必需功能,称为微内核(microkernel),其他功能都在核外实现,通过微内核提供的消息传递机制完成其余功能模块间的联系;有些设计则希望内核具有较多的功能,虽然其内部也可划分成层次或模块,但运行时是一个大二进制映像,模块间的联系可通过函数或过程调用实现,称为单内核(monolithic kernel)。操作系统的一个基本问题就是内核的功能设计。微内核结构是现代操作系统的特征之一,这种方法把内核和核外服务程序的开发分离,可为特定应用程序或运行环境要求定制服务程序,具有较好的可伸缩性,简化了实现,提供了灵活性,很适合分布式系统的构造。

一般而言,内核必须提供以下3个方面的功能。

(1)中断处理。中断处理是内核中最基本的功能,也是操作系统赖以活动的基础,为了缩短屏蔽中断的时间,增加系统内的并发性,通常它仅仅进行有限的、简短的处理,其余任务交给在内核之外的特殊用户态进程完成。当中断事件产生时,先由内核截获并转向中断处理例行程序进行原则处理,它分析中断事件的类型和性质,进行必要的状态修改,然后交给内核之外的进程去处理。例如,产生外围设备结束中断事件时,内核首先分析是否正常结束,如果是正常结束,那么,就应释放等待该外围传输的进程;否则启动相应设备管理进程进行出错或异常处理。又如当操作员请求从控制台输入命令时,内核将把这一任务转交给命令管理进程去处理,以接收和执行命令。

(2)短程调度。主要职能是分配处理器。当系统中发生了一个事件之后,可能一个进程要让出处理器,而另一个进程又要获得处理器。短程调度按照一定的策略管理处理器的转让,以及完成保护和恢复现场的工作。由于它是协调进程竞争处理器资源的程序,所以它不是进程而是内核中的一个程序。

(3)原语管理。原语是内核中实现某一功能的不可中断过程。为了协调进程完成通信、并发执行和共享资源,各种原语是必不可少的。通信原语为进程相互传递消息,同步原语能协调并发进程之间的种种制约关系。此外,还有其他原语,如启动外围设备工作的启动原语,若启动不成功则请求启动者应等待,显然,这个启动过程应该是完整的,否则在成为等待状态时,可能外围设备已经空闲。由于设备的操作与硬件密切相关,故通常设备驱动程序等功能都放在内核中完成。

内核是操作系统对裸机的首次改造,内核和裸机组成了一台虚拟机,进程就在这台虚拟机上运行,它比裸机的功能更强大,具有以下特性:

(1)虚拟机没有中断,因而,进程的设计者不再需要有硬件中断的概念,用户进程执行中无须处理中断;

(2)虚拟机为每个进程提供了一台虚拟处理器,每个进程就好像在各自的私有处理器上顺序地推进,实现了多个进程的并发执行;

(3)虚拟机为进程提供了功能较强的指令系统,即它们能够使用机器非特权指令、系统调用和原语所组成的新的指令系统。

为了保证系统的有效性和灵活性,设计内核应遵循少而精的原则。如果内核功能过强,则一方面在修改系统时可能牵动内核;另一方面它占用的内存容量和执行时间都会增大,且屏蔽中断的时间过长也会影响系统效率。因而,设计内核时应注意:

中断处理要简单;调度算法要有效;原语应灵活有力、数量适当。这样就可以做到下次修改系统时,尽量少改动内核,执行时中断屏蔽时间缩短。

2.进程管理

程序本身并不能做什么,只有在CPU执行它的指令时才能有所作为;因此,可以把进程看做是正在运行的程序。但是当我们进一步研究时,对进程的定义将更为普遍。例如:一个分时用户程序(如编译器)是一个进程,个人用户在PC 上运行的字处理程序是一个进程,一个系统任务(如输出到打印机)也是一个进程,并可以提供允许进程创建与其并发执行的子进程的系统调用。

进程需要特定的资源(包括CPU时间、内存、文件和I/O设备)来完成工作。这些资源或者在进程创建时分配给它,或者在其运行时分配。除了在进程创建时所获得的各种物理资源和逻辑资源以外,各种各样的初始化数据(或输入)也可能一同传送给进程。例如,考虑一个能够在终端的显示屏上显示一个文件状态的进程。这个进程将获得包含输入的文件名,将执行相应的指令和系统调用来获取所期望的信息并显示在终端上。

着重强调程序本身不是进程;程序是静态实体(passive entity)(好像是存储在磁盘中的文件的内容),而进程是动态实体(active entity),它用一个程序计数器来指明要执行的下一条指令。进程必须要按顺序执行,CPU执行完进程的一条指令后再执行下一条,直到进程结束。进一步地讲,一次最多执行一条代表该进程的指令。这样,从来就不会出现两个独立运行的序列。但一个程序在运行时创建多个进程是非常普遍的。

进程是并发程序设计的一个工具,并发程序设计支撑了多道程序设计,由于进程能确切、动态地刻画计算机系统内部的并发性,更好地解决系统资源的共享性,所以,在操作系统的发展史上,进程概念被较早地引入了系统。它在操作系统的理论研究和设计实现上均发挥了重要作用。采用进程概念使得操作系统结构变得清晰,主要表现如下。

(1)一个进程到另一个进程的控制转移由进程调度机构统一管理,不能杂乱无章,随意进行。

(2)进程之间的交互如信号发送、消息传递和同步互斥等活动由通信及同步机制完成,从而使进程无法有意或无意破坏其他进程的数据。因此,每个进程相对独立,相互隔离,提高了系统的安全性和可靠性。

(3)进程结构较好地刻画了系统的并发性,动态地描述出系统的执行过程,因而具有进程结构的操作系统,结构清晰、整齐划一,可维护性好。

3.主存储器管理

主存储器是现代计算机系统运行的核心。主存储器是由字或字节组成的大型队列,每个字或字节都有它自己的地址。主存储器是CPU 和I/O 设备共享的大容量快速存储器。中央处理器在取指令周期中从主存储器中读取指令,而且在取数据周期中从主存储器中读/写数据。通过DMA(动态内存存取),I/O操作也实现了对主存储器的数据读/写。通常主存储器是CPU唯一能够直接寻址和访问的大容量存储空间。例如,CPU要处理磁盘中的数据,那么CPU首先发出I/O调用将这些数据传送到主存储器中。同样,指令必须在存储器中才能够由CPU执行。

必须要把程序映射到绝对地址并载入内存中才可以执行。在程序运行时,它通过产生绝对地址来从内存中访问程序指令和数据。最后,程序结束,释放所占的内存空间,方便下一个程序载入。

为了提高CPU利用率和计算机响应速度,必须在内存中保留多个程序。有许多不同的内存管理策略,而且不同算法的效率取决于具体的环境。为具体的系统选择内存管理策略要考虑许多因素——尤其是系统的硬件设计。每种算法都需要自己的硬件支持。

操作系统要负责下列与内存管理相关的工作:

跟踪内存使用情况,明确哪一部分正在使用和为谁所用;

在内存空间有效时决定将哪个进程载入内存;

根据需要分配和释放内存空间。

4.文件管理

相关文档
最新文档