操作系統(第三版)習題答案_第1頁
操作系統(第三版)習題答案_第2頁
操作系統(第三版)習題答案_第3頁
免費預覽已結束,剩余27頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、操作系統(第三版)習題答案第一章 操作系統引論1設計現代OS的主要目標是什么?答:(1)有效性 (2)方便性 (3)可擴充性 (4)開放性 2OS的作用可表現在哪幾個方面 答:(1)OS作為用戶與計算機硬件系統之間的接口 (2)OS作為計算機系統資源的管理者 (3)OS實現了對計算機資源的抽象 3為什么說OS實現了對計算機資源的抽象 答:OS首先在裸機上覆蓋一層I/O設備管理軟件,實現了對計算機硬件操作的第一層次抽象;在第一層軟件上再覆蓋文件管理軟件,實現了對硬件資源操作的第二層次抽象。OS通過在計算機硬件上安裝多層系統軟件,增強了系統功能,隱藏了對硬件操作的細節,由它們共同實現了對計算機資源

2、的抽象。 4試說明推動多道批處理系統形成和發展的主要動力是什么 答:主要動力來源于四個方面的社會需求與技術發展: (1)不斷提高計算機資源的利用率; (2)方便用戶; (3)器件的不斷更新換代; (4)計算機體系結構的不斷發展。 5何謂脫機I/O和聯機I/O 答:脫機I/O 是指事先將裝有用戶程序和數據的紙帶或卡片裝入紙帶輸入機或卡片機,在外圍機的控制下,把紙帶或卡片上的數據或程序輸入到磁帶上。該方式下的輸入輸出由外圍機控制完成,是在脫離主機的情況下進行的。 而聯機I/O方式是指程序和數據的輸入輸出都是在主機的直接控制下進行的。 6試說明推動分時系統形成和發展的主要動力是什么 答:推動分時系統

3、形成和發展的主要動力是更好地滿足用戶的需要。主要表現在:CPU的分時使用縮短了作業的平均周轉時間;人機交互能力使用戶能直接控制自己的作業;主機的共享使多用戶能同時使用同一臺計算機,獨立地處理自己的作業。 7實現分時系統的關鍵問題是什么應如何解決 答:關鍵問題是當用戶在自己的終端上鍵入命令時,系統應能及時接收并及時處理該命令,在用戶能接受的時延內將結果返回給用戶。解決方法:針對及時接收問題,可以在系統中設置多路卡,使主機能同時接收用戶從各個終端上輸入的數據;為每個終端配置緩沖區,暫存用戶鍵入的命令或數據。針對及時處理問題,應使所有的用戶作業都直接進入內存,并且為每個作業分配一個時間片,允許作業只

4、在自己的時間片內運行,這樣在不長的時間內,能使每個作業都運行一次。 8為什么要引入實時OS 答:實時操作系統是指系統能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,并控制所有實時任務協調一致地運行。引入實時OS 是為了滿足應用的需求,更好地滿足實時控制領域和實時信息處理領域的需要。 9什么是硬實時任務和軟實時任務?試舉例說明。 答:硬實時任務是指系統必須滿足任務對截止時間的要求,否則可能出現難以預測的結果。舉例來說,運載火箭的控制等。軟實時任務是指它的截止時間并不嚴格,偶爾錯過了任務的截止時間,對系統產生的影響不大。舉例:網頁內容的更新、火車售票系統。 10在8位微機和16位微機中

5、,占據了統治地位的是什么操作系統 答:單用戶單任務操作系統,其中最具代表性的是CP/M和MS-DOS. 11試列出Windows OS 中五個主要版本,并說明它們分別較之前一個版本有何改進。 答: (1)Microsoft Windows 是微軟公司在個人電腦上開發圖形界面的首次嘗試。 (2)Windows 95是混合的16位/32位系統,第一個支持32位。帶來了更強大、更穩定、更實用的桌面圖形用戶界面,結束了桌面操作系統間的競爭。 (3)Windows 98是微軟公司的混合16位/32位Windows 操作系統,改良了硬件標準的支持,革新了內存管理,是多進程操作系統。 (4)Windows

6、XP是基于Windows 2000的產品,擁有新用戶圖形界面月神Luna。簡化了用戶安全特性,整合了防火墻。 (5)Windows Vista 包含了上百種新功能;特別是新版圖形用戶界面和Windows Aero全新界面風格、加強的搜尋功能(Windows Indexing Service)、新媒體創作工具以及重 新設計的網絡、音頻、輸出(打印)和顯示子系統。 12試從交互性、及時性以及可靠性方面,將分時系統不實時系統進行比較。 答:(1)及時性:實時信息處理系統對實時性的要求與分時系統類似,都是以人所能接受的等待時間來確定;而實時控制系統的及時性,是以控制對象所要求的開始截止時間或完成截止時

