真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

完成臨界區(qū)互斥的根本辦法

軟件完成辦法

在進(jìn)入?yún)^(qū)設(shè)置和反省一些標(biāo)記來(lái)標(biāo)明能否有過(guò)程在臨界區(qū)中,假如已有過(guò)程在臨界區(qū),則在進(jìn)入?yún)^(qū)經(jīng)過(guò)輪回反省停止等候,過(guò)程分開臨界區(qū)后則在加入?yún)^(qū)修正標(biāo)記。

為常熟等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及常熟網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、常熟網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1) 算法一:?jiǎn)螛?biāo)記法。

該算法設(shè)置一個(gè)公用整型變量turn,用于指導(dǎo)被許可進(jìn)入臨界區(qū)的過(guò)程編號(hào),即若turn=0,則許可P0過(guò)程進(jìn)入臨界區(qū)。該算法可確保每次只許可一個(gè)過(guò)程進(jìn)入臨界區(qū)。但兩個(gè)過(guò)程必需瓜代進(jìn)入臨界區(qū),假如某個(gè)過(guò)程不再進(jìn)入臨界區(qū)了,那么另一個(gè)過(guò)程也將進(jìn)入臨界區(qū)(違犯“閑暇讓進(jìn)”)如許很輕易形成資本應(yīng)用的不充沛。

					// P0過(guò)程 while(turn!=0); critical section; turn=1; remainder section;
					// P1過(guò)程 while(turn!=1); // 進(jìn)入?yún)^(qū) critical section; // 臨界區(qū) turn = 0; // 加入?yún)^(qū) remainder section; // 殘剩區(qū)
2) 算法二:雙標(biāo)記法先反省。

該算法的根本思惟是在每個(gè)過(guò)程拜訪臨界區(qū)資本之前,先檢查一下臨界資本能否正被拜訪,若正被拜訪,該過(guò)程需等候;不然,過(guò)程才進(jìn)入本人的臨界區(qū)。為此,設(shè)置了一個(gè)數(shù)據(jù)flag[i],如第i個(gè)元素值為FALSE,表現(xiàn)Pi過(guò)程未進(jìn)入臨界區(qū),值為TRUE,表現(xiàn)Pi過(guò)程進(jìn)入臨界區(qū)。

					// Pi 過(guò)程 while(flag[j]); // ①  flag[i]=TRUE; // ③  critical section; flag[i] = FALSE; remainder section;
					// Pj 過(guò)程 while(flag[i]); // ② 進(jìn)入?yún)^(qū) flag[j] =TRUE; // ④ 進(jìn)入?yún)^(qū) critical section; // 臨界區(qū) flag[j] = FALSE; // 加入?yún)^(qū) remainder section; // 殘剩區(qū)


長(zhǎng)處:不必瓜代進(jìn)入,可延續(xù)運(yùn)用;缺陷:Pi和Pj能夠同時(shí)進(jìn)入臨界區(qū)。順次列①②③④ 履行時(shí),會(huì)同時(shí)進(jìn)入臨界區(qū)(違犯“忙則等候”)。即在反省對(duì)方flag之后和切換本人flag 之前有一段工夫,后果都反省經(jīng)過(guò)。這里的成績(jī)出在反省和修正操作不克不及一次停止。

3) 算法三:雙標(biāo)記法后反省。

算法二是先檢測(cè)對(duì)方過(guò)程形態(tài)標(biāo)記后,再置本人標(biāo)記,因?yàn)樵跈z測(cè)和放置中可拔出另一個(gè)過(guò)程抵達(dá)時(shí)的檢測(cè)操作,會(huì)形成兩個(gè)過(guò)程在辨別檢測(cè)后,同時(shí)進(jìn)入臨界區(qū)。為此,算法三釆用先設(shè)置本人標(biāo)記為TRUE后,再檢測(cè)對(duì)方形態(tài)標(biāo)記,若對(duì)方標(biāo)記為TURE,則過(guò)程等候;不然進(jìn)入臨界區(qū)。

					// Pi過(guò)程 flag[i] =TRUE; while(flag[j]); critical section; flag[i] =FLASE; remainder section;
					// Pj過(guò)程 flag[j] =TRUE; // 進(jìn)入?yún)^(qū) while(flag[i]); // 進(jìn)入?yún)^(qū) critical section; // 臨界區(qū) flag [j] =FLASE; // 加入?yún)^(qū) remainder section; // 殘剩區(qū)


當(dāng)兩個(gè)過(guò)程簡(jiǎn)直同時(shí)都想進(jìn)入臨界區(qū)時(shí),它們辨別將本人的標(biāo)記值flag設(shè)置為TRUE,而且同時(shí)檢測(cè)對(duì)方的形態(tài)(履行while語(yǔ)句),發(fā)現(xiàn)對(duì)方也要進(jìn)入臨界區(qū),于是單方相互辭讓,后果誰(shuí)也進(jìn)不了臨界區(qū),從而招致“饑餓”景象。

4)算法四:Peterson’s Algorithm。

為了避免兩個(gè)過(guò)程為進(jìn)入臨界區(qū)而有限期等候,又設(shè)置變量turn,指導(dǎo)不許可進(jìn)入臨界區(qū)的過(guò)程編號(hào),每一個(gè)過(guò)程在先設(shè)置本人標(biāo)記后再設(shè)置turn 標(biāo)記,不許可另一個(gè)過(guò)程進(jìn)入。這時(shí),再同時(shí)檢測(cè)另一個(gè)過(guò)程形態(tài)標(biāo)記和不許可進(jìn)入標(biāo)記,如許可以包管當(dāng)兩個(gè)過(guò)程同時(shí)請(qǐng)求進(jìn)入臨界區(qū),只許可一個(gè)過(guò)程進(jìn)入臨界區(qū)。

					// Pi過(guò)程 flag[i]=TURE; turn=j; while(flag[j]&&turn==j); critical section; flag[i]=FLASE; remainder section;
					// Pj過(guò)程 flag[j] =TRUE;turn=i; // 進(jìn)入?yún)^(qū) while(flag[i]&&turn==i); // 進(jìn)入?yún)^(qū) critical section; // 臨界區(qū) flag[j]=FLASE; // 加入?yún)^(qū) remainder section; // 殘剩區(qū)


