999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于回退技術的安全序列檢索方法

2017-09-08 06:21:00趙富星黃繼海
中州大學學報 2017年4期
關鍵詞:進程分配資源

趙富星,張 帆,黃繼海

(鄭州工程技術學院 a.機電與車輛工程學院 b.信息工程學院, 鄭州 450044)

一種基于回退技術的安全序列檢索方法

趙富星a,張 帆b,黃繼海b

(鄭州工程技術學院 a.機電與車輛工程學院 b.信息工程學院, 鄭州 450044)

在操作系統的設計與實現中,可以借助多進程并發執行,來提高系統的資源利用率,進一步提高系統的吞吐量,但與此同時就有可能伴隨死鎖一類的運行錯誤。死鎖是指由多進程并發執行中因競爭資源而造成的一種僵局,若無外力作用,這些進程都將無法繼續向前推進。而銀行家算法則是一種極具代表性的、典型的避免死鎖的算法。本文通過對銀行家算法的分析,著重討論了其安全序列和安全狀態,給出其結構化模型,提出銀行家算法的關鍵在于安全序列;描述了安全性檢驗的抽象算法,并在此基礎上,利用回退技術給出了一種檢索全部安全序列的方法。

銀行家算法;死鎖;安全序列

在操作系統引入多道程序設計后,可通過多進程宏觀上并行、微觀上交替執行來提高系統對資源的利用率和處理能力。為了規避與時間有關的錯誤的發生,人們提出了各種解決方案。但有這樣一種特殊的與時間有關的錯誤,需要我們進一步研究和探討,那就是死鎖。[1]所謂死鎖,就是指若干并發進程因競爭資源而陷入的一種僵局,若無外力作用這些進程將永遠無法向前推進。死鎖的產生會嚴重影響系統的可靠性。

通過對死鎖產生的原因進行分析,可以歸結為兩點:

1)資源不足。當系統中所擁有的資源量不足以滿足多進程并發執行時,就會因為對資源的競爭而產生死鎖。

2)進程推進次序不當。多進程在執行過程中,其請求與釋放資源的次序不當,也可能導致死鎖的發生。

銀行家算法是最早由Dijkstra提出的一種避免死鎖的策略。該算法的核心就是判斷資源擬分配后系統是否安全,即是否能找到一個安全序列,以確保系統處于安全狀態。[2]所謂安全狀態,就是指若干并發進程能夠按照某種序列P1→P2→…→Pn分配所需資源,進而滿足每個進程資源的最大需求,使每個進程均能順利執行完畢。此時系統處于完全狀態,序列P1→P2→…→Pn為安全序列。如果找不到任意一個安全序列,那么系統就處于不安全狀態。根據銀行家算法的描述,進程安全序列會有多個,如何找出所有的安全序列,以及在不同領域進行應用和改進,就成為了一個值得探討的問題。本文通過對安全狀態的分析,給出一種基于回退技術的檢索全部安全序列的方法。在具體實現的過程中,借助棧結構模擬遞歸,并借助面向對象C++語言,描述某一時刻檢索所有安全序列的算法,最后采用該語言實現了這種算法。

1 銀行家算法分析

在銀行家算法里,把操作系統看作是銀行家,操作系統管理的軟硬件資源看作是銀行家管理的資金,并發進程向操作系統請求分配資源看作是客戶向銀行家借貸。銀行家算法就是對每個并發進程提出的資源分配請求進行安全性檢驗,判斷滿足該分配請求后,是否會使系統進入不安全狀態。如果會,就暫停分配,拒絕該進程對資源的請求;如果不會,就分配下去,滿足該進程對資源的需求。

1.1 安全狀態和安全序列

安全狀態,就是指操作系統能按某種進程的執行次序P1→P2→…→Pn,為每個進程分配尚需資源,從而達到其最大需求,讓每個并發進程都能順利執行完畢。一般稱進程的執行序列P1→P2→…→Pn為安全序列,若找不到安全序列,那么系統就處于不安全狀態。

