1. 程式人生 > >復習筆記——操作系統

復習筆記——操作系統

改進 內存分配 執行 指針 通道 img pac 作業調度 緩沖

2014年12月考研前一周寫的筆記。。。

放在這裏,希望對其它人有幫助。

。。

===========================================================
本來想和linux源碼一起參照一下,結果如今拖到這個時候,沒時間了,囧
內容主要參考:
http://oa.gdut.edu.cn/os/multimedia/oscai/main.htm
http://www.educity.cn/zk/czxt/201305301133411490.htm
http://see.xidian.edu.cn/cpp/html/2628.html(這個就是和王道差點兒是同樣的,不知道是誰超誰)
===========================================================

1.準備



2.進程管理
2.1.進程調度
2.1.1調度的層次
高級、中級和低級調度作業從提交開始直到完畢,往往要經歷下述三級調度:
高級調度:(High-Level Scheduling)又稱為作業調度,它決定把後備作業調入內存執行;
低級調度:(Low-Level Scheduling)又稱為進程調度,它決定把就緒隊列的某進程獲得CPU;
中級調度:(Intermediate-Level Scheduling)又稱為在虛擬存儲器中引入,在內、外存對換區進行進程對換。
2.1.2剝奪非剝奪
(1)非剝奪方式
分派程序一旦把處理機分配給某進程後便讓它一直執行下去,直到進程完畢或發生進程調度
某事件而堵塞時,才把處理機分配給還有一個進程。


(2)剝奪方式
當一個進程正在執行時,系統能夠基於某種原則,剝奪已分配給它的處理機。將之分配給其他進程。剝奪原則有:優先權原則、短進程優先原則、時間片原則。


比如。有三個進程P1、P2、P3先後到達,它們分別須要20、4和2個單位時間執行完成。
假如它們就按P1、P2、P3的順序運行,且不可剝奪,則三進程各自的周轉時間分別為20、24、
26個單位時間,平均周轉時間是23.33個時間單位。


假如用時間片原則的剝奪調度方式。可得到:
可見:P1、P2、P3的周轉時間分別為26、10、6個單位時間(如果時間片為2個單位時間)。平均周轉時間為14個單位時間。


衡量進程調度性能的指標有:周轉時間、響應時間、CPU-I/O運行期。
2.2.進程同步
2.3.死鎖

3.內存管理


3.1.內存分配
3.2.虛擬內存

4.文件管理
4.1.文件系統
4.2.磁盤

5.IO管理
5.1


附:
1.進程同步。PV操作樣例
設某臺機掛有兩個I/0通道:分別掛一臺輸入機和一臺打印機。

卡片機上有一疊數據卡片。如今要把這些數據逐一輸入到緩沖區B1,然後再拷貝到緩沖區B2,並在打印機上打印出來。
問:系統可設哪些進程來完畢這個任務?

技術分享
由上圖可見,系統可設3個進程:輸入進程復制進程打印進程;分別用進程R進程C進程P來表示。

問:這些進程之間有什麽相互制約關系?R受C的約束C受RP的約束P受C的約束問:用P-V原語寫這些進程的同步算法。4個信號量:S1=1,S2=0,S3=1,S4=0

技術分享
也能夠把S1設成0,把R進程P(S1)調到V(S2)後面


問:用Send和Rece原語寫這些進程的同步算法。RECEIVE代替P操作;用SEND代替V操作。


即:用RECEIVE(C)代替P(S1)和P(S4),用SEND(C)代替V(S2)和V(S3)
RECEIVE(R)代替P(S2),用SEND(R)代替V(S1)
RECEIVE(P)代替P(S3)。用SEND(P)代替V(S4)
問:畫出各進程的狀態轉換圖。

技術分享

2.死鎖,樣例
首先,介紹一個因為共享資源而產生死鎖的樣例:設系統有一臺打印機(R1),一臺讀卡機(R2),兩進程共享這兩臺設備。用信號量S1表示R1是否可用,初值為1。用信號量S2表示R2是否可用,初值為1;

技術分享


3.段頁
技術分享

4.Clock置換算法

  4.1. 簡單的Clock置換算法

技術分享

  4.2. 改進型Clock置換算法

  由訪問位A和改動位M能夠組合成以下四種類型的頁面:

  1類(A=0, M=0): 表示該頁近期既未被訪問。又未被改動。是最佳淘汰頁。

  2類(A=0, M=1):表示該頁近期未被訪問。但已被改動,並非非常好的淘汰頁。

  3類(A=1, M=0):近期已被訪問。但未被改動,該頁有可能再被訪問。

  4類(A=1, M=1): 近期已被訪問且被改動,該頁可能再被訪問。其運行過程可分成下面三步:

  (1) 從指針所指示的當前位置開始,掃描循環隊列。尋找A=0且M=0的第一類頁面, 將所遇到的第一個頁面作為所選中的淘汰頁。

在第一次掃描期間不改變訪問位A。

  (2) 假設第一步失敗,即查找一周後未遇到第一類頁面,則開始第二輪掃描。尋找A=0且M=1的第二類頁面,將所遇到的第一個這類頁面作為淘汰頁。在第二輪掃描期間,將全部掃描過的頁面的訪問位都置0。

  (3) 假設第二步也失敗,亦即未找到第二類頁面,則將指針返回到開始的位置,並將全部的訪問位復0。

然後反復第一步,假設仍失敗。必要時再反復第二步,此時就一定能找到被淘汰的頁。

5.磁盤分配的成組鏈接法【1】

技術分享

題目如圖片:

問題是:

(1)該磁盤中眼下還有多少個空暇盤塊?【答】:我知道是2+100+100+99=301個吧
(2)在給文件F分配三個盤塊後,試給出分配後的盤塊鏈接情況【答】是先299號 再300號 再301號吧?

(3)接著,系統要刪除還有一個文件,並回收它所占的5個盤塊。它們的盤塊號依次為700,711,703,788,701。試給出回收後的盤塊鏈接情況

【就第三個不太理解。是先底部700,然後往上1 0處711 703嗎?還是怎麽分,求解釋?】
第一組中的塊都分配完後,把下一組中的塊都放到超級塊中,這樣就少了一個組,然後再進行分配。

回收是先把塊放到第一組中,假設滿了就把這個組變為第二組。
s.free 4
711
703
788
701 。

700 每組就相當於個堆棧。




參考資料:

【1】http://zhidao.baidu.com/link?url=cbFVuBEaHbL7NtGAiXqEMwx6LiCq-SpaClCoTt3_H68OwwFpcThFS8bL6SHQE7F5ALVEfFQsILwjXzwc-8aBanD6FyHpV-KyERCloGXEvLa

復習筆記——操作系統