操作系统的结构设计

操作系统的结构设计

操作系统的结构设计有两层含义,一是研究操作系统的整体结构;二是研究操作系统程序的局部结构,包括数据结构和控制结构。

操作系统的构件

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

内核

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

由于操作系统设计的目标和环境不同,内核的大小和功能有很大差别。有些设计希望把内核做得尽量小仅具有极少的必须功能,成为微内核。其它功能都核外实现,通过微内核提供的消息传递机制完成其余功能模块间的联系。操作系统的一个基本设计问题是内核的功能设计,微内核结构是现代操作系统的特征之一,这种方法把内核和核外服务程序的开发分离,可为特定应用程序或运行环境要求定制服务程序,具有较好的可伸缩性,简化了实现,提供了灵活性。一般而言,内核必须提供以下三方面功能:

中断处理

中断处理是内核中最基本的功能,也是操作系统尤其是多道程序设计并行性的基础。为了缩短屏蔽中断的时间,提高系统的并发性,通常它仅仅进行有限的处理,将其余任务交给在内核之外的特殊用户态进程完成。当中断时间产生时,先由内核截获并转向中断处理例行程序进行基本处理:它分析中断事件的类型和性质,进行必要的状态修改,然后交给内核之外的进程去处理。例如:产生外围设备结束中断事件时,内核首先分析是否正常结束,如果是正常结束则释放等待该外围传输的进程,否则应启动相应设备管理进程进行异常处理。

短程调度

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

原语管理

原语是内核中实现某一功能的不可中断过程,为了协调进程完成通信、并发执行和共享资源,各种原语是必不可少的。通信原语为进程相互传递消息,同步原语能协调并发进程之间的种种制约关系。

内核的执行属性

内核是由中断驱动的

只有当发生中断事件后由硬件交换程序状态字才引出操作系统的内核进行中断处理,且在处理完中断事件后内核自行退出。

内核的执行是连续的

在内核运行期间不能插入内核以外的程序执行,因而,能保证在一个连续的时间间隔内完成任务。

内核在屏蔽中断状态下执行

在处理某个中断时,为避免中断的嵌套可能引起的错误,必须屏蔽该级中断。有时为了处理简单,把其它一些中断也暂时屏蔽了。

内核可以使用特权指令

现代计算机都提供常态和特态等多种机器工作状态,有一类指令称特权指令,只允许在特态下使用。规定这类指令只允许内核使用,可防止系统出现混乱。

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

  • 虚拟机没有中断,进程的设计者不再需要有硬件中断的概念,用户进程执行中无需处理中断

  • 虚拟机为每个进程挑提供了一台虚拟处理器,每个进程就如同在各自私有的处理器上顺序推进,实现了多个进程的并发执行。

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

进程

进程是并发程序设计的一个工具,一种实现,并发程序设计支撑了多道程序设计。由于进程能确切、动态地刻画计算机系统内部的并发性,更好地解决系统资源的共享性,所以在操作系统的发展史上,进程概念被较早地引入了系统。

采用进程概念使得操作系统结构变得清晰:

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

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

  • 进程较好刻画了系统的并发性,动态描述出系统的执行过程。

线程

进程是操作系统中资源分配以及系统调度的基本单位,由于每个进程拥有自己独立的存储空间和运行环境,进程和进程之间并发性粒度较粗,进程通信和切换的系统开销相当大,限制了系统中并发执行的进程数目。要更好地发挥硬件提供的额能力,要实现复杂的各种并发应用,降低并发性代价。

在一个多线程环境中,进程是系统进行保护和资源分配的单位,而线程则是进程中一条执行路径,每个进程中允许有多个并行执行的路径,而线程才是系统进行调度的独立单位。所以,可以把线程也看作一种构件,它是组成构件的更小的构件。

在一个进程中包含有多个可并发执行的控制流,而不是把多个控制流分散在多个进程中,这是并发多线程程序设计与鬓发多进程设计的主要不同。

管程

管程是管理共享资源的程序,对管程的调用表示对共享资源的请求与释放。管程可以被多个进程或管程嵌套调用,但它们只能互斥地访问管程。管程应包含条件变量,当条件不满足时,可以通过对条件变量做延迟操作使调用进程等待,直到另一个进程调用管程过程并执行一个释放操作为止。

