大學操作系統(tǒng)習題及解答_第1頁
大學操作系統(tǒng)習題及解答_第2頁
大學操作系統(tǒng)習題及解答_第3頁
大學操作系統(tǒng)習題及解答_第4頁
大學操作系統(tǒng)習題及解答_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大學操作系統(tǒng)習題及解答

第1章

習題解答

習題1.1

1.試問計算機的四個組成要素是什么?

答:硬件設(shè)備、操作系統(tǒng)、應用程序及用戶。

2.個人計算機操作系統(tǒng)的主要設(shè)計考慮是什么?

答:使用上的便利性與執(zhí)行的性能。

3.試問操作系統(tǒng)分配哪些計算機的資源?

答:包括了CPU時間、內(nèi)存空間、文件存儲空間、I/O設(shè)備等。

習題1.2

1.試問多道程序系統(tǒng)與分時系統(tǒng)分別會在什么時候切換進程?

答:多道程序系統(tǒng)中,當正在執(zhí)行的工作進入等待狀態(tài)時,會切換到內(nèi)存中的其他工作繼

續(xù)執(zhí)行。分時系統(tǒng)的進程在其完成或是等待I/O之前會執(zhí)行短暫的時間,然后切換到等待狀

態(tài),由其他進程繼續(xù)執(zhí)行。

2.試舉例說明操作系統(tǒng)的功能是否會隨著時間而改變。

答:操作系統(tǒng)的功能會隨著時間而改變,如在單節(jié)點系統(tǒng)中的發(fā)展由批處理系統(tǒng)、多道程

序系統(tǒng)至分時系統(tǒng)。

3.試說明對稱與非對稱多重處理之間的不同。

答:對稱多重處理就是系統(tǒng)中的每個處理器都執(zhí)行份相同的操作系統(tǒng)。非對稱多重處理

使用客戶/服務器,每個處理器各自有不同的工作,其中有一個主處理器負責控制整個系統(tǒng),

并分配工作給其他處理器。

習題1.3

1.試說明網(wǎng)絡(luò)如何分類。可以分為哪幾類?

答:網(wǎng)絡(luò)可以由節(jié)點之間的距離來分類,可以分為局域網(wǎng)、都市局域網(wǎng)、廣域網(wǎng)絡(luò)與小域

網(wǎng)絡(luò)。

2.說明WWW對操作系統(tǒng)的發(fā)展有何影響。

答:隨著1990年代中期WWW的出現(xiàn),網(wǎng)絡(luò)功能成了個人計算機操作系統(tǒng)中的基本功

能。除此之外,許多以前無法上網(wǎng)的設(shè)備現(xiàn)今都提供了有線或是無線網(wǎng)的功能,并且仍不斷

地改進網(wǎng)絡(luò)技術(shù)或是實現(xiàn)方法來提高聯(lián)機的質(zhì)量。

3.試說明緊密耦合與非緊密耦合系統(tǒng)之間的差異。

答:緊密耦合系統(tǒng)中,各個處理器之間共享內(nèi)存或是時鐘;非緊密耦合系統(tǒng)的處理器則擁

有自己的內(nèi)存,并借著各樣的通信線路與其他處理器通信。

4.使用集群式系統(tǒng)有何優(yōu)點?說明集群式系統(tǒng)與并行系統(tǒng)有何不同。

答:集群式系統(tǒng)是一群由局域網(wǎng)緊密連接在一起并共享系統(tǒng)中存儲設(shè)備的計算機系統(tǒng),可

以提高系統(tǒng)的可用性。集群式系統(tǒng)與并行系統(tǒng)不同的是,集群式系統(tǒng)是將兩個或兩個以上的

獨立系統(tǒng)結(jié)合在一起而成。

習題1.4

1.試說明實時系統(tǒng)在運算上有何特殊限制?

答:一個實時系統(tǒng)會有詳細定義的時間限制,系統(tǒng)必須在所定義的限制之內(nèi)完成運算,否

則工作將會失效。

2.試問實時系統(tǒng)分為哪兩類?兩者有何不同?

答:實時系統(tǒng)可分為硬實時系統(tǒng)與軟實時系統(tǒng),硬實時系統(tǒng)保證所執(zhí)行的工作一定會在時

間之內(nèi)完成。軟實時系統(tǒng)中的實時進程會比其他進程有更高的優(yōu)先級,在超過時間限制之后,

雖然執(zhí)行的價值降低許多,實時進程還是可以繼續(xù)執(zhí)行。

3.試說明手持式系統(tǒng)有何優(yōu)點,并說明在硬件上有何限制。

答:手持式系統(tǒng)具有高度的便利性與可移植性但是在設(shè)計上較受限于硬件的設(shè)計。一般說

來手持式系統(tǒng)都不大,而且我們還希望它越小越好,因此手持式系統(tǒng)上只有少量的內(nèi)存空間、

較慢的處理器及小型的顯示屏幕等。

4.試簡述嵌入式系統(tǒng)的特性。

答:通常用來執(zhí)行特定功能,與一般計算機系統(tǒng)有很大的區(qū)別。大多以微電腦與外圍設(shè)備

為內(nèi)核,處理器可以山如8051的單芯片到先進的x86芯片擔任。具有嚴格的時間限制與穩(wěn)

定度要求,系統(tǒng)若發(fā)生錯誤可能造成嚴重的后果。

習題1.5

1.試問何種技術(shù)拓展了傳統(tǒng)式計算的范圍?

答:互連網(wǎng)絡(luò)的技術(shù)拓展了傳統(tǒng)式計算的范圍。

2.試說明負載平衡器有何作用。

答:負載平衡器負責將網(wǎng)絡(luò)聯(lián)機分散到網(wǎng)絡(luò)中同樣功能的服務器上,以提高系統(tǒng)的整體性能。

3.試問嵌入式操作系統(tǒng)有何特點?

答:缺乏較先進的系統(tǒng)功能如虛擬內(nèi)存等;只提供了較為簡單的功能;只有極少,甚至完

全沒有用戶接口。

作業(yè)解答

1.試說明操作系統(tǒng)的主要目的。

答:操作系統(tǒng)的主要功能是提供用戶一個更方便且更有效的執(zhí)行環(huán)境,以便利用計算機硬

件來解決各種問題。操作系統(tǒng)決定如何分配系統(tǒng)中所有的資源使得系統(tǒng)可以有效且公平地運

行,并且負責管理程序的執(zhí)行并預防錯誤或是不正常地使用計算機,并特別注重I/O設(shè)備的

操作與控制。

2.試說明批處理系統(tǒng)、多道程序系統(tǒng)與分時系統(tǒng)三者有何不同。

答:早期的計算機系統(tǒng)與用戶之間沒有直接地交互,用戶會先將工作準備好,一般包括程

序、數(shù)據(jù)與控制等信息,然后通過卡片閱讀機將工作輸進計算機中,等到工作執(zhí)行完了之后,

系統(tǒng)會將執(zhí)行結(jié)果連同內(nèi)存與寄存器中的值一起輸出。為了加速計算機處理的速度,會將性

質(zhì)接近的工作集中一批處理,然后整批交給計算機一次執(zhí)行,然后再取回執(zhí)行完的結(jié)果。任

務調(diào)度的技術(shù)使得計算機系統(tǒng)能夠進行多道程序處理,操作系統(tǒng)會山系統(tǒng)中選出幾個工作加

載到內(nèi)存,然后由內(nèi)存中選出一個工作來執(zhí)行。當執(zhí)行的工作需要等待某些事件,如等待某

個I/O完成時,多道程序系統(tǒng)將會執(zhí)行內(nèi)存中的另一個工作。當所執(zhí)行的工作進入等待狀態(tài)

時,就會切換到內(nèi)存中的其他工作繼續(xù)執(zhí)行,所以只要內(nèi)存中有工作等待執(zhí)行,CPU將不會

空閑,從而提高CPU的使用率。分時系統(tǒng)可以說是多道程序系統(tǒng)的擴展,CPU在多個工作

之間快速地切換,所以用戶可以與每個執(zhí)行的程序進行交互。-■個分時操作系統(tǒng)可以讓許多

用戶同時使用計算機系統(tǒng),每個用戶指令的執(zhí)行時間都相當短,所以每個用戶只需要短暫的

CPU時間進行計算。由于系統(tǒng)會在每個用戶的程序間作快速的切換,使得用戶感覺不出有許

多任務正在同時執(zhí)行,而會認為系統(tǒng)就像是被自己所獨占一樣。

3.試問大型計算機上的操作系統(tǒng)與個人計算機的操作系統(tǒng)在設(shè)計的考慮上有何差異?

答:大型計算機上的操作系統(tǒng)的主要考慮是提高系統(tǒng)中各項資源的使用率,讓系統(tǒng)所有可

