欢迎来到天天文库
浏览记录
ID:58707456
大小:1.36 MB
页数:82页
时间:2020-10-04
《第2章 进程管理(part4)ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章进程管理2.1进程的基本概念2.2进程控制2.3进程同步2.4经典进程的同步问题2.5管程机制2.6进程通信2.7线程12.3.2信号量机制1.整型信号量最初由Dijkstra把整型信号量定义为一个整型量,除初始化外,仅能通过两个标准的原子操作(AtomicOperation)wait(S)和signal(S)来访问。这两个操作一直被分别称为P、V操作。wait和signal操作可描述为:wait(S):whileS≤0dono-opS∶=S-1;signal(S):S∶=S+1;22.记录型信号量在整型信号量机制中的wait操作,只要是信号量S≤0,
2、就会不断地测试。因此,该机制并未遵循“让权等待”的准则,而是使进程处于“忙等”的状态。记录型信号量机制,则是一种不存在“忙等”现象的进程同步机制。但在采取了“让权等待”的策略后,又会出现多个进程等待访问同一临界资源的情况。为此,在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。记录型信号量是由于它采用了记录型的数据结构而得名的。它所包含的上述两个数据项可描述为:3typesemaphore=recordvalue:integer;L:listofprocess;end相应地,wait(S)和s
3、ignal(S)操作可描述为:procedurewait(S)varS:semaphore;beginS.value∶=S.value-1;ifS.value<0thenblock(S.L)endproceduresignal(S)varS:semaphore;beginS.value∶=S.value+1;ifS.value≤0thenwakeup(S.L);end4在记录型信号量机制中,S.value的初值表示系统中某类资源的数目,因而又称为资源信号量,对它的每次wait操作,意味着进程请求一个单位的该类资源,因此描述为S.valu
4、e∶=S.value-1;当S.value<0时,表示该类资源已分配完毕,因此进程应调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表S.L中。可见,该机制遵循了“让权等待”准则。此时S.value的绝对值表示在该信号量链表中已阻塞进程的数目。对信号量的每次signal操作,表示执行进程释放一个单位资源,故S.value∶=S.value+1操作表示资源数目加1。若加1后仍是S.value≤0,则表示在该信号量链表中,仍有等待该资源的进程被阻塞,故还应调用wakeup原语,将S.L链表中的第一个等待进程唤醒。如果S.value的初值为1,表示只允许一个进程
5、访问临界资源,此时的信号量转化为互斥信号量。52.3.3信号量的应用1.利用信号量实现进程互斥利用信号量实现进程互斥的进程可描述如下:Varmutex:semaphore∶=1;beginparbeginprocess1:beginrepeatwait(mutex);criticalsectionsignal(mutex);remainderseetionuntilfalse;end6process2:beginrepeatwait(mutex);criticalsectionsignal(mutex);remaindersecti
6、onuntilfalse;endparend72.利用信号量实现前趋关系图2-10前趋图举例8Vara,b,c,d,e,f,g;semaphore∶=0,0,0,0,0,0,0;beginparbeginbeginS1;signal(a);signal(b);end;beginwait(a);S2;signal(c);signal(d);end;beginwait(b);S3;signal(e);end;beginwait(c);S4;signal(f);end;beginwait(d);S5;signal(g);end;beginwait(e
7、);wait(f);wait(g);S6;end;parendendabcdfge9关于信号量信号量信号量表示资源的实体,是一个与队列有关的整型变量。数据结构定义如下:strucsemaphore{intvalue;pointer_PCBqueue;//阻塞在该信号量的各个进程的标识}信号量只能通过初始化和P/V原语来访问,不受进程调度的打断。10关于信号量一般来说,一个记录型信号量S用来表示系统中某类资源的可用数量和等待该资源的进程数量。S.value的初值表示系统中某类资源的总数。若信号量代表临界资源,则初值为1;否则,初值一般为
此文档下载收益归作者所有