- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3 硬件同步指令
在前四节中描述了基于软件的临界区问题的解答。为了用软件算法来解决临界区问题,可谓费尽周章。回顾前面几节,软件解法之所以困难是因为在一个进程进入临界区之前,它需要完成两件工作:一是检查是否有别的进程正在请求进入临界区或者正在临界区,二是设置自己(想)进入临界区的标志。由于检查他人的标志和设置自己的标志无法成为原子操作,即无法在一条机器指令内完成,所以,在进程切换可能在任何两条相邻的指令之间发生的情况下,设计无错的软件临界区问题解决算法这项工作变得非常困难而且精巧。
为了更方便地解决这个问题,在一些体系结构上,硬件厂商提供了检测一个标志和设置这个标志同时完成的机器指令,从而大大简化了设计临界区问题解法的困难。
一般来说,可以说任何临界区问题都需要一个简单工具——锁。锁是一个进程之间共享的内存中的变量。通过要求临界区用锁来防护,就可以避免竞争条件,即一个进程在进入临界区之前必须得到锁,而在其退出临界区时释放锁,如图3.7所示。
do {
请求锁
临界区
释放锁
剩余区
} while (TRUE);
图3.7 采用锁的临界区问题的解答
硬件特性能简化编程任务且提高系统效率。有了硬件指令的支持,我们下面将讨论更多的临界区问题的解决方案。这些方案采用了从硬件到应用程序员可见的软件API等一系列技术。所有这些解决方案都是基于锁为前提的。不过,我们也将看到,这些锁的设计可能非常复杂。
指令TestAndSet可以按图3.8所示定义。其主要特点是该指令能原子地执行。
boolean TestAndSet(boolean *target) {
boolean rv = *target;
*target = TRUE;
return rv;
}
图3.8 TestAndSet指令的定义
如果机器支持指令TestAndSet,那么可这样实现互斥:声明一个Boolean变量lock,初始化为false。进程Pi的结构如图3.9所示。
do{
while (TestAndSet(lock))
;// do nothing
// critical section
lock = FALSE;
// remainder section
} while (TRUE);
图3.9 使用TestAndSet指令的互斥实现
另一种可用于支持互斥的机器指令是swap指令。指令swap操作两个数据,其定义如图3.10所示。与指令TestAndSet一样,它也是原子执行的。如果机器支持指令swap,那么互斥可按如下方式实现:声明一个全局布尔变量lock,初始化为false。另外,每个进程定义一个局部Boolean变量key。进程Pi的结构如图3.11所示。
void Swap(boolean *a, boolean *b) {
boolean temp = *a;
*a = *b;
*b = temp;
}
图3.10 Swap指令的定义
do{
key=TRUE;
while (key == TRUE)
Swap(lock, key);
// critical section
lock = FALSE;
// remainder sectiaa
}while (TRUE);
图3.11 使用Swap指令的互斥实现
图3.9和图3.11的两个算法解决了互斥,且满足推进条件,但是并没有从理论上满足有限等待要求。下面,介绍一个使用TestAndSet指令的算法,如图3.12所示。该算法满足临界区问题的全部三个要求。先定义共用数据结构如下:
boolean waiting[n];
boolean lock;
这些数据结构均初始化为false。
为了证明满足互斥要求,注意,只有waiting[i]==false或key ==flase时,进程Pi才进入临界区。只有当TestAndSet执行时,key的值才变成false。执行TestAndSet的第一个进程会发现key==false;所有其他进程必须等待。只有其他进程离开其临界区时,变量waiting[i]的值才能变成false;每次只有一个waiting[i]被设置为false,以满足互斥要求。
do {
waiting[i] = TRUE;
key = TRUE;
while (waiting[i] key)
key = TestAndSet(lock);
waiting[
您可能关注的文档
- 电力系统时间同步装置的应用电力系统时间同步装置对现代化的电网.PDF
- 电动汽车充电站监控系统.doc
- 电动燃油泵拆装三.PPT
- 电加热器再热技术在硫磺回收装置上的应用-石油与天然气化工.PDF
- 电化学发光法测定铁.PDF
- 电博会技术论坛邀请函.DOC
- 电动调节阀-西门子温控阀.PDF
- 电动钢索吊.PDF
- 电场强度磁感应强度的方向规定小磁针静止时N极所指的方向为该.PPT
- 电子元件的支撑体印刷电路板.DOC
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
最近下载
- 米油调料副食品配送投标方案技术标.docx
- 工艺部门三年工作规划.pptx
- QC成果-提高外墙保温装饰一体板一次施工合格率.docx VIP
- 中国心房颤动管理指南(2025版)解读ppt课件.pptx VIP
- 风电安全文明施工策划.docx
- 管理英语1-国家开放大学电大机考网考题目答案 .pdf VIP
- TS16949:2016中文版(标准-高清).pdf VIP
- 炎德·英才大联考长沙市一中2026届高三月考(五)地理试卷(含答案详解).pdf
- QC成果提高外墙保温装饰一体板一次施工合格率.docx VIP
- 高中英语(新人教版)选择性必修三同步习题:UNIT 1 Part 3(同步习题)【含答案及解析】.pdf VIP
原创力文档


文档评论(0)