操作系统结构(二)

本节主要介绍操作系统结构和虚拟机。

操作系统结构

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、服务器-客户端模式

客户端/服务器模型是所有网络应用的基础。客户端/服务器分别指参与一次通信的两个应用实体,客户端方主动地发起通信请求,服务器方被动地等待通信的建立。

优点:

1、简化了执行体。可以在用户态服务器中构造各种各样的API,而不会有任何冲突或重复;可以很容易地加入新的API。

2、提高了可靠性。每个新的服务运行在内核之外,有自己的存储空间,这样可以免受其他服务的干扰,单个客户的失败不会使操作系统的其余部分崩溃。

3、为应用程序与服务间通过RPC调用进行通信提供了一致的方法,且没有限制其灵活性。函数桩(function stub)把消息传递进程对客户应用程序隐藏起来,函数桩是为了包装RPC调用的一小段代码。当通过一个API访问一个环境子系统或服务时,位于客户端应用程序中的函数桩把调用参数包作为一个消息发送给一个服务器子系统执行。

4、为分布式计算提供了适当的基础。典型地,分布式计算使用客户/服务器模块,通过分布的客户和服务器模块以及客户与服务器间的消息交换实现远程过程调用。对于Windows,本地服务器可以代表本地客户应用程序给远程服务器传递一条消息,客户不需要知道请求是在本地还是在远程得到服务的。实际上,一条请求是在本地还是远程得到服务,可以基于当前负载条件和动态配置的变化而动态变化。

时间: 2024-08-24 06:22:55

操作系统结构(二)的相关文章

操作系统概念学习笔记 7 操作系统结构

操作系统概念学习笔记 7 操作系统结构 系统设计 设计目标 系统设计的第一个问题是定义系统的目标与规格.在最高层,系统设计受到硬件选择和系统类型的影响. 需求可以分为两个基本类:用户目标和系统目标 策略和机制 操作系统设计的重要原理是策略(policy)和机制(mechanism)的区别.机制决定如何做,策略决定做什么.策略可能会随着时间或位置而有所改变,每次改变都可能需要底层机制的改变.系统更需要通用机制.这样策略的改变只需要重定义一些系统参数. 操作系统重要功能的改善可能是由于更好的数据结构

MemCached的PHP客户端操作类二

cache|客户端 MemCached的PHP客户端操作类二 <?php /*  * MemCached PHP client  * Copyright (c) 2003  * Ryan Gilfether <hotrodder@rocketmail.com>  * http://www.gilfether.com  *  * Originally translated from Brad Fitzpatrick's <brad@danga.com> MemCached Pe

FFMPEG内存操作(二)从内存中读取数及数据格式的转换

相关博客列表:     FFMPEG内存操作(一) avio_reading.c 回调读取数据到内存解析      FFMPEG内存操作(二)从内存中读取数及数据格式的转换      FFmpeg内存操作(三)内存转码器     在雷神的<最简单的基于FFmpeg的内存读写例子(内存播放器)>中,它是设计回调函数从输入文件中读取数据.与FFMPEG 官方给出的avio_reading.c不同的是,雷神给的例子是当需要数据的时候,回调函数才去从输入文件读取数据,而avio_reading.c 则

GIS基础软件及操作(十二)

原文 GIS基础软件及操作(十二) 练习十二. ArcMap制图-地图版面设计 设置地图符号-各种渲染方式的使用 使用ArcMap Layout(布局)界面制作专题地图 将各种地图元素添加到地图版面中 提示:在以下练习过程中,请时常注意保存地图文档 渲染图层要素-唯一值符号 在ArcMap中新建地图文档,加载 [空间分析] 扩展模块及[空间分析工具栏] 加载图层:[省会城市.地级市驻地.主要公路.国界线.省级行政区.Hillshade_10k],将地图文档保存到Ex12下,名称为:ChinaMa

操作系统概念学习笔记 4 操作系统结构和操作简述

操作系统概念学习笔记 4 操作系统结构和操作简述 操作系统结构 多道程序设计 多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法.也就是说,计算机内存中可以同时存放多道(两个以上相互独立的)程序,它们都处于开始和结束之间.只要有一个程序或任务可以执行,cpu就不会空闲. 但是不能提供与计算机系统直接交互的能力. 分时系统(多任务) 分时系统(多任务)是多道程序设计的延伸,在分时系统中,虽然cpu还是通过在作业之间的切换来执行多个作业,但是由于切换频率很高,用户可以

对三维实体进行曲面剖切操作,获得二维三视图代码

问题描述 对三维实体进行曲面剖切操作,获得二维三视图代码

CYQ.Data 轻量数据层之路 应用示例三 Aop切入留言系统--操作日志(二十七)

前言: 在8月份时,那时曾用CYQ.Data 1.2版本演示过一个完整的示例,留言版:详见:CYQ.Data 轻量数据层之路 应用示例一 留言版(四) 本篇将使用2.N系列版本,在不改动原来留言版系统一行代码的情况下,实现其数据库操作日志功能. 最新版本下载见:CYQ.Data 轻量数据层之路 bug反馈.优化建议.最新框架下载     正文步骤:   一:建表 1:增加一个日志操作表[ActionLogs],这个少不了,表结构如下: 2:创建表的数据库脚本如下: 创建ActionLogs表  

java中的Io(input与output)操作总结(二)_java

文件的操作 这一节我们来讨论关于文件自身的操作 不浪费唾沫了,用代码说话-- 实例1:创建文件对象 复制代码 代码如下: import java.io.File; public class Demo { public static void main(String[] args) { //创建要操作的文件路径和名称 //其中,File.separator表示系统相关的分隔符,Linux下为:/ Windows下为:\\ //path在此程序里面代表父目录,不包含子文件 String path =

操作系统结构(一)

研究一个操作系统,或者说设计一个操作系统,需要从多个角度去了解操作系统.第一是通过考察所提供的服务(用户角度):第二是通过考察为用户和程序员提供的接口(程序员角度):第三是研究系统的各个组成部分及其相互关系(操作系统设计人员). 主要内容: *操作系统为用户.进程和其他系统提供的服务: *组织操作系统的不同方法:  在本节介绍操作系统提供的服务和操作系统的设计和实现. 1.操作系统服务 操作系统提供一个环境以执行程序.它向程序和这些程序的用户提供服务.这些服务帮助用户更高效地完成任务,同时确保系