用的CPU時間、內(nèi)存和I/O都能有效地充分利用,而且用戶不會使用系統(tǒng)中過多的資源而

影響其他的用戶。而個人計算機操作系統(tǒng)的設(shè)計考慮主要在使用上的便利性、執(zhí)行的性能,

但是并不十分注重系統(tǒng)資源使用率的最佳化,因為用戶并不關(guān)心在等待速度較慢的I/O時或

是系統(tǒng)是否空閑的問題等。

4.在一個多道程序與分時的計算機系統(tǒng)中,許多用戶可以同時使用計算機,但是這樣的環(huán)境

會產(chǎn)生一些安全性的問題,試舉出兩種可能發(fā)生的問題,并說明在分時系統(tǒng)上是否可能達

到獨占系統(tǒng)所具有的安全層級。

答:用戶可以拷貝或是刪除別的用戶的文件,不當?shù)厥褂孟到y(tǒng)中的資源,如CPU、內(nèi)存、

磁盤或是外圍設(shè)備等。雖然我們可以通過實現(xiàn)用戶權(quán)限的機制來提高系統(tǒng)的安全層級,但是

任何的安全機制仍有可能被破解。

5.試問在何種情形之下使用分時多用戶系統(tǒng)會比使用個人計算機更合適?

答:當有一些用戶同時執(zhí)行工作量大的工作或者是有許多用戶的進程同時需要使用相同的

資源時,使用分時多用戶系統(tǒng)會比使用個人計算機更合適,因為分時多用戶系統(tǒng)可以充分利

用系統(tǒng)的計算能力而能獲得比個人計算機更高的性能。

6.試說明在設(shè)計一個實時操作系統(tǒng)時可能會面臨的問題。

答:實時操作系統(tǒng)必須要小心地設(shè)計系統(tǒng)中斷的機制,實時系統(tǒng)大多不允許嵌套的中斷,

因為嵌套中斷無法確定中斷執(zhí)行的時間長短,可能會影響實時進程的執(zhí)行。實時操作系統(tǒng),

尤其是硬實時操作系統(tǒng),一般不支持大部分先進的操作系統(tǒng)功能,因為這些功能大多會將用

戶與系統(tǒng)硬件區(qū)隔開來,導致執(zhí)行所花費的時間不固定,例如實時系統(tǒng)中就不使用虛擬內(nèi)存。

除此之外,也必須要盡可能降低實時操作系統(tǒng)所造成的額外負擔以免影響實時進程的執(zhí)行。

7.試問在發(fā)展手持式系統(tǒng)時有何設(shè)計上的考慮。

答:由于手持式系統(tǒng)上只有少量的內(nèi)存空間、較慢的處理器及小型的顯示屏幕等,所以手

持式系統(tǒng)在設(shè)計上會受限于硬件的設(shè)計,但是必須以有限的系統(tǒng)資源發(fā)揮最大的功能。手持

式系統(tǒng)只有少量的內(nèi)存,所以必須要有效地使用這些有限的內(nèi)存,如釋放不用的內(nèi)存空間。

另外,手持式系統(tǒng)多不支持虛擬內(nèi)存,所以必須直接訪問物理內(nèi)存。手持式系統(tǒng)在設(shè)計上只

能使用較慢的處理器,并需要設(shè)法降低所消耗的電力。而如何在小型的顯示屏幕顯示數(shù)據(jù)內(nèi)

容也是另一個設(shè)計上的考慮,通常只選擇顯示出最重要的信息。

8.在一個有兩個節(jié)點的集群式數(shù)據(jù)庫環(huán)境中,試舉出兩種集群軟件管理或訪問數(shù)據(jù)庫數(shù)據(jù)的

方法,并分別說明其優(yōu)缺點。

答:使用對稱式集群則兩部計算機同時執(zhí)行應用程序,并且互相地監(jiān)控著。對稱式集群顯

然在執(zhí)行上較有效,因為它使用了集群中所有可用的計算機,但是相互監(jiān)控的機制較為復雜。

使用非對稱式集群中則會有一部計算機不執(zhí)行任何的應用程序,但它會保持在隨時待命的狀

態(tài)并監(jiān)控著另一部計算機,當所監(jiān)控的計算機發(fā)生故障時,待命的計算機馬上取代故障的計

算機并繼續(xù)其工作,非對稱式集群會浪費系統(tǒng)中的計算資源。

9.我們知道操作系統(tǒng)的主要目的是要更有效地使用計算機硬件,試問在何種狀況之下操作系

統(tǒng)可以不遵循這項原則而浪費部分系統(tǒng)資源?

答:個人計算機操作系統(tǒng)的設(shè)計考慮主要在使用上的便利性、執(zhí)行的性能,但是并不十分

注重系統(tǒng)資源使用率的最佳化。如圖形用戶界面為了要負責用戶與系統(tǒng)之間的通信,會浪費

部分系統(tǒng)的資源。

10.試分別定義以下操作系統(tǒng)的特性與功能:a.批處理系統(tǒng)b.交互式系統(tǒng)c.分時系統(tǒng)d.實時系

統(tǒng)e.網(wǎng)絡(luò)系統(tǒng)£并行系統(tǒng)g.分布式系統(tǒng)h.集群式系統(tǒng)i.手持式系統(tǒng)

答:

a.批處理系統(tǒng)中會將性質(zhì)接近的工作集組合一批處理,然后整批交給計算機一次執(zhí)行,可

以通過緩沖、在線并發(fā)、多道程序等方式充分使用CPU及I/O設(shè)備而提升系統(tǒng)性能,批處

理系統(tǒng)適合用于執(zhí)行不需要交互的大型工作。

b.交互式系統(tǒng)通常會由數(shù)段短暫執(zhí)行的程序組成,程序執(zhí)行的結(jié)果在用戶輸入數(shù)據(jù)前無法

事先預測,山于用戶會等待執(zhí)行之后的結(jié)果,所以系統(tǒng)的響應時間必須要很短,通常只有數(shù)

秒。

c.分時系統(tǒng)使用CPU調(diào)度與多道程序來提供用戶執(zhí)行各種程序,CPU會在系統(tǒng)的進程

之間快速地進行上下文切換,用戶感覺不出有許多任務作正在同時執(zhí)行,而會認為系統(tǒng)就像

是被自己所獨占一樣并且可以與每個執(zhí)行的程序進行交互。

d.實時系統(tǒng)通常用于特殊目的的系統(tǒng),一個實時系統(tǒng)會有詳細定義的時間限制,硬實時系

統(tǒng)保證所執(zhí)行的工作一定會在時間之內(nèi)完成。軟實時系統(tǒng)中的實時進程會比其他進程有更高

的優(yōu)先級,在超過時間限制之后,雖然執(zhí)行的價值降低許多,實時進程還是可以繼續(xù)執(zhí)行。

e.網(wǎng)絡(luò)系統(tǒng)隨著互聯(lián)網(wǎng)越來越普遍,個人計算機、工作站、手持設(shè)備、PDA,甚至是手機

都可以用來當作聯(lián)機上網(wǎng)的工具。我們可以通過網(wǎng)絡(luò)共享系統(tǒng)資源,可以由互聯(lián)網(wǎng)上取得更

多的數(shù)據(jù),并且建構(gòu)自己的私人網(wǎng)絡(luò)、架設(shè)網(wǎng)站并提供許多網(wǎng)絡(luò)服務等。

f.并行系統(tǒng)具有多個CPU,這些CPU共享系統(tǒng)中的總線、時鐘、內(nèi)存及外圍設(shè)備等,并

行系統(tǒng)可以提高吞吐量、降低成本與提高可靠性。

g.分布式系統(tǒng)會將運算分散到幾個處理器上,這些處理器并不共享內(nèi)存或是時鐘,這些處

理器擁有自己的內(nèi)存,并借著各樣的通信線路與其他處理器通信,例如高速總線、網(wǎng)線或是

電話線等。

h.集群式系統(tǒng)是一群由局域網(wǎng)緊密連接在一起并共享系統(tǒng)中存儲設(shè)備的計算機系統(tǒng),集群

式系統(tǒng)是將兩個或以上的獨立系統(tǒng)結(jié)合在一起而成,可以提高系統(tǒng)的可用性。當集群系統(tǒng)的

其中一個節(jié)點發(fā)生故障,可以將故障節(jié)點上所執(zhí)行的程序重新在其他節(jié)點上執(zhí)行,客戶端程

序只會出現(xiàn)短暫地中斷,整個集群系統(tǒng)不會受到太大的影響。

i.手持式系統(tǒng)帶來高度的便利性與可移植性是其他系統(tǒng)所比不上的,但是在設(shè)計上較受限

于硬件的設(shè)計。一般說來手持式系統(tǒng)都不大,因此手持式系統(tǒng)上只有少量的內(nèi)存空間、較慢

