微内核操作系统设计方法及其实例的比较

上传人:ji****72 文档编号:46424661 上传时间:2018-06-26 格式:PDF 页数:6 大小:1.27MB
返回 下载 相关 举报
微内核操作系统设计方法及其实例的比较_第1页
第1页 / 共6页
微内核操作系统设计方法及其实例的比较_第2页
第2页 / 共6页
微内核操作系统设计方法及其实例的比较_第3页
第3页 / 共6页
微内核操作系统设计方法及其实例的比较_第4页
第4页 / 共6页
微内核操作系统设计方法及其实例的比较_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《微内核操作系统设计方法及其实例的比较》由会员分享,可在线阅读,更多相关《微内核操作系统设计方法及其实例的比较(6页珍藏版)》请在金锄头文库上搜索。

1、第 20 卷 第 2 期沈 阳 工 业 大 学 学 报Vol?20No?2 总第78期Journal of ShenyangSumNo. 78 1 9 9 8 年 4 月Polytechnic UniversityApr.1998本文收到日期: 1996- 11- 02? ? 第一作者: 男?28? 博士生微内核操作系统设计方法及其实例的比较施? 嵘 ? 刘丽均( 电子工程系)摘? 要? 微内核操作系统提供了并行计算机所需的功能和性能, 是并行操作系统的发展方向?讨论微内核操作系统的基本设计方法, 并介绍几个典型实例: Amoeba, Mach, Chorus.关键词: 操作系统; 微内核;

2、Amoeba; Mach; Chorus中图法分类号: TP 3?10 ? 引 ? 言并行机操作系统主要有两种设计方法:在主机化系统中, 并行机由大量相同的处理机加上一个主机组成,主机可以是普通的工作站也可以是象CRAY Y?MP 这样的专用主机? 通常主机上运行标准的操作系统如 UNIX, 其它结点上不运行任何操作系统? 应用程序和一个包括能做有限的进程和内存管理以及通信过程的运行库一起编译,应用程序运行在核心模式并 接管整个机器? 大多数系统调用要先通过消息发送到主机上, 在主机上执行完毕后再把结果送回来? 采用这种方法的并行机有 C RAYT30,富士通的 AP1000,Thinking

3、 Machines 的CM?2 能及 Intel 的 iPSC/ x 等,而在对称式系统中,每个结点都运行一个完整的操作系统,通常是 UNIX? 由于每个结点上都有完整的操作系统,因而不需要专门的主机 ? 使用这种方法的并行机有 Meiko CS?2,Thinking Machines CM?5 以及 IBM 的 SP2 等?这两种方法都存在着问题 ? 主机化模型仍源于最早的计算模式,那时计算机没有操作系 统而只有运行库, 在主机化系统中多个用户不能在保护方式下同时运行,而且由于缺少操作系统,也就不太可能实现虚拟内存; 更重要的是由一个主机来处理所有系统调用会产生性能瓶颈和不可靠性 ? 对称式

4、系统解决了这些问题,但同时也引入了新的问题: 首先,对并行应用而言 UNIX 过于庞大和低效,因为并非每个结点上都有磁盘、终端或其它 I/ O 设备, 在这样的结点上运行完整的 UNIX 无疑是极大的浪费;其次, 在通常的操作系统 ( 包括 U?NIX) 中,通信并不是设计时所考虑的重点, 而是后来移植过去的, 因此它和操作系统的其 它部分衔接得不好,通信的效率也不高 ?1 ? 微内核解决上述问题的最好办法是在两种方法中采取某种折衷, 设计一个即简单又能完成操作系统基本功能的操作系统 ? 设计的核心是一个能完成进程管理、内存管理、通信以及能提供最基本的 I/ O 服务的微内核,其代码尽可能少并

5、在并行机的每个结点运行,提供最基本的 功能,所有其它传统的操作系统服务如文件系统被转移到用户态中,它由服务进程提供, 服务进程是对微内核的扩展, 它只运行在需要提供这些服务的结点?微内核操作系统已在 Intel paragon, Convex Exemplar, Unisys SSP 等并行机上实现, 下面通过对比三个典型微内核系统进一步说明微内核操作系统及其设计重点 ?1?1? AmoebaAmoeba 是从 1981 年开始由荷兰的 Vrije 大学设计实现的,它主要是为由大量处理机组 成的处理机池 ( processor pool) 系统设计的 ? 整个系统由微内核和几个服务程序如文件服

