第2章 进程管理_第1页
第2章 进程管理_第2页
第2章 进程管理_第3页
第2章 进程管理_第4页
第2章 进程管理_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章进程管理

学习目标和学习要点2.1系统的基本工作单位2.2进程的结构2.3进程的控制2.4进程的协调2.5进程的通信2.6进程的安全性2.7进程的演化与进展2.8Linux的进程管理2.9Windows2000/XP的进程管理本章小结第2章:进程管理返回到目录本章学习目标

掌握:进程的定义,临界区概念,进程的状态及其转换,进程的同步与互斥。

理解:程序与进程的对比,进程与线程,信号量及P,V操作、死锁。

了解:Linux及WindowsXP实例,本章其他内容。第2章:进程管理本章学习要点应深入理解、掌握什么是进程及其特征,进程的状态及引起进程状态转换的原因;什么是临界区及其操作原则,进程同步与互斥;信号量和管程的概念及P,V操作;进程通信;同时要掌握引起死锁的原因及怎样解除和系统恢复。第2章:进程管理返回到本章2.1系统的基本工作单位

2.1.1进程概念的引入2.1.2进程管理第2章:进程管理返回到本章2.1.1进程概念的引入1.顺序程序的基本特征2.程序的并行执行特征3.进程的定义及其特征4.进程的类型第2章:进程管理1.顺序程序的基本特征

顺序程序是指程序中若干操作必须按照某种先后次序来执行,并且每次操作前和操作后的数据、状态之间都有—定的关系。在早期的程序设计中,程序一般都是顺序地执行的。顺序程序的基本特征如下:(1)顺序性;(2)惟一对应性;(3)封闭性;(4)可再现性。第2章:进程管理2.程序的并行执行特征

在多道程序系统中,程序的运行环境发生了很大的变化。主要体现在:(1)资源共享。为了提高资源的利用率,计算机系统中的资源不再由一道程序独占使用,而是由多道程序共同使用。(2)程序的并发执行或并行执行。

第2章:进程管理2.程序的并行执行特征

(1)并发性。即并发程序的若干个程序段同时在系统中运行,这些程序段的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重迭是很小的一部分,也称这几个程序段是并发执行的。(2)动态性。指程序与其执行活动不再一一对应。并发程序中的并发活动是动态产生、动态消亡的。如,几道并发执行的C语言程序共享C编译系统,在这种情况下,—个编译程序能同时为多道程序服务,每个程序调用—次就是执行一次,即这个编译程序对应多个执行活动。第2章:进程管理2.程序的并行执行特征(3)开放性。指系统中并发执行的程序,共享使用的资源,程序的执行与外部因素(如执行速度)有关,不再具有封闭性。(4)相互制约性:指程序的动态活动相互依赖,相互制约。其制约关系可分为间接制约关系和直接制约关系两种。间接制约关系是指相互无逻辑关系的用户程序之间竞争使用资源所发生的制约关系;直接制约关系是指存在逻辑关系的程序之间相互等待而发生的制约关系。通过程序活动的这种相互制约关系,才能保证程序的正确运行。第2章:进程管理3.进程的定义及其特征进程是程序在数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。进程具有如下特征:(1)动态特征。(2)并发特征。(3)独立特征。(4)相互制约特征。第2章:进程管理4.进程的类型(1)系统进程和用户进程(2)父进程和子进程第2章:进程管理图2-2进程族系关系图返回到本节2.1.2进程管理进程作为操作系统的核心,具有如下管理的功能:

1.进程族系。

2.原语操作

3.进程创建

4.进程终止

5.进程阻塞

6.进程唤醒

7.进程映像的更换第2章:进程管理返回到本节2.2进程的结构

2.2.1进程的实体2.2.2进程控制块2.2.3进程的状态

