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

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

OS-練習(xí)題(5~9)-創(chuàng)新互聯(lián)

目錄

網(wǎng)站設(shè)計(jì)制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營了10年的創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司。

課時(shí)五 死鎖(一)

1.死鎖的概念

2.死鎖的預(yù)防

課時(shí)六 死鎖(二)

1.死鎖的避免

2.死鎖的檢測與解除?

課時(shí)七 進(jìn)程同步(一)

1.同步與互斥的基本概念

2.進(jìn)程同步機(jī)制

課時(shí)八 進(jìn)程同步(二)

2.信號(hào)量的基本應(yīng)用

3.管程

課時(shí)九 進(jìn)程同步(三)

1.生產(chǎn)者消費(fèi)者問題

2.讀者寫者問題

3.哲學(xué)家進(jìn)餐問題


課時(shí)五 死鎖(一) 1.死鎖的概念 產(chǎn)生死鎖必須同時(shí)滿足以下四個(gè)條件,只要其中任一條件不成立,死鎖就不會(huì)發(fā)生。 ①互斥條件。只有對(duì)必須互斥使用的資源的爭搶才會(huì)導(dǎo)致死鎖(如哲學(xué)家的筷子、 打印機(jī)設(shè)備)。 ②請(qǐng)求和保持條件。進(jìn)程已經(jīng)保持了至少一個(gè)資源,但又提出了新的資源請(qǐng)求,而該資源又被其他進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程被阻塞,但又對(duì)自己已有的資源保持不放。 ③循環(huán)等待條件。存在一種進(jìn)程資源的循環(huán)等待鏈,鏈中的每一個(gè)進(jìn)程已獲得的資源同時(shí)被下一個(gè)進(jìn)程所請(qǐng)求。 注意:發(fā)生死鎖時(shí)一定有循環(huán)等待,但是發(fā)生循環(huán)等待時(shí)未必死鎖。 ④不剝奪條件。進(jìn)程所獲得的資源在未使用完之前,不能由其他進(jìn)程強(qiáng)行奪走,只能主動(dòng)釋放。 2.死鎖的預(yù)防 題 1.系統(tǒng)產(chǎn)生死鎖的可能原因是( ) A. 獨(dú)占資源分配不當(dāng)? ? ? ? ? B.系統(tǒng)資源不足 C.進(jìn)程運(yùn)行太快???????????????? D.CPU內(nèi)核太多 答案:A 解析:系統(tǒng)死鎖的可能原因主要是時(shí)間上和空間上的。時(shí)間上由于進(jìn)程運(yùn)行中推進(jìn)順序不當(dāng),即調(diào)度時(shí)機(jī)不合適,不該切換進(jìn)程時(shí)進(jìn)行了切換,可能會(huì)造成死鎖;空間上的原因是對(duì)獨(dú)占資源分配不當(dāng),互斥資源部分分配又不可剝奪,極易造成死鎖。那么,為什么系統(tǒng)資源不足不是造成死鎖的原因?系統(tǒng)資源不足只會(huì)對(duì)進(jìn)程造成“饑餓”。例如,某系統(tǒng)只有三臺(tái)打印機(jī),若進(jìn)程運(yùn)行中要申請(qǐng)四臺(tái),顯然不能滿足,該進(jìn)程會(huì)永遠(yuǎn)等待下去。若該進(jìn)程在創(chuàng)建時(shí)便聲明需要四臺(tái)打印機(jī),則操作系統(tǒng)立即就會(huì)拒絕。這實(shí)際上是資源分配不當(dāng)?shù)囊环N表現(xiàn)。不能以系統(tǒng)資源不足來描述剩余資源不足的情形。 題 2.系統(tǒng)中有 4個(gè)進(jìn)程都要使用某類資源。若每個(gè)進(jìn)程最多需要 3個(gè)該類資源,則為了保證系統(tǒng)不發(fā)生死鎖,系統(tǒng)至少應(yīng)提供( )該類資源 A.3個(gè) ????????B.4個(gè) ????????C. 9個(gè) ????????D.12個(gè) 答案:C 解析:系統(tǒng)中有 4個(gè)進(jìn)程,每個(gè)進(jìn)程最多需要 3個(gè)資源,先給每個(gè)進(jìn)程分配 2個(gè)資源,共需要 8個(gè)資源,此時(shí)需要系統(tǒng)中還有 1個(gè)空閑資源 (其可被分配給任一 進(jìn)程),才不會(huì)發(fā)生死鎖,故至少需要9個(gè)資源。 課時(shí)六 死鎖(二) 1.死鎖的避免