7、間來確定的,一般為秒級到毫秒級,甚至有的要低于100微妙。 (2)交互性:實時信息處理系統具有交互性,但人與系統的交互僅限于訪問系統中某些特定的專用服務程序。不像分時系統那樣能向終端用戶提供數據和資源共享等服務。 (3)可靠性:分時系統也要求系統可靠,但相比之下,實時系統則要求系統具有高度的可靠性。因為任何差錯都可能帶來巨大的經濟損失,甚至是災難性后果,所以在實時系統中,往往都采取了多級容錯措施保障系統的安全性及數據的安全性。 13OS有哪幾大特征其最基本的特征是什么 答:并發性、共享性、虛擬性和異步性四個基本特征;最基本的特征是并發性。 14處理機管理有哪些主要功能它們的主要任務是什么 答:

8、處理機管理的主要功能是:進程管理、進程同步、進程通信和處理機調度; 進程管理:為作業創建進程,撤銷已結束進程,控制進程在運行過程中的狀態轉換。進程同步:為多個進程(含線程)的運行進行協調。 通信:用來實現在相互合作的進程之間的信息交換。 處理機調度: (1)作業調度。從后備隊里按照一定的算法,選出若干個作業,為他們分配運行所需的資源(首選是分配內存)。 (2)進程調度:從進程的就緒隊列中,按照一定算法選出一個進程,把處理機分配給它,并設置運行現場,使進程投入執行。 15內存管理有哪些主要功能他們的主要任務是什么 答:內存管理的主要功能有:內存分配、內存保護、地址映射和內存擴充。 內存分配:為每

9、道程序分配內存。 內存保護:確保每道用戶程序都只在自己的內存空間運行,彼此互不干擾。 地址映射:將地址空間的邏輯地址轉換為內存空間與對應的物理地址。 內存擴充:用于實現請求調用功能,置換功能等。 16設備管理有哪些主要功能其主要任務是什么 答:主要功能有: 緩沖管理、設備分配和設備處理以及虛擬設備等。 主要任務: 完成用戶提出的I/O 請求,為用戶分配I/O 設備;提高CPU 和I/O 設 備的利用率;提高I/O速度;以及方便用戶使用I/O設備. 17文件管理有哪些主要功能其主要任務是什么 答:文件管理主要功能:文件存儲空間的管理、目錄管理、文件的讀/寫管理和保護。 文件管理的主要任務:管理用

10、戶文件和系統文件,方便用戶使用,保證文件安全性。 18是什么原因使操作系統具有異步性特征 答:操作系統的異步性體現在三個方面:一是進程的異步性,進程以人們不可預知的速度向 前推進,二是程序的不可再現性,即程序執行的結果有時是不確定的,三是程序執行時間的不可預知性,即每個程序何時執行,執行順序以及完成時間是不確定的。 19模塊接口法存在哪些問題可通過什么樣的途徑來解決 答:(1)模塊接口法存在的問題:在OS設計時,各模塊間的接口規定很難滿足在模塊完成后對接口的實際需求。在OS 設計階段,設計者必須做出一系列的決定,每一個決定必須建立在上一個決定的基礎上。但模塊化結構設計的各模塊設計齊頭并進,無法

11、尋找可靠的順序,造成各種決定的無序性,使程序設計人員很難做到設計中的每一步決定都建立在可靠的基礎上,因此模塊接口法被稱為“無序模塊法”。 (2)解決途徑:將模塊接口法的決定順序無序變有序,引入有序分層法。 20在微內核OS中,為什么要采用客戶/服務器模式 答:C/S 模式具有獨特的優點:數據的分布處理和存儲。便于集中管理。靈活性和 可擴充性。易于改編應用軟件。 21試描述什么是微內核OS。 答:1)足夠小的內核 2)基于客戶/服務器模式 3)應用機制與策略分離原理 4)采用面向對象技術。 22在基亍微內核結構的OS中,應用了哪些新技術 答:在基于微內核結構的OS 中,采用面向對象的程序設汁技術

12、。 23何謂微內核技術在微內核中通常提供了哪些功能 答:把操作系統中更多的成分和功能放到更高的層次(即用戶模式)中去運行,而留下一個盡量小的內核,用它來完成操作系統最基本的核心功能,稱這種技術為微內核技術。在微內核中通常提供了進程(線程)管理、低級存儲器管理、中斷和陷入處理等功能。 24微內核操作系統具有哪些優點它為何能有這些優點 答:1)提高了系統的可擴展性 2)增強了系統的可靠性 3)可移植性 4)提供了對分布式系統的支持 5)融入了面向對象技術 第二章 進程管理1. 什么是前趨圖為什么要引入前趨圖 答:前趨圖(Precedence Graph)是一個有向無循環圖,記為DAG(Direct

13、ed Acyclic Graph),用于描述進程之間執行的前后關系。 2. 試畫出下面4條語句的前趨圖:S1S1: a:=x+y; S4S3S2: b:=z+1; S2S3: c:=a-b; S4: w:=c+1; 3. 什么程序并發執行會產生間斷性特征 答:程序在并發執行時,由于它們共享系統資源,為完成同一項任務需要相互合作,致使這些并發執行的進程之間,形成了相互制約關系,從而使得進程在執行期間出現間斷性。 4程序并發執行時為什么會失去封閉性和可再現性 答:程序并發執行時,多個程序共享系統中的各種資源,因而這些資源的狀態由多個程序改變,致使程序運行失去了封閉性,也會導致其失去可再現性。 5在

