操作系统概论-chap3-3.1-3.2-进程的同步与互斥课件.ppt

上传人:飞****2 文档编号:92373100 上传时间:2023-06-03 格式:PPT 页数:23 大小:2.57MB
返回 下载 相关 举报
操作系统概论-chap3-3.1-3.2-进程的同步与互斥课件.ppt_第1页
第1页 / 共23页
操作系统概论-chap3-3.1-3.2-进程的同步与互斥课件.ppt_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《操作系统概论-chap3-3.1-3.2-进程的同步与互斥课件.ppt》由会员分享,可在线阅读,更多相关《操作系统概论-chap3-3.1-3.2-进程的同步与互斥课件.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3 3章章 同步、通信与死锁同步、通信与死锁目目 录录3.1 进程同步3.2 进程互斥3.3 信号量与PV操作3.4 管程3.5 进程通信3.6 进程同步实例研究3.7 死锁知识点回顾知识点回顾操作系统设计中的操作系统设计中的核心问题核心问题是关于是关于进程和线程的管进程和线程的管理:理:多道程序技术多道程序技术 管理单处理器系统中的多个进程管理单处理器系统中的多个进程多处理技术多处理技术管理多处理器系统中的多个进程管理多处理器系统中的多个进程分布处理技术分布处理技术 管理多台分布式计算机系统管理多台分布式计算机系统(集群集群)中多中多个进程的执行个进程的执行并发程序并发程序并发是所有问题

2、的基础,也是操作系统设计的基础。并发是所有问题的基础,也是操作系统设计的基础。它包括很多设计问题:它包括很多设计问题:分配给进程的处理器时间等;分配给进程的处理器时间等;资源的共享与争用;资源的共享与争用;进程间的通信;进程间的通信;多个进程活动的同步。多个进程活动的同步。知识点回顾知识点回顾知识点回顾知识点回顾并发程序并发程序程序并发可以通过创建进程或线程实现程序并发可以通过创建进程或线程实现Unix下的并发程序设计下的并发程序设计 通过通过fork()创建子进程创建子进程 例:例:a+b=c Void main()Void main()Pid=fork();Pid=fork();If pi

3、d=0 then If pid=0 then begin begin read(b);read(b);exit(0);exit(0);end;end;Else Else read(a);read(a);Return_pid=wait(&status);Return_pid=wait(&status);c=a+b;c=a+b;Write(c);Write(c);进程并发要解决的主要问题:进程并发要解决的主要问题:互斥互斥:支持并发进程的基本需求是实现互斥的能力,即,:支持并发进程的基本需求是实现互斥的能力,即,当一个进程被授予一资源时,在其活动期间,它具有排斥当一个进程被授予一资源时,在其活动期

4、间,它具有排斥所有其他进程使用该资源的能力所有其他进程使用该资源的能力并发的基本需求。并发的基本需求。实现互斥包括软件方法实现互斥包括软件方法(“忙等待忙等待”技术技术)和支持互斥的硬和支持互斥的硬件机制等。件机制等。同步同步:进程间的活动有相互依赖和合作的关系。:进程间的活动有相互依赖和合作的关系。通信通信:信号量、管程、消息:信号量、管程、消息实现同步、互斥的三方法。实现同步、互斥的三方法。知识点回顾知识点回顾并发的例子及并发后的问题并发的例子及并发后的问题并发并发 在同一时间段内,多个进程同时运行;宏观上并在同一时间段内,多个进程同时运行;宏观上并发,微观上顺序执行。发,微观上顺序执行。

5、并发后产生了并发后产生了资源的竞争和共享资源的竞争和共享问题问题,而且进程,而且进程的执行速度及进程的执行序列都是不可预测的。的执行速度及进程的执行序列都是不可预测的。一个例子一个例子并发举例并发举例考虑下面一个字符回显的的过程考虑下面一个字符回显的的过程 void echo()chin=getchar();chout=chin;putchar(chout);任何程序可以重复地调用此过程,接收用户输入,并在用户任何程序可以重复地调用此过程,接收用户输入,并在用户的屏幕上显示。的屏幕上显示。将其当作一个共享过程,载入到所有应用程序公用的全将其当作一个共享过程,载入到所有应用程序公用的全局存储区中