的處理器及小型的顯示屏幕等,必須能夠妥善利用有限的硬件發(fā)揮最大的功能。

第2章

習題解答

習題2.1

1.CPU的主要工作是什么?CPU一次能執(zhí)行幾個工作,為什么?

答:A.專門處理各種運算,并且負責與外圍設(shè)備通信。B.一個CPU的執(zhí)行是靠程序計數(shù)

器(ProgramCounter)指向在內(nèi)存里的程序代碼段,然后取出所指的指令來執(zhí)行,每執(zhí)行完

一個指令之后,程序計數(shù)器會自動指向下一個指令,所以CPU一次只能處理一個指令。

2.試問一般用途寄存器與特殊用途寄存器有何不同?并各舉出一個會使用到這兩種寄存器

的情況。

答:特殊用途寄存器用來控制硬件所提供的特殊功能或是有特殊用途的寄存器。如讓系

統(tǒng)可以切換到真實狀態(tài)或是保護狀態(tài)的狀態(tài)。

一般用途寄存器一般用途的寄存器可以用來存放數(shù)據(jù)或是內(nèi)存的地址。如一般運算時都

會使用到一般用途寄存器。

3.試解釋馮諾依曼計算機的五大單元及其負責的工作。

答:算術(shù)邏輯單元負責處理加減乘除及比較大小等數(shù)據(jù)的運算。

控制單元根據(jù)讀入的指令決定是否對I/O設(shè)備、內(nèi)存作訪問,或執(zhí)行運算。

存儲單元通常指內(nèi)存的部分,用來存儲目前所執(zhí)行工作的程序代碼及數(shù)據(jù)。

輸入單元負責輸入數(shù)據(jù),如鍵盤、鼠標等。

輸出單元負責將CPU處理過后的數(shù)據(jù)輸出,如顯示器、打印機等。

習題2.2

1.試問易失性內(nèi)存與非易失性內(nèi)存有何不同?什么情況下我們會用非易失性內(nèi)存而不用

易失性內(nèi)存。

答:易失性內(nèi)存是當電源中斷后,內(nèi)存內(nèi)的數(shù)據(jù)都將會流失。非易失性內(nèi)存則是斷電后,

內(nèi)存內(nèi)的數(shù)據(jù)不會流失。當我們希望能夠長期保存數(shù)據(jù)時,會選擇非易失性的內(nèi)存。

2.試問高速緩存的作用是什么,什么情況下高速緩存不會增進系統(tǒng)的性能?

答:高速緩存是提升系統(tǒng)性能的重要機制?;旧螩PU只能從主存儲器中訪問數(shù)據(jù),而

高速緩存是加在CPU與主存儲器間的快速內(nèi)存,當CPU在訪問主存儲器的數(shù)據(jù)時,會拷

貝一份相同的數(shù)據(jù)到高速緩存之中,等CPU下次讀取相同一段內(nèi)存地址的數(shù)據(jù)時、就能夠

直接從高速緩存中讀出。如果幾乎所有的數(shù)據(jù)都可以從高速緩存里面找到,性能就可提升不

少。反之,如果CPU無法從高速緩存里面找到所要的數(shù)據(jù),那訪問一次所花的時間將會是

“數(shù)據(jù)從內(nèi)存讀出的時間”加上“系統(tǒng)訪問高速緩存的時間”,系統(tǒng)的性能也會因為訪問時間

增加而下降。

3.試問DRAM有什么缺點,為什么它的訪問速度比SRAM慢?

答:DRAM每經(jīng)過一定時間就必須要充電。SRAM所存儲的數(shù)據(jù)不會隨著時間而消失,

所以不用花額外的時間來充電,其讀寫速度會比DRAM快。

習題2.3

1.CPU與外圍設(shè)備有哪兩種通信方式?試比較這兩種方法有什么不同。

答:A.I/O映象與內(nèi)存映象I/O。B.前者是通過特殊的指令,來改變設(shè)備寄存器,讓設(shè)備操

作。后者是CPU與外圍設(shè)備間建立起相同的內(nèi)存地址空間,彼此就以這段地址傳遞指令與數(shù)據(jù)。

2.設(shè)備狀態(tài)表的用途是什么?

答:為了要讓異步I/O可行。狀態(tài)表中的每個字段記錄著設(shè)備的類型、地址及狀態(tài)(像

是忙碌或是空閑)等信息。如果對一個忙碌的設(shè)備提出訪問要求,操作系統(tǒng)會以等待隊列的

形式將I/O要求記錄下來,等到設(shè)備有空時,才將隊列里的工作一?完成。

3.總線的組成是什么,試分別說明它們的用途?

答:A.總線可以分成3個主要的部分,分別是地址總線、數(shù)據(jù)總線及控制總線。B.地

址總線是用來指定數(shù)據(jù)傳輸?shù)牡刂罚瑪?shù)據(jù)總線是雙向傳輸數(shù)據(jù)的管道,而控制總線是專門用

來發(fā)送控制信號通知外圍設(shè)備該收發(fā)數(shù)據(jù)或是作其他的準備操作。

異步I/O在什么情況下無法發(fā)揮作用,該如何解決?

答:某些設(shè)備在指令過后,必須要在時限內(nèi)執(zhí)行下一個指令,才能是設(shè)備操作。在這個情

況下,就不能用異步I/O來執(zhí)行,我們可以用輪詢的方式或是while循環(huán)等待時限到來,

再繼續(xù)做下一個指令。

習題2.4

1.試舉出數(shù)據(jù)在存儲設(shè)備中不連貫所會發(fā)生的問題。

答:A.斷電或不正常關(guān)機造成數(shù)據(jù)流失。

B.在SMP中會讓計算發(fā)生錯誤。

2.何謂存儲層次結(jié)構(gòu),為什么要有存儲層次結(jié)構(gòu)?

答:A.存儲層次結(jié)構(gòu)上層的設(shè)備,其速度與價錢都比下層的高。以此為原則所排出的存

儲設(shè)備層次結(jié)構(gòu)。B.以性能與成本來考慮的話,我們會希望所需要用的數(shù)據(jù)在上層就可以找

到,并且盡量去使用上層的設(shè)備,以增進訪問的速度。

3.在SMP的系統(tǒng)中,要如何維持數(shù)據(jù)的一致性?(SMP為多CPU的計算機系統(tǒng))

答:SMP系統(tǒng)中會有高速緩存一致性的問題,通常是以特別的硬件來解決。

習題2.5

1.試問為什么用戶的程序不能自己切換成內(nèi)核態(tài)?

答:在內(nèi)核態(tài)下可以進行危險性較高的操作,如執(zhí)行特權(quán)指令。因此不能讓用戶自山切換

成內(nèi)核態(tài),避免不懷好意的用戶破壞系統(tǒng)。

2.試舉出3種會發(fā)生異常中斷的情況。

答:A.除以O(shè)oB.讀取或?qū)懭敕欠▋?nèi)存地址。C.分頁錯誤。

3.試舉出并說明3種硬件保護的方法。

答:A.內(nèi)存保護—基址寄存器與界限寄存器(MMU)oB.CPU保護——定時器。C.I/O

保護——特權(quán)指令。

作業(yè)解答

1.有些計算機系統(tǒng)的硬件并沒有提供內(nèi)核態(tài)的功能,試問這些計算機系統(tǒng)如何能建構(gòu)一個安

全的作業(yè)環(huán)境?

答:這些計算機系統(tǒng)可以只限定一次只能有一個進程在執(zhí)行,也要不允許多用戶同時上線,

像是MS-DOS一樣,一次只允許一個進程執(zhí)行。程序員必須要小心每一個指令,并處理每

個I/O操作。這樣可以讓系統(tǒng)遭受危險的情況降到最低。或者也可以使用特殊的硬件來達到

建構(gòu)一個安全的系統(tǒng)。

2.在以下的情況中,試選擇合適的內(nèi)存來存儲數(shù)據(jù)并說明原因。A.打算大量生產(chǎn)的智能型

錄放機所用的程序。B.用戶可以自行設(shè)置主機名字的網(wǎng)絡(luò)打印機,并且希望在斷電后里

面的數(shù)據(jù)也不會消失。C.在實驗室開發(fā)中的嵌入式應用程序。D.從網(wǎng)絡(luò)下載的網(wǎng)絡(luò)服務

軟件。

答:A.ROM,大量制造又不用反復寫入的數(shù)據(jù)適合用ROM來存儲。B.EEPROMorflash,

用EEPROM或flash存儲可以反復寫入用戶的數(shù)據(jù)。C.EEPROMorflash,開發(fā)中的程序可

能會常常的更改,適合存在EEPROM或flash中。D.flash,從網(wǎng)絡(luò)下載回來的服務軟件可以

