課本爲《計算機操作系統(第四版)》,湯小丹 樑紅兵 哲鳳屏 湯子瀛 編著 課後習題答案(第一章到第五章)

《計算機操作系統》課後習題答案

 

      注:課本爲《計算機操作系統(第四版)》,湯小丹 樑紅兵 哲鳳屏 湯子瀛 編著,西安電子科技大學出版社出版

 

第一章

1.設計現代OS的主要目標是什麼?

答:(1)有效性 (2)方便性 (3)可擴充性 (4)開放性

2.OS的作用可表現在哪幾個方面?

答:(1)OS作爲用戶與計算機硬件系統之間的接口

(2)OS作爲計算機系統資源的管理者

(3)OS實現了對計算機資源的抽象

3.爲什麼說OS實現了對計算機資源的抽象?

答:OS首先在裸機上覆蓋一層I/O設備管理軟件,實現了對計算機硬件操作的第一層次抽

象;在第一層軟件上再覆蓋文件管理軟件,實現了對硬件資源操作的第二層次抽象。OS 通

過在計算機硬件上安裝多層系統軟件,增強了系統功能,隱藏了對硬件操作的細節,由它們

共同實現了對計算機資源的抽象。

4.試說明推動多道批處理系統形成和發展的主要動力是什麼?

答:主要動力來源於四個方面的社會需求與技術發展:

(1)不斷提高計算機資源的利用率;

(2)方便用戶;

(3)器件的不斷更新換代;

(4)計算機體系結構的不斷髮展。

5.何謂脫機I/O和聯機I/O?

答:脫機I/O 是指事先將裝有用戶程序和數據的紙帶或卡片裝入紙帶輸入機或卡片機,在

外圍機的控制下,把紙帶或卡片上的數據或程序輸入到磁帶上。該方式下的輸入輸出由外圍

機控制完成,是在脫離主機的情況下進行的。

而聯機I/O方式是指程序和數據的輸入輸出都是在主機的直接控制下進行的。

6.試說明推動分時系統形成和發展的主要動力是什麼?

答:推動分時系統形成和發展的主要動力是更好地滿足用戶的需要。主要表現在:CPU 的

分時使用縮短了作業的平均週轉時間;人機交互能力使用戶能直接控制自己的作業;主機的

共享使多用戶能同時使用同一臺計算機,獨立地處理自己的作業。

7.實現分時系統的關鍵問題是什麼?應如何解決?

答:關鍵問題是當用戶在自己的終端上鍵入命令時,系統應能及時接收並及時處理該命令,

在用戶能接受的時延內將結果返回給用戶。

解決方法:針對及時接收問題,可以在系統中設置多路卡,使主機能同時接收用戶從各個終

端上輸入的數據;爲每個終端配置緩衝區,暫存用戶鍵入的命令或數據。針對及時處理問題,

應使所有的用戶作業都直接進入內存,並且爲每個作業分配一個時間片,允許作業只在自己

的時間片內運行,這樣在不長的時間內,能使每個作業都運行一次。

8.爲什麼要引入實時OS?

答:實時操作系統是指系統能及時響應外部事件的請求,在規定的時間內完成對該事件的處

理,並控制所有實時任務協調一致地運行。引入實時OS 是爲了滿足應用的需求,更好地滿

足實時控制領域和實時信息處理領域的需要。

9.什麼是硬實時任務和軟實時任務?試舉例說明。

答:硬實時任務是指系統必須滿足任務對截止時間的要求,否則可能出現難以預測的結果。

舉例來說,運載火箭的控制等。

軟實時任務是指它的截止時間並不嚴格,偶爾錯過了任務的截止時間,對系統產生的影

響不大。舉例:網頁內容的更新、火車售票系統。

10.在8位微機和16位微機中,佔據了統治地位的是什麼操作系統?

答:單用戶單任務操作系統,其中最具代表性的是CP/M和MS-DOS.

11.試列出Windows OS 中五個主要版本,並說明它們分別較之前一個版本有何改進。

答:

(1)Microsoft Windows 1.0是微軟公司在個人電腦上開發圖形界面的首次嘗試。

(2)Windows 95是混合的16位/32位系統,第一個支持32位。帶來了更強大、更穩

定、更實用的桌面圖形用戶界面,結束了桌面操作系統間的競爭。

(3)Windows 98是微軟公司的混合16位/32位Windows 操作系統,改良了硬件標準

的支持,革新了內存管理,是多進程操作系統。

(4)Windows XP是基於Windows 2000的產品,擁有新用戶圖形界面月神Luna。簡

化了用戶安全特性,整合了防火牆。

(5)Windows Vista 包含了上百種新功能;特別是新版圖形用戶界面和Windows Aero

全新界面風格、加強的搜尋功能(Windows Indexing Service)、新媒體創作工具以及重

新設計的網絡、音頻、輸出(打印)和顯示子系統。。

12.試從交互性、及時性以及可靠性方面,將分時系統與實時系統進行比較。

答:(1)及時性:實時信息處理系統對實時性的要求與分時系統類似,都是以人所能接受

的等待時間來確定;而實時控制系統的及時性,是以控制對象所要求的開始截止時間或完成

截止時間來確定的,一般爲秒級到毫秒級,甚至有的要低於100微妙。

(2)交互性:實時信息處理系統具有交互性,但人與系統的交互僅限於訪問系統中某

些特定的專用服務程序。不像分時系統那樣能向終端用戶提供數據和資源共享等服務。

(3)可靠性:分時系統也要求系統可靠,但相比之下,實時系統則要求系統具有高度

的可靠性。因爲任何差錯都可能帶來巨大的經濟損失,甚至是災難性後果,所以在實時系統

中,往往都採取了多級容錯措施保障系統的安全性及數據的安全性。

13.OS有哪幾大特徵?其最基本的特徵是什麼?

答:併發性、共享性、虛擬性和異步性四個基本特徵;最基本的特徵是併發性。

14.處理機管理有哪些主要功能?它們的主要任務是什麼?

答:處理機管理的主要功能是:進程管理、進程同步、進程通信和處理機調度;

進程管理:爲作業創建進程,撤銷已結束進程,控制進程在運行過程中的狀態轉換。

進程同步:爲多個進程(含線程)的運行______________進行協調。

通信:用來實現在相互合作的進程之間的信息交換。

處理機調度:

(1)作業調度。從後備隊裏按照一定的算法,選出若干個作業,爲他們分配運行所需

的資源(首選是分配內存)。

(2)進程調度:從進程的就緒隊列中,按照一定算法選出一個進程,把處理機分配給

它,並設置運行現場,使進程投入執行。

15.內存管理有哪些主要功能?他們的主要任務是什麼?

北京石油化工學院信息工程學院計算機系3/48

《計算機操作系統》習題參考答案餘有明與計07和計G09的同學們編著 3/48

答:內存管理的主要功能有:內存分配、內存保護、地址映射和內存擴充。

內存分配:爲每道程序分配內存。

內存保護:確保每道用戶程序都只在自己的內存空間運行,彼此互不干擾。

地址映射:將地址空間的邏輯地址轉換爲內存空間與對應的物理地址。

內存擴充:用於實現請求調用功能,置換功能等。

16.設備管理有哪些主要功能?其主要任務是什麼?

答:主要功能有: 緩衝管理、設備分配和設備處理以及虛擬設備等。

主要任務: 完成用戶提出的I/O 請求,爲用戶分配I/O 設備;提高CPU 和I/O 設

備的利用率;提高I/O速度;以及方便用戶使用I/O設備.

17.文件管理有哪些主要功能?其主要任務是什麼?

答:文件管理主要功能:文件存儲空間的管理、目錄管理、文件的讀/寫管理和保護。

文件管理的主要任務:管理用戶文件和系統文件,方便用戶使用,保證文件安全性。

18.是什麼原因使操作系統具有異步性特徵?

答:操作系統的異步性體現在三個方面:一是進程的異步性,進程以人們不可預知的速度向

前推進,二是程序的不可再現性,即程序執行的結果有時是不確定的,三是程序執行時間的

不可預知性,即每個程序何時執行,執行順序以及完成時間是不確定的。

19.模塊接口法存在哪些問題?可通過什麼樣的途徑來解決?

答:(1)模塊接口法存在的問題:①在OS設計時,各模塊間的接口規定很難滿足在模塊完