6、。这样每个应用程序都能使用这个过程,由局存储区中。这样每个应用程序都能使用这个过程,由于每个应用程序只需使用于每个应用程序只需使用echo过程的一个副本,从而节省过程的一个副本,从而节省空间。空间。getchargetchar()()()()chinchinchoutchout putcharputchar()()()()P1P2getchargetchar()()XXgetchargetchar()()YYYputcharputchar()()YYYechoecho解决方案:解决方案:解决方案:解决方案:一次只允许一个进程调用一次只允许一个进程调用一次只允许一个进程调用一次只允许一个进程调用

7、echoecho过程过程过程过程进程进程P1调用调用echo过程,并在过程,并在getchar函数结束后立即被中断,函数结束后立即被中断,此时,最近输入的字符此时,最近输入的字符x被保存在变量被保存在变量chin中。中。进程进程P2被激活并调用被激活并调用echo过程。但是,由于过程。但是,由于P1仍然在仍然在echo过程中,尽管当前过程中,尽管当前P1处于就绪状态,处于就绪状态,P2仍被阻塞,不能进仍被阻塞,不能进入这个过程。因此,入这个过程。因此,P2被阻塞,等待被阻塞,等待echo过程可用。过程可用。一段时间后进程一段时间后进程P1被恢复,完成被恢复,完成echo的执行,显示出正确的执行

8、,显示出正确的字符的字符x。P1退出退出echo后,解除了后,解除了P2的阻塞,的阻塞,P2被恢复,成功地调用被恢复,成功地调用echo过程。过程。P1 void echo()void echo()chin=getchar();chin=getchar();chout=chin;chout=chin;putchar(chout);putchar(chout);调用调用echoecho超时,就绪超时,就绪P2调用调用echoecho资源资源资源资源正忙正忙正忙正忙阻塞状态阻塞状态调度运行调度运行释放释放echoecho唤 醒获取资源获取资源就绪状态就绪状态调度运行调度运行由此可见,解决共享资源的

9、保护,唯一的办法是由此可见,解决共享资源的保护,唯一的办法是互斥的使用互斥的使用共享资源共享资源(如变量,代码等)(如变量,代码等)即:一次只允许一个进程访问共享资源即:一次只允许一个进程访问共享资源临界资源和临界区:临界资源和临界区:p临界资源临界资源 某些在一段时间内只允许一个进程使用的共享资源称为临某些在一段时间内只允许一个进程使用的共享资源称为临界资源界资源p临界区(段临界区(段)访问临界资源的程序段称为临界区。即互斥执行的程序段访问临界资源的程序段称为临界区。即互斥执行的程序段3.1 3.1 进程的同步与互斥进程的同步与互斥进程进程P1和和P2共享同一打印机资源,其操作流程如下:共享

10、同一打印机资源,其操作流程如下:p1:entry codep1:entry code使用打印机使用打印机exit codeexit code p2:entry code p2:entry code使用打印机使用打印机exit codeexit code系统打印机即为系统打印机即为临界资源临界资源P1和和p2的访问临界资源打印机的代码即为的访问临界资源打印机的代码即为临界区临界区3.1 3.1 进程的同步与互斥进程的同步与互斥进程的通信方式之一进程的通信方式之一同步与互斥同步与互斥同步同步:进程间必须互相合作的协同关系,有前后次序的等:进程间必须互相合作的协同关系,有前后次序的等待和信息交换关系

11、待和信息交换关系,这种进程间的直接制约关系称为进程这种进程间的直接制约关系称为进程同步。同步。互斥互斥:两个进程,当一个进程进入临界区时,另一个进程:两个进程,当一个进程进入临界区时,另一个进程不能进入该临界区,这种进程间的间接制约关系称为进程不能进入该临界区,这种进程间的间接制约关系称为进程互斥。互斥。3.1 3.1 进程的同步与互斥进程的同步与互斥1.1.进程同步举例进程同步举例例例.公共汽车中的司机和售票员。公共汽车中的司机和售票员。司机司机 P1 P1 售票员售票员 P2P2 while(true)while(true)while(true)while(true)启动车辆;启动车辆;关

12、门;关门;正常运行;正常运行;售票;售票;到站停车;到站停车;开门;开门;3.1 3.1 进程的同步与互斥进程的同步与互斥p通常通常,把共同完成一个任务的若干进程称为,把共同完成一个任务的若干进程称为合作进程合作进程。合作进程在并发执行时必须同步推进才能得到正确的执合作进程在并发执行时必须同步推进才能得到正确的执行结果。行结果。3.1 3.1 进程的同步与互斥进程的同步与互斥互斥:互斥:硬件的支持硬件的支持中断禁用中断禁用 在单处理器机器中,并发进程不能重叠在单处理器机器中,并发进程不能重叠,只能只能交替。此外,一个进程将一直运行,直到它调用了一个操交替。此外,一个进程将一直运行,直到它调用了

13、一个操作系统服务或被中断。因此,为保证互斥,只需要保证一作系统服务或被中断。因此,为保证互斥,只需要保证一个进程不被中断就可以。个进程不被中断就可以。当一个计算机系统包括当一个计算机系统包括多个处理器多个处理器时,在这种情况下,禁时,在这种情况下,禁止中断止中断不能保证互斥不能保证互斥。3.1 3.1 进程的同步与互斥进程的同步与互斥互斥:硬件的支持互斥:硬件的支持专门的机器指令专门的机器指令 在硬件级,对存储器单元的访问排斥到相同单元的其他在硬件级,对存储器单元的访问排斥到相同单元的其他访问。基于这一点,处理器的设计者提出了一些机器指令,访问。基于这一点,处理器的设计者提出了一些机器指令,用

14、于保证两个动作的原子性,如在一个取指令周期中对一用于保证两个动作的原子性,如在一个取指令周期中对一个存储器单元的读和写或者读和测试。由于这些动作个存储器单元的读和写或者读和测试。由于这些动作在一在一个指令周期中执行个指令周期中执行,它们不会受到其他指令的干扰,它们不会受到其他指令的干扰如:如:test-and-set指令,指令,swap指令等指令等3.1 3.1 进程的同步与互斥进程的同步与互斥实现同步、互斥的三种主要方法:实现同步、互斥的三种主要方法:信号量信号量管程管程消息传递消息传递进程间的同步与互斥一般用通信原语来实现进程间的同步与互斥一般用通信原语来实现低级通信原语低级通信原语加锁;

15、加锁;P、V操作操作 高级通信原语高级通信原语消息缓冲机制消息缓冲机制3.1 3.1 进程的同步与互斥进程的同步与互斥Lock和和unlockp关关锁和开和开锁是加是加锁机制的机制的2个基本操作。在其中个基本操作。在其中设置一公共置一公共变量量 x 代表某个代表某个临界界资源的源的状状态。X X1 1 表示资源可用表示资源可用 X X0 0 表示资源正在被使用表示资源正在被使用p进程使用程使用临界界资源必源必须做如下三个不可分割的做如下三个不可分割的操操作。作。3.1 3.1 进程的同步与互斥进程的同步与互斥Lock和和unlock 1)1)检查检查 x x 的值。的值。x=0 x=0,资源正