先存儲在flash中等待執(zhí)行。

3.試問高速緩存在什么狀況下才能發(fā)揮作用?它解決了什么問題,它又引發(fā)了什么問題?

高速緩存越大是否性能越高?

答:A.當CPU要讀取的數(shù)據(jù)都能在高速緩存中找到時,高速緩存可以發(fā)揮最大的作用。

B.它讓CPU訪問內(nèi)存的性能提高。C.在SMP的系統(tǒng)中要注意高速緩存一致性的問題。D.

高速緩存越大不見得性能會越高。

4.下列哪一種指令屬于特權(quán)指令,并說明理由。A取消所有中斷功能B讀取系統(tǒng)時間

C設(shè)置系統(tǒng)時間D更改內(nèi)存映象

答:A.是,不能讓任何一個用戶有權(quán)限影響到I/O運行。B.否,讀取系統(tǒng)時間不會影

響系統(tǒng)的運行。C.是,系統(tǒng)時間有可能會影響到系統(tǒng)的運行、統(tǒng)計或是安全。D,是,有些

內(nèi)存的空間可能會是外圍設(shè)備寄存器的地址,所以不能讓用戶隨意改變,必須要通過操作系

統(tǒng)來決定。

5.試問在什么狀況下輪詢會較有效?又什么情況F中斷會比較有效。

答:輪詢在外圍設(shè)備需要被處理的頻率高的情況下,使用輪詢的方法會比中斷的方法有

效。這是因為在處理中斷的時候,操作系統(tǒng)需要花額外的時間來做處理中斷,因此使用輪詢

可以省下這些時間。

中斷在外圍設(shè)備偶而來一次的時候,使用中斷的方法會比輪詢有效。這是因為外圍設(shè)備

并不是時常都需要被處理,輪詢的時間往往會花費在詢問外圍設(shè)備是否有數(shù)據(jù)需要處理,而

使用中斷的話,只有在外圍設(shè)備需要被處理時才會執(zhí)行。

6.試說明在什么狀況下使用DMA傳輸性能不增反減。

答:由于DMA會與CPU共享同一條數(shù)據(jù)總線,所以如果CPU都是在處理I/O為主

的進程,這會造成DMA要等待CPU處理完之后才能工作,因此傳輸性能會下降。

7.早期的計算機會將操作系統(tǒng)放在某塊特定的內(nèi)存塊,這讓用戶與操作系統(tǒng)本身都無法去修

改。試舉出兩點可能的問題并提出解決的辦法。

答:

I.某些需要動態(tài)產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)就無法放在這塊只讀的塊,解決的方法是指定另一塊可

擦寫的內(nèi)存來存放這些動態(tài)的數(shù)據(jù)結(jié)構(gòu),而操作系統(tǒng)的只讀塊中就必須要有記錄可擦寫內(nèi)存

的基地址。

II.無法動態(tài)掛接程序代碼,解決的方法是在只讀塊中寫一個表,里面記錄程序代碼可以

寫在哪一段可擦寫的內(nèi)存中。

8.試說明中斷(Interrupt)、異常中斷(Exception)與陷阱中斷(Trap)有什么不同。試各舉

出一個應用這些中斷的例子。

答:中斷由外圍設(shè)備主動發(fā)出的信號,以通知操作系統(tǒng)處理。例如用戶按下鍵盤或是

移動鼠標都會產(chǎn)生中斷。

異常中斷通常是指CPU本身產(chǎn)生的中斷。例如除以0。

陷阱中斷通常是指人為的中斷。例如調(diào)試器需要單步執(zhí)行,就會針對每個指令執(zhí)行過

后發(fā)出一個陷阱中斷。

9.試以系統(tǒng)安全與性能的角度分析用戶態(tài)與內(nèi)核態(tài)的作用。

答:使用雙狀態(tài)運行的系統(tǒng)可以獲得較高的系統(tǒng)安全,因為特權(quán)指令跟I/O的操作都可

以因此得到保護。但是在切換用戶與內(nèi)核態(tài)時,會需要一些時間來切換,這會消耗一些時間,

此外,同一時間只能有一個進程可以處于內(nèi)核態(tài),因此想要進入內(nèi)核態(tài)的進程就必須互相等

待,這使得性能變得較差。

10.在Linux下使用hdparm指令將硬盤DMA的功能打開,并寫程序讀取一個很大的文

件,試比較依如下設(shè)置后,有無使用DMA時的性能差異。A緩沖區(qū)大小4bytesoB緩

沖區(qū)大小4KBoC緩沖區(qū)大小1MB。

答:略。

第3章

習題解答

習題3.1

1.試問命令解釋程序的目的是什么,為什么它要與操作系統(tǒng)分開?

答:命令解釋程序是用戶與操作系統(tǒng)間互相通信最直接的接口。當用戶對命令解釋程序下

一個命令后,命令解釋程序會建立一個新的子進程,并讓這個子進程去執(zhí)行用戶的工作。等

到子進程結(jié)束后,命令解釋程序又回到等待用戶下命令的狀態(tài)。通常命令解釋程序不會實現(xiàn)

在操作系統(tǒng)之中,用戶可以利用系統(tǒng)調(diào)用寫出適合自己的命令解釋程序,使得用戶的操作接

口更有可伸縮性。

2.試問在操作系統(tǒng)中有哪些組成模塊,其中哪些組成模塊是必要的?

答:一般的操作系統(tǒng)中會有:I.進程管理n.主存儲器管理in.文件管理IV.I/O系統(tǒng)管

理v.輔存管理vi.網(wǎng)絡(luò)vn.保護系統(tǒng)vin.命令解釋程序系統(tǒng)其中必要的有I、II、IV,

擁有這些模塊的操作系統(tǒng)足夠提供一個執(zhí)行程序的環(huán)境。

3.試問在操作系統(tǒng)的組成模塊中,各有哪幾項主要的工作?并舉實例說明。

答:

I.進程管理

(1)管理用戶和系統(tǒng)進程的建立與結(jié)束——系統(tǒng)的工作需要是山許多進程的執(zhí)行來完成

的。

(2)管理用戶和系統(tǒng)進程的暫停與再開始一T打印的進程在執(zhí)行的時候,大部分的時間

都是在等待打印機完成工作,這時就會需要暫停下來,將CPU的控制權(quán)讓出來給其他用戶。

(3)提供進程間同步的機制——進程在執(zhí)行的時候,通常會用到一些共享的資源,像是兩

個打印的進程不可能同時叫打印機打印文件出來,因此需要同步的機制避免資源訪問時的沖

突。

(4)提供進程間通信的機制——MP3的進程中的譯碼進程和播放進程是共享一塊內(nèi)存空

間,譯碼進程負責譯碼寫入內(nèi)存,而播放進程負責從內(nèi)存讀出播放音樂出來,所以共享的內(nèi)

存空間就是他們通信的管道。

(5)提供處理死鎖的機制——當進程因為訪問資源不當而造成崩潰的時候,系統(tǒng)要有應對

之道。

II.主存儲器管理

(1)記錄哪一塊內(nèi)存地址被哪一個程序使用——當進程結(jié)束的時候需要將內(nèi)存歸還給系

統(tǒng)。

(2)決定程序應該加載到哪一塊內(nèi)存空間一操作系統(tǒng)可以讓程序動態(tài)的加載到內(nèi)存的任

何地址。

(3)分配和回收內(nèi)存空間——進程會動態(tài)使用到內(nèi)存,當動態(tài)使用的內(nèi)存不再使用后,就

要歸還給操作系統(tǒng)。

III.文件管理

(1)文件的建立與刪除一使用FTP下載一個文件時,會需要建立文件。

(2)目錄的建立與刪除一使用FTP下載一個目錄時,會需要建立目錄。

(3)提供管理文件和目錄的能力,例如拷貝、移動和更改文件名等——當用戶想要整理自

已的目錄時,就會用到拷貝、移動、和更改文件名的文件管理。

IV.I/O系統(tǒng)管理

⑴內(nèi)存管理部分,包含了緩沖、高速緩存與假脫機系統(tǒng)(Spooling)印進程可以靠

假脫機系統(tǒng)得到較好的性能。

(2)設(shè)備驅(qū)動程序的接口——打印進程必須要通過驅(qū)動程序的接口才能調(diào)用到打印機驅(qū)動

程序?qū)⑽募蛴〕鰜怼?/p>

(3)特定硬件設(shè)備的驅(qū)動程序——系統(tǒng)里要有設(shè)備驅(qū)動程序才能讓進程使用設(shè)備,在上面

的例子中,如果沒有打印機驅(qū)動程序的話,還是無法將文件打印出來。

V.輔存管理

(1)管理未使用的空間——當刪除文件進程刪除一個文件時,操作系統(tǒng)要能將空間設(shè)為未

使用,讓下一個新文件能夠再利用。

