作業系統原理和實訓教程

Adjerrekaf發表於2017-12-31

問題:

1什麼是OS?其四大管理功能是什麼?

2為什麼引入分時OS

分時OS的優點:
(1)互動性。使用者能夠通過終端與系統進行廣泛的對話
(2)及時性。終端使用者的請求能在很短的時間內獲得響應。
(3)獨佔性。每個使用者各佔一個終端,彼此獨立操作,互不干擾,感覺好像自己獨佔主機一樣。
(4)同時性(也稱多路性)。提高了系統資源利用率,節省了開支,促進了計算機的廣泛應用

由於批處理系統比分時系統早,批處理系統缺點(其實最大的是缺乏人機互動性,於是程式設計人員不幹了,會抱怨不能及時互動,有人就改進了)被取代。所以,批處理作業系統的缺點到分時系統就沒有了。

分時系統可以以時間片為單位,輪流相應給服務於各種作業,這樣批處理作業系統的不能及時互動就拿掉了,這裡面就有格響應的及時性,程式設計人員就滿意了,因此,分時系統從那時就流行到今天。

 

3若按系統能同時響應的使用者數及任務數來劃分,則OS可分為哪幾類?伺服器上應該安裝哪一類?手機上應該安裝哪一類?

單使用者單任務(MS-DOS),單使用者多工(Windows 95Windows 98),多使用者多工(現在用的或Windows NT系列衍生物,Windows server,最偉大的UNIX,Linux等)。

伺服器上要安裝多使用者多工。因為伺服器上的使用者是多使用者的。手機上安裝單使用者多工,屬於嵌入式系統,但是針對本題是單使用者多工作業系統。

 

4若按系統處理任務的方式來劃分,則OS可分為哪幾類?

基本型別的有三種:批處理作業系統,分時作業系統(分時輪轉排程),實時作業系統(發揮軟硬體實時處理特性,高優先順序的優先,並且有deadline實踐不能太長,具體有股票交易,訂票系統,工控,軍控等)。

(其實還有分散式作業系統,因為上面三種屬於集中式作業系統,分散式作業系統還不成熟,無法形成課本形式的概念。往往就是類似我們知道的多級環境下比如說並行機,相當於一個處理機他比如說是相當於過去的一個單機的方式來處理任務。)

 

5OS提供的使用者介面有哪幾類?對應的一個例項分別是什麼?

命令藉口(聯機命令介面也就是鍵盤命令,離線命令介面),程式介面(MS-DOS的INT中斷呼叫,UNIX的System call系統呼叫函式,Windows的API函式等),圖形使用者介面(也稱作圖形使用者介面現在作業系統的圖形使用者形式)。

 

6不同時期的軟體開發方法決定了OS的結構,UNIXWindows的結構分別是什麼?

結構主要分四種:整體式結構,層次式結構,虛擬機器系統和客戶-伺服器系統。軟體的結構作業系統自身的結構取決於不同時期的軟體開發方法和工具,導致了過去的模組化,有序分子化也叫層次化(Unix結構)然後就是客戶-伺服器模式的微核心結構(windows結構)。

 

7系統靠什麼從使用者態進入核心態執行?

中斷。

 

8、你認為設定分時系統中的時間片時主要應該考慮哪些因素?或者說,你認為時間片大點兒好,還是小點兒好?為什麼?

太大了也不行,太小了也不行。是一個實驗通緝值。太大了會退化為批處理方式,太小了切換過程使得開銷太大,得不償失。

 

9、處理機為什麼有兩種執行狀態?

出於安全考慮。分為管態(Kernel Mode)又稱系統態,核心態,核心態和目態( User Mode)又稱使用者態。

 

10、硬體指令集為什麼要劃分出特權指令真子集?

也是基於安全考慮,把一些關於作業系統安全的指令設為特權指令集,規定只有作業系統核心才能用,普通使用者這一律不能用,這樣系統就安全了。

 

11、當沒有使用者程式要執行時,CPU在做什麼?

Idol程式正在執行。無論windows還是Unix都有一個idol程式。使用者不請求時,作業系統執行,用於迴圈捕獲使用者(典型的是滑鼠鍵盤)請求(中斷)的程式。你一請求它就要分析是什麼中斷,什麼意思要我幹啥活,不合理就告訴他請求無效,合理馬上就建立程式載入一個可執行程式。

 

