当前位置: 首页 > news >正文

住房与建设部网站 2018 128号沈阳网 沈阳网站

住房与建设部网站 2018 128号,沈阳网 沈阳网站,可以看网站的浏览器,王福滨哈尔滨建设目录 2.4.1 进程同步的基本概念 1. 两种形式的制约关系 2. 临界资源#xff08;critical resource#xff09; 3. 生产者-消费者问题 4. 临界区#xff08;critical section#xff09; 5. 同步机制应遵循的规则 2.4.2 硬件同步机制 1. 关中断 2. Test-and-Set …目录 2.4.1  进程同步的基本概念 1. 两种形式的制约关系 2. 临界资源critical resource 3. 生产者-消费者问题 4. 临界区critical section 5. 同步机制应遵循的规则 2.4.2  硬件同步机制 1. 关中断 2. Test-and-Set 指令 3. Swap 指令 4. 小结 进程的异步性必然导致若干进程对系统资源进行无序争夺从而导致系统混乱。为保证多个进程能有条不紊地运行在多道程序系统中必须引入进程同步机制。 进程同步进制的主要任务是使并发执行的诸进程之间能有效地共享资源和相互合作从而使程序的执行具有可再现性。 2.4.1  进程同步的基本概念 1. 两种形式的制约关系 1间接相互制约关系。由于共享系统资源。 2直接相互制约关系。由于进程之间的相互合作。   2. 临界资源critical resource 一次仅允许一个进程访问的资源为临界资源 。 3. 生产者-消费者问题 1问题描述 有一群生产者进程在生产产品并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行在两者之间设置了一个具有 n 个缓冲区的缓冲池生产者进程将其所生产的产品放入一个缓冲区中消费者进程可从一个缓冲区中取走产品去消费。 2解决方法 变量定义如下 int in 0; //数组单元输入指针 int out 0; //数组单元输出指针 int count 0; //记录缓冲池产品数 item buffer[n]; //具有n个缓冲区的缓冲池 缓冲池是被组织成循环缓冲的。 在生产者进程中使用一个局部变量 nextp用于暂时存放每次刚刚生产出来的产品而在消费者进程中则使用一个局部变量 nextc用于存放每次要消费的产品。 生产者 void producer() {while(1) {//produce an item in nextpwhile(count n); //缓冲池已满do no-opbuffer[in] nextp; //放入产品in (in 1) % n; //指向下一个数组单元count count 1; //缓冲池产品数加一} } 消费者 void consumer() {while(1) {while(count 0); //缓冲池已空do no-opnextc buffer[out]; //取出产品out (out 1) % n; //指向下一个数组单元count count - 1; //缓冲池产品数减一//consume the item in nextc} } 3存在问题 虽然上面的生产者程序和消费者程序在分别看时都是正确的而且两者在顺序执行时其结果也会是正确的但若并发执行时就会出现差错问题就在于这两个进程共享变量 count 。 假设 count 初值为 5 。生产者对它做加 1 操作消费者对它做减 1 操作这两个操作在用机器语言实现时分别可用以下形式描述。 reg1 count; |reg2 count; reg1 reg1 1; |reg2 reg2 - 1; count reg1; |count reg2;祖传计组图。 实际执行时由于时间片完可能导致两段程序中各语句穿插执行。 reg1 count; (reg15) reg1 reg1 1; (reg16) reg2 count; (reg25) reg2 reg2 - 1; (reg24) count reg1; (count6) count reg2; (count4) 倘若再将两段程序中各语句交叉执行的顺序改变将可看到其它答案。这表明程序的执行已经失去了再现性。为了预防产生这种错误解决此问题的关键是把变量 count 作为临界资源处理亦即令生产者进程和消费者进程互斥地访问变量 count 。 4. 临界区critical section 把在每个进程中访问临界资源的那段代码称为临界区。 把一个访问临界资源的循环进程描述如下 while(true) {进入区检查有无进程进入。临界区进程访问临界资源。退出区将访问标志复位。剩余区其它部分的代码。 } 5. 同步机制应遵循的规则 1空闲让进 当无进程处于临界区时应允许一个请求进入临界区的进程立即进入自己的临界区。 2忙则等待 当已有进程进入临界区时其它试图进入临界区的进程必须等待。 3有限等待 对要求访问临界资源的进程应保证在有限时间内能进入自己的临界区以免陷入 “死等” 状态。 4让权等待 当进程不能进入自己的临界区时应立即释放处理机以免进程陷入 “忙等” 状态。 2.4.2  硬件同步机制 利用计算机硬件指令来解决临界区问题。对临界区管理时将标志看作一把 “锁” 。 初始时锁是打开的。进入临界区前进程必须先进行 “锁测试” 。“锁开” 则进入“锁关” 则等待。“锁开” 进入时应立即将其锁上以防止其它进程进入。“锁测试” 和关锁操作必须是连续的原子操作。 计算机硬件提供了三大指令关中断、Test-and-Set 指令、Swap 指令。 1. 关中断 原理在进入锁测试之前关闭中断直到完成锁测试并上锁之后才能打开中断。这样进程在临界区执行期间计算机系统不响应中断从而不会引发调度。 缺点 滥用关中断权利可能导致严重后果与系统安全相关的中断无法被响应关中断时间过长会影响系统效率不适用于多 CPU 系统这个关了还有那个2. Test-and-Set 指令 TS 指令的一般性描述如下 boolean TS(boolean * lock) {boolean old;old * lock;* lock true;return old; } 利用 TS 指令实现互斥的循环进程结构可描述如下 do {//...while TS(lock); //entry section//... //critical sectionlock false; //exit section//... //remainder section } while(true); do ... while ... 记得最后的分号。 在进入区若恒有 lock true则代表临界区已上锁其它试图进入临界区的进程必须等待。 3. Swap 指令 Swap 指令在 8086/8088 中又称为 XCHG 指令用于交换两个字的内容。 Swap 指令的一般性描述如下 void swap(boolean * a, boolean * b) {boolean temp;temp * a;* a * b;* b temp; } 为每个临界资源设置一个全局的 boolean 变量 lock其初值为 false代表没有上锁。再设置一个局部的 boolean 变量 key 。利用 Swap 指令实现互斥的循环进程结构可描述如下 do {key true;do { //entry sectionswap(lock, key);} while(key ! false);//... //critical sectionlock false; //exit section//... //remainder section } while(true); 由于 lock 的初值为 false因此第一个进入临界区的进程内循环一次即退出循环。此时lock 值为 true其它试图进入临界区的进程将一直在内循环中循环。直到第一个进入临界区的进程执行到退出区lock 值被设置为 false 。 4. 小结 利用上述硬件指令能有效地实现进程互斥但当临界资源忙碌时其它访问进程必须不断地进行测试处于一种 “忙等” 状态不符合 “让权等待” 原则造成处理机时间的浪费同时也很难将它们用于解决复杂的进程同步问题。
http://www.hkea.cn/news/14507584/

