国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

這篇具有很好參考價(jià)值的文章主要介紹了操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

文章目錄

死鎖

?(1)定義

?(2)死鎖產(chǎn)生的原因

?(3)死鎖產(chǎn)生的必要條件

?(4)死鎖的處理策略

銀行家算法

?(1)核心思想

?(2)數(shù)據(jù)結(jié)構(gòu)

?(3)算法描述

?? (4)? 安全性檢查算法

銀行家算法的模擬

(1)數(shù)據(jù)結(jié)構(gòu)

(2)完整代碼

(3)測(cè)試


死鎖

(1)定義

所謂死鎖,是指多個(gè)進(jìn)程因?yàn)楦?jìng)爭(zhēng)資源而導(dǎo)致的一種互相循環(huán)等待的“僵局”,若無外力作用調(diào)整,這些進(jìn)程都無法向前推進(jìn)運(yùn)行。

如下圖所示,在十字路口,甲車在等著乙車來讓道給自己通行,但乙車司機(jī)脾氣暴躁就是不讓也在等待著甲車讓道給自己通行,互相等待,誰都不讓道,從而造成一種擁堵的僵局現(xiàn)象,這就是生活中常見的死鎖現(xiàn)象。

操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

?(2)死鎖產(chǎn)生的原因

  • 系統(tǒng)資源的競(jìng)爭(zhēng)
  • 進(jìn)程推進(jìn)的順序非法
  • 信號(hào)量使用不當(dāng)

(3)死鎖產(chǎn)生的必要條件

操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

  • 互斥條件:進(jìn)程要求對(duì)所分配的資源進(jìn)行排他性使用,即在某段時(shí)間內(nèi)某種資源只能被一種進(jìn)程獨(dú)自使用
  • 不可剝奪條件:進(jìn)程在獲得資源后不能被其它進(jìn)程強(qiáng)行奪走,而是由自己主動(dòng)釋放
  • 請(qǐng)求并保持條件:進(jìn)程已經(jīng)保持了一種資源,但又提出了新的資源請(qǐng)求,而該資源已經(jīng)被其它進(jìn)程所占用,此時(shí)請(qǐng)求進(jìn)程被阻塞,但對(duì)自己已經(jīng)獲得的資源保持不放
  • 循環(huán)等待條件:存在一種進(jìn)程資源的循環(huán)等待鏈,鏈中的每個(gè)進(jìn)程所獲得的資源同時(shí)被下一個(gè)資源所請(qǐng)求。如上圖2-15所示

(4)死鎖的處理策略

  • 死鎖預(yù)防:設(shè)置某些限制條件,破壞產(chǎn)生死鎖4個(gè)必要條件中的一個(gè)或幾個(gè)
  • 死鎖避免:在資源的動(dòng)態(tài)分配中,用某種方法防止系統(tǒng)進(jìn)入不安全狀態(tài)
  • 死鎖的檢測(cè)與解除:無需采用任何的限制性措施,允許進(jìn)程發(fā)生死鎖。通過系統(tǒng)的檢測(cè)機(jī)制來檢測(cè)到死鎖,并采取某種措施來解除死鎖

而下面所講的銀行家算法就屬于死鎖避免算法的一種。


銀行家算法

(1)核心思想

????????銀行家算法是最著名的死鎖避免算法,其思想是:把操作系統(tǒng)視為銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶向銀行家款。操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源。進(jìn)程運(yùn)行之前先聲明對(duì)各種資源的最大需求量,當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程已占用的資源數(shù)與本次申請(qǐng)的資源數(shù)之和是否超過該進(jìn)程聲明的最大需求量。若超過則拒絕分配資源,若未超過則再測(cè)試系統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源量,若能滿足則按當(dāng)前的申請(qǐng)量分配資源,否則也要推遲分配。