第2章:进程管理返回到本章2.2.1进程的实体进程的活动是通过在CPU上执行一系列程序和对相应数据进行操作来体现的,因此程序和它操作的数据是进程存在的实体。但这二者仅是静态的文本,没有反映出其动态特性。为此,还需要有一个数据结构用来描述进程当前的状态、本身的特性等。这种数据结构被称为进程控制块(PCB,ProcessControlBlock),它既能标识进程的存在,又能刻画进程瞬间特性的数据结构。所以进程实体通常就由程序、数据集合,用PCB来标识和刻画实体的存在和变化。第2章:进程管理返回到本节2.2.2进程控制块进程控制块是进程组成中最关键的部分,其中含有进程的描述信息和控制信息,是进程动态特性的集中反映,它是系统对进程施行识别和控制的依据。系统为每个进程设置一个PCB,它是标识和描述进程存在及有关特性的数据块,是进程存在的唯一标识,是进程动态特征的集合反映。PCB中所包含的信息类型和数量随操作系统而异。在小型的比较简单的操作系统中,PCB只占用十几个单元,而在比较复杂的大型操作系统中,PCB则可能占用数十甚至数百个单元。系统创建一个进程时,就为其创建一个PCB;进程被撤离系统时,由系统撤离PCB。PCB的结构如图2-3所示。第2章:进程管理2.2.2进程控制块

第2章:进程管理进程名进程号优先数位置信息状态信息现场信息通信信息资源记载其他图2-3PCB结构2.2.2进程控制块

PCB常用两种组织方式:一种是线性表,一种是链接表。第2章:进程管理返回到本节PCB1PCB2PCBn2.2.3进程的状态

1.进程的基本状态(1)运行态(running)(2)就绪态(ready)(3)阻塞态(blocked)

如图所示:

第2章:进程管理2.2.3进程的状态

2.进程状态的转换(1)就绪→运行(2)运行→阻塞(3)阻塞→就绪(4)运行一>就绪在不少系统中,处了上述的三种基本状态之外,又增加了两种状态:(1)创建状态。(2)退出状态。第2章:进程管理2.2.3进程的状态

第2章:进程管理图2-6具有五种状态的进程状态图2.2.3进程的状态

第2章:进程管理返回到本节图2-7具有挂起状态的进程基本状态图2.3进程的控制

2.3.1进程控制机构2.3.2进程的创建与撤销2.3.3进程的挂起与恢复第2章:进程管理返回到本章2.3.1进程控制机构

常用的进程控制原语有:创建进程,删除进程,挂起进程,激活进程,睡眠进程,唤醒进程等。操作系统通过这些原语的实现供外部调用,以达到控制进程活动的目的。第2章:进程管理返回到本节2.3.2进程的创建与撤销

1.进程创建常用建立进程的方法有两种:一是创建法;另一种方法是生成法。操作系统主要完成的工作是:(1)在系统空间中分配新的进程PCB空间,根据调用参数置PCB中的有关域;(2)装配进程所需执行的程序和数据集合,并将其存储信息保存在PCB中;(3)初始化进程PCB中的现场区,其中现场区PC相应的域内,放入程序的入口地址;(4)将新进程加入就绪状态队列,请求进行进程调度。第2章:进程管理2.3.2进程的创建与撤销

2.进程撤销进程撤销又叫进程删除,撤消撤销进程可能有两种情形:一种是进程正常结束;一种是进程非正常结束。当一个进程在完成其任务正常结束时,则系统自行调用该删除进程原语将自身删除。当在运行过程中遇到某些意外事件无法继续运行(处于非正常结束)时,则由父进程(即创建者)或由系统直接调用该原语,将其强行删除。撤销进程通常需要完成如下工作:(1)定位欲删除的进程PCB;(2)回收进程所占的全部资源;(3)递归地删除其所有“子孙”进程;(4)删除PCB,处理记账信息;(5)若删除的是正在运行的进程,则请求重新调度,否则返回。第2章:进程管理返回到本节2.3.3进程的挂起与恢复

1.进程挂起在进程控制中,可以有多种挂起方式:(1)把发出本命令的进程自身挂起;(2)挂起具有指定标识符的进程;(3)把某进程及其全部或部分子孙进程一起挂起。通常来说,挂起具有指定标识符的进程的情形用的较多。在挂起进程控制中,操作系统主要完成如下工作:(1)定位欲挂起的进程PCB;(2)将其运行的有关现场信息放至调用者指定的区域;(3)将进程变为挂起状态;(4)如果进程从运行状态变为挂起状态,则请求重新调度。第2章:进程管理2.3.3进程的挂起与恢复

