思考與練習(xí)題參考答案_第1頁
思考與練習(xí)題參考答案_第2頁
思考與練習(xí)題參考答案_第3頁
思考與練習(xí)題參考答案_第4頁
思考與練習(xí)題參考答案_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第1章操作系統(tǒng)概述思考與練習(xí)題參考答案1.選擇題(1)C(2)D(3)C(4)C (5) B (6) C (7) B (8) C (9) B (10) B (11) A2.填空題(1)硬件軟件(2)存儲管理設(shè)備管理(3)

軟硬件資源(4)批解決操作系統(tǒng)分時操作系統(tǒng)實時操作系統(tǒng)(5)20ms時間片輪轉(zhuǎn)調(diào)度算法3.判斷題(1)×(2)×(3)√(4)×(5)×(6).√(7)√(8)√4.問答題(1)簡述操作系統(tǒng)的概念答:操作系統(tǒng)是一組能控制和管理計算機系統(tǒng)的硬件和軟件資源,合理地組織計算機工作流程并為顧客使用計算機提供方便的程序和數(shù)據(jù)的集合。(2)什么是批解決系統(tǒng)?為什么要引入批解決系統(tǒng)?答:批解決系統(tǒng)指顧客的作業(yè)成批的解決,作業(yè)建立、過渡、完畢都自動由系統(tǒng)成批完畢。由于1958~1964年,晶體管時代,計算機速度、容量、外設(shè)品種和數(shù)量等方面和第一代計算機相比都有了很大發(fā)展,計算機速度有幾十倍、上百倍的提高,故使手工操作的慢速度和計算機運算的高速度之間形成一對矛盾。只有設(shè)法去掉人工干預(yù),實現(xiàn)作業(yè)自動過渡,這樣就出現(xiàn)了成批解決。(3)什么叫多道程序?試述多道程序涉及技術(shù)的基本思想及特性,為什么對作業(yè)進行多道批解決能夠提高系統(tǒng)效率?答:多道程序設(shè)計技術(shù)是在計算機內(nèi)存中同時寄存幾道互相獨立的程序,使它們在管理程序控制下,互相穿插交替運行。當(dāng)某道程序因某種因素不能繼續(xù)運行下去時,管理程序就將另一道程序投入運行,這樣使幾道程序在系統(tǒng)內(nèi)并行工作,可使中央解決機及外設(shè)盡量處在忙碌狀態(tài),從而大大提高計算機使用效率。在批解決系統(tǒng)中采用多道程序設(shè)計技術(shù)形成多道批解決系統(tǒng),多個作業(yè)成批送入計算機,由作業(yè)調(diào)度程序自動選擇作業(yè)運行,這樣提高了系統(tǒng)效率。(4)何為分時系統(tǒng)?簡述其特點。答:分時系統(tǒng)采用時間片輪轉(zhuǎn)法,使一臺計算機同時為多個終端服務(wù)。特點:多路性。若干個終端連接到計算機上,系統(tǒng)按分時原則為每個顧客服務(wù)。宏觀上多顧客同時工作,共享系統(tǒng)資源。微觀上,每個顧客作業(yè)輪流在CPU上運行。獨立性。各顧客獨立地使用一臺終端工作,彼此互不干擾。顧客感覺自己在獨占使用計算機。及時性。顧客的請求能在較短時間內(nèi)得到響應(yīng)。分時系統(tǒng)的響應(yīng)時間指顧客發(fā)出終端命令到系統(tǒng)響應(yīng),做出應(yīng)答所需要的時間。此時間需要在顧客能接受的范疇之內(nèi),普通為2至3秒。交互性。在分時系統(tǒng)中,顧客能與計算機進行對話,以交互的方式進行工作。顧客可聯(lián)機對文獻進行編輯,對源程序進行編譯、鏈接,對程序進行調(diào)試,運行程序等活動。(5)分時系統(tǒng)和實時系統(tǒng)有何不同?答:分時系統(tǒng)控制的主動權(quán)在計算機,計算機按一定時間間隔,以固定時間片或不固定時間片去輪流完畢多個提交的任務(wù),只是在顧客反映相對較慢時,不感到機器“走開”。而實時系統(tǒng)控制的主動權(quán)在顧客,顧客規(guī)定什么時間要計算機干什么,計算機不能“走開”。分時系統(tǒng)通用性強,交互性強,及時響應(yīng)性規(guī)定普通(普通數(shù)量級為秒);實時系統(tǒng)往往是專用的,系統(tǒng)與應(yīng)用很難分離,經(jīng)常緊密結(jié)合在一起,實時系統(tǒng)并不強調(diào)資源運用率,而更關(guān)心及時響應(yīng)性(普通數(shù)量級為毫秒或微秒)、可靠性等。(6)實現(xiàn)多道程序解決哪些問題?答:首先涉及分時使用硬件的硬件設(shè)計技術(shù):CPU和通道分時使用內(nèi)存、只讀存儲器和數(shù)據(jù)通道等;通道與通道分時使用CPU、內(nèi)存、通道的公用控制部分等;同一通道中的I/O又分時使用內(nèi)存、通道等。另首先涉及共享硬件和軟件資源的軟件設(shè)計技術(shù):涉及引入“進程”“線程”等技術(shù)。(7)設(shè)在內(nèi)存中有三道程序A、B和C,并按A、B、C的優(yōu)先次序運行,其在CPU上運行時間以及I/O時間分別為: A:計算30ms,I/O40ms,計算10ms B:計算30ms,I/O50ms,計算10ms C:計算20ms,I/O40ms,計算20msCPUI/O0102030405060708090100110120130140150160170180CPUI/O0102030405060708090100110120130140150160170180t/msABCA空閑B空閑C圖1-1三道作業(yè)并發(fā)運行狀況答:三道程序共花180ms,比單道(80+90+80)ms=250ms節(jié)省了110ms。(8)簡述Winodws操作系統(tǒng)的發(fā)展歷史。(略)(9)簡述Linux操作系統(tǒng)的發(fā)展歷史。(略)(10)簡述UNIX系統(tǒng)操作系統(tǒng)的發(fā)展歷史。(略)第2章解決器管理思考與練習(xí)題參考答案1.選擇題(1)A(2) D (3)B (4)C (5)D (6)D (7)C (8)B(9)D (10)C (11) D (12)A (13)C (14) D (15)B (16)D2.填空題(1)數(shù)據(jù)段 PCB(2)運行時間短 等待時間長(3)并行 并發(fā)。(4)資源分派 調(diào)度(5)阻塞(6)共享存儲區(qū) 消息機制(7)阻塞(8)向前推動。(9)后備(10)可剝奪 非剝奪3.判斷題(1)√ (2)× (3)√ (4)× (5)× (6)× (7)× (8)×(9)√ (10)√ (11)× (12)× (13)× (14)× (15)× 4.問答題(1)簡述進程和程序之間的區(qū)別和聯(lián)系。答:進程和程序是現(xiàn)有區(qū)別又有聯(lián)系的兩個概念。 1)進程是動態(tài)的,程序是靜態(tài)的。程序是一組有序的指令集合,是一種靜態(tài)的概念;進程則是程序及其數(shù)據(jù)在計算機上的一次執(zhí)行,是一種動態(tài)的集合。離開了程序,進程就失去了存在的意義,但同一程序在計算機上的每次運行將構(gòu)成不同的進程。程序可看作是電影的膠片,進程能夠看作電影院放電影的過程。 2)一種進程能夠執(zhí)行多個程序,猶如一種電影院的一場電影可放映多部影片。 3)一種程序可被多個進程執(zhí)行,猶如多個影院同時運用一種電影的膠片放映同一部電影。 4)程序能夠長久保存,進程只能存在于一段時間。程序是永久存在的,而進程有從被創(chuàng)立到消亡的生命周期。(2)為什么將進程劃分成運行、就緒和阻塞三個基本狀態(tài)?答:根據(jù)多道程序執(zhí)行的特點,進程的運行是走走停停的。因此進程的初級狀態(tài)應(yīng)當(dāng)是執(zhí)行和等待狀態(tài)。處在執(zhí)行狀態(tài)的進程占用解決機執(zhí)行程序,處在等待狀態(tài)的進程正在等待解決機或者等待其它某種事件的發(fā)生。但是,當(dāng)解決機空閑時,并不是全部處在等待狀態(tài)的進程都能放到解決機上執(zhí)行,有的進程即使分派給它解決機,它也不能執(zhí)行,由于它的執(zhí)行的條件沒有得到滿足。因此,將等待狀態(tài)的進程分成兩部分,一部分是放在解決機上就能立刻執(zhí)行,這就是就緒的進程;另一部分是仍需等某種事件發(fā)生的進程,即使放在解決機上也不能執(zhí)行的進程,這就是阻塞進程。(3)進程控制塊PCB的作用是什么?它重要包含哪些內(nèi)容?答:操作系統(tǒng)管理的進程是多個多樣的,要對這些進程實施有效的管理,必須對進程進行抽象。為了便于系統(tǒng)控制和描述進程的活動,在操作系統(tǒng)核心為進程定義了一種進程控制塊PCB。PCB用于描述進程的基本狀況以及進程運行和變化的過程,它與進程一一對應(yīng)。當(dāng)系統(tǒng)創(chuàng)立進程時,為進程分派一種PCB;在進程運行過程中,系統(tǒng)通過PCB對進程實施管理和控制;進程結(jié)束時,系統(tǒng)將收回PCB。PCB中的內(nèi)容重要涉及調(diào)度信息和現(xiàn)場信息兩大部分。調(diào)度信息涉及進程名、進程號、優(yōu)先級、現(xiàn)在狀態(tài)、資源信息、程序和數(shù)據(jù)的位置信息、附屬關(guān)系和多個隊列指針信息等。現(xiàn)場信息重要涉及程序狀態(tài)字、時鐘寄存器和界限寄存器等描述進程運行狀況的信息。(4)簡述創(chuàng)立進程的大致過程解創(chuàng)立一種進程大致分下列幾步:1)申請一種空白的PCB和唯一的進程標(biāo)記號pid2)為新進程分派除CPU以外的資源,涉及內(nèi)存空間;3)初始化PCB中的數(shù)據(jù)項,涉及標(biāo)志信息、狀態(tài)信息、控制信息等;4)將新進程的PCB插入系統(tǒng)的就緒隊列。(5)為什么引入線程?線程與進程的關(guān)系是什么?答:在操作系統(tǒng)中引入進程的目的,是為了使多個程序并發(fā)執(zhí)行,以改善資源運用率及提高系統(tǒng)的吞吐量;那么,在操作系統(tǒng)中再引入線程則是為了減少程序并發(fā)執(zhí)行時所付出的時空開銷,使操作系統(tǒng)含有更加好的并發(fā)性。線程含有許多傳統(tǒng)進程所含有的特性,故又稱為輕型進程(Light-WeightProcess)或進程元;而把傳統(tǒng)的進程稱為重型進程(Heavy-WeightProcess),它相稱于只有一種線程的任務(wù)。在引入了線程的操作系統(tǒng)中,普通一種進程都有若干個線程,最少需要有一種線程。(6)何謂進程通信?試列舉幾個進程通信方式。答:進程之間的信息交換,就是進程通信。進程同時與互斥,就實現(xiàn)了進程之間交換信息,但由于交換的信息量少,能夠看作是低檔通信。并發(fā)執(zhí)行的進程,有交換信息的多個需要,除同時與互斥外,還可采用其它的通信方式。介紹幾個慣用的通信方式:共享存儲、消息傳遞、共享文獻。(7)2運行2運行就緒阻塞1341)什么事件引發(fā)各狀態(tài)之間的變遷?2)系統(tǒng)中經(jīng)常由于某一進程的狀態(tài)變遷引發(fā)另一進程也產(chǎn)生狀態(tài)變遷,試判斷變遷3——1、2——1、3——2、4——1、3——4與否存在因果關(guān)系?答:1)引發(fā)各變遷的事件以下:變遷1:正在執(zhí)行的進程從解決機上退下,造成進程調(diào)度程序從就緒狀態(tài)的進程中選用一種進程。變遷2:正在執(zhí)行的進程所分派的時間片用完,造成進程從解決機上退到就緒狀態(tài);或者在可搶占優(yōu)先級的進程調(diào)度中,有更高有先級的進程進入就緒狀態(tài),造成正在執(zhí)行的進程從執(zhí)行狀態(tài)退到就緒狀態(tài)。變遷3:進程需要等待事件的發(fā)生;變遷4:進程所等待的某事件發(fā)生了(如I/O完畢);2)可能發(fā)生的因果變遷3——1:由于處在運行狀態(tài)的進程轉(zhuǎn)入阻塞狀態(tài),進程調(diào)度程序根據(jù)調(diào)度算法,又從就緒隊列中選擇一種進程投入運行;2——1:由于處在運行狀態(tài)的進程時間片用完,重新轉(zhuǎn)入就緒狀態(tài),從而使進程調(diào)度程序又從就緒隊列中選擇一種進程投入運行;3——2:此種變化不存在;4——1:4的發(fā)生與1的發(fā)生沒有必然關(guān)系;3——4:3的發(fā)生和4的發(fā)生沒有必然關(guān)系。(8)下表給出了4個作業(yè)J1、J2、J3、J4的提交時間、運行時間,試分別采用FCFS、SJF和HRRF調(diào)度算法,求出在多個作業(yè)調(diào)度算法下作業(yè)的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間。表14個作業(yè)的提交時間和運行時間表作業(yè)名提交時間運行時間/hJ110:002J210:181J310:480.5J411:000.8解:采用FCFS作業(yè)調(diào)度算法時,根據(jù)這4個作業(yè)提交作業(yè)的先后次序依次運行,每個作業(yè)的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間如表2所示。表2FCFS調(diào)度算法性能表作業(yè)名提交時間運行時間/h開始時間完畢時間周轉(zhuǎn)時間/h帶權(quán)周轉(zhuǎn)時間J110:00210:0012:0021J210:18112:0013:002.72.7J310:480.513:0013:302.75.4J411:000.813:3014:183.34.125作業(yè)的平均周轉(zhuǎn)時間=(2+2.7+2.7+3.3)h/4=2.675h作業(yè)的平均帶權(quán)周轉(zhuǎn)時間=(1+2.7+5.4+4.125)/4=3.30625采用SJF作業(yè)調(diào)度算法時,每個作業(yè)的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間如表3所示。表3SJF調(diào)度算法性能表作業(yè)名提交時間運行時間/h開始時間完畢時間周轉(zhuǎn)時間/h帶權(quán)周轉(zhuǎn)時間J110:00210:0012:0021J210:18113:1814:1844J310:480.512:0012:301.73.4J411:000.812:3013:182.32.875作業(yè)的平均周轉(zhuǎn)時間=(2+4+1.7+2.3)h/4=2.5h作業(yè)的平均帶權(quán)周轉(zhuǎn)時間=(1+4+3.4+2.875)/4=2.81875采用HRRF作業(yè)調(diào)度算法時,每個作業(yè)的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間如表4所示。當(dāng)時間為10:00時,僅有作業(yè)J1,J1先運行。當(dāng)作業(yè)J1結(jié)束后,此時系統(tǒng)中存在3個作業(yè),計算這3個作業(yè)J2、J3、J4的響應(yīng)比,分別為2.7、3.4、2.25。作業(yè)J3的響應(yīng)比高,作業(yè)J3運行。當(dāng)作業(yè)J3結(jié)束后,系統(tǒng)中剩余2個作業(yè),計算這2個作業(yè)J2、J4的響應(yīng)比,分別為3.2、2.875。作業(yè)J2的響應(yīng)比高,運行作業(yè)J2。作業(yè)J2運行結(jié)束后,運行作業(yè)J4。表4HRRF調(diào)度算法性能表作業(yè)名提交時間運行時間/h開始時間完畢時間周轉(zhuǎn)時間/h帶權(quán)周轉(zhuǎn)時間J110:00210:0012:0021J210:18112:3013:303.23.2J310:480.512:0012:301.73.4J411:000.813:3014:183.34.125作業(yè)的平均周轉(zhuǎn)時間=(2+3.2+1.7+3.3)h/4=2.55h作業(yè)的平均帶權(quán)周轉(zhuǎn)時間=(1+3.2+3.4+4.125)/4=2.93125(9)引發(fā)進程調(diào)度的重要因素重要有哪些?答:1)一種進程運行完畢;2)一種正在運行的進程被阻塞;3)在搶占式調(diào)度中,一種高優(yōu)先級的進程被創(chuàng)立;4)在搶占式調(diào)度中,一種高優(yōu)先級進程由阻塞被喚醒;5)在輪轉(zhuǎn)式調(diào)度中,正在運行的進程運行完一種時間片。第3章進程同時與死鎖思考與練習(xí)題參考答案1.選擇題(1)C (2)A (3)C (4)B,A (5) B,D (6)A (7)A (8)B(9)B (10)C (11)D (12)B (13)A (14)D (15)D (16)A(17)B (18)A2.填空題(1)環(huán)路等待條件。(2)臨界資源。(3)P、V 等待(4)可用資源數(shù)目 等待該資源的進程數(shù)。(5)等待(6)P V(7)進程 (8)安全 不安全(9)信箱頭 信箱體(10)低檔 高級3.判斷題(1)√ (2)× (3)√ (4)√ (5)√ (6)× (7)× (8)√ (9)× (10)× (11)√ (12)×4.問答題與計算分析題(1)在多道程序系統(tǒng)中程序的執(zhí)行失去了封閉性和再現(xiàn)性,因此多道程序的執(zhí)行不需要這些特性,這種說法與否對的?答:這種說法不對的。能夠想象,如果一種程序在多道程序系統(tǒng)中,在相似的輸入的狀況下,多次執(zhí)行所得成果是不同的,有誰還敢使用這個程序?因此,多道程序的執(zhí)行也需要封閉性和再現(xiàn)性,只但是單道程序系統(tǒng)的封閉性和再現(xiàn)性是先天固有的,多道程序系統(tǒng)的程序執(zhí)行要想獲得封閉性和再現(xiàn)性,需通過程序員的精心設(shè)計才干得到。所使用的辦法就是同時和互斥的辦法。(2)多個進程對信號量S進行了5次P操作,2次V操作后,現(xiàn)在信號量的值是-3,與信號量S有關(guān)的處在阻塞狀態(tài)的進程有幾個?信號量的初值是多少?解:由于S的現(xiàn)在值是-3,因此由于S處在阻塞狀態(tài)的進程有3個;由于每進行一次P(S)操作,S的值都減1,每執(zhí)行1次V操作S的值加1,故信號量的初值為-3+5-2=0;(3)設(shè)公共汽車上,司機和售票員的活動分別為:司機的活動為啟動車輛,正常行車,到站停車;售票員的活動為關(guān)車門,售票,開車門。試問:在汽車不停地到站、停車、行駛過程中,司機和售票員的活動是同時關(guān)系還是互斥關(guān)系?并用信號量和P、V操作實現(xiàn)他們間的協(xié)調(diào)操作。解:在這個問題中,司機與售票員間是并行操作的,司機和售票員各自的操作是次序進行的。因此司機是一種進程,售票員是一種進程,它們之間是合作關(guān)系,即同時關(guān)系。根據(jù)普通常識,司機和售票員在車上的操作規(guī)則以下:售票員操作的規(guī)則是只有司機停車后,售票員才干開門讓乘客上下車;司機操作的規(guī)則是只有售票員關(guān)門后,司機才干啟動開始行駛汽車。根據(jù)同時規(guī)則以及操作流程擬定信號量的個數(shù)是2個,S1和S2。S1的含義與否關(guān)門,其初值為0,表達開門,其值若為1表達關(guān)門;S2的含義與否停車,其初值為1,表達停車,其值若為0表達開車。司機在的操作:在開車前看與否關(guān)門?若沒關(guān)則等待,這是一種P(S1)操作;若門關(guān),則開車。達成一種站點,則停車,這是一種V(S2)操作;售票員的操作:看與否停車?若沒停則等待,這是一種P(S2)操作;若停則開門,這是一種V(S1)操作。司機與售票員的協(xié)調(diào)操作描述以下:intS1=0;intS2=1;main(){cobegindriver();busman();coend}driver(){while(1){P(S1);啟動車輛;正常行車;到站停車;V(S2);}}busserver(){while(1){關(guān)車門;V(S1);售票;P(S2);開車門;上下乘客;}}(4)在OS中引入管程的目的是什么?答:在OS中引入管程的目的是為了更簡便、更可靠地解決進程之間的同時、互斥問題。在未引入管程之間,進程間的同時、互斥問題是由程序員解決的。例如,在臨界區(qū)的前后插入P、V操作。但是,由程序員解決同時、互斥問題有可能引入種種人為的錯誤。管程重要是管理對共享數(shù)據(jù)的操作和使用,即把對共享數(shù)據(jù)互斥使用的控制這一任務(wù)從程序員身上,交由編譯程序去解決,這樣既方便了編程,又不會產(chǎn)生人為的同時、互斥上的錯誤。(5)一售票廳只能容納300人,當(dāng)少于300人時,能夠進入;否則,需在外等待。若將每一種購票者作為一種進程,請用P、V操作編程,并寫出信號量的初值。解:信號量S的初值為300;intS=300main(){P1();P2();……Pn();}P1(){P(S);進入售票廳;購票;退出售票廳;V(S);}……Pn(){P(S);進入售票廳;購票;退出售票廳;V(S);}A進程CSAV(S1)P(S2)B進程P(S1)CSBA進程CSAV(S1)P(S2)B進程P(S1)CSBV(S2)圖3-11第(6)題圖Txh解:該算法有錯。若A進程永不規(guī)定訪問臨界資源,則不會執(zhí)行V(S1),意味著B進程的申請永遠得不到操作臨界資源的機會;同理,若B進程不規(guī)定訪問臨界資源,則不會執(zhí)行V(S2),意味著A進程下次也得不到操作臨界資源的機會。因此問題在于本應(yīng)進行互斥控制而使用的卻是同時控制。實現(xiàn)改正以下:A進程P(muyex)A進程P(muyex)CSAV(mutex)B進程P(mutex)CSBV(mutex)第(6)題改正圖Txh(7)消息緩沖通信機制有什么好處?試述消息緩沖通信的過程。解消息緩沖通信機制不僅能較好地解決進程間的同時互斥問題,還能交換大量信息,是抱負的進程通信工具,并且操作系統(tǒng)隱藏了進程通信的實現(xiàn)細節(jié),即通信過程對顧客是透明的,這樣就大大地簡化了通信程序編制上的復(fù)雜性。消息緩沖通信的過程以下:當(dāng)某個進程需要向另一種進程發(fā)送消息時,便向系統(tǒng)申請一種消息緩沖區(qū),并把要發(fā)送的數(shù)據(jù)送到消息緩沖區(qū),然后把該消息緩沖區(qū)插入到接受進程的消息隊列中。接受進程在接受消息時,只要從本進程的消息隊列中摘下該消息緩沖區(qū),即可從中取下所需的信息,然后把該消息緩沖區(qū)交還給系統(tǒng)。(8)桌上有一空盤,只允許寄存一種水果。父親可向盤中放蘋果,也可向盤中放桔子。兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規(guī)定當(dāng)盤中空時一次只能放一只水果供吃者取用,請用P、V原語實現(xiàn)父親、兒子、女兒三個并發(fā)進程的同時。解在本題中,應(yīng)設(shè)立三個信號量S、So、Sa,信號量S表達盤子與否為空,其初值為1;信號量So表達盤中與否有桔子,其初值為0;信號量Sa表達盤中與否有蘋果,其初值為0。同時描述以下:intS=1;intSa=0;intSo=0;main(){cobeginfather();son();daughter();coend}father(){while(1){P(S);將水果放入盤中;if(放入的是桔子)V(So);elseV(Sa);}}son(){while(1){P(So);從盤中取出桔子;V(S);吃桔子;}}daughter(){while(1){P(Sa);從盤中取出蘋果;V(S);吃蘋果;}}(9)按序分派是避免死鎖的一種方略。什么是按序分派?為什么按序分派能夠避免死鎖?解按序分派是適應(yīng)于動態(tài)分派的一種分派辦法。為了避免產(chǎn)生死鎖,系統(tǒng)將全部資源進行編號,并規(guī)定進程請求資源時,嚴格按照設(shè)備編號的大小,例如由小到大的次序進程申請。如果某進程第n號資源沒有獲得,則進程不能請求第j(j>n)號資源。(系統(tǒng)也能夠規(guī)定由大到小的請求次序。)由于按序分派能夠破壞環(huán)路等待條件,因此能夠避免死鎖。(10)有四個進程(P1,P2,P3和P4)和三類資源(R1,R2和R3)在T0時刻的資源分派狀況如表3-9所示,(1)檢查此刻的系統(tǒng)狀態(tài)與否安全。(2)若在T0時刻之后,進程P3發(fā)出資源請求(1,0,1),即P3申請一種單位的R1和一種單位的R3,系統(tǒng)能否將資源分派給P3呢?表3-9T0時刻的資源分派表資源進程MaxAllocationNeedAvailableR1R2R3R1R2R3R1R2R3R1R2R3P1322100222112P2613511102P3314211103P4422002420解:(1)從表1分析可知,可用資源數(shù)能滿足進程P2,當(dāng)P2運行結(jié)束后,釋放它所占有的資源,使可用資源數(shù)目變?yōu)?6,2,3)。此刻,可用資源可滿足其它任一進程,若將可用資源分派給進程P1,P1結(jié)束后,可用資源數(shù)變?yōu)?7,2,3)。再將可用資源分派給進程P3,P3結(jié)束后,可用資源數(shù)變?yōu)?9,3,4)。最后將可用資源分派給進程P4,P4結(jié)束后,可用資源數(shù)變?yōu)?9,3,6)。因此,系統(tǒng)在T0時刻是安全的。(2)由于P3請求資源數(shù)(1,0,1)不大于可用資源數(shù)(1,1,2),因此現(xiàn)有資源能滿足P3的規(guī)定。系統(tǒng)先假定為P3分派資源,則可用資源數(shù)變?yōu)?0,1,1)。修改有關(guān)數(shù)據(jù),如表2所示。表P3申請資源后的資源分派表資源進程MaxAllocationNeedAvailableR1R2R3R1R2R3R1R2R3R1R2R3P1322100222011P2613511102P3314312002P4422002420此刻,可用資源數(shù)(0,1,1)無法滿足任一種進程的需要,故系統(tǒng)進入不安全狀態(tài),因此,系統(tǒng)不能為P3分派資源。(11)運用管程解決生產(chǎn)者與消費者問題。 解:下面以Hansen辦法解決生產(chǎn)者和消費者問題。 monitorboundbuffer /*定義管程,其名稱為boundbuffer*/{ charbuffer[N]; /*緩沖區(qū)有N個空間*/intnextin,nextout; /*緩沖區(qū)指針,將緩沖區(qū)的N個空間看作環(huán)形*/intcount; /*產(chǎn)品的數(shù)目*/conditionnotfull,notempty; /*同時條件變量*/ voidappend(char*x) /*管程中的過程*/{ if(count==N)cwait(notfull); /*緩沖區(qū)滿,等待緩沖區(qū)空的信號*/ buffer[nextin]=*x; /*將產(chǎn)品放入緩沖區(qū)中*/ nextin=(nextin+1)%N; /*調(diào)節(jié)入隊指針*/ count++; /*產(chǎn)品個數(shù)加1*/ csignal(notempty); /*向消費者進程發(fā)信號,有產(chǎn)品可供消費*/ }voidtake(char*x) { if(count==0)thencwait(notempty);/*沒有產(chǎn)品,需要等待*/ *x=buffer[nextout]; /*取產(chǎn)品*/ nextout=(nextout+1)%N; /*修改隊尾指針*/ count--; /*產(chǎn)品個數(shù)減1*/ csignal(notfull); /*向生產(chǎn)者進程發(fā)信號,有空閑區(qū)了*/ }monitor_main() /*管程初始化程序*/{ nextin=0;nextout=0;count=0;} }/*管程定義結(jié)束*/voidproducer(inti) /*生產(chǎn)者進程*/{ charx; while(1){ produce(x); /*生產(chǎn)產(chǎn)品*/ append(&x);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論