14、操作系統中為什么要引入進程概念它會產生什么樣的影響 答:為了使程序在多道程序環境下能并發執行,并對并發執行的程序加以控制和描述,在操作系統中引入了進程概念。 影響: 使程序的并發執行得以實行。 6試從動態性,并發性和獨立性上比較進程和程序 答:(1)動態性是進程最基本的特性,表現為由創建而產生,由調度而執行,因得不到資源而暫停執行,由撤銷而消亡。進程有一定的生命期,而程序只是一組有序的指令集合,是靜態實體。 (2)并發性是進程的重要特征,同時也是OS 的重要特征。引入進程的目的正是為了使其程序能和其它進程的程序并發執行,而程序是不能并發執行的。 (3)獨立性是指進程實體是一個能獨立運行的基本單

15、位,也是系統中獨立獲得資源和獨立調度的基本單位。對于未建立任何進程的程序,不能作為獨立單位參加運行。 7試說明PCB 的作用,為什么說PCB 是進程存在的唯一標志 答:PCB 是進程實體的一部分,是操作系統中最重要的記錄型數據結構。作用是使一個在多道程序環境下不能獨立運行的程序,成為一個能獨立運行的基本單位,成為能與其它進程并發執行的進程。OS是根據PCB對并發執行的進程進行控制和管理的。 8試說明進程在三個基本狀態之間轉換的典型原因。 答:(1)進程的三個基本狀態是:執行狀態、就緒狀態和阻塞狀態。就緒狀態:該進程運行所需的除CPU以外一切條件都得到滿足,只要獲得CPU資源,便立即執行。執行狀

16、態:進程已獲得CPU,程序正在執行。在單處理機系統中,只能有一個進程處于執行狀態;在多處理機系統中,則有多個進程處于執行狀態。阻塞狀態:正在執行的進程由于發生某事件而暫時無法繼續執行,便放棄CPU而處于暫停狀態(阻塞)。此時即使分配給它處理機,它也不能運行。 (2)三個基本狀態之間的轉換圖原因如下:執行阻塞某事件發生(I/O請求)某事件被解除(I/O完成)時間片用完進程調度把CPU分配給進程1234圖 進程的三種基本狀態及其轉換原因就緒 圖中:1就緒狀態執行狀態:進程分配到CPU資源 2執行狀態就緒狀態:時間片用完 3執行狀態阻塞狀態:I/O請求 4阻塞狀態就緒狀態:I/O完成9為什么要引入掛

17、起狀態該狀態有哪些性質 答:引入掛起狀態處于五種不同的需要: 終端用戶需要,父進程需要,操作系統需要,對換需要和負荷調節需要。處于掛起狀態的進程不能接收處理機調度。 10在進行進程切換時,所要保存的處理機狀態信息有哪些 答:進行進程切換時,所要保存的處理機狀態信息有: (1)進程當前暫存信息 (2)下一指令地址信息 (3)進程狀態信息 (4)過程和系統調用參數及調用地址信息。 11試說明引起進程創建的主要事件。 答:引起進程創建的主要事件有:用戶登錄、作業調度、提供服務、應用請求。 12試說明引起進程被撤銷的主要事件。 答:引起進程被撤銷的主要事件有:正常結束、異常結束(越界錯誤、保護錯、非法

18、指令、特權指令錯、運行超時、等待超時、算術運算錯、I/O 故障)、外界干預(操作員或操作系統干預、父進程請求、父進程終止)。 13在創建一個進程時所要完成的主要工作是什么 答: (1)OS發現請求創建新進程事件后,調用進程創建原語Creat(); (2)申請空白PCB; (3)為新進程分配資源; (4)初始化進程控制塊; (5)將新進程插入就緒隊列. 14在撤銷一個進程時所要完成的主要工作是什么 答: (1)根據被終止進程標識符,從PCB 集中檢索出進程PCB,讀出該進程狀態。 (2)若被終止進程處于執行狀態,立即終止該進程的執行,置調度標志真,指示該進程被終止后重新調度。 (3)若該進程還有

