【操做系统】总结一

1、操做系统概述

1.1 操做系统的基本概念

在信息化时代,软件被称为计算机系统的灵魂。而做为软件核心的操做系统,已经与现代计算机系统密不可分、融为一体。计算机系统自下而上可粗分为四个部分:硬件、操做系 统、应用程序和用户(这里的划分与计算机组成原理的分层不一样)。操做系统管理各类计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介。

硬件,如中央处理器、内存、输入/输出设备等,提供了基本的计算资源。应用程序, 如字处理程序、电子制表软件、编译器、网络浏览器等,规定了按何种方式使用这些资源来解决用户的计算问题。操做系统控制和协调各用户的应用程序对硬件的分配与使用。

在计算机系统的运行过程当中,操做系统提供了正确使用这些资源的方法。

综上所述,操做系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工做和资源的分配,以提供给用户和其余软件方便的接口和环境的程序集合。计算机操做系统是随着计算机研究和应用的发展逐步造成并发展起来的,它是计算机系统中最基本的系统软件。
html

1.2 操做系统的特征

操做系统是一种系统软件,但与其余的系统软件和应用软件有很大的不一样,它有本身的特殊性即基本特征。操做系统的基本特征包括并发、共享、虚拟和异步。这些概念对理解和掌握操做系统的核心相当重要,将一直贯穿于各个章节中。程序员

并发(Concurrence)

并发是指两个或多个事件在同一时间间隔内发生。操做系统的并发性是指计算机系统中同时存在多个运行着的程序,所以它具备处理和调度多个程序同时执行的能力。在操做系统 中,引入进程的目的是使程序能并发执行

注意同一时间间隔(并发)和同一时刻(并行)的区别。在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每一时刻,单处理机环境下实际仅能有一道程序执行,故微观上这些程序仍是在分时地交替执行橾做系统的并发性是经过分时得以实现的。

注意,并行性是指系统具备能够同时进行运算或操做的特性,在同一时刻完成两种或两种以上的工做。并行性须要有相关硬件的支持,如多流水线或多处理机硬件环境。
编程

共享(Sharing)

资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可分为如下两种资源共享方式:
小程序

1) 互斥共享方式

系统中的某些资源,如打印机、磁带机,虽然它们能够提供给多个进程使用,但为使所打印或记录的结果不致形成混淆,应规定在一段时间内只容许一个进程访问该资源。

为此,当进程A访问某资源时,必须先提出请求,若是此时该资源空闲,系统即可将之分配给进程A使用,此后若再有其余进程也要访问该资源时(只要A未用完)则必须等待。仅当进程A访问完并释放该资源后,才容许另外一进程对该资源进行访问。咱们把这种资源共享方式称为互斥式共享,而把在一段时间内只容许一个进程访问的资源称为临界资源或独占资源。计算机系统中的大多数物理设备,以及某些软件中所用的栈、变量和表格,都属于临界资源,它们都要求被互斥地共享。
浏览器

2) 同时访问方式

系统中还有另外一类资源,容许在一段时间内由多个进程“同时”对它们进行访问。这里所谓的“同时”每每是宏观上的,而在微观上,这些进程多是交替地对该资源进行访问即 “分时共享”。典型的可供多个进程“同时”访问的资源是磁盘设备,一些用重入码编写的文件也能够被“同时”共享,即若干个用户同时访问该文件。

并发和共享是操做系统两个最基本的特征,这二者之间又是互为存在条件的:
安全

  • 资源共享是以程序的并发为条件的,若系统不容许程序并发执行,则天然不存在资源共享问题;
  • 若系统不能对资源共享实施有效的管理,也必将影响到程序的并发执行,甚至根本没法并发执行。

虛拟(Virtual)

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实的,即实际存在的;然后者是虚的,是用户感受上的事物。用于实现虚拟的技术,称为虚拟技术。在操做系统中利用了多种虚拟技术,分别用来实现虚拟处理器、虚拟内存和虚拟外部设备等。

在虚拟处理器技术中,是经过多道程序设计技术,让多道程序并发执行的方法,来分时使用一个处理器的。此时,虽然只有一个处理器,但它能同时为多个用户服务,使每一个终端用户都感受有一个中央处理器(CPU)在专门为它服务。利用多道程序设计技术,把一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器。

相似地,能够经过虚拟存储器技术,将一台机器的物理存储器变为虚拟存储器,以便从逻辑上来扩充存储器的容量。固然,这时用户所感受到的内存容量是虚的。咱们把用户所感受到的存储器(实际是不存在的)称为虚拟存储器。

