- 1、本文档共98页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Os-04-1_2同步与互斥
1
计算机操作系统教程
(第2版)
2
4.4 .1 进程间的互斥
( Mutual Exclusion )
为什么要讨论
互斥?
3
现代操作系统中进程执行的特点:
独立性,异步性,并发
并发带来的影响:
资源共享(提高资源利用率 如CPU)
资源竞争(出现不希望出现的错误)
4
{
ReadFromFileA ( X ) ;
if ( X 1 ) then
X := X - 1;
WriteToFileA( X ) ;
}
飞机订票系统:
远程终端通过位于服务器主机中的进程Ti处理订票业
务;
位于服务器主机中的文件FileA存放的数据表示剩余的票
数和下一次即将卖出的座位号
25ms
50ms
5
T1
{
ReadFromFileA
(X) ;
if ( X 1 ) then
X := X - 1;
WriteToFileA( X ) ;
}
50ms (1)
飞机订票系统:
位于武昌的某远程终端通过位于服务器主机中的进程 T1 处理订票业务;
位于汉口的某远程终端通过位于服务器主机中的进程 T2 处理订票业务;
T2
{
ReadFromFileA
(X) ;
if ( X 1 ) then
X := X - 1;
WriteToFileA( X ) ;
}
50ms (2)
6
T1
{
ReadFromFileA
(X) ;
if ( X 1 ) then
}
25ms (1)
T2
{
ReadFromFileA
(X) ;
if ( X 1 ) then
}
X := X - 1;
25ms (3)
WriteToFileA( X ) ;
25ms (2)
X := X - 1;
25ms (4)
WriteToFileA( X ) ;
飞机订票系统:
7
1. 大量共享资源如只读数据可以同时访问,以
提高资源的利用率;
2. 部分资源(如外设、共享数据结构),多个
进程在对其进行访问时(主要是进行写入或修
改),可能出现无法预料的错误。
提高资源利用率的前提是要保证数据的完
整性和安全性。
进程间的并发必须加以控制
怎么控
制?
8
进程的互斥 Mutual Exclusion
1.可以同时使用的
2.不可以同时使用的
由于各进程要求共享资源,而有些资源需要
互斥使用,因此各进程间竞争使用这些资源,进
程间的这种关系为进程互斥。
两个概念:
临界资源:critical resource
临界区 :critical section
9
系统中某些资源一次只允许一个进
程使用,称这样的资源为临界资源或互
斥资源。
临界资源:critical resource
10
程序 段1
程序 段2
程序 段n
共享变 量
11
临界区(互斥区):critical section
在进程中涉及到临界资源的程序段
叫临界区。
多个进程关于同一临界资源的一组
临界区称为相关临界区集合。
12
临界区的访问过程的抽象算法
entry section
critical section
exit section
remainder section
13
进程间互斥问题的解决(P、V操作)
P1
P(mutex)
V(mutex)
互斥区
P2
P(mutex)
V(mutex)
P3
P(mutex)
V(mutex)
14
进程互斥问题模拟演示
有控的进程并发
无控的进程并发
具体实
现?
15
4.4 .2 互斥算法
1 中断屏蔽方法
2 “测试并设置”指令
3 上锁原语
4 信号量 (semaphore)
16
临界区的访问过程
entry section
critical section
exit section
remainder section
17
中断屏蔽方法
“开关中断”指令
进入临界区前执行:
执行“关中断”指令
离开临界区后执行:
执行“开中断”指令
简单,有效
较高的代价,限制CPU并发能力(临界区小)
不适应多处理器
“测试并设置”指令
boolean TS (boolean
*lock)
{
boolean old;
old = *lock;
*lock = true;
Return old;
}
Test-and-Set指令
lock表示资源的两种状态:
TRUE
FALSE
占用
空闲
利用TS实现进程互斥:每个临界资源设置一个
公共布尔变量lock,初值为FALSE
在进入区利用TS进行检查:有进
文档评论(0)