19、子進程,應將所有子孫進程終止,以防它們成為不可控進程。 (4)將被終止進程擁有的全部資源,歸還給父進程,或歸還給系統。 (5)將被終止進程PCB 從所在隊列或列表中移出,等待其它程序搜集信息。 15試說明引起進程阻塞戒被喚醒的主要事件是什么 答:a. 請求系統服務;b. 啟動某種操作;c. 新數據尚未到達;d. 無新工作可做. 16進程在運行時存在哪兩種形式的制約?并舉例說明之。 答: (1)間接相互制約關系。舉例:有兩進程A和B,如果A 提出打印請求,系統已把唯一的一臺打印機分配給了進程B,則進程A 只能阻塞;一旦B 釋放打印機,A才由阻塞改為就緒。 (2)直接相互制約關系。舉例:有輸入進程

20、A 通過單緩沖向進程B 提供數據。當緩沖空時,計算進程因不能獲得所需數據而阻塞,當進程A 把數據輸入緩沖區后,便喚醒進程B;反之,當緩沖區已滿時,進程A 因沒有緩沖區放數據而阻塞,進程B 將緩沖區數據取走后便喚醒A。 17為什么進程在進入臨界區之前應先執行“進入區”代碼?而在退出前又要執行“退出區”代碼 答:為了實現多個進程對臨界資源的互斥訪問,必須在臨界區前面增加一段用于檢查欲訪問的臨界資源是否正被訪問的代碼,如果未被訪問,該進程便可進入臨界區對資源進行訪問,并設置正被訪問標志,如果正被訪問,則本進程不能進入臨界區,實現這一功能的代碼為" 在退出臨界區后,必須執行"退出區

21、"代碼,用于恢復未被訪問標志,使其它進程能再訪問此臨界資源。 18. 同步機構應遵循哪些基本準則為什么 答:(1)同步機構應遵循的基本準則是:空閑讓進、忙則等待、有限等待、讓權等待。空閑讓進:當無進程在互斥區時,任何有權使用互斥區的進程可進入忙則等待:不允許兩個以上的進程同時進入互斥區有限等待:任何進入互斥區的要求應在有限的時間內得到滿足讓權等待:處于等待狀態的進程應放棄占用CPU,以使其他進程有機會得到CPU的使用權(2)原因:為實現進程互斥進入自己的臨界區。 19. 試從物理概念上說明記錄型信號量wait和signal。 答:wait(S):當>0 時,表示目前系統中這類資

22、源還有可用的。執行一次wait操作,意味著進程請求一個單位的該類資源,使系統中可供分配的該類資源減少一個,因此描述為:=;當<0時,表示該類資源已分配完畢,進程應調用block原語自我阻塞,放棄處理機,并插入到信號量鏈表中。 signal(S):執行一次signal操作,意味著釋放一個單位的可用資源,使系統中可供分配的該類資源數增加一個,故執行:=+1 操作。若加1 后0,則表示在該信號量鏈表中,仍有等待該資源的進程被阻塞,因此應調用wakeup 原語,將鏈表中的第一個等待進程喚醒。 20你認為整型信號量機制是否完全遵循了同步機構的四條準則 答:整型信號量機制不完全遵循同步機制的四條準則

23、,它不滿足“讓權等待”準則。 21如何利用信號量機制來實現多個進程對臨界資源的互斥訪問?并舉例說明之。 答:為使多個進程互斥訪問某臨界資源,只需為該資源設置一互斥信號量mutex,并設其初值為1,然后將各進程訪問該資源的臨界區CS置于wait(mutex)和signal(mutex)操作之間即可。這樣,每個欲訪問該臨界資源的進程在進入臨界區之前,都要先對mutex 執行wait 操作,若該資源此刻未被訪問,本次wait 操作必然成功,進程便可進入自己的臨界區,這時若再有其他進程也欲進入自己的臨界區,此時由于對mutex 執行wait操作定會失敗,因而該進程阻塞,從而保證了該臨界資源能被互斥訪問

24、。當訪問臨界資源的進程退出臨界區后,應對mutex執行signal 操作,釋放該臨界資源。利用信號量實現進程互斥的進程描述如下: Var mutex: semaphore:=1; begin parbegin process 1: begin repeat wait(mutex); critical section signal(mutex); remainder seetion until false; end process 2: begin repeat wait(mutex); critical section signal(mutex); remainder section unti

25、l false; end parend 22試寫出相應的程序來描述圖2-17所示的前驅圖。 答:(a)Var a, b, c, d, e, f, g, h; semaphore:= 0, 0, 0, 0, 0, 0, 0, 0; begin parbegin begin S1; signal(a); signal(b); end; begin wait(a); S2; signal(c); signal(d); end; begin wait(b); S3; signal(e); end; begin wait(c); S4; signal(f); end; begin wait(d); S5