还能够经过虚拟设备技术,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并容许每一个用户占用一台逻辑上的I/O设备,这样即可以使原来仅容许在一段时间内由一个用户访问的设备(即临界资源),变为在一段时间内容许多个用户同时访问的共享设备。

所以,操做系统的虚拟技术可概括为:时分复用技术,如处理器的分时共享;空分复用技术,如虚拟存储器(注:学到后续内容再慢慢领悟)。
服务器

异步(Asynchronism)

在多道程序环境下,容许多个程序并发执行,但因为资源有限,进程的执行不是一向到底,而是走走停停,以不可预知的速度向前推动,这就是进程的异步性。

异步性使得操做系统运行在一种随机的环境下,可能致使进程产生与时间有关的错误 (就像对全局变量的访问顺序不当会致使程序出错同样)。可是只要运行环境相同,操做系统必须保证屡次运行进程,都得到相同的结果。
网络

 

1.3 操做系统的目标和功能

为了给多道程序提供良好的运行环境,操做系统应具备如下几方面的功能:处理机管理、 存储器管理、设备管理和文件管理。为了方便用户使用操做系统,还必须向用户提供接口。同时操做系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。数据结构

操做系统做为计算机系统资源的管理者

1) 处理机管理

在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,于是对处理机的管理可归结为对进程的管理。并发时在计算机内同时运行多个进程,因此,进程什么时候建立、什么时候撤销、如何管理、如何避免冲突、.合理共享就是进程管理的最主要的任务。进程管理的主要功能有:进程控制、进程同步、进程通讯、死锁处理、处理机调度等。
并发

2) 存储器管理

存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用以及提升内存的利用率,主要包括内存分配、地址映射、内存保护与共享和内存扩充等功能。

3) 文件管理

计算机中的信息都是以文件的形式存在的,操做系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。

4) 设备管理

设备管理的主要任务是完成用户的I/O请求,方便用户使用各类设备,并提升设备的利用率,主要包括缓冲管理、设备分配、设备处理和虛拟设备等功能。

操做系统做为用户与计算机硬件系统之间的接口

为方便用户使用计算机,操做系统还提供了用户接口。操做系统提供的接口主要分为两类•• 一类是命令接口,用户利用这些操做命令来组织和控制做业的执行;另外一类是程序接口,编程人员可使用它们来请求操做系统服务。

1) 命令接口

使用命令接口进行做业控制的主要方式有两种,即联机控制方式和脱机控制方式。按做业控制方式的不一样,能够将命令接口分为联机命令接口和脱机命令接口

联机命令接口又称交互式命令接口,适用于分时或实时系统的接口。它由一组键盘操做命令组成。用户经过控制台或终端输入操做命令,向系统提出各类服务要求。用户每输入完一条命令,控制权就转入操做系统的命令解释程序,而后由命令解释程序对输入的命令解释并执行,完成指定的功能。以后,控制权又转回到控制台或终端,此时用户又能够输入下一条命令

脱机命令接口又称批处理命令接口,即适用于批处理系统,它由一组做业控制命令(或称做业控制语句)组成。脱机用户不能直接干预做业的运行,应事先用相应的做业控制命令写成一份做业操做说明书,连同做业一块儿提交给系统。当系统调度到该做业时,由系统中的命令解释程序对做业说明书上的命令或做业控制语句遂条解释执行,从而间接地控制做业的运行。

2) 程序接口

程序接口由一组系统调用命令(简称系统调用,也称广义指令)组成。用户经过在程序中使用这些系统调用命令来请求操做系统为其提供服务。用户在程序中能够直接使用这组系统调用命令向系统提出各类服务要求,如使用各类外部设备,进行有关磁盘文件的操做,申请分配和回收内存以及其余各类控制要求。

而当前最为流行的是图形用户界面(GUI)即图形接口,用户经过鼠标和键盘,在图形界面上单击或使用快捷键就能很方便地使用操做系统。有些系统提供了上述三种接口,但GUI 最终是经过调用程序接口实现的,严格地说它不属于操做系统的一部分。

操做系统用作扩充机器

没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础,而实际呈如今用户面前的计算机系统是通过若干层软件改造的计算机。裸机在最里层,它的外面是操做系统,由操做系统提供的资源管理功能和方便用户的各类服务功能,将裸机改形成功能更强、 使用更方便的机器,一般把覆盖了软件的机器称为扩充机器,又称之为虚拟机。

 