本算法的根本思惟是算法一和算法三的聯(lián)合。應(yīng)用flag處理臨界資本的互斥拜訪,而應(yīng)用turn處理“饑餓”景象。

硬件完成辦法

本節(jié)對(duì)硬件完成的詳細(xì)了解對(duì)前面的旌旗燈號(hào)量的進(jìn)修很有協(xié)助。盤算機(jī)供給了特別的硬件指令,許可對(duì)一個(gè)字中的內(nèi)容停止檢測(cè)和修改,或許是對(duì)兩個(gè)字的內(nèi)容停止交流等。經(jīng)過(guò)硬件支撐完成臨界段成績(jī)的初級(jí)辦法或稱為元辦法。

1) 中綴屏障辦法

當(dāng)一個(gè)過(guò)程正在運(yùn)用處置機(jī)履行它的臨界區(qū)代碼時(shí),要避免其他過(guò)程再進(jìn)入其臨界區(qū)拜訪的最復(fù)雜辦法是制止一切中綴發(fā)作,或稱之為屏障中綴、關(guān)中綴。由于CPU只在發(fā)作中綴時(shí)惹起過(guò)程切換,如許屏障中綴就能包管以后運(yùn)轉(zhuǎn)過(guò)程將臨界區(qū)代碼順?biāo)斓芈男型?,從而包管了互斥的?zhǔn)確完成,然后再履行開中綴。其典型形式為:

關(guān)中綴;
臨界區(qū);
開中綴;

這種辦法限制了處置機(jī)瓜代履行程序的才能,因而履行的效力將會(huì)分明下降。對(duì)內(nèi)核來(lái)說(shuō),當(dāng)它履行更新變量或列表的幾條指令時(shí)期關(guān)中綴是很便利的,但將關(guān)中綴的權(quán)利交給用戶則很不明智,若一個(gè)過(guò)程關(guān)中綴之后不再開中綴,則零碎能夠會(huì)因而終止。

2) 硬件指令辦法

TestAndSet指令:這條指令是原子操作,即履行該代碼時(shí)不許可被中綴。其功用是讀出指定標(biāo)記后把該標(biāo)記設(shè)置為真。指令的功用描繪如下:

			boolean TestAndSet(boolean *lock){ boolean old; old = *lock; *lock=true; return old; }


可認(rèn)為每一個(gè)臨界資本設(shè)置一個(gè)共享布爾變量lock,表現(xiàn)資本的兩種形態(tài):true表現(xiàn)正被占用,初值為false。在過(guò)程拜訪臨界資本之前,應(yīng)用TestAndSet反省和修正標(biāo)記lock;如有過(guò)程在臨界區(qū),則反復(fù)反省,直到過(guò)程加入。應(yīng)用該指令完成過(guò)程互斥的算法描繪如下:

			while TestAndSet (& 1 ock); // 過(guò)程的臨界區(qū)代碼段; lock=false; // 過(guò)程的其他代碼


Swap指令:該指令的功用是交流兩個(gè)字節(jié)的內(nèi)容。其功用描繪如下。

			Swap(boolean *a, boolean *b){ boolean temp; Temp=*a; *a = *b; *b = temp; }


留意:以上對(duì)TestAndSet和Swap指令的描繪僅僅是功用完成,并非軟件完成界說(shuō),現(xiàn)實(shí)上它們是由硬件邏輯直接完成的,不會(huì)被中綴。
應(yīng)為每一個(gè)臨界資本設(shè)置了一個(gè)共享布爾變量lock,初值為false;在每一個(gè)過(guò)程中再設(shè)置一個(gè)部分布爾變量key,用于與lock交流信息。在進(jìn)入臨界區(qū)之前先應(yīng)用Swap指令交流lock 與key的內(nèi)容,然后反省key的形態(tài);有過(guò)程在臨界區(qū)時(shí),反復(fù)交流和反省進(jìn)程,直到過(guò)程加入。應(yīng)用Swap指令完成過(guò)程互斥的算法描繪如下:

			key=true; while(key!=false) Swap(&lock, &key); // 過(guò)程的臨界區(qū)代碼段; lock=false; // 過(guò)程的其他代碼;


硬件辦法的長(zhǎng)處:實(shí)用于恣意數(shù)量的過(guò)程,不論是單處置機(jī)照樣多處置機(jī);復(fù)雜、輕易驗(yàn)證其準(zhǔn)確性??梢灾芜^(guò)程內(nèi)有多個(gè)臨界區(qū),只需為每一個(gè)臨界區(qū)設(shè)立一個(gè)布爾變量。
硬件辦法的缺陷:過(guò)程等候進(jìn)入臨界區(qū)時(shí)要消耗處置機(jī)工夫,不克不及完成讓權(quán)等候。從等候過(guò)程中隨機(jī)選擇一個(gè)進(jìn)入臨界區(qū),有的過(guò)程能夠不斷選不上,從而招致“饑餓”景象。


網(wǎng)站欄目:完成臨界區(qū)互斥的根本辦法
文章路徑:http://weahome.cn/article/jssphc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部