操作系统4-2.ppt

上传人:rrsccc 文档编号:9194358 上传时间:2021-02-07 格式:PPT 页数:17 大小:109KB
返回 下载 相关 举报
操作系统4-2.ppt_第1页
第1页 / 共17页
操作系统4-2.ppt_第2页
第2页 / 共17页
操作系统4-2.ppt_第3页
第3页 / 共17页
操作系统4-2.ppt_第4页
第4页 / 共17页
操作系统4-2.ppt_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《操作系统4-2.ppt》由会员分享,可在线阅读,更多相关《操作系统4-2.ppt(17页珍藏版)》请在三一文库上搜索。

1、第八讲 同步与互斥实现方法,目的与要求:理解互斥问题的硬件实现方法;掌握信号量机制及使用它解决进程同步互斥问题的方法。 重点与难点:信号量实现及使用。 作业:1,2,4,13(没做7题请补做),4.2.3实现临界段的硬件方法,利用处理机提供的特殊指令实现临界区加锁 单处理机系统常见硬件指令有: 一.屏蔽中断 Parbegin A(amount) disableInterrupt(); R1=balance; R2=amount; R1=R1+R2; balance=R1; enableInterrupt(); ;,B(amount) disableInterrupt(); R1=balance

2、; R2=amount; R1=R1-R2; balance=R1; enableInterrupt(); ; Parend;,多处理机系统硬件指令有:,一、“Test_and_Set”指令。 该指令功能描述为: Function Test_and_Set(Var target:boolean) :boolean; begin Test_and_Set = target; Target = true; end;,二、“Swap”指令。 该指令功能描述为: Procedure Swap(Var a,b:boolean); Var temp:boolean; begin temp = a; a =

3、 b; b = temp; end;,设Lock为全局布尔变量,利用Test repeat Swap (lock, key); until key = false; critical section lock = false; non-critical section Until false;,4.2.4 信号量,信号量机构:“信号量”、“P、V操作”。 信号量S为一整型变量: P(S): While S0 do skip ; S = S-1 ; V(S):S = S1; P、V操作是两条原语,即保证P、V操作对变量S的访问是互斥操作。,一. 原语概念与实现 原语:指完成某种功能且不被分割或不

4、被中断执行的操作序列。 原语可通过硬件实现不可中断性;或通过实现临界段的元方法达到不被中断。 实现临界段的元方法: 屏蔽中断(只用于单机) 加硬锁。,下面我们用屏蔽中断方法实现P(s)和V(s)的原子性。 P(s) DisableInterrupt(); while (s0)do enableInterrupt(); DisableInterrupt(); ; s = s - 1; enableInterrupt(); V(s) DisableInterrupt(); s = s +1; enableInterrupt(); ,二、信号量的使用(互斥与同步) 互斥:用于n个进程的临界段互斥,n

5、进程共享一个信号量mutex,初值为1,任一进程Pi的结构为:,P(mutex),V(mutex),临界段,非临界段,repeat,Until false,同步:有P1、P2 两进程,必须在P1执行完S1语句后,P2才能执行S2。需同步的两进程共享信号量synch,初值为0。,Parbegin,P2: begin,P1: begin,S1;,V(synch);,end;,P(synch);,S2;,end;,Parend;,请用并行语句和PV操作描述,操作系统实现信号量时与进程调度相结合,消除忙等待现象。 原则是:在P操作循环等待的地方加入放弃处理机/挂入等待队列动作,在V操作时,从等待队列中摘取进程变为就绪态。 (P、V原语本身的互斥操作通过屏敝中断或为信号量加硬锁实现),三.信号量的具体实现,1、信号量定义 type Semaphore=record value:integer; 一个数型变量 L:List of process;一个PCB队列 end; 2、P操作 P(S):S.Value=S.value 1; If S.value0 then 保存现场, 将本进程挂入S.L队列,重新调度。 3、V操作 V(S):S.value:=value+1 If S.value 0 then 从S.L队列 取一进程,挂入就绪队列。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1