銀行家算法

2.死鎖的檢測與解除? 題 1.死鎖的避免是根據(jù)( )采取措施實(shí)現(xiàn)的。 A.配置足夠的系統(tǒng)資源 B.使進(jìn)程的推進(jìn)順序合理 C.破壞死鎖的四個(gè)必要條件之一 D. 防止系統(tǒng)進(jìn)入不安全狀態(tài) 答案:D 解析:死鎖避免是指在資源動(dòng)態(tài)分配過程中用某些算法加以限制,防止系統(tǒng)進(jìn)入 不安全狀態(tài)從而避免死鎖的發(fā)生。選項(xiàng) B是避免死鎖后的結(jié)果,而不是措施的原理。 題 2.某系統(tǒng)中有三個(gè)并發(fā)進(jìn)程都需要四個(gè)同類資源,則該系統(tǒng)必然不會(huì)發(fā)生死鎖的最少資源是( ) A.9? ? ? ? ?B. 10 ? ? ? ? ?C.11? ? ? ? ?D.12 答案:B 解析:資源數(shù)為 9時(shí),存在三個(gè)進(jìn)程都占有三個(gè)資源,為死鎖;資源數(shù)為10時(shí),必然存在一個(gè)進(jìn)程能拿到 個(gè)資源,然后可以順利執(zhí)行完其他進(jìn)程。 題 3.某系統(tǒng)中共有11臺(tái)磁帶機(jī),X個(gè)進(jìn)程共享此磁帶機(jī)設(shè)備,每個(gè)進(jìn)程最多請(qǐng)求使用 3臺(tái),則系統(tǒng)必然不會(huì)死鎖的大X值是( ) A.4? ? ? ? ?B. 5 ? ? ? ? ?C.6? ? ? ? ?D.7 答案:B 解析:考慮一下極端情況:每個(gè)進(jìn)程已經(jīng)分配了兩臺(tái)磁帶機(jī),那么其中任何一個(gè)進(jìn)程只要再分配一臺(tái)磁帶機(jī)即可滿足它的大需求,該進(jìn)程總能運(yùn)行下去直到結(jié)束,然后將磁帶機(jī)歸還給系統(tǒng)再次分配給其他進(jìn)程使用。因此,系統(tǒng)中只要滿足 2X+1=11?這個(gè)條件即可認(rèn)為系統(tǒng)不會(huì)死鎖,解得X=5 ,也就是說,系統(tǒng)中最多可以并發(fā) 5個(gè)這樣的進(jìn)程是不會(huì)死鎖的。 課時(shí)七 進(jìn)程同步(一) 1.同步與互斥的基本概念 題 1.下列對(duì)臨界區(qū)的論述中,正確的是( ) A.臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程互斥的那段代碼 B.臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程同步的那段代碼 C.臨界區(qū)是指進(jìn)程中用于實(shí)現(xiàn)進(jìn)程通信的那段代碼 D. 臨界區(qū)是指進(jìn)程中用于訪問臨界資源的那段代碼 答案:D 題 2.進(jìn)程之間存在著哪幾種制約關(guān)系?它們各由什么原因引起?下列活動(dòng)分別 屬于哪種制約關(guān)系? 1)若干位同學(xué)去圖書館借書; 2)兩隊(duì)舉行籃球比賽; 3)流水線生產(chǎn)的各道工序; 4)商品生產(chǎn)和社會(huì)消費(fèi)。 解析:進(jìn)程之間存在著直接相互制約和間接相互制約這兩種制約關(guān)系,其中直接相互制約(同步)是由進(jìn)程間的相互合作弓起的;而間接相互制約(互斥)則是由進(jìn)程間共享臨界資源引起的。 1)若干位同學(xué)去圖書館借書是 間接相互制約 ,其中 書是臨界資源 。 2)兩隊(duì)舉行籃球比賽是 間接相互制約 其中 籃球是臨界資源 3)流水線生產(chǎn)的各道工序是 直接相互制約 ,各道工序間須相互合作,每道工序 的開始都依賴于前一道工序的完成。 4)商品生產(chǎn)和社會(huì)消費(fèi)是 直接相互制約 的,兩者須相互合作。商品生產(chǎn)出來后 才可以被消費(fèi),商品被消費(fèi)后才須再生產(chǎn)。 2.進(jìn)程同步機(jī)制 題 2.進(jìn)程P0和P1的共享變量定義及其初值為:boolean flag[2];int turn=0; flag[0]=FALSE; flag[1]=FALSE; 若進(jìn)程P0和P1訪問臨界資源的類C代碼實(shí)現(xiàn) 如下:
void P0()
{
    while(TRUE){
    flag[0]= TRUE;
    turn=1;
    while(flag[1]&&(turn==1));
    臨界區(qū);
    flag[0]= FALSE;
    }
}
void P1()
{
    while(TRUE){
    flag[1]= TRUE;
    turn=0;
    while(flag[0]&&(turn==0));
    臨界區(qū);
    flag[1]= FALSE;
    }
}
則并發(fā)執(zhí)行進(jìn)程P0和P1時(shí)發(fā)生的情況是( ) A.不能保證進(jìn)程互斥地進(jìn)入臨界區(qū),會(huì)出現(xiàn)“饑餓”現(xiàn)象 B.不能保證進(jìn)程互斥地進(jìn)入臨界區(qū),不會(huì)出現(xiàn)“饑餓”現(xiàn)象 C.能保證進(jìn)程互斥地進(jìn)入臨界區(qū),會(huì)出現(xiàn)“饑餓”現(xiàn)象 D. 能保證進(jìn)程互斥地進(jìn)入臨界區(qū),不會(huì)出現(xiàn)“饑餓”現(xiàn)象 答案:D 解析:算法實(shí)現(xiàn)互斥的主要思想在于設(shè)置一個(gè)turn變量,用于進(jìn)程間的互相謙讓。如果進(jìn)程P0試圖訪問臨界資源,flag[0]= TRUE,則表示希望訪問。此時(shí)如果進(jìn)程P1還未試圖訪問臨界資源,則 flag[1]在進(jìn)程上一次訪問完臨界資源并退出臨界區(qū)后已設(shè)置為 FALSE。因此進(jìn)程P0在執(zhí)行循環(huán)判斷條件時(shí),第一個(gè)條件不滿足,進(jìn)程P0可以正常進(jìn)入臨界區(qū),且滿足互斥條件。請(qǐng)注意兩個(gè)進(jìn)程同時(shí)試圖 訪問臨界資源的情況。 turn變量的含義:進(jìn)程在試圖訪問臨界資源時(shí),首先設(shè)置turn自己的 flag 變量為 TRUE,表示希望訪問;但又會(huì)設(shè)置turn變量為對(duì)方的進(jìn)程編號(hào),表示謙讓,若在turn變量不是進(jìn)程編號(hào)時(shí)就循環(huán)等待,則兩個(gè)進(jìn)程就會(huì)互相謙讓,由于turn變量會(huì)有一個(gè)最終值,因此先做出謙讓的進(jìn)程先進(jìn)入臨界區(qū),后做出謙讓的進(jìn)程則需要循環(huán)等待,不會(huì)造成“饑餓”現(xiàn)象。 課時(shí)八 進(jìn)程同步(二) 2.信號(hào)量的基本應(yīng)用 題 1.設(shè)與某資源關(guān)聯(lián)的信號(hào)量初值為 3,當(dāng)前值為 1。若M表示該資源的可用個(gè)數(shù),N示等待該資源的進(jìn)程數(shù),則M,N分別是( ) A.0,1? ? ? ? B. 1,0? ? ? ? C.1,2? ? ? ? D.2,0 答案:B 解析:信號(hào)量表示相關(guān)資源的當(dāng)前可用數(shù)量。當(dāng)信號(hào)量K>0時(shí),表示還有K個(gè) 相關(guān)資源可用,所以該資源的可用個(gè)數(shù)是 1。而當(dāng)信號(hào)量K<0時(shí),表示有 |K| 個(gè)進(jìn)程在等待該資源。由于資源有剩余,可見沒有其他進(jìn)程等待使用該資源,因此進(jìn)程數(shù)為 0。 題 2.對(duì)于兩個(gè)并發(fā)進(jìn)程,設(shè)互斥信號(hào)量為mutex(初值為 1),若mutex = -1,則 ( ) A.表示沒有進(jìn)程進(jìn)入臨界區(qū) B.表示有一個(gè)進(jìn)程進(jìn)入臨界區(qū) C. 表示有一個(gè)進(jìn)程進(jìn)入臨界區(qū),另一個(gè)進(jìn)程等待進(jìn)入 D.表示有兩個(gè)進(jìn)程進(jìn)入臨界區(qū) 答案:C 解析:當(dāng)有一個(gè)進(jìn)程進(jìn)入臨界區(qū)且有另一個(gè)進(jìn)程等待進(jìn)入臨界區(qū)時(shí),mutex = -1。?mutex小于0 時(shí),其絕對(duì)值等于等待進(jìn)入臨界區(qū)的進(jìn)程數(shù)。 題 3.下面是兩個(gè)并發(fā)執(zhí)行的進(jìn)程,它們能正確運(yùn)行嗎?若不能請(qǐng)舉例說明并改正。
int x;
process P1{
    int y,z;
    x=1;
    y=0;
    if(x>=1)
    y=y+1;
    z=y;
}
process P2{
    int t,u;
    x=0;
    t=0;
    if(x<=1)
    t=t+2;
    u=t;
}
解析:P1和P2兩個(gè)并發(fā)進(jìn)程的執(zhí)行結(jié)果是不確定的,它們都是對(duì)同一變量x 進(jìn)程操作,x?是一個(gè)臨界資源,而沒有進(jìn)行保護(hù)。例如:

顯然,兩次執(zhí)行結(jié)果不同,所以這兩個(gè)并發(fā)進(jìn)程不能正確運(yùn)行。可將這個(gè)程序改為:

int x;
semaphore S=1;
process P1{
    int y,z;
    P(S);
    x=1;
    y=0;
    if(x>=1)
    y=y+1;
    V(S);
    z=y;
}
process P2{
    int t,u;
    P(S);
    x=0;
    t=0;
    if(x<=1)
    t=t+2;
    V(S);
    u=t;
}
3.管程 題 1.下述( )選項(xiàng)不是管程的組成部分。 A.局限于管程的共享數(shù)據(jù)結(jié)構(gòu) B.對(duì)管程內(nèi)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過程 C. 管程外過程調(diào)用管程內(nèi)數(shù)據(jù)結(jié)構(gòu)的說明 D.對(duì)局限于管程的數(shù)據(jù)結(jié)構(gòu)設(shè)置初始值的語句 答案:C 解析:管程由局限于管程的共享變量說明、對(duì)管程內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過程及對(duì)局限于管程的數(shù)據(jù)設(shè)置初始值的語句組成。 課時(shí)九 進(jìn)程同步(三) 1.生產(chǎn)者消費(fèi)者問題 題 1.某工廠有兩個(gè)生產(chǎn)車間和一個(gè)裝配車間,兩個(gè)生產(chǎn)車間分別生產(chǎn)A,B兩種零件,裝配車間任務(wù)是把A,B兩種零件組裝成產(chǎn)品,兩個(gè)生產(chǎn)車間每生產(chǎn)一個(gè)零件后,都要分別把它們送到專配車間的貨架F1,F2上。F1 存放零件 A,F(xiàn)2存放零件 B,F(xiàn)1和F2的容量均可存放 10個(gè)零件。裝配工人每次從貨架上取一個(gè)零件 A和一個(gè)零件 B后組裝成產(chǎn)品。請(qǐng)用P,V操作進(jìn)行正確管理。 解析:本題是生產(chǎn)者-消費(fèi)者問題的變體,生產(chǎn)者“車間 A”和消費(fèi)者“裝配車間”共享緩沖區(qū)“貨架F1”;生產(chǎn)者“車間 B”和消費(fèi)者“裝配車間”共享緩沖區(qū)“貨架F2”。因此,可為它們?cè)O(shè)置 6個(gè)信號(hào)量:empty1 對(duì)應(yīng)貨架F1上的空閑空間,初值為10;full1? 對(duì)應(yīng)貨架F1上面的 A產(chǎn)品,初值為 0;empty2 對(duì)應(yīng)貨架F2上的空閑空間,初值為10;full2?對(duì)應(yīng)貨架F2上面的 B產(chǎn)品,初值為 0;mutex1 用于互斥地訪問貨架F1,初值為 1;mutex2 用于互斥地訪問貨架F2,初值為 1。 A 車間的工作過程可描述為:
while(1){
    生產(chǎn)一個(gè)產(chǎn)品 A; 
    P(empty1); //判斷貨架 F1 是否有空
    P(mutex1); //互斥訪問貨架 F1
    將產(chǎn)品 A 存放到貨架 F1 上;
    V(mutex1); //釋放貨架 
    F1 V(full1); //貨架 F1 上的零件 A 的個(gè)數(shù)加 1 
}

