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

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

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

假脫機(jī)技術(shù)(虛擬設(shè)備)

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

¨不允許運(yùn)行在用戶態(tài)的應(yīng)用進(jìn)程岛啸,去直接調(diào)用運(yùn)行在核心態(tài)(系統(tǒng)態(tài))的OS過程奕锌。

¨應(yīng)用進(jìn)程在運(yùn)行時(shí)焙蚓,又必須取得OS所提供的服務(wù)痕寓。

于是:

¨OS在用戶層中引入了系統(tǒng)調(diào)用寝受,應(yīng)用程序可以通過它偎窘,間接調(diào)用OS中的I/O過程乌助,對(duì)I/O設(shè)備進(jìn)行操作。

2)設(shè)備分配中的虛擬技術(shù)——SPOOLing技術(shù)

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

多道程序技術(shù)將一臺(tái)物理CPU虛擬為多臺(tái)邏輯CPU他托,實(shí)現(xiàn)多個(gè)用戶共享一臺(tái)主機(jī);

如何將一臺(tái)物理I/O設(shè)備虛擬為多臺(tái)邏輯I/O設(shè)備仆葡,允許多個(gè)用戶共享“同時(shí)使用” 赏参?

假脫機(jī)技術(shù)

多道程序技術(shù),專門利用程序模擬脫機(jī)I/O的外圍機(jī)沿盅,完成設(shè)備I/O操作把篓。

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

¨一般進(jìn)程對(duì)獨(dú)占設(shè)備的需求被假脫機(jī)模擬到磁盤上腰涧。所以實(shí)現(xiàn)設(shè)備虛擬韧掩,多道是前提,還需高速窖铡、大容量揍很、可隨機(jī)存取的外存支持。


SPOOLing系統(tǒng)的特點(diǎn)

1.提高了I/O的速度万伤。利用輸入輸出井模擬成脫機(jī)輸入輸出,緩和了CPU和I/O設(shè)備速度不匹配的矛盾呜袁。

2.將獨(dú)占設(shè)備改造為共享設(shè)備敌买。并沒有為進(jìn)程分配設(shè)備,而是為進(jìn)程分配一存儲(chǔ)區(qū)和建立一張I/O請(qǐng)求表阶界。

3.最終虹钮,實(shí)現(xiàn)了虛擬設(shè)備功能聋庵。多個(gè)進(jìn)程可“同時(shí)”使用一臺(tái)獨(dú)占設(shè)備。


緩沖管理

I/O控制方式減少CPU對(duì)I/O的干預(yù)提高利用率芙粱;

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

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


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

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

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

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

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

多個(gè)指針择份。

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

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

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

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

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

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

Getbuf過程:使用緩沖區(qū)時(shí)荣赶,可調(diào)用該過程

計(jì)算進(jìn)程确锛邸:current=Nextg,G—>C,nextg下移一個(gè)拔创。

輸入進(jìn)程放:current=nexti利诺,R—>C,nexti下移一個(gè)

Releasebuf過程:

計(jì)算進(jìn)程:C->R

輸入進(jìn)程:C->G

③進(jìn)程同步

兩個(gè)進(jìn)程的控制:輸入進(jìn)程和計(jì)算進(jìn)程并行執(zhí)行伏蚊,如何控制相應(yīng)的兩個(gè)指針不斷順時(shí)針方向移動(dòng)立轧,這樣就可能出現(xiàn)兩種情況:

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

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

3)緩沖池(Buffer Pool)

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

不能同時(shí)雙向通訊

利用率不高悠菜。緩沖區(qū)是專用緩沖舰攒。(每個(gè)進(jìn)程都要維護(hù)自己的一個(gè)循環(huán)緩沖區(qū)),使用有剩余時(shí)也不給其他進(jìn)程使用悔醋,消耗大量內(nèi)存空間摩窃。

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

為提高緩沖區(qū)的利用率鹦聪,目前廣泛流行緩沖池,在池中設(shè)置多個(gè)可供若干個(gè)進(jìn)程共享的緩沖區(qū)蒂秘。

①緩沖池的組成

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

1.空緩沖區(qū);

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

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

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

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

¨輸入隊(duì)列(n個(gè)進(jìn)程有各自的隊(duì)列)

¨輸出隊(duì)列(n個(gè)進(jìn)程有各自的隊(duì)列)

*(隊(duì)列長度不固定段化,根據(jù)進(jìn)程實(shí)際情況靈活變動(dòng)嘁捷,需要多少用多少)

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

四種工作方式:

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

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

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

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

磁盤調(diào)度方法

