操作系统(一)——绪论

文章目录

  • 1.1 什么是操作系统
    • 1.1.1 程序是如何运行的
    • 1.1.2 操作系统
  • 1.2 操作系统运行环境
    • 1.2.1 计算机的基本硬件元素
    • 1.2.2 与操作系统相关的几种主要寄存器
    • 1.2.3 指令的执行
    • 1.2.4 中断
    • 1.2.5 处理机状态及特权指令
  • 1.3 操作系统的形成和发展
    • 1.3.1 操作系统发展的基础
    • 1.3.2 手工操作阶段
    • 1.3.3 批处理系统
    • 1.3.4 分时系统
    • 1.3.5 实时系统
    • 1.3.6 个人操作系统
    • 1.3.7 网络操作系统
    • 1.3.8 分布式操作系统
    • 1.3.9 嵌入式操作系统
    • 1.3.10 操作系统的发展趋势
  • 1.4 操作系统的功能和特性
    • 1.4.1 操作系统的功能
      • 1.4.2 操作系统的基本特征
  • 1.5 操作系统结构
    • 1.5.1 模块组合及层次结构
    • 1.5.2 微内核操作系统
    • 1.5.3 虚拟机结构
  • 1.6 Linux操作系统
    • 1.6.1 Linux发展历程
    • 1.6.2 Linux特点

第一章 绪 论

操作系统(Operating System,简称OS)是每台计算机必须安装的最基本的系统软件,为操纵硬件和程序的执行建立一个更实用的系统平台。本章首先介绍操作系统基本概念及在学习操作系统中涉及到的几个计算机基本概念,接着介绍了操作系统的发展过程,旨在从操作系统的的演变过程中对操作系统的基本概念有进一步的表述。接下来概述了操作系统的基本功能和基本特征以及体系结构

1.1 什么是操作系统

我们把没有装入任何软件的计算机称为裸机,裸机只是提供了计算机系统的物质基础,属于计算机硬件部分,这时的计算机不能上网、不能编程序,也不能帮助我们处理图片。我们要做的第一件事就是装入操作系统,一般而言大多数人都会选择Windows系统或Linux。可以试想一下,如果不装入操作系统,相信即使是顶尖的计算机好手也无法让计算机完成我们所要做的工作,这就是操作系统的作用所在。

1.1.1 程序是如何运行的

当一台计算机被加载了电源就会被启动运行,启动过程中首先会装载操作系统,然后运行用户想要运行的程序,为用户提供服务。那么对于专业的计算机人士来说,很想知道程序是如何在计算机中运行的,以便更好的控制和管理自己的程序。图1-1为程序的执行过程。

操作系统(一)——绪论
如图1-2所示,可把整个系统按功能上划分为四个层次。即硬件、操作系统、系统实用软件和应用软件。这个层次表现为一种单向的服务关系,即外层可以使用内层提供的服务,反之,则不行。在这个层次结构中,包围着系统硬件的一层是操作系统,它是最基本的系统软件,控制和管理着系统的硬件,向上层的实用程序和用户应用程序提供一个屏蔽硬件工作细节的良好使用环境,通过系统核心程序对系统中的资源进行管理,通过这些服务将对所有的硬件的复杂操作隐藏起来,为用户提供一个透明的操作环境。
当一台计算机(或网络)有多个用户时,因为用户间可能相互影响,所以管理和保护存储器、I/O设备以及其它设备的需求随之增加。而且用户往往不仅需要共享硬件,还要共享信息(文件、数据库等),此时操作系统的首要任务是跟踪资源的使用状况、满足资源请求、提高资源利用率,以及协调各程序和用户对资源的使用冲突。
因此,操作系统的作用可以归纳为三点:
1.管理系统资源
众所周知,一个计算机系统资源包括两大类:硬件资源和软件资源。硬件资源通常包括CPU、主存、输入/输出设备;现代计算机中软件资源包括计算机系统中的各类文件。相应地,操作系统的主要功能也正是针对这些资源进行有效地管理。
2.为用户提供一个良好的接口
操作系统是计算机与用户之间的一个接口,用户通过操作系统为用户提供的良好界面,以使用户无需了解许多硬件和系统软件细节,就能方便灵活地使用计算机。
3.应最大限度地发挥系统资源使用效率
由于多个用户共享系统资源,不可避免地会出现多个用户竞争资源,操作系统合理地为用户分配资源,合理地组织计算机的工作流程,提高资源的利用率和系统的吞吐量。
综上所述,我们可以给操作系统下一个定义:
操作系统是直接控制和管理计算机软硬件资源的最基本的系统软件,它可以合理地组织计算机的工作流程,用以方便用户充分、有效地利用这些资源并增强整个计算机的处理能力。