(2)分配空間給需要的文件——當拷貝文件進程拷貝一個文件時,操作系統(tǒng)要能找到一個

未使用的硬盤空間來存儲新的文件。

(3)磁盤調(diào)度——拷貝文件進程可以靠磁盤調(diào)度得到更好的性能。

習題3.2

1.試舉出3項操作系統(tǒng)為用戶提供的系統(tǒng)服務。

答:程序執(zhí)行操作系統(tǒng)必須要能夠?qū)⒊绦蚣虞d到內(nèi)存中,并且讓此程序開始執(zhí)行;程

序除了要能正常地執(zhí)行結(jié)束外,如有發(fā)生不正常的情況,要有一定的程序通知用戶并將程序

結(jié)束。

I/O操作一個正在執(zhí)行的程序可能會需要文件或是外圍設(shè)備的I/O服務。為了性能及

安全性,用戶不能直接控制外圍設(shè)備,因此操作系統(tǒng)必須提供使用外圍設(shè)備的管道。

文件管理操作系統(tǒng)要提供用戶一些管理文件的服務,例如建立或刪除文件、更改文件

屬性、或是讀寫文件屬性等。

2.試舉出3項不是操作系統(tǒng)直接為用戶提供的系統(tǒng)服務。

答:資源分配在計算機系統(tǒng)中有許多資源提供給用戶,像是CPU、內(nèi)存、文件及外圍

設(shè)備等。根據(jù)這些資源的特性來改變使用的方法,可以得到不同的性能。像是內(nèi)存在多用戶

的系統(tǒng)中是可以同時被多個進程所訪問的資源,這些進程如果有用到相同的程序代碼,就可

以讓整個內(nèi)存中僅保留一份讓這些進程共享來執(zhí)行,這樣可以省下不少內(nèi)存的空間給其他的

進程使用。此外,當有進程要求使用某個外圍設(shè)備時,操作系統(tǒng)要提供一些函數(shù)記錄此外圍

設(shè)備的使用狀況,等到外圍設(shè)備結(jié)束工作后,這些記錄也要馬上更新,讓操作系統(tǒng)隨時掌握

外圍設(shè)備的狀況,并可以很快地安排新的工作。

統(tǒng)計系統(tǒng)管理員會想要知道一個用戶從登入系統(tǒng)到離線后曾經(jīng)使用過哪些資源,還有

使用量是多少。這個動機可以單純地只是要統(tǒng)計系統(tǒng)資源的使用量,也可以作為向用戶索取

費用的依據(jù)。除此之外,系統(tǒng)管理員也可以根據(jù)這些數(shù)據(jù)來調(diào)整系統(tǒng),讓整個系統(tǒng)執(zhí)行起來

更有效。

保護在多用戶的系統(tǒng)下,操作系統(tǒng)要避免同時執(zhí)行的用戶進程互相干擾,甚至影響操

作系統(tǒng)的執(zhí)行。所以操作系統(tǒng)要小心地控制系統(tǒng)中的資源,以免發(fā)生資源分配不當,造成問

題。安全性也是另一個重要的考慮因素,操作系統(tǒng)必須要防止不懷好意的用戶入侵系統(tǒng),所

以用戶必須要取得認證后,才能進入系統(tǒng)或是使用系統(tǒng)中的資源。最常采取的措施是讓用戶

輸入一串密碼,唯有密碼正確力讓用戶登入、或是去使用系統(tǒng)資源。操作系統(tǒng)也要能記錄所

有非法的行為,必要時可以根據(jù)這些行為記錄積極地采取法律行動。

3.試說明第2題中系統(tǒng)服務的作用。

答:如上所示。

習題3.3

1.試問系統(tǒng)調(diào)用的用途是什么?為什么需要系統(tǒng)調(diào)用?

答:為了讓用戶進程可以與操作系統(tǒng)通信,操作系統(tǒng)提供了一些函數(shù)給用戶,這組函數(shù)稱

為系統(tǒng)調(diào)用。系統(tǒng)調(diào)用是用戶進程與操作系統(tǒng)間的接口,通過系統(tǒng)調(diào)用,用戶進程可以通過

操作系統(tǒng)來使用外圍設(shè)備,或是得到較高的權(quán)限來處理工作。

2.舉出3種實際狀況需要用到等待一段時間、等待事件發(fā)生或是發(fā)出信號等系統(tǒng)調(diào)用。

答:等待一段時間鬧鈴程序會用到這種系統(tǒng)調(diào)用等待一段時間后發(fā)出響聲。

等待事件發(fā)生命令解釋系統(tǒng)會需要等待用戶輸入字符串,這個時候就會用到這類的系統(tǒng)

調(diào)用。

發(fā)出信號當父進程想要將子進程結(jié)束時,可以發(fā)出信號將子進程結(jié)束。

3.試問父進程要如何取得子進程的進程代號?什么情況F需要這么做?

答:使用系統(tǒng)調(diào)用可以取得子進程的代號,例如在Linux下父進程可以靠fork()得到子

進程的代號。如果父進程想要對子進程發(fā)出信號的話,就會需要知道子進程的代號,通過系

統(tǒng)調(diào)用,操作系統(tǒng)就能夠靠進程代號發(fā)出信號給子進程。

習題3.4

1.試說明分層方法主要的優(yōu)缺點。

答:分層方法最主要的好處就是模塊化,每層都只能使用下一層所提供的函數(shù)和服務,這

個方法讓調(diào)試更加容易,也有助于系統(tǒng)的驗證。分層方法的缺點是執(zhí)行起來會比較沒有效率,

例如一個用戶程序執(zhí)行了I/O的指令,這會通過系統(tǒng)調(diào)用引發(fā)一個陷阱中斷,然后跳到I/O

層去執(zhí)行,I/O層又會調(diào)用內(nèi)存管理層,再通過調(diào)度層,最后才會到硬件去執(zhí)行。在每一層

往F尋求服務時,都會需要傳遞些數(shù)據(jù)或是參數(shù),因此系統(tǒng)中的層次越多,對系統(tǒng)的額外開

銷也會越大。

2.試問微內(nèi)核的優(yōu)點是什么,在什么系統(tǒng)環(huán)境中會使用微內(nèi)核?

答:微內(nèi)核的優(yōu)點是操作系統(tǒng)容易擴充與維護,如果在用戶層加入了一個新的功能,通常

不用修改內(nèi)核就可以使用新功能,就算有需要修改內(nèi)核,也不用改變太多的地方,因為內(nèi)核

本身會牽涉到各個功能的部分不多,因此對于不同的硬件結(jié)構(gòu),只要稍微修改硬件相關(guān)的部

分,就可以輕易地將內(nèi)核移植過去。微內(nèi)核也提供更安全可靠的執(zhí)行環(huán)境,因為用戶程序所

執(zhí)行的工作大部分都不會牽涉到內(nèi)核,而只是使用到用戶層中的服務,所以如果有其中一項

服務失敗了,也不會影響到其他的服務。在嵌入式系統(tǒng)中會需要用到微內(nèi)核,因為嵌入式系

統(tǒng)常常會需要相同的內(nèi)核移植到各式各樣的硬件上,當這個系統(tǒng)掛接到不同的設(shè)備上,只要

修改小部分就可以啟用,因此對于不同的硬件結(jié)構(gòu),可以容易地移植。

3.試舉出一個簡單結(jié)構(gòu)的操作系統(tǒng),并說出它的優(yōu)缺點。

答:MS-DOS就是這種系統(tǒng)最典型的例子。MS-DOS的優(yōu)點是以最簡單的方法來提供用

戶最多的功能,也就是讓用戶擁有系統(tǒng)所有的控制權(quán),但是MS-DOS的缺點是沒有進一步

地模塊化,其各層程序都可以直接與底層通信,這樣會影響到整個系統(tǒng)的安全性。

習題3.5

1.試說明虛擬機的設(shè)計概念,什么時候會需要虛擬機?

答:虛擬機最主要的概念是希望每個在計算機系統(tǒng)中的用戶都認為自己擁有一整部計算

機,而且這部計算機上的資源都由一個人獨享,甚至隨時可以重新啟動。例如在Pentium個

人計算機上仿真StrongArm個人數(shù)字助理,幫助程序員開發(fā)程序。

2.試說明虛擬機在實現(xiàn)上會遇到什么問題,該如何解決?

答:虛擬機主要的困難是發(fā)生在磁盤系統(tǒng)中,試想如果系統(tǒng)中只有兩個磁盤,卻有五部虛擬

機想要使用這些磁盤,很明顯地無法讓所有的虛擬機都擁有一個真正的磁盤。要給每個虛擬機至

少一個真正磁盤的理由是:用到假脫機系統(tǒng)的虛擬機會需要大量的磁盤空間,如果空間不夠,就