(2)數(shù)據(jù)結(jié)構(gòu)

  • 可用資源向量Available:長(zhǎng)度為n的數(shù)組表示系統(tǒng)中n類資源的當(dāng)前可用數(shù)目。如果Available[j]=k,表示系統(tǒng)中現(xiàn)有Rj類資源為k個(gè)。

  • 最大需求矩陣Max:m×n矩陣定義m個(gè)進(jìn)程對(duì)n類資源的最大需求量。如Max[i,j]=k,表示進(jìn)程Pi運(yùn)行期間最多需求Rj資源的數(shù)目為k個(gè)。

  • 已分配資源矩陣Allocation:m×n矩陣定義了每個(gè)進(jìn)程現(xiàn)在已分配到的各類資源的實(shí)際數(shù)目。如果Allocation [i,j]=k,表示進(jìn)程Pi當(dāng)前分到k個(gè)Rj類資源。

  • ?需求矩陣Need:m×n矩陣表示每個(gè)進(jìn)程還需要的各類資源的數(shù)目。如果Need [i, j]=k,表示進(jìn)程Pi尚需k個(gè)Rj類資源才能完成其任務(wù)。很顯然,Need[i,j]=Max[i,j] - Allocation[i,j],因而,這些數(shù)據(jù)結(jié)構(gòu)的大小和值會(huì)隨著時(shí)間而改變。

?其中,Need=Max-Allocation

?(3)算法描述

設(shè)Requesti表示進(jìn)程Pi的資源申請(qǐng)向量。如Requesti[j]= k,表示進(jìn)程Pi動(dòng)態(tài)申請(qǐng)k個(gè)Rj類資源。當(dāng)進(jìn)程Pi申請(qǐng)資源時(shí),就執(zhí)行下列動(dòng)作(試探性分配):

  1. 若Requesti[j]>Need[i,j],產(chǎn)生出錯(cuò)條件,因?yàn)檫M(jìn)程Pi對(duì)資源的請(qǐng)求量已超過其說明的最大數(shù)量;否則,轉(zhuǎn)到步驟2。

  2. 如果Requesti[j]>Available[j],則進(jìn)程Pi必須等待,這是因?yàn)橄到y(tǒng)現(xiàn)在沒有可用的資源;否則,轉(zhuǎn)到步驟3。

  3. 如果系統(tǒng)可以給進(jìn)程Pi分配所請(qǐng)求的資源,則應(yīng)對(duì)有關(guān)數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改:
    ??????? Available[j] = Available[j]-Requesti[j];?? (j=1,2,……,n)
    ??????? Allocation[i,j] = Allocation[i,j] + Requesti[j];?? (i=1,2,……,m)
    ??????? Need[i,j] = Need[i,j] - Requesti[j];

  4. 系統(tǒng)執(zhí)行安全性檢查,查看此時(shí)系統(tǒng)狀態(tài)是否安全。如果安全,就給進(jìn)程Pi 實(shí)際分配資源;否則,即系統(tǒng)是不安全的,則Pi等待,作廢本次試探性分配,并且把資源分配狀態(tài)恢復(fù)成3之前的情況。

(4)安全性檢查算法

????????安全性檢查算法是銀行家算法的核心,在銀行家算法的習(xí)題中,一般會(huì)有某個(gè)進(jìn)程發(fā)出一個(gè)資源請(qǐng)求向量,我們只需要執(zhí)行上面銀行家算法的前三步,就會(huì)得到一個(gè)更新后的Allocation和Need矩陣,再按照上例的安全性算法進(jìn)行判斷,此時(shí)系統(tǒng)是否處于安全狀態(tài),就能直到系統(tǒng)是否能立即滿足該進(jìn)程提出的資源請(qǐng)求。