26、; signal(g); end; begin wait(e); S6; signal(h); end; begin wait(f); wait(g); wait(h); S7; end; parend end (b)Var a, b, c, d, e, f, g, h,i,j; semaphore:= 0, 0, 0, 0, 0, 0, 0,0,0, 0; begin parbegin begin S1; signal(a); signal(b); end; begin wait(a); S2; signal(c); signal(d); end; begin wait(b); S3; si

27、gnal(e); signal(f); end; begin wait(c); S4; signal(g); end; begin wait(d); S5; signal(h); end; begin wait(e); S6; signal(i); end; begin wait(f); S7; signal(j); end; begin wait(g);wait(h); wait(i); wait(j); S8; end; parend end 23在生產者消費者問題中,如果缺少了signal(full)戒signal(empty),對執行結果有何影響 答:如果缺少signal(full),

28、那么表明從第一個生產者進程開始就沒有改變信號量full 值,即使緩沖池產品已滿,但full 值還是0,這樣消費者進程執行wait(full)時認為緩沖池是空而取不到產品,消費者進程一直處于等待狀態。 如果缺少signal(empty),在生產者進程向n個緩沖區投滿產品后消費者進程才開始從中取產品,這時empty=0,full=n,那么每當消費者進程取走一個產品empty 值并不改變,直到緩沖池取空了,empty 值也是0,即使目前緩沖池有n 個空緩沖區,生產者進程要想 再往緩沖池中投放產品也會因為申請不到空緩沖區被阻塞。 24在生產消費者問題中,如果將兩個wait 操作即wait(full)和

29、wait(mutex)互換位置,戒者將signal(mutex)與signal(full)互換位置,結果如何 答:將wait(full)和wait(mutex)互換位置后,可能引起死鎖。考慮系統中緩沖區全滿時,若一生產者進程先執行了wait(mutex)操作并獲得成功,則當再執行wait(empty)操作時,它將因失敗而進入阻塞狀態,它期待消費者進程執行signal(empty)來喚醒自己,在此之前,它不可能執行signal(mutex)操作,從而使試圖通過執行wait(mutex)操作而進入自己的臨界區的其他生產者和所有消費者進程全部進入阻塞狀態,這樣容易引起系統死鎖。若signal(mut

30、ex)和signal(full)互換位置后只是影響進程對臨界資源的釋放次序,而不會引起系統死鎖,因此可以互換位置。 25我們在為某一臨界資源設置一把鎖W,當W=1時表示關鎖,當W=0時表示鎖已打開。試寫出開鎖和關鎖的原語,并利用他們實現互斥。 答:整型信號量:lock(W): while W=1 do no-op W:=1; unlock(W): W:=0; 記錄型信號量:lock(W): W:=W+1; if(W>1) then block(W, L) unlock(W): W:=W-1; if(W>0) then wakeup(W, L) 例子: Var W:semaphore

31、:=0; begin repeat lock(W); critical section unlock(W); remainder section until false; end 26試修改下面生產者消費者問題解法中的錯諢: 答: producer: begin repeat producer an item in nextp; wait(mutex); wait(full); /* 應為wait(empty),而且還應該在wait(mutex)的前面 */ buffer(in):=nextp; /* 緩沖池數組游標應前移: in:=(in+1) mod n; */ signal(mutex)

32、; /* signal(full); */ until false; end consumer: begin repeat wait(mutex); wait(empty); /* 應為wait(full),而且還應該在wait(mutex)的前面 */ nextc:=buffer(out); out:=out+1; /* 考慮循環,應改為: out:=(out+1) mod n; */ signal(mutex);/* signal(empty); */ consumer item in nextc; until false; end 27試利用記錄型信號量寫出一個丌會出現死鎖的哲學家進餐問

33、題的算法。答:Var chopstick:array0,4 of semaphore; 所有信號量均被初始化為1,第i 位哲學家的活動可描述為: Repeat Wait(chopsticki); Wait(. chopstick(i+1) mod 5); ; Signal(chopsticki); Signal(chopstick(i+1) mod 5) ; Think; 11 Until false; 28在測量控制系統中的數據采集任務,把所采集的數據送一單緩沖區;計算任務從該單緩沖中叏出數據進行計算.試寫出利用信號量機制實現兩者共享單緩沖的同步算法。 答: a. Var mutex, em

34、pty, full: semaphore:=1, 1, 0; gather: begin repeat gather data in nextp; wait(empty); wait(mutex); buffer:=nextp; signal(mutex); signal(full); until false; end compute: begin repeat wait(full); wait(mutex); nextc:=buffer; signal(mutex); signal(empty); compute data in nextc; until false; end b. Var

