下面我们会探讨操作系统的几种结构,主要包括单体结构、分层系统、微内核、客户-服务端系统、虚拟机和外核等。 下面以此来探讨一下
到目前为止,在大多数系统中,整个系统在内核态以单一程序的方式运行。 整个操作系统是以程序集合来编写的,链接在一块形成一个大的二进制可执行程序。 使用此技术时,如果系统中的每个过程都提供了前者所需的一些有用的计算,则它可以自由调用任何其他过程。 在单体系统中,调用任何一个所需要的程序都非常高效,但是上千个不受限制的彼此调用往往非常臃肿和笨拙,而且单体系统必然存在单体问题,那就是只要系统发生故障,那么任何系统和应用程序将不可用,这往往是灾难性的。
在单体系统中构造实际目标程序时,会首先编译所有单个过程(或包含这些过程的文件),然后使用系统链接器将它们全部绑定到一个可执行文件中
对于单体系统,往往有下面几种建议
在单体系统中,对于每个系统调用都会有一个服务程序来保障和运行。 需要一组实用程序来弥补服务程序需要的功能,例如从用户程序中获取数据。 可将各种过程划分为一个三层模型
除了在计算机初启动时所装载的核心操作系统外,许多操作系统还支持额外的扩展。 比如 I/O 设备驱动和文件系统。 这些部件可以按需装载。 在 UNIX 中把它们叫做 ,在 Windows 中则被称为 。 他们的扩展名为 ,在 目录下存在 1000 多个 DLL 文件,所以不要轻易删除 C 盘文件,否则可能就炸了哦。共享库(shared library)动态链接库(Dynamic Link Library,DLL).dllC:\Windows\system32
分层系统使用层来分隔不同的功能单元。 每一层只与该层的上层和下层通信。 每一层都使用下面的层来执行其功能。 层之间的通信通过预定义的固定接口通信。
分层系统是由 和他的学生在荷兰技术学院所开发的 THE 系统。E.W.Dijkstar
把上面单体系统进一步通用化,就变为了一个层次式结构的操作系统,它的上层软件都是在下层软件的基础之上构建的。 该系统分为六层,如下所示
处理器在 0 层运行,当中断发生或定时器到期时,由该层完成进程切换; 在第 0 层之上,系统由一些连续的进程组成,编写这些进程时不用再考虑在单处理器上多进程运行的细节。 内存管理在第 1 层,它分配进程的主存空间。 第 1 层软件保证一旦需要访问某一页面,该页面必定已经在内存中,并且在页面不需要的时候将其移出。
第 2 层处理进程与操作员控制台(即用户)之间的通信。 第 3 层管理 I/O 设备和相关的信息流缓冲区。 第 4 层是用户程序层,用户程序不用考虑进程、内存、控制台或 I/O 设备管理等细节。 系统操作员在第 5 层。
在分层方式中,设计者要确定在哪里划分 的边界。 传统上,所有的层都在内核中,但是这样做没有必要。 事实上,尽可能减少内核态中功能可能是更好的做法。 因为内核中的错误很难处理,一旦内核态中出错误会拖累整个系统。内核-用户
所以,为了实现高可靠性,将操作系统划分成小的、层级之间能够更好定义的模块是很有必要的,只有一个模块 --- 微内核 --- 运行在内核态,其余模块可以作为普通用户进程运行。 由于把每个设备驱动和文件系统分别作为普通用户进程,这些模块中的错误虽然会使这些模块崩溃,但是不会使整个系统死机。
MINIX 3 是微内核的代表作,它的具体结构如下
在内核的外部,系统的构造有三层,它们都在用户态下运行,最底层是设备驱动器。 由于它们都在用户态下运行,所以不能物理的访问 I/O 端口空间,也不能直接发出 I/O 命令。 相反,为了能够对 I/O 设备编程,驱动器构建一个结构,指明哪个参数值写到哪个 I/O 端口,并声称一个内核调用,这样就完成了一次调用过程。
位于用户态的驱动程序上面是层,包含有服务器,它们完成操作系统的多数工作。 由一个或多个文件服务器管理着文件系统,进程管理器创建、销毁和管理进程。 服务器中有一个特殊的服务器称为 ,它的任务就是检查服务器和驱动程序的功能是否正确,一旦检查出来错误,它就会补上去,无需用户干预。 这种方式使得系统具有可恢复性,并具有较高的可靠性。服务器再生服务器(reincarnation server)
微内核中的内核还具有一种 与 分离的思想。 比如系统调度,一个比较简单的调度算法是,对每个进程赋予一个优先级,并让内核执行具有最高优先级的进程。 这里,内核机制就是寻找最高的优先级进程并运行。 而策略(赋予进程优先级)可以在用户态中的进程完成。 在这种模式中,策略和机制是分离的,从而使内核变得更小。机制策略
微内核思想的策略是把进程划分为两类:,每个服务器用来提供服务; ,使用这些服务。 这个模式就是所谓的 模式。服务器客户端客户-服务器
客户-服务器模式会有两种载体,一种情况是一台计算机既是客户又是服务器,在这种方式下,操作系统会有某种优化; 但是普遍情况下是客户端和服务器在不同的机器上,它们通过局域网或广域网连接。
客户通过发送消息与服务器通信,客户端并不需要知道这些消息是在本地机器上处理,还是通过网络被送到远程机器上处理。 对于客户端而言,这两种情形是一样的:都是发送请求并得到回应。
越来越多的系统,包括家里的 PC,都成为客户端,而在某地运行的大型机器则成为服务器。 许多 web 就是以这种方式运行的。 一台 PC 向某个服务器请求一个 Web 页面,服务器把 Web 页面返回给客户端,这就是典型的客服-服务器模式
阅读量:1506
点赞量:0
收藏量:0