1.4 操做系统的发展与分类

 

手工操做阶段(此阶段无操做系统)

用户在计算机上算题的全部工做都要人工干预,如程序的装入、运行、结果的输出等。随着计算机硬件的发展,人机矛盾(速度和资源利用)愈来愈大,必须寻求新的解决办法。

手工操做阶段有两个突出的缺点:

  • 用户独占全机。不会出现因资源已被其余用户占用而等待的现象,但资源利用率低。
  • CPU等待手工操做,CPU的利用不充分。


惟一的解决办法就是用高速的机器代替相对较慢的手工操做来对做业进行控制。

批处理阶段(操做系统开始出现)

为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。它按发展历程又分为单道批处理系统、多道批处理系统(多道程序设计技术出现之后)。

1) 单道批处理系统

系统对做业的处理是成批进行的,但内存中始终保持一道做业。该系统是在解决人机矛盾和CPU与I/O设备速率不匹配的矛盾中造成的。单道批处理系统的主要特征以下:

  • 自动性。在顺利的状况下,在磁带上的一批做业能自动地逐个依次运行,而无需人工干预。 '
  • 顺序性。磁带上的各道做业是顺序地进入内存,各道做业的完成顺序与它们进入内存的顺序,在正常状况下应彻底相同,亦即先调入内存的做业先完成。
  • 单道性。内存中仅有一道程序运行,即监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常状况时,才换入其后继程序进入内存运行。


此时面临的问题是:每次主机内存中仅存放一道做业,每当它运行期间(注意这里是“运行时”,并非“完成后”)发出输入/输出请求后,高速的CPU便处于等待低速的I/O完成状态。为了进一步提升资源的利用率和系统的吞吐量,引入了多道程序技术。

2) 多道批处理系统

多道程序设计技术容许多个程序同时进入内存并运行。即同时把多个程序放入内存,并容许它们交替在CPU中运行,它们共享系统中的各类硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便当即转去运行另外一道程序。它没有用某些机制提升某一技术方面的瓶颈问题,而是让系统的各个组成部分都尽可能去“忙”,花费不多时间去切换任务,达到了系统各部件之间的并行工做,使其总体在单位时间内的效率翻倍。

多道程序设计的特色有:

  1. 多道:计算机内存中同时存放多道相互独立的程序。
  2. 宏观上并行:同时进入系统的多道程序都处于运行过程当中,即它们前后开始了各自的运行,但都未运行完毕。
  3. 微观上串行:内存中的多道程序轮流占有CPU,交替执行。


多道程序设计技术的实现须要解决下列问题:

  1. 如何分配处理器。
  2. 多道程序的内存分配问题。
  3. I/O设备如何分配。
  4. 如何组织和存放大量的程序和数据,以便于用户使用和保证其安全性与一致性。


在批处理系统中釆用多道程序设计技术,就造成了多道批处理操做系统。该系统把用户提交的做业成批地送入计算机内存,而后由做业调度程序自动地选择做业运行。

优势是资源利用率高,多道程序共享计算机资源,从而使各类资源获得充分利用;系统吞吐量大,CPU和其余资源保持“忙碌”状态。缺点是用户响应的时间较长。不提供人机交互能力,用户既不能了解本身程序的运行状况,也不能控制计算机。

分时操做系统

在操做系统中釆用分时技术就造成了分时系统。所谓分时技术就是把处理器的运行时间分红很短的时间片,按时间片轮流把处理器分配给各联机做业使用。若某个做业在分配给它的时间片内不能完成其计算,则该做业暂时中止运行,把处理器让给其余做业使用,等待下一轮再继续运行。因为计算机速度很快,做业运行轮转得很快,给每一个用户的感受好像是本身独占一台计算机。

分时操做系统是多个用户经过终端同时共享一台主机,这些终端链接在主机上,用户能够同时与主机进行交互操做而互不干扰。因此,实现分时系统最关键的问题是如何使用户能与本身的做业进行交互,即当用户在本身的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回用户。分时系统也是支持多道程序设计的系统,但它不一样于多道批处理系统。