對(duì)所有請(qǐng)求訪問磁盤的進(jìn)程進(jìn)行合理調(diào)度港谊,使對(duì)磁盤的平均訪問時(shí)間最小。

目標(biāo):使平均尋道時(shí)間最少橙弱。

算法:

¨FCFS

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

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

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

N-Step-SCAN算法

FSCAN算法


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

SSTF會(huì)導(dǎo)致“饑餓”現(xiàn)象

¨總選擇最近的磁道訪問歧寺,遠(yuǎn)磁道請(qǐng)求的進(jìn)程會(huì)長時(shí)間得不到執(zhí)行。

改進(jìn):

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

SCAN算法

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

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

¨如當(dāng)前為100屈梁,后續(xù)要求55嗤练,86,95在讶,180煞抬,165,105

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

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

循環(huán)掃描CSCAN

SCAN的錯(cuò)過問題:

¨容易錯(cuò)過與當(dāng)前磁道距離近旗扑,但方向不一致的磁道蹦骑。

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

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

N-Step-SCAN

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

¨“磁臂粘著”——磁頭靜止在一個(gè)磁道上眠菇,導(dǎo)致其它進(jìn)程無法及時(shí)進(jìn)行磁盤I/O。(因:高密度盤袱衷,進(jìn)程的讀寫可能集中在某一磁道)

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

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í)行會(huì)是

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

對(duì)磁盤的訪問總是由缺頁引起的:

¨CPU給出地址,需要訪問某存儲(chǔ)單元致燥;

¨并行進(jìn)行TLB查找和cache查找登疗;

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

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

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

磁盤訪問:

1 操作系統(tǒng)從主存中選擇一頁準(zhǔn)備換出箱蝠,為調(diào)入的頁安排存放空間续捂;

2 若被換出的頁是“臟”頁,需要將其寫回磁盤存儲(chǔ)宦搬;

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

4 獲得批準(zhǔn)后,發(fā)送寫命令給I/O 設(shè)備(磁盤)床三。

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

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

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

8 根據(jù)數(shù)據(jù)要寫入的地址聂渊,讀/寫頭移動(dòng)到正確的柱面,同時(shí)四瘫,將數(shù)據(jù)接收到緩沖區(qū)汉嗽。

9 尋道結(jié)束后,等待相應(yīng)的扇區(qū)旋轉(zhuǎn)到磁頭下面找蜜,將數(shù)據(jù)寫入扇區(qū)中饼暑。?

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

11 下一步弓叛,操作系統(tǒng)繼續(xù)申請(qǐng)總線(如果還保持總線控制權(quán)彰居,則不必申請(qǐng))。

12 得到授權(quán)后撰筷,向磁盤發(fā)出讀命令陈惰。?

13 然后,磁盤識(shí)別地址毕籽,并轉(zhuǎn)換為相應(yīng)的地址段抬闯。

14 尋道,將讀/寫頭移動(dòng)到指定位置关筒。

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

16 磁盤申請(qǐng)I/O總線蒸播。

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廉赔,一起剝皮案震驚了整個(gè)濱河市肉微,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜡塌,老刑警劉巖碉纳,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異馏艾,居然都是意外死亡劳曹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門琅摩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铁孵,“玉大人,你說我怎么就攤上這事房资⊥扇埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵轰异,是天一觀的道長岖沛。 經(jīng)常有香客問我,道長搭独,這世上最難降的妖魔是什么婴削? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮牙肝,結(jié)果婚禮上唉俗,老公的妹妹穿的比我還像新娘嗤朴。我一直安慰自己,他們只是感情好虫溜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布雹姊。 她就那樣靜靜地躺著,像睡著了一般衡楞。 火紅的嫁衣襯著肌膚如雪容为。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天寺酪,我揣著相機(jī)與錄音,去河邊找鬼替劈。 笑死寄雀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陨献。 我是一名探鬼主播盒犹,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼眨业!你這毒婦竟也來了急膀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤龄捡,失蹤者是張志新(化名)和其女友劉穎卓嫂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聘殖,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晨雳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奸腺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片餐禁。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖突照,靈堂內(nèi)的尸體忽然破棺而出帮非,到底是詐尸還是另有隱情,我是刑警寧澤讹蘑,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布末盔,位于F島的核電站,受9級(jí)特大地震影響衔肢,放射性物質(zhì)發(fā)生泄漏庄岖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一角骤、第九天 我趴在偏房一處隱蔽的房頂上張望隅忿。 院中可真熱鬧心剥,春花似錦、人聲如沸背桐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽链峭。三九已至畦娄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弊仪,已是汗流浹背熙卡。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留励饵,地道東北人驳癌。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像役听,于是被迫代替她去往敵國和親颓鲜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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