os-03进程_进程同步互斥与通信、死锁.ppt
《os-03进程_进程同步互斥与通信、死锁.ppt》由会员分享,可在线阅读,更多相关《os-03进程_进程同步互斥与通信、死锁.ppt(174页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、OS-03进程管理_进程同步互斥与通信、死锁 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望3.6 进程同步与同步进程同步与同步操作系统设计中的核心问题是关于进程和线程的管操作系统设计中的核心问题是关于进程和线程的管操作系统设计中的核心问题是关于进程和线程的管操作系统设计中的核心问题是关于进程和线程的管理理理理 多道程序技术多道程序技术多道程序技术多道程序技术 管理单处理器系统中的多个进程管理单处理器系统中的多个进程管理单处理器系统中的多个进程管理单处理器系统中的
2、多个进程 多处理技术多处理技术多处理技术多处理技术管理多处理器系统中的多个进程管理多处理器系统中的多个进程管理多处理器系统中的多个进程管理多处理器系统中的多个进程 分布处理技术分布处理技术分布处理技术分布处理技术 管理多台分布式计算机系统管理多台分布式计算机系统管理多台分布式计算机系统管理多台分布式计算机系统(集群集群集群集群)中多中多中多中多个进程的执行个进程的执行个进程的执行个进程的执行并发程序并发程序并发是所有问题的基础,也是操作系统设计的基础。并发是所有问题的基础,也是操作系统设计的基础。并发是所有问题的基础,也是操作系统设计的基础。并发是所有问题的基础,也是操作系统设计的基础。它包括
3、很多设计问题它包括很多设计问题它包括很多设计问题它包括很多设计问题 分配给进程的处理器时间等分配给进程的处理器时间等分配给进程的处理器时间等分配给进程的处理器时间等 资源的共享与争用资源的共享与争用资源的共享与争用资源的共享与争用 进程间的通信进程间的通信进程间的通信进程间的通信 多个进程活动的同步多个进程活动的同步多个进程活动的同步多个进程活动的同步并发程序并发程序程序并发可以通过创建进程或线程实现程序并发可以通过创建进程或线程实现程序并发可以通过创建进程或线程实现程序并发可以通过创建进程或线程实现Windows 2000Windows 2000并发程序设计并发程序设计并发程序设计并发程序设
4、计 例子例子例子例子3 37.7.cppcppUnixUnix下的并发程序设计下的并发程序设计下的并发程序设计下的并发程序设计 通过通过通过通过fork()fork()创建子进程创建子进程创建子进程创建子进程 例:例:例:例:a+b=ca+b=cLinuxLinux下的并发程序设计下的并发程序设计下的并发程序设计下的并发程序设计 实验实验实验实验4.34.3 Void main()Void main()Pid=fork();Pid=fork();If pid=0 then If pid=0 then begin begin read(b);read(b);exit(0);exit(0);end
5、;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);3.6 进程同步与同步进程同步与同步进程并发要解决的主要问题进程并发要解决的主要问题进程并发要解决的主要问题进程并发要解决的主要问题 互斥互斥互斥互斥:支持并发进程的基本需求是实现互斥的能力,即,支持并发进程的基本需求是实现互斥的能力,即,支持并发进程的基本需求是实现互斥的能力,即,支持并发进程的基本需求是实现互斥的能力,即,当一个进程被授予一资源时,在其活动期间,它具有排当
6、一个进程被授予一资源时,在其活动期间,它具有排当一个进程被授予一资源时,在其活动期间,它具有排当一个进程被授予一资源时,在其活动期间,它具有排斥所有其他进程使用该资源的能力斥所有其他进程使用该资源的能力斥所有其他进程使用该资源的能力斥所有其他进程使用该资源的能力并发的基本需求并发的基本需求并发的基本需求并发的基本需求 实现互斥包括软件方法实现互斥包括软件方法实现互斥包括软件方法实现互斥包括软件方法(“(“忙等待忙等待忙等待忙等待”技术技术技术技术)和支持互斥的和支持互斥的和支持互斥的和支持互斥的硬件机制等硬件机制等硬件机制等硬件机制等 同步同步同步同步:进程间的活动有相互依赖和合作的关系:进程
7、间的活动有相互依赖和合作的关系:进程间的活动有相互依赖和合作的关系:进程间的活动有相互依赖和合作的关系 通信通信通信通信:信号量、管程、消息:信号量、管程、消息:信号量、管程、消息:信号量、管程、消息实现同步、互斥的三方法实现同步、互斥的三方法实现同步、互斥的三方法实现同步、互斥的三方法3.6 进程同步与同步进程同步与同步并发的例子及并发后的问题并发的例子及并发后的问题并发的例子及并发后的问题并发的例子及并发后的问题 并发并发并发并发 在同一时间段内,多个进程同时运行;宏观上并在同一时间段内,多个进程同时运行;宏观上并在同一时间段内,多个进程同时运行;宏观上并在同一时间段内,多个进程同时运行;
8、宏观上并发,微观上顺序执行。发,微观上顺序执行。发,微观上顺序执行。发,微观上顺序执行。并发后产生了并发后产生了并发后产生了并发后产生了资源的竞争和共享资源的竞争和共享资源的竞争和共享资源的竞争和共享问题,而且进程问题,而且进程问题,而且进程问题,而且进程的执行速度及进程的执行序列都是不可预测的的执行速度及进程的执行序列都是不可预测的的执行速度及进程的执行序列都是不可预测的的执行速度及进程的执行序列都是不可预测的 一个例子一个例子一个例子一个例子3.6 进程同步与同步进程同步与同步考虑下面一个字符回显的的过程考虑下面一个字符回显的的过程考虑下面一个字符回显的的过程考虑下面一个字符回显的的过程
9、void echo()void echo()chin=getchar();chin=getchar();chout=chin;chout=chin;putchar(chout);putchar(chout);从键盘获得输入,每击一下键,输入字符就保存在变量从键盘获得输入,每击一下键,输入字符就保存在变量从键盘获得输入,每击一下键,输入字符就保存在变量从键盘获得输入,每击一下键,输入字符就保存在变量chinchin中,然后传送给变量中,然后传送给变量中,然后传送给变量中,然后传送给变量choutchout,并回送显示器,并回送显示器,并回送显示器,并回送显示器任何程序可以重复地调用此过程,接收用
10、户输入,并在用户任何程序可以重复地调用此过程,接收用户输入,并在用户任何程序可以重复地调用此过程,接收用户输入,并在用户任何程序可以重复地调用此过程,接收用户输入,并在用户的屏幕上显示的屏幕上显示的屏幕上显示的屏幕上显示3.6 进程同步与同步进程同步与同步考虑一个支持单用户单处理器、多道程序设计系统考虑一个支持单用户单处理器、多道程序设计系统考虑一个支持单用户单处理器、多道程序设计系统考虑一个支持单用户单处理器、多道程序设计系统将其当作一个共享过程,载入到所有应用程序公将其当作一个共享过程,载入到所有应用程序公将其当作一个共享过程,载入到所有应用程序公将其当作一个共享过程,载入到所有应用程序公
11、用的全局存储区中。这样每个应用程序都能使用用的全局存储区中。这样每个应用程序都能使用用的全局存储区中。这样每个应用程序都能使用用的全局存储区中。这样每个应用程序都能使用这个过程,由于每个应用程序只需使用这个过程,由于每个应用程序只需使用这个过程,由于每个应用程序只需使用这个过程,由于每个应用程序只需使用echoechoechoecho过程过程过程过程的一个副本,从而节省空间的一个副本,从而节省空间的一个副本,从而节省空间的一个副本,从而节省空间进程间共享主存是非常有用的,它允许进程间有效而紧进程间共享主存是非常有用的,它允许进程间有效而紧进程间共享主存是非常有用的,它允许进程间有效而紧进程间共
12、享主存是非常有用的,它允许进程间有效而紧密的交互,有利于进程的相互通信。但是,共享也可能密的交互,有利于进程的相互通信。但是,共享也可能密的交互,有利于进程的相互通信。但是,共享也可能密的交互,有利于进程的相互通信。但是,共享也可能会带来一些问题会带来一些问题会带来一些问题会带来一些问题 void echo()void echo()chin=getchar();chin=getchar();chout=chin;chout=chin;putchar(chout);putchar(chout);3.6 进程同步与同步进程同步与同步考虑下面的顺序考虑下面的顺序考虑下面的顺序考虑下面的顺序 进程进程
13、进程进程P1P1调用调用调用调用echoecho过程,并在过程,并在过程,并在过程,并在getchargetchar函数结束后立即被中函数结束后立即被中函数结束后立即被中函数结束后立即被中断,此时,最近输入的字符断,此时,最近输入的字符断,此时,最近输入的字符断,此时,最近输入的字符x x被保存在变量被保存在变量被保存在变量被保存在变量 chinchin中中中中 进程进程进程进程P2P2被激活并调用被激活并调用被激活并调用被激活并调用echoecho过程,过程,过程,过程,echoecho过程运行得出结果,过程运行得出结果,过程运行得出结果,过程运行得出结果,输入然后在屏幕上显示单个的字符输入
14、然后在屏幕上显示单个的字符输入然后在屏幕上显示单个的字符输入然后在屏幕上显示单个的字符 y y 进程进程进程进程P1P1被恢复。此时被恢复。此时被恢复。此时被恢复。此时chinchin中值中值中值中值x x被写覆盖,因此已丢失,被写覆盖,因此已丢失,被写覆盖,因此已丢失,被写覆盖,因此已丢失,而而而而chinchin中的值中的值中的值中的值y y被传送给被传送给被传送给被传送给choutchout并显示出来并显示出来并显示出来并显示出来 第一个字符丢失,第第一个字符丢失,第第一个字符丢失,第第一个字符丢失,第2 2个字符被显示了两次个字符被显示了两次个字符被显示了两次个字符被显示了两次 voi
15、d echo()void echo()chin=getchar();chin=getchar();chout=chin;chout=chin;putchar(chout);putchar(chout);getchargetchar()()()()chinchinchoutchout putcharputchar()()()()P1P2getchargetchar()()()()XXgetchargetchar()()()()YYYputcharputchar()()()()YYY?echoecho3.6 进程同步与同步进程同步与同步解决方案:解决方案:解决方案:解决方案:一次只允许一个进程调用
16、一次只允许一个进程调用一次只允许一个进程调用一次只允许一个进程调用echoecho过程:过程:过程:过程:进程进程进程进程P1P1P1P1调用调用调用调用echoechoechoecho过程,并在过程,并在过程,并在过程,并在getchargetchargetchargetchar函数结束后立即被中断,函数结束后立即被中断,函数结束后立即被中断,函数结束后立即被中断,此时,最近输入的字符此时,最近输入的字符此时,最近输入的字符此时,最近输入的字符x x x x被保存在变量被保存在变量被保存在变量被保存在变量chinchinchinchin中中中中 进程进程进程进程P2P2P2P2被激活并调用被
17、激活并调用被激活并调用被激活并调用echoechoechoecho过程。但是,由于过程。但是,由于过程。但是,由于过程。但是,由于P1P1P1P1仍然在仍然在仍然在仍然在echoechoechoecho过程中,尽管当前过程中,尽管当前过程中,尽管当前过程中,尽管当前P1P1P1P1处于就绪状态,处于就绪状态,处于就绪状态,处于就绪状态,P2P2P2P2仍被阻塞,不能进仍被阻塞,不能进仍被阻塞,不能进仍被阻塞,不能进入这个过程。因此,入这个过程。因此,入这个过程。因此,入这个过程。因此,P2P2P2P2被阻塞,等待被阻塞,等待被阻塞,等待被阻塞,等待echoechoechoecho过程可用过程可
18、用过程可用过程可用 一段时间后进程一段时间后进程一段时间后进程一段时间后进程P1P1P1P1被恢复,完成被恢复,完成被恢复,完成被恢复,完成echoechoechoecho的执行,显示出正确的执行,显示出正确的执行,显示出正确的执行,显示出正确的字符的字符的字符的字符x x x x P1P1P1P1退出退出退出退出echoechoechoecho后,解除了后,解除了后,解除了后,解除了P2P2P2P2的阻塞,的阻塞,的阻塞,的阻塞,P2P2P2P2被恢复,成功地调用被恢复,成功地调用被恢复,成功地调用被恢复,成功地调用echoechoechoecho过程过程过程过程 void echo()vo
19、id echo()chin=getchar();chin=getchar();chout=chin;chout=chin;putchar(chout);putchar(chout);P1 void echo()void echo()chin=getchar();chin=getchar();chout=chin;chout=chin;putchar(chout);putchar(chout);调用调用调用调用echoecho超时,就绪超时,就绪超时,就绪超时,就绪P2调用调用调用调用echoecho资源资源资源资源正忙正忙正忙正忙阻塞状态阻塞状态阻塞状态阻塞状态调度运行调度运行调度运行调度运行
20、释放释放释放释放echoecho唤唤 醒醒获取资源获取资源获取资源获取资源就绪状态就绪状态就绪状态就绪状态调度运行调度运行调度运行调度运行3.6 进程同步与同步进程同步与同步由此可见,解决共享资源的保护,唯一的办法是由此可见,解决共享资源的保护,唯一的办法是由此可见,解决共享资源的保护,唯一的办法是由此可见,解决共享资源的保护,唯一的办法是互斥的使用互斥的使用互斥的使用互斥的使用共享资源共享资源共享资源共享资源(如变量,代码等)(如变量,代码等)(如变量,代码等)(如变量,代码等)即:一次只允许一个进程访问共享资源即:一次只允许一个进程访问共享资源即:一次只允许一个进程访问共享资源即:一次只允
21、许一个进程访问共享资源临界资源和临界区:临界资源和临界区:临界资源和临界区:临界资源和临界区:临界资源临界资源临界资源临界资源 某些在一段时间内只允许一个进程使用的共享资源称为临某些在一段时间内只允许一个进程使用的共享资源称为临某些在一段时间内只允许一个进程使用的共享资源称为临某些在一段时间内只允许一个进程使用的共享资源称为临界资源界资源界资源界资源 临界区(段)临界区(段)临界区(段)临界区(段)访问临界资源的程序段称为临界区。即互斥执行的程序段访问临界资源的程序段称为临界区。即互斥执行的程序段访问临界资源的程序段称为临界区。即互斥执行的程序段访问临界资源的程序段称为临界区。即互斥执行的程序
22、段p53p533.6 进程同步与同步进程同步与同步进程进程进程进程P1P1和和和和P2P2共享同一打印机资源,其操作流程如共享同一打印机资源,其操作流程如共享同一打印机资源,其操作流程如共享同一打印机资源,其操作流程如下:下:下:下:p1:entry codep1:entry codep1:entry codep1:entry code使用打印机使用打印机使用打印机使用打印机exit codeexit codeexit codeexit code p2:entry code p2:entry code p2:entry code p2:entry code使用打印机使用打印机使用打印机使用打印
23、机exit codeexit codeexit codeexit code系统打印机即为系统打印机即为系统打印机即为系统打印机即为临界资源临界资源临界资源临界资源P1P1和和和和p2p2的访问临界资源打印机的代码即为的访问临界资源打印机的代码即为的访问临界资源打印机的代码即为的访问临界资源打印机的代码即为临临临临界区界区界区界区3.6 进程同步与同步进程同步与同步进程的通信方式之一进程的通信方式之一进程的通信方式之一进程的通信方式之一同步与互斥同步与互斥同步与互斥同步与互斥 同步同步同步同步:进程间必须互相合作的协同关系,有前后次序的等:进程间必须互相合作的协同关系,有前后次序的等:进程间必须
24、互相合作的协同关系,有前后次序的等:进程间必须互相合作的协同关系,有前后次序的等待和信息交换关系待和信息交换关系待和信息交换关系待和信息交换关系,这种进程间的直接制约关系称为进程这种进程间的直接制约关系称为进程这种进程间的直接制约关系称为进程这种进程间的直接制约关系称为进程同步同步同步同步(p60)(p60)(p60)(p60)互斥互斥互斥互斥:两个进程,当一个进程进入临界区时,另一个进程:两个进程,当一个进程进入临界区时,另一个进程:两个进程,当一个进程进入临界区时,另一个进程:两个进程,当一个进程进入临界区时,另一个进程不能进入该临界区,这种进程间的间接制约关系称为进程不能进入该临界区,这
25、种进程间的间接制约关系称为进程不能进入该临界区,这种进程间的间接制约关系称为进程不能进入该临界区,这种进程间的间接制约关系称为进程互斥互斥互斥互斥(p53)(p53)(p53)(p53)3.6 进程同步与同步进程同步与同步互斥:硬件的支持互斥:硬件的支持互斥:硬件的支持互斥:硬件的支持 中断禁用中断禁用中断禁用中断禁用 在单处理器机器中,并发进程不能重叠在单处理器机器中,并发进程不能重叠在单处理器机器中,并发进程不能重叠在单处理器机器中,并发进程不能重叠,只能交只能交只能交只能交替。此外,一个进程将一直运行,直到它调用了一个操作替。此外,一个进程将一直运行,直到它调用了一个操作替。此外,一个进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- os 03 进程 同步 通信 死锁
限制150内