1.2 操作系统运行环境

操作系统是一个运行于硬件之上的系统软件,它和硬件有紧密的联系。为了更好的理解操作系统的工作原理,本节简要回顾一下现代个人计算机中与操作系统相关的基本硬件技术和概念。

1.2.1 计算机的基本硬件元素

构成现代个人计算机的基本硬件元素有以下4种:处理器(CPU)、存储器、输入输出控制与总线、外部设备等,这些基本元素的逻辑关系如图1-3所示。

操作系统(一)——绪论

1.2.4 中断

1.中断的概念
在日常生活中,经常会发生这种情况,当你正在做某件事时,发生了另外一件需要你去处理的紧急事件。这时你只能暂时放下前者,去处理后者,待处理完成后,再继续做原先的事。
计算机机系统中的中断概述与之类似。所谓中断,是指当CPU正在执行某一程序时,发生了异步事件,此时CPU将打断正在执行的程序,转去执行一段处理该事件的有关程序。被打断的程序可以在以后的某个时间继续执行。中断的特点是随机性,发生中断的时间或原因与现行的程序没有逻辑上的关系。这就必须保证现行程序被中断后能在以后继续正确执行。如图1-5 所示中断的执行过程。

操作系统(一)——绪论

每当CPU执行完成一条指令,便立去查询有无中断请求。若无,则继续执行下一条指令。若有,则转入相应的中断处理程序。
系统一旦响应中断,便开始中断处理过程,它的主要工作是保护被中断程序的现场,以便以后可以恢复现场,保证现行程序能得到正确的执行,然后转去执行相应的中断处理子程序,系统为每类中断源都预先安排好了中断处理子程序,它的入口程序地址存于固定的存储单元中。

1.2.5 处理机状态及特权指令

1. 处理机的状态
在计算机系统中有两类程序运行:用户程序和系统程序。用户程序、系统程序执行时有不同的权限。
根据对系统资源和机器指令的使用权限,把处理机执行时的工作状态分为核态和用户态,有的操作系统还将系统程序执行时的机器的状态又分为核态和管态。其权限次序是:核态、管态、用户态。
核态(Kernel Mode): CPU执行操作系统程序时所处的状态。
在此状态下允许CPU使用全部资源和全部指令,其中包括一组特权指令(如涉及外设的I/O、改变处理机状态、修改存储保护的指令),实现对系统资源的分配与管理,为用户提供使用外部设备的服务。
管态比核态的权限低,在此状态下允许使用一些用户态下不能使用的资源,但不能使用修改CPU状态的指令。无核态时,管态执行核态的全部功能。
用户态(User Mode): 用户程序执行时CPU所处的状态。在此状态下禁止使用特权指令,不能直接使用系统资源与改变CPU状态,并且只能访问用户程序所在的存储空间。
当CPU执行用户程序时,CPU处于用户态,在执行的过程中出现了中断(或自陷)时,系统转去处理与中断有关的事件,这时CPU由用户态转换成核态(或管态),处理完中断后,返回断点继续执行用户程序,这时CPU由核态转换成用户态。
2.特权指令集
在核态下操作系统可以使用所有指令,包括一组特权指令:
允许和禁止中断;
在进程之间切换处理机;
存取用于内存保护的寄存器;
执行输入和输出操作;
停止一个中央处理机的工作。
在下列情况下,由用户态转向核态:
用户程序要求操作系统的服务,系统调用;
发生一次中断;
在用户程序中产生了一个错误的状态;
在用户程序中企图执行一条特权指令;
从核态转回用户态用一条指令实现,这条指令也是特权指令。一般情况下是中断返回指令。

1.3 操作系统的形成和发展

为了更好的理解操作系统的基本概念和功能,让我们首先回顾一下操作系统的形成和历史发展过程。
一个事物的产生总是有它的原因和其必然性的,操作系统也不例外。操作系统是伴随着计算机的产生而产生,并且随着计算机技术及其应用的发展而不断发展和完善的。随着计算机硬件经历从电子管时代、晶体管时代、集成电路时代、大规模和超大规模集成电路的发展历程,操作系统也完成了从无到有,从简单到复杂的演变过程。根据硬件结构和应用环境的需要,操作系统的发展经历了以下几个阶段:手工操作阶段、批处理系统、多道程序系统、现代操作系统等。