無法使用虛擬掃描儀和虛擬打印機,這使得整個機制無法運行下去。解決的方法是使用虛擬磁盤

來代替,虛擬磁盤上的磁道會對應到物理磁盤其中的一些磁道上,因此可以在物理磁盤上切割出

幾個虛擬磁盤供給虛擬機使用。當然,虛擬磁盤可用的空間大小不能超出物理磁盤可以提供的范

圍,如果所分配到的磁盤空間不夠用來虛擬其他的外圍設(shè)備時,該虛擬機就不能正常工作。

3.試說明虛擬機要如何讓程序在不同的機器上執(zhí)行。

答:使用虛擬機仿真此程序所屬結(jié)構(gòu)的指令及執(zhí)行環(huán)境,讓不同的機器可以執(zhí)行此程序。

習題3.6

1.試問機制和策略有什么不同,為什么要將它們分開?

答:機制是指做一件事的目標或方向,而策略是指做這件事的具體方法。將機制與策略分

開,對于操作系統(tǒng)設(shè)計的可伸縮性有相當大的影響,因為策略可能會因時因地而有所不同,

在最壞的狀況下,一點點策略的改變可能都會影響到基本的機制運行。如果采用一般性的機

制,當策略改變時,也只需要稍微修改就可以將系統(tǒng)修正成新的策略。

2.試問操作系統(tǒng)用高級語言來實現(xiàn)有什么優(yōu)缺點?

答:優(yōu)點使用高級的程序代碼來編寫系統(tǒng)的好處是可以減少程序開發(fā)的時間、可以寫

得更精簡、也使得程序代碼容易了解而且方便調(diào)試,而且編譯器所提供的最佳化功能也已經(jīng)

能發(fā)揮不錯的效果。此外,用高級語言來編寫程序代碼,只要修改少部分硬件相關(guān)的地方,

重新編譯后很容易就可以將操作系統(tǒng)移植到不同的硬件結(jié)構(gòu)。

缺點使用高級語言所實現(xiàn)出來的操作系統(tǒng)有執(zhí)行速度較慢和需要較大的執(zhí)行空間等缺點。

3.試問如何排除監(jiān)督系統(tǒng)本身影響系統(tǒng)性能的因素,找出正確的瓶頸?

答:測量監(jiān)督系統(tǒng)本身所需要花費的時間,在分析程序執(zhí)行時將監(jiān)督系統(tǒng)的影響扣掉,就

能得到正確的瓶頸。

作業(yè)解答

1.試列出5種操作系統(tǒng)所提供的服務,并分別說明用戶如何使用這些服務。

答:下面以Linux為例所使用的服務:

程序執(zhí)行通過execv()系統(tǒng)調(diào)用可以執(zhí)行一個程序。

I/O操作通過open。、read。、write。等系統(tǒng)調(diào)用可以訪問文件或控制設(shè)備。

文件管理也是通過open。、read。、write。等系統(tǒng)調(diào)用寫成cp、mv、rm等應用程序來管

理文件。

通信利用shmat()、shmdt()等系統(tǒng)調(diào)用建立共享內(nèi)存來讓進程互相通信。

統(tǒng)計在proc文件系統(tǒng)中可以看到操作系統(tǒng)目前資源所使用的情況。

2.有許多函數(shù)庫會提供類似于系統(tǒng)調(diào)用的函數(shù)(例如Linux下的fopen()與open。),這些

函數(shù)也是通過相關(guān)的系統(tǒng)調(diào)用來完成。程序員需要知道這些函數(shù)庫使用到哪些系統(tǒng)調(diào)用

嗎?為什么?

答:不需要。這個方式就像是分層方法一樣,各層只會調(diào)用下一層所提供的服務,所以每

個模塊都只需要知道該調(diào)用下一層所提供的哪些服務來完成自己的工作,而不用去理會下一

層是如何完成這些服務的,這樣就可以輕易地隱藏一些復雜的硬件及數(shù)據(jù)結(jié)構(gòu)的處理。

3.在許多系統(tǒng)上都有設(shè)備即文件的概念,試問使用系統(tǒng)調(diào)用打開一個文件與打開一個設(shè)備有

什么不同?

答:打開一個文件僅是將數(shù)據(jù)從硬盤讀入內(nèi)存中,而打開一個設(shè)備就必須要跟操作系統(tǒng)注

冊一些必要的信息,并對于不同的設(shè)備需要作初始化或是額外的操作,像是統(tǒng)計有多少人正

同時使用這個設(shè)備,而這個設(shè)備是否適合多人同時使用等等的判斷。

4.在操作系統(tǒng)實現(xiàn)的時候,往往要對某些機制決定解決的策略。例如當一個進程結(jié)束時,是

否要將它的子進程也一起結(jié)束掉?試舉出在哪種情況卜這個方法可以得到好處,以及舉出

另外一種情況這種方法反而會帶來問題。

答:以題目的例子為例。例如用戶使用命令解釋程序產(chǎn)生了數(shù)支子程序在執(zhí)行重要的任務,

而命令解釋程序突然崩潰了,這會讓沒有相關(guān)性的重要子程序也一起結(jié)束掉,這種情況會在

實時系統(tǒng)中造成重大的傷害,所以在這個情況下我們不希望子進程也一起結(jié)束掉。如果這支

命令解釋程序不是在實時系統(tǒng)中,而它所執(zhí)行的程序是程序員正在開發(fā)中的軟件,一次會產(chǎn)

生幾百甚至是幾千個子進程,我們就會希望有方法可以一次將所有不穩(wěn)定的子進程一起結(jié)束

掉,也就是將命令解釋程序結(jié)束掉,這些事務交給操作系統(tǒng)來處理可以避免有殘留的進程占

用系統(tǒng)資源。

5.假設(shè)有一個計算機系統(tǒng)沒有提供系統(tǒng)調(diào)用,但是它有提供中斷處理。試問要如何在這樣的

計算機系統(tǒng)上仿真出系統(tǒng)調(diào)用的機制?

答:可以自行定義一個中斷處理給系統(tǒng)調(diào)用使用,當用戶想要調(diào)用系統(tǒng)調(diào)用時,就直接使

用中斷處理就可以了。

6.在實現(xiàn)建立新文件的系統(tǒng)調(diào)用時,應該讓它也有一組操作文件的功能嗎?試說明提供一組

操作文件功能的優(yōu)缺點。

答:一組操作文件功能的優(yōu)點是當用戶的程序想要作一連串的新建文件和打開文件過程的

操作時,可以用一個系統(tǒng)調(diào)用就完成這些操作。缺點是如果大部分的用戶都只想做新建一個

文件的操作,那操作系統(tǒng)將會多做打開文件及關(guān)閉文件的時間,使系統(tǒng)的性能下降。因此,

系統(tǒng)性能會與程序員的習慣有很大的關(guān)系。

7.試說出當在Linux下執(zhí)行ps這個指令時,會用到哪些系統(tǒng)調(diào)用?并說明每個系統(tǒng)調(diào)用

的功能。

答:以下為命令解釋程序所調(diào)用的系統(tǒng)調(diào)用:

fork()拷貝進程。

wait()等候子進程結(jié)束。

evecv()執(zhí)行ps執(zhí)行文件。

以下為ps所調(diào)用的系統(tǒng)調(diào)用:

open()打開proc下文件。

read()讀取proc下文件。

write()寫入終端,將結(jié)果顯示出來。

close()關(guān)閉文件。

8.有一種系統(tǒng)調(diào)用nanosleep()可以讓進程暫停幾個納秒(nanosecond),在什么情況下會用

到這個系統(tǒng)調(diào)用?試寫出簡單的程序代碼來實現(xiàn)這個系統(tǒng)調(diào)用。

答:有些硬件在下一個指令之后,會在幾納秒內(nèi)做下一個響應,因此要能夠接到這個響應,

可以用nanosleepO來等待這個響應。程序代碼略。

9.試用C或C++使用系統(tǒng)調(diào)用寫一個拷貝文件的程序,并與系統(tǒng)中的拷貝程序比較程序

大小、功能與性能。

答:略。

10.試仿真Linux的shell,實現(xiàn)出一個簡單的命令解釋程序,并說明有哪些機制與策略分開

的設(shè)計。

答:略。

第4章

習題解答

習題4.1

1.試說明進程通常有哪些狀態(tài)?

答:

新建進程剛剛被產(chǎn)生時就是在這個狀態(tài)。

執(zhí)行指進程中的指令正在被執(zhí)行時的狀態(tài),也就是說現(xiàn)在這個進程正在使用CPU的資

源。

等待表示進程目前正在等待一些事件發(fā)生,如I/O完成。

就緒表示進程目前己準備好被執(zhí)行。

終止表示進程己執(zhí)行結(jié)束。

