OS知识点汇总(考研用)——第一章:计算机系统概述
本文参考于《2021年操作系统考研复习指导》(王道考研),《计算机操作系统教程》
思维导图:
1.计算机系统概述
1.1 OS的基本概念
1.1.1 OS的概念
OS管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介。OS控制和协调各用户的应用程序对硬件的分配与使用
OS是指控制和管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作和资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。 OS是计算机系统中最基本的系统软件。
OS位于硬件之上,应用软件之下,为应用软件提供服务支撑。
1.1.2 OS的特征
OS的基本特征包括并发、共享、虚拟和异步。
1.并发(Concurrence)
并发是指两个或多个事件在同一时间间隔内发生。 OS的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。 在OS中,引入进程的目的是使程序能并发执行。
注意同一时间间隔(并发)和同一时刻(并行)的区别。在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每个时刻,单处理机环境下实际仅能有一道程序执行, 因此微观上这些程序仍是分时交替执行的。OS的并发性是通过分时得以实现的。
注意,并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境。 若在计算机系统中有多个处理器,则这些可并发执行的程序便被分配到多个处理器上,实现并行执行,即利用每个处理器来处理一个可并发执行的程序。
2.共享(Sharing)
资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。 共享可分为以下两种资源共享方式:
(1)互斥共享方式
系统中的某些资源,如打印机、磁带机,虽然可供多个进程使用,但为使得所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程访问该资源。
为此,当进程A访问某个资源时,必须先提出请求,若此时该资源空闲,则系统便将之分配给进程A使用,此后有其他进程也要访问该资源时(只要A未用完)就必须等待。仅当A进程访问完并释放该资源后,才允许另一个进程对该资源进行访问。把这种资源共享方式称为互斥式共享,而把在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。 计算机系统中的大多数物理设备及某些软件中所用的栈、变量和表格,都属于临界资源,它们都要求被互斥地共享。
(2)同时访问方式
系统中还有另一类资源,这类资源允许在一段时间内由多个进程“同时”访问。 “同时”通常是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问即“分时共享”的。可供多个进程“同时”访问的典型资源是磁盘设备, 一些用重入码编写的文件也可被“同时”共享,即允许若干个用户同时访问该文件。
互斥共享要求一种资源在一段时间内(哪怕是一段很小的时间)只能满足一个请求,否则就会出现严重问题。而同时访问共享通常要求一个请求分几个时间片间隔地完成,其效果与连续完成的效果相同。
并发和共享是OS两个最基本的特征,两者之间互为存在的条件:
(1)资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题
(2)若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行
3.虚拟(Virtual)
虚拟是指把一个物理上的实体变为若干逻辑上的对应物。 物理实体是实的,即实际存在的;而后者是虚的,是用户感觉上的事物。用于实现虚拟的技术,称为虚拟技术。OS中利用了多种虚拟技术来实现虚拟处理器、虚拟内存和虚拟外部设备等。
虚拟处理器技术是通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器的。 此时,虽然只有一个处理器,但它能同时为多个用户服务,使每个终端用户都感觉有一个中央处理器(CPU)在专门为它服务。 利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器。
类似地,可以采用虚拟存储器技术将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。这时用户所感觉到的内存容量是虚的。把用户感觉到(但实际不存在)的存储器称为虚拟存储器。
还可采用虚拟设备技术将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备,使原来仅允许在一段时间内由一个用户访问的设备(即临界资源)变为在一段时间内允许多个用户同时访问的共享设备。
因此,OS的虚拟技术可归纳为:时分复用技术,如处理器的分时共享;空分复用技术,如虚拟存储器
4.异步(Asynchronism)
多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。
异步性使得OS运行在一种随机的环境下,可能导致进程产生与时间有关的错误。 然而,只要运行环境相同,OS就须保证多次运行进程后都能获得相同的结果。
1.1.3 OS的目标和功能
为了给多道程序提供良好的运行环境,OS应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。 为了方便用户使用OS,还必须向用户提供接口。同时,OS可用来扩充机器,以提供更方便的服务、更高的资源利用率。
1.OS作为计算机系统资源的管理者
(1)处理机管理
在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。 并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
(2)存储器管理
主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
(3)文件管理
计算机中的信息都是以文件的形式存在的,OS中负责文件管理的部分称为文件系统。 文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
(4)设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
2.OS作为用户与计算机硬件系统之间的接口
OS提供了用户接口。OS提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业的执行;另一类是程序接口,编程人员可以使用它们来请求OS服务。
(1)命令接口
使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。 按作业控制方式的不同,可将命令分为联机命令接口和脱机命令接口。
联机命令接口又称交互式命令接口,适用于分时或实时系统的接口。 它由一组键盘操作命令组成。用户通过控制台或终端输入操作命令,向系统提出各种服务要求。用户每输入一条命令,控制权就转给OS的命令解释程序,然后由命令解释程序解释并执行输入的命令,完成指定的功能。之后,控制权转回控制台或终端,此时用户又可输入下一条命令。联机命令接口强调了交互性。
脱机命令接口又称批处理命令接口,适用于批处理系统, 它由一组作业控制命令组成。脱机用户不能直接干预作业的运行, 而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接地控制作业的运行。
(2)程序接口
程序接口由一组系统调用(也称广义指令)组成。 用户通过在程序中使用这些系统调用来请求OS为其提供服务,如使用各种外部设备、申请分配和回收内存及其他各种要求。
3.OS用作扩充机器
通常把覆盖了软件的机器称为扩充机器或虚拟机
例题:OS与用户通信接口通常不包括()
A.shell B.命令解释器
C.广义指令 D.缓存管理指令
答案:D;广义指令就是系统调用命令,而命令解释器属于命令接口,shell是命令解析器,它也属于命令接口。系统中的缓存全部由OS管理,对用户是透明的,OS不提供管理系统缓存的系统调用。
例题:计算机开机后,OS最终被加载到
A.BIOS B.ROM
C.EPROM D.RAM
答案:D;系统开机后,OS的程序会被自动加载到内存中的系统区,这段区域是RAM。
例题:说明库函数与系统调用的区别和联系
答案:库函数是语言或应用程序的一部分,可以运行在用户空间中。而系统调用是OS的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(由用户态转向核心态)
1.2 OS的发展与分类
1.2.1 手工操作阶段(此阶段无OS)
用户在计算机上算题的所有工作都要人工干预,如程序的装入、运行、结果的输出等。
手工操作阶段有两个突出的缺点:(1)用户独占全机,不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。(2)CPU等待手工操作,CPU的利用不充分
1.2.2 批处理阶段(OS开始出现)
按发展历程分为单道批处理系统、多道批处理系统
1.单道批处理系统
系统对作业的处理是成批进行的,但内存中始终保持一道作业。 单道批处理系统的主要特征:
(1)自动性
在顺利的情况下,磁带上的一批作业能自动地逐个运行,而无须人工干预。
(2)顺序性
磁带上的各道作业顺序地进入内存,各道作业的完成顺序与它们进入内存的顺序在正常情况下应完全相同,亦即先调入内存的作业先完成。
(3)单道性
内存中仅有一道程序运行,即监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行。
此时面临的问题是:每次主机内存中仅存放一道作业,每当它在运行期间发出I/O请求后,高速的CPU便处于等待低速的I/O完成状态。
2.多道批处理系统
多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行, 这些程序共享系统中的各种软/硬件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
多道程序设计的特点是多道、宏观上并行、微观上串行。
(1)多道
计算机内存中同时存放多道相互独立的程序。
(2)宏观上并行
同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕。
(3)微观上串行
内存中的多道程序轮流占有CPU,交替执行。
多道程序设计技术的实现需要解决下列问题:
(1)如何分配处理器
(2)多道程序的内存分配问题
(3)I/O设备如何分配
(4)如何组织和存放大量的程序和数据,以方便用户使用并保证其安全性与一致性
在批处理系统中采用多道程序设计技术就形成了多道批处理操作系统。该系统把用户提交的作业成批地送入计算机内存,然后由作业调度程序自动地选择作业运行。
优点:资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分利用;系统吞吐量大,CPU和其他资源保持“忙碌”状态。
缺点:用户响应的时间较长;不提供人机交互能力,用户既不能了解自己的程序的运行情况,又不能控制计算机。
1.2.3 分时OS
所谓分时技术,是指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。 若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行。由于计算机速度很快,作业运行轮转得也很快,因此给每个用户的感觉就像是自己独占一台计算机。
分时OS是指多个用户通过终端同时共享一台主机,这些终端连接在主机上,用户可以同时与主机进行交互操作而互不干扰。 因此,实现分时系统最关键的问题是如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回用户。分时系统也是支持多道程序设计的系统,但它不同于多道批处理系统。多道批处理是实现作业自动控制而无须人工干预的系统,而分时系统是实现人机交互的系统。 分时系统的主要特征如下:
(1)同时性
同时性也称多路性,指允许多个终端用户同时使用一台计算机,即一台计算机与若干台终端相连接,终端上的这些用户可以同时或基本同时使用计算机。
(2)交互性
用户能方便地与系统进行人机对话,即用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互。
(3)独立性
系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感觉不到别人也在使用这台计算机,好像只有自己单独使用这台计算机一样。
(4)及时性
用户请求能在很短时间内获得响应。分时系统采用时间片轮转方式使一台计算机同时为多个终端服务,使用户能够对系统的及时响应感到满意。
分时OS是一个联机、多用户、交互式的操作系统。UNIX是一种多用户分时操作系统。
1.2.4 实时OS
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队, 诞生了实时OS。这里的时间限制可分为两种情况:若某个动作必须绝对地在规定的时刻(或规定的时间范围内)发生,则称为硬实时系统, 如飞行器的飞行自动控制系统。若能够接受偶尔违反时间规定且不会引起任何永久性的损害,则称为软实时系统,如飞机订票系统
在实时OS的控制下,计算机系统接收到外部信号后及时进行处理,并在严格的时限内处理完接收的事件。实时操作系统的主要特点是及时性和可靠性。
批处理系统、分时系统和实时系统是OS的3种基本类型,在此基础上又发展了具有多种类型操作特征的操作系统,称为通用操作系统。它可以同时兼有批处理、分时、实时处理和多重处理的功能。
1.2.5 网络操作系统和分布式计算机系统
网络操作系统把计算机网络中的各台计算机有机的结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送。网络操作系统最主要的特点是网络中各种资源的共享及各台计算机之间的通信。
分布式计算机系统是由多台计算机组成并满足下列条件的系统:系统中任意两台计算机通过通信方式交换信息;系统中的每台计算机都具有同等的低位,即没有主机也没有从机;每台计算机上的资源为所有用户共享;系统中的任意台计算机都可以构成一个子系统,并且还能重构;任何工作都可以分布在几台计算机上,由它们并行工作、协同完成。 用于管理分布式计算机系统的OS称为分布式计算机系统。该系统的主要特点是:分布性和并行性。分布式操作系统与网络操作系统的本质不同是,分布式操作系统中的若干台计算机相互协同完成同一任务。
分布式系统最主要的特点是,整个系统中的各个计算机对用户都是透明的。用户通过输入命令就可以运行程序,但用户并不知道是哪台计算机在为它运行程序。操作系统为用户选择一台最合适的计算机来运行其程序,并将运行的结果传送到合适的地方。
1.2.6 个人计算机操作系统
个人计算机OS是目前使用最广泛的OS。
操作系统的发展历程:
例题:实时系统的进程调度,通常采用()算法
A.先来先服务 B.时间片轮转
C.抢占式的优先级高者优先 D.高响应比优先
答案:C;实时系统必须能足够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用可抢占来确保实时处理
例题:操作系统有多种类型。允许多个用户以交互的方式使用计算机的操作系统,称为();允许多个用户将若干作业提交给计算机系统集中处理的操作系统,称为();在()的控制下,计算机系统能及时处理由过程控制反馈的数据,并及时作出响应;在IBM-PC中,操作系统称为()
A.批处理系统 B.分时操作系统
C.实时操作系统 D.微型计算机操作系统
答案:BACD
例题:下列关于多任务操作系统的叙述中,正确的是()
1.具有并发和并行的特点
2.需要实现对共享资源的保护
3.需要运行在多CPU的硬件平台上
答案:1,2;所谓多道程序设计是指允许多个程序同时进入一个计算机系统的主存储器并运行这些程序的方法。这种多道程序系统也称为多任务操作系统。现代OS都是多任务的,不一定需要运行在多CPU的硬件上。
例题:批处理操作系统、分时操作系统和实时操作系统各有什么特点
答案:(1)批处理操作系统的用户脱机使用计算机,作业是成批处理的,系统内多道程序并发执行,交互能力差
(2)分时操作系统可让多个用户同时使用计算机,人机交互性较强,具有每个用户独立使用计算机的独占性,系统响应及时
(3)实时操作系统能对控制对象做出及时反应,可靠性高,响应及时,但资源利用率低
例题:设某计算机系统有一个CPU、一台输入设备、一台打印机。现有两个进程同时进入就绪态,且进程A先得到CPU运行,进程B后运行。进程A的运行轨迹为:计算50ms,打印信息100ms,再计算50ms,打印信息100ms,结束。进程B的运行轨迹为:计算50ms,输入数据80ms,再计算100ms,结束。画出它们的时序关系图(可用甘特图),并说明:
(1)开始运行后,CPU有无空闲等待?若有,在哪段时间等待?计算CPU的利用率
(2)进程A运行时有无等待现象?若有,在何时发生等待现象
(3)进程B运行时有无等待现象?若有,在何时发生等待现象
答案:
1.3 OS的运行环境
1.3.1 操作系统的运行机制
通常CPU执行两种不同性质的程序:一种是OS内核程序;另一种是用户自编程序(即系统外层的应用程序,或简称应用程序) 。对OS而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”(即内核程序)要执行一些特权指令 ,而“被管理程序”(即用户自编程序)出于安全考虑不能执行这些指令。所谓特权指令,是指计算机中不允许用户直接使用的指令,如I/O指令、置中断指令、存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令 。 在具体实现上,将CPU的状态划分为用户态(目态)和核心态(又称管态、内核态)。 可以理解为CPU内部有一个小开关,当小开关为1时,CPU处于核心态,此时CPU可以执行特权指令;当小开关为0时,CPU处于用户态,此时CPU只能执行非特权指令。用户自编程序运行在用户态,OS内核程序运行在核心态。
OS的各项功能分别被设置在不同的层次上。一些与硬件关联较紧密的模块,如时钟管理、中断处理、设备驱动等处于最低层。其次是运行频率较高的程序,如进程管理、存储器管理和设备管理等。这两部分内容构成了OS的内核。这部分内容的指令操作工作在核心态。
内核是计算机上配置的底层软件,是计算机功能的延伸。 大多数OS的内核包括以下4方面的内容:
1.时钟管理
时钟的第一功能是计时,OS需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。例如,在分时操作系统中采用时间片轮转调度,在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等。
2.中断机制
中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
3.原语
按层次结构设计的OS,底层必然是一些可被调用的公用小程序,它们各自完成一个规定的操作。它们的特点如下:
(1)处于OS的最低层,是最接近硬件的部分
(2)这些程序的运行具有原子性,其操作只能一气呵成(主要从系统安全性和便于管理考虑)
(3)这些程序的运行时间都较短,而且调用频繁
通常把具有这些特点的程序称为原语(Atomic Operation)。 定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。
系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分。
4.系统控制的数据结构及处理
系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:
(1)进程管理
进程状态管理、进程调度和分派、创建与撤销进程控制块等
(2)存储器管理
存储器的空间分配和回收、内存信息保护程序、代码对换程序等
(3)设备管理
缓冲区管理、设备分配和回收等。
从上述内容可知,核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
1.3.2 中断和异常的概念
系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,以便实现从用户态进入核心态。在实际OS中,CPU运行上层程序时唯一能进入这些“门”的途径就是通过中断或异常。 发生中断或异常时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的。 (例如,用一个特殊寄存器的1位来表示CPU所处的工作状态,0表示核心态,1表示用户态。若要进入核心态,则只需将该位置0即可)。
1.中断和异常的定义
中断也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断通常是与当前指令执行无关的事件,即它们与当前处理机运行的程序无关。
异常(Exception)也称内中断、例外或陷入、陷阱(trap),指源自CPU执行指令内部的事件, 如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理。
2.中断处理的过程
(1)关中断
CPU响应中断后,首先要保护程序的现场状态,在保护现场的过程中,CPU不应响应更高级中断源的中断请求。否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序
(2)保存断点
为保证中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来的程序的断点(即PC)保存起来。
(3)引出中断服务程序
其实质是取出中断服务程序的入口地址送入程序计数器PC
(4)保存现场和屏蔽字
进入中断服务程序后,首先要保存现场,现场信息一般是指程序状态字寄存器PSWR和某些通用寄存器的内容
(5)开中断
允许更高级中断请求得到响应
(6)执行中断服务程序
这是中断请求的目的
(7)关中断
保证在恢复现场和屏蔽字时不被中断
(8)恢复现场和屏蔽字
将现场和屏蔽字恢复到原来的状态
(9)开中断、中断返回
中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。
其中,1~ 3是在CPU进入中断周期后,由硬件自动(中断隐指令)完成的;4~ 9由中断服务程序完成。恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作由中断服务程序完成。中断返回由中断服务程序的最后一条中断返回指令完成。
1.3.3 系统调用
所谓系统调用,是指用户在程序中调用OS所提供的一些子功能, 系统调用可视为特殊的公共子程序。系统中的各种共享资源都由OS统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向OS提出服务请求,并由OS代为完成。 系统调用按功能大致可分为如下几类:
(1)设备管理
完成设备的请求或释放,以及设备启动等功能
(2)文件管理
完成文件的读、写、创建及删除等功能
(3)进程控制
完成进程的创建、撤销、阻塞及唤醒等功能
(4)进程通信
完成进程之间的消息传递或信号传递等功能
(5)内存管理
完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
系统调用相关功能涉及系统资源管理、进程管理之类的操作,对整个系统的影响非常大,因此必定需要使用某些特权指令才能完成,所以系统调用的处理需要由OS内核程序负责完成,要运行在核心态。 用户程序可以执行陷入指令(又称访管指令或trap指令)来发起系统调用,请求OS提供服务。 可以这么理解,用户程序执行“陷入指令”,相当于把CPU的使用权主动交给OS内核程序(CPU状态会从用户态进入核心态),之后操作系统内核程序再对系统调用请求作出相应处理。处理完成后,操作系统内核程序又会把CPU的使用权还给用户程序(即CPU状态会从核心态回到用户态)。这么设计的目的是:用户程序不能直接执行对系统影响非常大的操作,必须通过系统调用的方式请求OS代为执行,以便保证系统的稳定性和安全性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行。
这样,OS的运行环境就可理解为:用户通过OS运行上层程序(如系统提供的命令解释程序或用户自编程序),而这个上层程序的运行依赖于OS的底层管理程序提供服务支持,当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序;也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。 管理程序运行结束时,用户程序需要继续运行,此时通过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点处继续执行。
一些由用户态转向核心态的例子:
(1)用户程序要求操作系统的服务,即系统调用
(2)发生一次中断
(3)用户程序中产生了一个错误状态
(4)用户程序中企图执行一条特权指令
(5)从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令
由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的
若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。
特权指令与非特权指令:
所谓特权指令,是指有特殊权限的指令,由于这类指令权限最大,使用不当将导致整个系统崩溃,如清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。为保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用。因此,特权指令必须在核心态执行。实际上,CPU在核心态可以执行指令系统的全集。
为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全部指令。在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。从用户态转换为核心态的唯一途径是中断或异常。
访管指令与访管中断:
访管指令是一条可以在用户态下执行的指令。在用户程序中,因要求OS提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将OS转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向OS请求服务。
访管指令本身不是特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断。
处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点处继续执行。
中断、异常、系统调用:
中断、异常、系统调用是OS与设备和程序交互的手段。
系统调用(来源于应用程序):应用程序主动向OS发出服务请求
异常(来源于不良的应用程序):非法指令或其他坏的处理状态(如内存出错)
中断(来源于外设):来自不同的硬件设备的计时器和网络的中断
(1)三者产生的源头:
中断:外设;
异常:应用程序意想不到的行为(如除0操作、恶意程序、程序需要的资源未满足)
系统调用:应用程序请求OS提供服务
(2)三者的处理时间
中断:异步事件(应用程序不知道事件何时产生);
异常:同步(执行到某特定指令后一定会产生);
系统调用:异步或同步;返回点有可能异步(应用程序发出请求后去做其他事,OS处理完请求后,给应用程序发出异步消息),也有可能同步。
(3)三者的响应
中断:持续,对用户应用程序是透明的(应用程序未感觉到有中断产生,OS完成中断过程)
异常:杀死或重新执行意想不到的应用程序指令
系统调用:等待和持续(等待服务完成后,继续执行)
系统调用与函数调用:
当应用程序发出函数调用时,在一个栈空间完成参数的传递和返回;系统调用执行过程中,应用程序和OS拥有各自堆栈,当应用程序发出系统调用后,切换到内核中执行时,需切换堆栈,同时需完成特权集的转换,这些都需要一定开销。执行系统调用的开销比函数调用大得多
例题:下列关于系统调用的说法,正确的是()
1.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和陷入指令
2.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和屏蔽中断指令
3.系统调用功能是OS向用户程序提供的接口
4.用户及其应用程序和应用系统是通过系统调用提供的支持和服务来使用系统资源完成其操作的
答案:1,3,4;
例题:用户程序在用户态下要使用特权指令引起的中断属于()
A.硬件故障中断 B.程序中断
C.外部中断 D.访管中断
答案:D;
例题:计算机区分核心态和用户态指令后,从核心态到用户态的转换是由操作系统程序执行后完成的,而用户态到核心态的转换则是由()完成的
A.硬件 B.核心态程序
C.用户程序 D.中断处理程序
答案:A;计算机通过硬件完成操作系统由用户态到核心态的转换,这是通过中断机制来实现的。发生中断事件时(有可能是用户程序发出的系统调用),触发中断,硬件中断机制将计算机状态置为核心态
例题:内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是()
A.内部异常的产生与当前执行指令相关
B.内部异常的检测由CPU内部逻辑实现
C.内部异常的响应发生在指令执行过程中
D.内部异常处理后返回到发生异常的指令继续执行
答案:D;内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT)和除数为0等。 以上都是在指令的执行过程中产生的,内中断不能被屏蔽,一旦出现应立即处理。对于D,考虑到特殊情况,如除数为0和自行中断(INT)都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行。
例题:异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。下列关于中断或异常情况的叙述中,错误的是()
A.访存时缺页属于中断 B.整数除以0属于异常
C.DMA传送结束属于中断 D.存储保护错属于异常
答案:A;中断是指来自CPU执行指令以外事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发出下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。 异常也称内中断、例外或陷入trap,指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件。
例题:处理外部中断时,应该由OS保存的是()
A.PC的内容 B.通用寄存器的内容
C.TLB中的内容 D.Cache中的内容
答案:B;外部中断处理过程,PC值由中断隐指令自动保存,而通用寄存器内容由OS保存
例题:处理器为什么要区分核心态和用户态两种操作方式?在什么情况下进行两种方式的切换
答案:主要目的是为了保护系统程序。用户态到核心态的转换发生在中断产生时,而核心态到用户态的转换则发生在中断返回用户程序时
例题:为什么说直到出现中断和通道技术后,多道程序概念才变得有用
答案:多道程序并发执行是指有的程序正在CPU上执行,而另一些程序正在I/O设备上进行传输,CPU操作与外设传输在时间上的重叠必须有中断和通道技术的支持,原因如下:
(1)通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立于CPU运行, 因而做到了输入/输出操作与CPU并行工作。但早期CPU与通道的联络方法(在中断未引入之前)是由CPU向通道发出询问指令来了解通道工作是否完成。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。
(2)在硬件上引入中断技术。中断指在输入/输出结束时,或硬件发生某种故障时,由相应的硬件(即中断机构)向CPU发出信号,这时CPU立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。
因此,通道技术和中断技术结合起来就可实现CPU与I/O设备并行工作,即CPU启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入/输出工作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后再继续原来的工作。这样,就真正做到了CPU与I/O设备并行工作。此时,多道程序的概念才变为现实。
1.4 OS的体系结构
1.4.1 大内核和微内核
操作系统在核心态为应用程序提供公共的服务,那么OS在核心态应该提供什么服务、怎样提供服务?有关这一问题的回答形成了两种主要的体系结构:大内核和微内核
大内核系统将OS的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
但随着OS设计规模急剧增长,OS设计人员试图按照复杂性、时间常数、抽象级别等因素,将OS内核分成基本进程管理、虚存、I/O与设备管理、IPC、文件系统等几个层次,继而定义层次之间的服务结构,提高OS内核设计上的模块化。但由于层次之间的交互关系错综复杂,定义清晰的层次接口非常困难。
为解决OS的内核代码难以维护的问题,提出了微内核的体系结构。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行, 从而降低了内核的设计复杂性。那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信。
微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可独立地优化和演进,从而保证了OS的可靠性。
微内核结构的最大问题是性能问题,因为需要频繁地在核心态与用户态之间进行切换,OS的执行开销偏大。 因此有的OS将那些频繁使用的系统服务又移回内核,从而保证系统性能。但实验数据表明,体系结构不是引起性能下降的主要因素,体系结构带来的性能提升足以弥补切换开销带来的缺陷。为减少切换开销,有人提出将系统服务作为运行库链接到用户程序的一种解决方案,这样的体系结构称为库操作系统