B車間的工作過程可描述為:

while(1){
    生產(chǎn)一個(gè)產(chǎn)品 B;
    P(empty2); //判斷貨架 F2 是否有空
    P(mutex2); //互斥訪問貨架 F2
    將產(chǎn)品 B 存放到貨架 F2 上;
    V(mutex2); //釋放貨架 F2 
    V(full2); //貨架 F2 上的零件 B 的個(gè)數(shù)加 1 
}
裝配車間的工作過程可描述為:
while(1){
    P(full1); //判斷貨架 F1 是否有產(chǎn)品 A
    P(mutex1); //互斥訪問貨架 F1
    從貨架 F1 上取一個(gè) A 產(chǎn)品;
    V(mutex1); //釋放貨架 F1 V(empty1); //貨架 F1 上的空閑空間數(shù)加 1
    P(full2); //判斷貨架 F2 是否有產(chǎn)品 B
    P(mutex2); //互斥訪問貨架 F2
    從貨架 F2 上取一個(gè) B 產(chǎn)品;
    V(mutex2); //釋放貨架 F2 
    V(empty2); //貨架 F2 上的空閑空間數(shù)加 1
    將取得的 A 產(chǎn)品和 B 產(chǎn)品組裝成成品;
}
2.讀者寫者問題 題 2.有橋如下圖所示,車流如箭頭所示,橋上不允許兩車交匯,但允許同方向多輛車依次通過(即橋上可以有多個(gè)同方向的車)。用P、V操作實(shí)現(xiàn)交通管理以防止橋上堵塞。

