五.(2)設備管理 用戶層I/O 軟件 緩沖 磁盤

小部分I/O系統(tǒng)軟件放在了用戶應用層上。

庫函數(shù)(與應用程序鏈接)

假脫機技術(虛擬設備)

1)系統(tǒng)調用與庫函數(shù)

¨不允許運行在用戶態(tài)的應用進程,去直接調用運行在核心態(tài)(系統(tǒng)態(tài))的OS過程。

¨應用進程在運行時,又必須取得OS所提供的服務。

于是:

¨OS在用戶層中引入了系統(tǒng)調用,應用程序可以通過它,間接調用OS中的I/O過程,對I/O設備進行操作。

2)設備分配中的虛擬技術——SPOOLing技術

虛擬性是OS的四大特征之一。

多道程序技術將一臺物理CPU虛擬為多臺邏輯CPU,實現(xiàn)多個用戶共享一臺主機;

如何將一臺物理I/O設備虛擬為多臺邏輯I/O設備,允許多個用戶共享“同時使用” ?

假脫機技術

多道程序技術,專門利用程序模擬脫機I/O的外圍機,完成設備I/O操作。

¨稱這種聯(lián)機情況下實現(xiàn)的同時外圍操作為SPOOLing 技術(Simultaneaus Periphernal Operating On—Line,或稱為假脫機操作)

¨一般進程對獨占設備的需求被假脫機模擬到磁盤上。所以實現(xiàn)設備虛擬,多道是前提,還需高速、大容量、可隨機存取的外存支持。


SPOOLing系統(tǒng)的特點

1.提高了I/O的速度。利用輸入輸出井模擬成脫機輸入輸出,緩和了CPU和I/O設備速度不匹配的矛盾。

2.將獨占設備改造為共享設備。并沒有為進程分配設備,而是為進程分配一存儲區(qū)和建立一張I/O請求表。

3.最終,實現(xiàn)了虛擬設備功能。多個進程可“同時”使用一臺獨占設備。


緩沖管理

I/O控制方式減少CPU對I/O的干預提高利用率;

緩沖則通過緩和CPU和I/O設備速度不匹配矛盾,增加CPU和I/O設備的并行性,提高利用率。

現(xiàn)代OS中,幾乎所有的I/O設備與處理機交換數(shù)據(jù)時,都用了緩沖區(qū)。


①循環(huán)緩沖的組成

多個緩沖區(qū)。大小相同,三種類型:

¨預備裝輸入數(shù)據(jù)的空緩沖區(qū)R

¨裝滿數(shù)據(jù)的緩沖區(qū)G

¨計算進程正在使用的現(xiàn)行工作緩沖區(qū)C

多個指針。

¨指示正在使用的緩沖區(qū)C的指針Current

¨指示計算進程下一個可取的緩沖區(qū)G的指針Nextg

¨指示輸入進程下次可放的緩沖區(qū)R的指針Nexti

②循環(huán)緩沖區(qū)的使用

計算進程(CPU)和輸入進程(I/O操作)可利用兩個過程來使用循環(huán)緩沖區(qū)。

主要就是利用指針,操作上述不同類型緩沖區(qū)

Getbuf過程:使用緩沖區(qū)時,可調用該過程

計算進程取:current=Nextg,G—>C,nextg下移一個。

輸入進程放:current=nexti,R—>C,nexti下移一個

Releasebuf過程:

計算進程:C->R

輸入進程:C->G

③進程同步

兩個進程的控制:輸入進程和計算進程并行執(zhí)行,如何控制相應的兩個指針不斷順時針方向移動,這樣就可能出現(xiàn)兩種情況:

1.Nexti趕上Nextg。意味著輸入速度大于計算速度,緩沖區(qū)滿,只能阻塞輸入進程等計算進程取,此情況稱為系統(tǒng)受計算限制。

2.Nextg趕上Nexti。意味著輸入速度低于計算速度,緩沖區(qū)空,只能阻塞計算進程等輸入進程放,此情況稱為系統(tǒng)受I/O限制。

3)緩沖池(Buffer Pool)

循環(huán)緩沖的問題

不能同時雙向通訊

利用率不高。緩沖區(qū)是專用緩沖。(每個進程都要維護自己的一個循環(huán)緩沖區(qū)),使用有剩余時也不給其他進程使用,消耗大量內(nèi)存空間。

系統(tǒng)并發(fā)程序很多時,許多這樣的循環(huán)緩沖需要管理,比較復雜。

為提高緩沖區(qū)的利用率,目前廣泛流行緩沖池,在池中設置多個可供若干個進程共享的緩沖區(qū)。

①緩沖池的組成

對于既可輸入又可輸出的公用緩沖池,至少應含有下列三種類型的緩沖區(qū):

1.空緩沖區(qū);

2.裝滿輸入數(shù)據(jù)的緩沖區(qū);