1.3.1 操作系统发展的基础

1.计算机体系结构的发展
计算机体系结构经历了从简单到复杂、从单机到多机、从集中到分散式的发展,它所依赖的物质基础是微电子技术和超大规模集成技术,也即硬件资源的发展促进了计算机体系结构的发展。
硬件体系结构的发展,给管理各种硬件资源提出了更高的要求,对系统各部分(I/O系统、主机系统、存储子系统、网络子系统)要进行人工管理是不可能的,需要有一个超强功能的软件来组织和统一协调各个部件的工作,这就是操作系统。
2.计算机软件资源的发展
软件的发展有两个重要的方面:一是支持用户进行系统开发,二是增强系统的管理和服务。计算机高级语言及其编译系统的发展打开了应用领域的大门,推动了应用系统的开发,随之而来的各种服务程序、实用程序、工具程序、娱乐程序使计算机系统中的资源概念发生了变化,资源不仅仅指硬件资源,还包括上述各类软件,以及由数据组成的数据库,文档信息等,这就是软件资源,对软件资源的管理和支持,操作系统同样责无旁贷。
3.应用环境与需求的发展
计算机用户的需求随着应用领域的扩大和深入,对计算机系统的要求也在改变。一般来说,希望系统的功能越强越好,系统的接口尽可能简单,速度尽可能快,最好能共享各种系统资源,有较高的可靠性和有效性,并且能按用户的需求重新组构或扩充等。而上述需求仍然在不断的变化,从而从另一方面促进了操作系统的发展。

1.3.2 手工操作阶段

从在20世纪40年代中期,数学家冯·诺依曼(John Von Neuman)提出了程序的概念,先后设计建造了电子管数字计算机,其主要特点是:计算机的主要器件是电子管,以汞延迟线、磁芯、磁环作为主存储器,以磁鼓或磁带作为外部存储设备,计算机总体结构以运行器为中心。这种计算机体积庞大,耗能严重,速度极慢,且价格昂贵。这时没有编程语言,上机完全是手工操作,操作系统更是闻所未闻,编程全部采用机器语言,通过在一些插板上的硬连线来控制其基本功能,计算机主要用于数值计算。
这种手工式处理方式存在着明显的缺点:
(1)上机用户独占全部资源,其他用户只能等待。
(2)手工操作的出错率比较高。
(3)随着计算机运行速度的提高,计算机的高速与慢速的手工操作之间形成矛盾。
直到50年代初期,出现了穿孔卡片,这时就可以不用插板,同时出现了脱机的输入/输出技术。该技术是指在进行程序的调试与执行时,程序员事先把写有程序的卡片装入卡片输入机,在一台外围机的控制下,把卡片上的数据输入到磁带上,当CPU需要时,再从磁带上把程序和数据送进计算机,然后启动计算机运行。类似,当需要输出时,可由CPU直接把数据送到磁带上,然后再在另一台外围机的控制下,将磁带机上的结果通过相应的输出设备输出。由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说它们是在脱离主机的情况下进行的,故称为脱机输入/输出方式;反之,在主机的直接控制下进行的输入/输出的方式称为联机输入/输出方式。

1.3.3 批处理系统