35、empty, full: semaphore:=1, 0; gather: begin repeat gather data in nextp; wait(empty); buffer:=nextp; signal(full); until false; end compute: begin repeat wait(full); nextc:=buffer; signal(empty); compute data in nextc; until false; end 29畫圖說明管程由哪幾部分組成,為什么要引入條件發量 答:(1)管程由四部分組成:管程的名稱;局部于管程內部的共享數據結構說明;

36、對該數據結構進行操作的一組過程;對局部于管程內部的共享數據設置初始值的語句; (2)當一個進程調用了管程,在管程中時被阻塞或掛起,直到阻塞或掛起的原因解除,而在此期間,如果該進程不釋放管程,則其它進程無法進入管程,被迫長時間地等待。為了解決這個問題,引入了條件變量condition。 為此在管程內部可以說明和使用一種特殊類型的變量,稱作條件變量,定義格式如下: VAR x : condition; .,n-1 of item; in,out: integer:=0,0; begin parbegin producer: begin repeat produce an item in nextp

37、; wait(empty); wait(s1,s2,s3,.,sn); .,sn為執行生產者進程除empty 外其余的條件 wait(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full); signal(s1,s2,s3,.,sn); until false; end consumer: begin repeat wait(full); wait(k1,k2,k3,.,kn); .,kn 為執行消費者進程除full 外其余的條件 wait(mutex); nextc:=buffer(out); out:

38、=(out+1) mod n; signal(mutex); signal(empty); signal(k1,k2,k3,.,kn); consume the item in nextc; until false; end parend end 32什么是信號量集?試利用信號量集寫出讀者一寫者問題的解法。 答:對AND信號量加以擴充,形成的信號量集合的讀寫機制。 解法:Var RN integer; L,mx: semaphore:=RN,1; begin parbegin reader:begin repeat Swait(L,1,1); Swait(mx,1,1); perform re

39、ad operation; Ssignal(L,1); until false end writer:begin repeat Swait(mx,1,1;L,RN,0); perform write operation; Ssignal(mx,1); until false end parend end 33試比較進程間的低級不高級通信工具。 答:用戶用低級通信工具實現進程通信很不方便,效率低,通信對用戶不透明,所有操作都 必須由程序員來實現,而高級通信工具彌補了這些缺陷,用戶直接利用操作系統提供的一組通信命令,高效地傳送大量的數據。 34當前有哪幾種高級通信機制 答:共享存儲器系統、消息傳遞

40、系統以及管道通信系統。 35消息隊列通信機制有哪幾方面的功能 答:(1)構成消息(2)發送消息(3)接收梢息(4)互斥與同步。 36為什么要在OS 中引入線程 答:在操作系統中引入線程,則是為了減少程序在并發執行時所付出的時空開銷,使OS具 有更好的并發性,提高CPU的利用率。進程是分配資源的基本單位,而線程則是系統調度的基本單位。 37試說明線程具有哪些屬性 答:(1)輕型實體(2)獨立調度和分派的基本單位(3)可并發執行(4)共享進程資源。 38. 試從調度性,并發性,擁有資源及系統開銷方面對進程和線程進行比較。 答: (1)調度性。線程在OS中作為調度和分派的基本單位,進程只作為資源擁有

41、的基本單位。 (2)并發性。進程可以并發執行,一個進程的多個線程也可并發執行。 (3)擁有資源。進程始終是擁有資源的基本單位,線程只擁有運行時必不可少的資源,本身基本不擁有系統資源,但可以訪問隸屬進程的資源。 (4)系統開銷。操作系統在創建、撤消和切換進程時付出的開銷顯著大于線程。 39. 為了在多線程OS 中實現進程之間的同步不通信,通常提供了哪幾種同步機制 答:同步功能可以控制程序流并訪問共享數據,從而并發執行多個線程。共有四種同步模型: 互斥鎖、讀寫鎖、條件變量和信號。 40用亍實現線程同步的私用信號量和公用信號量之間有何差別 答: (1)私用信號量。當某線程需利用信號量實現同一進程中各

42、線程之間的同步時,可調用創建信號量的命令來創建一個私用信號量,其數據結構存放在應用程序的地址空間中。 (2)公用信號量。公用信號量是為實現不同進程間或不同進程中各線程之間的同步而設置的。其數據結構是存放在受保護的系統存儲區中,由OS為它分配空間并進行管理。 41何謂用戶級線程和內核支持線程 答: (1)用戶級線程:僅存在于用戶空間中的線程,無須內核支持。這種線程的創建、撤銷、線程間的同步與通信等功能,都無需利用系統調用實現。用戶級線程的切換通常發生在一個應用進程的諸多線程之間,同樣無需內核支持。 (2)內核支持線程:在內核支持下運行的線程。無論是用戶進程中的線程,還是系統線程中的線 程,其創建