2.激活进程与“挂起进程”原语相对应,系统提供了一条“激活进程”原语,供用户或创建者用于将原来被挂起的进程重新激活。对于激活进程原语,操作系统主要完成如下工作:(1)定位欲激活的进程PCB;(2)将该进程改为就绪状态;(3)请求重新调度。第2章:进程管理2.3.3进程的挂起与恢复

3.进程睡眠进程在运行过程中一旦自身认为需等待某一事件的发生(如需等待伙伴进程的同步信号等)才能继续运行,则自身调用睡眠进程原语,放弃CPU,进入“睡眠”状态。“睡眠”与“挂起”原语的主要区别在于:挂起是人的干预,将指定进程挂起;而睡眠是本进程使自身进入“睡眠”状态:对睡眠进程原语,系统主要完成如下工作(1)定位当前运行状态的进程PCB;(2)放弃CPU,保留现场;(3)将其状态改变为“睡眠”状态;(4)请求重新调度。第2章:进程管理2.3.3进程的挂起与恢复

4.唤醒进程与“睡眠”进程原语相对应,系统提供了一条“唤醒”进程原语。调用者可以使用该原语将某一个正在“睡眠”的进程唤醒,使它变为就绪状态。对于唤醒进程原语,操作系统应完成的主要工作如下:(1)定位被唤醒的进程PCB;(2)将其改变为就绪状态,插人就绪队列(3)请求重新调度。第2章:进程管理返回到本节2.4进程的协调

2.4.1进程互斥2.4.2进程同步2.4.3信号量和P,V操作2.4.4管程2.4.5经典进程的同步第2章:进程管理返回到本章2.4.1进程互斥进程间的制约关系具体可分为两类。(1)互斥关系,也称间接制约关系。指进程间因相互竞争使用独占型资源,而产生的制约关系。它主要由资源共享引起。这种关系表现形式为:进程-资源-进程。(2)同步关系,也称直接制约关系。指为了完成同一任务的诸进程间需要在某些位置上协调工作,进行相互等待,相互交换信息所表现出的相互制约关系。它可由共享资源引起,又可由进程合作而引起,主要是各个进程的行动时间次序必须满足某种依赖关系。这种关系的表现形式为:进程-进程。第2章:进程管理2.4.1进程互斥

1.进程互斥与临界区(1)临界资源与临界区为了保证临界资源的正确使用,可以把临界资源的访问过程分成四个部分。

①进入区:为了进入临界区使用临界资源,在进入区要检查是否可以进入临界区;如果可以进入临界区,通常设置相应的“正在访问临界区”标志,以阻止其他进程同时进入临界区。

②临界区:进程中访问临界资源的那段代码,又称临界段。

③退出区:临界区后用于将“正在访问临界区”标志清除的部分。

④剩余区:进程中除进入区、临界区、退出区以外的其他部分。第2章:进程管理2.4.1进程互斥

2.互斥的概念与要求在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许访问此临界资源,我们称进程之间的这种相互制约关系为互斥。进程访问临界区的准则:(1)空闲让进。当没有进程处于临界区时,可以允许一个请求进入临界区的进程立即进入自己的临界区。(2)忙则等待。当已有进程进入其临界区时,其他试图进入临界区的进程必须等待。(3)有限等待。当进程不能进入自己的临界区时,应释放处理机。第2章:进程管理2.4.1进程互斥

3.互斥的实现方法互斥的实现既可以用软件方法,也可以用硬件方法。(1)软件方法(2)硬件方法硬件方法的主要思想是用一条指令完成标志的检查和修改两个操作,因而保证了检查操作与修改操作不被打断;或通过中断屏蔽的方式来保证检查和修改作为一个整体执行。

①中断屏蔽方法

②硬件指令方法第2章:进程管理返回到本节2.4.2进程同步所谓同步,就是并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通消息称为进程同步。同步意味着两个或多个进程之间根据它们一致协议进行相互作用。同步的实质是使各合作进程的行为保持某种一致性或不变关系。要实现同步,一定存在着遵循的同步规则。第2章:进程管理返回到本节2.4.3信号量和P,V操作

1.信号量及P,V操作原语信号量,也叫信号灯,一般是有两个成员组成的数据结构,其中一个成员是整型变量,表示该信号量的值,另一个是指向PCB的指针。当多个进程都等待同一信号量时,它们就排成一个队列,由信号量的指针项指出该队列的头,而PCB队列是通过PCB本身所包含的指针项进行链接的。最后一个PCB(即队尾)的链接指针为0。信号量的值是与相应资源的使用情况有关的。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数,既在该信号量队列上排队的PCB的个数。

