操作系統(tǒng)第三版課后復(fù)習(xí)題答案2.doc_第1頁
操作系統(tǒng)第三版課后復(fù)習(xí)題答案2.doc_第2頁
操作系統(tǒng)第三版課后復(fù)習(xí)題答案2.doc_第3頁
操作系統(tǒng)第三版課后復(fù)習(xí)題答案2.doc_第4頁
操作系統(tǒng)第三版課后復(fù)習(xí)題答案2.doc_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章os引論1. 設(shè)計現(xiàn)代OS的主要目標(biāo)是什么?方便性,有效性,可擴(kuò)充性和開放性. 2. OS的作用可表現(xiàn)為哪幾個方面?a. OS作為用戶與計算機(jī)硬件系統(tǒng)之間的接口;b. OS作為計算機(jī)系統(tǒng)資源的管理者;c. OS作為擴(kuò)充機(jī)器. 4. 試說明推動多道批處理系統(tǒng)形成和發(fā)展的主要動力是什么?不斷提高計算機(jī)資源利用率和系統(tǒng)吞吐量的需要; 5.何謂脫機(jī)I/O和聯(lián)機(jī)I/O?a. 脫機(jī)輸入輸出方式(Off-Line I/O)是為了解決人機(jī)矛盾及CPU和I/O設(shè)備之間速度不匹配而提出的.它減少了CPU的空閑等待時間,提高了I/O速度.具體內(nèi)容是將用戶程序和數(shù)據(jù)在一臺外圍機(jī)的控制下,預(yù)先從低速輸入設(shè)備輸入到磁帶上,當(dāng)CPU需要這些程序和數(shù)據(jù)時,在直接從磁帶機(jī)高速輸入到內(nèi)存,從而大大加快了程序的輸入過程,減少了CPU等待輸入的時間,這就是脫機(jī)輸入技術(shù);當(dāng)程序運(yùn)行完畢或告一段落,CPU需要輸出時,無需直接把計算結(jié)果送至低速輸出設(shè)備,而是高速把結(jié)果輸出到磁帶上,然后在外圍機(jī)的控制下,把磁帶上的計算結(jié)果由相應(yīng)的輸出設(shè)備輸出,這就是脫機(jī)輸出技術(shù).b. 若這種輸入輸出操作在主機(jī)控制下進(jìn)行則稱之為聯(lián)機(jī)輸入輸出方式. 6.試說明推動分時系統(tǒng)形成和發(fā)展的主要動力是什么?用戶的需要.即對用戶來說,更好的滿足了人-機(jī)交互,共享主機(jī)以及便于用戶上機(jī)的需求.7. 實現(xiàn)分時系統(tǒng)的關(guān)鍵問題是什么?應(yīng)如何解決?a. 關(guān)鍵問題:及時接收,及時處理;b. 對于及時接收,只需在系統(tǒng)中設(shè)置一多路卡,多路卡作用是使主機(jī)能同時接收用戶從各個終端上輸入的數(shù)據(jù);-對于及時處理,應(yīng)使所有的用戶作業(yè)都直接進(jìn)入內(nèi)存,在不長的時間內(nèi),能使每個作業(yè)都運(yùn)行一次. 8 為什么要引入實時操作系統(tǒng)? 更好地滿足實時控制領(lǐng)域和實時信息處理領(lǐng)域的需要.12 試從交互性,及時性和可靠性方面,將分時系統(tǒng)與實時系統(tǒng)進(jìn)行比較.a. 分時系統(tǒng)是一種通用系統(tǒng),主要用于運(yùn)行終端用戶程序,因而它具有較強(qiáng)的交互能力;而實時系統(tǒng)雖然也有交互能力,但其交互能力不及前者.b. 實時信息系統(tǒng)對實用性的要求與分時系統(tǒng)類似,都是以人所能接收的等待時間來確定;而實時控制系統(tǒng)的及時性則是以控制對象所要求的開始截止時間和完成截止時間來確定的.c. 實時系統(tǒng)對系統(tǒng)的可靠性要求要比分時系統(tǒng)對系統(tǒng)的可靠性要求高.13 OS具有哪幾大特征?它的最基本特征是什么?a. 并發(fā)(Concurrence),共享(Sharing),虛擬(Virtual),異步性(Asynchronism).b. 其中最基本特征是并發(fā)和共享.14 處理機(jī)管理具有哪些功能?它們的主要任務(wù)是什么?a. 進(jìn)程控制,進(jìn)程同步,進(jìn)程通信和調(diào)度.b. 進(jìn)程控制的主要任務(wù)是為作業(yè)創(chuàng)建進(jìn)程,撤銷已結(jié)束的進(jìn)程,以及控制進(jìn)程在運(yùn)行過程中的狀態(tài)轉(zhuǎn)換.-進(jìn)程同步的主要任務(wù)是對諸進(jìn)程的運(yùn)行進(jìn)行調(diào)節(jié).-進(jìn)程通信的任務(wù)是實現(xiàn)在相互合作進(jìn)程之間的信息交換.-調(diào)度分為作業(yè)調(diào)度和進(jìn)程調(diào)度.作業(yè)調(diào)度的基本任務(wù)是從后備隊列中按照一定的算法,選擇出若干個作業(yè),為它們分配必要的資源;而進(jìn)程調(diào)度的任務(wù)是從進(jìn)程的就緒隊列中,按照一定的算法選出一新進(jìn)程,把處理機(jī)分配給它,并為它設(shè)置運(yùn)行現(xiàn)場,是進(jìn)程投入運(yùn)行. 15 內(nèi)存管理有哪些主要功能?它們的主要任務(wù)是什么?a. 主要功能: 內(nèi)存分配,內(nèi)存保護(hù),地址映射和內(nèi)存擴(kuò)充等.b. 內(nèi)存分配的主要任務(wù)是為每道程序分配內(nèi)存空間,提高存儲器利用率,以減少不可用的內(nèi)存空間,允許正在運(yùn)行的程序申請附加的內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)動態(tài)增長的需要.-內(nèi)存保護(hù)的主要任務(wù)是確保每道用戶程序都在自己的內(nèi)存空間中運(yùn)行,互不干擾.-地址映射的主要任務(wù)是將地址空間中的邏輯地址轉(zhuǎn)換為內(nèi)存空間中與之對應(yīng)的物理地址.-內(nèi)存擴(kuò)充的主要任務(wù)是借助虛擬存儲技術(shù),從邏輯上去擴(kuò)充內(nèi)存容量. 16 設(shè)備管理有哪些主要功能?其主要任務(wù)是什么?a. 主要功能: 緩沖管理,設(shè)備分配和設(shè)備處理,以及虛擬設(shè)備等.b. 主要任務(wù): 完成用戶提出的I/O請求,為用戶分配I/O設(shè)備;提高CPU和I/O設(shè)備的利用率;提高I/O速度;以及方便用戶使用I/O設(shè)備. 17 文件管理有哪些主要功能?其主要任務(wù)是什么?a. 主要功能: 對文件存儲空間的管理,目錄管理,文件的讀,寫管理以及文件的共享和保護(hù).b. 主要任務(wù): 對用戶文件和系統(tǒng)文件進(jìn)行管理,以方便用戶使用,并保證文件的安全性.18 是什么原因使操作系統(tǒng)具有異步性特征?a. 程序執(zhí)行結(jié)果是不確定的,即程序是不可再現(xiàn)的.b. 每個程序在何時執(zhí)行,多個程序間的執(zhí)行順序以及完成每道程序所需的時間都是不確定的,即不可預(yù)知性. 第二章2. 試畫出下面條語句的前趨圖:S1: a=5-x; S2: b=a*x; S3: c=4*x; S4: d=b+c; S5: e=d+3.S1-S2-S4-S5./.S3 3. 程序并發(fā)執(zhí)行為什么會產(chǎn)生間斷性?因為程序在并發(fā)執(zhí)行過程中存在相互制約性. 4. 程序并發(fā)執(zhí)行為什么會失去封閉性和可再現(xiàn)性?因為程序并發(fā)執(zhí)行時,多個程序共享系統(tǒng)中的各種資源,資源狀態(tài)需要多個程序來改變,即存在資源共享性使程序失去封閉性;而失去了封閉性導(dǎo)致程序失去可再現(xiàn)性. 5. 在操作系統(tǒng)中為什么要引入進(jìn)程概念?它會產(chǎn)生什么樣的影響?為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并能對并發(fā)執(zhí)行的程序加以控制和描述,而引入了進(jìn)程概念.影響: 使程序的并發(fā)執(zhí)行得以實行. 6. 試從動態(tài)性,并發(fā)性和獨立性上比較進(jìn)程和程序?a. 動態(tài)性是進(jìn)程最基本的特性,可表現(xiàn)為由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,因得不到資源而暫停執(zhí)行,以及由撤銷而消亡,因而進(jìn)程由一定的生命期;而程序只是一組有序指令的集合,是靜態(tài)實體.b. 并發(fā)性是進(jìn)程的重要特征,同時也是OS的重要特征.引入進(jìn)程的目的正是為了使其程序能和其它進(jìn)程的程序并發(fā)執(zhí)行,而程序是不能并發(fā)執(zhí)行的.c. 獨立性是指進(jìn)程實體是一個能獨立運(yùn)行的基本單位,同時也是系統(tǒng)中獨立獲得資源和獨立調(diào)度的基本單位.而對于未建立任何進(jìn)程的程序,都不能作為一個獨立的單位參加運(yùn)行. 7. 試說明PCB的作用?為什么說PCB是進(jìn)程存在的唯一標(biāo)志?a. PCB是進(jìn)程實體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu).PCB中記錄了操作系統(tǒng)所需的用于描述進(jìn)程情況及控制進(jìn)程運(yùn)行所需的全部信息.因而它的作用是使一個在多道程序環(huán)境下不能獨立運(yùn)行的程序(含數(shù)據(jù)),成為一個能獨立運(yùn)行的基本單位,一個能和其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程.b. 在進(jìn)程的整個生命周期中,系統(tǒng)總是通過其PCB對進(jìn)程進(jìn)行控制,系統(tǒng)是根據(jù)進(jìn)程的PCB而不是任何別的什么而感知到該進(jìn)程的存在的,所以說,PCB是進(jìn)程存在的唯一標(biāo)志. 8. 試說明進(jìn)程在三個基本狀態(tài)之間轉(zhuǎn)換的典型原因.a. 處于就緒狀態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序為之分配了處理機(jī)后,該進(jìn)程便由就緒狀態(tài)變?yōu)閳?zhí)行狀態(tài).b. 當(dāng)前進(jìn)程因發(fā)生某事件而無法執(zhí)行,如訪問已被占用的臨界資源,就會使進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài).c. 當(dāng)前進(jìn)程因時間片用完而被暫停執(zhí)行,該進(jìn)程便由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài).9. 為什么要引入掛起狀態(tài)?該狀態(tài)具有哪些性質(zhì)?a. 引入掛起狀態(tài)處于5中需要: 終端用戶的需要,父進(jìn)程的需要,操作系統(tǒng)的需要,對換的需要和負(fù)荷調(diào)節(jié)的需要.b. 處于掛起狀態(tài)的進(jìn)程不能接收處理機(jī)調(diào)度. 10 在進(jìn)行進(jìn)程切換時,所要保存的處理機(jī)狀態(tài)信息主要有哪些?a. 進(jìn)程當(dāng)前暫存信息;b. 下一條指令地址信息;c. 進(jìn)程狀態(tài)信息;d. 過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址信息. 11 試說明引起進(jìn)程創(chuàng)建的主要事件.a. 用戶登陸;b. 作業(yè)調(diào)度;c. 提供服務(wù);d. 應(yīng)用請求. 12 試說明引起進(jìn)程撤消的主要事件.a. 正常結(jié)束;b. 異常結(jié)束;c. 外界干預(yù); 13 在創(chuàng)建一個進(jìn)程時,需完成的主要工作是什么?a. 操作系統(tǒng)發(fā)現(xiàn)請求創(chuàng)建新進(jìn)程事件后,調(diào)用進(jìn)程創(chuàng)建原語Creat();b. 申請空白PCB;c. 為新進(jìn)程分配資源;d. 初始化進(jìn)程控制塊;e. 將新進(jìn)程插入就緒隊列. 14 在撤消一個進(jìn)程時,需完成的主要工作是什么?a. OS調(diào)用進(jìn)程終止原語;b. 根據(jù)被終止進(jìn)程的標(biāo)志符,從PCB集合中檢索出該進(jìn)程的PCB,從中讀出該進(jìn)程的狀態(tài);c. 若被終止進(jìn)程正處于執(zhí)行狀態(tài),應(yīng)立即中止該進(jìn)程的執(zhí)行,并設(shè)置調(diào)度標(biāo)志為真;d. 若該進(jìn)程還有子孫進(jìn)程,還應(yīng)將其所有子孫進(jìn)程予以終止;e. 將該進(jìn)程所擁有的全部資源,或者歸還給其父進(jìn)程,或者歸還給系統(tǒng);f. 將被終止進(jìn)程(它的PCB)從所在隊列(或鏈表)中移出,等待其它程序來搜集信息. 15 試說明引起進(jìn)程阻塞或被喚醒的主要事件是什么?a. 請求系統(tǒng)服務(wù);b. 啟動某種操作;c. 新數(shù)據(jù)尚未到達(dá);d. 無新工作可做. 17. 為什么進(jìn)程在進(jìn)入臨界區(qū)之前,應(yīng)先執(zhí)行進(jìn)入?yún)^(qū)代碼,在退出臨界區(qū)后又執(zhí)行退出區(qū)代碼?為了實現(xiàn)多個進(jìn)程對臨界資源的互斥訪問,必須在臨界區(qū)前面增加一段用于檢查欲訪問的臨界資源是否正被訪問的代碼,如果未被訪問,該進(jìn)程便可進(jìn)入臨界區(qū)對資源進(jìn)行訪問,并設(shè)置正被訪問標(biāo)志,如果正被訪問,則本進(jìn)程不能進(jìn)入臨界區(qū),實現(xiàn)這一功能的代碼成為進(jìn)入?yún)^(qū)代碼;在退出臨界區(qū)后,必須執(zhí)行退出區(qū)代碼,用于恢復(fù)未被訪問標(biāo)志. 18. 同步機(jī)構(gòu)應(yīng)遵循哪些基本準(zhǔn)則?為什么?a. 空閑讓進(jìn).b. 忙則等待.c. 有限等待.d. 讓權(quán)等待. 20. 你認(rèn)為整型信號量機(jī)制和記錄型信號量機(jī)制,是否完全遵循了同步機(jī)構(gòu)的四條準(zhǔn)則?a. 在整型信號量機(jī)制中,未遵循讓權(quán)等待的準(zhǔn)則.b. 記錄型信號量機(jī)制完全遵循了同步機(jī)構(gòu)的空閑讓進(jìn),忙則等待,有限等待,讓權(quán)等待四條準(zhǔn)則.23. 在生產(chǎn)者消費(fèi)者問題中,如果缺少了signal(full)或signal(empty),對執(zhí)行結(jié)果會有何影響?生產(chǎn)者消費(fèi)者問題可描述如下:var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;beginparbeginproducer: duce an item in nextp;.wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;signal(mutex);/* * */signal(full);/* * */until false;endconsumer: beginrepeatwait(full);wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);/* * */signal(empty);/* * */consume the item in nextc;until false;endparendend可見,生產(chǎn)者可以不斷地往緩沖池送消息,如果緩沖池滿,就會覆蓋原有數(shù)據(jù),造成數(shù)據(jù)混亂.而消費(fèi)者始終因wait(full)操作將消費(fèi)進(jìn)程直接送入進(jìn)程鏈表進(jìn)行等待,無法訪問緩沖池,造成無限等待. 24. 在生產(chǎn)者消費(fèi)者問題中,如果將兩個wait操作即wait(full)和wait(mutex)互換位置;或者是將signal(mutex)與signal(full)互換位置結(jié)果會如何?var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;beginparbeginproducer: duce an item in nextp;.wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;/* * */signal(full);signal(mutex);/* * */until false;endconsumer: beginrepeat/* * */wait(mutex);wait(full);/* * */nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empty);consume the item in nextc;until false;endparendend wait(full)和wait(mutex)互換位置后,因為mutex在這兒是全局變量,執(zhí)行完wait(mutex),則mutex賦值為0,倘若full也為0,則該生產(chǎn)者進(jìn)程就會轉(zhuǎn)入進(jìn)程鏈表進(jìn)行等待,而生產(chǎn)者進(jìn)程會因全局變量mutex為0而進(jìn)行等待,使full始終為0,這樣就形成了死鎖. 而signal(mutex)與signal(full)互換位置后,從邏輯上來說應(yīng)該是一樣的. 25. 我們?yōu)槟撑R界區(qū)設(shè)置一把鎖W,當(dāng)W=1時,表示關(guān)鎖;W=0時,表示鎖已打開.試寫出開鎖原語和關(guān)鎖原語,并利用它們?nèi)崿F(xiàn)互斥.開鎖原語:unlock(W):W=0;關(guān)鎖原語:lock(W);if(W=1) do no_op;W=1;利用開關(guān)鎖原語實現(xiàn)互斥:var W: semaphore:=0;beginparbeginprocess : beginrepeatlock(W);critical sectionunlock(W);remainder sectionuntil false;endparend 26. 試修改下面生產(chǎn)者消費(fèi)者問題解法中的錯誤:producer:ducer an item in nextp;wait(mutex);wait(full); /* 應(yīng)為wait(empty),而且還應(yīng)該在wait(mutex)的前面 */buffer(in):=nextp; /* 緩沖池數(shù)組游標(biāo)應(yīng)前移: in:=(in+1) mod n; */signal(mutex);/* signal(full); */until false;endconsumer:beginrepeatwait(mutex);wait(empty); /* 應(yīng)為wait(full),而且還應(yīng)該在wait(mutex)的前面 */nextc:=buffer(out);out:=out+1; /* 考慮循環(huán),應(yīng)改為: out:=(out+1) mod n; */signal(mutex);/* signal(empty); */consumer item in nextc;until false;end 27. 試?yán)糜涗浶托盘柫繉懗鲆粋€不會出現(xiàn)死鎖的哲學(xué)家進(jìn)餐問題的算法.設(shè)初始值為1的信號量cI表示I號筷子被拿(I=1,2,3,4,.,2n),其中n為自然數(shù).send(I):Beginif I mod 2=1 thenP(cI);P(cI-1 mod 5);Eat;V(cI-1 mod 5);V(cI);elseP(cI-1 mod 5);P(cI);Eat;V(cI);V(cI-1 mod 5);End 28. 在測量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù),把所采集的數(shù)據(jù)送一單緩沖區(qū);計算任務(wù)從該單緩沖中取出數(shù)據(jù)進(jìn)行計算.試寫出利用信號量機(jī)制實現(xiàn)兩者共享單緩沖的同步算法.int mutex=1;int empty=n;int full=0;int in=0;int out=0;main()cobeginsend();obtain();coendsend()while(1).collect data in nextp;.wait(empty);wait(mutex);buffer(in)=nextp;in=(in+1) mod n;signal(mutex);signal(full);/sendobtain()while(1)wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empty);culculate the data in nextc;/while/obtain 29 畫圖說明管程由哪幾部分組成?為什么要引入條件變量?管程由三部分組成:局部于管程的共享變量說明;對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過程;對局部于管程的數(shù)據(jù)設(shè)置初始值的語句. (圖見P59)因為調(diào)用wait原語后,使進(jìn)程等待的原因有多種,為了區(qū)別它們,引入了條件變量. 30.如何利用管程來解決生產(chǎn)者消費(fèi)者問題?(見P60) 31.什么是AND信號量?試?yán)肁ND信號量寫出生產(chǎn)者消費(fèi)者問題的解法.為解決并行所帶來的死鎖問題,在wait操作中引入AND條件,其基本思想是將進(jìn)程在整個運(yùn)行過程中所需要的所有臨界資源,一次性地全部分配給進(jìn)程,用完后一次性釋放.解決生產(chǎn)者消費(fèi)者問題可描述如下:var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;beginparbeginproducer: duce an item in nextp;.wait(empty); wait(s1,s2,s3,.,sn); /s1,s2,.,sn為執(zhí)行生產(chǎn)者進(jìn)程除empty外其余的條件wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;signal(mutex);signal(full);signal(s1,s2,s3,.,sn);until false;endconsumer: beginrepeatwait(full);wait(k1,k2,k3,.,kn); /k1,k2,.,kn為執(zhí)行消費(fèi)者進(jìn)程除full外其余的條件wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empty);signal(k1,k2,k3,.,kn);consume the item in nextc;until false;endparendend 33.試比較進(jìn)程間的低級通信工具與高級通信工具.用戶用低級通信工具實現(xiàn)進(jìn)程通信很不方便,因為其效率低,通信對用戶不透明,所有的操作都必須由程序員來實現(xiàn). 而高級通信工具則可彌補(bǔ)這些缺陷,用戶可直接利用操作系統(tǒng)所提供的一組通信命令,高效地傳送大量的數(shù)據(jù). 第三章1. 高級調(diào)度與低級調(diào)度的主要任務(wù)是什么?為什么要引入中級調(diào)度?a. 作業(yè)調(diào)度又稱宏觀調(diào)度或高級調(diào)度,其主要任務(wù)是按一定的原則對外存上處于后備狀態(tài)的作業(yè)進(jìn)行選擇,給選中的作業(yè)分配內(nèi)存,輸入輸出設(shè)備等必要的資源,并建立相應(yīng)的進(jìn)程,以使該作業(yè)的進(jìn)程獲得競爭處理機(jī)的權(quán)利.b. 進(jìn)程調(diào)度又稱微觀調(diào)度或低級調(diào)度,其主要任務(wù)是按照某種策略和方法選取一個處于就緒狀態(tài)的進(jìn)程,將處理機(jī)分配給它.c. 為了提高內(nèi)存利用7. 選擇調(diào)度方式和調(diào)度算法時,應(yīng)遵循的準(zhǔn)則是什么?a. 面向用戶的準(zhǔn)則有周轉(zhuǎn)時間短,響應(yīng)時間快,截止時間的保證,以及優(yōu)先權(quán)準(zhǔn)則.b. 面向系統(tǒng)的準(zhǔn)則有系統(tǒng)吞吐量高,處理機(jī)利用率好,各類資源的平衡利用. 11.在時間片輪轉(zhuǎn)法中,應(yīng)如何確定時間片的大???a系統(tǒng)對響應(yīng)時間的要求;b就緒隊列中進(jìn)程的數(shù)目;c系統(tǒng)的處理能力。13. 為什么說多級反饋隊列能較好地滿足各種用戶的需要?a. 對于終端型作業(yè)用戶,由于終端型作業(yè)用戶所提交的作業(yè),大都屬于交互型作業(yè),系統(tǒng)只要能使這些作業(yè)(進(jìn)程)在第一隊列所規(guī)定的時間片內(nèi)完成,便可使終端型作業(yè)用戶都感到滿意.b. 對于短批處理作業(yè)用戶,很短的批處理型作業(yè)如果僅在第一隊列中執(zhí)行一個時間片即可完成,便可獲得與終端型作業(yè)一樣的相應(yīng)時間.對于稍長的作業(yè),通常也只需在第二隊列和第三隊列中各執(zhí)行-一個時間片即可完成,其周轉(zhuǎn)時間仍然很短.c. 對于長批處理作業(yè)用戶,用戶也不必?fù)?dān)心其作業(yè)長期得不到處理. 18.何謂死鎖?產(chǎn)生死鎖的原因和必要條件是什么?a. 死鎖是指多個進(jìn)程因競爭資源而造成的一種僵局,若無外力作用,這些進(jìn)程都將永遠(yuǎn)不能再向前推進(jìn);b. 產(chǎn)生死鎖的原因有二,一是競爭資源,二是進(jìn)程推進(jìn)順序非法;c. 必要條件是: 互斥條件,請求和保持條件,不剝奪條件和環(huán)路等待條件. 19.在解決死鎖問題的幾個方法中,哪種方法最容易實現(xiàn)?哪種方法使資源的利用率最高?a. 解決死鎖可歸納為四種方法: 預(yù)防死鎖,避免死鎖,檢測死鎖和解除死鎖;b. 其中,預(yù)防死鎖是最容易實現(xiàn)的;c. 避免死鎖使資源的利用率最高. 20.請詳細(xì)說明可通過哪些途徑預(yù)防死鎖?a. 擯棄請求和保持條件,就是如果系統(tǒng)有足夠的資源,便一次性地把進(jìn)程所需的所有資源分配給它;b. 擯棄不剝奪條件,就是已經(jīng)保持了資源的進(jìn)程,當(dāng)它提出新的資源請求而不能立即得到滿足時,必須釋放它已經(jīng)保持的所有資源,待以后需要時再重新申請;c. 擯棄環(huán)路等待條件,就是將所有資源按類型排序標(biāo)號,所有進(jìn)程對資源的請求必須嚴(yán)格按序號遞增的次序提出. 21.在銀行家算法的例子中,如果P0發(fā)出的請求向量由Request0(0,2,0)改為Request0(0,1,0),問系統(tǒng)可否將資源分配給它?可以.首先,Request0(0,1,0)=Need0(7,4,3), Request0(0,1,0)=Available(2,3,0);分配后可修改得一資源數(shù)據(jù)表(表略),進(jìn)行安全性檢查,可以找到一個安全序列P1,P4,P3,P2,P0,或P1,P4,P3,P0,P2,因此,系統(tǒng)是安全的,可以立即將資源分配給P0. 第四章2. 可采用哪幾種方式將程序裝入內(nèi)存?它們分別適用于何種場合?a. 首先由編譯程序?qū)⒂脩粼创a編譯成若干目標(biāo)模塊,再由鏈接程序?qū)⒕幾g后形成的目標(biāo)模塊和所需的庫函數(shù)鏈接在一起,組成一個裝入模塊,再由裝入程序?qū)⒀b入模塊裝入內(nèi)存;b. 裝入模塊的方式有: 絕對裝入方式,可重定位方式和動態(tài)運(yùn)行時裝入方式;c. 絕對裝入方式適用于單道程序環(huán)境下;d. 可重定位方式適用于多道程序環(huán)境下;e. 動態(tài)運(yùn)行時裝入方式也適用于多道程序環(huán)境下. 3. 何謂靜態(tài)鏈接?何謂裝入時動態(tài)鏈接和運(yùn)行時的動態(tài)鏈接?a. 靜態(tài)鏈接是指事先進(jìn)行鏈接形成一個完整的裝入模塊,以后不再拆開的鏈接方-式;b. 裝入時動態(tài)鏈接是指目標(biāo)模塊在裝入內(nèi)存時,邊裝入邊鏈接的鏈接方式;c. 運(yùn)行時的動態(tài)鏈接是將某些目標(biāo)模塊的鏈接推遲到執(zhí)行時才進(jìn)行. 4. 在進(jìn)行程序鏈接時,應(yīng)完成哪些工作?a. 對相對地址進(jìn)行修改;b. 變換外部調(diào)用符號. 5. 在動態(tài)分區(qū)分配方式中,應(yīng)如何將各空閑分區(qū)鏈接成空閑分區(qū)鏈?應(yīng)在每個分區(qū)的起始地址部分,設(shè)置一些用于控制分區(qū)分配的信息,以及用于鏈接各分區(qū)的前向指針;在分區(qū)尾部則設(shè)置一后向指針,通過前,后向指針將所有的分區(qū)鏈接成一個雙向鏈. 6. 為什么要引入動態(tài)重定位?如何實現(xiàn)?a. 為了在程序執(zhí)行過程中,每當(dāng)訪問指令或數(shù)據(jù)時,將要訪問的程序或數(shù)據(jù)的邏輯地址轉(zhuǎn)換成物理地址,引入了動態(tài)重定位.b. 可在系統(tǒng)中增加一個重定位寄存器,用它來裝入(存放)程序在內(nèi)存中的起始地址,程序在執(zhí)行時,真正訪問的內(nèi)存地址是相對地址與重定位寄存器中的地址相加而形成的,從而實現(xiàn)動態(tài)重定位. 7. 在采用首次適應(yīng)算法回收內(nèi)存時,可能出現(xiàn)哪幾種情況?應(yīng)怎樣處理這些情況?a. 回收區(qū)與插入點的前一個分區(qū)相鄰接,此時可將回收區(qū)與插入點的前一分區(qū)合并,不再為回收分區(qū)分配新表項,而只修改前鄰接分區(qū)的大??;b. 回收分區(qū)與插入點的后一分區(qū)相鄰接,此時合并兩區(qū),然后用回收區(qū)的首址作為新空閑區(qū)的首址,大小為兩者之和;c. 回收區(qū)同時與插入點的前后兩個分區(qū)鄰接,此時將三個分區(qū)合并,使用前鄰接分區(qū)的首址,大小為-三區(qū)之和,取消后鄰接分區(qū)的表項;d. 回收區(qū)沒有鄰接空閑分區(qū),則應(yīng)為回收區(qū)單獨建立一個新表項,填寫回收區(qū)的首址和大小,并根據(jù)其首址,插入到空閑鏈中的適當(dāng)位置. 10. 在系統(tǒng)中引入對換后帶有哪些好處?能將內(nèi)存中暫時不運(yùn)行的進(jìn)程或暫時不用的程序和數(shù)據(jù),換到外存上,以騰出足夠的內(nèi)存空間,把已具備運(yùn)行條件的進(jìn)程或進(jìn)程所需的程序和數(shù)據(jù)換入內(nèi)存,從而大大地提高了內(nèi)存的利用率. 11. 為實現(xiàn)對換,系統(tǒng)應(yīng)具備哪幾方面功能?a. 對對換空間的管理;b. 進(jìn)程的換出;c. 進(jìn)程的換入. 12.在以進(jìn)程為單位進(jìn)行對換時,每次是否都將整個進(jìn)程換出?為什么?a. 以進(jìn)程為單位進(jìn)行對換時,每次都將整個進(jìn)程換出;b. 目的為了解決內(nèi)存緊張的問題,提高內(nèi)存的利用率. 14 較較詳細(xì)地說明引入分段存儲管理是為了滿足用戶哪幾方面的需要?a. 方便了編程;b. 實現(xiàn)了分段共享;c. 實現(xiàn)了分段保護(hù);d. 實現(xiàn)了動態(tài)鏈接;e. 實現(xiàn)了動態(tài)增長. 15 在具有快表的段頁式存儲管理方式中,如何實現(xiàn)地址變換?首先,必須配置一段表寄存器,在其中存放段表始址和段長TL. 進(jìn)行地址變換時,先利用段號S,與段長TL進(jìn)行比較,若S=TL,表示段號太大,訪問越界,產(chǎn)生越界中斷信號)于是利用段表始址和段號來求出該段對應(yīng)的段表項在段表中的位置,從中求出該段的頁表始址,并利用邏輯地址中的段內(nèi)頁號P來獲得對應(yīng)頁的頁表項位置,從中讀出該頁所在的物理塊號b,再用塊號b和頁內(nèi)地址構(gòu)成物理地址. 16.為什么說分段系統(tǒng)較之分頁系統(tǒng)更易于實現(xiàn)信息共享和保護(hù)?a. 對于分頁系統(tǒng),每個頁面是分散存儲的,為了實現(xiàn)信息共享和保護(hù),則頁面之間需要一一對應(yīng)起來,為此需要建立大量的頁表項;b. 而對于分段系統(tǒng),每個段都從0開始編址,并采用一段連續(xù)的地址空間,這樣在實現(xiàn)共享和保護(hù)時,只需為所要共享和保護(hù)的程序設(shè)置一個段表項,將其中的基址與內(nèi)存地址一一對應(yīng)起來即可. 17 分頁和分段有何區(qū)別?a. 分頁和分段都采用離散分配的方式,且都要通過地址映射機(jī)構(gòu)來實現(xiàn)地址變換,這是它們的共同點;b. 對于它們的不同點有三,第一,從功能上看,頁是信息的物理單位,分頁是為實現(xiàn)離散分配方式,以消減-內(nèi)存的外零頭,提高內(nèi)存的利用率,即滿足系統(tǒng)管理的需要,而不是用戶的需要;而段是信息的邏輯單位,它含有一組其意義相對完整的信息,目的是為了能更好地滿足用戶的需要;c. 頁的大小固定且由系統(tǒng)確定,而段的長度卻不固定,決定于用戶所編寫的程序;d. 分頁的作業(yè)地址空間是一維的,而分段的作業(yè)地址空間是二維的. 18 試全面比較連續(xù)分配和離散分配方式.a. 連續(xù)分配是指為一個用戶程序分配一個連續(xù)的地址空間,包括單一連續(xù)分配方式和分區(qū)式分配方式,前者將內(nèi)存分為系統(tǒng)區(qū)和用戶區(qū),系統(tǒng)區(qū)供操作系統(tǒng)使用,用戶區(qū)供用戶使用,是最簡單的一種存儲方式,-但只能用于單用戶單任務(wù)的操作系統(tǒng)中;分區(qū)式分配方式分為固定分區(qū)和動態(tài)分區(qū),固定分區(qū)是最簡單的多道程序的存儲管理方式,由于每個分區(qū)的大小固定,必然會造成存儲空間的浪費(fèi);動態(tài)分區(qū)是根據(jù)進(jìn)程的實際需要,動態(tài)地為之分配連續(xù)的內(nèi)存空間,常用三種分配算法: 首次適應(yīng)算法FF,該法容易留下許多難以利用的小空閑分區(qū),加大查找開銷;循環(huán)首次適應(yīng)算法,該算法能使內(nèi)存中的空閑分區(qū)分布均勻,但會致使缺少大的空閑分區(qū);最佳適應(yīng)算法,該算法也易留下許多難以利用的小空閑區(qū);b. 離散分配方式基于將一個進(jìn)程直接分散地分配到許多不相鄰的分區(qū)中的思想,分為分頁式存儲管理,分段存儲管理和段頁式存儲管理. 分頁式存儲管理旨在提高內(nèi)存利用率,滿足系統(tǒng)管理的需要,分段式存儲管理則旨在滿足用戶(程序員)的需要,在實現(xiàn)共享和保護(hù)方面優(yōu)于分頁式存儲管理,而段頁式存儲管理則是將兩者結(jié)合起來,取長補(bǔ)短,即具有分段系統(tǒng)便于實現(xiàn),可共享,易于保護(hù),可動態(tài)鏈接等優(yōu)點,又能像分頁系統(tǒng)那樣很好的解決外部碎片的問題,以及為各個分段可離散分配內(nèi)存等問題,顯然是一種比較有效的存儲管理方式;c. 綜上可見,連續(xù)分配方式和離散分配方式各有各自的特點,應(yīng)根據(jù)實際情況加以改進(jìn)和利用. 19. 虛擬存貯器有那些特征? 其中最本質(zhì)的特征是什么?a. 虛擬存儲器具有離散性,多次性,對換性和虛擬性的特征;b. 其中最本質(zhì)的特征是離散性,在此基礎(chǔ)上又形成了多次性和對換性,所表現(xiàn)出來的最重要的特征是虛擬性. 20. 實現(xiàn)虛擬存儲器要那些硬件支持?a. 對于為實現(xiàn)請求分頁存儲管理方式的系統(tǒng),除了需要一臺具有一定容量的內(nèi)存及外存的計算機(jī)外,還需要有頁表機(jī)制,缺頁中斷機(jī)構(gòu)以及地址變換機(jī)構(gòu);b. 對于為實現(xiàn)請求分段存儲管理方式的系統(tǒng),除了需要一臺具有一定容量的內(nèi)存及外存的計算機(jī)外,還需要有段表機(jī)制,缺段中斷機(jī)構(gòu)以及地址變換機(jī)構(gòu)22. 在請求分頁系統(tǒng)中,其頁表項中包含那些數(shù)據(jù)項? 每項的作用是什么?a. 在請求分頁系統(tǒng)中,其頁表項中包含的數(shù)據(jù)項有頁號,物理塊號,狀態(tài)位P,訪問字段A,修改位M和外存地址;b. 其中狀態(tài)位P指示該頁是否調(diào)入內(nèi)存,供程序訪問時參考;c. 訪問字段A用于記錄本頁在一段時間內(nèi)被訪問的次數(shù),或最近已有多長時間未被訪問,提供給置換算法-選擇換出頁面時參考;d. 修改位M表示該頁在調(diào)入內(nèi)存后是否被修改過;e. 外存地址用于指出該頁在外存上的地址,通常是物理塊號,供調(diào)入該頁時使用. 23. 在請求分頁系統(tǒng)中,應(yīng)從何處將所需頁面調(diào)入內(nèi)存?a. 在進(jìn)行地址變換時,首先去檢索快表,試圖從中找出所要訪問的頁,若找到,便修改頁表項中的訪問位,對于寫指令,還須將修改位置1,然后利用頁表項中給出的物理塊號和頁內(nèi)地址,形成物理地址;b. 如果在快表中未找到該頁的頁表項,則應(yīng)再到內(nèi)存中去查找頁表,再從找到的頁表項中的狀態(tài)位來了解該頁是否已調(diào)入內(nèi)存,如果該頁已調(diào)入內(nèi)存,應(yīng)將此頁的頁表項寫入快表,當(dāng)快表已滿時,應(yīng)先調(diào)出按某種算法所確定的頁的頁表項,然后再寫入該頁的頁表項;c. 如果該頁尚未調(diào)入內(nèi)存,這時便應(yīng)產(chǎn)生缺頁中斷,請求OS從外存中把該頁調(diào)入內(nèi)存;d. 外存分為文件區(qū)和對換區(qū),若系統(tǒng)有足夠的對換區(qū)空間,可在進(jìn)程運(yùn)行前,將與該進(jìn)程有關(guān)的文件-拷貝到對換區(qū),需要時從對換區(qū)調(diào)入;e. 若系統(tǒng)缺少足夠的對換區(qū)空間,則凡是不會被修改的文件,可直接從文件區(qū)調(diào)入,需換出時可不必寫入外存,但對于可能被修改的部分,在將它們換出時,便須調(diào)到對換區(qū),以后需要時再從對換區(qū)-調(diào)入. 24. 在請求分頁系統(tǒng)中,常采用哪幾種頁面置換算法?a. 最佳置換算法;b. 先進(jìn)先出算法;c. 最近最久未使用LRU置換算法;d. Clock置換算法;e. 此外,還有最少使用置換算法和頁面緩沖算法25.在請求分頁系統(tǒng)中,通常采用那種頁面分配方式?為什么?a. 在請求分頁系統(tǒng)中,有固定和可變分配兩種分配方式;b. 采用固定分配方式是基于進(jìn)程的類型(交互型)或根據(jù)程序員,系統(tǒng)管理員的建議,為每個進(jìn)程分配固定頁數(shù)的內(nèi)存空間,在整個運(yùn)行期間不再改變;c. 采用可變分配方式有全局置換和局部置換兩種,前者易于實現(xiàn),后者效率高. 26. 在一個請求分頁系統(tǒng)中,采用LRU頁面置換算法時,假如一個作業(yè)的頁面走向為4,3,2,1,4,3,5,4,3,2,1,5,當(dāng)分配給該作業(yè)的物理塊數(shù)M分別為3和4時,試計算訪問過程中所發(fā)生的缺頁次數(shù)和缺頁率?比較所得結(jié)果?a. 當(dāng)分配給該作業(yè)的物理塊數(shù)M為3時,所發(fā)生的缺頁率為7,缺頁率為: 7/12=0.583;b. 當(dāng)分配給該作業(yè)的物理塊數(shù)M為4時,所發(fā)生的缺頁率為4,缺頁率為: 4/12=0.333.27.實現(xiàn)LRU算法所需的硬件支持是什么?a. 寄存器,用于記錄某進(jìn)程在內(nèi)存中各頁的使用情況;b. 棧,用于保存當(dāng)前使用的各個頁面的頁面號. 28. 試說明改進(jìn)型Clock置換算法的基本原理.a. 因為對于修改過的頁面在換出時所付出的開銷將比未被修改過的頁面的開銷大,所以在改進(jìn)型Clock算法中,出了須考慮到頁面的使用情況外,還須再增加一個置換代價這一因素;b. 在選擇頁面作為淘汰頁面時,把同時滿足未使用過和未被修改作為首選淘汰頁面.30.如何實現(xiàn)分段共享?a. 可在每個進(jìn)程的段表中,用相應(yīng)的表項來指向共享段在內(nèi)存中起始地址;b. 配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)作為共享段表,可在段表項中設(shè)置共享進(jìn)程計數(shù)Count,每調(diào)用一次該共享段,Count指增1,每當(dāng)一個進(jìn)程釋放一個共享段時,Count執(zhí)行減1操作,若減為0,則由系統(tǒng)回收該共享段的物理內(nèi)存,以及取消在共享段表中該段所對應(yīng)的表項;c. 對于一個共享段,應(yīng)給不同的進(jìn)程以不同的存取權(quán)限;d. 不同的進(jìn)程可以使用不同的段號去共享該段. 第五章1試說明設(shè)備控制器的構(gòu)成。設(shè)備控制器的構(gòu)成如圖所示:由上圖可見,設(shè)備控制器由以下三部分組成:(1)設(shè)備控制器與處理機(jī)的接口,該接口用于實現(xiàn)CPU與設(shè)備控制器之間的通信,提供有三類信號線:數(shù)據(jù)線、地址線和控制線。(2)設(shè)備控制器與設(shè)備的接口,可以有一個或多個接口,且每個接口連接一臺設(shè)備。每個接口都存在數(shù)據(jù)、控制和狀態(tài)三種類型的信號。(3)I/O邏輯,用于實現(xiàn)對設(shè)備的控制。其通過一組控制線與處理機(jī)交互,處理機(jī)利用該邏輯向控制器發(fā)送I/O命令,I/O邏輯對收到的命令進(jìn)行譯碼。2為了實現(xiàn)CPU與設(shè)備控制器之間的通信,設(shè)備控制器應(yīng)具有哪些功能?為了實現(xiàn)CPU與設(shè)備控制器之間的通信,設(shè)備控制器應(yīng)具有如下功能:(1)接受和識別命令。CPU可以向控制器發(fā)送多種不同的命令,設(shè)備控制器應(yīng)能接收并識別這些命令。設(shè)置控制寄存器來存放所接收的命令和參數(shù)。(2)數(shù)據(jù)交換,指實現(xiàn)CPU與控制器之間、控制器與設(shè)備之間的數(shù)據(jù)交換。設(shè)置數(shù)據(jù)寄存器來存放有關(guān)數(shù)據(jù)。(3)設(shè)備狀態(tài)的了解和報告??刂破饔涗浵滤B接設(shè)備的狀態(tài)以供CPU了解。為此,要在控制器中設(shè)置一狀態(tài)寄存器,用其中的每一位反映設(shè)備的某一狀態(tài)。(4)地址識別。配置地址譯碼器以便于正確識別設(shè)備地址。3什么是字節(jié)多路通道?什么是數(shù)組選擇通道和數(shù)組多路通道? 字節(jié)多路通道含有許多非分配型子通道分別連接在低、中速I/O設(shè)備上,子通道按時間片輪轉(zhuǎn)方式共享主通道,按字節(jié)方式進(jìn)行數(shù)據(jù)傳送。具體而言,當(dāng)?shù)谝粋€子通道控制其I/O設(shè)備完成一個字節(jié)的交換后,便立即騰出字節(jié)多路通道(主通道),讓給第二個子通道使用;當(dāng)?shù)诙€子通道也交換完一個字節(jié)后,又依樣把主通道讓給第三個子通道使用,以此類推。轉(zhuǎn)輪一周后,重又返回由第一個子通道去使用主通道。 數(shù)組選擇通道只含有一個分配型子通道,一段時間內(nèi)只能執(zhí)行一道通道程序、控制一臺設(shè)備按數(shù)組方式進(jìn)行數(shù)據(jù)傳送。通道被某臺設(shè)備占用后,便一直處于獨占狀態(tài),直至設(shè)備數(shù)據(jù)傳輸完畢釋放該通道,故而通道利用率較低,主要用于連接多臺高速設(shè)備。數(shù)組多路通道是將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道能使各子通道分時并行操作的優(yōu)點相結(jié)合而形成的一種新通道。其含有多個非分配型子通道分別連接在高、中速I/O設(shè)備上,子通道按時間片輪轉(zhuǎn)方式共享主通道,按數(shù)組方式進(jìn)行數(shù)據(jù)傳送,因而既具有很高的數(shù)據(jù)傳輸速率,又能獲得令人滿意的通道利用率。4如何解決因通道不足而產(chǎn)生的瓶頸問題?解決因通道不足而產(chǎn)生的瓶頸問題的最有效方法是增加設(shè)備到主機(jī)間的通路而不是增加通道。換言之,就是把一個設(shè)備連接到多個控制器上,而一個控制器又連接到多個通道上。這種多通路方式不僅可以解決該瓶頸問題,而且能夠提高系統(tǒng)的可靠性,也即不會因為個別通道或控制器的故障而使設(shè)備與存儲器之間無法建立通路進(jìn)行數(shù)據(jù)傳輸。6試說明I/O控制發(fā)展的主要推動因素是什么?推動I/O控制發(fā)展的主要動力在于盡量減少主機(jī)對I/O控制的干預(yù),把主機(jī)從繁雜的I/O控制事務(wù)中解脫出來,以有更多的時間和精力去完成其數(shù)據(jù)處理任務(wù)。同時,中斷機(jī)制在計算機(jī)系統(tǒng)中的引入、DMA控制器的出現(xiàn)和通道研制的成功使I/O控制的發(fā)展具備了技術(shù)支持和成為可能。7有哪幾種I/O控制方式?有四種I/O控制方式,即程序I/O控制方式、中斷驅(qū)動I/O控制方式、直接存儲器訪問DMA控制方式及I/O通道控制方式。8試說明DMA的工作流程。以從磁盤讀入數(shù)據(jù)為例來說明DMA方式的工作流程:當(dāng)CPU要從磁盤讀入一數(shù)據(jù)塊時,便向磁盤控制器發(fā)送一條讀命令,該命令被送入DMA控制器的命令寄存器CR中。同時,還需發(fā)送本次要將數(shù)據(jù)讀入的內(nèi)存起始目標(biāo)地址,該地址被送入DMA控制器的內(nèi)存地址寄存器MAR中;本次要讀的字(節(jié))數(shù)則送至DMA控制器的數(shù)據(jù)計數(shù)器DC中。另外,還需將磁盤中數(shù)據(jù)讀取的源地址直接送到DMA控制器的I/O控制邏輯上。然后,啟動DMA控制器進(jìn)行數(shù)據(jù)傳送。此后,CPU便可去處理其它任務(wù),而整個的數(shù)據(jù)傳送便由DMA控制器負(fù)責(zé)控制。當(dāng)DMA控制器已從磁盤中讀入一個字(節(jié))的數(shù)據(jù),并送入DMA控制器的數(shù)據(jù)寄存器DR后,再挪用一個存儲器周期,將該字(節(jié))傳送到MAR所指示的內(nèi)存單元中。接著,便對MAR內(nèi)容加1和將DC內(nèi)容減1。若DC內(nèi)容減1后不為0,表示傳送未完,便準(zhǔn)備再傳送下一個字(節(jié)),否則,由DMA控制器發(fā)出中斷請求。參圖所示:9引入緩沖的主要原因是什么?操作系統(tǒng)引入緩沖機(jī)制的主要原因可歸結(jié)為以下幾點:(1)緩和CPU與I/O設(shè)備間速度不匹配的矛盾;(2)減少對CPU的中斷頻率,放寬對中斷響應(yīng)時間的限制;(3)提高CPU與I/O設(shè)備之間的并行性。10在單緩沖情況下,為什么系統(tǒng)對一塊數(shù)據(jù)的處理時間為max(C, T)+M ?在塊設(shè)備輸入時,先從磁盤把一塊數(shù)據(jù)輸入到緩沖區(qū),耗時為T;然后由操作系統(tǒng)將緩沖區(qū)數(shù)據(jù)傳送給用戶區(qū),耗時為M;接下來便由CPU對這一塊數(shù)據(jù)進(jìn)行計算,耗時為C。在單緩沖情況下,磁盤把數(shù)據(jù)輸入到緩沖區(qū)的操作和CPU對數(shù)據(jù)的計算過程可以并行展開,所以系統(tǒng)對每一整塊數(shù)據(jù)的處理時間為max(C, T) + M。11為什么在雙緩沖情況下,系統(tǒng)對一塊數(shù)據(jù)的處理時間為max(C, T)該方式又稱緩沖對換方式。寫入者花費(fèi)時間T將數(shù)據(jù)寫滿一個緩沖區(qū)后再寫另一個緩沖區(qū);讀出者花費(fèi)時間M將一個緩沖區(qū)數(shù)據(jù)送到用戶區(qū)后再傳送另一個緩沖區(qū)數(shù)據(jù),運(yùn)算者讀出用戶區(qū)進(jìn)行處理。由于將數(shù)據(jù)從緩沖區(qū)傳送到用戶區(qū)操作必須與讀用戶區(qū)數(shù)據(jù)進(jìn)行處理串行進(jìn)行,而且它們又可以與從外存?zhèn)魉蛿?shù)據(jù)填滿緩沖區(qū)的操作并行。因此耗時大約為max(C+M,T)。考慮到M是內(nèi)存中數(shù)據(jù)塊的“搬家”耗時,非常短暫可以省略,因此近似地認(rèn)為是:max(C,T)。12試?yán)L圖說明把多緩沖用于輸出時的情況。把多緩沖用于輸出時的情況如圖所示:13試說明收容輸入工作緩沖區(qū)和提取輸出工作緩沖區(qū)的工作情況。 收容輸入工作緩沖區(qū)的工作情況為:在輸入進(jìn)程需要輸入數(shù)據(jù)時,調(diào)用GetBuf(EmptyQueue)過程,從EmptyQueue隊列的隊首摘下一個空緩沖區(qū),把它作為收容輸入工作緩沖區(qū)Hin。然后,把數(shù)據(jù)輸入其中,裝滿后再調(diào)用PutBuf(InputQueue, Hin)過程,將該緩沖區(qū)掛在輸入隊列InputQueue的隊尾。 提取輸出工作緩沖區(qū)的工作情況為:當(dāng)要輸出數(shù)據(jù)時,調(diào)用GetBuf(OutputQueue)過程,從輸出隊列的隊首取得一裝滿輸出數(shù)據(jù)的緩沖區(qū)作為提取輸出的工作緩沖區(qū)Sout。在數(shù)據(jù)提取完后,再調(diào)用PutBuf(EmptyQueue, Sout)過程,將該緩沖區(qū)掛到空緩沖隊列EmptyQueue的隊尾。14何謂是安全分配方式和不安全分配方式? 所謂安全分配方式,是指每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。在采用這種分配策略時,一旦進(jìn)程已經(jīng)獲得某種設(shè)備(資源)后便阻塞,使它不可能再請求任何資源,而在它運(yùn)行時又不保持任何資源。因此,這種分配方式已經(jīng)摒棄了造成死鎖的四個必要條件之一的“請求和保持”條件,所以分配是安全的。其缺點是進(jìn)程進(jìn)展緩慢,即CPU與I/O設(shè)備是串行工作的。 所謂不安全分配方式,是指進(jìn)程發(fā)出I/O請求后仍繼續(xù)執(zhí)行,需要時又可發(fā)出第二個I/O請求、第三個I/O請求。僅當(dāng)進(jìn)程所請求的設(shè)備已被另一個進(jìn)程占有時,進(jìn)程才進(jìn)入阻塞狀態(tài)。其優(yōu)點是一個進(jìn)程可同時操作多個設(shè)備,從而使進(jìn)程推進(jìn)迅速。而缺點是分配不安全,因為它可能具有“請求和保持”條件,所以可能造成死鎖。因此,在設(shè)備分配程序中還需增加一個功能,用于對本次的設(shè)備分配是否會發(fā)生死鎖進(jìn)行安全性計算,僅當(dāng)計算結(jié)果說明分配是安全的情況下才進(jìn)行分配。15為何要引入設(shè)備獨立性?如何實現(xiàn)設(shè)備獨立性?在現(xiàn)代操作系統(tǒng)中,為了提高系統(tǒng)的可適應(yīng)性和可擴(kuò)展性,都毫無例外地實現(xiàn)了設(shè)備獨立性,也即設(shè)備無關(guān)性。其基本含義是,應(yīng)用程序獨立于具體使用的物理設(shè)備,即應(yīng)用程序以邏輯設(shè)備名稱來請求使用某類設(shè)備。進(jìn)一步說,在實現(xiàn)了設(shè)備獨立性的功能后,可帶來兩方面的好處:(1)設(shè)備分配時的靈活性;(2)易于實現(xiàn)I/O重定向(指用于I/O操作的設(shè)備可以更換即重定向,而不必改變應(yīng)用程序)。為了實現(xiàn)設(shè)備的獨立性,應(yīng)引入邏輯設(shè)備和物理設(shè)備兩個概念。在應(yīng)用程序中,使用邏輯設(shè)備名稱來請求使用某類設(shè)備;而系統(tǒng)執(zhí)行時,是使用物理設(shè)備名稱。鑒于驅(qū)動程序是一個與硬件(或設(shè)備)緊密相關(guān)的軟件,必須在驅(qū)動程序之上設(shè)置一層軟件,稱為設(shè)備獨立性軟件,以執(zhí)行所有設(shè)備的公有操作、完成邏輯設(shè)備名到物理設(shè)備名的轉(zhuǎn)換(為此應(yīng)設(shè)置一張邏輯設(shè)備

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論