43、、撤銷和切換等都是依靠內核,在內核空間中實現的。在內核空間里還為每個內核支持線程設置了線程控制塊,內核根據該控制塊感知某線程的存在并實施控制。 42試說明用戶級線程的實現方法。 答:用戶級線程是在用戶空間中的實現的,運行在“運行時系統”與“內核控制線程”的中間系統上。運行時系統用于管理和控制線程的函數的集合。內核控制線程或輕型進程LWP可通過系統調用獲得內核提供服務,利用LWP進程作為中間系統。 43試說明內核支持線程的實現方法。 答:系統在創建新進程時,分配一個任務數據區PTDA,其中包括若干個線程控制塊TCB空間。創建一個線程分配一個TCB,有關信息寫入TCB,為之分配必要的資源。當PTD

44、A 中的TCB 用完,而進程又有新線程時,只要所創建的線程數目未超過系統允許值,系統可在為之分配新的TCB;在撤銷一個線程時,也應回收線程的所有資源和TCB。 第三章 處理器調度與死鎖1高級調度不低級調度的主要任務是什么為什么要引入中級調度 答:高級調度的主要任務是根據某種算法,把外存上處于后備隊列中的那些作業調入內存。低級調度是保存處理機的現場信息,按某種算法先取進程,再把處理器分配給進程。引入中級調度的主要目的是為了提高內存利用率和系統吞吐量。使那些暫時不能運行的進程不再占用內存資源,將它們調至外存等待,把進程狀態改為就緒駐外存狀態或掛起狀態。 2何謂作業、作業步和作業流 答:作業包含通常

45、的程序和數據,還配有作業說明書。系統根據該說明書對程序的運行進行控制。批處理系統中是以作業為基本單位從外存調入內存。 作業步是指每個作業運行期間都必須經過若干個相對獨立相互關聯的順序加工的步驟。 作業流是指若干個作業進入系統后依次存放在外存上形成的輸入作業流;在操作系統的控制下,逐個作業進程處理,于是形成了處理作業流。 3在什么情況下需要使用作業控制塊JCB其中包含了哪些內容 答:每當作業進入系統時,系統便為每個作業建立一個作業控制塊JCB,根據作業類型將它插入到相應的后備隊列中。 JCB 包含的內容通常有:1) 作業標識2)用戶名稱3)用戶賬戶4)作業類型(CPU繁忙型、I/O芳名型、批量型

46、、終端型)5)作業狀態6)調度信息(優先級、作業已運行)7)資源要求8)進入系統時間9) 開始處理時間10) 作業完成時間11) 作業退出時間12) 資源使用情況等 4在作業調度中應如何確定接納多少個作業和接納哪些作業 答:作業調度每次接納進入內存的作業數,取決于多道程序度。應將哪些作業從外存調入內存,取決于采用的調度算法。最簡單的是先來服務調度算法,較常用的是短作業優先調度算法和基于作業優先級的調度算法。 5試說明低級調度的主要功能。 答:(1)保存處理機的現場信息(2)按某種算法選取進程(3)把處理機分配給進程。 6在搶占調度方式中,搶占的原則是什么 答:搶占的原則有:時間片原則、優先權原

47、則、短作業優先權原則等。 7在選擇調度方式和調度算法時,應遵循的準則是什么 答: (1)面向用戶的準則:周轉時間短、響應時間快、截止時間的保證、優先權準則。 (2)面向系統的準則:系統吞吐量高、處理機利用率好、各類資源的平衡利用。 8在批處理系統、分時系統和實時系統中,各采用哪幾種進程(作業)調度算法 答:以下在各個系統中主要采用的調度算法有:批處理系統的調度算法:短作業優先、優先權、高響應比優先、多級反饋隊列調度算法。 分時系統的調度算法:時間片輪轉法。 實時系統的調度算法:最早截止時間優先即EDF、最低松弛度優先即LLF算法。 9何謂靜態和動態優先級確定靜態優先級的依據是什么 答:靜態優先

48、級是指在創建進程時確定且在進程的整個運行期間保持不變的優先級。 動態優先級是指在創建進程時賦予的優先權,可以隨進程推進或隨其等待時間增加而改變的優先級,可以獲得更好的調度性能。 確定進程優先級的依據:進程類型、進程對資源的需求和用戶要求。 10試比較FCFS和SPF兩種進程調度算法。 答:相同點:兩種調度算法都可以用于作業調度和進程調度。 不同點:FCFS調度算法每次都從后備隊列中選擇一個或多個最先進入該隊列的作業,將它們調入內存、分配資源、創建進程、插入到就緒隊列。該算法有利于長作業/進程,不利于短作業/進程。SPF算法每次調度都從后備隊列中選擇一個或若干個估計運行時間最短的作業,調入內存中