3.裝滿輸出數(shù)據(jù)的緩沖區(qū);

? 為方便管理,將上述類型相同的緩沖區(qū)連成隊列

¨空緩沖區(qū)隊列(所有進程都可用)

¨輸入隊列(n個進程有各自的隊列)

¨輸出隊列(n個進程有各自的隊列)

*(隊列長度不固定,根據(jù)進程實際情況靈活變動,需要多少用多少)

②緩沖區(qū)的工作方式

四種工作方式:

1.收容輸入:Getbuf(emq),hin;輸入數(shù)據(jù)填入一空緩沖區(qū);Putbuf(inq,hin)

2.提取輸入: Getbuf(inq),sin;從輸入緩沖隊列中取出一數(shù)據(jù)區(qū)的內(nèi)容;Putbuf(emq,sin)

3.收容輸出: Getbuf(emq),hout;輸出數(shù)據(jù)填入一空緩沖區(qū);Putbuf(outq,hout)

4.提取輸出: Getbuf(outq),sout;從輸出緩沖隊列中取一數(shù)據(jù)區(qū)的內(nèi)容;Putbuf(emq,sout)

磁盤調度方法

對所有請求訪問磁盤的進程進行合理調度,使對磁盤的平均訪問時間最小。

目標:使平均尋道時間最少。

算法:

¨FCFS

¨最短尋道時間優(yōu)先SSTF

¨掃描算法SCAN(磁盤電梯調度算法)

循環(huán)掃描算法CSCAN

N-Step-SCAN算法

FSCAN算法


③掃描算法SCAN(磁盤電梯調度算法)

SSTF會導致“饑餓”現(xiàn)象

¨總選擇最近的磁道訪問,遠磁道請求的進程會長時間得不到執(zhí)行。

改進:

¨考慮距離的同時,更優(yōu)先考慮方向

SCAN算法

¨規(guī)定磁頭移動方向:自里向外,再自外向里移動。

¨后續(xù)的I/O磁道請求,哪個在規(guī)定方向上距離最近,就先執(zhí)行哪個。

¨如當前為100,后續(xù)要求55,86,95,180,165,105

先由內(nèi)向外:選最近的105執(zhí)行,再判斷剩余的,選165,180。

再由外向內(nèi):95,86,55

循環(huán)掃描CSCAN

SCAN的錯過問題:

¨容易錯過與當前磁道距離近,但方向不一致的磁道。

修改:將SCAN規(guī)定的移動方向改為“單向移動”

¨由里向外后,再由里向外。

N-Step-SCAN

前述最近尋道算法共同問題:

¨“磁臂粘著”——磁頭靜止在一個磁道上,導致其它進程無法及時進行磁盤I/O。(因:高密度盤,進程的讀寫可能集中在某一磁道)

¨如現(xiàn)有一系列請求:

3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3

不管哪種算法,從3開始向下執(zhí)行會是

3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….

對磁盤的訪問總是由缺頁引起的:

¨CPU給出地址,需要訪問某存儲單元;

¨并行進行TLB查找和cache查找;

¨TLB查找后申明沒有找到;

¨停止并行查找,并通知操作系統(tǒng)處理;

¨操作系統(tǒng)檢查頁表,發(fā)現(xiàn)該頁不在內(nèi)存中,需要從硬盤調入。應該如何進行呢?

磁盤訪問:

1 操作系統(tǒng)從主存中選擇一頁準備換出,為調入的頁安排存放空間;

2 若被換出的頁是“臟”頁,需要將其寫回磁盤存儲;

3 操作系統(tǒng)申請I/O總線;

4 獲得批準后,發(fā)送寫命令給I/O 設備(磁盤)。

5 緊跟著傳送需要寫回的頁的全部數(shù)據(jù)。

6 I/O控制器發(fā)現(xiàn)發(fā)給自己的寫命令

7 加入到握手協(xié)議,并接受數(shù)據(jù)。

8 根據(jù)數(shù)據(jù)要寫入的地址,讀/寫頭移動到正確的柱面,同時,將數(shù)據(jù)接收到緩沖區(qū)。

9 尋道結束后,等待相應的扇區(qū)旋轉到磁頭下面,將數(shù)據(jù)寫入扇區(qū)中。?

10 在寫入數(shù)據(jù)間隙,計算校驗碼并寫入扇區(qū)中。

11 下一步,操作系統(tǒng)繼續(xù)申請總線(如果還保持總線控制權,則不必申請)。

12 得到授權后,向磁盤發(fā)出讀命令。?

13 然后,磁盤識別地址,并轉換為相應的地址段。

14 尋道,將讀/寫頭移動到指定位置。

15 從指定扇區(qū)中讀去數(shù)據(jù),并進行校驗。

16 磁盤申請I/O總線。

17 得到授權后,將數(shù)據(jù)通過總線送到內(nèi)存。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內(nèi)容