第2章:进程管理2.4.3信号量和P,V操作

信号量在使用过程中它的值是可变的,但只能由P,V操作来改变。设信号量为S,对S的P操作记为P(S),对它的V操作记为V(S)。

P(S)顺序执行以下两个动作:(1)信号量的值减1,即S=S-1;(2)如果S≥0,则该进程继续执行;如果S<0,则把该进程的状态置为封锁状态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直至其他进程在S上执行V操作,把它释放出来为止)。第2章:进程管理2.4.3信号量和P,V操作

第2章:进程管理图2-9P操作2.4.3信号量和P,V操作

V(S)顺序执行以下两个动作:(1)S值加1,即S=S+1;(2)如果S>0,则该进程继续运行;如果S≤0则释放信号量队列上的第一个PCB(即信号量指针项所指向的PCB)所对应的进程(把封锁状态改为就绪状态),执行V操作的进程继续运行。其流程图如图2-10所示。第2章:进程管理2.4.3信号量和P,V操作

第2章:进程管理图2-10V操作3.用P,V原语实现简单同步S1——表示缓冲区是否空(0表示不空,1表示空);S2——表示缓冲区是否满(0表示不满,1表示满)。规定S1和S2的初值均为0,则对缓冲区的供者进程和用者进程的同步关系用下述方式实现:供者进程用者进程L1:启动读卡机L2:............收到输人结束中断P(S2);

从缓冲区取出信息V(S2):V(S1);P(S1);加工并存盘gotoL1;gotoL2;第2章:进程管理2.4.3信号量和P,V操作

用P,V操作实现同步时应注意:(1)分析进程间的制约关系,确定信号量种类。在保持进程间有正确的同步关系情况下,哪个进程应先执行,哪些进程后执行,彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量。(2)信号量的初值与相应资源的数量有关,也与P,V操作在程序代码中出现的位置有关。(3)同一信号量的P,V操作要“成对”出现,但它们分别在不同的进程代码中。第2章:进程管理返回到本节2.4.4管程

管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。由管程的定义可知,管程由局部于管程的共享数据结构说明、对这些数据结构进行操作的一组过程以及对局部于管程的数据结构设置初始值的语句组成。管程有以下基本特征:(1)局部于管程的数据这能被局部于管程内的过程所访问。(2)一个进程只有通过调用管程内的过程才能进入管程访问共享数据。(3)每次仅允许一个进程在管程内执行某个内部过程。即进程互斥地通过调用内部过程进入管程。其他想进入管程的过程必须等待,并阻塞在等待队列。第2章:进程管理返回到本节2.4.5经典进程的同步1.生产者-消费者问题2.读者—写者问题3.哲学家问题第2章:进程管理返回到本节2.5进程的通信

2.5.1进程通信的类型2.5.2进程通信的方式

第2章:进程管理返回到本章2.5.1进程通信的类型

1.共享存储器系统为了传输大量数据,在存储器中划出一块共享存储区,多个进程可以通过对共享存储区进行读或写来实现通信。进程在通信前,向系统申请建立一个共享存储区,并指定该共享存储区的关键字;若该共享存储区已经建立,则将该共享存储区的描述符返回给申请者。然后,申请者把获得的共享存储区符接到进程上;这样,进程便可以像读写普通存储器一样地读写共享存储区。第2章:进程管理2.5.1进程通信的类型

2.消息传递系统

在消息传递系统中,进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信。第2章:进程管理2.5.1进程通信的类型

3.管道通信系统

管道是用于连接读进程和写进程以实现它们之间通信的共享文件,向管道提供输入的发送进程(即写进程)以字符流形式将大量的数据送入管道,而接收管道输出的接收进程(即读进程)可以从管道中接收数据。第2章:进程管理返回到本节2.5.2进程通信的方式

1.消息缓冲通信。所谓消息是指一组信息,消息缓冲区是含有如下信息的缓冲区:指向发送进程的指针sender;指向下一个消息缓冲区的指针next;消息长度size;消息正文text。第2章:进程管理2.5.2进程通信的方式

2.信箱通信

