基于服务体的操作系统体系结构

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

基于服务体的操作系统体系结构

摘要:在分析微内核模型特点的基础上,提出了基于服务体的操作系统体系

结构,引入了执行流和服务体等新的系统抽象以及服务体间通信等相应机制。服务体模型具有微内核模型的优点,克服了其效率低下的不足,为融合单内核模型和微内核模型提供了一种途径。除了传统多地址空间操作系统外,服务体模型还可应用在单地址空间操作系统中。

关键词:微内核服务体执行流

Server-Block Based Operating System

Architecture

Abstract: Server-Block based operating system architecture is presented on the base of analysis of the traditional microkernel,, introducing some new system abstraction and policy such as server-block, executive-stream and the communication between server-blocks. Server-Block model overcome the poor performance of microkernel and provide a unified approach to microkernel and macokernel。Beside the traditional multiply address operating system , the new model can also be used to implement the single address operating system.

Key words: microkernel server-block executive-stream

1研究背景

操作系统内核模型主要分为单内核和微内核两种,单内核模型效率高但结构性、可扩展性、可维护性均存在较大的不足;微内核模型目标是以统一的形式在一个系统内兼容多个不同操作系统,降低操作系统开发维护的开销。微内核模型以线

程为系统基本抽象,以IPC为通讯手段,良好的体系结构使得该核模易于维护,易于分布式扩展并且可以模拟其他操作系统的语义。用户级进程/线程作为系统功能的提供者也给操作系统的调试带来莫大的方便,可以较为容易构建用户态操作系统的模拟调试环境。微内核的主要缺点是过大的运行开销,主要集中于过于频繁的上下文切换以及由于进程空间的隔离所带来的进程间通讯的开销[1]。直接使用微内核模型构造实际应用的操作系统是不现实的,使用内核级服务器代替用户级服务器作为一种改进的思路被提出并重新考虑微内核模型为系统的鲁棒性所带来的好处[2]。在这种思想的影响下微内核模型的典型代表Mach的商用版本实现中,文件、网络以及内存管理等关键代码重新被收到内核中运行在特权模式下。微内核的一种改进是使用“外核”(Exokernel)[3]思想将内核服务进一步简化,对外只提供”虚拟机”抽象。文件、网络、缓存等机制由用户库完成,减少了上下文切换和信息交换的开销具有很高的效率。MIT开发的Aegis就是在这种思想指导下设计实现的操作系统。单地址空间操作系统模型[4][8]则从另一个角度避免上下文切换以及信息共享所带来的开销。单地址空间模型具有良好的运行效率,易于实现单层次以及持久存储系统。单地址空间操作系统面临的主要困难是要求运行平台提供大的虚拟寻址空间,同时难以完全兼容UNIX语义。

本文介绍一种新的操作系统内核模型—服务体模型。在服务体模型中消息传递仍然是通讯的基本方式,这是实现系统灵活性、开放性以及可扩展性的基础。服务体模型中消息的处理模式只支持同步方式,操作系统的异步功能由相应的服务体实现而不像微内核模型那样作为一种通讯机制提供给上层使用。这种消息处理模式的设计是基于以下理由的:(1)在微内核模型中绝大部分服务都是同步的,也就是Client要等待Server完成请求处理。(2)跨越服务器边界的通讯切换必然伴随着内存上下文的切换和线程调度。(3) 操作系统的异步服务没有必要以一种基础通讯协议的形式提供,异步处理完全可以在同步通讯协议的基础上加以实现,就如同传统的UNIX所实现的异步系统服务一样。

同步消息处理模式使我们可以采用一种新的系统抽象:执行流。执行流是比线程更基本的概念,执行流是CPU对指令的执行的抽象,是一种动态的概念。与线

程不同执行流不拥有地址空间、栈等资源。因此执行流可以跨越操作系统功能组件的边界而且使得地址空间的管理更加具有灵活性。服务体是系统的基本组成单位,是一种静态的概念。服务体拥有地址空间、运行栈以及安全描述符、数据、代码等资源,依靠执行流完成服务,在这里执行流体现的是一种“推动力”的作用。通过使用执行流,服务体模型有效的减低了运行开销同时保持了和微内核模型相当的灵活性和可扩展性。服务体模型的一个有趣的特性是它能够匀滑的在单内核模型和微内核模型之间进行转变,从而将两种完全对立的模型统一起来。

本文首先详细描述了服务体模型的基本要素和工作原理,然后介绍了一个基于服务体模型的一个实例MiniCoreV3,并对其性能进行了分析。

2.服务体模型的基本结构

服务体模型的基本结构包括执行流、服务体,服务体空间、服务体管理器,核心内核等要素,各部分的关系如图一所示。服务体是操作系统的基本组成单位,服务体管理器提供服务体间通讯、服务体异常处理以及消息广播等机制;核心内核是一个特殊的服务体,负责提供如执行流、系统异常、陷入、时钟服务、系统同步等功能。

2.1执行流

在服务体模型中我们以执行流作为系统基本抽象。执行流与线程有类似之处,如具有优先级、是调度的基本单位、拥有保存CPU硬件上下文的数据结构等,二者的区别是执行流不与固定的地址空间绑定,或者说执行流不拥有地址空间。进

而言之,我们通过将系统拆分成服务体(静态部分)和执行流(动态部分)两个概念以强调CPU运行力的抽象,执行流所代表的就是CPU对机器码执行的抽象。从推动服务体意义上来说各个执行流是等价的,一个任务由哪个执行流完成是无区别的,这就使得执行流能够直接跨越系统组件边界(往往也是地址空间边界)完成服务而不必像微内核模型那样必须使用不同的线程。这种抽象方式的另一个优点是在内存空间的使用可以更灵活以减少不必要的运行开销。应该说执行流是比线程更加基本的概念。

执行流根据用途分为普通执行流和工作者执行流两类。普通执行流用来推动用户程序,当用户发出请求时该执行流推动相关服务体完成请求处理,当消息的处理需要在单独的执行流中完成的时候,服务体则为它的某个小端口申请工作者执行流并使用该执行流完成消息的处理。对于频繁经常使用工作者执行流的服务体通过将工作者执行流和小端口绑定以提高效率,绑定方式分为两种:固定式和周期式。服务体使用周期性的工作者执行流完成一些周期性的任务,如协议栈状态维护、缓冲区的刷新等。一个小端口可以同时申请多个工作者执行流以加速处理。

系统中每个CPU提供一个原始执行流,如果采用超线程技术(Hyper-Thread)则每个CPU可以提供超过一个的原始执行流。核心内核中的执行流管理器将原始执行流变换成若干个并发的虚拟执行流,核心内核可以说是整个系统的动力之源。

2.2服务体

概括的说,服物体是具有通讯功能,拥有地址空间、安全控制等资源和属性的能够完成某一功能的代码和数据集合,可以看作是进程和模块这两种分属微内核和单内核两种不同内核模型的概念的一个综合体。服务体是系统的基本组成单位,用户程序包括驱动程序在内的各种功能组件都以服务体的形式存在,传统的用户程序模型(进程/线程)通过运行环境服务体实现兼容。服务体本是一种静态的概念,他的生命周期并不依赖执行流,具有持久性。服务体间基于消息进行通讯,在执行流的推动下进行消息处理。服务体模型中通讯的主体是服务体而不是进程或线程。

相关文档
最新文档