多道批处理是实现做业自动控制而无需人工干预的系统,而分时系统是实现人机交互的系统,这使得分时系统具备与批处理系统不一样的特征,其主要特征以下:

  • 同时性。同时性也称多路性,指容许多个终端用户同时使用一台计算机,即一台计算机与若干台终端相链接,终端上的这些用户能够同时或基本同时使用计算机。
  • 交互性。用户可以方便地与系统进行人-机对话,即用户经过终端釆用人4^1对话的方式直接控制程序运行,与同程序进行交互。
  • 独立性。系统中多个用户能够彼此独立地进行操做,互不干扰,单个用户感受不到别人也在使用这台计算机,好像只有本身单独使用这台计算机同样。
  • 及时性。用户请求能在很短期内得到响应。分时系统釆用时间片轮转方式使一台计算机同时为多个终端服务,使用户可以对系统的及时响应感到满意。


虽然分时操做系统比较好地解决了人机交互问题,可是在一些应用场合,须要系统能对外部的信息在规定的时间(比时间片的时间还短)内做出处理(好比飞机订票系统或导弹制导系统)。所以,实时系统应运而生

实时操做系统

为了能在某个时间限制内完成某些紧急任务而不需时间片排队,诞生了实时操做系统。这里的时间限制能够分为两种状况:若是某个动做必须绝对地在规定的时刻(或规定的时间范围)发生,则称为硬实时系统。例如,飞行器的飞行自动控制系统,这类系统必须提供绝对保证,让某个特定的动做在规定的时间内完成。若是可以接受偶尔违反时间规定,而且不会引发任何永久性的损害,则称为软实时系统,如飞机订票系统、银行管理系统。

在实时操做系统的控制下,计算机系统接收到外部信号后及时进行处理,而且要在严格的时限内处理完接收的事件。实时橾做系统的主要特色是及时性和可靠性。

网络操做系统和分布式计算机系统

网络操做系统把计算机网络中的各台计算机有机地结合起来,提供一种统1、经济而有效的使用各台计算机的方法,实现各个计算机之间的互相传送数据。网络操做系统最主要的特色是网络中各类资源的共享以及各台计算机之间的通讯

分布式计算机系统是由多台计算机组成并知足下列条件的系统:系统中任意两台计算机经过通讯方式交换信息;系统中的每一台计算机都具备同等的地位,即没有主机也没有从机; 每台计算机上的资源为全部用户共享;系统中的任意若千台计算机均可以构成一个子系统,而且还能重构;任何工做均可以分布在几台计算机上,由它们并行工做、协同完成。用于管理分布式计算机系统的操做系统称为分布式计算机系统。该系统的主要特色是:分布性和并行性。分布式操做系统与网络操做系统本质上的不一样之处在于分布式操做系统中,若干台计算机相互协同完成同一任务

我的计算机操做系统

我的计算机操做系统是目前使用最普遍的操做系统,普遍应用于文字处理、电子表格、 游戏等。常见的有Windows、Linux和Macintosh等,操做系统的发展历程如图1-1所示。



图1-1 操做系统的发展历程


此外还有嵌入式操做系统、服务器操做系统、多处理器操做系统等。

 

1.5 操做系统的运行机制

计算机系统中,一般CPU执行两种不一样性质的程序:一种是操做系统内核程序;另外一种是用户自编程序或系统外层的应用程序。对操做系统而言,这两种程序的做用不一样,前者是后者的管理者,所以“管理程序”要执行一些特权指令,而“被管理程序”出于安全考虑不能执行这些指令。所谓特权指令,是指计算机中不容许用户直接使用的指令,如I/O指令、 置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等指令。操做系统在具体实现上划分了用户态(目态)和核心态(管态),以严格区分两类程序。

在软件工程思想和结构程序设计方法的影响下诞生的现代操做系统,几乎都是层次式的结构。操做系统的各项功能分别被设置在不一样的层次上。一些与硬件关联较紧密的模块,诸如时钟管理、中断处理、设备驱动等处于最底层。其次是运行频率较髙的程序,诸如进程管理、存储器管理和设备管理等。这两部份内容构成了操做系统的内核。这部份内容的指令操做工做在核心态

内核是计算机上配置的底层软件,是计算机功能的延伸。不一样系统对内核的定义稍有区别,大多数操做系统内核包括四个方面的内容。

1) 时钟管理

在计算机的各类部件中,时钟是最关键的设备。时钟的第一功能是计时,操做系统须要经过时钟管理,向用户提供标准的系统时间。另外,经过时钟中断的管理,能够实现进程的切换。诸如,在分时操做系统中,釆用时间片轮转调度的实现;在实时系统中,按截止时间控制运行的实现;在批处理系统中,经过时钟管理来衡量一个做业的运行程度等。所以,系统管理的方方面面无不依赖于时钟。

2) 中断机制