12、作業系統中許多工不滿足Bernstein條件,它們不能併發執行嗎?該怎麼辦?

顯然不是,只要系統採取措施,對併發的程式的執行進行控制,加入同步約束條件,就能使它們“安全地”併發執行,且保持結果的可再現性。

 

13、C語言源程式的例項為什麼要引入程式?在系統響應了60個終端使用者幾乎同時提出的編譯他的中,產生了多少個使用者程式?對應多少個程式?

為了實現程式在多道環境下的併發執行。一共產生了60個程式,對應1個程式,這個程式就是c語音編譯器程式。

程式對應的程式應該是可執行程式,分為C語言源程式和C語言編譯器程式。源程式經過編譯連線後才能形成.exe可執行程式。

 

14、程式存在於系統的唯一標誌是什麼?

程式的組織指的是PCB的組織。程式是程式一次執行的一個抽象,是一個動態的概念。

 

15、一般作業系統教科書上所說的程式的組織指的是什麼?

程式的組織馬上聯想到程式的實體,作業系統管理程式的所謂PCB的組織,由此立馬聯想到程式佇列對應多個事件對應多個阻塞佇列。

 

16、你知道臨界區和臨界資源的不同嗎?

臨界區(又稱臨界段)就是訪問臨界資源的程式碼。另外,使用同一臨界資源的不同程式中的臨界區稱為同類臨界區或相關臨界區。臨界資源則不允許同時訪問。比如印表機不允許同時訪問。

17、如果使用記錄型訊號量正確地描述了程式的互斥,能完全滿足臨界區的使用原則嗎?

原則是:空則讓進,忙則等待,等則讓進,等則讓權。所以記錄型訊號量全都滿足。(但是比如整形訊號量就不滿足,存在CPU忙等的,因此就不滿足,能實現互斥,但是等則讓權無法實現。)

 

18、記錄型訊號量的整型分量值的物理含義是什麼?

 

19、P操作和V操作的物理含義是什麼?

P(S)操作表示等訊號,即測試一個要等的訊號是否到達;V(S)操作表示發訊號,這個訊號在實現同步時就是合作者的夥伴程式已完成前驅任務,在實現互斥時就是臨界資源可用。另外,在互斥問題中,每執行一次P(S)操作的含義,也可以理解為程式請求一個單位的S類資源;每執行一次V(S)操作的含義,也可以理解為程式釋放一個單位的S類資源。
P = Wait = Down = -1
V = Signal = Up = +1

 

20、在學過的兩個終端售票程式發售同一班次車票的問題例項中,如何解決票已售完

加一個判斷,如果有票的時候就賣票,沒有就退出,退出之前別忘了釋放臨界資源的互斥使用權。

21、在生產者-消費者問題解答中,如果某程式中的P操作順序顛倒了,會怎麼樣?

會死鎖。具體可以舉個例子試試,比如消費者有沒有產品,有的話就取出來消費;但是顛倒之後,先互斥著取,一排程阻塞了。

若此程式是生產者程式,則是P(empty)P(mutex)兩個P操作顛倒順序。對於緩衝區充滿的狀態,若一生產者程式搶先執行了P(mutex)操作併成功,當下一步執行P(empty)操作時,就會因失敗而進入阻塞狀態,此時此程式需要消費者程式執行V(empty)操作來喚醒它。可是因為此程式無法執行V(mutex)操作,使得執行P(mutex)操作的其他生產者程式和所有消費者程式全部進入阻塞狀態,從而系統進入了死鎖狀態。
 若此程式是消費者程式,則是P(full)P(mutex)兩個操作顛倒順序。對於緩衝區為空的狀態,若一消費者程式搶先執行了P(mutex)操作併成功,當下一步執行P(full)操作時,就會因失敗而進入阻塞狀態,此時此程式需要生產者程式執行V(full)操作來喚醒它。可是因為此程式無法執行V(mutex)操作,使得執行P(mutex)操作的其他消費者程式和所有生產者程式全部進入阻塞狀態,從而系統進入了死鎖狀態。

 

22在生產者-消費者問題解答中,如果某程式設計師漏寫了一個V操作,會怎麼樣?