2.試說明在哪些情況卜進程會退出執(zhí)行的狀態(tài)。

答:進行I/O請求、等待事件、被中斷或終止.

3.試說明在PCB中通常存儲那些進程的信息。

答:

進程狀態(tài)可以是新建、就緒、執(zhí)行、等待、終止等狀態(tài)。

CPU寄存器當進程在執(zhí)行中遇到或發(fā)生中斷時,操作系統(tǒng)需要將一些寄存器的值存儲

起來,等重新返回時進程才能正確地繼續(xù)執(zhí)行。

調(diào)度信息包含了進程的優(yōu)先級(Priority)和其他調(diào)度的相關(guān)信息。

I/O狀態(tài)信息包含了進程在執(zhí)行中使用到的I/O設(shè)備、打開的文件等。

習題4.2

1.試說明為什么調(diào)度是影響操作系統(tǒng)性能最重要的因素。

答:對一個單CPU的系統(tǒng)來說,隨時只能有一個進程在執(zhí)行,而其他也想要被執(zhí)行的進

程則必須等待CPU空閑下來,然后通過調(diào)度器選出下一個可以使用CPU的進程。因此,

如何調(diào)度是影響操作系統(tǒng)性能最重要的因素。

2.試描述各種調(diào)度器的主要功能與不同點。

答:長程調(diào)度器其工作就是從磁盤中選出合適的進程,將進程放置于內(nèi)存中準備執(zhí)

行。其執(zhí)行的頻率比短程調(diào)度器要低得多。

短程調(diào)度器其工作就是在準備隊列中選出一個進程,然后將CPU的使用權(quán)交給該進

程。短程調(diào)度器從準備隊列中選出下一個進程的操作是非常頻繁的,所以其執(zhí)行的頻率比短

程調(diào)度器要高許多。

3.試說明何謂上下文切換?

答:當CPU的使用權(quán)由一個進程轉(zhuǎn)到另一個進程時,必須將上一個進程的相關(guān)信息

存儲起來,并且把即將要使用CPU的進程的相關(guān)信息加載系統(tǒng)中,這個操作稱為上下文

切換。

習題4.3

1.試簡述在UNIX系統(tǒng)中進程是如何被建立與結(jié)束。

答:建立一個新的進程需要調(diào)用fork()這個系統(tǒng)調(diào)用,新的子進程會拷貝父進程的地址

空間。在調(diào)用fork()之后,父進程與子進程會繼續(xù)地執(zhí)行指令。

一個進程在結(jié)束最后一個指令后,會利用exit()這個系統(tǒng)調(diào)用請求操作系統(tǒng)將自己從系

統(tǒng)中刪除。進程在執(zhí)行時間用到的資源如物理內(nèi)存、虛擬內(nèi)存、打開的文件和使用的I/O設(shè)

備等,都會交還給操作系統(tǒng)?;蛘撸M程也可以通過特定的系統(tǒng)調(diào)用如abort()等,強迫另

一個進程結(jié)束執(zhí)行。不過通常只有父進程才能使用這類系統(tǒng)調(diào)用去中斷子進程。

2.試使用系統(tǒng)調(diào)用fork()編寫一個程序,這個程序產(chǎn)生?個子進程并在子進程中印出十次

"Thisischildw,而父進程產(chǎn)生子進程后馬上印出十次"Thisisparent".(請在打印出

文字后使用系統(tǒng)調(diào)用sleep()延遲下一次的輸出)。

答:voidmain(void)

(

intpid;

if((pid=fork())==0)

(

printf("Thisischild.\nn);

sleep(1000);}

else

(

printf("Thisisparent.\n");

sleep(1000);}}

3.承上題,若父進程使用系統(tǒng)調(diào)用wait()等待子進程,則結(jié)果會有什么不同。

答:voidmain(void)

{

intpid;

if((pid=fork())==0)

(

printf('*Thisischild.\nH);

sleep(1000);)

else

wait(pid);

printf("Thisisparent.\nn);

sleep(lOOO);}}

習題4.4

1.當一個線程被建立時,需要使用到什么資源?與建立一個進程有什么不同?

答:每個線程皆包含了一個程序計數(shù)器、-組寄存器和一個堆??臻g,這些是建立線程所

需要的資源。建立進程會拷貝一份與父進程內(nèi)容相同的地址空間給子進程,而線程則是會共

享同一個地址空間,共享了程序段、數(shù)據(jù)段和一些從操作系統(tǒng)取得的資源,像是打開的文件

與信號等。

2.為什么線程的上下文切換會比進程的上下文切換要來的快?

答:一個線程在進行上下文切換時,只需要存儲一個程序計數(shù)器、一組寄存器和一個堆棧

空間,而進程的上下文切換還需要加上其他的部分如地址空間的存儲,所以線程的上下文切

換會比較快。

3.一般來說線程的實現(xiàn)有那幾種模型?

答:多對一模型多對一模型將許多個用戶線程對應到同一個內(nèi)核線程。

一對一模型一對一模型就是一個用戶線程對應到一個內(nèi)核線程。

多對多模型多對多模型將用戶線程對應到相同或是較少數(shù)目的內(nèi)核執(zhí)緒。

習題4.5

1.試說明獨立的進程與合作的進程之間有哪些不同點。

答:獨立的進程是指進程之間不會相互影響,也就是說進程間沒有任何共享的數(shù)據(jù)。反言

之,合作的進程就是指進程之間會相互的影響,也就是說進程之間有共享的數(shù)據(jù)。

2.為什么合作的進程需要同步的機制。

答:如果合作的進程同時訪問到共同數(shù)據(jù),則可能會導致數(shù)據(jù)前后不一致,所以必須有同

步機制來確保分享共同數(shù)據(jù)的合作進程,可以有秩序地執(zhí)行,使得數(shù)據(jù)的前后一致性可以維

持。

3.試舉例說明在計算機系統(tǒng)中有那些問題與生產(chǎn)者和消費者有關(guān)。

答:播放mpeg影片的程序中,譯碼的進程與播放影像的進程就像是生產(chǎn)者與消費者的

關(guān)系,譯碼進程將影片譯碼,而翻放的進程將譯碼后的影像顯示出來。

習題4.6

1.在4-6-3節(jié)間接通信中,將寄信人與收件人比喻作進程,信比喻成消息,郵政系統(tǒng)比喻

成操作系統(tǒng),那么郵筒可以比喻成什么呢?

答:緩沖區(qū)。

2.請說明緩沖有哪幾種實現(xiàn)方法。

答:無緩沖鏈表沒有緩沖。

有限緩沖鏈表中的緩沖區(qū)最多只能有n個消息存在。

無限緩沖鏈表中的緩沖區(qū)沒有大小的限制,也就是無論多少數(shù)量的消息都可以存在緩

沖區(qū)中。

3.一般而言,在哪些狀況下需要異常處理?

答:進程結(jié)束無論是發(fā)送端或是接收端,都有可能在收發(fā)未完成前不正常地結(jié)束,這

將會導致消息丟失,或是進程在等待永遠不會被發(fā)送的消息。

消息丟失一個消息由進程A發(fā)送給進程B的過程中,很有可能會丟失。

消息的錯誤一個消息被發(fā)送至目的端時,它所代表的數(shù)據(jù)可能會有錯誤。

作業(yè)解答

1.上下文切換對系統(tǒng)而言是額外的負擔,請問有哪些因素會影響上下文切換所花的時間。

答:需要存儲的CPU寄存器個數(shù)、內(nèi)存的速度、CPU是否提供特別的指令(如一個指

令就可以存儲所有寄存器),都是會影響上下文切換所花的時間。

2.操作系統(tǒng)通常都有一些主要的隊列,請簡述操作系統(tǒng)中常見的隊列并說明其用途。

答:任務隊列當一個進程被允許進入系統(tǒng)時,就會被放置于任務隊列。任務隊列記錄

著系統(tǒng)中所有的進程。

就緒隊列當一個進程準備要執(zhí)行時I就會被移到就緒隊列。同一時間內(nèi)會有很多的進

程被放在就緒隊列中,每個進程都有?個對應的PCB,每個PCB再用鏈表串在一起。

等待隊列一個進程在執(zhí)行時間可能需要等待某些事件完成后才能執(zhí)行,如I/O請求等,

這時進程會被移到等待隊列。

設(shè)備隊列當一個進程等待I/O設(shè)備操作完成時,就會被移到設(shè)備隊列,而且每個設(shè)備

都擁有自己的設(shè)備隊列。

3.請簡述用戶線程與內(nèi)核線程的差異,并分別說明兩者在什么狀況下使用時會比另一種合

適。

答:用戶線程的建立、結(jié)束與調(diào)度都在用戶空間完成,系統(tǒng)內(nèi)核并不知道用戶線程的存在。

這樣的結(jié)構(gòu)使得用戶線程在建立與管理時比較有效。但是如果進程中的線程因執(zhí)行系統(tǒng)調(diào)用

而暫停,則會造成同進程中其他所有的線程都暫停執(zhí)行。而內(nèi)核線程則是山操作系統(tǒng)直接支

持。內(nèi)核線程的建立、結(jié)束、調(diào)度、同步和管理都在內(nèi)核空間內(nèi)完成,因為需要從用戶空間

轉(zhuǎn)換至內(nèi)核空間,這也使得內(nèi)核線程的建立和管理要比用戶線程來得慢。山于內(nèi)核線程山內(nèi)

核直接管理,所以當一個線程暫停執(zhí)行時,內(nèi)核可以安排其他在同進程中的線程繼續(xù)執(zhí)行。

有大量系統(tǒng)調(diào)用的程序適合內(nèi)核線程。反之,系統(tǒng)調(diào)用較少且短時間內(nèi)可以完成工作的程序

適合用戶線程,節(jié)省從用戶空間轉(zhuǎn)換至內(nèi)核空間的時間。

4.請?zhí)岢鰞蓚€多線程會比單線程來得有效的程序范例。

答:大量I/O的程序,例如文件拷貝程序、磁盤重組程序。

5.請?zhí)岢鰞蓚€多線程不見得會比單線程來得有效的程序范例。