引入中断技术的初衷是提升多道程序运行环境中CPU的利用率,并且主要是针对外部设备的。后来逐步获得发展,造成了多种类型,成为操做系统各项操做的基础。例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。能够说,现代操做系统是靠中断驱动的软件

中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样能够减小中断的处理时间,提升系统的并行处理能力。

3) 原语

按层次结构设计的操做系统,底层必然是一些可被调用的公用小程序,它们各自完成一个规定的操做。其特色是:

  1. 它们处于操做系统的最底层,是最接近硬件的部分。
  2. 这些程序的运行具备原子性——其操做只能一鼓作气(这主要是从系统的安全性和便于管理考虑的)。
  3. 这些程序的运行时间都较短,并且调用频繁。


一般把具备这些特色的程序称为原语(Atomic Operation)。定义原语的直接方法是关闭中断,让它的全部动做不可分割地进行完再打开中断。

系统中的设备驱动、CPU切换、进程通讯等功能中的部分操做均可以定义为原语,使它们成为内核的组成部分。

4) 系统控制的数据结构及处理

系统中用来登记状态信息的数据结构不少,好比做业控制块、进程控制块(PCB)、设备控制块、各种链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统须要一些基本的操做,常见的操做有如下三种:

  • 进程管理:进程状态管理、进程调度和分派、建立与撤销进程控制块等。
  • 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
  • 设备管理:缓冲区管理、设备分配和回收等。


从上述内容能够了解,核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操做指令。

 

 

1.6 中断和异常的概念

在操做系统中引入核心态和用户态这两种工做状态后,就须要考虑这两种状态之间如何切换。操做系统内核工做在核心态,而用户程序工做在用户态。系统不容许用户程序实现核心态的功能,而它们又必须使用这些功能。所以,须要在核心态创建一些“门”,实现从用户态进入核心态。在实际操做系统中,CPU运行上层程序时惟一能进入这些“门”的途径就是经过中断或异常当中断或异常发生时,运行用户态的CPU会当即进入核心态,这是经过硬件实现的(例如,用一个特殊寄存器的一位来表示CPU所处的工做状态,0表示核心态,1表示用户态。若要进入核心态,只需将该位置0便可)。中断是操做系统中很是重要的一个概念,对一个运行在计算机上的实用操做系统而言,缺乏了中断机制,将是不可想象的。

中断(Interruption),也称外中断,指来自CPU执行指令之外的事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,但愿处理机可以向设备发下一个输入 / 输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断一般是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。

异常(Exception),也称内中断、例外或陷入(Trap),指源自CPU执行指令内部的事件,如程序的非法操做码、 地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引发的事件。对异常的处理通常要依赖于当前程序的运行现场,并且异常不能被屏蔽,一旦出现应当即处理。关于内中断和外中断的联系与区别如图1-2所示。



图1-2 内中断和外中断的联系与区别


 

 

1.7 系统调用

所谓系统调用就是用户在程序中调用操做系统所提供的一些子功能,系统调用能够被看作特殊的公共子程序。系统中的各类共享资源都由操做系通通一掌管,所以在用户程序中,凡是与资源有关的操做(如存储分配、进行I/0传输以及管理文件等),都必须经过系统调用方式向操做系统提出服务请求,并由操做系统代为完成。一般,一个操做系统提供的系统调用命令有几十乃至上百条之多。

这些系统调用按功能大体可分为以下几类:

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。
  • 文件管理。完成文件的读、写、建立及删除等功能。
  • 进程控制。完成进程的建立、撤销、阻塞及唤醒等功能。
  • 进程通讯。完成进程之间的消息传递或信号传递等功能。
  • 内存管理。完成内存的分配、回收以及获取做业占用内存区大小及始址等功能。


显然,系统调用运行在系统的核心态。经过系统调用的方式来使用系统功能,能够保证系统的稳定性和安全性,防止用户随意更改或访问系统的数据或命令。系统调用命令是由操做系统提供的一个或多个子程序模块实现的。

这样,操做系统的运行环境能够理解为:用户经过操做系统运行上层程序(如系统提供的命令解释程序或用户自编程序),而这个上层程序的运行依赖于操做系统的底层管理程序提供服务支持,当须要管理程序服务时,系统则经过硬件中断机制进入核心态,运行管理程序;也多是程序运行出现异常状况,被动地须要管理程序的服务,这时就经过异常处理来进入核心态。当管理程序运行结束时,用户程序须要继续运行,则经过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点处继续执行。

