操作系统的体系结构
操作系统本身如何组织,这是操作系统体系结构要解决的问题。不同体系结构的操作系统,又具有不同的实现以及特点。从操作系统的发展来看,常见的结构主要有以下四种。
整体结构
操作系统实质上是没有结构的,整个操作系统由若干的具有一定独立功能的过程组成,过程和过程之间可以根据需要按事先定义的接口相互进行调用。这种结构虽然简单,但不利于操作系统的功能扩充。当用户程序请求系统服务时,进行系统调用,这时系统工作状态从用户转到核心态,接着核心态根据系统调用的参数决定调用的系统服务过程。这个系统服务过程有可能还需要调用多个其他的系统公用例程,从而完成用户请求的服务。
分层结构
操作系统按一定的功能模块分层组织,最高层为用户程序,最低层为处理机调度和实现多道程序,并且下一层是相邻上一层的基础,层与层之间有严格的接口定义,旨在相邻层之间发生交互。这样组织的好处在于有利于操作系统的设计与实现,但困难之处在于每一层的划分不易,并且效率不如其他的结构高,由于相邻层之间有很多的交互,安全性很难得到保证。当用户程序进行系统调用时,如果请求的是较低层的服务,则这个系统调用会从最高层往下逐层进行相应的调用,每经过一层,参数就会被重新封装,知道能够完成相应功能的那层调用,最终实现系统服务。
虚拟机结构
虚拟机结构更加倾向于是一种技术——虚拟机技术。它以运行在裸机上的核心软件(虚拟机监控软件/或某一种操作系统)为基础,向上提供虚拟机的功能,每个虚拟机都像是裸机硬件的复制。在不同的虚拟机上可以安装不同的操作系统,这样,系统有个更好的兼容性及安全性。例如,在网络应用中,只要在机器上安装了Java 虚拟机,就可以非常方便的运行Java的字节代码。当应用程序在虚拟机上运行并进行系统调用时,现有虚拟机的用户状态转入虚拟机核心态,再进一步向虚拟机监控软件发出正常的系统调用加以执行,从而完成用户程序的服务请求。
微内核结构
基于网络的一种内核结构,适用于分布式操作系统,而在单个计算机中,也可称为微内核结构。这种结构的思想是尽量减少运行于核心态下的内核,将操作系统的一些传统功能作为服务器进程在用户态下运行,内核更多的是多个服务器进程间以及用户进程与服务器之间进行消息传递。这样的系统具有更好的可扩展性、可移植性、可靠性以及灵活性。由于消息传递需要时间,所以相对于单内核系统而言速度会慢一些。当用户进行系统调用请求系统服务时,用户进行转入核心态运行。此时,内核将用户的请求与以消息的形式发送给相应的服务器进程,并将服务器进程返回的消息以消息的形式传送给用户进程。