信箱通信是一种间接通信方式。信箱是一种数据结构,其中存放信件。当一个进程(发送进程)要与另一个进程(接收进程)通信时,可由发送进程创建一个链接两进程的信箱,通信时发送进程只须把它的信件投入信箱,接收进程就可以在任何时候取走信件,不存在信件丢失的可能。信箱逻辑上分为信箱头和信箱体两部分。信箱头中存放有关信箱的描述,信箱体由若干格子组成,每格存放一个信件,格子的数目和大小在创建信箱时确定。信件的传递可以是单向的,也可以是双向的。第2章:进程管理

3.消息通信中的同步问题

进程间的消息通信隐含着某种同步关系:只有当一个进程发送出消息之后,接收进程才能接收消息。对于一个发送进程来说,它在执行发送原语后,有两种可能选择:(1)发送进程阻塞,直到这个消息被接收进程接收到,这种发送称为阻塞发送。(2)发送进程不阻塞,继续执行,这种发送称为非阻塞发送。同样,对于一个接收进程来说,在执行接收原语后,也有两种可能选择:(1)如果一个消息在接收原语执行之前已经被发送,则该消息被接收进程接收,接收进程继续执行。(2)如果没有正在等待的消息,则它或者阻塞到一个消息到达;或者继续执行,放弃接收的努力。前者称为阻塞接收,后者称为非阻塞接收。第2章:进程管理返回到本节2.6进程的安全性

2.6.1死锁的概念2.6.2死锁的预防2.6.3死锁的避免2.6.4死锁的解除与系统恢复

第2章:进程管理返回到本章2.6.1死锁的概念所谓死锁是指两个或两个以上的进程因竞争系统资源而无休止地互相等待时,我们就称这些进程是死锁的,或者说,它们处于死锁状态。死锁问题是一种具有普遍性的现象,日常生活中屡见不鲜,如图所示

第2章:进程管理2.6.1死锁的概念把产生死锁的各种因素归纳起来,得到了产生死锁的以下四个必要条件。(1)互斥条件:进程访问的是临界资源,即一个资源一次只能被一个进程所使用。(2)请求和保持条件:一进程在请求新的资源的同时,保持对某些资源的占有。(3)不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。(4)环路等待条件:存在一个进程的环行链,链中每个进程占有着某个或某些资源,又在等待被链中的另一个进程所占有的资源。第2章:进程管理2.6.1死锁的概念解决死锁的方法一般可分为三类:(1)预防死锁。这种方法从上述的四个死锁条件出发,通过设置一些限制来破坏其中的至少一个条件,从而预防死锁。(2)避免死锁。这种方法不是预先加上各种限制条件一预防产生死锁的可能性,而是允许又逼近死锁的可能性,但当接近死锁状态时,采取一些有效的措施加以避免,使死锁不至于最终发生。(3)检测及系统恢复。它允许在系统运行过程中发生死锁,但一旦发生便能立即检测出来,然后采取适当措施使系统恢复。第2章:进程管理返回到本节2.6.2死锁的预防

1.防止“请求和保持”条件的出现

系统要求任一进程必须预先申请它所需要的全部资源,而且仅当该进程的全部资源要求都能得到满足时。系统才给予一次性分配,然后启动该进程运行。进程在整个生存期间,不再请求新的资源。因此“请求和保持”条件不会出现,死锁也就不可能发生。第2章:进程管理2.6.2死锁的预防

2.防止“不剥夺”条件的出现

在允许进程动态申请资源的前提下,规定一个进程在请求新资源不能立即得到满足而变为等待状态之前,它必须释放己占有的全部资源;若需要,再更新申请新资源和已释放的资源。换言之,一个进程在使用某资源过程可以暂时放弃该资源,即允许其他进程剥夺使用该资源,从而破坏了“不剥夺”条件的出现。

第2章:进程管理2.6.2死锁的预防

3.防止“环路等待”条件的出现

采用资源顺序使用法,其基本思想是:把系统中所有资源按类型线性排队,并按递增规则赋予每类资源以惟一的编号。

第2章:进程管理返回到本节2.6.3死锁的避免

避免死锁与预防死锁的区别在于,预防死锁是设法至少破坏产生死锁的必要条件之一,严格地防止死锁的出现。而避免死锁则不那么严格地限制产生死锁必要条件的存在(因为即使死锁必要条件成立,也未必一定发生死锁),一旦有可能出现死锁时,就小心地避免死锁的最终发生。