在操做系统这一层面上,咱们关心的是系统核心态和用户态的软件实现和切换,对于硬件层面的具体理解,能够结合“计算机组成原理”课程中有关中断的内容进行学习。

下面列举一些由用户态转向核心态的例子:

  • 用户程序要求操做系统的服务,即系统调用。
  • 发生一次中断。
  • 用户程序中产生了一个错误状态。
  • 用户程序中企图执行一条特权指令。
  • 从核心态转向用户态由一条指令实现,这条指令也是特权命令。通常是中断返回指令。


注意:由用户态进入核心态,不只仅是状态须要切换。并且,所使用的堆栈也可能须要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。

 

 

1.8 操做系统的体系结构:大内核和微内核

操做系统的体系结构是一个开放的问题。正如上文所述,操做系统在核心态为应用程序提供公共的服务,那么操做系统在核心态应该提供什么服务、怎样提供服务?有关这个问题的回答造成了两种主要的体系结构:大内核和微内核。

大内核系统将操做系统的主要功能模块都做为一个紧密联系的总体运行在核心态,从而为应用提供高性能的系统服务。由于各管理模块之间共享信息,能有效利用相互之间的有效特性,因此具备无可比拟的性能优点。

但随着体系结构和应用需求的不断发展,须要操做系统提供的服务愈来愈多,并且接口形式愈来愈复杂,操做系统的设计规模也急剧增加,操做系统也面临着“软件危机”困境。为此,操做系统设计人员试图按照复杂性、时间常数、抽象级别等因素,将操做系统内核分红基本进程管理、虚存、I/O与设备管理、IPC、文件系统等几个层次,继而定义层次之间的服务结构,提升操做系统内核设计上的模块化。可是因为层次之间的交互关系错综复杂,定义清晰的层次间接口很是困难,复杂的交互关系也使得层次之间的界限极其模糊。

为解决操做系统的内核代码难以维护的问题,因而提出了微内核的体系结构。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不须要在核心态执行的功能移到用户态执行,从而下降了内核的设计复杂性。而那些移出内核的操做系统代码根据分层的原则被划分红若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通讯。

微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大下降,各部分能够独立地优化和演进,从而保证了操做系统的可靠性。

微内核结构的最大问题是性能问题,由于须要频繁地在核心态和用户态之间进行切换,操做系统的执行开销偏大。所以有的操做系统将那些频繁使用的系统服务又移回内核,从而保证系统性能。可是有至关多的实验数据代表,体系结构不是引发性能降低的主要因素,体系结构带来的性能提高足以弥补切换开销带来的缺陷。为减小切换开销,也有人提出将系统服务做为运行库连接到用户程序的一种解决方案,这样的体系结构称为库操做系统。

1.9 关于操做系统概念的一些疑点和难点

并行性与并发性的区别和联系

并行性和并发性是既类似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生。并发性是指两个或多个事件在同一时间间隔内发生。

在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但在单处理器系统中每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。假若在计算机系统中有多个处理器(CPU),则这些能够并发执行的程序便被分配到多个处理器上,实现并行执行,即利用每一个处理器来处理一个可并发执行的程序。

特权指令与非特权指令

所谓特权指令是指有特殊权限的指令,因为这类指令的权限最大,若是使用不当,将致使整个系统崩溃。好比:清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。若是全部的程序都能使用这些指令,那么你的系统一天死机《回就不足为奇了。为了保证系统安全,这类指令只能用于操做系统或其余系统软件,不直接提供给用户使用。所以,特权指令必须在核心态执行。实际上,CPU在核心态下能够执行指令系统的全集。形象地说,特权指令就是那些儿童不宜的东西,而非特权指令则是老小皆宜。

为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可使用所有指令。当在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。因此把用户程序放在用户态下运行,而操做系统中必须使用特权指令的那部分程序在核心态下运行,保证了计算机系统的安全可靠。从用户态转换为核心态的惟一途径是中断或异常。

访管指令与访管中断

访管指令是一条能够在用户态下执行的指令。在用户程序中,因要求操做系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操做系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操做系统请求服务。

为何要在程序中引入访管指令呢?这是由于用户程序只能在用户态下运行,若是用户程序想要完成在用户态下没法完成的工做,该怎么办?解决这个问题要靠访管指令。访管指令自己不是特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引发访管中断。

当处于用户态的用户程序使用访管指令时,系统根据访管指令的操做数执行访管中断处理程序,访管中断处理程序将按系统调用的操做数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行。


 

转载于:https://www.cnblogs.com/peterYong/p/6556626.html