成後對接口的實際需求。②在OS 設計階段,設計者必須做出一系列的決定,每一個決定必

須建立在上一個決定的基礎上。但模塊化結構設計的各模塊設計齊頭並進,無法尋找可靠的

順序,造成各種決定的無序性,使程序設計人員很難做到設計中的每一步決定都建立在可靠

的基礎上,因此模塊接口法被稱爲“無序模塊法”。

(2)解決途徑:將模塊接口法的決定順序無序變有序,引入有序分層法。

20.在微內核OS中,爲什麼要採用客戶/服務器模式?

答:C/S 模式具有獨特的優點:⑴數據的分佈處理和存儲。⑵便於集中管理。⑶靈活性和

可擴充性。⑷易於改編應用軟件。

21.試描述什麼是微內核OS。

答:1)足夠小的內核 2)基於客戶/服務器模式

3)應用機制與策略分離原理 4)採用面向對象技術。

22.在基於微內核結構的OS中,應用了哪些新技術?

答:在基於微內核結構的OS 中,採用面向對象的程序設汁技術。

23.何謂微內核技術?在微內核中通常提供了哪些功能?

答:把操作系統中更多的成分和功能放到更高的層次(即用戶模式)中去運行,而留下一個

儘量小的內核,用它來完成操作系統最基本的核心功能,稱這種技術爲微內核技術。在微內

核中通常提供了進程(線程)管理、低級存儲器管理、中斷和陷入處理等功能。

24.微內核操作系統具有哪些優點?它爲何能有這些優點?

答:1)提高了系統的可擴展性

2)增強了系統的可靠性

3)可移植性

4)提供了對分佈式系統的支持

5)融入了面向對象技術

 

第二章

1. 什麼是前趨圖?爲什麼要引入前趨圖?

答:前趨圖(Precedence Graph)是一個有向無循環圖,記爲DAG(Directed Acyclic

Graph),用於描述進程之間執行的前後關係。

2. 畫出下面四條語句的前趨圖:

S1=a:=x+y; S2=b:=z+1; S3=c:=a – b; S4=w:=c+1;

答:其前趨圖爲:

3. 什麼程序併發執行會產生間斷性特徵?

答:程序在併發執行時,由於它們共享系統資源,爲完成同一項任務需要相互合作,致使這

些併發執行的進程之間,形成了相互制約關係,從而使得進程在執行期間出現間斷性。

4.程序併發執行時爲什麼會失去封閉性和可再現性?

答:程序併發執行時,多個程序共享系統中的各種資源,因而這些資源的狀態由多個程序改

變,致使程序運行失去了封閉性,也會導致其失去可再現性。

5.在操作系統中爲什麼要引入進程概念?它會產生什麼樣的影響?

答:爲了使程序在多道程序環境下能併發執行,並對併發執行的程序加以控制和描述,在操

作系統中引入了進程概念。

影響: 使程序的併發執行得以實行。

6.試從動態性,併發性和獨立性上比較進程和程序?

答:(1)動態性是進程最基本的特性,表現爲由創建而產生,由調度而執行,因得不到資源

而暫停執行,由撤銷而消亡。進程有一定的生命期,而程序只是一組有序的指令集合,是靜

態實體。

(2)併發性是進程的重要特徵,同時也是OS 的重要特徵。引入進程的目的正是爲了使

其程序能和其它進程的程序併發執行,而程序是不能併發執行的。

(3)獨立性是指進程實體是一個能獨立運行的基本單位,也是系統中獨立獲得資源和獨

立調度的基本單位。對於未建立任何進程的程序,不能作爲獨立單位參加運行。

7.試說明PCB 的作用,爲什麼說PCB 是進程存在的惟一標誌?

答:PCB 是進程實體的一部分,是操作系統中最重要的記錄型數據結構。作用是使一個在

多道程序環境下不能獨立運行的程序,成爲一個能獨立運行的基本單位,成爲能與其它進程

併發執行的進程。OS是根據PCB對併發執行的進程進行控制和管理的。

8.試說明進程在三個基本狀態之間轉換的典型原因。

答: (1)就緒狀態→執行狀態:進程分配到CPU資源

(2)執行狀態→就緒狀態:時間片用完

(3)執行狀態→阻塞狀態:I/O請求

(4)阻塞狀態→就緒狀態:I/O完成

9.爲什麼要引入掛起狀態?該狀態有哪些性質?

答:引入掛起狀態處於五種不同的需要: 終端用戶需要,父進程需要,操作系統需要,對換

北京石油化工學院信息工程學院計算機系5/48

《計算機操作系統》習題參考答案餘有明與計07和計G09的同學們編著 5/48

需要和負荷調節需要。處於掛起狀態的進程不能接收處理機調度。

10.在進行進程切換時,所要保存的處理機狀態信息有哪些?

答:進行進程切換時,所要保存的處理機狀態信息有:

(1)進程當前暫存信息

(2)下一指令地址信息

(3)進程狀態信息

(4)過程和系統調用參數及調用地址信息。

11.試說明引起進程創建的主要事件。

答:引起進程創建的主要事件有:用戶登錄、作業調度、提供服務、應用請求。

12.試說明引起進程被撤銷的主要事件。

答:引起進程被撤銷的主要事件有:正常結束、異常結束(越界錯誤、保護錯、非法指令、

特權指令錯、運行超時、等待超時、算術運算錯、I/O 故障)、外界干預(操作員或操作系

統干預、父進程請求、父進程終止)。

13.在創建一個進程時所要完成的主要工作是什麼?

答:

(1)OS 發現請求創建新進程事件後,調用進程創建原語Creat();

(2)申請空白PCB;

(3)爲新進程分配資源;

(4)初始化進程控制塊;

(5)將新進程插入就緒隊列.

14.在撤銷一個進程時所要完成的主要工作是什麼?

答:

(1)根據被終止進程標識符,從PCB 集中檢索出進程PCB,讀出該進程狀態。

(2)若被終止進程處於執行狀態,立即終止該進程的執行,置調度標誌真,指示該進程被

終止後重新調度。

(3)若該進程還有子進程,應將所有子孫進程終止,以防它們成爲不可控進程。

(4)將被終止進程擁有的全部資源,歸還給父進程,或歸還給系統。

(5)將被終止進程PCB 從所在隊列或列表中移出,等待其它程序蒐集信息。

15.試說明引起進程阻塞或被喚醒的主要事件是什麼?

答:a. 請求系統服務;b. 啓動某種操作;c. 新數據尚未到達;d. 無新工作可做.

16.進程在運行時存在哪兩種形式的制約?並舉例說明之。

答:

(1)間接相互制約關係。舉例:有兩進程A 和B,如果A 提出打印請求,系統已把唯一的

一臺打印機分配給了進程B,則進程A 只能阻塞;一旦B 釋放打印機,A 才由阻塞改爲就

緒。

(2)直接相互制約關係。舉例:有輸入進程A 通過單緩衝向進程B 提供數據。當緩衝空時,

計算進程因不能獲得所需數據而阻塞,當進程A 把數據輸入緩衝區後,便喚醒進程B;反

之,當緩衝區已滿時,進程A 因沒有緩衝區放數據而阻塞,進程B 將緩衝區數據取走後便

喚醒A。

17.爲什麼進程在進入臨界區之前應先執行“進入區”代碼?而在退出前又要執行“退出

區”代碼?

答:爲了實現多個進程對臨界資源的互斥訪問,必須在臨界區前面增加一段用於檢查欲訪問

的臨界資源是否正被訪問的代碼,如果未被訪問,該進程便可進入臨界區對資源進行訪問,

並設置正被訪問標誌,如果正被訪問,則本進程不能進入臨界區,實現這一功能的代碼爲"

北京石油化工學院信息工程學院計算機系6/48

《計算機操作系統》習題參考答案餘有明與計07和計G09的同學們編著 6/48

進入區"代碼;

在退出臨界區後,必須執行"退出區"代碼,用於恢復未被訪問標誌,使其它進程能再訪問此

臨界資源。

18. 同步機構應遵循哪些基本準則?爲什麼?

答:同步機構應遵循的基本準則是:空閒讓進、忙則等待、有限等待、讓權等待

原因:爲實現進程互斥進入自己的臨界區。

19. 試從物理概念上說明記錄型信號量wait 和signal。

答:wait(S):當S.value>0 時,表示目前系統中這類資源還有可用的。執行一次wait 操