6、务等组成, 每个进程可有多个控制线程,它们共享进程的地址空间和资源? 每个线程均有一个程序计数器, 它们顺序执行是进程中的活跃实体 ? 和其它操作系统不同的是: Amoeba 是完全基于对象的,每个对象都被命名并通过一个由 128 个二进制位组成的权限 ( capability) 而受到保护? 当一个进程创建对象时, 管理该对象的服务进程返回此对象的权限, 权限规定了 权限持有者对该对象所能执行的操作? 它也可以被分发给其它用户进程? 因此, 可能有多个用户持有同一对象的权限 ?Amoeba 主要被一些大学和公司用作研究并行系统、语言及应用的平台?1?2? MachMach 的前身是 Roch

7、ester 大学的 RIG,当 RIG 的设计者之一 Richard Rashid 到了 Carnegie Mellon 大学后,在 RIG 的基础上设计了新的操作系统 ACCENT , 之后这个系统演变成 Mach? 起初它并不是一个微内核系统, 其设计思想及大量代码都直接来自 BERKELEY版的 UNIX,直到发展到 Mach2?5,并被 OSF/ 1 发展为 OSF/ 1 系统的基础 ? 随后 CMU 又将其升级到 Mach3?0, 该版本将 BERKELEY 代码移到用户空间,从而使内核变得很小; 而 OSF 也将 OSF/ 1 发展为 OSF/ 1AD, 它和Mach3?0 在网络

8、通信数据包、消息格式、内存管理以及支持实时性等方面均有所不同 ?Mach 基于 5 个基本概念:进程、线程、端口、消息和内存对象 ? 进程是统一管理的线程和资源集合;线程则是进程内的 ? 轻进程?;端口是用于通信的邮箱;消息则是发送线程发送到另一线程的端口上以便接收线程接收的类型化的数据结构; 内存对象是具有可共享性 及整体性的内存区域 ?Mach 目前可运行在 Intel 的 Paragon 和 Conves 的 Ezemplar 上 ?1?3? ChorusChorus 始于自 1980 年开始在法国 INRIA 进行的一个研究项目, 主要目的是研究分布式技术?Chorus 也有进程、线程

9、、端口、消息以及内存对象, 只是使用的名称与 Mach 有所不同, 但所完成的功能大致相同 ? 和 Amoeba 一样,Chorus 也有管理系统对象和用户对象的权 限? 目前 Chorus 已在 CRAY T 3D, Unisys SPP 和 ICL Goldrush 上实现?2 ? 进程管理在并行机上有大量的进程, 它们要被动地创建并分配到各处理机上去, 因此在并行机中进程起着非常重要的作用, 在许多应用中进程的同步也非常关键 ? 在细粒度的计算中单个进 程中有多个控制线程也是非常有用的 ? 因此我们先来看看 Amoeba,Mach 和 Chorus 分别是如何处理进程的管理的?2?1?

10、Amoeba中的进程管理和 UNIX 一样, 在 Amoeba 中一个进程被创建后有自己的地址空间、一个控制线程以及68? ?沈? 阳? 工? 业? 大? 学? 学? 报第 20 卷其它资源,进程随后可以创建共享地址空间的多个控制线程 ? 所有线程必须运行在相同的处理机上,因而这些线程是伪并行的, 真正的并行要通过多个进程来获得?Amoeba 由一个小的内核和为用户进程提供服务的核心进程集构成 ? 其中的一种服务是允许用户申请称为段 ( Segment) 的连续内存空间, 段是 Amoeba 中的对象,因而要通过权限来命名、控制以及保护 ? 进程可以利用段权限把数据写入段中, 用户也可以创建一

11、个包含 段权限和其它信息的进程描述符,把这个描述符连同创建进程的请求交给另一个核心进程,内核就可以返回一个新进程的权限? 父进程如 shell,可以将子进程的权限传送给其它进程如debugger,通过进程权限,debugger 就可以控制这个子进程了? 虽然一个进程中的所有线程共享相同的程序文本和全局数据,但每个线程有自己的栈、栈指针及机器寄存器的副本, 而且库函数也提供了创建和使用在线程内全局可见而对其它线程不可见的变量的功能 ? 2?2? Mach 中的进程管理Mach 也有进程和线程,所不同的是,除了由内核管理线程外, 用户进程还能运行称为CThreads的用户级线程包, CThread