如果一個操作系統處于不安全狀態,就有可能會出現死鎖。反之,如果處于安全狀態,就一定不會出現死鎖。

1.2 安全狀態分析

若操作系統中有三個并發進程P1、P2和P3,共有12個待分配資源。進程P1共需資源10個,P2和P3分別需求4個和9個。[3]設T0時刻,進程P1、P2和P3已分別獲得資源5個、2個和2個,剩余3個資源可用,如表1所示。

表1 安全序列資源分配

T0時刻,操作系統處于安全狀態,因為此刻存在一個安全序列P2→P1→P3,操作系統只要按此序列為每個進程分配尚需資源,就能達到其最大需求,進程都能順利執行完。操作系統先從剩余資源中取出2個分配給P2,滿足其尚需資源量,此時系統剩余資源減少為1個;待P2執行完,便會釋放其先后申請到的4個資源,使剩余資源增至5個,然后再將全部資源分配給P1;待P1執行完,會釋放10個資源,此時,P3就有足夠多的資源可以申請,進而使P1、P2、P3都能順利完成。

若不按此安全序列分配資源,則操作系統就可能會進入不安全狀態。[4-5]在T0時刻后,P3又請求1個資源,如果系統將剩余資源3個中的1個分配給P3,那么系統就會進入不安全狀態。因為此時再把系統剩余的2個資源分配給P2,在P2滿足尚需資源、執行完并釋放資源后,系統剩余資源為4個,既不能滿足P1的尚需資源,也不能滿足P3的尚需資源。這樣都無法順利執行完畢,彼此都在等待對方釋放資源,結果將會出現死鎖。通過以上分析可以看出,自從操作系統為P3再分配1個資源開始,系統便進入了不安全狀態。由此可見,在P3提出了新的資源請求時,盡管系統剩余資源量能夠滿足,但也不會分配,必須讓P3一直等待到P1和P2執行完畢,釋放資源后,再將資源分配給P3,這樣才能順利執行。

2 算法描述

銀行家算法所需數據結構:

1)系統剩余資源向量Available

一個包含m個元素的一維數組,數組中的每一個元素代表了一類可用資源。數組中元素的初值分別代表了系統中各類資源數量,數組元素的值會隨著資源的分配和回收而動態變化。如Available[j]= k,則表示系統中有Rj類資源k個。

2)最大需求矩陣Max

一個n*m的矩陣,分別定義了系統中n個并發進程對m類資源的最大需求。如Max[i,j]= k,則表示進程i對Rj類資源的最大需求是k個。

3)已分配矩陣Allocation

一個n*m的矩陣,分別定義了系統已分配給n個進程的各類資源數量。如Allocation[i,j]= k,則表示進程i已分配Rj類資源k個。

4)尚需矩陣Need

一個n*m的矩陣,分別定義了n個進程尚需各類資源的數量,如Need[i,j]= k,則表示進程i尚需Rj類資源k個,才能達到自身最大需求,順利執行完畢。

上述三個矩陣間存在的關系:

Max[i,j]=Allocation[i,j]+Need[i,j][6-7]

2.1 銀行家算法

設進程Pi的新資源請求向量為Request[i]。如Request[i]= k,則還需為進程Pi分配Rj類資源k個。當Pi發出資源請求后,操作系統按下述步驟進行檢驗:[8]

1)若Request[i]≤Need[i],則轉至(2)。否則,報錯,因為新的資源請求超過其還能獲得的資源量。

2)若Request[i]≤Available,則轉至(3)。否則,報錯,新的資源請求超過了系統剩余資源量,資源不足,無法分配,進程必須等待。

3)試分配。滿足進程Pi的新資源請求,并修改對應的數據:

Available-=Request[i];

Allocation+=Request[i];

Need[i]-=Request[i];

4)進行系統安全性檢驗。若找到安全序列,則系統安全,正式為進程Pi分配資源。否則,判定試分配無效,恢復原有系統資源狀態,讓進程Pi等待。

2.2 安全性檢驗算法

安全性檢驗算法如圖1所示。

圖1 安全性檢驗算法