Dijkstra的银行家算法是最著名的避免死锁算法。银行家算法允许存在死锁的前三个必要条件,与预防死锁的几种策略相比,它放松了限制条件,提高了资源利用率。但它还比较保守,它要求系统资源数固定以及在一段时间内进程数也保持不变,还要求用户事先提供资源的最大需求数。这些往往是不易做到的。第2章:进程管理返回到本节2.6.4死锁的解除与系统恢复

死锁解除方法可归纳为以下两种:(1)撤销进程法:这可以是撤销所有死锁进程,或者逐个撤销死锁进程,每撤销一个进程就检测死锁是否继续存在,若不再存在,就停止撤销。显然,前者显得比较武断。但是采用逐个撤销方法的一个关键问题是按照什么原则进行撤销,可以依据进程优先数,也可以依据最小代价原则。所谓最小代价是指撤销路径最短,即按该撤销路径所撤销的进程数最少,这需要较复杂的处理。(2)挂起进程法:使用挂起/激活机构挂起一些进程,剥夺它们占有的资源以解除死锁,待以后条件满足时,再激活被挂进程。问题是在挂起点激活比较困难,而要回退到挂起点之前某个状态才能重新执行,这需要保留多个现场,增加了开销。目前,挂起进程法比较受到重视,在IBM4300系列等机器上采用了这种方法。

第2章:进程管理返回到本节2.7进程的演化与进展

2.7.1基本工作单位的控制粒度2.7.2线程的概念第2章:进程管理返回到本章2.7.1基本工作单位的控制粒度在Mach,WindowsNT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。第2章:进程管理返回到本节2.7.2线程的概念

1.线程的引入在操作系统中引入进程的目的是为了使多个程序并发执行,以提高资源利用率及系统吞吐量;那么,在操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。

2.线程的定义

线程是进程内一个相对独立、可调度的执行单元。线程自己基本上不拥有资源,只拥有少量的在运行时必不可少的资源(如程序计数器、一组寄存器和栈),但它可以与同属一个进程的其他线程共享进程拥有的全部资源。第2章:进程管理2.7.2线程的概念

3.线程的实现

内核级线程是指依赖于内核,由操作系统内核完成创建和撤销工作的线程。用户级线程是指不依赖于操作系统核心,由应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制的线程。

第2章:进程管理2.7.2线程的概念

4.线程与进程的比较由于进程与线程密切相关,因此有必要对进程与线程的异同进行比较。(1)调度。(2)拥有资源。(3)并发性。(4)系统开销。第2章:进程管理返回到本节2.8Linux的进程管理2.8.1Linux进程概述

2.8.2Linux进程控制2.8.3Linux进程通信第2章:进程管理返回到本章2.8.1Linux进程概述

1.进程实体的组成

Linux进程由三部分组成:正文段、用户数据段和系统数据段,如图所示。第2章:进程管理2.8.1Linux进程概述

2.进程的状态进程是一个动态的概念,在其运行的整个生命周期中可根据具体情况不断改变其状态。Linux进程主要有如下几种状态:(1)可运行状态(task_running)(2)等待状态(3)暂停状态(task_stopped)(4)僵死状态(task_zomble)第2章:进程管理第2章:进程管理

3.Linux进程控制块task_struct的结构描述

Task_struct结构包含的信息如下:(1)进程当前的状态(2)调度信息(3)进程标识(4)进程通信信息(5)进程的家族关系(6)时间和定时信息(7)文件系统信息(8)存储管理信息(9)CPU现场保留信息。

第2章:进程管理返回到本节

3.Linux进程控制块task_struct的结构描述

Linux内核通过进程task_struct结构中的信息来进行进程的控制:首先通过其中的调度信息决定该进程是否运行,当进程被调度在CPU上运行时,要根据task_struct结构中保留的处理机现场来恢复进程运行现场,再根据虚拟内存信息定位进程的正文和数据,并通过其中的通信信息和其他进程实现同步与通信。总之,对进程所有操作都要依赖task_struct结构,task_struct结构是进程实体的核心,是进程存在的惟一标志。2.8.2Linux进程控制

1.进程创建