16、在使用,返回继续进行检查;资源正在使用,返回继续进行检查;x=1x=1,资源可以使用,置资源可以使用,置 x x 为为 0(0(关锁关锁)2)2)进入临界区,访问临界资源进入临界区,访问临界资源 3)3)释放资源释放资源,退出临界区,置退出临界区,置 x x 为为 1(1(开锁开锁)通通过分析,分析,给出关出关锁和开和开锁操作的描述操作的描述关关锁 lockx L:if x=0 then go to L else x:=0;开开锁 unlockxx:=1;互斥互斥的各个进程在各自的各个进程在各自单独执行单独执行时都可以得到正确的运行结果,时都可以得到正确的运行结果,但是当它们在临界区内交叉执行

17、时就可能出现问题。而但是当它们在临界区内交叉执行时就可能出现问题。而同步同步的各的各个进程,如果各自单独执行将不会完成作业的特定任务,只要当个进程,如果各自单独执行将不会完成作业的特定任务,只要当它们互相它们互相配合配合、共同、共同协调协调推进时才能得到正确的运行结果。推进时才能得到正确的运行结果。互斥的进程只要求它们不能同时进入临界区,而至于哪个进程先互斥的进程只要求它们不能同时进入临界区,而至于哪个进程先进入则不会产生运行的错误。但进入则不会产生运行的错误。但同步同步的进程的协调关系是建立在的进程的协调关系是建立在它们之间执行时序的基础上,所以,各个进程必须按照它们之间执行时序的基础上,所以,各个进程必须按照严格的先严格的先后次序后次序执行。执行。一般情况下,一般情况下,互斥互斥的进程并的进程并不知道对方的存在不知道对方的存在,而,而同步同步的进程不的进程不仅知道其它进程的存在,还要通过与其它进程的仅知道其它进程的存在,还要通过与其它进程的通信通信来达到相互来达到相互的的协调协调。进程的同步与互斥的区别进程的同步与互斥的区别谢谢!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