還是會死鎖。

23如何用訊號量機制描述兩人下象棋的過程?

純互斥問題的解法往往比較單一,而同步問題通常可一題多解。二人對弈過程是個純粹的同步過程,對弈雙方之間沒有互斥制約關係。這裡給出兩種解法:
解法一:
(1)用訊號量設定如下:
a. 同步訊號量hei,初值為1,表示黑方已走子,開始時可以使紅方先行不受阻
b. 同步訊號量hong,初值為0,表示紅方尚未走子,開始時可使黑方先行受阻
(2)用訊號量機制描述的二人下象棋過程如下:

     紅方                  黑方
P(hei);                P(hong)
若被黑方將死,則投子認輸,結束;    若被紅方將死,則投子認輸,結束;
若同意與黑方作何,則結束;       若同意與紅方作何,則結束;
否則,根據棋局思考後走一子;      否則,根據棋局思考後走一子;
V(hong);               V(hei)
————————————————————————————————————
解法二:(若將上述同步訊號量hei的初值設為0~~~
(1)用訊號量設定如下:
a. 同步訊號量hei,初值為0,表示黑方尚未應對
b. 同步訊號量hong,初值為0,表示紅方尚未走子,開始時可使黑方先行受阻
(2)用訊號量機制描述的二人下象棋過程如下:

     紅方                  黑方
P(hong)
若被黑方將死,則投子認輸,結束;    若被紅方將死,則投子認輸,結束;
若同意與黑方作何,則結束;       若同意與紅方作何,則結束;
否則,根據棋局思考後走一子;      否則,根據棋局思考後走一子;
V(hong);               V(hei)
P(hei)

 

24為什麼說哲學家進餐問題的經典解法不正確?你能給個正確的解答嗎?

(1)說經典解法不正確是因為有這樣一種次序:5個程式都剛剛執行完第一個P操作後的“拿起左邊的叉子”操作,即這5位哲學家同時飢餓而各自拿起左邊的叉子。這時5個互斥訊號量S[i]的值均為0,此後,當他們執行第二個P操作申請拿右手叉子時,均因無叉子可拿而阻塞,且永遠阻塞,因為他們彼此之間都在等待右邊的哲學家來喚醒自己,但沒有一位哲學家程式能繼續執行。於是這5個哲學家程式陷入死鎖狀態。
(2)一種解決方法:把哲學家使用叉子進餐的過程看成是初值為4的臨界資源,即限定至多有4位哲學家可以同時去拿左邊的叉子,這樣就能保證最終至少有一位哲學家能夠拿到左右兩邊的叉子,並吃完通心粉放下叉子,從而使更多的哲學家能夠進餐。

 

25、你能說出程式之間互斥與同步這兩種制約關係的不同之處嗎?

互斥是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序。
 一般情況的同步是指在互斥的基礎上實現訪問者對資源的有序訪問。但有少數情況可以允許多個訪問者同時訪問資源。
 同步是一種更為複雜的互斥,而互斥是一種特殊的同步。
 區別同步和互斥的一個有效辦法是:觀察是否限制了訪問者對資源的訪問是有序的。若限制為有序的,則說明為同步制約關係;若無此限制,則說明是互斥制約關係。並且,同步與互斥制約可能同時存在。

(同步的你先我後是嚴格的你先我後,互斥的你先我後是可以顛倒次序的你先我後)

 

2620個程式,競爭使用65個同類資源,每個程式最多使用三個資源,可能產生死鎖嗎?為什麼?

不可能產生死鎖。因為這二十個程式最多使用20*3=60個同類資源,而可供使用的同類資源有65個,大於所需的資源數量,所有不可能產生死鎖。
 注:死鎖產生的根本原因:當系統中供多個程式共享的臨界資源的數目不能滿足諸程式的需要時,會引起諸程式對資源的競爭而產生死鎖。明顯此題目的描述不滿足死鎖產生的根本原因。

26、系統處於不安全狀態一定會進入死鎖狀態嗎?為什麼?

(1)不一定,系統處於安全狀態一定可以避免死鎖,而系統處於不安全狀態則僅僅可能進入死鎖狀態。其關係入下圖:

(2)系統處於不安全狀態僅說明當前情況下的資源分配出現不安全的因素,而隨著時間的推移,資源的分配可能會發生變化的,原來佔有臨界資源的程式可能因為某些原因自己阻塞起來,並放棄已擁有的臨界資源,這樣系統有可能又處於了安全狀態。

28採用銀行家演算法分配資源的系統會發生死鎖嗎?

不會。銀行家演算法的實質就是要設法保證系統動態分配資源後不進入不安全狀態,以避免可能產生的死鎖。

29、n個程式共享同類互斥資源m個。如果每個程式最多申請x個資源(1≤x≤m),則當n(x-1)+1≤m時,系統會發生死鎖嗎?為什麼?

不會發生死鎖。
 因為每個程式最多申請x個資源,所以最壞情況是每個程式都得到了(x-1)個資源,並且現在均需申請最後一個資源。此時,系統剩餘資源數為m-n(x-1),於是只要系統中至少還有一個資源可供使用,就可以使這n個程式中某個程式得到其所需的全部資源,並能夠繼續執行到完成,歸還資源可供其他程式使用。因而不會發生死鎖。即只要m-n(x-1)>=1時,系統就一定不會發生死鎖。亦即當n(x-1)+1<=m時,系統不會發生死鎖。

30、作業系統對付死鎖的手段主要有哪幾種?

有四種。
 分別為:死鎖的預防,死鎖的避免,死鎖的檢測與解除
 還有一種對付死鎖的最簡單的方法就是置之不理——鴕鳥演算法

31、三種基本型別的作業系統中都會有三級排程嗎?

不是。
 三級排程都有的是採用虛存管理技術的批處理作業系統(或者說是支援虛擬儲存技術的批處理作業系統)。

32、你能看懂時間片輪轉法排程的Gantt chart(Gantt)表示嗎?

時間片輪轉排程演算法示例(時間片=20ms)

程式

使用CPU時間

P1

53

P2

17

P3

68

P4

24

 時間片輪轉法排程的Gantt chart(Gantt圖)表示如下:
 
 對於此Gantt圖的解釋如下:
 在0~20毫秒:執行P1程式,因時間片用完而退出,此時P1還需53-20=33ms
 在20~37毫秒:執行P2程式,因P2程式執行完畢而退出
 在37~57毫秒:執行P3程式,因時間片用完而退出,此時P3還需68-20=48ms
 在57~77毫秒:執行P4程式,因時間片用完而退出,此時P4還需24-20=4ms
 在77~97毫秒:執行P1程式,因時間片用完而退出,此時P1還需33-20=13ms
 在97~117毫秒:執行P3程式,因時間片用完而退出,此時P3還需48-20=28ms
 在117~121毫秒:執行P4程式,因P4程式執行完畢而退出
 在121~134毫秒:執行P1程式,因P1程式執行完畢而退出
 在134~154毫秒:執行P3程式,因時間片用完而退出,此時P3還需28-20=8ms
 在154~162毫秒:執行P3程式,因P3程式執行完畢而退出

 注:時間片輪轉演算法是適用於分時系統的可搶佔排程演算法

 

33、為什麼要引入執行緒?你認為執行緒與程式最大的不同是什麼?

34、引入執行緒是為了減少程式併發執行時系統所付出的時空開銷(主要指程式建立、切換和通訊的開銷),進一步提高程式的併發執行程度,進而提高系統的吞吐量。
 執行緒與程式最大的不同是程式擁有資源,執行緒幾乎不擁有資源。
執行緒與程式的比較
(1)擁有資源
 程式是擁有資源的一個獨立單位
 執行緒幾乎不擁有系統資源,但它可以訪問其隸屬程式的資源
(2)排程
 傳統作業系統中:
 程式既是擁有資源的基本單位,有事能獨立排程的基本單位
 引入執行緒的作業系統中:
 程式只是擁有資源的基本單位,而執行緒是排程與分派的基本單位
(3)併發性
 不僅程式之間可以併發執行,而且執行緒之間也可以併發執行
(4)系統開銷
 作業系統為程式切換付出的開銷遠大於為同一程式內的執行緒切換付出的開銷
 由於同一程式內的多個執行緒具有相同的地址空間,致使它們之間的同步互斥的實現也變得比較容易

 

35、你瞭解程式的三種基本狀態嗎?程式能從阻塞狀態轉換到執行狀態嗎?為什麼?

 

35作業、程式、程式、執行緒中,哪些是靜態概念,哪些是動態概念?

36你能區分實體地址與實體地址空間嗎?你知道邏輯地址和實體地址的不同嗎?

37什麼是靜態重定位?什麼是動態重定位?哪種方式下可執行程式的內外存副本一致?

38分割槽式儲存管理包括單一連續區分配、固定分割槽分配、可變分割槽分配、可重定位分割槽分配以及夥伴系統,其中哪些屬於靜態分割槽技術,哪些屬於動態分割槽技術?

39固定分割槽儲存管理系統適合採用最先適應、下次適應、最佳適應、最壞適應這四種記憶體分配演算法中的哪一種?

40固定分割槽儲存管理系統中常用什麼方法進行記憶體保護?實分頁系統中的做法又是什麼呢?

41在頁式儲存管理中,什麼是頁內碎片?如何降低頁內碎片?

42你認為設定虛分頁系統中的頁面尺寸時主要應該考慮哪些因素?或者說,你認為頁面大點兒好,還是小點兒好?為什麼?

43你會看頁地址字的內容嗎?

44你知道頁表源於什麼嗎?

45你能看懂頁表嗎?

46你認為實分頁系統中最簡化的頁表表目應該有什麼內容?為什麼?

47你認為虛分頁系統中最簡化的頁表表目應該有什麼內容?為什麼?

48你能描述分頁系統的地址對映過程嗎?

49虛存的實際最大尺寸常取決於系統的地址結構嗎?

50程式在虛存管理模式下執行比在真實模式下慢嗎?為什麼?

51缺頁中斷與與常規中斷的不同之處有哪些?

52一個程式當前使用的頁的集合叫它的什麼?

53你瞭解FIFOLRUNRUclock頁面置換演算法嗎?

54什麼是Belady現象?在所有頁面置換演算法中,都會產生Belady現象嗎?

55影響虛分頁系統中缺頁率的主要因素有哪些?

56你認為虛擬印表機的實質是什麼?

57磁碟的三地址結構由哪些組成?

58磁碟訪問時間構成中哪一部分約佔七成?

59你認為固態盤比普通移動頭磁碟好在哪裡?為什麼?

60你怎樣看待現在市場上流行PC的雙硬碟配置(比如,一個256GB的固態盤+一個1TB7200轉每分鐘的磁碟)?

61你能掌握哪幾種磁碟排程演算法?

62裝置驅動程式的處理過程主要分為哪三個階段?

63檔案存取方式與檔案結構、檔案儲存介質都有關係嗎?

64開啟檔案操作的主要功能是什麼?

65UNIX System V 的檔案採用多級混合索引結構。假設每個盤塊4kB,每個盤塊號4B,則採用3次間址可表示的檔案最大長度是多少?

66Windows FAT32檔案系統中,檔案的“下一簇號”在FAT表中,檔案的“首簇號”在哪裡?

67硬連結可以跨檔案系統嗎?軟連結呢?為什麼?

68用符號鏈(Symbolic linking)訪問共享檔案的優缺點是什麼?

69為什麼說UNIX的檔案目錄樹比一般作業系統裡的檔案目錄樹小?

70位示圖能用做記錄磁碟空間劃分使用情況的資料結構嗎?為什麼?它的優缺點是什麼?

71假設某磁碟共有80000塊,當前有20000塊空閒,每個塊號以32位表示,若用位示圖實現該磁碟的空閒塊表,需要多少個位元組。

72從原理上看,磁碟碎片整理與記憶體的什麼技術相似?為什麼進行磁碟碎片整理能提升計算機系統的效能?

73FAT32檔案系統中,簇大小分別為4K32K時,檔案系統理論上能管理的最大磁碟空間是多少?

74FAT32檔案系統和EXT2檔案系統分別是什麼作業系統使用的?其檔案的物理結構是什麼?

75Windows 98為什麼不繼續使用Windows 95FAT16檔案系統,而改用FAT32檔案系統?

76你剛攢好了一臺PC,準備裝作業系統,你首選32位的系統還是64位的?為什麼?

 

 

相關文章