操作系统结构(二)
本节主要介绍操作系统结构和虚拟机。
操作系统结构
A、简单结构
两个样例:
(1)、MS-DOS
利用最小的空间提供更多的功能,没有仔细划分模块,没有很好地区分接口和功能层次。
(2)、UNIX
UNIX系统由内核和系统程序两个独立部分组成。内核进一步分为一系列接口和驱动程序。物理硬件之上和系统调用接口之下的所有部分作为内核,内核通过系统调用以提供文件系统、CPU调用、内存管理和其他操作系统功能。
B、分层方法
系统模块化可采用分层法,即操作系统分成若干层(级)。最底层(层0)为硬件,最高层(层N)为用户接口。
分层法的主要优点在于构造和调试的简单化。每层只能利用较低层的功能和服务。这种方法简化了调试和系统验证。每层都是利用较低层提供的功能来实现的。该层不必知道如何实现这些功能,它只需要知道这些操作能做什么。因此,每层为较高层隐藏了一定的数据结构、操作和硬件的存在。
分层法的主要困难涉及对层的详细定义以及效率问题。
C、微内核
微内核的概念是由Richard Rashid在卡内基梅隆(Carnegie-Mellon)大学开发Mach操作系统时提出的,目标是建立一个基于消息传送(message passing)机制的最小内核,以便在此基础上建造对其它操作系统的模拟层来模拟其它操作系统的特性。以Mach微内核为例,该微内核提供了进程管理、线程管理、内存管理、通信和I/O服务的功能。在Mach微内核基础上,建立了一些运行在用户态进程中的操作系统模拟程序,用来模拟4.3 BSD、System V、HP/UX、MS-DOS等操作系统的特性。这些模拟程序使得Mach操作系统能够支持许多运行于其它操作系统上的应用程序,如图1所示。所以微内核设计带来的一个重要优点是大大提高了操作系统的兼容性(compatibility)——使得基于微内核的操作系统能够模拟其它操作系统的特性,从而支持许多运行于其它操作系统上的运用程序。
微内核将所有非基本部分从内核中移走,并将它们实现为系统程序或用户程序。微内核通常包括最小的进程和内存管理以及通信功能。微内核的主要功能是使客户程序和运行在用户空间的各种服务进行通信。通信以消息传递形式提供。对于消息传递模型,通信进程通过彼此之间交换消息来交换信息。直接或间接地通过一个共同的邮箱,消息可以在进程之间得到交换。在通信前,必须先打开连接。必须知道另一个通信实体的名称,它可能是同一CPU的另一个进程,也可能是通过与网络相连的另一计算机上的进程。每个进程也有进程名,它通常转换成标识符以便操作系统引用。进程建立通信后,通过read message和write message系统调用来交换消息。Close connection调用将终止通信。在消息传递交换模型中,如果客户程序访问一个文件,那么它必须与文件服务器进行交互。客户程序和服务器绝不会直接交互,而是通过内核的消息传递来通信。
微内核的好处之一在于便于扩充操作系统。同时,微内核也能提供更好的安全性和可靠性。如果一个服务器出错,那么操作系统的其他部分不会受影响。但是,微内核必须忍受由于系统功能总开销的增加而导致系统性能的下降。
D、模块(宏内核)
面向对象编程技术生成模块化内核。这里,内核有一组核心部件,以及在启动或运行时对附加服务的动态链接。这种方法使用动态加载模块,并在现代的UNIX,如Solaris、Linux和Max OSX中很常见。
例如,Solaris操作系统结构被组织为7个可加载的内核模块围绕一个核心内核构成:
*调度类;
*文件系统;
*可加载的系统调用;
*可执行格式;
*Streams模块;
*杂项模块;
*设备和总线驱动。
模块化的设计允许内核提供核心服务,也能动态地实现特定的功能。例如,特定的硬件的设备和总线驱动程序可以加载给内核,而对各种文件系统的支持也可作为可加载的模块加入其中。所得到的结果就好像是一个分层系统,它的每个内核部分都有被定义和保护的接口。但它比分层系统更为灵活,它的任一模块都能调用任何其他模块。进一步讲,这种方法类似于微内核方法,核心模块只有核心功能以及其他模块加载和通信的相关信息,但这种方法更为高效,因为模块不需要调用消息传递来通信。
苹果的Mac OS X操作系统采用一种混合结构。Mac OS X采用分层技术构建操作系统,其中一层包括Mach微内核。Max OS X结构如图。
上层包括应用环境和一组向应用提供的图形接口的服务。下层是内核环境,主要包括Mach微内核和BSD内核。Mach提供内存管理,支持远端程序调用(Remote Program Call, RPC)和进程间通信(Inter-Process Communication, IPC)工具,包括消息传递和线程调度。而BSD提供了BSD命令行接口,支持网络和文件系统,以及POSIX API的实现,包括PThread。除了Mach和BSD外,内核环境为设备驱动的开发和动态加载模块提供一个I/O工具,应用和工具可直接使用Mach或BSD方法。
E、虚拟机
维基百科上对虚拟机的定义是:A virtual machine (VM) is a software-based emulation of a computer. Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer. 即虚拟机基于软件的计算机模拟,它运行在计算机硬件上,具有真实计算机的功能。亦虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
虚拟机的基本思想是单个计算机(CPU、内存、磁盘、网卡)的硬件抽象为几个不同的执行部件,从而造成一种“幻觉”,仿佛每个独立的执行环境都在自己的计算机上运行一样。
(A)、实现:
虚拟机方法的主要困难与磁盘系统有关,当物理机器不能为每个虚拟机分配一个磁盘驱动器时,虚拟机软件提供虚拟磁盘机制,虚拟磁盘除了大小之外,在其他方面都相同。系统通过在物理磁盘上为虚拟磁盘分配所需要的磁道数来实现小型磁盘。
另外,对于虚拟机,虚拟机软件由于本身运行在用户模式,故提供了虚拟用户模式和虚拟内核模式。这两种模式都运行在物理用户模式。在真正机器上引起从用户模式到内核模式转换的动作,也必须在虚拟机上引起从虚拟用户模式到虚拟内核模式的转换。
(B)、优点:
*每个虚拟机完全独立于其他虚拟机,没有安全问题,但同时也没有直接资源共享。提供共享的实现方法,一是通过共享小型磁盘来共享文件,而是通过定义虚拟机网络,虚拟机间通过虚拟通信网络来传递消息,该虚拟通信网络按照物理通信网络来模拟,但是通过软件实现。
*虚拟机是用于研究和开发操作系统的好工具。
(C)、实例:
*VMWare
*Java虚拟机
JVM为Java程序抽象了底层系统,提供平台无关接口。
F、服务器-客户端模式
客户端/服务器模型是所有网络应用的基础。客户端/服务器分别指参与一次通信的两个应用实体,客户端方主动地发起通信请求,服务器方被动地等待通信的建立。
优点:
最后更新:2017-04-03 05:39:25