操作系统结构

操作系统的内部的六种不同的结构设计:单体系统、层次系统、微内核、客户机-服务器系统、虚拟机和exokernels。

一、单体系统

在多数常见的组织形式的处理方式中,全部操作系统在内核态中以单一程序的方式运行。整个操作系统以过程集合的方式编写,链接成一个大型可执行二进制程序。
在单体系统中,也可能有一些结构存在。可以将参数放置在良好定义的位置,通过这种方式,向操作系统请求所能提供的服务(系统调用),然后执行一个陷阱指令,这个指令将机器从用户态切换到内核态并把控制传递给操作系统,然后操作系统取出参数并且确定应该执行哪个系统调用,随后在一个表格中检索,在该表格的k槽中存放着指向执行系统调用k过程的指针。
对于这类操作系统的基本结构:
1. 需要一个主程序,用来处理服务过程请求。
2. 需要一套服务过程,用来执行系统调用。
3. 需要一套实用过程,用来辅助服务过程。
在该模型中,每一个系统调用都通过一个服务过程为其工作并运行之。要有一组实用程序来完成一些服务过程所需要用到的功能。
简单的单体系统结构图示:
操作系统结构

二、层次式系统

单体系统进一步通用化,就变成一个层次式结构的操作系统,它的上层软件都是在下一层软件的基础之上构建的。THE系统是按此模型构造的第一个操作系统。
THE系统共分为六层。
0. 处理器分配和多道程序设计
处理器分配分配在第0层中进行,当中断发生或定时器到期时,由该层进行进程切换。在第0层之上,系统由一些连续的进程所组成,编写这些进程时不用再考虑在单处理器上多进程运行的细节。也就是说,在第0层中提供了基本的CPU多道程序功能。
1. 存储器和磁鼓管理
内存管理在第1层中进行,它分配进程的主存空间,当内存用完时则在一个512k字的磁鼓上保留进程的一部分(页面),在第1层上,进程不用考虑它是在磁鼓上还是在内存中进行。第1层软件保证一旦需要访问某一个页面时,该页面必定已在内存中。
2. 操作员-进程通信
第2层处理进程与操作员控制台(即用户)之间的通信。在这层的上不,可以认为每个进程都有自己的操作员控制台。
3. 输入/输出管理
第3层管理I/O设备和相关的信息流缓冲区。在第3层上,每个进程都与有良好特性的抽象I/O设备打交道,而不必考虑外部设备的物理细节。
4. 用户程序
第4层是用户程序层,用户程序不必考虑进程、内存、控制台或I/O设备管理细节。
5. 操作员
系统操作员进程位于第5层中。

MULTICS系统

该系统由许多的同心环构造而成,而不是采用层次化构造。内层环比外层环有更高的级别。当外环的过程欲调用内环的过程时,它必须执行一条等价于系统调用的TRAP指令。在执行该TRAP指令前,要进行严格的桉树合法性检查。

三、微内核

在微内核设计背后的思想是为了实现高可靠性,将操作系统划分成小的、良好定义的模块,只有其中一个模块–微内核–运行在内核态上,其余的模块,由于功能相对弱些,则作为普通用户进程运行。特别地由于把每个设备驱动和文件系统分别作为普通用户,这些模块中的错误虽然会使这些模块崩溃,但是不会使得整系统死机。
微内核在实时、工业、航空以及军事应用中特别流行。
MINIX3系统结构图示:
操作系统结构

再生服务器

检查其他服务器和驱动器的功能是否正确,一旦检查出一个错误,它自动取代之,无需任何用户的干预。这种方式使得系统具有自修复能力,并且获得了较高的可靠性。
系统对每个进程的权限有着许多限制。一个与小内核相关联的思想是在内核中的机制与策略分离的原则。一个比较简单的调度算法是,对于每个进程赋予一个优先级,并让内核执行在具有最高优先级进程中可以运行的某个进程。这里机制(在内核中)就是寻找最高优先级的进程并运行之。而策略(赋予进程以优先级)可以由用户态中的进程完成。在这个方式中,机制和策略是分离的,从而使系统内核变得更小。

四、客户机-服务器模式

一个微内核思想的略微变体是将进程划分为:
1. 服务器:每个服务器提供某种服务。
2. 客户端:使用这些服务。
这个模式就是所谓的客户机-服务器模式。通常在系统最底层是微内核,这个模式的本质是存在客户端进程和服务器进程。
在客户端和服务器之间的通信是消息传递。普遍方式是客户端和服务器在不同的计算机上,通过局域网或广域网连接,由于客户端通过发送消息与服务端通信,客户端并不需要知道这些消息是在它们的本地机器上处理,还是通过网络被送到远程机器上处理。
客户端-服务器模型实例:
操作系统结构

五、虚拟机

1. VM/370

最初命名为CP/CMS,后来改名为VM/370,它的目的是为了将多道程序和获取更方便的裸机彻底隔离。它的核心称为虚拟机监控程序,它在裸机上运行并且具备了多道程序功能。该系统向上层提供了若干个虚拟机。它不同于其他操作系统:这些虚拟机不是那种具有文件等优良特征的扩展计算机。它们仅仅是裸机硬件的精确复制品,包含了内核态/用户态、I/O功能、中断及其他真是硬件所具备的全部内容。

2. 虚拟机的再次发现

虚拟化的优点:
1. 一台物理机就可以运行许多虚拟机,每个虚拟机看起来都是一台完全的机器。这样可以节省费用。
2. 可以同时运行两个或多个操作系统。

3. Java虚拟机

它是一种体系结构。Java编译器为JVM生成代码,这些代码以后可以由一个软件JVM解释器质性。这种处理方式的优点在于,JVM代码可以通过Internet传送到任何有JVM解释器的机器上,并在该机器执行。使用JVM的优点就是如果解释器正确地完成,并不意味着结束,还要对所输入的KVM进行安全性检测,然后在一直保护环境下执行,这样,这些程序就不能偷窃数据或进行其他任何有害的操作。

六、外核

与虚拟机克隆真实机器不同,另一种策略是对机器进行分区。给每个用户整个资源的一个子集。
在底层中,一种称为外核的程序在内核态中运行。它的任务是为虚拟机分配资源,并检查试图使用这些资源的企图,以确保没有机器会使用他人资源。每个用户层的虚拟机可以运行自己的操作系统,但限制在只能使用已经申请并且获得分配的那部分资源。
外核机制的优点是减少了映像层。在其他的设计中,每个虚拟机都认为它有的磁盘,其盘块号从0到最大编号,这样虚拟机监控程序必须维护一张表格用以重映像磁盘地址,有了外核这个重映像处理就不需要了,外核只需要记录已经分配各个虚拟机的有关资源即可。这个方法还有一个优点,它将多道程序(在外核内)与用户操作系统代码(在用户控件内)加以分离,而且相应负载并不重,这是因为外核所做的一切,只是保持多个虚拟机彼此不发生冲突。