作,意味着進程請求一個單位的該類資源,使系統中可供分配的該類資源減少一個,因此描

述爲S.value:=S.value-1;當S.value<0時,表示該類資源已分配完畢,進程應調用block

原語自我阻塞,放棄處理機,並插入到信號量鏈表S.L中。

signal(S):執行一次signal操作,意味着釋放一個單位的可用資源,使系統中可供分配

的該類資源數增加一個,故執行S.value:=S.value+1 操作。若加1 後S.value≤0,則表

示在該信號量鏈表中,仍有等待該資源的進程被阻塞,因此應調用wakeup 原語,將S.L

鏈表中的第一個等待進程喚醒。

20.你認爲整型信號量機制是否完全遵循了同步機構的四條準則?

答:整型信號量機制不完全遵循同步機制的四條準則,它不滿足“讓權等待”準則。

21.如何利用信號量機制來實現多個進程對臨界資源的互斥訪問?並舉例說明之。

答:爲使多個進程互斥訪問某臨界資源,只需爲該資源設置一互斥信號量mutex,並設其

初值爲1,然後將各進程訪問該資源的臨界區CS置於wait(mutex)和signal(mutex)操作

之間即可。這樣,每個欲訪問該臨界資源的進程在進入臨界區之前,都要先對mutex 執行

wait 操作,若該資源此刻未被訪問,本次wait 操作必然成功,進程便可進入自己的臨界區,

這時若再有其他進程也欲進入自己的臨界區,此時由於對mutex 執行wait操作定會失敗,

因而該進程阻塞,從而保證了該臨界資源能被互斥訪問。當訪問臨界資源的進程退出臨界區

後,應對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

until 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; 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; signal(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),那麼表明從第一個生產者進程開始就沒有改變信號量full 值,

即使緩衝池產品已滿,但full 值還是0,這樣消費者進程執行wait(full)時認爲緩衝池是空

而取不到產品,消費者進程一直處於等待狀態。

如果缺少signal(empty),在生產者進程向n個緩衝區投滿產品後消費者進程纔開始從

中取產品,這時empty=0,full=n,那麼每當消費者進程取走一個產品empty 值並不改變,

直到緩衝池取空了,empty 值也是0,即使目前緩衝池有n 個空緩衝區,生產者進程要想

再往緩衝池中投放產品也會因爲申請不到空緩衝區被阻塞。

24.在生產消費者問題中,如果將兩個wait 操作即wait(full)和wait(mutex)互換位置,

或者將signal(mutex)與signal(full)互換位置,結果如何?

答:將wait(full)和wait(mutex)互換位置後,可能引起死鎖。考慮系統中緩衝區全滿時,

若一生產者進程先執行了wait(mutex)操作並獲得成功,則當再執行wait(empty)操作時,

它將因失敗而進入阻塞狀態,它期待消費者進程執行signal(empty)來喚醒自己,在此之前,

它不可能執行signal(mutex)操作,從而使試圖通過執行wait(mutex)操作而進入自己的臨

界區的其他生產者和所有消費者進程全部進入阻塞狀態,這樣容易引起系統死鎖。

若signal(mutex)和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:=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);