12、s 允许由 m 个用户线程组成的线程组以任意方式映射到由n 个核心态线程组成的线程组上?线程同步方法有两种:互斥信号量和条件变量 ? 互斥信号量的原语有 lock,trylock 和 unlock, 同时还有分配和释放信号量的原语? 互斥信号量提供了互斥的功能,但不能传递信息? 条件变量上可执行的操作有 signal,wait,broadcast? 它们允许线程阻塞于某个条件, 直到另一线程使条件满足后才唤醒被阻塞的线程, signal 唤醒一个等待的线程,而 broadcast 则唤醒所有等待在该条件上的线程? 2?3? Chorus 中的进程管理按照所具有的信任度和特权的不同 Chorus

13、 中有三种进程:核心进程,系统进程和用户进程? 被信任进程 ( trusted process) 可以直接调用内核; 非信任进程 ( untrusted process) 不能直接调用内核 ? 特权进程 ( privileged process) 可以直接执行 I/ O 操作而非特权进程则不能? 2?4? 比较所有三个系统都支持多线程的进程, 线程由内核管理和调度 ?Amoeba 中进程对线程有抢占和非抢占方式调度的选择, 而 Mach 和 Chorus中可以由进程来决定线程的优先级和调度策略 ?Amoeba 通过库函数提供 UNIX 仿真, 而 Mach 则通过捕获系统调用的陷入并将其转到

14、用户空间的仿真程序的方法来提供 UNIX、MS?DOS 以及其他操作系统的二进制仿真?Chorus支持系统进程,核心进程和用户进程以提供 UNIX 的二进制仿真 ?Mmoeba 是基于对象模型的,通过权限提供了整个系统中所有对象的命名及保护机制,Chorus 中权限的适用范围就小得多了 ? 而 Mach 则只有端口具有权限 ?Amoeba 和 Chorus 中的线程同步是通过互斥信号量和信号量来实现的, 而 Mach 中则是通过互斥信号量和条件变 量?三个系统都运行在多处理机上,但在如何使用处理机方面互不相同 ?Amoeba 中同一个进程的线程不能运行在不同的处理机上,而进程则可以运行在不同处

15、理机上 ?Mach 通过处理机集概念允许线程的任意分配,从而使同一进程中的线程是真正并行的 ?Chorus 和 Mach69第 2 期施? 荣等: 微内核操作系统设计方法及其实例的比较? ?类似, 但用户的介入要少得多 ?3 ? 内存管理包括并行机操作系统在内的所有操作系统都必须管理内存,并尽可能支持虚拟内存 ? 虽然并行机和单处理机在内存管理上差别不大, 但仍是值得探讨和研究的? 3?1? Amoeba中的内存管理Amoeba 中的内存管理非常简单? 一个进程可以有任意数量的段, 段可以位于任意的内存空间中, 段不能被替换或分页,因此进程必须整个常驻内存 ? 这种设计的好处是: 简单、经济和

16、高性能?3?2? Mach 中的内存管理 Mach 给其用户进程提供的是线性地址空间, 在地址空间里进程可以定义称为区域的一段连续空间并把内存对象映射到该区域上去 ? 内存对象是按需分页的,可以是一页或多页,也可以是整个文件? 当文件被映射到区域中之后, 通过编址就可以存取它而不需要执行 I/ O操作了? 同一个内存对象也可以被多个进程所共享?3?3? Chorus 中的内存管理 Chorus 中的内存管理与 Mach 非常类似,但在实现上存在很多差别 ?Chorus中的内存管理是基于区域和段的, 区域是一段连续的地址空间而段则是由权限命名的字节的集合,段可以用 I/ O 原语读写,文件和交换区都是段,段可以映射到区域上去?3?4? 比? 较 在Amoeba 中进程可以有任意数量的不定长的段,并可映射到虚拟地址空间上? 段由权限控制并能被包括远程进程在内的拥有该权限的任何进程读写 ?Amoeba 不支持按需调页,因此在运行时进程的所有段都必须常驻内存 ? 在 Mach 中内存由内存对象组成,内存对象是分页的,页可以按需从内存中调入调出,因而内存对象不必全在内存中 ? 当缺页时,exte

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号