爱问知识人 爱问教育 医院库

操作系统问题!!

首页

操作系统问题!!

题目如下:
我们为某临界资源设置一把锁W,当W=1时表示关锁;当W=0时表示开锁。试写出开锁和关锁的原语,并利用他们实现互斥

提交回答
好评回答
  • 2006-06-22 15:42:34
         临界区的硬件解决
      基本硬件机制包括禁止中断、Test-and-Set指令、Swap指令。
    1、禁止中断:这是最简单的方法,进程一旦进入临界区就禁止一切中断,在离开临界区前放开中断,但是该方案有如下致命的弱点:
       将禁止一切中断的权利赋予普通用户,若用户没有开放中断,系统的正常运行将受到影响。
       不适合于多处理机系统,因为一个进程只能禁止本CPU的中断,其它CPU上的进程仍然会使用互斥资源。 2、Test-and-Set指令:(读和写在一条指令内完成)在许多计算机中都提供了专门的硬件指令Test-and-Set,简称TS,不同的机器TS略有不同,在IBM370中称为TS指令,在Intel 8086中称为XCHG指令,但是它们的基本功能是相同的。
       test_and_set指令语义: function test_and_set (var target :boolean):boolean; begin test_and_set:=target; target:=true; end; 其中: target有两种状态,当target为False时表示资源未用,若为True时表示资源正在使用。
       用test_and_set指令实现互斥: 可以为每个临界资源设置一个布尔变量lock并赋予初值False,用TS指令将变量lock状态记录于变量TS中,并将True赋予lock,这等效于关闭了临界区,使得任何进程不能进入 repeat while test_and_set (lock) do no_op; 临界区; lock:=false; 剩余区; until false; 上段程序检查TS指令执行后TS状态,若为false表示进程可以进入临界区,否则不断测试执行TS指令后的TS变量值直到为假。
       3、Swap指令:交换两个字的内容(在一条指令内,不可分割) swap指令语义: procedure swap(var a,b:boolean); var temp:boolean; begin temp:=a; a:=b; b:=temp; end; 用swap实现互斥: repeat key := true; repeat swap(lock,key); until key = false; 进程的临界区代码CS; lock := false; 进程的其它代码; end 在上面的算法中key必须为局部变量,lock为全局变量。
      下面是Burns在1978年提出实现互斥的算法: 公用数据结构:(数据初始化为false) var waiting :array[0。。n-1] of boolean; lock :boolean; 进程一般结构: var j :0。
      。n-1; key :boolean; repeat waiting[i] := true; key:=true; while waiting[i] and key do key:=test_and_set(lock); waiting[i] := false; 临界区; j:= i+1 mod n; while(j<>i) and (not waiting[j]) do j := j+1 mod n; if j=i then lock := false else waiting[j] := false; 剩余区; until false; 注意:使用上述硬件指令可以有效地保证进程间的互斥,但是仍然有一个问题,当进程在临界区中执行时,其它想进入临界区的进程必须不断地测试lock值,造成处理机的浪费。
             。

    1***

    2006-06-22 15:42:34

其他答案

类似问题

换一换
  • 操作系统/系统故障 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):