1)設置兩個向量Work和Finish

a.Work是具有m個元素的一維數組,表示系統可提供給進程繼續執行的各類資源數量。初始狀態下,Work=Allocation。

b.Finish是具有n個元素的一維數組,表示系統能否提供給進程足夠的資源使其順利執行完畢。初始狀態下,Finish[i]=false;當有足夠資源分配給進程時,Finish[i]=true。

2)在并發進程中找到能滿足下述條件的進程:

a.Finish[i]=false;

b.Need[i]≤Work;

如果找到,則轉至(3);否則,轉至(4)。

3)進程Pi獲得資源后,滿足尚需資源量,可順利執行完畢,并釋放分配給它的所有資源,因此:

Work+=Allocation;

Finish[i]=true;

轉至(2)。

4)如果所有進程Finish[i]==true,則表示系統處于安全狀態,通過了系統安全性檢驗;否則,系統就處于不安全狀態。

3 基于回退技術的檢索方法

引入向量F和D分別表示暫時性V向量和檢索中是否被滿足,并使之運行完成。初始狀態,對所有未滿足的進程Pi記作D[i]=false;當有足夠資源分配給進程時,記作D[i]=true,并釋放其擁有的所有資源。[9]

擬分配的結果如果可以達到D[1…n]=true,則表示系統處于安全狀態,資源擬分配有效;否則,系統處于不安全狀態,暫停資源分配。

voidreleaseResource(intA[],intF[],intmResource); //進程Pi完成,釋放已分配資源

voidcancelRelease(intA[],intF[],intmResource); //回退,取消資源釋放

intisEnough(intN[],intF[],intmResource); //剩余資源能否滿足進程Pi尚需資源請求

voidoutPut(intSafeSequence[],intnProcess); //輸出一個安全序列

intBankAlgo(intnProcess,intmResource,intF[],intA[][],intN[][],intD[],intnumFinished,intSafeSequence[],intNumSafeSeq) { //基于回退的銀行家算法

for(inti= 0;i

if(!D[i]&&isEnough(N[i],F,mResource)){

releaseResource(A[i],F,mResource);

D[i]=1;

SafeSequence[++numFinished]=i; //若所有進程都處理完,則找到一個安全序列,并輸出;否則遞歸處理下一進程

if(numFinished==nProcess){

Output(SafeSequence,nProcess);

NumSafeSeq++;}

else

NumSafeSeq=BankAlgo(nProcess,mResource,F,A,N,D,numFinished,SafeSequence,NumSafeSeq); //取消此次標記,恢復處理前的環境,以便開始新的回退

CancelRelease(A[i],F,mResource);

D[i]=0;

——numFinished;}}

returnNumSafeSeq;}。

[1]左萬利,王拉柱.銀行家算法的改進[J].吉林大學學報:理學版, 2007(1):35-38.

[2]帖軍,蔣天發.銀行家算法中的安全序列分析[J].武漢理工大學學報, 2007, 29(6):114-117.

[3]王繼奎,王會勇.基于銀行家算法的進程安全序列全搜索算法[J].甘肅科學學報, 2009,21(2):152-154.

[4]仲兆滿,管燕.銀行家算法的改進及其在操作系統上的推廣[J].連云港師范高等專科學校學報,2002(2):46-48.

[5]李斌.銀行家算法的研究及其計算機仿真[J].揚州教育學院學報,2003,21(3):32-34.

[6]左萬歷,周長林.計算機操作系統教程[M].北京:高等教育出版社, 2004.

[7]湯子瀛.計算機操作系統[M].西安:西安電子科技大學出版社, 1996.

[8]張帆,張文.用C#實現和改進銀行家算法[J].電腦知識與技術, 2011,7(8):1829-1831.

[9]張帆.用C++實現進程安全序列搜索算法[J].電腦知識與技術, 2012,8(21):5104-5106.

(責任編輯 姚虹)

A Search Method of Safe Sequence Based on the Backtracking

ZHAO Fu-xinga, ZHANG Fanb, HUANG Ji-haib

