在信息化时代,软件被称为计算机系统的灵魂。而作为
软件核心的操作系统,已经与现代计算机系统密不可分、融
为一体。计算机系统自下而上可粗分为四个部分:硬件、操
作系统、应用程序和用户。操作系统管理各种计算机硬件,
为应用程序提供基础,并充当计算机硬件和用户的中介。
硬件,如中央处理器、内存、输入输出设备等,提供了
基本的计算资源。应用程序,如字处理程序、电子制表软件、
编译器、网络浏览器等,规定了按何种方式使用这些资源来
解决用户的计算问题。操作系统控制和协调各用户的应用程
序对硬件的使用。
综上所述,操作系统是指控制和管理整个计算机系统的
硬件和软件资源,并合理的组织调度计算机的工作和资源的
分配,以提供给用户和其他软件方便的接口和环境集合。计
算机操作系统是随着计算机研究和应用的发展逐步形成并
发展起来的,它是计算机系统中最基本的系统软件。
2、操作系统的特征
操作系统是一种系统软件,但与其他的系统软件和应用
软件有很大的不同,他有自己的特殊性即基本特征,操作系
统的基本特征包括并发、共享、虚拟和异步。这些概念对理
解和掌握操作系统的核心至关重要,将一直贯穿于各章节中。
(1)并发
而在同一时刻,单处理器环境下实际上只有一个程序在执行,
故微观上这些程序还是在分时的交替进行。操作系统的并发
是通过分时得以实现的。操作系统的并发性是指计算机系统
中同时存在多个运行着的程序,因此它具有处理和调度多个
程序同时执行的能力。在操作系统中,引入进程的目的实施
程序能并发执行。
(2)共享
资源共享即共享,是指系统中的资源可供内存中多个并
发执行的进程共同使用。共享可以分为以下两种资源共享方
式。
1)互斥共享方式
系统中的某些资源,,如打印机、磁带机,虽然他们可
以提供给多个进程使用,但为使所打印的内容不致造成混淆,
为此,当进程a访问某资源时,必须先提出请求,如果
此时该资源空闲,系统便可将之分配给进程a使用,伺候若
再有其他进程也要访问该资源(只要a未用完)则必须等待。
仅当进程a访问完并释放该资源后,才允许另一进城对该资
源进行访问。计算机系统中的大所属物理设备,以及某些软
件中所用的栈、变量和表格,都属于临界资源,他们都要求
被互斥的共享。
2)同时访问方式
“同时”对它进行访问。这里所谓的“同时”往往是宏观上
的,而在微观上,这些进程可能是交替的对该资源进行访问
即“分时共享二典型的可供多个进程同时访问的资源是磁
盘设备,一些用重入码编写的文件也可以被“同时”共享,
即若干个用户同时访问该文件。
并发和共享是操作系统两个最基本的特征,这两者之间
又是互为存在条件的:1资源共享是以程序的并发为条件的,
若系统不允许程序并发执行,则自然不存在资源共享的问题;
2若系统不能对资源共享实施有效地管理,也必将影响到程
序的并发执行,甚至根本无法并发执行。
(3)虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对
应物。物理实体是实的,即实际存在的;而后者是虚的,是
用户感觉上的事物。相应的,用于实现虚拟的技术,成为虚
拟技术。在操作系统中利用了多种虚拟技术,分别用来实现
虚拟处理器、虚拟内存和虚拟外部设备。
在虚拟处理器技术中,是通过多道程序设计技术,让多
道程序并发执行的方法,来分时使用一台处理器的。此时,
虽然只有一台处理器,但他能同时为多个用户服务,是每个
终端用户都认为是有一个中央处理器在为他服务。利用多道
程序设计技术,把一台物理上的CPU虚拟为多台逻辑上的CPU,
称为虚拟处理器。
类似的,可以通过虚拟存储器技术,将一台机器的物理
存储器变为虚拟存储器,一边从逻辑上来扩充存储器的容量。
当然,这是用户所感觉到的内存容量是虚的,我们把用户
所发哦绝倒的存储器程序虚拟存储器。
还可以通过虚拟设备技术,将一台物理10设备虚拟为
多台逻辑上的10设备,并允许每个用户占用一台逻辑上的
设备。
因此操作系统的虚拟技术可归纳为:时分复用技术和空
分复用技术。
(4)异步
在多道程序环境下,允许多个程序并发执行,但由于资
源有限,进程的执行不是一贯到底,而是走走停停,以不可
预知的速度向前推进,这就是进程的异步性。
异步性使得操作系统运行在一种随机的环境下,可能导
作系统必须保证多次运行进程,都获得相同的结果。
3、操作系统的目标和功能
为了给多道程序提供良好的运行环境,操作系统应具有
几方面的功能:处理器管理、存储器管理、设备管理和文件
管理。为了方便用户使用操作系统,还必须向用户提供接口。
同时操作系统可用来扩充机器,以提供更方便的服务、更高
的资源利用率。
(1)操作系统作为计算机系统资源的管理者
1)处理器管理
在多道程序环境下,处理器的分配和运行都是以进程为
基本单位,因而对处理器的管理可归结为对进程的管理。进
程管理的主要功能有:进程控制,进程同步,进程通信,死
锁处理,处理器调度等。
2)存储器管理
存储器管理的主要任务是位多通道程序的运行提供良
好的环境,方便用户使用以及提高内存的利用率。因此,存
储器管理应具备:内存分配、地址映射、内存保护与共享和
内存扩充等。
3)文件管理
文件管理主要包括文件的存储空间管理、目录管理及文
件读写管理及保护等。
4)设备管理
设备管理的主要任务就是完成用户的10请求,方便用
户使用各种设备,并提高设备的利用率,主要包括混充管理、
设备分配、设备处理和虚拟设备等功能。
(2)操作系统作为用户与计算机硬件系统之间的接
口
为方便用户使用操作系统,操作系统还提供了用户接口。
操作系统提供的接口主要分为两类:一类是命令接口,用户
利用这些操作命令来组织和控制作业的执行;另一类是程序
接口,编程人员可以使用它们来请求操作系统服务。
1)命令接口
使用命令接口进行作业控制的主要方式有两种:按作业
控制方式的不同,可以将命令接口分为联机命令接口和脱机
命令接口。
2)程序接口
程序接口由一组系统调用命令组成。用户通过在程序中
使用这些系统调用命令拉i请求操作系统提供的服务。用户
在程序中可以直接使用这组系统调用命令向系统提出各种
服务请求,如使用各种外部设备,进行有关磁盘文件的操作,
申请分配和收回内存以及其他各种控制要求。
所谓系统调用就是用户在程序中调用操作系统所提供
的一些子功能。具体的讲,系统调用就是通过系统调用命令
中断现行程序,而转去执行响应的子程序,以完成特定的系
统功能;系统调用完成后,返回程序的断点以继续执行。
系统调用命令是作为扩充机器命令提供的,目的是增强
系统功能,方便用户使用。而起通过系统调用的方式来使用
系统功能,可以保证系统的稳定性和安全性,防止用户随意
更改或访问系统的数据或命令。因此,在一些计算机系统中,
把系统调用命令成为广义指令。广义指令与机器指令在性质
上是不同的,机器指令使用硬件电路直接实现的,而广义命
令则是由操作系统提供的一个或多个子程序模块实现的。显
然,系统调用属于核心态指令。
(3)操作系统做扩充机器
没有任何软件支持的计算机成为裸机,它仅构成计算机
系统的物质基础,而实际呈现在用户面前的计算机系统是经
过若干层软件改造的计算机。裸机在最里层,他的外面是操
作系统,有操作系统提供的资源管理功能和方便用户的各种
服务功能,将裸机改造成功能更强、使用更方便的机器,通
常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。
4操作系统的结构
像现在操作系统这样庞大而复杂的系统,为了能正常工
作且容易修改和维护,在实现前必须认真设计操作系统的结
构。操作系统发展至今,其设计结构可以分成以下几类:
(1)简单结构。
(2)模块化结构
(3)分层式结构
(4)微内核结构
1.2、操作系统的发展与分类
1、手工操作阶段
2、脱机输入输出阶段
3、批处理阶段
批处理技术是指计算机系统对一批作业自动进行处理
的一种技术。批处理阶段的特点是:用户不用与计算机直接
打交道,而是通过专门的操作员来完成作业的输入输出。随
着外围设备的迅速发展,后来又出现了脱机批处理系统,即
主机直接与磁盘通信。
(1)单道批处理系统
主要特点:自动性、顺序性、单道性。
(2)多道批处理系统
多道程序设计技术是指在计算机内存中同时存放几道
相互独立的程序,它们在管理程序的控制下相互交替的运行。
其特征是:多道,宏观上并行,微观上串行。
4、分时操作系统
时停止运行,把处理器让给其他作业使用,等待下一轮再继
续运行,由于计算机速度很快,作业运行轮转的很快,给每
个用户的感觉好像是自己独占一台计算机。
分时操作系统十多个用户通过终端同事共享一台主机,
这些终端连接在主机上,用户可以同时与主机进行交互操作
而不互相干扰。所以,实现分时系统最关键的问题,是如何
使用户能与自己的作业进行交互,即当用户在自己的中断上
输入命令时,系统应能及时接收并及时处理该命令,再将结
果返回用户。分时系统也是支持多道程序设计的系统,但它
不同于多道批处理系统。多道批处理是实现作业自动控制而
无需人工干预的系统,而分时系统是实现人机交互的系统,
这使得分时系统具有与批处理系统不同的特征,其主要特征
如下:
同时性,交互性,独立性,及时性。
5、实时操作系统
实时系统的主要特点是:实时性和可靠性。
6、网络操作系统和分布式计算机系统
7、个人计算机操作系统
1.3、操作系统的运行环境
1、操作系统的运行机制
计算机系统中,通常CPU执行两种不同性质的程序,一
种是操作系统内核程序;另一种是用户自编程序或系统外城
的应用程序。对操作系统而言,这两种程序的作用不同,前
者是后者的管理者和控制者,因此“管理程序”要执行一些
特权指令,而“被管理程序”出于安全性考虑,不能执行这
些指令。所谓特权指令,是指计算集中不允许用户直接使用
的指令,如10指令、置中断指令。
操作系统在具体实现上划分了用户态和核心态,以严格
区分两种类程序。
一些与硬件关联交紧密的模块,诸如时钟管理程序、中
断处理程序、设备驱动程序等处于最底层。其次是运行频率
较高的程序,诸如金城关里、存储器管理和设备管理等。这
两部分内容构成了操作系统的内核。这部分内容的指令操作
工作在核心态。
内核是计算机上配置的最底层软件,是计算机功能的眼
神。不同系统对内核的定义稍有区别,大多数操作系统内核
包括四个方面的内容。
(1)时钟管理
在计算机外部设备中,时钟是最关键的设备。时钟的第
一功能是计时,操作系统需要通过时钟管理,向用户提供标
理系统中,通过时钟管理来衡量一个作业的运行程度等。因
此,系统管理的方方面面无不依赖于它。
(2)中断机制
引入中断技术的初衷是提高多道程序运行环境中CPU的
利用率,而且主要是针对外部设备的。后来的到发展,形成
了多种类等,成为操作系统各项操作的基础。例如键盘或鼠
标信息的输入、进程的管理和调度、系统功能的调用、设备
驱动、文件访问等,无不依赖于中断机制。可以说,现代计
算机系统是靠中断驱动的软件。
(3)原语
按层次结构涉及的操作系统,底层必然是一些可被调用
的公用小程序,他们各自完成一个规定的操作。其特点是:
1.他们处于操作系统的最底层,是最接近硬件的部分。2.这
些程序的运行具有原子性一一其操作只能一起合成。3.这些
通常把具有这些特点的程序成为原语。定义源于的直接
方法是关闭中断,让她的所有动作不可分割的进行完再打开
中断。
系统中的设备驱动、CPU切换、进程通信等功能中的部
分操作都可以定义为原语,是他们呢成为内核的组成部分。
(4)系统控制的数据结构及处理
系统中用来登记状态信息的数据结构很多。比如作业控
制块、进程控制块、设备控制块、各类链表、消息队列、缓
冲区、空闲区登记表、内存分配表等。为了实现有效地管理,
系统需要一些基本的操作,常见的操作有以下三种:
1)进程管理:进程状态管理、进程调度和分配、创建与
撤掉进程控制块的队列维护操作等。
2)存储器管理:存储器的空间分配和回收管理、内存信
息保护程序、代码对换程序等。
3)设备管理:缓冲区管理、设备分配和回收等。
从上述内容可以了解,核心态指令实际上包括系统调用
类指令和一些针对时钟、中断和原语的操作指令。
2、中断和异常的概念
在操作系统中引入核心态和用户态这两汇总工作状态
后,就需要考虑这两种状态之间如何切换。操作系统内核工
作在核心态,而用户程序工作在用户态。但系统不允许用户
程序实现核心态的功能,而它们又必须使用这些功能。
中断(interruption)也成为外中断,指来自CPU执行指
令以外的事件发生,如设备发出的10结束中断,表示设备
输入输出处理已经完成,希望处理器能够像设备发出下一个
输入输出请求,同事让王成输入输出后的程序继续进行。时
钟中断,表示一个固定的事件篇已到,让处理器处理计时、
启动定时运行的任务。这一类中断通常是与当前运行的程序
无关。中断可细分为硬中断和软中断。硬中断是硬件产生的;
软中断是软件产生的。
异常(Exception)也成为内中断、例外或陷入。指源自
算数一出、虚存系统的缺页以及专门的陷入指令等引起的时
间。对异常的处理一般要依赖与当前程序的运行现场,而且
异常不能被屏蔽,一旦出现异常立即处理,而关于内中断和
外中断的联系与区别如下:
这样,操作系统的运行环境可以理解为:用户通过操作
系统运行上层程序,而这个上层程序的运行以来与操作系统
的底层管理程序提供服务支持,当需要管理程序服务时,系
统则通过硬件中断机制进入核心态,运行管理程序;另外也
可能是程序运行出现异常情况,被动的需要管理程序的服务,
这是就通过异常处理来进入核心态。当管理程序运行结束时,
用户程序要继续进行,则通过相应保存程序现场推出中断处
理程序或异常处理程序,返回断点处继续执行。在操作系统
这一层面上,我们关心的是系统核心态和用户态的软件实现
和切换,对于硬件层面的具体理解,可以结合“计算机组成
原理”课程中有关中断的内容进行学习。
下面列举一些由用户态转向核心态的例子:
1)用户程序要求操作系统的服务,即系统服务。
2)发生一次中断
3)用户程序中产生了一个错误状态
4)用户程序中企图执行一条特权指令
5)从核心态转向用户态由一条指令实现,这条指令也
是特权指令。一般情况是中断返回指令。
注意,由用户态进入核心态,不仅仅是状态需要切换,
而且,所使用的对战也可能需要由用户堆栈切换为系统对战,
但这个系统对战也是属于该进程的。
1.4、本章疑难点
1.并行性与并发性的区别和联系
并行性和并发性是既相似又有区别的两个概念。并行性
是指两个或多个事件在同一时刻发生,并发性是指两个或多
2.分时系统与实时系统特征的比较
3.特权指令的工作机制
所谓特权指令是指有特殊权限的指令,由于这类指令的
全县最大,如果使用不当,就会皮怀系统或其他用户信息。
为了保证系统安全,这类指令只能用于操作系统或其他系统
软件,不直接提供给用户使用,主要用于系统资源的分配和
管理,包括改变系统的工作方式,检测用户的访问权限,修
改虚拟存储器管理的段表、页表和完成人五的创建和切换等。
在某些用户的计算机系统中,为了统一管理各种外部设备,
输入输出指令也作为特权指令,不允许用户直接使用。需要
输入输出操作时,必须通过系统调用,经由操作系统完成。
特权指令那个必须在核心态之星,核心态又叫做特权态、系
统态。实际上,CPU在核心态的下可以执行指令系统的全集。
为了防止用户系统中使用特权指令,用户态下只能使用
除特权指令以外的指令,核心态下可以使用全部指令。所以
把用户程序放在用户态下进行,而操作系统中必须使用特权
指令的那部分程序在核心态下运行,保证了计算机系统的安
全可靠。从用户态转换为核心态的唯一途径就是终端或异常。
4.系统调用产生的访管中断
程序员在编写程序时,因要求操作系统提供服务而有意
识的使用“访管指令”,从而导致程序中断,这属于一种自
愿性的中断,所以又称其为“访管中断”。“访管”中断是由
访管指令产生,程序员可以使用访管指令中设置参数,当CPU
执行到访管指令那个时,将访管指令中的操作数存入到主存
中的约定单元,然后产生访管中断,引出操作系统来处理访
管中断中的具体要求。这种利用访管指令来实现的指令成为
广义指令。当初与用户态的用户程序使用访管指令时,系统
根据该访管指令的操作数执行访管中断处理程序,访管中断
处理程序将按系统调用的操作数和参数转到响应的例行子
程序。完成服务功能后,退出中断,返回到用户程序断点继
续执行。
第二章进程管理
进程管理是操作系统的核心内容,也是每年必考的重点。
其中,进程概念、进程调度、信号量机制实现同步和互斥、
进程死锁等更是重中之重,要求熟练掌握。此外,需要注意
的是:本章除了选择题外还很容易考察综合题,在最近三年
的考研综合题有两道题考察了本章的知识点。其中信号量实
现进程同步和互斥,进程调度算法和银行家算法都是可能出
现的综合题考点,需要读者多加注意。
2.1、进程与线程
1、进程的概念和特征
(1)进程的概念
在多道程序环境下,允许多个程序并发执行,此时他们
将失去封闭性,并具有间断性和不可再现性的特征。为此引
入了进程的概念,以便更好地描述和控制程序的并发执行,
实现操作系统的并发行和共享性。为此引入了进程的概念,
以便更好地描述和控制程序的并发执行,实现操作系统的并
发性和共享性。
为了是参与并发执行的程序能独立的运行,必须为之配
置一个专门的数据结构,称之为进程控制块(process
controlblock),系统利用PCB来描述进程的基本情况和运
行状态,进而控制和管理进程。
程映像(进程实体)。所谓创建进程,实质上是创建进程映
像中的PCB;而撤销进程,实质上是撤销进程的PCBo指的
注意的是,进程影响是静态的,晋城市动态的。
从不同的角度,进程可以有不同的定义,比较经典的定
义有:
1)进程是程序的一次执行过程
2)进程是一个程序及其数据在处理器上顺序执行时所发
生的活动。
3)进程是具有独立功能的程序在一个数据集合上运行的
过程,他是系统进行资源分配和调度的一个独立单位。
在引入了进程实体的概念后,我们可以吧传统的操作系
统中的进程定义为:”进程是进程实体的运行过程,是系统
进行资源分配和调度的一个独立单位”。
(2)进程的特征
进程是由多程序的并发执行而引出的,他和程序是两个
截然不同的概念。进程的基本特征是对比单个程序的顺序执
行提出的,也是对进程管理提出的基本要求。
1)动态性:进程是程序的一次执行,他有着创建、活动、
暂停、终止等过程,具有一定的生命周奇奇,是动态
的产生、变化和消亡的。动杰性是进程最基本的特征。
2)并发性:至多个进程实体,同存于内存中,能在一段
是操作系统的重要特征,引入进程的目的就是为了是
程序能与去其他进程的程序并发执行,以提高资源利
用率。
3)独立性:指进程实体是一个能独立运行、独立获得资
源和独立接收调度的基本单位。范围建立PCB的程序
都不能作为一个独立的单位参与运行。
4)异步性:由于进程的相互制约,是进程具有执行的问
断性。也即进程按各自独立的、不可预知的速度向前
推进。异步性会导致执行结果不可再现性,为此,在
操作系统中必须配置相应的进程同步机制。
5)结构性:每个进程都配置一个PCB对其进行描述。从
结构上来看,进程实体是由程序段、数据段和进程控
制端三部分组成的。
2、进程的状态与转换
进程在其生命周期内,由于系统中个进程之间的相互制
约关系以及系统的运行环境的变化,使的进程的状态也在不
断地发生着变化。通常进程有以下五种状态。前三种是进程
的基本状态。
1)运行状态:进程正在处理器上运行。在单处理
器的环境下,每一时刻最多只有一个进程处于
运行状态。
2)就绪状态:进程已处于准备运行的状态,即进
程获得了除CPU之外的一切所需资源,一旦得
到处理器即可运行。
3)阻塞状态:又称为等待状态:进程正在等待某
一事件而暂停运行,如等待某资源为可用(不
包括处理器),或等待输入输出的完成。及时处
理器空闲,该进程也不能运行。
4)创建状态:进程正在被创建,尚未转到就绪状
态。创建进程通常需要多个步骤:首先申请一
个空白的PCB,并向PCB中填写一些控制和管
理进程的信息;然后由系统为该进程分配运行
时所必须的资源;最后把该进程转入到就绪状
态。
5)结束状态:进程正在从系统中消失,这可能是
进程正常结束或其他原因中断退出运行。当进
程需要结束运行时,系统首先必须置该进程为
结束状态,然后再进一步处理资源释放和回收
工作。
注意区别就绪状态和等待状态:就绪状态是指进程仅缺
少处理器,只要活得处理器资源就立即执行;而等待状态是
指进程需要其他资源或等待某一事件,及时处理器空闲也不
能运行。
3、进程控制
进程控制的主要功能是对系统中所有进程实施有效地
管理,她具有创建新进程、撤销已有进程、实现进程状态转
换等功能。在操作系统中,一般把进程控制用的程序段成为
原语,原语的特点是执行期间不允许中断,他是一个不可分
割的基本单位。
(1)进程的穿件
允许一个进程创建另一个进程。
操作系统创建一个新进程的过程如下(创建原语):
1)为新进程分配一个为我一个进程标示号,并申请一个
空白的PCB。
2)为进程分配资源,为新进程的程序和数据,以及用户
占分配必要的空间。
3)初始化PCB,主要包括初始化标识信息、初始化处理
器状态信息和初始化处理器控制信息,以及设置进程
的空闲及。
4)如果进程就绪队列能够接纳新进程,就将新进程插入
到就绪队列,等待被调度运行。
(2)进程的终止
务已经完成和准备退出运行。异常结束是指进程在运行时,
发生了某种异常事件,是程序无法继续运行,如:存储区越
界、保护措、非法指令、特权指令错、10故障等。外界干预
是指进程外界的请求而终止,如操作员或操作系统干预、父
进程请求和父进程终止。
操作系统终止进程的过程如下:(撤消原语)
1)根据被终止进程的标示符,检索PCB,从中读出该进
程的状态。
2)若被终止进程处于执行状态,立即终止该进程的执行,
将处理器资源分配给其他进程。
3)若该进程还有子进程,则应将其所有子进程终止。
4)将该进程所拥有的资源、或归还给父进程或归还给操
作系统。
5)将该PCB从所在队列(链表)中删除。
(3)进程的阻塞和唤醒
系统资源失败、等待某种操作的完成、新数据尚未到达或无
心工作可做等,则由系统自动执行阻塞原语,使自己由运行
状态变为阻塞状态。可见,进程的阻塞是进程自身的一种主
动行为。
阻塞原语的执行过程为:找到将要被阻射进城的标识号
对应的PCB,如果该进程为运行状态,则保护其现场,将其
等待队列中去;若为就绪状态,则将其状态改为阻塞状态,
把它溢出就绪队列,插入到等待队列中去。
作已完成或其所期待的数据已到达,则有关进程(比如,提
供数据的进程),调用唤醒原语,将等待该事件的进程唤醒,
唤醒原语的执行过程是:在该事件的等待队列中找到相应进
程的PCB,然后把该PCB插入到就绪队列中,等待调度程序
调度。
需要注意的是,Block原语和Wakeup原语是一对作用刚
好相反的原语,必须成对使用。Block原语是由被阻塞进程
自我调用实现的,而Wakeup原语则是由一个与被唤醒进程
(4)进程的切换
无论什么样的进程操作,都是在内核执行的。
进程切换是指当前正在运行的进程被转换到其他状态
后,再回到运行继续执行的过程,这个过程中,进程的运行
环境产生了实质性的变化。进程切换的过程如下:
1)保存处理器上下文,包括程序计数器和其他寄存器。
2)更新PCB信息。
塞等队列。
4)选择另一个进程执行,并更新其PCBo更新内存管理
的数据结构。
5)恢复处理器的上下文。
4、进程的组织
进程是操作系统的资源分配和独立运行的基本单位。
(1)进程控制块
进程创建时,操作系统就新建一个PCB结构,它之后就
常驻内存,任意时刻可以存取。在进程结束时删除。PCB是
进程实体的一部分,是进程存在的唯一标识。
PCB主要包括:进程描述信息、进程控制和管理信息、
在一个系统中,通常存在这许多进程,有的处于就绪状
态,有的处于阻塞状态,而且阻塞的原因各不相同。为了方
便进程的调度和管理,需要将各进程的PCB用适当的方法组
织起来。目前,常用的组织方式有连接方式和索引方式两种。
连接方式将同一状态的PCB连接成一个队列,不同状态对应
不同的队列,也可以把处于阻塞状态的进程的PCB,根据其
阻塞原因的不同,排成多个阻塞队列。索引方式是将同一状
态的进程组织在一个索引表中,索引表的表项只想相应的
PCB,不同状态对应不同的索引表,如就绪索引表和阻塞索
引表等。
(2)程序段
程序段就是能北京城调度程度调度到CPU执行的程序代
码段。注意,程序可以被多个进程共享,就是说多个进程可
以运行同一个程序。
(3)数据段
一个进程的数据段,可以是进程对应的程序加工处理的
原始数据,也可以是程序执行时产生的中间或最终结果。
5、进程的通信
进程通信就是进程之间的数据交换。PV操作时低级通信
方式2,高级通信方式是指以较高的效率传输大量数据的通
信方式。高级通信方法可分为共享存储、消息传递和管道通
信三大类。
(1)共享存储
在通信的进程之间存在着一款可以直接访问的共享空
换。在共享存储方法中,需要使用同步互斥工具。
需要注意的是:用户进程空间一般都是相互独立的,要
想让两个用户进程共享空间,必须通过特殊系统调用实现,
而进程内的线程是自然共享进程空间的。
(2)消息传递
在消息传递系统中,进程间的数据交换,是以格式化的
小心Message为单位的。
(3)管道通信
管道通信是消息传递的一种特殊方式。。所谓管道,就
是用于连接一个读进程和一个写进程以实现他们之间通信
的一个共享文件,又名为pipe文件。向管道或共享文件提
供输入的发送进程,以字符流的形势将大量的数据送入写管
道;而接收管道输出的接收进城,则从管道中接受数据。为
了协调双方的通信,关到极致必须他提供以下撒按方面的协
调能力:互斥、同步和确定对方存在。
6、线程概念和多线程模型
(1)线程的基本概念
引入进程的目的,是为了是多道程序能并发执行,以提
高资源利用率和系统吞吐量;而引入线程,则是为了减小程
序在并发执行时所付出的时空开销,提高操作系统的并发性
能。
线程最直接的理解就是“轻量级进程”,它是一个基本
的CPU执行单元,也是程序执行流的最小单元,由线程ID、
程序计数器、寄存器集合和堆栈组成。线程是进程中的一个
实体,是被系统独立调度和分派的基本单位。进程只作为除
CPU以外的系统资源的分配单元,线程则作为处理器的分配
单元。线程也有就绪、阻塞和运行三种基本状态。
(2)线程和进程的比较
1)调度:在引入线程的操作系统中,线程是独立调度的
基本单位,进程是资源拥有的基本单位。
2)拥有资源:进程是拥有资源的基本单位,而线程不拥
有系统资源,单线程可以防伪其隶属进程的系统资源。
3)并发性:在引入线程的操作系统中,不仅进程之间可
以并发执行,线程之间也可以并发执行,从而是操作
系统具有更好的并发性,大大提高了系统的吞吐量。
4)系统开销:线程开销极小。
5)地址空间和其他资源:进程的地址空间之间相互独立,
同一进程的各线程间共享进程的资源,进程内的线程
对进程外的其他进程不可见。
6)通信方面:进程间通信需要进程同步和互斥手段的辅
助,以保证数据的一致性,而线程间可以直接读写进
程数据段来进行通信。
(3)线程的属性
在多线程操作系统中,八仙城作为独立运行的基本单位。
此时的进程已不是一个基本可执行的实体。线程的主要属性
1)线程是一个轻型实体,它不拥有系统资源,但每个线
程都应有一个唯一的标识符和一个线程控制块,线程
控制块记录了线程执行的寄存器和栈等现场情况。
2)不同的线程可以执行相同的程序,即同一个服务程序
被不同的用户调用时,操作系统为他们创建不同的线
程。
3)统一进程中的各个线程共享该进程所拥有的系统资源。
4)线城市处理器的独立调度单位,多个线程是可以并发
执行的。
5)一个县城被创建后便开始了它的生命周期,直至终止,
线程在生命周期内会经历等待态、就绪态和运行态等
各种状态变化。
(4)线程的实现方法
线程的实现可以分为两类:用户级线程和内核级线程。
(5)多线程模型
有些系统同时支持用户线程和内核线程,由此产生了不
同的多线程模型,即实现用户级线程和内核级线程的连接方
1)多对一模型。多对一模型将多个用户级线程映射到一
个内核级线程。线程管理在用户空间完成。
2)一对一模型。
3)多对多模型。
特点:克服了多对一模型的并发度不高的缺点,又克服
了一对一模型中一个用户进程占用太多内核级线程,开销太
大的缺点。
2.2、线程的调度
1、调度的概念
(1)调度的基本概念
在多道程序系统中,进程的数量往往多于处理器的个数,
进程争用处理器的情况在所难免。处理器调度是对处理器进
行分配,就是从就绪队列中,按照一定的算法,选择一个进
程并将处理器分配给他运行,以实现进程的并发执行。
处理器调度是多道程序操作系统的基础,它是操作系统
设计的核心问题。
(2)调度的层次
一个作业从提交开始知道完成,往往要经历一下三级调
度:
1)作业调度。作业调度又称高级调度:其主要任务是
按一定的原则从外存上处于后备状态的作业中挑选一个或
多个作业,给他们分配内存、输入输出设备等必要的资源。
并建立相应的进程,以使他们获得竞争处理器的权利。
多道批处理系统中大多配有作业调度,而其它系统中通
常不需要配置作业调度。作业调度的执行频率较低,通常为
几分钟一次。
2)中级调度。中级调度又称内存调度。引入中级调度
视为了提高内存利用率和系统吞吐率,为此,应使那些暂时
不能运行的进程调至外存等待,把此时的进程状态称为挂起
状态。当他们已具备运行条件且内存有稍有空闲时,由中级
调度来决定,吧外存上那些已具备运行条件的就绪进程,在
重新调入内存,并修改其状态为就绪状态,挂在就绪队列上
等待。
3)进程调度。进程调度又称为低级调度,其主要任务
是按照某种方法和策略从就绪队列中选取一个进程,将处理
器分配给它。进程调度是操作系统中最基本的一中调度,在
一般操作系统中都不需配置进程调度。进程调度的频率很高,
一般几十毫秒一次。
(3)三级调度的联系
作业调度从外存的后备队列中选择一批作业进入内存,
为他们建立进程。这些进程被送入就绪队列。进程调度从就
绪队列中选出一个进程,并把其状态改为运行状态,把CPU
分配给它。中级调度是位于高级调度和低级调度之间的一种
调度。为了提高内存的利用率,系统将那些暂时不能运行的
进程挂起来。当内存空间宽松式,通过中级调度选择具备运
行条件的进程,将其唤醒。
2、调度的时机、切换与过程
进程调度和切换程序是操作系统内核程序。当请求调度
的事件发生后,才可能会运行进程调度程序,当调度了新的
就绪进程后,才会去进行进程间的切换。
现在操作系统中,不能进行进程的调度与切换的情况有
以下几种:
1)在处理中断的过程中:中断处理过程复杂,在
实现上很难做到,而且中断处理时系统工作的
一部分,逻辑上不属于某一进城,不应被剥夺
处理器资源。
2)进程在操作系统内核程序临界区中:进入临界
区后,需要独占式的访问共享数据,理论上必
须加锁,以防止其他并行程序的进入,在解锁
前不应该切换到其他进程,以加快该共享数据
的释放。
3)其他需要完全屏蔽中断的原子操作过程中:如
加锁、解锁、中断现场保护、恢复等等源自操
作。在原子过程中,连中断都要屏蔽,更不应
该进行进程的切换。
如果在上述过程中发生了引起调度的条件,并不能马上
进行调度和切换,应置系统请求调度标志,知道上述过程结
束后才能进行相应的调度和切换。
应该进行进程的调度与切换的情况有:
1)当发生引起调度条件且当前进程无法继续运行下去时,
可以马上进行调度与切换。如果操作系统只在这种情
况下进行进程调度,就是非剥夺调度。
2)当中断处理结束后或自陷处理结束后,返回被中断进
程的用户态程序执行现场前,若置上请求调度标志,
即可马上进行进程调度与切换。如果操作系统支持这
种情况下的运行调度程序,就实现了剥夺方式的调度。
进程切换往往在调度完成后立刻发生,它要求保存源进
程当前切换点的县城信息,恢复被调度进程的现场信息。现
场切换时,操作系统内核将远近程的现场信息推入到当前进
程的内核对战来保存他们,并更新堆栈指针。内核完成从新
进程的内核栈中装入新进程的县城信息、更新当前运行进程
进程。
3、进程调度方式
所谓进程调度方式是指当某一个进程正在处理器上执
行时,若有某个更为重要或紧迫的进程需要处理,既有优先
权更高的进程进入就绪队列,此时应如何分配处理器。通常
有一下两种进程调度方式:
(1)非剥夺调度方式
非剥夺调度方式又称为非抢占调度方式,是指当一个进
程正在处理器上执行时,即使有某个更为重要或紧迫的进程
进入就绪状态,仍然让正在执行的进程继续执行,知道该进
给更为重要或紧迫的进程。
(2)剥夺调度方式
剥夺调度方式又称为抢占方式,是指当一个进程正在处
理器上执行时,若有某个更为重要或紧迫的进程需要使用处
理器,则立即暂停正在执行的进程,将处理器分配给这个更
为重要或紧迫的进程。
“剥夺”不是一种任意性行为,必须遵循一定的原贝I:
4、调度的基本准则
不同的调度算法具有不同的特性,在选择调度算法时,
必须考虑算法所具有的特性。为了比较处理器调度算法的性
能,人们提出很多评价准则,下面介绍主要的几种准则:
(1)CPU利用率
CPU是计算机系统中最重要的资源之一,所以应尽可能
使CPU保持在忙状态,是这一资源利用率最高。
(2)系统吞吐量
高系统的吞吐量。调度算法和方式的不同,也会对系统的吞
吐量产生较大的影响。
括作业等待、在就绪队列中排队、在处理器上运行以及进行
间越长,用户满意度越低。处理器调度算法实际上并不影响
5、典型的调度算法
通常系统的设计目标不同,所采用的调度算法也不同。
在操作系统中存在多种调度算法,其中有的调度算法适用于
作业调度,有的调度算法适用于进程调度,有的调度算法两
者都适用。下面介绍几种常用的调度算法:
(1)FIFS先来先服务调度算法
特点:算法简单,但是效率低;有利于长作业,不利于
短作业;有利于CPU繁忙型作业而不利于10繁忙型作业。
(2)SJF短作业优先调度算法
短作业(进程)优先调度算法是指对短作业祸端进程优
先调度的算法。短作业优先调度算法是从后备队列中选择一
行。
SJF调度算法的缺点:
1)该算法对长作业不理。
2)该算法完全未考虑作业的紧迫程度
3)由于作业的长短只根据用户所提供的估计执行时
间而定的,而用户又可能会有意或无意的缩短其作
算作业优先调度。
间最少。
(3)优先级调度算法
(4)高响应比优先调度算法
高响应比优先调度算法主要用于作业调度。同时考虑从
(6)多级反馈队列调度算法
优先级调度算法的综合和发展。通过动态调整进程优先级和
目标。
2.3、进程同步
1、进程同步的基本概念
多道程序环境下,进程是并发执行的,不同进程间存在
着不同的相互制约关系。为了协调进程之间的相互制约关系,
达到资源共享和进程协作,避免进程之间的冲突,引入了进
程同步的概念。
(1)临界资源
多个进程可以共享系统中的各种资源,但其中许多资源
一次只能为一个进程所使用,我们把一次只允许一个进程使
用的资源成为临界资源。
对临界资源的访问,必须互斥的进行。每个进程中,访
问临界资源的那段代码成为临界区。
为了保证临界资源的正确使用,可以把临界资源的访问
过程分为四个部分。
1)进入区。为了进入临界区使用临界资源,在进入去要
检查可否进入临界区。
2)临界区。进程中访问临界资源的那段代码。
3)退出区。将正在访问临界区的标志清除。
4)剩余区。代码中的其余部分。
do{
entrysection;
criticalsection;
exitsection;
remaindersection;
}while(true)
(2)同步
同步已成为直接制约关系,它是为完成某种任务而建立
的两个或多个进程。这些进程因为需要在某些位置上协调他
们的工作次序而等待、传递信息所产生的制约关系。进程间
的直接制约关系就是它们之间的相互合作。
(3)互斥
互斥亦称间接制约关系。当一个进程进入临界区使用临
界资源时,另一个进程必须等待,当占用临界资源的进程退
出临界区后,另一个进程才允许去访问此临界资源。
2、实现临界区互斥的基本方法
(1)软件实现方法
在进入区设置和检查一些标志来表名是否有进程在临
界区中,如果已有进程在临界区,则在进入区通过循环检查
进行等待,进程离开临界区后则在退出区修改标志。
(3)硬件实现方法
本节对硬件实现的具体理解对后面的信号量学习很有
帮助。计算机提供了特殊的硬件指令,允许对一个字中的内
容进行检测和修正,活着是对两个字的内容进行交换等。通
过硬件支持实现临界段问题的低级方法或称为元方法。
1)中断屏蔽方法。当一个进程正在使用处理器执行他的
临界区代码时,要防止去其他进程在进入其临界区访
问的最简单方法就是禁止一切中断的发生,或称之为
屏蔽中断、关中断。因为CPU只有在发生中断时引起
进程的调度和切换,这样屏蔽中断就能保证当前运行
进程将临界区代码顺利的执行完,然后再开中断。
这种方法限制了处理器交替执行程序的能力,因此执行
的效率将会明显降低。对内核来说,当它执行更新变量或列
表的几条指令期间关中断是很方便的,但将关中断的权力交
给用户则很不明智,若一个进程关中断之后不再打开终端,
则系统可能会因此终止。
2)硬件爱你指令法。
TestAndSet指令:这条指令是原子操作。及执行该代码
是不允许被中断。其功能是独处制定标志后把该标志设置为
真。
BooleanTestAndSet(Boolean*lock){
Booleanold;
01d=*lock;
*lock=true;
Returnold;
Lock为每个临界资源设置的共享布尔变量,true表示
正在被占用,false表示没被占用。
WhileTestAndSet(&lock);
进程的临界区代码;
Lock=false;
进程剩余代码;
Swap指令:该指令的功能是交换两个字的内容。
Swap(Boolean*a,Boolean*b){
Booleantemp;
Temp=*a;
*a二*b;
*b=temp;
}
以上对TestAndSet和Swap指令仅仅是功能实现,并非
软件实现定义,事实上他们是由硬件逻辑直接实现的,不会
被中断。
硬件方法优点:使用与任意数目的进程,不管是单处理
器还是多处理器:简单、容易验证其正确性。可以支持进程
内有多个临界区,只需要为每个临界区设立一个布尔变量。
硬件方法的缺点:进程等待进入临界区时要耗费处理器
临界区,有的进程可能一直选不上,从而导致“饥饿”现象。
3、信号量
信号量机构是一种功能较强的机制,可用来解决互斥与
同步的问题,它只能被两个标准原语wait和signal来访问,
也可以记作p操作和v操作。
原语是指完成某种功能且不被分割不被中断执行的操
作序列,有时也成为原子操作,通常可用硬件来实现完成某
种功能的不可分割执行特性。
(1)整形信号量
整形信号量被定义为一个用于表示资源个数的整型量So
(2)记录性信号量
记录性信号量是不存在“忙等”现象的进程同步机制。
除了需要一个用于代表资源数的整型变量value外,再增加
一个进程链表L,用于连接所有等待该资源的进程,记录型
信号量是由于采用了记录型的数据结构得名。记录型信号量
可描述为:
Typedefstruct{
Intvalue;
Structprocess*L;
}semaphore;
Wait操作,表示进程请求一个该类资源,当S.valueVO
时,表示该类资源已分配完毕,因此进程调用block原语,
进行自我阻塞,放弃处理器,并插入到S.L中,可见该机制
遵循了“让权等待”的原则。Signal操作,表示进程释放
一个资源,使系统中可供分配资源数增加一,故S.value++o
若加1后仍是S.value〈二0,则表示S.L中仍有等待该资源的
进程被阻塞,故还应调用wakeup原语,将S.L中的第一个
等待进程唤醒。
(3)利用信号量实现同步
信号量机构能用于解决进程间各种同步问题。
(4)利用信号量实现互斥
信号量机构能很方便的解决进程互斥问题。
互斥的实现是不同进程对同一信号量进行P操作和V操
作,一个进程在成功地对信号量执行了P操作后进入临界区,
并在退出临界区后,由该进程本身对该信号量执行V操作,
表示当前没有进城进入临界区,可让其他进程进入。
(5)利用信号量实现前驱关系
信号量也可以用来描述程序之间或者语句之间的前驱
关系。
(6)分析进程同步或互斥问题的方法步骤
1)关系分析。找出问题中的进程数,并且分析它们之间
的同步和互斥关系。同步、互斥、前去关系直接按照
上面例子中的经典犯事改写。
2)整体思路。找出解决问题的关键点,并且根据做过的
题目找出解决的思路。根据进程的操作流程确定P操
作、V操作的大致顺序。
3)设置信号量。根据上面两步,设置需要的信号量,确
定初值,完善整理。
4、管程
(1)管程的定义
管程是一组数据以及定义在这组数据之上的对这组数
据的操作组成的软件模块,这组操作能初始化并改变管程中
的数据和同步进程。
(2)管程的组成
1)局部与管程的共享结构数据说明
2)对该数据结构进行操作的一组过程
3)对局部于管程的共享数据设置初始值的语句
(3)管程的基本特性
1)局部于管程的数据只能被局部于管程内的过程访问。
2)一个进程只有通过调用管程内的过程才能进入广成
访问的共享数据。
3)每次仅允许一个进程在管程内执行某个内部过程。
由于管程是一个语言成分,所以管程的互斥访问完全由
确。
5、经典同步问题
(1)生产者-消赛者问题
问题描述:一组生产者进程和一组消赛者进程共享一个
初始为空、大小为n的缓冲区,只有缓冲区没满时,生产者
才能把消息放入到缓冲区,否则必须等待;只有缓冲区不为
空时,消费者才能从中取出消息,否则必须等待。由于缓冲
区是临界资源,它只允许一个生产者放入消息,或一个消费
者从中取出消息。
问题分析:
1)关系分析。生产者和消费者对缓冲区互斥访问是互
斥关系,同时生产者和消费者又是一个相互协作的关系,只
有生产者生产之后,消费者才能消赛,他们也是同步关系。
2)整理思路。这里比较简单,只有生产者和消赛者两
个进程,正好是这两个进程存在着互斥关系和同步关系。那
么需要解决的是胡吃喝同步PV操作的位置。
3)信号量的设置。信号量mutex作为互斥信号量,它
用于控制互斥访问缓冲池,互斥信号量初始为1;信号量full
用于记录当前缓冲池中“满”缓冲区数,初值为0.信号量
empty用于记录当前缓冲池中空缓冲区,初值为n。
下面再看一个较为复杂的生产者-消费者问题:
问题描述:桌子上有一只盘子,每次孩子能向其中放入
一个水果。爸爸专向盘子中放入苹果,妈妈专向盘子中放入
橘子,女儿专等吃盘子中的苹果,儿子专等吃盘子中的橘子。
只有盘子为空时,爸爸或妈妈就可向盘子中放一只水果2;
仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中
取出。
1)关系分析。这里的关系略微复杂一些,首先由每次
只能向其中放入一只水果可知爸爸和妈妈是互斥关系。爸爸
和女儿、妈妈和儿子是同步关系,而且这两对进城必须连起
来,儿子和女儿之间没有互斥和同步关系,因为他们是选择
条件执行,不可能并发。
2)整理思路。这里有4个进程,实际上可以抽象为两
个生产者和两个消费者被连接到大小为1的缓冲区上。
3)信号量设置。首先设置信号量plate为互斥信号量,
表示是否允许想盘子放水果,初值为1,表示允许放入,且
只允许放一只。信号量apple表示盘子里是否有苹果,初值
为0,表示盘子中无2苹果;信号量orange表示盘子中是否
有橘子,初始量为0,表示盘子中无橘子。
(2)读者-写着问题
问题描述:有读者和写者两组并发进程,共享一个文件,
当两个以上的读进程同事访问共享数据时不会产生副作用,
但若某个写进程和其他进程(读进程或写进程)同时访问共
享数据时则可能导致数据不一致的错误。因此要求:1)允
许多个读者同时对文件执行读操作;2)只允许一个写者往
文件中写信息;3)任一写者在完成写操作之前不允许其他
读者或写者工作;4)写者执行完写操作前,应让已有的读
者或写者全部退出。
1)关系分析。由题目分析读者和写者是互斥的,写者
和写者也是互斥的,而读者和读者不存在互斥关系。
2)整理思路。两个进程,即读者和写者。写者比较简
凡,它和任何进程互斥,用互斥信号量p操作、v操作即可
解决。读者的问题比较复杂,它必须实现与写着互斥的关系,