批处理系统是一种早期的大型机用操作系统。不过,现代操作系统大都具有批处理功能。批处理系统的特点是采用脱机服务方式,即用户将控制作业的意图、数据以及程序利用系统提供的作业控制命令书写成作业说明书提交给操作员,操作员将其输入外存,由OS控制、调度各作业的运行,最后输出结果。它是一种非人工的干预方式。有单道和多道批处理系统。
1.单道批处理系统
五十年代后期,推出了晶体管计算机,计算机的运行速度得到了很大提高,外部存储设备除磁鼓、磁带外,引入了磁盘。这个时期的计算机被称为第二代计算机。在此期间,程序和编程语言得到较大的发展。这个时期,计算机安装在专门的机房,有专人操作。然而,慢速的手工操作和高速的计算机运行之间的矛盾越来越严重,变得让人无法忍受。另外计算机硬件仍然十分昂贵,需要最大限度的利用机器资源。人们为了提高利用率,减少机时的浪费,于是出现了批处理操作系统的概念。
单道批处理系统的中心思想是使用一个称作监督程序的软件,通过使用这个软件,用户不再直接访问机器,而是把程序和数据以及用户对程序的控制意图写在卡片或磁带中,以作业的形式提交给计算机操作员,由操作员把这些作业按顺序组织成一批,并将整批作业放在输入设备上,供监控程序使用。首先,监控程序将磁带上的第一个作业装入内存,该作业完成处理后返回到监控程序,然后,监控程序自动加载下一个作业。这样在监控程序的控制下,系统可以连续运行,一直到这批作业处理完毕。这里的监控程序也就是操作系统的雏形。由于系统对作业的处理是成批进行的,且在内存中只能保持一道作业运行,故称之为单道批处理系统。
这种监督程序可以使作业间自动转换,减少了作业交接时间的浪费,但是它还没有真正形成对作业的控制和管理。如果一个用户的计算机作业非常庞大,在它运行期间,它将独占计算机系统所有资源,在它运行完成之前,任何其它用户的作业,哪怕是很短的作业也只能等待。
单道批处理系统提高了CPU的利用率,减少了操作员手工操作的出错率,比起人工操作有了很大的进步,单道批处理系统具有以下几个特征:
(1)自动性。如果情况顺利,磁带上的作业能够自动依次运行,无需人工干预。
(2)顺序性。磁带上的各道作业按照一定的顺序进入内存。
(3)单道性。监督程序每次只从磁带上调入一道作业进入内存运行,内存中仅有一道作业运行。
2.多道程序系统
进入60年代初期,计算机的应用形成两个领域,即面向科学与工程的复杂计算和面向字符处理的商务应用。为此,出现了通用计算机。这个时期被称为第三代计算机。其主要特点是:以中、小规模集成电路作为逻辑器件,主存储器除磁芯外,开始使用半导体存储器,外存储设备则以磁盘为主。著名的IBM Syetem360计算机则是一个代表,它是第一台采用集成电路的计算机,比第二代计算机有更好的性能价格比,也是一台大型通用计算机。通用计算机要达到通用性,必须功能强大,能够满足环境应用要求,处理和适应各种设备环境,才能发挥极大效能。所以必须有一个强有力的、功能复杂的监控程序来监管和协调系统的所有操作,安排和调度用户所提交的作业,分配系统所共用的各种软件和硬件资源。初始的监督程序不能完成这些功能,继而进一步发展成为一个强功能的程序集合,即现在所说的操作系统。
在IBMSystem 360上运行的OS/360操作系统被认为是真正的操作系统。因为它真正实现了资源管理,建立了资源管理的机制,直到现在,许多操作系统中的技术和结构还多少留有它的影子。尽管0S/360存在较大的隐患和不足,但它引入了—种新技术-多道程序技术,即在内存中同时存放多个程序使它们同时处于运行状态。在单处理机系统中,多道程序运行的特点是:
(1) 多道:计算机内存中同时存放多道相互独立的程序。
(2) 宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了运行,但都未运行完毕。
(3) 微观上串行:实际上,各道程序轮流使用CPU,交替执行。
图1-7(a)是单道程序运行过程,其中t2-t3和t6-t7两段时间内处理机在等待。图1-7(b)是两道程序运行过程(假设A、B程序请求的设备不同),其中t4-t5和t8-t9两段时间内处理机在等待,但是t2-t3和t6-t7两段时间内用户程序和外设在并行工作。显然,在多道程序系统中,CPU和外设之间可以并行运行,大大提高了CPU的利用率,从而提高了系统资源的利用率,这正是引入多道程序的目的。

