版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八讲第八讲 同步与互斥实现方法同步与互斥实现方法 目的与要求:目的与要求:理解互斥问题的硬件实现方理解互斥问题的硬件实现方法;掌握信号量机制及使用它解决进程同法;掌握信号量机制及使用它解决进程同步互斥问题的方法。步互斥问题的方法。 重点与难点重点与难点:信号量实现及使用。:信号量实现及使用。 作业:作业:1,2,4,13(没做(没做7题请补做)题请补做)实现临界段的硬件方法利用处理机提供的特殊指令实现临界区加锁利用处理机提供的特殊指令实现临界区加锁单处理机系统常见硬件指令有单处理机系统常见硬件指令有: :一一. .屏蔽中断屏蔽中断Parbegin A(amount) disableInter
2、rupt(); R1=balance; R2=amount; R1=R1+R2; balance=R1; enableInterrupt(); ; B(amount) disableInterrupt(); R1=balance; R2=amount; R1=R1-R2; balance=R1; enableInterrupt(); ;Parend;多处理机系统硬件指令有多处理机系统硬件指令有: :一、一、“Test_and_SetTest_and_Set”指令。指令。该指令该指令功能功能描述为:描述为:Function Test_and_Set(Var target:boolean) :bo
3、olean;beginTest_and_Set = target;Target = true;end;二、二、“SwapSwap”指令。指令。该指令该指令功能功能描述为:描述为:Procedure SwapProcedure Swap(Var a,bVar a,b:booleanboolean););Var tempVar temp:booleanboolean;beginbegintemp = atemp = a;a = ba = b;b = tempb = temp;endend;设设LockLock为全局布尔变量,利用为全局布尔变量,利用Test&SetTest&Set指
4、令,即可实现对临界区的加锁与解锁:指令,即可实现对临界区的加锁与解锁:Repeat while Test&Set (lock) do skip critical section lock = false; non-critical sectionUntil false;“test&settest&set” 读后置读后置1 1指令实例:指令实例:T&S Ri,Aj T&S Ri,Aj 解释为将解释为将(Aj)(Aj)地址所指内地址所指内存单元内容读到存单元内容读到RiRi寄存器中寄存器中, ,同时将同时将1 1置入置入AjAj所指的内存单元中所指的内存单元
5、中. .设设LockLock为临界段锁变量,则安排如下指令,为临界段锁变量,则安排如下指令,即可实现加锁与解锁:即可实现加锁与解锁:* *临界段非临界段非临界段 A1A1&Lock;&Lock;(将(将LockLock单元地址送单元地址送A1A1寄存器。寄存器。LockLock单元初始值为单元初始值为0 0)Loop:T&S R1,A1;Loop:T&S R1,A1; JRN R1,Loop; (If (R1=1)then goto JRN R1,Loop; (If (R1=1)then goto Loop )Loop )A1 =&Lock;A1 =&a
6、mp;Lock;(A1) =0;(0(A1) =0;(0置置LockLock内存单元内存单元) )设设LockLock为全局布尔变量(初值为假),每个进程为全局布尔变量(初值为假),每个进程设一个局部布尔变量设一个局部布尔变量KeyKey。利用。利用SwapSwap指令,可实指令,可实现对临界区的加锁与解锁。现对临界区的加锁与解锁。Repeat key = true; repeat Swap (lock, key); until key = false; critical section lock = false; non-critical sectionUntil false;信号量信号量机
7、构:信号量机构:“信号量信号量”、“P P、V V操作操作”。 信号量信号量S S为一整型变量:为一整型变量: P(S): While S0 do skip P(S): While S0 do skip ; S = S-1 S = S-1 ; V V(S S):):S = SS = S1 1;P P、V V操作是两条原语,即保证操作是两条原语,即保证P P、V V操作对变量操作对变量S S的访问是互斥操作。的访问是互斥操作。一. 原语概念与实现原语:原语:指完成某种功能且不被分割或不指完成某种功能且不被分割或不被中断执行的操作序列。被中断执行的操作序列。原语可通过硬件实现不可中断性;或通原语可
8、通过硬件实现不可中断性;或通过实现临界段的元方法达到不被中断。过实现临界段的元方法达到不被中断。实现临界段的元方法实现临界段的元方法: :屏蔽中断屏蔽中断( (只用于单机只用于单机) )加硬锁。加硬锁。下面我们用屏蔽中断方法实现下面我们用屏蔽中断方法实现P P(s s)和)和V V(s s)的原子性。)的原子性。P P(s s) DisableInterrupt();DisableInterrupt();while while (s0s0)do do enableInterrupt();enableInterrupt();DisableInterrupt();DisableInterrupt(
9、); ;s = s - 1s = s - 1;enableInterrupt();enableInterrupt(); V V(s s) DisableInterrupt();DisableInterrupt(); s = s +1s = s +1;enableInterrupt();enableInterrupt(); 二、信号量的使用(互斥与同步)互斥:互斥:用于用于n n个进程的临界段互斥,个进程的临界段互斥,n n进程共享一进程共享一个信号量个信号量mutex,mutex,初值为初值为1 1,任一进程,任一进程PiPi的结构为:的结构为: P(mutex)V(mutex)临界段非临界段
10、repeatUntil false同步:同步:有有P1P1、P2 P2 两进程,必须在两进程,必须在P P1 1执行完执行完S1S1语句后,语句后,P2P2才能执行才能执行S2S2。需同步的两进程共享。需同步的两进程共享信号量信号量synchsynch,初值为,初值为0 0。Parbegin P2: begin P1: beginS1;V(synch);end; P(synch);S2;end;Parend;S1S2S3S4S5S6S7请用并行语句和PV操作描述操作系统实现信号量时与进程调度相结合,操作系统实现信号量时与进程调度相结合,消除忙等待现象。消除忙等待现象。原则是:原则是:在在P P
11、操作循环等待的地方加入放弃操作循环等待的地方加入放弃处理机处理机/ /挂入等待队列动作,在挂入等待队列动作,在V V操作时,操作时,从等待队列中摘取进程变为就绪态。从等待队列中摘取进程变为就绪态。(P P、V V原语本身的互斥操作通过屏敝中断原语本身的互斥操作通过屏敝中断或为信号量加硬锁实现)或为信号量加硬锁实现)三.信号量的具体实现1 1、信号量定义、信号量定义 type Semaphore=recordtype Semaphore=record value:integer; value:integer; 一个数型变量一个数型变量 L:List of process;L:List of process;一个一个PCBPCB队列队列 end;end;2 2、P P操作操作 P(S):S.Value=S.value P(S):S.Value=S.value 1;1; If S.value0 then If S.value0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南长沙市雨花区统计局公开招聘工作人员备考题库含答案详解(能力提升)
- 2026重庆忠县机关事业单位招聘临时聘用人员4人备考题库含答案详解(预热题)
- 2026年河南省郑州巩义市事业单位联考招聘备考题库及答案详解(网校专用)
- 2026郴州自贸建设有限公司湖北十堰户用分布式光伏项目部劳务用工招聘6人备考题库含答案详解(预热题)
- 2026福建泉州南安市宝莲中学秋季编外教师招聘备考题库及答案详解(夺冠)
- 2026安徽铜陵市铜官区西湖医院招聘编外工作人员5人备考题库附答案详解(培优)
- 2026浙江衢州市龙游县新教师提前批招聘11人备考题库(江西师范大学)附答案详解(基础题)
- 2026浙江温州行前农贸市场有限公司招聘1人备考题库含答案详解(夺分金卷)
- 2026文化和旅游部直属事业单位招聘应届毕业生备考题库(二)附答案详解(模拟题)
- 2026四川安和精密电子电器股份有限公司招聘成本会计等岗位3人备考题库含答案详解(培优)
- 2026上海闵行区七宝镇村(合作社)、镇属公司招聘16人备考题库含答案详解(预热题)
- 2024年上海奉贤区国内外高校招录储备人才笔试真题
- 幼儿园春季传染病预防课件
- 造价咨询岗位责任制度
- 2026年西师大版三年级数学下册 3.3 一位小数的加减法(课件)
- 岩棉板外墙外保温施工技术交底
- 纺织厂生产厂长考核制度
- 2025年山东省鲁信投资控股集团有限公司招聘笔试参考题库附带答案详解
- 承包商施工安全技术交底
- 第四章蛋白质的稳定性-课件
- 安徽新尖峰北卡药业有限公司年产25吨替尼类医药中间体、30吨替尼类原料药、300吨医药中间体、765吨甲基多巴和非布司他等原料药项目环境影响报告书
评论
0/150
提交评论