答:大量CPU運算的程序,例如計算積分程序、矩陣運算程序。

6.當一個多線程進程fork出子進程,如果子進程拷貝了父進程的所有線程,而其中一個線

程正等待鍵盤的輸入,那么現(xiàn)在將會有兩個線程正等待鍵盤的輸入,這樣會造成什么問

題?在單線程進程中是否會發(fā)生相同的問題?

答:可能會發(fā)生兩個線程各讀取到一部分的鍵盤輸入,因此導致程序執(zhí)行錯誤。當單線程

進程fork出子進程,如果子進程拷貝了父進程的所有線程,也是會發(fā)生兩個線程等待鍵盤

輸入的情況,所以還是會發(fā)生相同的問題。

7.在什么情況下,我們會使用共享內(nèi)存來取代消息的傳遞,試舉例說明。

答:進程間需要大量發(fā)送消息的時候,使用共享內(nèi)存的方式可以減少消息拷貝的額外

開銷。

8.在真實系統(tǒng)中真的存在大小無限的緩沖嗎?若不存在,是什么有這類型的緩沖?若存在,

那么應該如何實現(xiàn)?

答:事實上大小無限的緩沖設(shè)計還是會被實際硬件的支持限制住,例如內(nèi)存大小,但是也

因為大小無限的緩沖設(shè)計是被硬件的支持限制住,所以如果硬件支持可以無限擴充,理想上

也是可以達到大小無限的緩沖。

9.當在進行進程通信時,什么情況下適合使用無緩沖?什么情況下適合用有限的緩沖和無限

的緩沖?試舉例說明。

答:當進程間的通信是需要實時的交互時,使用無緩沖的方法比較適合。而當進程間的通

信不需要實時的交互或者根本不需要交互時,使用有限緩沖和無限緩沖較適合,例如測距離

的感應器程序,感應器進程會不斷地將測量數(shù)據(jù)送至緩沖區(qū),分析數(shù)據(jù)的進程會不斷地從緩

沖區(qū)讀取數(shù)據(jù)。

10.假設(shè)使用信箱作為IPC的機制:A.若進程P想要等待兩個消息,一個從信箱A,另

■?個從信箱B。在執(zhí)行時,send()與receive()的執(zhí)行順序應該是什么?B.如果進程P

想要等待一個消息,消息有可能來自信箱A或是信箱B,這時send。與receive()的執(zhí)

行順序應該是什么?C.receive。使進程等待直到信箱不是空的。請設(shè)計一種方法允許進

程等待直到信箱為空,或是說明這種設(shè)計是不可能存在的

答:

A.receive

(

A,message);

Receive

(

B,message);

B.while(1)

(

send(A,"test”);

receive(A,message);

if(message!="test")

(

//表示收到消息了receive(A,message2);

break;}

send(B,"test”);

receive(B,message);

if(message!="test")

{receive(B,message2);break;}}

c.可以使用輪詢的方式查詢信箱是否為空的,直到信箱是空的才讓進程繼續(xù)執(zhí)行,這樣

就可以做到讓進程等待直到信箱為空。

第5章

習題解答

習題5.1

1.試解釋CPU脈沖、I/O脈沖與CPU為主、I/O為主進程之間的關(guān)系。

答:進程在CPU執(zhí)行的期間稱為CPU脈沖,而在等待I/O的期間稱則為I/O脈沖。

CPU為主的進程通常是由一些比較長的CPU脈沖所組成,而I/O為主的進程則是由很多小

的CPU脈沖所組成,要判斷一個進程是屬于CPU為主還是I/O為主時,評估的標準是根

據(jù)CPU脈沖。

2.試說明在哪一些情況下操作系統(tǒng)會進行重新調(diào)度。

答:有4種進程的執(zhí)行狀態(tài)轉(zhuǎn)換時需要進行重新調(diào)度:

(1)由執(zhí)行狀態(tài)切換到就緒狀態(tài)(如發(fā)生中斷)。

(2)由執(zhí)行狀態(tài)切換到等待狀態(tài)(如產(chǎn)生I/O請求或是等待某些事件的發(fā)生)。

(3)由執(zhí)行狀態(tài)切換到結(jié)束狀態(tài)。

(4)由等待狀態(tài)切換到就緒狀態(tài)(如完成I/O),

3.試舉例說明,在哪一些系統(tǒng)中吞吐量會比恢復時間更重要,而在哪一些系統(tǒng)中恢復時間會

比響應時間更重要。

答:互聯(lián)網(wǎng)的網(wǎng)頁服務器對于需服務大量用戶的情況下,要求單位時間內(nèi)系統(tǒng)完成的進程

個數(shù)(也就是完成客戶端的請求)會比各個進程執(zhí)行完成后的總共執(zhí)行時間更重要。實時系

統(tǒng)必須保證關(guān)鍵任務在一定的時間內(nèi)能夠完成,否則對系統(tǒng)會有負面的影響,所以實時系統(tǒng)

的恢復時間會比響應用戶送出要求后的響應時間更重要。

習題5.2

1.試說明為什么SJF調(diào)度法會難以實現(xiàn)。

答:因為我們很難知道進程下一個CPU脈沖時間的確實長度,最多只能使用預估的方法

來求得近似的值。

2.試問有哪些方法可以用來避免進程發(fā)生的饑餓現(xiàn)象?

答:一個簡單的方法——老化,也就是給每個進程一個年齡,這個年齡代表進程花在等待

的時間,年齡愈大表示進程等待的時間愈久,當年齡到達一定大小時,也就是老化到一定程

度時,就將進程的優(yōu)先級增高,這樣就能避免饑餓的問題發(fā)生。另外也可以使用多的反饋隊

列調(diào)度法,將在低優(yōu)先級的隊列中等待過久的進程,移至優(yōu)先級較高的隊列,這樣就能避免

饑餓的現(xiàn)象發(fā)生。

3.試問在RR調(diào)度法中,時間片太長或太短各會造成什么影響?

答:如果時間片太長,RR調(diào)度法就如同F(xiàn)CFS調(diào)度法;反之,若時間片太短時,會產(chǎn)

生處理器分享的現(xiàn)象,也就是說如果系統(tǒng)中有n個進程,每個進程的執(zhí)行就如同在一個速度

為原處理器1/n倍的處理器上執(zhí)行一樣。

習題5.3

1.試解釋在多處理器調(diào)度中,什么是對稱式多處理和非對稱式多處理?

答:對稱式多處理就是每個處理器的行為都是對等的,所以各處理器都自行調(diào)度,當處理

器空閑時就到共享的就緒隊列中挑選一個進程來執(zhí)行。非對稱式多處理指定由某一個處理器

來幫其他處理器進行調(diào)度,這種結(jié)構(gòu)稱為客戶/服務器。這個指定的處理器稱為主服務器,不

僅處理所有調(diào)度,也處理I/O和其他系統(tǒng)響應的響應,而其他的處理器就只簡單負責執(zhí)行程

序。

2.試舉例說明什么是硬實時系統(tǒng)與軟實時系統(tǒng)。

答:硬實時系統(tǒng)須保證關(guān)鍵工作在一定的時間內(nèi)能夠完成,否則對系統(tǒng)會有負面的影響,

例如沒有硬盤或虛擬內(nèi)存支持的系統(tǒng)。軟實時系統(tǒng)對時間的要求就沒有那么嚴格,萬一工作

沒有在一定的時間內(nèi)完成,它還是

溫馨提示

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

評論

0/150

提交評論