《操作系统信号量应用.ppt》由会员分享,可在线阅读,更多相关《操作系统信号量应用.ppt(32页珍藏版)》请在优知文库上搜索。
1、第二章 进 程 管 理 第二章第二章 进程管理进程管理2.1 2.1 进程的基本概念进程的基本概念 2.2 2.2 进程控制进程控制 2.3 2.3 进程同步进程同步 2.4 2.4 经典进程的同步问题经典进程的同步问题 2.5 2.5 进程通信进程通信 第二章 进 程 管 理 2.3 进进 程程 同同 步步2.3.1 进程同步的基本概念进程同步的基本概念 2.3.2 信号量机制信号量机制2.3.3 信号量的应用信号量的应用 第二章 进 程 管 理 1.进程同步的概念进程同步的概念所谓进程同步,在多道技术下,对多个相所谓进程同步,在多道技术下,对多个相关进程在执行次序上的协调、正确,关进程在执
2、行次序上的协调、正确,OS中中用于保证这种关系的相应机制称为进程同用于保证这种关系的相应机制称为进程同步机制。步机制。2.3.1 进程同步的基本概念进程同步的基本概念 第二章 进 程 管 理 并发进程之间由于资源共享和进程合并发进程之间由于资源共享和进程合作,使处于一个系统内的进程存在作,使处于一个系统内的进程存在制约制约关系:关系:直接相互制约关系:直接相互制约关系:源于进程间的合作。源于进程间的合作。进程进程A通过缓冲区向进程通过缓冲区向进程B提供数据用于计算提供数据用于计算 输入进程输入进程A 计算进程计算进程B 2、进程的制约关系、进程的制约关系第二章 进 程 管 理 进程间关系进程间
3、关系间接相互制约关系:间接相互制约关系:源于共享系统资源。源于共享系统资源。 相互制约的进程本身相互制约的进程本身并没有关系并没有关系,但由于申,但由于申请使用相同的资源,但这个资源一段时间内只请使用相同的资源,但这个资源一段时间内只允许一个进程使用,这时两个进程是间接制约允许一个进程使用,这时两个进程是间接制约关系。关系。第二章 进 程 管 理 3。临界资源。临界资源(Critical Resouce) 定义:在一段时间内,只允许一个进程访定义:在一段时间内,只允许一个进程访问的资源。问的资源。软件:共享变量(存储单元)软件:共享变量(存储单元)硬件:打印机、扫描仪(多个任务不能穿插硬件:打
4、印机、扫描仪(多个任务不能穿插使用)使用)并发进程应互斥地访问临界资源。并发进程应互斥地访问临界资源。(以飞机售票系统为例)(以飞机售票系统为例)第二章 进 程 管 理 n=x n=n-1; x=n; m=x m=m-1; x=m;X=10 n=x n=n-1; x=n;A进程B进程同一段程序。两个终端同一段程序。两个终端第二章 进 程 管 理 n=x n=n-1; x=n; m=x m=m-1; x=m;X=10 n=x n=n-1; x=n;A进程B进程三条语句不能分开三条语句不能分开公共资源公共资源第二章 进 程 管 理 临界区临界区4. 临界区临界区 (Critical Section
5、) 定义:对临界资源访问代码段称为临界区。定义:对临界资源访问代码段称为临界区。对临界资源的访问控制可以通过对进入临界区的控制。对临界资源的访问控制可以通过对进入临界区的控制。互斥访问临界区便可实现对临界资源的互斥访问。互斥访问临界区便可实现对临界资源的互斥访问。第二章 进 程 管 理 临界区互斥访问描述:临界区互斥访问描述: 相应的,在相应的,在临界区后临界区后也应加上一段也应加上一段“退出区退出区”(exti section)代码)代码用于将正在被访问的标志恢复为用于将正在被访问的标志恢复为未访问未访问的标志的标志。 每个进程在进入每个进程在进入临界区临界区之前,应先对之前,应先对临界资源
6、临界资源做检查,看临界资做检查,看临界资源是否正被访问,为此,每个进程在进入临界区之前,应设置一段源是否正被访问,为此,每个进程在进入临界区之前,应设置一段用于上述检查的代码,称为用于上述检查的代码,称为“进入区进入区”代码(代码(entry section) 如果如果临界资源空闲临界资源空闲,则进入,并设置正在被访问的,则进入,并设置正在被访问的标志标志。第二章 进 程 管 理 访问临界资源的循环进程描述访问临界资源的循环进程描述Entry sectionCritical sectionExit sectionRemainder sectionrepeat until false第二章 进
7、程 管 理 5. 同步机制应遵循的规则同步机制应遵循的规则(1) 空闲让进空闲让进(2) 忙则等待忙则等待(3) 有限等待(避免有限等待(避免“死等死等”) 确保在确保在有限的时间内有限的时间内进程可以进入自己的临界区进程可以进入自己的临界区(4) 让权等待(释放让权等待(释放CPU) 进程不能进入临界区,应立即释放处理机,不能一直检测,进程不能进入临界区,应立即释放处理机,不能一直检测,以免进程陷入以免进程陷入“忙等忙等”第二章 进 程 管 理 Entry sectionCritical sectionExit sectionRemainder sectionrepeat until fal
8、se如何实现Entry section和Eixt section ?第二章 进 程 管 理 2.3.2 信号量机制信号量机制一、一、 什么是信号量什么是信号量 信号量是一个信号量是一个特殊变量特殊变量,除初始化外,仅能通,除初始化外,仅能通过两个标准的过两个标准的原子操作原子操作wait(s)和和signal(S)来访问,来访问,这两个操作一直被称为这两个操作一直被称为P操作和操作和V操作。这个变量操作。这个变量时整型变量,代表物理实体。时整型变量,代表物理实体。 wait(S)和和signal(S) 一直被分别称为一直被分别称为P、V操作操作,亦可记作亦可记作 P(s),V(s)。第二章 进
9、 程 管 理 1. 整型信号量机制整型信号量机制2. 记录型信号量机制记录型信号量机制3. AND型信号量机制型信号量机制4. 信号量集机制信号量集机制 信号量分类信号量分类第二章 进 程 管 理 1. 整型信号量机制(计数型)整型信号量机制(计数型)将信号量将信号量S定义成一个整数。定义成一个整数。 P(S)、)、V(S)操作)操作Wait 和和 signal操作可描述为:操作可描述为:P(S) wait(S): while S0 do no-op S =S-1; (获取对资源访问权获取对资源访问权) V(S) singal: S =S+1; (释放访问权释放访问权) 第二章 进 程 管 理
10、 1. 整型信号量机制(续)整型信号量机制(续) 利用信号量实现进程互斥访问临界资源利用信号量实现进程互斥访问临界资源var mutex: semaphore:=1;Process i: begin repeatWait(mutex); (获取资源获取资源)Critrical Section;Signal(mutex); (释放资源释放资源)Reminder Section until false end;endEntry sectionCritical sectionExit sectionRemainder sectionrepeat until false第二章 进 程 管 理 整型信号
11、量的缺陷 在整型信号量机制中的在整型信号量机制中的wait操作,只要操作,只要是信号量是信号量S0, 就会就会不断地测试不断地测试。因此,。因此,该机制该机制并未遵循并未遵循“让权等待让权等待”的准则,的准则, 而是使进程而是使进程处于处于“忙等忙等”的状态。的状态。第二章 进 程 管 理 课堂练习1、为什么进程在进入临界区之前,应先执行“进入区”代码?在退出前又要执行“退出去”代码?2、你认为整型信号量机制是否完全遵循了同步机制的四条准则,为什么?第二章 进 程 管 理 2. 记录型信号量机制记录型信号量机制 记录型信号量记录型信号量 在整型信号量机制中的在整型信号量机制中的wait操作,只
12、要是信号量操作,只要是信号量S0, 就就会会不断地测试不断地测试。因此,该机制。因此,该机制并未遵循并未遵循“让权等待让权等待”的的准则,准则, 而是使进程而是使进程处于处于“忙等忙等”的状态。的状态。 记录型信号量机制,则是一种不存在记录型信号量机制,则是一种不存在“忙等忙等”现象的进现象的进程同步机制。但在采取了程同步机制。但在采取了“让权等待让权等待”的策略后,又会的策略后,又会出现多个进程等待访问同一临界资源的情况。出现多个进程等待访问同一临界资源的情况。 为此,在信号量机制中,除了需要一个用于代表资源数为此,在信号量机制中,除了需要一个用于代表资源数目的整型变量目的整型变量value
13、外,还应增加一个进程链表外,还应增加一个进程链表L,用于,用于链接上述的所有等待进程。链接上述的所有等待进程。第二章 进 程 管 理 2. 记录型信号量机制记录型信号量机制(续续1)记录型信号量的记录型信号量的wait(S) (P(S) 操作可描述为:操作可描述为:procedure wait(S) var S: semaphore; begin S.value =S.value-1; if S.value0 then block(S.L) end 第二章 进 程 管 理 1、S. value的初值表示系统中的初值表示系统中某类资源的数目某类资源的数目, 又称为资源信号量;如又称为资源信号量;
14、如S. value的初值为的初值为1,表示只允许表示只允许 一个进程访问临界资源,此时的信号量转化为互斥信号一个进程访问临界资源,此时的信号量转化为互斥信号量。量。 2、每次、每次wait操作,意味着进程操作,意味着进程请求请求一个单位的该类一个单位的该类 资源,资源, 描述为描述为 S. value =S. value-1; 3、当、当S. value0时,表示该类资源已时,表示该类资源已分配完毕分配完毕,因,因 此进程应调用此进程应调用 block原语,原语,进行自我阻塞进行自我阻塞,放弃处,放弃处 理机,并插入到理机,并插入到信号量链表信号量链表S. L中中。遵循了。遵循了“让权等让权等
15、 待待”准则。准则。 4、当、当S. value0时,时,S. value的绝对值表示在该信号的绝对值表示在该信号 量链表中已阻塞进程的数目。量链表中已阻塞进程的数目。 第二章 进 程 管 理 2. 记录型信号量机制记录型信号量机制(续续1)记录型信号量的记录型信号量的signal(S)(V(S)操作可描述为:操作可描述为: procedure signal(S) var S: semaphore; begin S.value =S.value+1; if S.value0 then wakeup(S.L); end 第二章 进 程 管 理 记录型信号量的物理意义记录型信号量的物理意义(资源共
16、享资源共享) S. value的初值的初值表示系统中某类资源的数目表示系统中某类资源的数目,又称为资,又称为资源信号量;源信号量; 当当S. value0时时,表示该类资源尚未分配完,还有表示该类资源尚未分配完,还有S. value个个。 对信号量的每次对信号量的每次signal操作,表示执行进程释放一个操作,表示执行进程释放一个单位资源单位资源,S. value =S. value+1操作表示资源数目操作表示资源数目加加1。 若加若加1后仍是后仍是S. value0,则表示在该信号量链表中,则表示在该信号量链表中,仍有等待该资源的进程被阻塞,故还应调用仍有等待该资源的进程被阻塞,故还应调用wakeup原语,将原语,将S. L链表中的等待进程唤醒。链表中的等待进程唤醒。 如如S. value的初值为的初值为1,表示只允许一个进程访问临界表示只允许一个进程访问临界资源,此时的信号量转化为互斥信号量。资源,此时的信号量转化为互斥信号量。第二章 进 程 管 理 1. 利用信号量实现进程互斥利用信号量实现进程互斥2. 利用信号量描述前趋关系利用信号量描述前趋关系3. 利用信号量实现进程同步利用