操作系统(一)——绪论
由题可知,三道程序顺序执行完成需花费260ms。如果是多道程序系统,三道程序同时驻留内存,完成三道程序共需180ms。三道程序在执行过程中形成了一种重叠的运行方式,完成三道程序的执行,多道比单道节省了80ms。
3. 多道批处理系统
单道批处理系统克服了手工操作的缺点,实现了作业的自动过渡,但在单道批处理系统中,同一时刻内存中仅有一道作业运行。就有可能出现两种情况:对于以计算为主的作业,输入输出量少,外围设备空闲;然而对于以输入输出为主的作业,又会造成主机空闲。这样计算机资源的利用效率仍然不高。为了进一步提高资源的利用率,在60年代中期引入了多道程序设计技术,由此形成了多道批处理系统。
多道批处理系统具有以下几个特征:
(1)多道性。计算机内存中同时存放几道相互独立的程序。
(2)无序性。多个作业完成的先后顺序与他们进入内存的顺序并不是严格对应的。后进入内存的程序有可能比先进入内存的程序先完成。
(3)调度性。作业从提交给系统开始到完成需要两级调度,作业调度和进程调度。
随着多道批处理系统的出现,操作系统的发展更趋于完善了,如今它仍是三大基本操作类型之一。这也说明它具有其他类型的操作系统所不具备的优点:
(1)资源利用率高。内存中多道程序可以共享资源。
(2)系统吞吐量大。系统吞吐量是指系统在单位时间内所完成的总工作量。
由于在批处理操作系统中,CPU和其他资源能够保持忙碌状态,只有当作业完成或出错时才进行切换,从而减小了系统开销。
但是批处理系统中无交互能力。在批处理系统中,用户以脱机方式使用计算机,即用户在提交作业以后到作业完成这个过程中,无法进行干预,这样对于修改和调试程序存在很大障碍。
第二代的计算机主要用于科学计算,程序大多用FORTRAN语言和汇编语言编写。典型的操作系统是FMS(FORTRAN Monitor System)和IBM为7094机配备的IBSYS操作系统。

1.3.4 分时系统

多道程序系统解决了资源利用率的问题,但随着计算机的普遍使用,早期的批处理暴露了它的缺陷,如一个作业从提交到取回运行结果往往要很长时间。对于程序员更不能忍受的是,一个误用的逗号就会导致编译失败,程序员必须重新提交,重新等待,浪费很长的时间。同时越来越多的用户希望在使用计算机的过程中能够进行非常方便的人机交互,也就是说可以在程序运行时直接对计算机进行控制。除此之外,很多用户还十分怀念手工操作阶段自己可以独占计算机的良好感觉。用什么办法能使得既能保证计算机效率,又能方便用户使用呢20世纪60年代中期,随着键盘、显示器、和显示终端等交互设备的问世,以及计算机的小型和微型化,使用户可以直接与机器打交道,也使得这种愿望成为可能。第一个分时系统CTSS出现了,它是由麻省理工学院开发的。在分时系统中,一台计算机可以同时连接多个带有显示器和键盘的用户终端,同时允许用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。由于调试程序的用户常常只发出简短的命令,而很少执行费时长的命令,所以计算机能够为一些用户提供快速的交互式服务,同时在CPU空闲时还能运行后台的大作业。比较著名的多用户分时系统是UNIX系统。
分时系统采用了分时技术,就是把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各个联机程序使用。若某个程序在分配给它的时间片内不能完成其任务,则该程序暂时中断,把处理机让给另一程序使用,等待下一轮时再继续运行。由于计算机速度很快,程序运行轮转的也很快,每个用户都感觉是自己独占了一台计算机,同时又可以通过终端向系统发出各种命令,来控制程序的运行。
分时系统与批处理系统相比,具有完全不同的特点:
(1)交互性。用户可以通过终端方便的进行人机对话,可以请求系统提供各种服务,特别对于远程终端用户,可以直接在自己的终端上提交、调试和运行程序。
(2)多用户同时性。允许在一台主机上连接多台终端,多个用户通过轮流运行自己的时间片来共享计算机资源。
(3)独立性。每个用户通过自己的终端独立使用计算机,都感觉自己一个人独占计算机资源。
(4)及时性:系统能及时响应用户的请求,这时的及时是指用户的请求能在用户能接受的时间范围内得到响应,这一范围通常为2~3秒。
分时和多道程序设计引发了操作系统中的许多问题。 如果存储器中有多个程序,必须保护它们不互相干扰,例如不会修改别人的数据。对多个交互用户,必须对文件系统进行保护,只有授权用户才可以访问某个特定的文件。还必须处理资源(如打印机)争用的问题。这些问题和其他问题以及可能的解决方法,在本书的后面部分会一一阐述。

1.3.5 实时系统

