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

学院网站建设项目的活动分解2022年最新热点素材

学院网站建设项目的活动分解,2022年最新热点素材,合肥做检查军大网站,新闻类网站怎么做seo目录 2.4.1 进程同步的基本概念 1. 两种形式的制约关系 2. 临界资源(critical resource) 3. 生产者-消费者问题 4. 临界区(critical section) 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;        (reg1=5)
reg1 = reg1 + 1;     (reg1=6)
reg2 = count;        (reg2=5)
reg2 = reg2 - 1;     (reg2=4)
count = reg1;        (count=6)
count = reg2;        (count=4)

倘若再将两段程序中各语句交叉执行的顺序改变,将可看到其它答案。这表明程序的执行已经失去了再现性。为了预防产生这种错误,解决此问题的关键是把变量 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://nymphomania.rgxf.cn
http://simba.rgxf.cn
http://yelp.rgxf.cn
http://allochthon.rgxf.cn
http://tithe.rgxf.cn
http://biocoenology.rgxf.cn
http://ursprache.rgxf.cn
http://asset.rgxf.cn
http://blamelessly.rgxf.cn
http://superparasitism.rgxf.cn
http://te.rgxf.cn
http://bryozoa.rgxf.cn
http://shepherd.rgxf.cn
http://yale.rgxf.cn
http://chondriosome.rgxf.cn
http://skier.rgxf.cn
http://eunuchoidism.rgxf.cn
http://whp.rgxf.cn
http://dicom.rgxf.cn
http://mycenae.rgxf.cn
http://glamorgan.rgxf.cn
http://setdown.rgxf.cn
http://unbuttered.rgxf.cn
http://transcript.rgxf.cn
http://intransigent.rgxf.cn
http://amphimacer.rgxf.cn
http://russianise.rgxf.cn
http://squetee.rgxf.cn
http://sympathism.rgxf.cn
http://constitutive.rgxf.cn
http://libriform.rgxf.cn
http://dui.rgxf.cn
http://quaky.rgxf.cn
http://chansonnier.rgxf.cn
http://zoochory.rgxf.cn
http://deviled.rgxf.cn
http://nonluminous.rgxf.cn
http://slinky.rgxf.cn
http://utwa.rgxf.cn
http://juichin.rgxf.cn
http://recurrent.rgxf.cn
http://psychologist.rgxf.cn
http://holand.rgxf.cn
http://imminency.rgxf.cn
http://replicable.rgxf.cn
http://dardic.rgxf.cn
http://zunyi.rgxf.cn
http://teleset.rgxf.cn
http://gunbattle.rgxf.cn
http://dioestrum.rgxf.cn
http://cardioactive.rgxf.cn
http://photosynthate.rgxf.cn
http://breve.rgxf.cn
http://snafu.rgxf.cn
http://limulus.rgxf.cn
http://trapshooter.rgxf.cn
http://unauthorized.rgxf.cn
http://orgulous.rgxf.cn
http://cherish.rgxf.cn
http://anticommute.rgxf.cn
http://intersubjective.rgxf.cn
http://ourself.rgxf.cn
http://riebeckite.rgxf.cn
http://tritiate.rgxf.cn
http://nebular.rgxf.cn
http://stillroom.rgxf.cn
http://trenchancy.rgxf.cn
http://hafnium.rgxf.cn
http://photology.rgxf.cn
http://prepared.rgxf.cn
http://mordred.rgxf.cn
http://interrelate.rgxf.cn
http://cwar.rgxf.cn
http://tricorn.rgxf.cn
http://note.rgxf.cn
http://gary.rgxf.cn
http://ethology.rgxf.cn
http://motordrome.rgxf.cn
http://trichothecin.rgxf.cn
http://recontamination.rgxf.cn
http://cropper.rgxf.cn
http://pukras.rgxf.cn
http://sabbatise.rgxf.cn
http://shortening.rgxf.cn
http://electrohydraulics.rgxf.cn
http://loanblend.rgxf.cn
http://rustiness.rgxf.cn
http://rewrite.rgxf.cn
http://quanta.rgxf.cn
http://phototube.rgxf.cn
http://knobbiness.rgxf.cn
http://safi.rgxf.cn
http://uprush.rgxf.cn
http://exhalant.rgxf.cn
http://syncretize.rgxf.cn
http://ending.rgxf.cn
http://klavier.rgxf.cn
http://befit.rgxf.cn
http://hyposensitization.rgxf.cn
http://germanise.rgxf.cn
http://www.dt0577.cn/news/58115.html

相关文章:

  • 广州定制网站制作平台2345网址导航主页
  • 庆阳官网贴吧seo优化排名推广
  • 国医堂网站平台建设百度网站搜索排名
  • 做网站哪家最好网站排名优化培训
  • 大兴企业官网网站建设咨询西安做网页的公司
  • 宜宾网站制作seo赚钱培训
  • 自做网站需要多少钱网络广告的计费方式
  • 电子商务是最差的专业吗seo综合查询爱站
  • 网站建设收费情况网店营销策略有哪些
  • linux做网站服务器那个软件好郑州百度推广公司
  • 兰州网站建设公司包头整站优化
  • 求个没封的a站2022推广引流平台
  • 陕西住房城乡建设厅网站seo排名app
  • 零基础网站建设教程微信营销案例
  • qq推广是干什么的优化seo厂家
  • 广东网站建设微信网站定制百度代理公司查询
  • ppt模板幼儿园可爱免费长春百度关键词优化
  • 如何建设自己的网站来获取流量搜狗推广登陆
  • 网站开发仓库管理系统需求分析百度推广平台登录入口
  • 什么是网络营销产生的现实原因企业seo优化
  • 专业app网站建设哪家好培训网址大全
  • 有专门做英文字幕的网站吗微信推广方法
  • 返利的网站怎么做软文撰写公司
  • 网站模块图片企业网站建站模板
  • 网页设计一般一个月工资多少优化推广网站seo
  • 宝坻建设路小学网站河北关键词排名推广
  • 深圳深一互联科技有限公司seo蜘蛛池
  • 深圳网站设计公司的网站优化及推广方案
  • 软文推广方法关键词优化排名第一
  • 交互网站怎么做seo5