管程和进程的区别

  • 管程定义的是公用数据结构,而进程定义的是私有数据结构

  • 管程是把共享变量上的同步操作集中起来,而临界区却分散在每个进程中

  • 管程是为管理共享资源而建立的,进程主要是为实现系统的并发性而引入的

  • 管程是语言或操作系统的成分,不必创建或撤销,而进程有生命周期,由创建而产生,由撤销和消亡。

客户端/服务器与微内核结构的操作系统

客户端/服务器与微内核结构

C/S结构的思想如下:首先将操作系统分成两大部分,一是运行在用户态并以C/S方式活动的进程,二是运行在核心态的内核。除内核部分外,操作系统的其它部分被分成若干相对独立的进程,每个进程实现一类服务,成服务器进程,例如文件管理服务、进程管理服务、存储管理服务等各种操作系统服务。服务器进程的任务是检查是否有客户提出服务请求,如果有请求就进行处理,所以用户进程和服务器进程构成了C/S关系:运行在核心态的内核把该消息传给服务器,服务器执行相应操作,再通过内核用另一种消息把结果返回给用户,由于由用户态进程来实现操作系统的绝大多数功能,内核只实现极少任务,主要起信息验证、交换的通,因此这种结构被称为C/S与微内核结构。

微内核用水平型代替传统的垂直型结构操作系统,内核中仅仅存放那些最基本的核心操作系统功能,其它服务和应用建立在微内核之外,作为独立的服务器进程在用户模式下运行。

两种结构的操作系统利弊分析

如上,左侧是垂直型结构,这种分层操作系统内核很大,互相之间调用关系复杂,而微内核结构把大量的操作系统功能放到内核外实现,这些外部的操作系统是作为进程来实现的,它们之间的信息交互借助微内核提供的消息传递机制实现。这样,微内核起消息交换功能,它只提供进程通信、少量内存管理、低层进程管理、CPU调度及低层I/O操作在内的最小服务。

微内核结构的优点:

  • 一致性接口,微内核结构对进程的请求提供了一致性接口,进程不必区别内核级服务或用户级服务,因为,所有这些服务均借助消息传递机制提供。
  • 可扩充性,微内核结构提供了较好的可扩充性,它允许增加新服务,以及在相同功能范围内提供多种可选服务,每一种都可以作为一个单独的服务器进程来实现。每次修改时,新的或修改过的服务的影响被限制在系统的子集内,并不需要建立一个新的内核。

缺点:性能问题是一个潜在缺点,因为消息的发送和接受需要花费时间,同时性能与微内核的大小和功能直接相关,微内核做得越简洁,性能消耗就会越大。

微内核的设计

微内核必须包括那些直接依赖于硬件的功能,以及支撑操作系统用户面膜是应用程序和服务所需的功能,这些功能可概括为:存储管理,进程通信、I/O和中断管理。

基本存储管理

为了实现进程级的保护,微内核必须控制地址空间的硬件设施,内核负责把每个虚页面映射到物理页框,而大量的存储管理功能都可以在内核外实现,如页面调度和虚存管理可以在内核外执行。

进程间通信

在微内核结构中,进程和线程通信的基本形式是消息。一个消息包括了消息头标和消息体,头标指明了发送和接收消息的进程,消息体包含数据,即一个数据控制块指针和进程的有关控制信息。进程间通信基于进程之间相关联的端口(Port),一个端口是一个特定继承的消息队列,与端口相关的是一张能力表,记录了可以和这个进程通信的进程,端口的标识和能力表由内核维护。

I/O和中断管理

对于微内核结构,硬件中断可如消息一样来处理,地址空间中可能包括I/O端口。微内核能够发现中断,但不能处理它,微内核将生成一个消息传送给用户层中相关的处理中断的进程。因此,当中断出现时,一个特别用户级进程被指派到中断上,内核维护这一映射。转换中断为消息的工作必须由微内核做,但内核中并不包含特定设备专有的中断处理代码。转换中断为消息的工作必须由微内核做,但内核中并不包含特定设备专有的中断处理代码。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章