解析:這個(gè)題目要解決:南、北互斥(橋上不允許兩車交匯,相當(dāng)于“讀、寫互斥”),需要設(shè)置一個(gè)互斥信號(hào)量mutex,初值為 1;南、南共享(相當(dāng)于“讀、讀共享”),套用實(shí)現(xiàn)“讀、讀共享”的模式,需要設(shè)置一個(gè)共享變量southcount,用于記錄當(dāng)前橋上向南行駛過橋的車輛數(shù)目,初值為 0,再設(shè)置一個(gè)互斥信號(hào)量smutex,實(shí)現(xiàn)對(duì)southcount的互斥訪問;北、北共享(也相當(dāng)于“讀、讀共享”),套用實(shí)現(xiàn)“讀、讀共享”的模式,同理可得。
semaphore mutex = 1;// 作為橋的互斥訪問信號(hào)量
semaphore smutex = 1;// 作為 southcount 的互斥訪問信號(hào)量
semaphore nmutex = 1;// 作為 northcount 的互斥訪問信號(hào)量
int southcount = 0;// 記錄南方向的車輛的數(shù)量
int northcount = 0;// 記錄北方向的車輛的數(shù)量
void south(){
    while(true){
    wait(smutex);
    if(southcount == 0)
    wait(mutex);
    southcount++;
    signal(smutex);
// 南方車輛通過
    wait(smutex);
    southcount--;
    if(southcount == 0)
    signal(mutex);
    signal(smutex);
    }
}
void north()
{
    while(true){
    wait(nmutex);
    if(northcount == 0)
    wait(mutex);
    northcount++;
    signal(nmutex);
// 北方車輛通過
    wait(nmutex);
    northcount--;
    if(northcount == 0)
    signal(mutex);
    signal(nmutex);
    }
}
3.哲學(xué)家進(jìn)餐問題 題 1.有n(n>=3)名哲學(xué)家圍坐在一張圓桌邊,每名哲學(xué)家交替地就餐和思考。在圓桌中心有m(m>=1)個(gè)碗,每兩名哲學(xué)家之間有一根筷子。每名哲學(xué)家必須取到一個(gè)碗和兩側(cè)地筷子后,才能就餐,進(jìn)餐完畢,將碗和筷子放回原位,并繼續(xù)思考。為使盡可能多的哲學(xué)家同時(shí)就餐,且防止出現(xiàn)死鎖現(xiàn)象,請(qǐng)使用信號(hào)量的P,V操作[wait(),signal() 操作]描述上述過程中的互斥與同步,并說明所用信號(hào)量及初值的含義。 解析:回顧傳統(tǒng)的哲學(xué)家問題,假設(shè)餐桌上有 名哲學(xué)家、 根筷子,那么可以用這種方法避免死鎖:限制至多允許 n-1 名哲學(xué)家同時(shí)“搶”筷子,那么至少會(huì)有 1 名哲學(xué)家可以獲得兩根筷子并順利進(jìn)餐,于是不可能發(fā)生死鎖情況。 本題可以用碗這個(gè)限制資源來避免死鎖;當(dāng) 碗的數(shù)量 m小于哲學(xué)家的數(shù)量 n 時(shí),可以直接讓碗的資源量等于 m ,確保不會(huì)出現(xiàn)所有哲學(xué)家都拿一側(cè)筷子而無限等待另一側(cè)筷子進(jìn)而造成死鎖的情況;當(dāng) 碗的數(shù)量 m大于等于哲學(xué)家的數(shù)量 n 時(shí),為了讓碗起到同樣的限制效果,我們讓碗的資源量等于 n-1 ,這樣就能保證最多只有 n-1 名哲學(xué)家同時(shí)進(jìn)餐,所以得到 碗的資源量為min{n-1,m} 。在進(jìn)行PV操作時(shí),碗的資源量起限制哲學(xué)家取筷子的作用,所以需要先對(duì)碗的資源量進(jìn)行 P操作。具體過程如下:
semaphore bow1;
semaphore chopstick[n];
    for(int i=0;i

注:文章僅用于個(gè)人期末復(fù)習(xí),資料來源蜂考,侵刪。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


新聞標(biāo)題:OS-練習(xí)題(5~9)-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://weahome.cn/article/isgcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部