/* 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.試利用記錄型信號量寫出一個不會出現死鎖的哲學家進餐問題的算法.

答:Var chopstick:array[0,…,4] of semaphore;

所有信號量均被初始化爲1,第i 位哲學家的活動可描述爲:

Repeat

Wait(chopstick[i]);

Wait(. chopstick[(i+1) mod 5]);

Ea.t ;

Signal(chopstick[i]);

Signal(chopstick[(i+1) mod 5])

Ea.t ;

Think;

Until false;

 

 

28.在測量控制系統中的數據採集任務,把所採集的數據送一單緩衝區;計算任務從該單

緩衝中取出數據進行計算.試寫出利用信號量機制實現兩者共享單緩衝的同步算法。

答:

a. Var mutex, empty, 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 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.畫圖說明管程由哪幾部分組成,爲什麼要引入條件變量?

答:管程由四部分組成:①管程的名稱;②局部於管程內部的共享數據結構說明;③對該數

據結構進行操作的一組過程;④對局部於管程內部的共享數據設置初始值的語句;

當一個進程調用了管程,在管程中時被阻塞或掛起,直到阻塞或掛起的原因解除,而在此期

間,如果該進程不釋放管程,則其它進程無法進入管程,被迫長時間地等待。爲了解決這個

問題,引入了條件變量condition。

30.如何利用管程來解決生產者與消費者問題?

答:首先建立一個管程,命名爲ProclucerConsumer,包括兩個過程:

(1)Put(item)過程。生產者利用該過程將自己生產的產品放到緩衝池,用整型變

量count 表示在緩衝池中已有的產品數目,當count≥n 時,表示緩衝池已滿,生產者須

等待。

(2)get(item)過程。消費者利用該過程從緩衝池中取出一個產品,當count≤0

時,表示緩衝池中已無可取的產品,消費者應等待。

PC 管程可描述如下:

type producer-consumer =monitor

Var in,out,count:integer;

buffer:array[0,…,n-1]of item;

notfull,notempty:condition;

procedure entry dot(item)

begin

if count>=n then not full.wait;

buffer(in):=nextp;

in:=(in+1)mod n;

count:=count+1;

if notempty.queue then notempty.signal;

end

procedure entry get(item)

begin

if count<=0 then not full.wait;

nextc:=buffer(out);

out:=(out+1)mod n;

count:=count-1;

if notfull.quene then notfull.signal;

end

begin in:=out:=0;

count:=0

end

在利用管程解決生產者一消費者問題時,其中的生產者和消費者可描述爲:

producer: begin

pepeat

produce an inem in nestp

PC.put(item);

until false;

end

consumer: begin

repeat

PC.get(item);

consume the item in enxtc;

until false;

end

31.什麼是AND信號量?試利用AND信號量寫出生產者一消費者問題的解法。

答:爲解決並行帶來的死鎖問題,在wait 操作中引入AND 條件,其基本思想是將進

程在整個運行過程中所需要的所有臨界資源,一次性地全部分配給進程,用完後一次性釋放。

解決生產者-消費者問題可描述如下:

var mutex,empty,full: semaphore:=1,n,0;

buffer: array[0,...,n-1] of item;

in,out: integer:=0,0;

begin

parbegin

producer: begin

repeat

produce an item in nextp;

wait(empty);

wait(s1,s2,s3,...,sn); //s1,s2,...,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); //k1,k2,...,kn 爲執行消費者進程除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;

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 read 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.當前有哪幾種高級通信機制?

答:共享存儲器系統、消息傳遞系統以及管道通信系統。

35.消息隊列通信機制有哪幾方面的功能?

答:(1)構成消息(2)發送消息(3)接收梢息(4)互斥與同步。

36.爲什麼要在OS 中引入線程?

答:在操作系統中引入線程,則是爲了減少程序在併發執行時所付出的時空開銷,使OS具

有更好的併發性,提高CPU的利用率。進程是分配資源的基本單位,而線程則是系統調度的

基本單位。

37.試說明線程具有哪些屬性?

答:(1)輕型實體(2)獨立調度和分派的基本單位(3)可併發執行(4)共享進程資源。

38. 試從調度性,併發性,擁有資源及系統開銷方面對進程和線程進行比較。

答:

(1)調度性。線程在OS 中作爲調度和分派的基本單位,進程只作爲資源擁有的基本單位。

(2)併發性。進程可以併發執行,一個進程的多個線程也可併發執行。

(3)擁有資源。進程始終是擁有資源的基本單位,線程只擁有運行時必不可少的資源,本

身基本不擁有系統資源,但可以訪問隸屬進程的資源。

(4)系統開銷。操作系統在創建、撤消和切換進程時付出的開銷顯著大於線程。

39. 爲了在多線程OS 中實現進程之間的同步與通信,通常提供了哪幾種同步機制?

答:同步功能可以控制程序流並訪問共享數據,從而併發執行多個線程。共有四種同步模型:

互斥鎖、讀寫鎖、條件變量和信號。

40.用於實現線程同步的私用信號量和公用信號量之間有何差別?

答:

(1)私用信號量。當某線程需利用信號量實現同一進程中各線程之間的同步時,可調用創

建信號量的命令來創建一個私用信號量,其數據結構存放在應用程序的地址空間中。

(2)公用信號量。公用信號量是爲實現不同進程間或不同進程中各線程之間的同步而設置

的。其數據結構是存放在受保護的系統存儲區中,由OS爲它分配空間並進行管理。

41.何謂用戶級線程和內核支持線程?

答:

(1)用戶級線程:僅存在於用戶空間中的線程,無須內核支持。這種線程的創建、撤銷、

線程間的同步與通信等功能,都無需利用系統調用實現。用戶級線程的切換通常發生在一個

應用進程的諸多線程之間,同樣無需內核支持。

(2)內核支持線程:在內核支持下運行的線程。無論是用戶進程中的線程,還是系統線程

中的線 程,其創建、撤銷和切換等都是依靠內核,在內核空間中實現的。在內核空間裏還

爲每個內核支持線程設置了線程控制塊,內核根據該控制塊感知某線程的存在並實施控制。

42.試說明用戶級線程的實現方法。

答:用戶級線程是在用戶空間中的實現的,運行在“運行時系統”與“內核控制線程”的中

間系統上。運行時系統用於管理和控制線程的函數的集合。內核控制線程或輕型進程LWP

可通過系統調用獲得內核提供服務,利用LWP進程作爲中間系統。

43.試說明內核支持線程的實現方法。

答:系統在創建新進程時,分配一個任務數據區PTDA,其中包括若干個線程控制塊TCB

空間。創建一個線程分配一個TCB,有關信息寫入TCB,爲之分配必要的資源。當PTDA

中的TCB 用完,而進程又有新線程時,只要所創建的線程數目未超過系統允許值,系統可

在爲之分配新的TCB;在撤銷一個線程時,也應回收線程的所有資源和TCB。

 

第三章

第三章處理機調度與死鎖

1.高級調度與低級調度的主要任務是什麼?爲什麼要引入中級調度?

答:高級調度的主要任務是根據某種算法,把外存上處於後備隊列中的那些作業調入內存。

低級調度是保存處理機的現場信息,按某種算法先取進程,再把處理器分配給進程。

引入中級調度的主要目的是爲了提高內存利用率和系統吞吐量。使那些暫時不能運行的進程不再佔用內存資源,將它們調至外存等待,把進程狀態改爲就緒駐外存狀態或掛起狀態。

2.何謂作業、作業步和作業流?

答:作業包含通常的程序和數據,還配有作業說明書。系統根據該說明書對程序的運行進行控制。批處理系統中是以作業爲基本單位從外存調入內存。

作業步是指每個作業運行期間都必須經過若干個相對獨立相互關聯的順序加工的步驟。

作業流是指若干個作業進入系統後依次存放在外存上形成的輸入作業流;在操作系統的控制下,逐個作業進程處理,於是形成了處理作業流。

3.在什麼情況下需要使用作業控制塊JCB?其中包含了哪些內容?

答:每當作業進入系統時,系統便爲每個作業建立一個作業控制塊JCB,根據作業類型將它插入到相應的後備隊列中。

JCB 包含的內容通常有:1) 作業標識2)用戶名稱3)用戶賬戶4)作業類型(CPU繁忙型、I/O 芳名型、批量型、終端型)5)作業狀態6)調度信息(優先級、作業已運行)7)資源要求8)進入系統時間9) 開始處理時間10) 作業完成時間11) 作業退出時間12) 資源使用情況等

4.在作業調度中應如何確定接納多少個作業和接納哪些作業?

答:作業調度每次接納進入內存的作業數,取決於多道程序度。應將哪些作業從外存調入內存,取決於採用的調度算法。最簡單的是先來服務調度算法,較常用的是短作業優先調度算法和基於作業優先級的調度算法。

5.試說明低級調度的主要功能。

答:(1)保存處理機的現場信息(2)按某種算法選取進程(3)把處理機分配給進程。

6.在搶佔調度方式中,搶佔的原則是什麼?

答:搶佔的原則有:時間片原則、優先權原則、短作業優先權原則等。

7.在選擇調度方式和調度算法時,應遵循的準則是什麼?

答:

(1)面向用戶的準則:週轉時間短、響應時間快、截止時間的保證、優先權準則。

(2)面向系統的準則:系統吞吐量高、處理機利用率好、各類資源的平衡利用。

8.在批處理系統、分時系統和實時系統中,各採用哪幾種進程(作業)調度算法?

答:批處理系統的調度算法:短作業優先、優先權、高響應比優先、多級反饋隊列調度算法。

分時系統的調度算法:時間片輪轉法。

實時系統的調度算法:最早截止時間優先即EDF、最低鬆弛度優先即LLF算法。

9.何謂靜態和動態優先級?確定靜態優先級的依據是什麼?

答:靜態優先級是指在創建進程時確定且在進程的整個運行期間保持不變的優先級。

動態優先級是指在創建進程時賦予的優先權,可以隨進程推進或隨其等待時間增加而改變的優先級,可以獲得更好的調度性能。

確定進程優先級的依據:進程類型、進程對資源的需求和用戶要求。

10.試比較FCFS和SPF兩種進程調度算法。

答:相同點:兩種調度算法都可以用於作業調度和進程調度。

不同點:FCFS調度算法每次都從後備隊列中選擇一個或多個最先進入該隊列的作業,將它們調入內存、分配資源、創建進程、插入到就緒隊列。該算法有利於長作業/進程,不利於短作業/進程。SPF算法每次調度都從後備隊列中選擇一個或若干個估計運行時間最短的作業,調入內存中運行。該算法有利於短作業/進程,不利於長作業/進程。

 

11.在時間片輪轉法中,應如何確定時間片的大小?

答:時間片應略大於一次典型的交互需要的時間。一般應考慮三個因素:系統對相應時間的

要求、就緒隊列中進程的數目和系統的處理能力。

12.通過一個例子來說明通常的優先級調度算法不能適用於實時系統?

答:實時系統的調度算法很多,主要是基於任務的開始截止時間和任務緊急/鬆弛程度的任務優先級調度算法,通常的優先級調度算法不能滿足實時系統的調度實時性要求而不適用。

13.爲什麼說多級反饋隊列調度算法能較好地滿足各方面用戶的需求?

答:(1)終端型作業用戶提交的作業大多屬於較小的交互型作業,系統只要使這些作業在第一隊列規定的時間片內完成,終端作業用戶就會感到滿足。

(2)短批處理作業用戶,開始時像終端型作業一樣,如果在第一隊列中執行一個時間片段即可完成,便可獲得與終端作業一樣的響應時間。對於稍長作業,通常只需在第二和第三隊列各執行一時間片即可完成,其週轉時間仍然較短。

(3)長批處理作業,它將依次在第1,2,…,n個隊列中運行,然後再按輪轉方式運行,用戶不必擔心其作業長期得不到處理。所以,多級反饋隊列調度算法能滿足多用戶需求。

14.爲什麼在實時系統中,要求系統(尤其是CPU)具有較強的處理能力?

答:實時系統中通常有着多個實時任務。若處理機的處理能力不夠強,有可能因爲處理機忙不過來而使某些實時任務得不到及時處理,導致發生難以預料的後果。

15.按照調度方式可將實時調度算法分爲哪幾種?

答:可分爲非搶佔式和搶佔式兩種算法。而非搶佔式算法又分爲非搶佔式輪轉和優先調度算法;搶佔式調度算法又分爲基於時鐘中斷的搶佔式優先權和立即搶佔式優先權調度算法。

16.什麼是最早截止時間優先調度算法?舉例說明。

答:根據任務的開始截止時間確定的任務優先級調度算法。截止時間越早則優先級越高。該算法要求在系統中保持一個實時任務就緒隊列,該隊列按各任務截止時間的先後排序。

舉例:非搶佔式調度方式用於非週期實時任務。圖3-9 是將該算法用於非搶佔調度方式之例。該例中具有四個非週期任務,它們先後到達。系統首先調度任務1執行,在任務1執行期間,任務2、3又先後到達。由於任務3的開始截止時間早於任務2,故系統在任務1後將調度任務3執行。在此期間又到達作業4,其開始截止時間仍是早於任務2的,故在任務3執行完後,系統又調度任務4執行,最後才調度任務2執行。

圖3-9 EDF算法用於非搶佔調度的調度方式

17.什麼是最低鬆弛度優先調度算法?舉例說明之。

答:該算法是根據任務緊急(或鬆弛)的程度,來確定任務的優先級。任務的緊急程度愈高,

爲該任務所賦予的優先級就愈高,以使之優先執行。例如,一個任務在200 ms 時必須完

成,而它本身所需的運行時間就有100 ms,因此,調度程序必須在100 ms 之前調度執行,

該任務的緊急程度(鬆弛程度)爲100 ms。又如,另一任務在400 ms 時必須完成,它本身

需要運行 150 ms,則其鬆弛程度爲 250 ms。

18.何謂死鎖?產生死鎖的原因和必要條件是什麼?

答:死鎖是指多個進程在運行過程中因爭奪資源而造成的一種僵局,當進程處於這種僵持狀

態時,若無外力作用,它們都將無法再向前推進。

產生死鎖的原因爲競爭資源和進程間推進順序非法。其必要條件是:互斥條件、請求和

保持條件、不剝奪條件、環路等待條件。

19.在解決死鎖問題的幾個方法中,哪種方法最易於實現?哪種方法使資源利用率最高?

答:解決死鎖的四種方法即預防、避免、檢測和解除死鎖中,預防死鎖最容易實現;

避免死鎖使資源的利用率最高。

20.請詳細說明可通過哪些途徑預防死鎖。

答:(1)擯棄“請求和保持”條件,就是如果系統有足夠資源,便一次性把進程需要的所

有資源分配給它;

(2)擯棄“不剝奪”條件,就是已經擁有資源的進程,當它提出新資源請求而不能立即

滿足時,必須釋放它已保持的所有資源,待以後需要時再重新申請;

(3)擯棄“環路等待”條件,就是將所有資源按類型排序標號,所有進程對資源的請求

必須嚴格按序號遞增的次序提出。

21.在銀行家算法的例子中,如果P0發出請求向量由Request(0,2,0)改爲Request(0,1,0),

問系統可否將資源分配給它?

答:(1)可以。銀行家算法各種資源數量分別爲10、5、7,在T0時刻的資源分配如圖所示:

(2)具體分析如下:

①Requst0(0,1,0)<=Need0(7,4,3);

② Requst0(0,1,0)<=Available(2,3,0);

系統先假定可爲P0分配資源,並修改Available0,Allocation0和Need0向量,由此形成

的資源變化情況如下圖所示:

(3)P0請求資源:P0發出請求向量Requst0(0,1,0),系統按銀行家算法進行檢查:

① Requst0(0,1,0)<=Need0(7,4,3);

② Requst0(0,1,0)<=Available(2,3,0);

③ 系統暫時先假定可爲P0分配資源,並修改______________有關數據,如下圖所示

綜上所述系統可以將資源分配給它。

22.銀行家算法中出現以下資源分配,試問(1)該狀態是否安全?(2)若進程P2 提出

Request(1,2,2,2)後,系統能否將資源分配給它?

試問: (1)該狀態是否安全?

(2)若進程P2提出請求Request(1,2,2,2)後,系統能否將資源分配給它?

答: (1)安全,因爲存在安全序列{P0,P3,P4,P1,P2}

(2)系統能分配資源,分析如下。

① Request(1,2,2,2) <= Need2(2,3,5,6);

② Request(1,2,2,2) <= Available2(1,3,5,4);

③ 系統先假定可爲P2分配資源,並修改Available2,Allocation2和Need2向量,

由此形成的資源變化情況如下圖所示:

④ 再利用安全性算法檢查此時系統是否安全。如下圖

由此進行的安全性檢查得知,可以找到一個安全序列{P2,P0,P1,P3,P4}。

第四章

1.爲什麼要配置層次式存儲器?

答:設置多個存儲器可以使存儲器兩端的硬件能並行工作;採用多級存儲系統,特別是

Cache 技術,是減輕存儲器帶寬對系統性能影響的最佳結構方案;在微處理機內部設置各

種緩衝存儲器,減輕對存儲器存取的壓力。增加CPU中寄存器數量大大緩解對存儲器壓力。

2.可採用哪幾種方式將程序裝入內存?它們分別適用於何種場合?

答: (1)絕對裝入方式,只適用於單道程序環境。

(2)可重定位裝入方式,適用於多道程序環境。

(3)動態運行時裝入方式,用於多道程序環境;不允許程序運行時在內存中移位置。

3.何謂靜態鏈接?何謂裝入時動態鏈接和運行時的動態鏈接?P120

答:靜態鏈接是指在程序運行前,先將各目標模塊及它們所需的庫函數,鏈接成一個完整的

裝配模塊,以後不再拆開的鏈接方式。

裝入時動態鏈接是指將用戶源程序編譯後得到的一組目標模塊,在裝入內存時採用邊裝

入邊鏈接的鏈接方式。

運行時動態鏈接是指對某些目標模塊的鏈接,是在程序執行中需要該目標模塊時,纔對

它進行的鏈接。

4.在進行程序鏈接時,應完成哪些工作?

答:由鏈接程序Linker將編譯後形成的一組目標模塊,以及它們需要的庫函數鏈接在一起,

形成一個完整的裝入模塊Load Module。主要工作是修改程序內的相對地址和修改目標程

序中的外部調用標號。

5.在動態分區分配方式中,應如何將各空閒分區鏈接成空閒分區鏈?

答:在每個分區的起始部分,設置一些控制分區分配的信息,以及用於鏈接各分區所用的前

向指針;在分區尾部設置一個後向指針,通過前後向鏈接指針,將所有空閒分區鏈成一個雙

向鏈。當分區分配出去後,把狀態位由“0”改爲“1”。

6.爲什麼要引入動態重定位?如何實現?

答:在程序執行過程中,每當訪問指令或數據時,將要訪問的程序或數據的邏輯地址轉換成

物理地址,引入了動態重定位;

具體實現方法是在系統中增加一個重定位寄存器,用來裝入程序在內存中的起始地址,

程序執行時,真正訪問的內存地址是相對地址與重定位寄存器中的地址相加之和,從而實現

動態重定位。

7.在採用首次適應算法回收內存時,可能出現哪幾種情況?應怎樣處理這些情況?

答:在採用首次適應算法回收內存時可能出現4種情況:

(1)回收區前鄰空閒區。將回收區與前鄰空閒區合併,將前鄰空閒區大小修改爲兩者之和。

(2)回收區後鄰空閒區。將兩區合併,改後鄰空閒區始址爲回收區始址,大小爲兩者之和。

(3)回收區前後均鄰空閒區。將三個分區合併,修改前鄰空閒區大小爲三者之和。

(4)回收區前後均不鄰空閒區。爲回收區設置空閒區表項,填入回收區始址和大小並插入

空閒區隊列。

8.令 表示大小爲 、地址爲x 的塊的夥伴系統地址,試寫出 的通用表達式。

答:當 時, ;當 時,

9.分區存儲管理中常用那些分配策略?比較它們的優缺點。

答:分區存儲管理中的常用分配策略:首次適應算法、循環首次適應算法、最佳適應算法、最壞適應算法。

首次適應算法優缺點:保留了高址部分的大空閒區,有利於後來的大型作業分配;低址部分不斷被劃分,留下許多難以利用的小空閒區,每次查找都從低址開始增加了系統開銷。

循環首次適應算法優缺點:內存空閒分區分佈均勻,減少了查找系統開銷;缺乏大空閒分區,導致不能裝入大型作業。

最佳適應算法優缺點:每次分配給文件的都是最適合該文件大小的分區,內存中留下許多難以利用的小空閒區。

最壞適應算法優缺點:剩下空閒區不太小,產生碎片機率小,對中小型文件分配分區操作有利;存儲器中缺乏大空閒區,對大型文件分區分配不利。

 

10.在系統中引入對換後可帶來哪些好處?

答:交換技術將暫不需要的作業移到外存,讓出內存空間以調入其它作業,交換到外存的作

業也可以被再次調入。目的是解決內存緊張問題,帶來的好處是進一步提高了內存利用率和

系統吞吐量。

11.爲實現對換,系統應具備哪幾方面的功能?

答:系統應具備三方面功能:對換空間管理,進程換出,進程換入。

12.在以進程爲單位進行對換時,每次是否都將整個進程換出?爲什麼?

答:不是。系統首先選擇處於阻塞狀態且優先級最低的進程作爲換出進程,然後啓動磁盤,

將該進程的程序和數據傳送到磁盤的兌換區。若傳送過程未出錯,便可回收該進程佔用的內

存空間,並對該進程的進程控制塊做相應修改,所以並不需要將整個進程換出。

13.爲實現分頁存儲管理,需要哪些硬件的支持?

答:動態重定位技術、虛擬存儲技術、多道程序設計技術。

14.較詳細的說明引入分段存儲管理是爲了滿足用戶哪幾方面的需要。

答:

1) 方便編程。用戶通常把自己的作業按照邏輯關係劃分爲若干段,每段都從0 編址,並

有自己名字和長度。因此,希望要訪問的邏輯地址是由段名和段內偏移量決定。

2) 信息共享。在實現對程序和數據的共享時,是以信息邏輯單位爲基礎。分頁系統中的頁

是存放信息的物理單位,無完整意義,不便於共享;段是信息的邏輯單位。爲了實現段

的共享,希望存儲管理能與用戶程序分段的組織方式相適應。

3) 信息保護。對信息的邏輯單位進行保護,分段能更有效方便地實現信息保護功能。

4) 動態增長。在實際應用中,有些段特別是數據段,在使用過程中會不斷增長,事先又無

法確切知道增長多少。分段存儲管理方式能較好解決這個問題。

5) 動態鏈接。運行時先將主程序對應的目標程序裝入內存並啓動運行,運行過程中又需要

調用某段時,纔將該段調入內存鏈接。所以動態鏈接也要求以段作爲管理單位。

15.在具有快表的段頁式存儲管理方式中,如何實現地址變換?

答:在CPU給出有效地址後,由地址變換機構自動將頁號P送入高速緩衝寄存器,並將此

頁號與高速緩存中的所有頁號比較,若找到匹配頁號,表示要訪問的頁表項在快表中。可直

接從快表讀出該頁對應物理塊號,送到物理地址寄存器中。如快表中沒有對應頁表項,則再

訪問內存頁表,找到後,把從頁表項中讀出物理塊號送地址寄存器;同時修改快表,將此頁

表項存入快表。但若寄存器已滿,則OS必須找到合適的頁表項換出。

16.爲什麼說爲什麼說分段系統比分頁系統更易於實現信息的共享和保護?

答:分頁系統的每個頁面是分散存儲的,爲了實現信息共享和保護,頁面之間需要一一對應,

爲此需要建立大量的頁表項;而分段系統的每個段都從0 編址,並採用一段連續的地址空

間,在實現共享和保護時,只需爲要共享和保護的程序設置一個段表項,將其中的基址與內

存地址一一對應就能夠實現。

 

17.分段和分頁存儲管理有何區別?

答:

(1)是信息的物理單位,分頁是爲了實現離散分配方式,以消減內存的外部零頭,提高內

存利用率。段則是信息的邏輯單位,它含有一組相對完整的信息。

(2)頁的大小固定且由系統決定,由系統把邏輯地址劃分爲頁號和頁內地址兩部分,是由

機械硬件實現的,因而在系統中只能有一種大小的的頁面;而段的長度卻不固定,決定於用戶

所編寫的程序,通常由編譯程序在對原程序進行編譯時,根據信息的性質來劃分。

(3)分頁的作業地址空間是一維的,而分段作業地址空間則是二維的。

18.試全面比較連續分配和離散分配方式.

答:

(1)連續分配是指爲一個用戶程序分配一個連續的地址空間,包括單一和分區兩種分配方

式。單一方式將內存分爲系統區和用戶區,最簡單,只用於單用戶單任務操作系統;分區方

式分固定和動態分區。

(2)離散分配方式分爲分頁、分段和段頁式存儲管理。分頁式存儲管理旨在提高內存利用

率,分段式存儲管理旨在滿足用戶(程序員)的需要,段頁式存儲管理則將兩者結合起來,具

有分段系統便於實現、可共享、易於保護和動態鏈接等優點,又能像分頁系統很好解決外部

碎片及爲各段可離散分配內存等問題,是比較有效的存儲管理方式;

19.虛擬存儲器有哪些特徵?其中最本質的特徵是什麼?

答:虛擬存儲器有多次性、對換性、虛擬性三大特徵。最本質的特徵是虛擬性。

20.實現虛擬存儲器需要哪些硬件支持?

答:(1)請求分頁(段)的頁(段)表機制(2)缺頁(段)中斷機構(3)地址變換機構

21.實現虛擬存儲器需要哪幾個關鍵技術?

答:

(1)在分頁請求系統中是在分頁的基礎上,增加了請求調頁功能和頁面置換功能所形成的

頁式虛擬存儲系統。允許只裝入少數頁面的程序(及數據),便啓動運行。

(2)在請求分段系統中是在分段系統的基礎上,增加了請求調段及分段置換功能後形成的

段式虛擬存儲系統。允許只裝入少數段(而非所有段)的用戶程序和數據,即可啓動運行。

22.在請求分頁系統中,頁表應包括哪些數據項?每項的作用是什麼?

答:頁表應包括:頁號、物理塊號、狀態位P、訪問字段A、修改位M和外存地址。

其中狀態位P 指示該頁是否調入內存,供程序訪問時參考;訪問字段A 用於記錄本頁在一

段時間內被訪問的次數,或最近已有多長時間未被訪問,提供給置換算法選擇換出頁面時參

考;修改位M 表示該頁在調入內存後是否被修改過;外存地址用於指出該頁在外存上的地

址,通常是物理塊號,供調入該頁時使用。

23.在請求分頁系統中,應從何處將所需頁面調入內存?

答:請求分頁系統中的缺頁從何處調入內存分三種情況:

(1)系統擁有足夠對換區空間時,可以全部從對換區調入所需頁面,提高調頁速度。在進程運行前將與該進程有關的文件從文件區拷貝到對換區。

(2)系統缺少足夠對換區空間時,不被修改的文件直接從文件區調入;當換出這些頁面時,未被修改的不必換出,再調入時,仍從文件區直接調入。對於可能修改的,在換出時便調到對換區,以後需要時再從對換區調入。

(3)UNIX 方式。未運行頁面從文件區調入。曾經運行過但被換出頁面,下次從對換區調入。UNIX 系統允許頁面共享,某進程請求的頁面有可能已調入內存,直接使用不再調入。24.在請求分頁系統中,常採用哪幾種頁面置換算法?

答:採用的頁面置換算法有:最佳置換算法和先進先出置換算法,最近最久未使用(LRU)置換算法,Clock置換算法,最少使用置換算法,頁面緩衝算法等。

25.在請求分頁系統中,通常採用哪種頁面分配方式?爲什麼?

答:固定分配方式是基於進程的類型(交互型)或根據程序員、系統管理員的建議,爲每個進程分配固定頁數的內存空間,整個運行期間不再改變;採用可變分配方式有全局置換和局部置換兩種,前者易於實現,後者效率高。

26.在一個請求分頁系統中,採用LRU 頁面置換算法時,假如一個作業的頁面走向爲 4 , 3 , 2 ,1 , 4 , 3 , 5 , 4 ,3 , 2 , 1 ,5 ,當分配給該作業的物理塊數M分別爲3和4時,試計算訪問過程中所發生的缺頁次數和缺頁率 ? 比較所得結果 ?

答:當分配給該作業的物理塊數M爲3時,缺頁7次,缺頁率: 7/12=0.583;

當分配給該作業的物理塊數M爲4時,缺頁4次,缺頁率: 4/12=0.333.

27.實現LRU算法所需的硬件支持是什麼?

答:需要寄存器和棧等硬件支持。寄存器用於記錄某進程在內存中各頁的使用情況,棧用於

保存當前使用的各個頁面的頁面號。

28.試說明改進型 Clock 置換算法的基本原理 .

答:因爲修改過的頁面在換出時付出的開銷比未被修改過的頁面大,在改進型Clock 算法

中,既考慮頁面的使用情況,還要增加置換代價的因素;在選擇頁面作爲淘汰頁面時,把同

時滿足未使用過和未被修改作爲首選淘汰頁面。

29.說明請求分段系統中的缺頁中斷處理過程。

答:請求分段系統中的缺頁中斷處理過程描述如下:

(1)根據當前執行指令中的邏輯地址查頁表,判斷該頁是否在主存儲器中

(2)該頁標誌爲“0”形成缺頁中斷,中斷裝置通過交換PSW讓操作系統的中斷處理程序佔用處理器。

(3)操作系統處理缺頁中斷處理的辦法是查主存分配表找一個空閒的主存塊,查頁表找出該頁在磁盤上位置,啓動磁盤讀出該頁信息。

(4)把從磁盤上讀出的信息裝入找到的主存塊中。

 

(5)當頁面住處被裝入主存後,應修改頁表中對應的表目,填上該頁所佔用的主存塊把標誌置爲“1”,表示該頁已在主存儲器中

(6)由於產生缺頁中斷時的那條指令並沒執行完,所以在把頁面裝入之後應重新執行被中斷指令。

請求分段系統中的缺頁中斷處理過程如下圖所示:

30.如何實現分段共享 ?

答:在每個進程的段表中,用相應的表項指向共享段在內存中起始地址;配置相應的數據結構作爲共享段表,在段表項中設置共享進程計數Count ,每調用一次該共享段,Count值增 1,每當進程釋放一個共享段時,Count 減1,若減爲0,則系統回收該共享段的物理內存,取消在共享段表中該段對應的表項;共享段應給不同的進程以不同的存取權限;不同的進程可以使用不同的段號去共享該段

第五章

1.試說明設備控制器的組成。

答:由設備控制器與處理機的接口,設備控制器與設備的接口與I/O邏輯組成。

2.爲了實現CPU與設備控制器間的通信,設備控制器應具備哪些功能?

答:接收和識別命令;數據交換;標識和報告設備狀態;地址識別;數據緩衝;差錯控制。

3.什麼是字節多路通道?什麼是數組選擇通道和數組多路通道?

答:(1)字節多路通道。按字節交叉方式工作的通道。通常含有許多非分配型子通道,數

量從幾十到數百個,每個子通道連接一臺I/O 設備,控制其I/O 操作。子通道按時間片輪

轉方式共享主通道。

(2)數組選擇通道。按數組方式傳送數據,傳輸速率很高,每次只允許一個設備數據。

 

(3)數組多路通道。將數組選擇通道傳輸速率高和字節多路通道的各子通道分時並行操作的優點結合而成。含有多個非分配型子通道,具有很高的數據傳輸率和通道利用率。

4.如何解決因通道不足而產生的瓶頸問題?

答:解決問題的有效方法是增加設備到主機間的通路而不增加通道,把一個設備連到多個控制器上,控制器又連到多個通道上,這種多通路方式解決了“瓶頸”問題,提高了系統可靠性,個別通道或控制器的故障不會使設備和存儲器之間沒有通路。

5.試對VESA 及PCI兩種總線進行比較。

答:VESA總線的設計思想是以低價佔領市場。總線帶寬32位,最高傳輸速率132Mb/s。

廣泛用於486微機。缺點是能連接的設備數僅爲2~4 臺,控制器中無緩衝,難於適應處理

器速度的提高,不支持Pentium機。

PCI總線在CPU和外設間插入了複雜的管理層,協調數據傳輸和提供一致接口。管理

層中配有數據緩衝,放大了線路的驅動能力,最多支持10種外設,支持高時鐘頻率的CPU

運行,最大傳輸速率132Mb/s。可連接ISA、EISA 等傳統總線,又支持Pentium的64

位系統,是基於奔騰等新一代微處理器而發展的總線。

6.試說明推動I/O控制發展的主要因素是什麼?

答:推動I/O 控制發展的主要動力在於儘量減少主機對I/O 控制的干預,把主機從繁雜的I/O控制事務中解脫出來,用更多的時間和精力去完成其數據處理任務。同時,中斷機制在計算機系統中的引入、DMA 控制器的出現和通道研製的成功使I/O 控制的發展具備了技術支持和成爲可能。

7.有哪幾種I/O控制方式?各適用於何種場合?

答:共有四種I/O 控制方式。

(1)程序I/O 方式:早期計算機無中斷機構,處理機對I/O設備的控制採用程序I/O方式或稱忙等的方式。

(2)中斷驅動I/O 控制方式:適用於有中斷機構的計算機系統中。

(3)直接存儲器訪問(DMA)I/O 控制方式:適用於具有DMA控制器的計算機系統中。

(4)I/O 通道控制方式:具有通道程序的計算機系統中。

8.試說明DMA 的工作流程。

答:以從磁盤讀入數據爲例,說明DMA的工作流程。當CPU要從磁盤讀入數據塊時,先向磁盤控制器發送一條讀命令。該命令被送到命令寄存器CR中。同時還發送本次要讀入數據的內存起始目標地址,送入內存地址寄存器MAR;本次要讀數據的字節數送入數據計數器DC,將磁盤中的源地址直接送DMA控制器的I/O 控制邏輯上。然後啓動DMA 控制器傳送數據,以後CPU 便處理其它任務。整個數據傳送過程由DMA控制器控制。下圖爲DMA方式的工作流程圖。

9.引入緩衝的主要原因是什麼?

答:引入緩衝的主要原因是:

(1)緩和CPU與I/O 設備間速度不匹配的矛盾

(2)減少對CPU的中斷頻率,放寬對中斷響應時間的限制

(3)提高CPU與I/O 設備之間的並行性

10.在單緩衝情況下,爲什麼系統對一塊數據的處理時間爲max(C,T)+M ?

答:在塊設備輸入時,先從磁盤把一塊數據輸入到緩衝區,耗時爲T;然後由操作系統將緩衝區數據送給用戶區,耗時M;接下來由CPU 對塊數據進行計算,耗時C。在單緩衝情況下,磁盤把數據輸入到緩衝區的操作和CPU 對數據的計算過程可以並行展開,所以系統對每一整塊數據的處理時間爲max(C, T) + M。

11.爲什麼在雙緩衝情況下,系統對一塊數據的處理時間爲max(T,C)?

答:寫入者花費時間T 將數據寫滿一個緩衝區後再寫另一個緩衝區;讀出者花費時間M 將一個緩衝區數據送到用戶區後再傳送另一個緩衝區數據,計算者讀出用戶區數據進行處理。由於將數據從緩衝區傳到用戶區操作必須與讀用戶區數據處理串行進行,而且可以與從外存傳送數據填滿緩衝區的操作並行。因此耗時大約爲max(C+M,T)。考慮M 是內存數據塊的移動耗時非常短暫可以省略,因此近似地認爲系統對一塊數據處理時間爲max(C,T)。

 

 

 

 

12.試繪圖說明把多緩衝用於輸出時的情況。

答:多緩衝用於輸出的示意圖如下:

13.試說明收容輸入工作緩衝區和提取輸出工作緩衝區的工作情況。

答:

① 收容輸入工作緩衝區的工作情況爲:在輸入進程需要輸入數據時,調用GetBuf(EmptyQueue)過程,從EmptyQueue隊列的隊首摘下一個空緩衝區,作爲收容輸入工作緩衝區Hin。然後把數據輸入其中,裝滿後再調用PutBuf(InputQueue, Hin)過程,將該緩衝區掛在輸入隊列InputQueue的隊尾。

② 提取輸出工作緩衝區的工作情況爲:當要輸出數據時,調用GetBuf(OutputQueue)過程,從輸出隊列的隊首取得一裝滿輸出數據的緩衝區作爲提取輸出工作緩衝區Sout。在數據提取完後,再調用PutBuf(EmptyQueue, Sout)過程,將該緩衝區掛到空緩衝隊列EmptyQueue的隊尾。

14.何謂安全分配方式和不安全分配方式?

答:

① 安全分配方式是指每當進程發出I/O 請求後,便進入阻塞狀態,直到其I/O 操作完成時才被喚醒。在採用這種分配策略時,一旦進程已獲得某種設備資源後便阻塞,使它不可能再請求任何資源,而在它運行時又不保持任何資源。這種分配方式已經摒棄了造成死鎖的“請求和保持”條件,分配是安全的。缺點是進程進展緩慢,CPU與I/O 設備串行工作。

②不安全分配方式是指進程發出I/O 請求後仍繼續執行,需要時又可發出第二個I/O 請求、第三個I/O 請求。僅當進程請求的設備已被另一個進程佔有時,進程才進入阻塞狀態。優點是一個進程可同時操作多個設備,進程推進迅速。缺點是分配不安全,可能具有“請求和保持”條件,可能造成死鎖。因此,在設備分配程序中需增加一個功能,用於對本次的設備分配是否會發生死鎖進行安全性計算,僅當計算結果表明分配安全的情況下才進行分配。

15.爲何要引入設備獨立性?如何實現設備獨立性?

答:現代操作系統爲了提高系統的可適應性和可擴展性,都實現了設備獨立性或設備無關性。基本含義是應用程序獨立於具體使用的物理設備,應用程序以邏輯設備名請求使用某類設備。實現了設備獨立性功能可帶來兩方面的好處:(1)設備分配時的靈活性;(2)易於實現I/O 重定向。

爲了實現設備的獨立性,應引入邏輯設備和物理設備概念。在應用程序中,使用邏輯設備名請求使用某類設備;系統執行時是使用物理設備名。鑑於驅動程序是與硬件或設備緊密相關的軟件,必須在驅動程序之上設置一層設備獨立性軟件,執行所有設備的公有操作、完成邏輯設備名到物理設備名的轉換(爲此應設置一張邏輯設備表)並向用戶層(或文件層)軟件提供統一接口,從而實現設備的獨立性。

16.在考慮到設備的獨立性時,應如何分配獨佔設備?

答:在考慮到設備的獨立性時,應按如下步驟來分配獨佔設備:

(1) 進程以邏輯設備名提出I/O請求。

(2) 根據邏輯設備表獲得I/O請求的邏輯設備對應物理設備在系統設備表中的指針。

(3) 檢索系統設備表,找到屬於請求類型、空閒可用且分配安全設備的設備控制表,將對應

設備分配給請求進程;未找到則等待等待喚醒和分配。

(4) 到設備控制表中找出與其相連接的控制器的控制器控制表,根據狀態字段判斷是否忙

碌,忙則等待;否則將該控制器分配給進程。

(5) 到該控制器的控制器控制表中找出與其相連接的通道的通道控制表,判斷通道是否忙

碌,忙則等待;否則將該通道分配給進程。

(6) 只有在設備、控制器和通道三者都分配成功時,這次的設備分配纔算成功,然後便可啓

動設備進行數據傳送。

17.何謂設備虛擬?實現設備虛擬時所依賴的關鍵技術是什麼?

答:設備虛擬是指把獨佔設備經過某種技術處理改造成虛擬設備。

可虛擬設備是指一臺物理設備在採用虛擬技術後,可變成多臺邏輯上的虛擬設備,則可虛擬設備是可共享的設備,將它同時分配給多個進程使用,並對這些訪問該物理設備的先後次序進行控制。

18.試說明SPOOLing 系統的組成。

答:SPOOLing 系統由輸入井和輸出井、輸入緩衝區和輸出緩衝區、輸入進程 SPi 和輸出進程 SPo 三部分組成。

19.在實現後臺打印時,SPOOLing 系統應爲請求I/O 的進程提供哪些服務?

答:在實現後臺打印時,SPOOLing 系統應爲請求 I/O的進程提供以下服務:

(1)由輸出進程在輸出井中申請一空閒盤塊區,並將要打印的數據送入其中;

(2)輸出進程爲用戶進程申請空白用戶打印表,填入打印要求,將該表掛到請求打印隊列。

(3)一旦打印機空閒,輸出進程便從請求打印隊列的隊首取出一張請求打印表,根據表中要求將要打印的數據從輸出井傳送到內存緩衝區,再由打印機進行打印。

20.試說明設備驅動程序具有哪些特點。

答:設備驅動程序具有如下特點:

(1)是請求 I/O 進程與設備控制器間的一個通信程序;

(2)驅動程序與 I/O 設備的特性緊密相關;

(3)驅動程序與 I/O 控制方式緊密相關;

(4)驅動程序與硬件緊密相關,部分程序用彙編語言書寫,基本部分往往固化在ROM中。

 

 

21.試說明設備驅動程序應具有哪些功能?

答:設備驅動程序的主要功能包括:

(1)將接收到的抽象要求轉爲具體要求;

(2)檢查用戶I/O請求合法性,瞭解I/O 設備狀態,傳遞有關參數,設置設備工作方式;

(3)發出I/O 命令,啓動分配到的I/O設備,完成指定I/O 操作;

(4)及時響應由控制器或通道發來的中斷請求,根據中斷類型調用相應中斷處理程序處理;

(5)對於有通道的計算機,驅動程序還應該根據用戶 I/O 請求自動構成通道程序。

22.設備中斷處理程序通常需完成哪些工作?

答:設備中斷處理程序通常需完成如下工作:

(1) 喚醒被阻塞的驅動程序進程;

(2) 保護被中斷進程的CPU環境;

(3) 分析中斷原因、轉入相應的設備中斷處理程序;

(4) 進行中斷處理;

(5) 恢復被中斷進程。

23.磁盤訪問時間由哪幾部分組成?每部分時間應如何計算?

答:磁盤訪問時間由尋道時間Ts、旋轉延遲時間Tr、傳輸時間Tt 三部分組成。

(1)Ts 是啓動磁臂時間s 與磁頭移動n條磁道的時間和,即Ts = m × n + s。

(2)Tr是指定扇區移動到磁頭下面所經歷的時間。硬盤15000r/min時Tr爲2ms;軟盤300或600r/min時Tr爲50~100ms。

(3)Tt 是指數據從磁盤讀出或向磁盤寫入經歷的時間。Tt 的大小與每次讀/寫的字節數b和旋轉速度有關:Tt = b/rN。

24.目前常用的磁盤調度算法有哪幾種?每種算法優先考慮的問題是什麼?

答:目前常用的磁盤調度算法有先來先服務、最短尋道時間優先及掃描等算法。

(1) 先來先服務算法優先考慮進程請求訪問磁盤的先後次序;

(2) 最短尋道時間優先算法優先考慮要求訪問的磁道與當前磁頭所在磁道距離是否最近;

(3) 掃描算法考慮欲訪問的磁道與當前磁道間的距離,更優先考慮磁頭當前的移動方向。

25.爲什麼要引入磁盤高速緩衝?何謂磁盤高速緩衝?

答:目前磁盤的I/O速度遠低於內存的訪問速度,通常低上4-6個數量級。因此,磁盤I/O已成爲計算機系統的瓶頸。爲提高磁盤I/O的速度,便引入了磁盤高速緩衝。

磁盤高速緩衝是指利用內存中的存儲空間,暫存從磁盤中讀出的一系列盤塊中的信息。

26.在設計磁盤高速緩衝時,如何實現數據交付?

答:數據交付是指將磁盤高速緩存中的數據傳給請求進程。當進程請求訪問某個盤塊中的數據時,由核心先查看磁盤高速緩衝,看其中是否存在所需盤塊數據的拷貝。若有便直接從中提取數據交付給請求進程,避免了訪盤操作,本次訪問速度提高4-6 個數量級;否則先從磁盤中將要訪問的數據讀入並交付給請求者進程,同時送高速緩存以便下次直接讀取。

 

27.何謂提前讀、延遲寫和虛擬盤?

答:提前讀是指在讀當前盤塊的同時,將下一個可能要訪問的盤塊數據讀入緩衝區,以便需

要時直接從緩衝區中讀取,無需啓動磁盤。

延遲寫是指在寫盤塊時,將對應緩衝區中的立即寫數據暫時不立即寫以備不久之後再被訪問,只將它置上“延遲寫”標誌並掛到空閒緩衝隊列的末尾。當移到空閒緩衝隊首並被分配出去時,才寫緩衝區中的數據。只要延遲寫塊仍在空閒緩衝隊列中,任何要求訪問都可直接從其中讀出數據或將數據寫入其中,而不必去訪問磁盤。

虛擬盤又稱RAM盤,是利用內存空間仿真磁盤。其設備驅動程序可以接受所有標準的磁盤操作,但這些操作不是在磁盤上而是在內存中,因此速度更快。

28.廉價磁盤冗餘陣列是如何提高對磁盤的訪問速度和可靠性的?

答:廉價磁盤冗餘陣列RAID是利用一臺磁盤陣列控制器,統一管理和控制一組(幾臺到幾

十臺)磁盤驅動器,組成高度可靠快速大容量的磁盤系統。

操作系統將RAID中的一組物理磁盤驅動器看作一個單個的邏輯磁盤驅動器。用戶數據和系統數據可分佈在陣列的所有磁盤中,並採取並行傳輸方式,大大減少數據傳輸時間和提高了可靠性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章