49、運行。該算法有利于短作業/進程,不利于長作業/進程。 11在時間片輪轉法中,應如何確定時間片的大小 答:時間片應略大于一次典型的交互需要的時間。一般應考慮三個因素:系統對相應時間的要求、就緒隊列中進程的數目和系統的處理能力。 12通過一個例子來說明通常的優先級調度算法丌能適用亍實時系統 答:實時系統的調度算法很多,主要是基于任務的開始截止時間和任務緊急/松弛程度的任務優先級調度算法,通常的優先級調度算法不能滿足實時系統的調度實時性要求而不適用。 13為什么說多級反饋隊列調度算法能較好地滿足各方面用戶的需求?答:能較好地滿足各種類型用戶(進程)的需要:(1)短批處理作業:新進入的進程首先進入優先

50、權最高的隊列,如果作業需要運行的時間很短,則在較高的優先權隊列中幾次運行就可以完成;(2)終端(交互)型作業用戶:由于終端型的作業用戶提交的作業大多屬于交互型作業,作業通常較小,系統只要能使得這些作業在第一隊列所規定的時間片內完成,便可以使得終端型作業用戶都感到滿意;(3)(計算型)長批處理作業用戶:計算型進程每次運行后都下移一個隊列,時間片也隨之變長,直到獲得最長的時間片,用戶不必擔心其作業長而得不到處理。15. 按調度方式可將實時調度算法分為哪幾種?答:按調度方式不同,可分為非搶占調度算法和搶占調度算法兩種。18. 何謂死鎖產生死鎖的原因和必要條件是什么答:a.死鎖是指多個進程因競爭資源而

51、造成的一種僵局,若無外力作用,這些進程都將永遠不能再向前推進;b.產生死鎖的原因有二,一是競爭資源,二是進程推進順序非法;c.必要條件是: 互斥條件,請求和保持條件,不剝奪條件和環路等待條件。19在解決死鎖問題的幾個方法中,哪種方法最易于實現哪種方法是資源利用率最高答:解決/處理死鎖的方法有預防死鎖、避免死鎖、檢測和解除死鎖,其中預防死鎖方法最容易實現,但由于所施加的限制條件過于嚴格,會導致系統資源利用率和系統吞吐量降低;而避免死鎖方法可是系統獲得較高的資源利用率和系統吞吐量。20. 請詳細說明可通過哪些途徑預防死鎖?答:a.摒棄"請求和保持"條件:系統規定所有進程開始運行

52、之前,都必須一次性地申請其在整個運行過程所需的全部資源,但在分配資源時,只要有一種資源不能滿足某進程的要求,即使其它所需的各資源都空閑,也不分配給該進程,而讓該進程等待;b.摒棄"不剝奪"條件:系統規定,進程是逐個地提出對資源的要求的。當一個已經保持了某些資源的進程,再提出新的資源請求而不能立即得到滿足時,必須釋放它已經保持了的所有資源,待以后需要時再重新申請;c.摒棄"環路等待"條件:系統將所有資源按類型進行線性排序,并賦予不同的序號,且所有進程對資源的請求必須嚴格按序號遞增的次序提出,這樣,在所形成的資源分配圖中,不可能再出現環路,因而摒棄了&quo

53、t;環路等待"條件。21在銀行家算法的例子中,如果 P0 發出的請求向量由 Request(0 , 2 , 0) 改為 Request ( 0 , 1 , 0 ),問系統可否將資源分配給它 答:P0發出請求向量Requst0(0,1,0),按銀行家算法進行檢查: Request0(0, 1, 0)Need0 (7, 4, 3); Request0(0, 1, 0)Available(2, 3, 0); 系統暫時先假定可為P0分配資源,修改Available, Allocation1和Need1向量在下面數據結構中的數值:Availablej=Availablej- Requestij

54、;Allocationi,j=Allocationi,j+Requestij; Needi,j=Needi,j- Requestij;即:計算結果為: Available0 = Available0 (2,3,0)- Request0(0,1,0)= (2,2,0) Allocation0=Allocation0 (0,1,0) + Request0 (0,1,0)= (0,2,0) Need0=Need0 (7,4,3) - Request0 (0,1,0)= (7,3,3)進程WorkA B CAllocationA B CNeedA B CWork+AllocationA B CFini

55、shP010 5 70 2 0 7 3 3 10 7 7TrueP15 2 23 0 2 0 2 08 2 4TrueP210 3 73 0 2 6 0 013 3 9TrueP37 3 32 1 1 0 1 19 4 4TrueP47 3 50 0 2 4 3 17 3 7True可以找到一個安全序列P1,P3,P4,P2,P0 ,所以系統是安全的,系統可以立即將P1所申請的資源(0,1,0)分配給它。給P1分配資源之后,系統的資源數目Available=(2,2,0)22. 在銀行家算法中,若出現下述資源分配情:ProcessAllocationNeedAvailableP0003200121622P

溫馨提示

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

評論

0/150

提交評論