分时系统的出现解决了用户方便实用的需求,然而用户的需求是不断变化的。随着计算机的应用范围的扩大,计算机越来越多地被用于生产过程的控制和武器系统的实时控制。这两种控制系统都要求能实时采集现场数据,并对所采集的数据进行及时处理,进而自动控制相应的执行机构,以保证正常执行。除此之外,人们还经常需要对外来的实时信息进行控制,比如说飞机订票系统和银行业务系统。无论是生产过程的实时控制还是外来信息的实时控制,都要求系统能够在允许的时间范围内作出响应,并且对系统的可靠性要求也比较高,这样就导致了实时系统的出现。
实时就时“立即”或“及时”,具体的含义是指系统能够及时响应随机发生的外部事件,并以足够快的速度完成对事件的处理。实时系统的应用环境是需要对外部事件及时响应并处理的那些场合。按使用场合和作用,可以分为两类:
(1)实时控制系统:把计算机用于对飞行器,导弹发射等军事方面的自动控制,这时计算机要把测量系统测得的数据及时加工,并及时输出结果对目标进行跟踪或向操纵人员显示结果。
它主要的特点是:与被控制过程的速度相比,其反应速度足够快,工作安全可靠,容错机制比较完善,即使系统中软硬件发生故障,系统也能安全运行,操作简便。
(2)实时信息处理系统:把计算机用于预订飞机票,查询航班、航线、票价等事宜时,或把计算机用于银行系统、情报检索系统时,都要求计算机能对终端发来的服务及时予以正确的回答。
实时系统的主要特点是即时响应和高可靠性。实时系统的响应时间一般在秒级、毫秒级甚至更小。因为在一些关键系统中(如飞机的自动驾驶系统),信息处理的延误往往会带来不堪设想的后果。而可靠性在实时系统中比在非实时系统中更重要。非实时系统中的暂时故障可以简单地通过重新启动系统来解决,但实时系统是实时地响应和控制事件,性能的损失或降低都可能产生巨大的灾难,从资金损失到毁坏主要设备甚至危及生命。因此,在实时系统中,往往都采用了多级容错措施来保障系统的安全性及数据的安全性。
另外,用户控制在实时操作系统中通常比在普通操作系统中更广泛。在典型的非实时操作系统中,用户或者对操作系统的调度功能没有任何控制,或者仅提供了概括性的指导,诸如把用户分成多个优先级组。但在实时系统中,允许用户细粒度地控制任务优先级是必不可少的。用户应该能够区分硬任务和软任务,并且在每一类中确定相对优先级。实时系统还允许用户指定一些特性,例如使用页面调度还是进程交换、哪一个进程必须常驻主存、使用何种磁盘传输算法、不同优先级的进程各有哪些权限等。
实时系统其他的例子还包括机器人、空中交通管制,下一代系统还将包括自动驾驶汽车、具有弹性关节的机器人控制器、智能化生产中的系统查找、空间站和海底勘探等。
通常把批处理系统、实时系统和分时系统称为操作系统的三种基本类型。一些计算机系统兼有它们三者或其中二者的功能。
表1-1从多路性、独立性、及时性、交互性及可靠性几个方面列出了批处理系统、实时系统和分时系统的不同之处。

操作系统(一)——绪论

1.5.2 微内核操作系统

传统上,所有的操作系统代码都在内核中,这会导致内核中一个错误就会拖累整个系统。例如,由于所有的设备驱动都在内核中,一个有故障的音频驱动就会造成事个系统的停机。相反,如果把整个设备驱动和文件系统分别作为普通用户进程,这模块中的错误虽然会使这些模块崩溃,但是不会使得整个系统死机。为了实现系统的可靠性,将操作系统中能实现最基本核心功能的部分放入内核中,只有这个微小有内核运行在内核态上。由于操作系统核心常驻内存,而微内核结构精简了操作系统的核心功能,内核规模比较小,一些功能都移到了外存上,所以微内核结构十分适合资源相对有限嵌入式的专用系统。微内核操作系统(Microkernel Operating System)结构是多线程的,能支持多处理机运行的系统,故非常适用于分布式系统环境。当前比较流行的、,几乎全部都采用了微内核结构,如 MACH,MachOS, Windows等操作系统。

  1. 微内核操作系统
    如图1-11,在微内核OS中是将很多通用操作的功能从内核中分离出来(如文件系统,设备驱动,网络协议栈等),只保留最基本的内容放入微内核中,另外绝大部分放在微内核外的各种服务器中来实现。微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,地址空间和进程间通信等。
    (1) 进程(线程)管理
    大多数的微内核OS,对于进程管理功能的实现,都采用“机制与策略分离”的原理。例如,为实现进程(线程)调度功能,须在进程管理中设置一个或多个进程(线程)优先级队列;能将指定优先级进程(线程)从所在队列中取出,并将其投入执行。由于这一部分属于调度功能的机制部分,应将它放入微内核中。应如何确定每类用户(进程)的优先级,以及应如何修改它们的优先级等,都属于策略问题,可将它们放入微内核外的进程(线程)管理服务器中。
    (2)低级存储器管理
    通常在微内核中,只配置最基本的低级存储器管理机制。如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,这一部分是依赖于机器的,因此放入微内核。而实现虚拟存储器管理的策略,则包含应采取何种页面置换算法,采用何种内存分配与回收策略等,将放在微内核外的存储器管理服务器中去实现。

