进程的引入和基本概念
1.程序的顺序执行
1)程序:是完成某个特定功能的指令的有序序列,是一个在时间上按严格次序前后相继的操作序列。
2)程序的顺序执行:具有独立功能的程序独占CPU直到最终结果的过程。特点是顺序性、封闭性、可再现性。
(1)顺序性:当程序在处理机上执行时,处理机的操作严格按照程序所规定的顺序执行。
(2)封闭性:所谓封闭性是指程序一旦开始执行,其执行过程不受任何外界因素影响。
(3)可再现性:指程序对一组数据的重复执行必得到相同的结果。
(4)确定性:其程序执行结果与执行速度、时间的无关性。
2.程序的并行执行
程序的并发执行:两个或两个以上程序在计算机系统中同处于己开始执行且尚未结束的状态。
并发程序:能够参与并发执行的程序称为并发程序。
特点:1、在执行期间并发程序相互制约;
2、程序与计算不再一一对应;
3、并发程序的执行结果不可再现;
4、程序的并行执行与程序的并发执行;
程序顺序执行与并发执行比较
顺序执行 | 并发执行 |
程序顺序执行 | 间断执行,多个程序各自在“走走停停”中进行 |
程序具有封闭性 | 程序失去封闭性 |
独享资源 | 共享资源 |
具有可在现性 | 失去可再现性 |
| 有直接和简接的相互制约 |
3.进程的概念
1)进程的定义:“进程”是操作系统的最基本、最重要的概念之一。但迄今为止对这一概念还没有一个确切的统一的描述。下面给出几种对进程的定义描述。
l进程是程序的一次执行。
l进程是可以并行执行的计算。
l进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。
l进程是程序在一个数据集合上的运行过程。它是系统进行资源分配和调度的一个独立单位。
2)进程的特征:
动态性:是程序的一次执行;
并发性:进程是可以并发执行;
独立性:是系统进行资源分配和调度的一个独立单位;
异步性:进程间的相互制约,使进程执行具有间隙;
结构性:进程是具有结构的。;
3)进程与程序的主要区别:
(1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
(2)程序是静态的观念,进程是动态的观念;
(3)进程具有并发性,而程序没有;
(4)进程是竞争计算机资源的基本单位,程序不是。
(5)进程和程序不是一一对应的:
一个程序可对应多个进程即多个进程可执行同一程序;
一个进程可以执行一个或几个程序。
4.进程的组成
进程由三部分组成: 程序、数据和进程控制块(PCB,描述进程活动情况的数据结构)。
PCB是用来描述进程的基本情况和进程的运行变化过程,是进程存在的唯一标志。是进程组成中最关键的部分。PCB应包含如下一些基本信息:
进程标识数:系统中的每个进程都有一个唯一的标识数,以便区分或标识不同的进程。
进程的状态:说明进程目前所处的状态。
CPU现场保护区:当进程由于某种原因不能继续运行时,要将其CPU运行的现场信息保存起来,以便下次继续运行。(通常,CPU的现场信息包括:程序计数器(PC)、工作寄存器、程序状态字等。)
CPU的调度信息:包括进程优先级、进程所在各种队列的指针。
位置信息:进程要执行的程序在主存和外存起始地址,及存取保护信息。
进程使用的资源信息:包括分配给进程的I/O设备、正在执行的I/O请求信息、当前进程正打开的文件等。
记帐信息:包括CPU占用量,实际所用时间量,帐号等。
进程的状态:说明进程目前所处的状态。
CPU现场保护区:当进程由于某种原因不能继续运行时,要将其CPU运行的现场信息保存起来,以便下次继续运行。(通常,CPU的现场信息包括:程序计数器(PC)、工作寄存器、程序状态字等。)
CPU的调度信息:包括进程优先级、进程所在各种队列的指针。
位置信息:进程要执行的程序在主存和外存起始地址,及存取保护信息。
进程使用的资源信息:包括分配给进程的I/O设备、正在执行的I/O请求信息、当前进程正打开的文件等。
记帐信息:包括CPU占用量,实际所用时间量,帐号等。
5.进程之间的家族关系:在进程的树型结构系统中,进程之间存在着家族关系。创建进程的进程称为父进程,被创建进程称为子进程。因此,进程控制块中应记录本进程的父进程是谁,它的子进程又是谁。
进程的基本状态及其转换
1.进程基本状态:
1) 运行态(Running):进程正在占用CPU;
2) 就绪态(Ready):进程具备运行条件,但尚未占用CPU;
3) 阻塞态(Blocked):又称等待态,进程由于等待某一事件不能运行时处于阻塞态。处于阻塞态的进程在逻辑上是不能运行的,即使CPU空闲,它也不能占用CPU。
2.进程状态的转换
处于就绪状态的进程,在进程调度程序为之分配了处理机之后,便由就绪状态转变为执行状态。正在执行的进程也称为当前进程。如果因时间片已完而被 暂停执行时,该进程将由执行状态转变为就绪状态;如果因发生某事件而使进程的执行受阻(例如,进程请求访问某临界资源,而该资源正被其他进程访问),使之 无法继续执行,该进程将由执行状态转变为阻塞状态。图2-1给出了进程的三种基本状态及各状态之间的转变。
|
|
|
|
|
|
图2-1 进程的三种基本状态及其转换
需要说明的是,处于执行状态的进程因等待某事件而变为阻塞状态时,当等待的事件发生之后,被阻塞的进程并不恢复到执行状态,而是先转变到就绪状态,再由调度程序重新调度执行。原因很简单,当该进程被阻塞后,进程调度程序会立即把处理机分配给另一个处于就绪状态的进程。
进程的控制
所谓进程控制,是指系统使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各状态间转换等一系列的有效管理。进程控制一般是由操作系统的内核来实现的。
在进行层次设计时,往往把一些与硬件紧密相关的模块或运行频率较高的模块以及为许多模块公用的一些基本操作,安排在靠近硬件的层次中,并使它们常驻内层,以提高OS的运行效率,通常将这一部分称为OS的内核。亦即OS内核是OS常驻内存的程序和数据。
内核的基本功能有:
(1)中断处理
这是操作系统中内核的最基本功能,也是整个操作系统赖以活动的基础。通常,内核只对中断进行“有限的处理”,然后便转由有关进程继续处理;
(2)进程管理
进程管理的任务有四个:进程的建立和撤消;进程状态的转换。系统应能使进程从阻塞变为就绪,把活动进程挂起或把挂起的进程激活;进程调度。进行处理机的重新分配;控制进程的并发执行。保证进程间的同步,实现相互协作进程间的通信。
(3)资源管理中的基本操作
包括对时钟、I/O设备和存储器管理的基本操作。
执行过程不允许被中断的程序段,或者说其执行过程不可分割。我们把这样的程序段叫原语。用于进程控制的原语有:创建原语、撤消原语、阻塞原语、唤醒原语、挂起原语、解挂(激活)原语、改变进程优先级
进程间的通信
1.进程的同步与互斥
一般来说同步反映了进程之间的协作性质,往往指有几个进程共同完成一个任务时在时间次序上的某种限制,进程相互之间各自的存在及作用,通过交换信息完成通信。
进程互斥体现了进程之间对资源的竞争关系,这时进程相互之间不一定清楚其它进程情况,往往指多个任务多个进程间的通讯制约。
2.临界区
系统中一些资源一次只允许一个进程使用,这个资源称为临界资源。而在进程中访问临界资源的那一段程序称为临界区。
系统对临界区的管理原则:
(1)有空既进:没有进程在临界区时,允许一个进程立即进入临界区。
(2)无空则等:若有一个进程已经在临界区,其他要求进入临界区的进程必须等待。
(3)有限等待:进程进入临界区的要求必须在有限时间里得到满足。
(4)让权等待:当进程不能进入自己的临界区时,应释放CPU资源。
3.信号量及P、V原语
1965年,荷兰学者Dijkstra提出的信号量机制是一种进程同步工具。其基本原则是在多个相互合作的进程之间使用简单的信号来协调控制。 一个进程检测到某个信号后,就被强迫停止在一个特定的地方,直到它收到一个专门的信号为止才能继续执行。这个信号就称为“信号量”。其工作方式有点类似于 十字路口的交通控制信号灯。
信号量被定义为含有整型数据项的结构变量,其整型值大于等于零代表可供并发进程使用的资源实体数,但小于零时则表示正在等待使用临界区的进程数。
对信号量的操作由两个P、V操作原语来实现。所谓原语即是执行时不可中断的过程。P操作原语和V操作原语可分别定义如下:
P(S):①将信号量S的值减1,即S=S-1;
②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S=S+1;
②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意信号量的值仅能由PV操作来改变。
一般来说,信号量S³0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个v操作意味着释放一个单位资源,因此s的值加1;若s£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。
4.利用信号量实现互斥
为使多个进程间能互斥地访问临界资源,只需为该资源设置一互斥信号量mutex,并设其初始值为1,然后将各进程的临界区CS置于 P(mutex)和V(mutex)之间即可。这样,每欲访问临界资源的进程,在进入临界区这前,要先对mutex执行P操作,若该资源未被访问,则本次 P操作成功,该进程便可进入自己的临界区,这时若再有其他进程欲进入自己的临界区,在对mutex执行P操作后必然会失败而阻塞,从而保证了临界资源被互 斥地访问。当访问临界资源的进程退出临界区后,应再对mutex执行V操作,释放该临界资源。
进程调度
1.进程调度的三个级别
一般来说,处理机调度可分为三个级别,分别是高级调度、中级调度和低级调度。
高级调度又称作业调度,作业就是用户程序及其所需的数据和命令的集合,作业管理就是对作业的执行情况进行系统管理的程序的集合。作业调度程序的主要功能是审查系统是否能满足用户作业的资源要求以及按照一定的算法来选取作业。
引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量,使得暂时不运行的进程从内存对换到外存上。
低级调度又称进程调度,其主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。进程调度是操作系统中最基本的一种调度,其调度策略的优劣直接影响整个系统的性能。
2.进程调度的职责
按选定的进程调度算法从就绪队列中选择一个进程,让它占用处理器。
3.选择进程调度算法的几个准则
·提高处理器利用率
·增大吞吐量
·减少等待时间
·缩短响应时间
4.进程调度的常用算法
1)先来先服务调度算法:按进程进入就绪队列的先后次序选择可以占用处理器的进程。
2)优先级调度算法:对每个进程确定一个优先数,该算法总是让优先数最高的进程先使用处理器。对具有相同优先数的进程,再采用先来先服务的次序 分配处理器。系统常以任务的紧迫性和系统效率等因素确定进程的优先数。进程的优先数可以固定的,也可随进程执行过程动态变化。 一个高优先数的进程占用处理器后,系统处理该进程时有两种方法,一是"非抢占式",另一种是"可抢占式"。前者是此进程占用处理器后一直运行到结束,除非 本身主动让出处理器,后者则是严格保证任何时刻总是让优先数最高的进程在处理器上运行。
3)时间片轮转调度法:把规定进程一次使用处理器的最长时间称为"时间片"。时间片轮转调度算法让就绪进程按就绪的先后次序排成队列,每次总选 择该队列中第一个进程占用处理器,但规定只能使用一个时间片,如该进程尚未完成,则排入队尾,等待下一个供它使用的时间片。各个进程就这样轮转运行。时间 片轮转算法经常用于分时操作系统中。
4)多级反馈调度:由系统设置多个就绪队列,每个就绪队列中的进程按时间片轮转法占用处理器。
5.进程的切换
进程调度将从就绪队列中另选一个进程占用处理器,使一个进程让出处理器,由另一个进程占用处理器的过程称"进程切换"。
若有一个进程从运行态变成等待态,或完成工作后就撤消,则必定会发生进程切换。若一个进程从运行态或等待态变成就绪态,则不一定发生进程切换。
死锁
(1)死锁的概念
死锁是两个或两个以上的进程中的每一个,都在等待其中另一个进程释放资源而被封锁,它们都无法向前推进,称这种现象为死锁现象。
产生死锁的原因是共享资源有限,多个进程对共享资源的竞争,而且操作不当。
(2)产生死锁的四个必要条件是资源互斥使用、保持和等待、非剥夺性、循环等待。(互斥条件、不可剥夺条件、部分分配、循环等待)
(3)解决死锁的方法
一般有死锁的预防,即破坏产生死锁的四个必要条件中的一个或多个,使系统绝不会进入死锁状态;死锁的避免,即在资源动态分配的过程中使用某种办法防止系统进人死锁状态;和允许系统产生死锁,然后使用检测算法及时地发现并解除它。
(预防、避免、检测、解除)
没有评论:
发表评论