(a. College of Mechanical-electronic and Vehicle Engineering, Zhengzhou Institute of Technology, Zhengzhou 450044, China;b. College of Information Engineering, Zhengzhou Institute of Technology, Zhengzhou 450044, China)

In the process of design and realization of the operating system, the concurrent implementation of a number of processes can improve the utilization rate of system resources. However, an error may occur: deadlock. Deadlock is a kind of stalemate caused by competing resources in the implementation of multiple processes. If there is no external force, processes will be not running. Banker algorithm is a very representative and typical method to avoid deadlock. This essay discusses secured sequence and the security state of banker’s algorithm, and points out the importance of safe sequence. Meanwhile, it describes bankers’ model. Finally, it provides the detailed realization of safe sequence searching algorithm based on the backtracking.

banker’s algorithm; deadlock; safe sequence

2017-06-09

河南省基礎與前沿技術研究計劃項目(152300410006)

趙富星(1982—),男,河南宜陽人,鄭州工程技術學院機電與車輛工程學院教師,主要研究方向為計算機應用技術。

10.13783/j.cnki.cn41-1275/g4.2017.04.025

TP301.6

A

1008-3715(2017)04-0117-04

猜你喜歡
進程分配資源
基礎教育資源展示
一樣的資源,不一樣的收獲
應答器THR和TFFR分配及SIL等級探討
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
遺產的分配
一種分配十分不均的財富
資源回收
績效考核分配的實踐與思考
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 亚洲高清无码久久久| 国产精品女人呻吟在线观看| 亚洲aaa视频| 欧美国产日本高清不卡| 国产精品无码作爱| 婷婷亚洲视频| 亚洲欧美日韩色图| 在线无码九区| 国产一级毛片网站| 日韩黄色在线| 日韩精品一区二区三区视频免费看| 免费看a级毛片| 伊人久久大香线蕉成人综合网| 久久免费观看视频| 欧美.成人.综合在线| 亚洲精品亚洲人成在线| 国产精品久久久久久久伊一| 在线不卡免费视频| 99re在线视频观看| 亚洲国产日韩一区| 无码免费视频| 99草精品视频| 青青草91视频| 欧美精品高清| 亚洲国产中文在线二区三区免| 日本五区在线不卡精品| 亚洲一道AV无码午夜福利| 欧美精品H在线播放| 成年av福利永久免费观看| JIZZ亚洲国产| 激情综合婷婷丁香五月尤物 | 国产1区2区在线观看| 国产大片黄在线观看| 国产精品性| jizz国产在线| 色婷婷亚洲十月十月色天| 日本爱爱精品一区二区| 欧美成人怡春院在线激情| 午夜国产精品视频黄| 最新国产网站| 亚洲视频影院| 国产精品久久久久久搜索| 美女无遮挡免费视频网站| 91精品国产丝袜| 久久综合色视频| 97色伦色在线综合视频| 99视频在线观看免费| 一本大道东京热无码av| 国产精品一区二区在线播放| 成人午夜在线播放| 九一九色国产| 亚洲欧美不卡中文字幕| 亚洲av无码成人专区| 国产午夜一级毛片| 美女无遮挡被啪啪到高潮免费| 天天色天天综合网| 日韩一区精品视频一区二区| 丁香婷婷久久| 亚洲无码一区在线观看| 野花国产精品入口| 色妞www精品视频一级下载| YW尤物AV无码国产在线观看| 日本久久网站| 九色视频在线免费观看| 国产精品亚洲αv天堂无码| 欧美精品1区2区| 国产自在自线午夜精品视频| 黄色网站不卡无码| 91成人在线免费视频| 亚洲一区二区三区中文字幕5566| 欧美色图久久| 久久久久国色AV免费观看性色| 亚洲三级影院| 欧美黄色网站在线看| 国产精品女熟高潮视频| 成人免费一级片| 亚洲精品少妇熟女| 露脸国产精品自产在线播| 在线观看国产精品第一区免费| 激情爆乳一区二区| 在线国产欧美| 伊人激情久久综合中文字幕|