下载此文档

同步与互斥实现方法.pptx


文档分类:中学教育 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍

利用处理机提供的特殊指令实现临界区加锁
单处理机系统常见硬件指令有:

Parbegin
A(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”指令。
该指令功能描述为:
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 = b;
b = temp;
end;
设Lock为全局布尔变量,利用Test&Set指令,即可实现对临界区的加锁与解锁:
Repeat
while Test&Set (lock) do skip
critical section
lock = false;
non-critical section
Until false;
“test&set”读后置1指令实例:
T&S Ri,Aj 解释为将(Aj)地址所指内存单元内容读到Ri寄存器中,同时将1置入Aj所指的内存单元中.
设Lock为临界段锁变量,则安排如下指令,即可实现加锁与解锁:*
临界段
非临界段
A1<=&Lock;(将Lock单元地址送A1寄存器。Lock单元初始值为0)
Loop:T&S R1,A1;
JRN R1,Loop; (If (R1=1)then goto Loop )
A1 <=&Lock;
(A1) <=0;(0置Lock内存单元)
设Lock为全局布尔变量(初值为假),每个进程设一个局部布尔变量Key。利用Swap指令,可实现对临界区的加锁与解锁。
Repeat
key = true;
repeat
Swap (lock, key);
until key = false;
critical section
lock = false;
non-critical section
Until false;
信号量
信号量机构:“信号量”、“P、V操作”。
信号量S为一整型变量:
P(S): While S≤0 do skip ;
S = S-1 ;
V(S):S = S+1;
P、V操作是两条原语,即保证P、V操作对变量S的访问是互斥操作。
一. 原语概念与实现
原语:指完成某种功能且不被分割或不被中断执行的操作序列。
原语可通过硬件实现不可中断性;或通过实现临界段的元方法达到不被中断。
实现临界段的元方法:
屏蔽中断(只用于单机)
加硬锁。

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

非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小95 KB
  • 时间2018-06-10
最近更新