调用fork()的进程称为父进程,通过fork()建立的新进程称为子进程。系统执行fork()时,首先为新进程分配空闲的task_struct结构和进程标识号(PID),为新进程堆栈分配物理页。然后,拷贝当前进程(父进程)的内容:正文段、用户数据段及系统数据段task_struct大部分内容,对子进程有别于父进程的项进行初始化。新进程的task_struct结构地址保存在task指针数组中。

2.进程映像的交换子进程创建后,继承了父进程的地址空间。在UNIX中,父进程的正文和数据拷贝给了子进程,子进程为了和父进程完成不同的任务,利用exec()系统调用装载新的程序映像,放弃从父进程那里拷贝过来的内容。

第2章:进程管理2.8.2Linux进程控制

3.等待进程结束当父进程用fork()创建子进程后,子进程往往通过exec()转去执行新装载的程序映像。父进程可用系统调用wait()等待它的一个子进程的结束,wait()的参数指定了父进程等待的子进程。如果子进程尚未终止(未完成任务),则父进程挂起,一旦等到指定的子进程结束,父进程被唤醒,即可继续再做其他工作。

4.进程终止当需要一个进程结束或进程希望终止自己时,可通过系统调用exit()来实现。Exit()首先释放进程占用的大部分资源,进入“task_zomb”状态,并返回一个状态参数,父进程执行wait()时,可取得该参数,使等待子进程结束的父进程恢复执行。第2章:进程管理2.8.2Linux进程控制

第2章:进程管理返回到本节图2-20shell执行流程2.8.3Linux进程通信

1.信号机制信号是Linux最基本的进程通信机制。信号机制的一个主要特点是它的异步特性,这表现在进程在执行期间可随时接收到信号,甚至可能当进程正在执行系统调用时接收信号。(1)信号类型(2)信号处理方式(3)信号的发送(4)信号的检测和处理第2章:进程管理2.8.3Linux进程通信

2.管道机制

管道是实现进程间大容量信息传送的机构。(1)匿名管道匿名管道由pipe()系统调用创建,其原型为:intpipe(intfd[2])(2)命名管道(FIFO文件)

Linux还支持另外一种管道形式,命名管道。命名管道操作方式是按先进先出方式传送信息也称为FIFO文件。FIFO文件和匿名管道的数据结构及操作极其相似,二者主要区别在于FIFO文件是按名存取文件,在使用之前就已经存在,用户可打开或关闭FIFO文件。而匿名管道只在操作时存在,是临时对象。另外,命名管道容许具有适当权限的进程利用标准的open()系统调用加以访问,即使是无关系的进程。而父进程不同的进程难以共享匿名管道。

第2章:进程管理2.8.3Linux进程通信

第2章:进程管理匿名管道由pipe()系统调用创建,其原型为:intpipe(intfd[2])2.8.3Linux进程通信

3.SystemV的进程通信机制

为了与其他系统兼容,Linux支持三种SystemV进程通信机制:消息机制、信号量机制和共享内存机制。一般把信号量、消息和共享内存机制统称为SystemVIPC机制,而把信号量、消息和共享内存统称为SystemVIPC对象。Linux对三种机制的实施大同小异。上述对象都具有相同类型的接口(即系统调用),因此,只讨论其中最快的一种形式:共享内存机制。

第2章:进程管理2.8.3Linux进程通信

第2章:进程管理返回到本节图2-22共享内存段的数据结构关系2.9Windows2000/XP的进程管理2.9.1Windows2000/XP进程管理2.9.2Windows2000/XP线程管理2.9.3Windows2000/XP的进程互斥与同步2.9.4Windows2000/XP进程间的通信2.9.5Windows2000/XP的线程调度第2章:进程管理返回到本章2.9.1Windows2000/XP进程管理

1.Windows2000/XP进程的组成

Windows2000/XP进程包括以下内容:(1)一个可执行程序。(2)一个由该进程专用的地址空间,它是该进程可以使用的虚拟内存地址的集合。(3)系统资源,例如信号量、通信端口、文件等。它们是由程序执行的,由操作系统分配给该进程。(4)一个或多个线程。在Windows2000/XP中每个进程是由一个进程环境块(processenvironmentblock,PEB)结构描述,系统内核外是看不到PEB的。第2章:进程管理2.9.1Window

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论