操作系统(一)——绪论
(3) 中断和陷入处理
大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理。此时微内核的主要功能,是捕获所发生的中断和陷入事件,并进行相应的前期处理。如进行中断现场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息后,把它发送给相关的服务器。由服务器根据中断或陷入的类型,调用相应的处理程序来进行后期处理。
2. 微内核操作系统优点
(1) 提高了可扩展性
由于微内核OS的许多功能是由相对独立的服务器软件来实现的,当开发了新的硬件和软件时,微内核OS只须在相应的服务器中增加新的功能,或再增加一个专门的服务器。与此同时,也必然改善系统的灵活性,不仅可在操作系统中增加新的功能,还可修改原有功能,以及删除已过时的功能,以形成一个更为精干有效的操作系统。
(2)增强了可靠性
这一方面是由于微内核是出于精心设计和严格测试的,容易保证其正确性;另一方面是它提供了规范而精简的应用程序接口(API),为微内核外部的程序编制高质量的代码创造了条件。此外,由于所有服务器都是运行在用户态,服务器与服务器之间采用的是消息传递通信机制,因此,当某个服务器出现错误时,不会影响内核,也不会影响其它服务器。
(3)增强了可移植性
随着硬件的快速发展,出现了各种各样的硬件平台,作为一个好的操作系统,必须具备可移植性,使其能较容易地运行在不同的计算机硬件平台上。在微内核结构的操作系统中,所有与特定CPU和I/O设备硬件有关的代码,均放在内核和内核下面的硬件隐藏层中,而操作系统其它绝大部分(即各种服务器)均与硬件平台无关,因而,把操作系统移植到另一个计算机硬件平台上所需作的修改是比较小的。
(4) 提供了对分布式系统的支持
由于在微内核OS中,客户和服务器之间以及服务器和服务器之间的通信,是采用消息传递通信机制进行的,致使微内核OS能很好地支持分布式系统和网络系统。事实上,只要在分布式系统中赋予所有进程和服务器惟一的标识符,在微内核中再配置一张系统映射表(即进程和服务器的标识符与它们所驻留的机器之间的对应表),在进行客户与服务器通信时,只需在所发送的消息中标上发送进程和接收进程的标识符,微内核便可利用系统映射表,将消息发往目标,而无论目标是驻留在哪台机器上。
(5) 融入了面向对象技术
在设计微内核OS时,采用了面向对象的技术,其中的“封装”,“继承”,“对象类”和“多态性”,以及在对象之间采用消息传递机制等,都十分有利于提高系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,而且还能显著地减少开发系统所付出的开销。
3. 微内核操作系统存在的问题
应当指出,在微内核OS中,由于采用了非常小的内核,以及客户/服务器模式和消息传递机制,这些虽给微内核OS带来了许多优点,但由此也使微内核OS存在着潜在的缺点。其中最主要的是,较之早期OS,微内核OS的运行效率有所降低。
效率降低的最主要的原因是,在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式及上下文的多次切换。然而,在早期的OS中,用户进程在请求取得OS服务时,一般只需进行两次上下文的切换:一次是在执行系统调用后,由用户态转向系统态时;另一次是在系统完成用户请求的服务后,由系统态返回用户态时。在微内核OS中,由于客户和服务器及服务器和服务器之间的通信,都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二次是发生在由内核把客户的请求消息发往服务器时;第三次是当服务器完成客户请求后,把响应消息发送到内核时;第四次是在内核将响应消息发送给客户时。
实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求,而需要其它服务器的帮助时,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行八次上下文的切换。
为了改善运行效率,可以重新把一些常用的操作系统基本功能

来源:诶你爱我吗

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年2月8日
下一篇 2020年2月8日

相关推荐