相关文章:

  • 网站建设汇编材料微信小程序二次开发
  • 关于做网站书籍wordpress一直刷不出来
  • 营销型网站建设论坛wordpress 弹出登录页
  • 深圳电商网站建设某班级网站建设方案论文
  • 晋城哪里有做网站的网站建设丶金手指下拉十五
  • 网站建设的优点和不足做网站应注意什么
  • 济南手机网站建设专业定制淄博网站制作高端
  • 给网站做推广网站建设公司营业执照
  • 济南网站排名推广墨鱼wordpress
  • 江北区网站建设造价工程师注册公示查询
  • 山东企业网站建设推荐做网站收广告费
  • 甘肃嘉峪关建设局网站云服务器 虚拟机
  • 视频网站开发工程师诚信通与网站建设区别
  • 公司微信网站制作企业展厅布展设计公司
  • 做外贸比较好的网站有哪些安徽六安地图
  • 鑫灵锐做网站多少钱娱乐论坛网站建设方案范文
  • jquery扁平自适应网站html5模板dw网页设计个人介绍
  • 公司网站设计图片石家庄互联网传销多少律师
  • 网站运营seo实训总结网站建设项目需求分析流程
  • 申请网站空间wordpress有什么有趣的插件
  • 青岛易龙网站建设网站设计是用ps做图吗
  • 宝塔搭建网站教程免费动态域名申请
  • 电子商务网站课程设计总结广州网站建设好公司
  • 网站建设与管理出来工资网站付款链接怎么做的
  • 做网站ps能用美图秀秀么域名注册时间查询
  • 网站开发服务合同范本宠物交易网站模板
  • 外贸网站怎么建设中秋节网页设计素材
  • 做外贸出口衣服的网站职高网站建设例题
  • 做数码测评的网站wordpress英文站群
  • 网站开发技术支持与保障2022中国进入一级战备了吗