一般步驟如下:

  1. 設(shè)置兩個(gè)向量:工作向量Work:表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需要的各類資源數(shù)目,長(zhǎng)度為n;進(jìn)程完成標(biāo)志向量Finish:長(zhǎng)度為m,表示各個(gè)進(jìn)程是否能夠得到足夠的資源并運(yùn)行完成。兩個(gè)向量初始化:Work=AvailableFinish[i]=false (i=1,2,...m)

  2. 從進(jìn)程集合中搜尋滿足下列條件的進(jìn)程(找安全進(jìn)程序列):Finish[i] ==false且Need[i,j]≤Work[j]。如果找到這樣的進(jìn)程,執(zhí)行3;否則,則轉(zhuǎn)向步驟4。

  3. 修改數(shù)據(jù)值:Work[j]=Work[j] + Allocation[i,j](進(jìn)程Pi釋放所占的全部資源);Finish[i]=true;返回步驟2

  4. 安全狀態(tài)的判定:如果所有進(jìn)程的Finish[i] ==true都成立(找著安全序列),則系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。


銀行家算法的模擬

(1)數(shù)據(jù)結(jié)構(gòu)

//定義銀行家算法的數(shù)據(jù)結(jié)構(gòu) 
int Available[3]={3,3,2};//系統(tǒng)可用資源 
int Max[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//進(jìn)程最大資源需求量 
int Allocation[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//系統(tǒng)已經(jīng)給進(jìn)程分配的資源 
int Need[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};//進(jìn)程的資源最大需求量 
int Work[3];//安全性檢查算法中的工作向量 
int Finish[5]={0,0,0,0,0};//進(jìn)程執(zhí)行完成的標(biāo)志 
int SafeArray[5];//安全序列 
int Request[3];//請(qǐng)求資源向量 

(2)完整代碼

/*
	模擬銀行家算法,進(jìn)行死鎖的避免 
*/
#include<iostream>
using namespace std;
//定義銀行家算法的數(shù)據(jù)結(jié)構(gòu) 
int Available[3]={3,3,2};//系統(tǒng)可用資源 
int Max[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//進(jìn)程最大資源需求量 
int Allocation[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//系統(tǒng)已經(jīng)給進(jìn)程分配的資源 
int Need[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};//進(jìn)程的資源最大需求量 
int Work[3];//安全性檢查算法中的工作向量 
int Finish[5]={0,0,0,0,0};//進(jìn)程執(zhí)行完成的標(biāo)志 
int SafeArray[5];//安全序列 
int Request[3];//請(qǐng)求資源向量 

void ShowSafe(int i);
//打印當(dāng)前系統(tǒng)資源的分配情況 
void Show(){
    cout<<"T0時(shí)刻的系統(tǒng)資源分配情況如下:"<<endl;
    cout<<"進(jìn)程名\tMax\t\tAllocation\tNeed\t\tAvailable"<<endl;
    for(int i=0;i<5;i++){
        cout<<"P"<<i<<"\t";
        for(int j=0;j<3;j++){
            cout<<Max[i][j]<<" ";
        }
        cout<<"\t\t";
        for(int j=0;j<3;j++){
            cout<<Allocation[i][j]<<" ";
        }
        cout<<"\t\t";
        for(int j=0;j<3;j++){
            cout<<Need[i][j]<<" ";
        }
        cout<<"\t\t";
        if(i==0){
            for(int j=0;j<3;j++){
                cout<<Available[j]<<" ";
            }
        }
        cout<<endl;
    }
}
//安全性檢查中判斷需求矩陣與工作向量關(guān)系 
int NeedLessWork(int i){
    for(int j=0;j<3;j++){
        if(Need[i][j]>Work[j]){
            return 0;
        }
    }
    return 1;
}
//打印安全序列 
void SafeLine(){
    cout<<"當(dāng)前系統(tǒng)處于安全狀態(tài)..."<<endl;
    cout<<"其中一個(gè)安全序列為:" ;
    for(int i=0;i<5;i++){
    	if(i==4)cout<<"P"<<SafeArray[i];
    	else cout<<"P"<<SafeArray[i]<<"-->";
    }
    cout<<endl;
    for(int i=0;i<5;i++){
        Finish[i]=0;
    }
}

//安全性檢查算法 
void IsSafe(int index){
    for(int i=0;i<5;i++){
        int temp=NeedLessWork(i);
        if(Finish[i]==0&&temp){
            SafeArray[index]=i;
            index++;
            Finish[i]=1;
            ShowSafe(i);
            for(int j=0;j<3;j++){
                Work[j]=Work[j]+Allocation[i][j];
            }
            break;
        }
    }
    int mult=1;
    //如果五個(gè)標(biāo)志都為1即都已經(jīng)完成,則打印安全序列,否則繼續(xù)執(zhí)行安全性檢查算法 
    for(int k=0;k<5;k++){
        mult*=Finish[k];
    }
    if(mult==0){
        IsSafe(index);
    }else{
        SafeLine();
    }
}
void ShowSafe(int i){
    cout<<"P"<<i<<"\t";
    for(int j=0;j<3;j++){
        cout<<Work[j]<<" ";
    }
    cout<<"\t\t";
    for(int j=0;j<3;j++){
        cout<<Need[i][j]<<" ";
    }
    cout<<"\t\t";
    for(int j=0;j<3;j++){
        cout<<Allocation[i][j]<<" ";
    }
    cout<<"\t\t";
    for(int j=0;j<3;j++){
        cout<<Work[j]+Allocation[i][j]<<" ";
    }
    cout<<"\t\t";
    cout<<Finish[i];
    cout<<endl;

}
void SafeCheck(){
    cout<<"試探著將資源分配給它后,系統(tǒng)安全情況分析如下:"<<endl;
    cout<<"進(jìn)程\tWork\t\tNeed\t\tAllocation\tWork+Allocation\tFinish"<<endl;
    for(int i=0;i<3;i++){
        Work[i]=Available[i];
    }
    IsSafe(0);
}

int RequestLessNeed(int i){
    for(int j=0;j<3;j++){
        if(Request[j]>Need[i][j]){
            return 0;
        }
    }
    return 1;
}
int RequestLessAvailable(int i){
    for(int j=0;j<3;j++){
        if(Request[j]>Available[j]){
            return 0;
        }
    }
    return 1;
}

//處理進(jìn)程發(fā)出的資源請(qǐng)求 
void RequestResourse(){
    cout<<"請(qǐng)輸入發(fā)出資源請(qǐng)求的進(jìn)程:";
    int n;
	cin>>n;
    cout<<"請(qǐng)依次輸入所請(qǐng)求的資源數(shù)量:";
    for(int i=0;i<3;i++){
        cin>>Request[i];
    }
    if(RequestLessNeed(n)){
    	if(RequestLessAvailable(n)){
    		for(int j=0;j<3;j++){
            Available[j]=Available[j]-Request[j];
            Allocation[n][j]=Allocation[n][j]+Request[j];
            Need[n][j]=Need[n][j]-Request[j];
           }
            SafeCheck();//試探著將資源分配給請(qǐng)求進(jìn)程,并進(jìn)行安全性檢查 
    	}else{
    		cout<<"P"<<n<<"請(qǐng)求的資源向量已超過系統(tǒng)可用資源向量,請(qǐng)求失??!讓其繼續(xù)等待..."<<endl;
    		cout<<"-------------------------------------------------------------------"<<endl; 
            return ;
    	}
    }else{
    	 cout<<"P"<<n<<"請(qǐng)求的資源向量已超過其最大需求向量,請(qǐng)求失?。∽屍淅^續(xù)等待..."<<endl;
    	 cout<<"-------------------------------------------------------------------"<<endl; 
         return ;
    }
}


int main(){
    cout<<"*************************銀行家算法的模擬*************************"<<endl;
    cout<<"    \t\t\t1.顯示當(dāng)前系統(tǒng)資源情況"<<endl;
    cout<<"    \t\t\t2.進(jìn)程發(fā)出請(qǐng)求向量"<<endl;
    cout<<"    \t\t\t3.退出系統(tǒng)"<<endl;
    cout<<"******************************************************************"<<endl; 
    while(true){
        int choose;
        cout<<"請(qǐng)選擇你要執(zhí)行的操作:";
        cin>>choose;
        switch (choose){
            case 1 :
                Show();//展示當(dāng)前系統(tǒng)資源分配情況 
                break;
            case 2:
                RequestResourse();//處理進(jìn)程發(fā)出的資源請(qǐng)求 
                break;
            case 3:
                cout<<"已退出系統(tǒng)!"<<endl;
                return 0;
            default:
                cout<<"輸入錯(cuò)誤,請(qǐng)重新輸入!"<<endl;
                continue;
        }
    }
}

(3)測(cè)試

操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬

?綜上。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-428831.html

到了這里,關(guān)于操作系統(tǒng)實(shí)驗(yàn)二死鎖避免之銀行家算法的模擬的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [操作系統(tǒng)] 銀行家算法

    [操作系統(tǒng)] 銀行家算法

    如果系統(tǒng)按照這種序列分配資源,則每個(gè)進(jìn)程都能順利完成。只要能找出一個(gè)安全序列,系統(tǒng)就是安全狀態(tài)。 當(dāng)然,安全序列可能有多個(gè) 。 此時(shí)你是一位成功的銀行家,手里有100億資金… 此時(shí)有三個(gè)企業(yè)想找你貸款,分別是企業(yè)B,企業(yè)A,企業(yè)T B:“大哥,我最多要借70億

    2023年04月08日
    瀏覽(39)
  • 操作系統(tǒng)-銀行家算法

    目錄 一、銀行家算法 二、銀行家算法的流程和數(shù)據(jù)結(jié)構(gòu) 1.數(shù)據(jù)結(jié)構(gòu) 2.步驟流程 3.安全性算法 三、舉例 解題思路 答案 為了避免死鎖,出現(xiàn)了銀行家算法。 系統(tǒng)必須確保是否有足夠的資源分配給一個(gè)進(jìn)程,若有,再計(jì)算分配后系統(tǒng)是否會(huì)處于不安全狀態(tài),若安全,才會(huì)分配。

    2024年02月02日
    瀏覽(22)
  • 【操作系統(tǒng)】銀行家算法個(gè)人出題例題 (含答案)

    【操作系統(tǒng)】銀行家算法個(gè)人出題例題 (含答案)

    1.銀行家算法是代表性的避免死鎖的算法,在進(jìn)程調(diào)度中具有重要作用。請(qǐng)結(jié)合所學(xué)知識(shí)回答以下問題:(23分——加長(zhǎng)版) (1)銀行家算法使用的四個(gè)必要的數(shù)據(jù)結(jié)構(gòu)是:可用資源向量Available,____________,分配矩陣Allocation,需求矩陣Need。(1分) (2)以下是銀行家算法具體實(shí)現(xiàn)

    2024年02月12日
    瀏覽(15)
  • 操作系統(tǒng)銀行家算法(JAVA/Python/C#/JavaScript/C/C++)代碼實(shí)現(xiàn)

    操作系統(tǒng)銀行家算法(JAVA/Python/C#/JavaScript/C/C++)代碼實(shí)現(xiàn)

    銀行家算法是一種資源分配和死鎖避免算法,它通過模擬所有資源的預(yù)定最大可能數(shù)量的分配來測(cè)試安全性,然后進(jìn)行“s狀態(tài)”檢查以測(cè)試可能的活動(dòng),然后決定是否應(yīng)該允許繼續(xù)分配。 Banker’s algorithm?之所以叫“銀行家算法”,是因?yàn)樗阢y行系統(tǒng)中被用來檢查貸款是否

    2024年02月06日
    瀏覽(42)
  • 操作系統(tǒng)考試復(fù)習(xí)——第三章 預(yù)防死鎖 避免死鎖

    預(yù)防死鎖: 就是破壞死鎖產(chǎn)生的四個(gè)條件之一就行。 0.破壞互斥條件:由于互斥條件是非共享設(shè)備所必須的所以,不僅不能改變還需要保證。因此我們主要考慮剩下的三個(gè)條件。 1. 破壞 \\\"請(qǐng)求和保持\\\" 條件 請(qǐng)求和保持也就是系統(tǒng)已經(jīng)請(qǐng)求了一個(gè)資源它現(xiàn)在占有這個(gè)資源但是它

    2024年02月03日
    瀏覽(16)
  • 銀行家算法的實(shí)驗(yàn)報(bào)告

    銀行家算法的實(shí)驗(yàn)報(bào)告

    一、實(shí)驗(yàn)內(nèi)容 銀行家算法是避免死鎖的一種重要方法,本實(shí)驗(yàn)要求編寫和調(diào)試一個(gè)簡(jiǎn)單的銀行家算法程序。 1.設(shè)計(jì)進(jìn)程對(duì)各類資源最大申請(qǐng)表示及初值的確定。 2.設(shè)定系統(tǒng)提供資源的初始狀況。 3.設(shè)定每次某個(gè)進(jìn)程對(duì)各類資源的申請(qǐng)表示。 4.編制程序,依據(jù)銀行家算法

    2023年04月26日
    瀏覽(18)
  • 銀行家算法 源碼+實(shí)驗(yàn)報(bào)告(用了自?。? decoding=

    銀行家算法 源碼+實(shí)驗(yàn)報(bào)告(用了自取)

    XI`AN TECHNOLOGICAL UNIVERSITY 課程設(shè)計(jì)報(bào)告 實(shí)驗(yàn)課程名稱 操作系統(tǒng)—銀行家算法 ??? 專??? 業(yè) :計(jì)算機(jī)科學(xué)與技術(shù) ???????? 班??? 級(jí) :??????????????? 姓??? 名 :?????????????????? 學(xué)??? 號(hào) :?????? ?? 實(shí)驗(yàn)學(xué)時(shí) :?????????????????????

    2024年02月09日
    瀏覽(37)
  • 【操作系統(tǒng)】死鎖問題---死鎖的消除方法

    【操作系統(tǒng)】死鎖問題---死鎖的消除方法

    本文章將主要解釋死鎖的消除方法 一、死鎖的概念 ? ? ? ? 這是《操作系統(tǒng)》對(duì)于死鎖的定義: 有并發(fā)進(jìn)程P1,P2,…Pn,它們共享資源R1,R2,…Rm (n0,m0, n=m)。其中,每個(gè)Pi(1≤i≤n)擁有資源Rj(1≤j ≤m),直到不再有剩余資源。同時(shí),各Pi又在不釋放Rj的前提下要求Rk(k≠j,1≤k ≤m),

    2024年02月15日
    瀏覽(19)
  • 操作系統(tǒng)——死鎖

    操作系統(tǒng)——死鎖

    死鎖是指 多個(gè)進(jìn)程因?yàn)楦?jìng)爭(zhēng)資源 而造成的一種僵局( 互相等待 ),若無外力作用,這些進(jìn)程都將無法推進(jìn)。 ? ? ? ? ? ? ? ? ? ? ? ? ?1.系統(tǒng)資源的競(jìng)爭(zhēng) ? ? ? ? ? ? ? ? ? ? ? ? ?2.進(jìn)程推進(jìn)順序非法 ? ? ? ? ? 進(jìn)程申請(qǐng)的資源為臨界資源 ? ? ? ? ? ?進(jìn)程已申請(qǐng)的資

    2024年02月02日
    瀏覽(24)
  • 操作系統(tǒng)之死鎖詳解

    操作系統(tǒng)之死鎖詳解

    本文已收錄于專欄 《自考》 ??最近一直在做操作系統(tǒng)的測(cè)試題,在做題的過程中發(fā)現(xiàn)有很多地方涉及到了關(guān)于死鎖的知識(shí)點(diǎn)。今天就回歸課本來自己琢磨一下死鎖。下面就把我琢磨的成果分享給大家。 并發(fā)編程:死鎖是在并發(fā)環(huán)境下發(fā)生的,因此了解并發(fā)編程的基本概念

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包