第2章 进程管理ppt课件.ppt
《第2章 进程管理ppt课件.ppt》由会员分享,可在线阅读,更多相关《第2章 进程管理ppt课件.ppt(111页珍藏版)》请在三一办公上搜索。
1、第2章 进程管理,2.1 进程(Process)2.2 进程控制2.3 进程同步2.4 经典进程同步问题2.5 进程间通信2.6 线程(Thread)2.7 小结,2.1 进程(Process),一、什么是进程?,是程序的1次执行。或者说,进程是程序执行的1个实例。每个进程都有自己的地址空间。,为什么要引入进程?,2.1 进程(Process),二、进程和程序的关系与差异,程序是进程的静态实体(即执行代码)。程序是静态的,进程是动态的。同一个程序可以对应多个进程,每启动1次产生1个进程。,进程和程序的关系与差异,2.1 进程(Process),进程的5种基本状态(1)新建(new):进程正在被
2、创建。(2)就绪(ready):进程可运行,正等待获得处理机。(3)运行(running):进程的指令正在被执行。(4)阻塞(blocked)或等待:进程因等待某事件(如请求I/O)而暂停执行。(5)完成(done):进程结束。,三、进程的状态,由于OS在建立一个新进程时,通常分为2步:第一步是创建进程,并为其分配资源,此时进程即处于new状态。第二步是把新创建的进程送入就绪队列,状态变为就绪状态。一个结束了的进程,其退出系统的过程也分为两步:第一步是将该进程从就绪队列中移出,使之成为一个不可能再运行的进程,相应的进程处于done状态。此时系统并不立即撤销它,而是将它暂时留在系统中,以便其它进
3、程去收集该进程的有关信息。,引入new和done状态的原因:,进程的状态,2.状态之间的转换,进程的状态,3.七状态进程模型,在有的系统中,为了暂时缓和内存的紧张状态,或为了调节系统负荷,又引入了挂起(suspend)功能:暂时挂起一部分进程,把它们从内存临时换出到外存。就绪状态分为2种:活动就绪状态(未被挂起的就绪进程)和静止就绪状态(被挂起的就绪进程)阻塞状态分为2种:活动阻塞状态(未被挂起的阻塞进程)和静止阻塞状态(被挂起的阻塞进程),进程的状态,就绪(Ready):进程在内存且可立即进入运行状态阻塞(Blocked):进程在内存并等待某事件的出现阻塞挂起(Blocked,suspend
4、):进程在外存并等待某事件的出现就绪挂起(Ready,suspend):进程在外存,但只要进入内存,即可运行 运行 新建 完成,七状态进程模型,挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况:阻塞阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,可能发生这种转换,以提交新进程或运行就绪进程就绪就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统可能会选择挂起低优先级就绪进程运行就绪挂起:对抢占式系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态,七状态进程模型,激活(Activate):把一
5、个进程从外存转到内存;可能有以下几种情况:就绪挂起就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,可能发生这种转换阻塞挂起阻塞:当一个进程释放足够内存时,系统可能会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程从外存转到内存,七状态进程模型,激活,挂起,事件发生,事件发生,等待事件,挂起,调度,超时,释放,激活,挂起,七状态进程模型,2.1 进程(Process),四、进程的描述,进程控制块(Process Control Block,PCB),1.PCB是什么?,是OS管理和控制进程的数据结构。PCB记录着进程的描述信息。每个进程对应1个PCB。,进程的描述,PCB是进程
6、的一部分 进程由3部分组成:程序、数据、PCB。PCB伴随着进程的整个生命周期。进程创建时,由OS创建PCB;进程终止时,由OS撤消PCB;进程运行时,以PCB作为调度依据。,2.PCB的作用,进程的描述,(1)进程本身的标识信息 进程标识符pid(process ID):整数,由OS分配,唯一 用户标识符uid(user ID):创建该进程的用户 对应程序的地址:内存、外存,3.PCB中的主要信息,(2)CPU现场-为进程正确切换所需 所有寄存器的值 或称进程上下文(context),PCB中的主要信息,(3)进程调度信息 进程的状态 优先级 使进程阻塞的条件 占用CPU、等待CPU的时间(
7、用于动态调整优先级),(4)进程占用资源的信息 进程间同步和通信机制,如信号量、消息队列指针 打开文件的信息,如文件描述符表,进程的描述,一般来说,系统把所有PCB组织在一起,并把它们放在内存的固定区域,构成PCB表。PCB表的大小决定了系统中最多可同时存在的进程个数。,4.PCB的组织方式,空闲PCB队列头指针,阻塞队列头指针,就绪队列头指针,PCB1,PCB2,PCB3,PCB4,PCB5,PCB6,PCB7,PCB8,4,3,0,8,7,9,0,PCB9,20,执行进程指针,PCB的组织方式,同一状态进程的PCB组成一个链表,不同状态对应多个不同的链表,如就绪链表、阻塞链表,PCB的组织
8、方式,对具有相同状态的进程,分别设置各自的索引表,表明其PCB在PCB表中的地址,PCB的组织方式,创建、撤消进程以及完成进程各状态之间的转换,由具有特定功能的原语完成 进程创建原语 进程撤消原语 阻塞原语 唤醒原语 挂起原语 激活(解挂)原语 改变进程优先级,2.2 进程控制,创建一个PCB赋予一个唯一的进程标识符pid初始化PCB设置相应的链接如:把新进程加到就绪队列中,进程创建,收回进程所占有的资源撤消该进程的PCB,进程撤消,运行-阻塞:处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入、等待磁盘数据传输完成、等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行
9、阻塞原语,使自己由运行态变为阻塞态。保护CPU现场到PCB PCB插入到阻塞队列,进程阻塞,阻塞-就绪:处于阻塞状态的进程,当等待的事件发生时,执行唤醒原语,使之由阻塞态变为就绪态。PCB插入到就绪队列,进程唤醒,2.进程同步,一、多个进程的并发执行,在执行时间上互相重叠(或交替),一个进程的执行尚未结束,另一个进程的执行已经开始的执行方式。,多个进程的并发执行,【例】一种文件打印的实现方案。,当一个进程需要打印文件时,将文件名放入一个特殊的目录spooler(即等待队列)下。由一个后台进程负责打印:周期性地检查spooler,看是否有文件需要打印。如果有,则打印之,并将其从spooler目录
10、中删除。,一种文件打印的实现方案,具体的实现方法:设spooler目录有许多(潜在的无限多个)槽,编号为0,1,2,。每个槽放1个文件名。设置2个共享变量(比如,保存在一个所有进程都能访问的文件中):out:指向下一个要打印的文件 in:指向下一个空闲的槽进程要打印文件时的处理方式:读in free_slot;写文件名 spoolerfree_slot;free_slot+1 in;,能正确实现文件打印吗?,一种文件打印的实现方案,出现的问题:结果的不确定性。即结果取决于进程运行的时序。,原因:由资源共享引起。,为此,引入同步(synchronization)和互斥(mutual exclus
11、ion)。同步:进程之间需要一种严格的时序关系。如输入、计算、输出进程之间。互斥:不能同时访问共享资源。可以看作是一种特殊的同步。实现互斥是OS设计的基本内容。,2.进程同步,二、临界资源(Critical Resource)与临界区(Critical Section),临界资源:必须互斥访问的共享资源,临界区:进程中访问临界资源的那段程序,实现互斥的关键:两个(多个)进程不同时处于临界区。,2.进程同步,三、实现互斥的方案,一个好的互斥方案应满足以下条件:(1)任何两个进程不能同时处于临界区。(2)临界区外的进程不应阻止其他进程进入临界区。(3)不应使进程在临界区外无休止地等待。就是说,临界
12、区代码执行时间要短。(4)不应对CPU的个数和进程之间的相对运行速度作任何假设。,实现互斥的方案,1.设置锁变量lock,设置共享变量lock=,0:临界区内无进程,初始值1:临界区内有进程,while(lock);lock=1;lock=0;,该方案是错误的!,2.严格轮转法,设置共享变量turn,以指示进入临界区的进程号,0:允许进程0进入临界区,初始值1:允许进程1进入临界区,进程0:while(turn!=0);turn=1;,以2个进程为例。turn=,进程1:while(turn!=1);turn=0;,实现互斥的方案,不是一个可取的方案!,当一个进程想进入临界区时,先调用ente
13、r_region函数,判断是否能安全进入,不能的话等待;当进程从临界区退出后,需调用leave_region函数,允许其它进程进入临界区。两个函数的参数均为进程号,实现互斥的方案,3.Peterson解决方案,enter_region(process);/process是 进入/离开临界区的进程号leave_region(process);,#define FALSE 0#define TRUE 1#define N 2/进程的个数int turn;/轮到谁?int interestedN;/兴趣数组,所有元素初始值均为FALSEvoid enter_region(int process)/p
14、rocess为进程号 0 或 1 int other;/另外一个进程的进程号 other=1-process;interestedprocess=TRUE;/表明本进程希望进入临界区 turn=process;/设置标志位 while(turn=process/本进程将离开临界区,Peterson解决方案,turn、interested是共享变量turn:表示要进入临界区的进程号interestedi=TRUE表示进程i要求进入或正在临界区执行,4.关中断,关中断;开中断;,实现互斥的方案,进程要进入临界区前先关中断,离开临界区前开中断。因为CPU只有发生中断时才进行进程切换。,缺点:(1)对
15、多处理机系统无效。在多处理机系统中,有可能存在一个以上的进程在不同处理机上同时执行,关中断是不能保证互斥的;(2)将关中断的权力交给用户不合适。,5.机器指令,(1)TestAndSet指令TSL(Test and Set Lock)指令,为多处理机设计的计算机通常有类似的TSL指令。格式:TSL register,memory功能:register memory;将内存单元的值送寄存器 memory 1;置内存单元的值为非0执行TSL指令的CPU将锁住总线,以禁止其他CPU在本指令结束之前访问内存。,实现互斥的方案,TSL指令的功能用C语言描述:,TSL指令实现互斥,int TSL(int*
16、pLock)int retval;retval=*pLock;*pLock=1;return retval;,实现互斥的方法(用C语言描述):,TSL指令实现互斥,void enter_region()while(TSL(,设置一个共享变量lock=,0:未上锁,可进入临界区。初始值1:已上锁,不可进入临界区,enter_region();leave_region();,实现互斥的方法(用汇编语言描述):,TSL指令实现互斥,enter_region:tsl register,lock cmp register,0 jnz enter_region retleave_region:movloc
17、k,0 ret,设置一个共享变量lock=,0:未上锁,可进入临界区。初始值1:已上锁,不可进入临界区,call enter_regioncall leave_region,80 x86 CPU没有专门的TSL指令,但提供了可以达到类似目的的指令,如位测试指令(包括btc、btr、bts等)。,TSL指令实现互斥,BTS(Bit Test and Set):位测试并置位 BTR(Bit Test and Reset):位测试并复位 BTC(Bit Test and Complement):位测试并取反一般形式:BTS dest,index;CF=dest的第index位,dest的第index
18、位=1 BTR dest,index;CF=dest的第index位,dest的第index位=0 BTC dest,index;CF=dest的第index位,dest的第index位取反,TSL指令实现互斥,语法格式:BTS reg16/mem16,reg16/imm8 BTS reg32/mem32,reg32/imm8 BTR、BTC格式同BTS对标志位的影响:影响CF;其余标志无定义。【例】位测试。btseax,12;CF=eax的第12位,eax的第12位=1btreax,12;CF=eax的第12位,eax的第12位=0btceax,12;CF=eax的第12位,eax的第12位
19、取反,TSL指令实现互斥,LOCK前缀功能:用于多处理器系统,作为某些指令的前缀,使CPU通过锁住总线等方式,以禁止其他CPU在本指令结束前访问内存。当使用下列指令、且目标操作数为内存操作数时,可使用LOCK前缀,以保证原子性地执行对内存的“读修改写”操作:(1)加法:ADD、ADC、INC 和XADD;(2)减法:SUB、SBB、DEC和NEG;(3)交换:XCHG、CMPXCHG和CMPXCHG8B;(4)逻辑:AND、NOT、OR和XOR;(5)位测试:BTS、BTC与BTR。其它类型操作数或指令不能使用LOCK前缀。,TSL指令实现互斥,enter_region procinUse:l
20、ock btsflag,0;flag就是lock变量 jcinUse retenter_region endp,使用位测试指令bts实现enter_region过程的代码如下:,在单处理机系统中不需要lock前缀。,(2)swap指令,例如,Intel 80 x86的XCHG指令,不需要lock前缀。,机器指令实现互斥,swap指令的功能描述:,void swap(int*a,int*b)int temp;temp=*a;*a=*b;*b=temp;,实现互斥的方法(用C语言描述):,swap指令实现互斥,void enter_region()int key=1;while(key=1)swa
21、p(,设置一个共享变量lock=,0:未上锁,可进入临界区。初始值1:已上锁,不可进入临界区,enter_region();leave_region();,实现互斥的方法(用汇编语言描述):,swap指令实现互斥,enter_regionprocmoveax,1inUse:xchgeax,lockcmpeax,0jnzinUseretenter_regionendpleave_regionprocmovlock,0retleave_regionendp,设置一个共享变量lock=,0:未上锁,可进入临界区。初始值1:已上锁,不可进入临界区,前面给出的机器指令方法可以实现互斥,但有一个特点:忙等
22、待(busy waiting):当1个进程想进入临界区时,先检测,若不允许进入,则进程不断检测,直到许可为止。,实现互斥的方案,忙等待有什么问题?,(1)浪费CPU时间。(2)可能引起优先级反转问题(priority inversion problem)设有2个进程,H优先级较高,L优先级较低。调度规则规定:只要H就绪就可以运行。在某一时刻,L处于临界区中,此时H处于就绪状态,调度程序切换到H。现在H开始忙等待,但由于L不会被调度,也就无法离开临界区,因此,H永远忙等待下去。,2.进程同步,四、信号量(Semaphore),1965年,由荷兰计算机科学家Dijkstra提出。目的是用一个地位高
23、于应用进程的管理者(OS)来解决共享资源的使用问题。,信号量,1.什么是信号量?,信号量是OS引入的实现同步和互斥的机制。取值:整数访问信号量s的个原子操作:P、V操作 P、V分别是荷兰语的test(proberen)和increment(verhogen)(1)P(s)/等待,wait/down/lock 当s 0;然后s-;(2)V(s)/唤醒,signal/up/unlock s+;,信号量,P、V操作是原子操作(atomic operation),或称原语(primitive)原语:用来完成特定功能的具有原子性的一段程序。原子性:程序中的一组动作是不可分割的,要么全做,要么全不做。原语
24、的两方面含义:(1)机器指令级。原语的程序段在执行过程中不允许中断。(2)功能级。原语的程序段不允许并发执行。,信号量,信号量的使用:必须置一次且只能置一次初值 只能执行P、V操作除此之外,不能用其他方式访问信号量。,信号量,信号量s的值表示可用资源的数量。P(s):意味着请求分配一个资源,因而s要减1。当s=0时表示无可用资源,请求者必须等待别的进程释放了该资源后才能运行。V(s):即释放一个资源。,2.信号量的含义,信号量,2种实现方式:()忙等待方式()阻塞方式,3.信号量的实现原理,信号量的忙等待实现方式,/信号量类型定义typedef struct int value;/信号量的值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 进程管理ppt课件 进程 管理 ppt 课件
链接地址:https://www.31ppt.com/p-2133206.html