下载此文档

同步与互斥实现方法.pptx


文档分类:中学教育 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
:(amount){ disableInterrupt();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_Set”指令。该指令功能描述为:FunctionTest_and_Set(Vartarget:boolean):boolean;beginTest_and_Set=target;Target=true;end;二、“Swap”指令。该指令功能描述为:ProcedureSwap(Vara,b:boolean);Vartemp:boolean;begintemp=a;a=b;b=temp;end;设Lock为全局布尔变量,利用Test&Set指令,即可实现对临界区的加锁与解锁:RepeatwhileTest&Set(lock)doskipcriticalsectionlock=false;non-criticalsectionUntilfalse;“test&set”读后置1指令实例:T&SRi,Aj解释为将(Aj)地址所指内存单元内容读到Ri寄存器中,,则安排如下指令,即可实现加锁与解锁:*临界段非临界段A1<=&Lock;(将Lock单元地址送A1寄存器。Lock单元初始值为0)Loop:T&SR1,A1; JRNR1,Loop;(If(R1=1)thengotoLoop)A1<=&Lock;(A1)<=0;(0置Lock内存单元)设Lock为全局布尔变量(初值为假),每个进程设一个局部布尔变量Key。利用Swap指令,可实现对临界区的加锁与解锁。Repeatkey=true;repeatSwap(lock,key);untilkey=false;criticalsectionlock=false;non-criticalsectionUntilfalse;:“信号量”、“P、V操作”。信号量S为一整型变量:P(S):WhileS≤0doskip;S=S-1;V(S):S=S+1;P、V操作是两条原语,即保证P、V操作对变量S的访问是互斥操作。:指完成某种功能且不被分割或不被中断执行的操作序列。原语可通过硬件实现不可中断性;或通过实现临界段的元方法达到不被中断。实现临界段的元方法:屏蔽中断(只用于单机)加硬锁。

同步与互斥实现方法 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小97 KB
  • 时间2020-01-01