最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

操作系統(tǒng)學(xué)習(xí)記錄5-輸入輸出管理

2023-07-12 11:18 作者:阿期777  | 我要投稿

I/O管理基礎(chǔ)

設(shè)備的分類(lèi)

按使用特性:

存儲(chǔ)設(shè)備:又稱(chēng)為外存、輔存

I/O設(shè)備:輸入設(shè)備(鍵盤(pán)、鼠標(biāo)、掃描儀、視頻攝像等)、輸出設(shè)備(打印機(jī)、繪圖儀)、交互式設(shè)備(顯示器)

按傳輸速率:

低速設(shè)備:鍵盤(pán)鼠標(biāo)

中速設(shè)備:行式打印機(jī)、激光打印機(jī)

高速設(shè)備:磁帶機(jī)、磁盤(pán)機(jī)、光盤(pán)機(jī)

按信息交換的單位分類(lèi):

塊設(shè)備(傳輸快,可尋址)

字符設(shè)備(傳輸慢,不可尋址,常采用中斷控制方式)

I/O設(shè)備的電子部件(控制器)又稱(chēng)設(shè)備控制器。

功能有:

接受和識(shí)別CPU發(fā)來(lái)的命令。CPU發(fā)來(lái)的讀寫(xiě)命令,I/O控制器會(huì)有相應(yīng)的控制寄存器存放命令和參數(shù)

向CPU報(bào)告設(shè)備的狀態(tài)。I/O控制器中會(huì)有相應(yīng)的狀態(tài)管理器,用于記錄I/O設(shè)備的當(dāng)前狀況,1表空閑,0表忙碌

數(shù)據(jù)交換。I/O控制器會(huì)設(shè)置相應(yīng)的數(shù)據(jù)寄存器。輸出時(shí),數(shù)據(jù)寄存器用于暫存CPU發(fā)來(lái)的數(shù)據(jù),之后再由控制器傳送設(shè)備。輸入時(shí),數(shù)據(jù)寄存器用于暫存設(shè)備發(fā)來(lái)的數(shù)據(jù),之后CPU從數(shù)據(jù)寄存器中取走數(shù)據(jù)。

地址識(shí)別。為了區(qū)分設(shè)備控制器中的各個(gè)寄存器,也需要給每個(gè)寄存器設(shè)置一個(gè)特定的地址。I/O控制器通過(guò)CPU提供的地址來(lái)判斷CPU要讀/寫(xiě)的時(shí)哪個(gè)寄存器。

組成有CPU與控制器的接口,如寄存器。I/O邏輯,負(fù)責(zé)接受和識(shí)別CPU的各種命令,并負(fù)責(zé)對(duì)設(shè)備發(fā)出命令。控制器與設(shè)備的接口。用于實(shí)現(xiàn)控制器與設(shè)備之間的通信。

Notice:

一個(gè)I/O控制器可能會(huì)對(duì)應(yīng)多個(gè)設(shè)備

數(shù)據(jù)寄存器、控制寄存器、狀態(tài)寄存器可能有多個(gè),且這些寄存器都要有相應(yīng)的地址,才能方便CPU操作。有的計(jì)算機(jī)會(huì)讓這些寄存器占用內(nèi)存地址的一部分,稱(chēng)為內(nèi)存映像I/O。另外有一些計(jì)算機(jī)采用I/O專(zhuān)用地址,即寄存器獨(dú)立編址。

內(nèi)存映像I/O:

控制器中的寄存器與內(nèi)存地址統(tǒng)一編址。優(yōu)點(diǎn)時(shí)簡(jiǎn)化了命令,可以采用對(duì)內(nèi)存進(jìn)行操作的指令來(lái)對(duì)控制器進(jìn)行操作。

寄存器獨(dú)立編址:

控制器中的寄存器使用單獨(dú)地址。缺點(diǎn)L需要設(shè)置專(zhuān)門(mén)的指令來(lái)實(shí)現(xiàn)對(duì)控制器的操作,不僅要指明寄存器的地址,還要指明控制器的編號(hào)。

I/O系統(tǒng)接口

塊設(shè)備接口(磁盤(pán))、流設(shè)備接口(鍵盤(pán))、網(wǎng)絡(luò)通信接口(網(wǎng)絡(luò)控制器)

阻塞I/O:應(yīng)用程序發(fā)出I/O系統(tǒng)調(diào)用,進(jìn)程需轉(zhuǎn)為阻塞態(tài)等待。字符設(shè)備接口--從鍵盤(pán)讀一個(gè)字符get

非阻塞I/O:應(yīng)用程序發(fā)出I/O系統(tǒng)調(diào)用,系統(tǒng)調(diào)用可迅速返回,進(jìn)程無(wú)需阻塞等待。塊設(shè)備接口--往磁盤(pán)寫(xiě)數(shù)據(jù)

不同的操作系統(tǒng),對(duì)設(shè)備驅(qū)動(dòng)程序接口的標(biāo)準(zhǔn)不相同。設(shè)備廠商必須根據(jù)操作系統(tǒng)的要求,開(kāi)發(fā)出相應(yīng)的設(shè)備驅(qū)動(dòng)程序,設(shè)備才能被使用。

?

I/O控制方式

輪詢方式:過(guò)程簡(jiǎn)單,CPU利用率低

CPU發(fā)出命令后需要不斷輪詢,每次傳輸字。數(shù)據(jù)流向是從設(shè)備->CPU->內(nèi)存、內(nèi)存->CPU->設(shè)備。

中斷驅(qū)動(dòng)I/O方式:以字(節(jié))為單位進(jìn)行I/O,提高CPU利用率。

CPU發(fā)出I/O命令后可以做其他事,本次I/O完成后設(shè)備控制器發(fā)出中斷信號(hào)。數(shù)據(jù)流向是從設(shè)備->CPU->內(nèi)存、內(nèi)存->CPU->設(shè)備。

?

DMA方式:在I/O設(shè)備和內(nèi)存之間開(kāi)辟直接數(shù)據(jù)通路,數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊,提高CPU和I/O設(shè)備的并行操作程序。

CPU發(fā)出I/O命令后可以做其他事,本次I/O完成后,DMA控制器發(fā)出中斷信號(hào)。數(shù)據(jù)傳輸方向是設(shè)備->內(nèi)存,內(nèi)存->設(shè)備。

I/O通道方式:引入通道控制I/O設(shè)備,減少CPU的干擾

CPU發(fā)出I/O命令后可以做其他事。通道會(huì)執(zhí)行通道程序完成I/O,完成后通道向CPU發(fā)出中斷信號(hào),數(shù)據(jù)傳輸單位是一組塊。數(shù)據(jù)傳輸方向是設(shè)備->內(nèi)存,內(nèi)存->設(shè)備。

I/O軟件層次結(jié)構(gòu)

用戶層I/O軟件

用戶層軟件實(shí)現(xiàn)了與用戶交互的接口,用戶可以直接使用該層提供的、與I/O操作相關(guān)的庫(kù)函數(shù)對(duì)設(shè)備進(jìn)行操作。用戶層軟件將用戶請(qǐng)求翻譯成格式化的I/O請(qǐng)求,并通過(guò)“系統(tǒng)調(diào)用”請(qǐng)求操作系統(tǒng)內(nèi)核的服務(wù)

設(shè)備獨(dú)立軟件

又稱(chēng)設(shè)備無(wú)關(guān)系軟件。主要功能是向上層提供同一個(gè)調(diào)用接口(有點(diǎn)像是虛擬設(shè)備),實(shí)現(xiàn)設(shè)備的保護(hù),差錯(cuò)處理,設(shè)備的分配與回收,數(shù)據(jù)緩沖區(qū)管理(可以通過(guò)緩沖技術(shù)屏蔽設(shè)備之間數(shù)據(jù)交換單位大小和傳輸速度的差異),建立邏輯設(shè)備名到物理設(shè)備名的映射關(guān)系。根據(jù)設(shè)備類(lèi)型選擇調(diào)用相應(yīng)的驅(qū)動(dòng)程序。邏輯設(shè)備名比如打印機(jī)1,打印機(jī)2等。設(shè)備獨(dú)立性軟件通過(guò)邏輯設(shè)備表(LUT),來(lái)確定邏輯設(shè)備對(duì)應(yīng)的物理設(shè)備,并找到該設(shè)備對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序。

操作系統(tǒng)可以采用2種方式管理邏輯設(shè)備表。

1.整個(gè)系統(tǒng)只設(shè)置一張LUT,意味著所有用戶不能使用相同的邏輯設(shè)備名,因此只適應(yīng)與單用戶操作系統(tǒng)。

2.每個(gè)用戶設(shè)置一張LUT,各個(gè)用戶使用的邏輯設(shè)備名可以重復(fù),適用于多用戶操作系統(tǒng)。系統(tǒng)會(huì)在用戶登錄時(shí)建立一個(gè)用戶管理進(jìn)程,LUT就存放在用戶管理進(jìn)程的PCB中。

不同設(shè)備的內(nèi)部硬件特性也不同,這些特性只有廠商才知道,因此廠家需提供與設(shè)備相對(duì)應(yīng)的驅(qū)動(dòng)程序,CPU執(zhí)行驅(qū)動(dòng)程序的指令序列,來(lái)完成設(shè)置設(shè)備寄存器,檢查設(shè)備狀態(tài)等工作。

設(shè)備驅(qū)動(dòng)程序

主要負(fù)責(zé)對(duì)硬件設(shè)備的具體控制,將上層發(fā)出的一系列命令轉(zhuǎn)化成特定設(shè)備能聽(tīng)得懂的一系列操作。包括設(shè)置設(shè)備寄存器,檢查設(shè)備狀態(tài)。

中斷處理程序

I/O完成時(shí),I/O控制器會(huì)發(fā)送一個(gè)中斷信號(hào),系統(tǒng)會(huì)根據(jù)中斷信號(hào)類(lèi)型找到相應(yīng)的中斷處理程序并執(zhí)行。

?

硬件

越上面越接近用戶,每一層會(huì)利用下層提供的服務(wù),實(shí)現(xiàn)某些功能,并屏蔽實(shí)現(xiàn)的具體細(xì)節(jié),向高層提供服務(wù)(“封裝思想”)。

設(shè)備獨(dú)立軟件、設(shè)備驅(qū)動(dòng)程序、中斷處理程序?qū)儆诓僮飨到y(tǒng)的內(nèi)核部分,也就是I/O系統(tǒng)。

需要重點(diǎn)理解和掌握的是:I/O調(diào)度、設(shè)備保護(hù)、假脫機(jī)技術(shù)(SPOOLing技術(shù)),設(shè)備分配與回收、緩沖區(qū)管理。

理解并記住I/O軟件各個(gè)層次之間的順序,要能夠推理判斷某個(gè)處理應(yīng)該時(shí)在哪個(gè)層次完成的,最常考的時(shí)設(shè)備獨(dú)立性軟件、設(shè)備驅(qū)動(dòng)程序。直接涉及到硬件具體細(xì)節(jié),且與中斷無(wú)關(guān)的操作肯定是在設(shè)備驅(qū)動(dòng)程序?qū)油瓿傻摹](méi)有涉及到硬件的,對(duì)各種設(shè)備都需要進(jìn)行管理的都是設(shè)備獨(dú)立性軟件層完成的。

?

?

設(shè)備獨(dú)立軟件

緩沖區(qū)分類(lèi)

緩沖區(qū)是一個(gè)存儲(chǔ)區(qū)域,可以由專(zhuān)門(mén)的硬件寄存器組成,可以用內(nèi)存。使用硬件的話成本高,容量也小。只用在對(duì)速度要求高的場(chǎng)合。一般情況下是利用內(nèi)存作為緩沖區(qū)。

緩沖區(qū)的作用:緩和CPU和I/O設(shè)備之間速度不匹配的矛盾,減少對(duì)CPU的中斷頻率,放寬對(duì)CPU中斷相應(yīng)時(shí)間的限制,解決數(shù)據(jù)粒度不匹配的問(wèn)題(輸出進(jìn)程每次可以生成一塊數(shù)據(jù),但I(xiàn)/O設(shè)備每次只能輸出一個(gè)字符)。提高CPU與I/O設(shè)備之間的并行性。

設(shè)備輸入時(shí)間T、緩沖區(qū)傳輸時(shí)間M、工作區(qū)處理時(shí)間C

緩沖區(qū)的大小一般為一個(gè)塊

當(dāng)緩沖區(qū)數(shù)據(jù)非空時(shí),不能往緩沖區(qū)沖入數(shù)據(jù),只能從緩沖區(qū)把數(shù)據(jù)傳出;當(dāng)緩沖區(qū)為空時(shí),可以往緩沖區(qū)沖入數(shù)據(jù),但必須把緩沖區(qū)充滿以后,才能從緩沖區(qū)把數(shù)據(jù)傳出。

用戶進(jìn)程的內(nèi)存空間中,會(huì)分出一片工作區(qū)來(lái)接受輸入輸出數(shù)據(jù)(一般也默認(rèn)工作區(qū)大小與緩沖區(qū)相同)

計(jì)算沒(méi)處理一塊數(shù)據(jù)的平均需要多久,可以假定一個(gè)初始狀態(tài),分析下次到達(dá)相同狀態(tài)需要多少時(shí)間,這就是處理一塊數(shù)據(jù)平均所需時(shí)間??梢约僭O(shè)初始狀態(tài)為工作區(qū)滿,緩沖區(qū)空。

單緩沖區(qū):處理一塊數(shù)據(jù)的時(shí)間為max(C,T)+M

雙緩沖區(qū):處理一塊數(shù)據(jù)的時(shí)間為max(C+M,T)

環(huán)形緩沖區(qū):引入多緩沖機(jī)制

緩沖池:三個(gè)隊(duì)列,四種工作緩沖區(qū)

緩沖池由系統(tǒng)中共用的緩沖區(qū)組成,按使用情況可以分為:空緩沖隊(duì)列、裝滿輸入數(shù)據(jù)的緩沖隊(duì)列(輸入隊(duì)列),裝滿輸出數(shù)據(jù)的緩沖隊(duì)列(輸出隊(duì)列)

根據(jù)一個(gè)緩沖區(qū)再實(shí)際運(yùn)算中扮演的功能不同,又設(shè)置了四種工作緩沖區(qū),用于收容輸入數(shù)據(jù)的工作緩沖區(qū)(hin)、用于提取輸入數(shù)據(jù)的工作緩沖區(qū)(sin)、用于收容輸出數(shù)據(jù)的工作緩沖區(qū)(hout)、用于提取輸出數(shù)據(jù)的工作緩沖區(qū)(sout)

輸入進(jìn)程請(qǐng)求輸入數(shù)據(jù)時(shí),會(huì)從空緩沖隊(duì)列取下一塊緩沖區(qū),放到hin中。裝滿后放回輸入隊(duì)列。

計(jì)算進(jìn)程要取得一塊數(shù)據(jù)時(shí),從輸入隊(duì)列取下一塊放入sin中,提取完后放回空緩沖隊(duì)列中

計(jì)算進(jìn)程想要將準(zhǔn)備好的數(shù)據(jù)沖入緩沖區(qū),從空緩沖隊(duì)列中取下一塊緩沖區(qū),放入hout中,裝滿后放入輸出隊(duì)列中

輸出進(jìn)程請(qǐng)求輸出數(shù)據(jù)時(shí),從輸出隊(duì)列取下一塊放入sout中,等輸出完后放回空緩沖隊(duì)列中。

?

兩臺(tái)機(jī)器之間通信時(shí),可以配置緩沖區(qū)用于數(shù)據(jù)的發(fā)送和接受。a機(jī)緩沖區(qū)慢時(shí)就發(fā)出,b機(jī)緩沖區(qū)滿時(shí)全部取走。

?

設(shè)備分配與回收

設(shè)備分配的時(shí)候應(yīng)該考慮的因素:

設(shè)備的固有屬性、設(shè)備分配算法、設(shè)備分配中的安全性

固有屬性:獨(dú)占設(shè)備、共享設(shè)備、虛擬設(shè)備

設(shè)備分配算法:先來(lái)先服務(wù)、優(yōu)先級(jí)高者優(yōu)先

設(shè)備分配的安全性:

安全性分配:為進(jìn)程分配一個(gè)設(shè)備后就將進(jìn)程阻塞,本次I/O完成后才將進(jìn)程喚醒。(考慮進(jìn)程請(qǐng)求打印機(jī)打印輸出的例子)

優(yōu)點(diǎn):破壞了請(qǐng)求和保持條件,不會(huì)死鎖。

缺點(diǎn):對(duì)于一個(gè)進(jìn)程來(lái)說(shuō),CPU和I/O設(shè)備只能串行工作

不安全分配方式:進(jìn)程發(fā)出I/O請(qǐng)求后,系統(tǒng)為其分配I/O設(shè)備,進(jìn)程可繼續(xù)執(zhí)行,之后還可以發(fā)出新的I/O請(qǐng)求,只有某個(gè)I/O請(qǐng)求得不到滿足時(shí)才將進(jìn)程阻塞。

優(yōu)點(diǎn):進(jìn)程的計(jì)算任務(wù)和I/O任務(wù)可以并行處理,使進(jìn)程迅速推進(jìn)。缺點(diǎn):有可能發(fā)生死鎖。

靜態(tài)分配:進(jìn)程運(yùn)行前為其分配全部所需資源,運(yùn)行結(jié)束后歸還資源。破壞了請(qǐng)求和保持條件,不會(huì)發(fā)生死鎖。

動(dòng)態(tài)分配:進(jìn)程運(yùn)行過(guò)程中動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備資源

設(shè)備分配數(shù)據(jù)結(jié)構(gòu):設(shè)備控制表、控制器控制表、通道控制表、系統(tǒng)設(shè)備表

一個(gè)通道可以控制多個(gè)設(shè)備控制器,每個(gè)設(shè)備控制器可控制多個(gè)設(shè)備。

設(shè)備控制表(DCT)系統(tǒng)為每個(gè)設(shè)備配置一張DCT,用于記錄設(shè)備情況。

屬性有設(shè)備類(lèi)型(打印機(jī))、設(shè)備標(biāo)識(shí)符(物理設(shè)備名)、設(shè)備狀態(tài)(忙碌)、指向控制器表的指針(每個(gè)設(shè)備由一個(gè)控制器控制,該指針可找到相應(yīng)控制器的信息)、重復(fù)執(zhí)行次數(shù)或時(shí)間(當(dāng)重復(fù)執(zhí)行多次I/O操作后仍不成功,才認(rèn)為此次I/O失?。┰O(shè)備隊(duì)列的隊(duì)首指針(指向正在等待該設(shè)備的進(jìn)程隊(duì)列)

控制器控制表(COCT)每個(gè)設(shè)備控制器都會(huì)對(duì)應(yīng)一張COCT,操作系統(tǒng)根據(jù)上面的信息對(duì)控制器進(jìn)行操作和管理。

屬性有控制器標(biāo)識(shí)符(控制器唯一ID)、控制器狀態(tài)(忙碌)、指向通道表的指針(每個(gè)控制器由一個(gè)通道控制,該指針可找到相應(yīng)通道的信息)、控制器隊(duì)列的隊(duì)首指針和隊(duì)尾指針(指向正在等待該控制器的進(jìn)程隊(duì)列)

通道控制表(CHCT)每個(gè)通道都會(huì)對(duì)應(yīng)一張CHCT,操作系統(tǒng)根據(jù)CHCT的信息對(duì)通道進(jìn)行操作和管理。

屬性有通道標(biāo)識(shí)符(各個(gè)通道唯一ID)、通道狀態(tài)(忙碌)、與通道連接的控制器表首址(可通過(guò)該指針找到該通道管理的所有控制器相關(guān)信息)、通道隊(duì)列的隊(duì)首指針和隊(duì)尾指針(指向等待該通道的進(jìn)程隊(duì)列)

系統(tǒng)設(shè)備表(SDT),記錄了系統(tǒng)中全部設(shè)備的情況,每個(gè)設(shè)備對(duì)應(yīng)一個(gè)表目。

表目屬性有設(shè)備類(lèi)型(打印機(jī)),設(shè)備標(biāo)識(shí)符(物理名),DCT(設(shè)備控制表)、驅(qū)動(dòng)程序入口

設(shè)備分配步驟:

1.根據(jù)進(jìn)程請(qǐng)求的物理設(shè)備名查找SDT(系統(tǒng)設(shè)備表)

2.根據(jù)SDT找到DCT(設(shè)備控制表),若設(shè)備忙碌則將進(jìn)程PCB掛到設(shè)備等待隊(duì)列中,不忙碌再將設(shè)備分配給進(jìn)程。

3.根據(jù)DCT找到COCT,若控制器忙碌則將進(jìn)程PCB掛到控制器等待隊(duì)列,不忙碌則將控制器分配給進(jìn)程。

4.根據(jù)COCT找到CHCT,若通道忙碌則將進(jìn)程PCB掛到通道等待隊(duì)列,不忙碌則將通道分配給進(jìn)程。

只有設(shè)備、控制器、通道三者都分配成功時(shí),這次設(shè)備才算分配成功,之后便可啟動(dòng)I/O進(jìn)行數(shù)據(jù)傳輸。

先系統(tǒng)設(shè)備表-》設(shè)備控制表-》控制器控制表-》通道控制表

缺點(diǎn):

用戶編程時(shí)必須使用物理設(shè)備名,底層細(xì)節(jié)對(duì)用戶不透明,不方便編程。若更換看一個(gè)物理設(shè)備,程序無(wú)法運(yùn)行,若進(jìn)程請(qǐng)求的物理設(shè)備正在忙碌,即使系統(tǒng)中還有同類(lèi)型的設(shè)備,進(jìn)程也必須阻塞等待。

改進(jìn)方法:建立邏輯設(shè)備名與物理設(shè)備名的映射機(jī)制,用戶編程時(shí)只需提供邏輯設(shè)備名。

邏輯設(shè)備表建立了邏輯設(shè)備名與物理設(shè)備名之間的映射關(guān)系。如果之后用戶進(jìn)程再次通過(guò)相同的邏輯設(shè)備名請(qǐng)求使用設(shè)備,則操作系統(tǒng)通過(guò)LUT表即可知道用戶進(jìn)程實(shí)際要使用的是哪個(gè)物理設(shè)備了,并且也能知道該設(shè)備的驅(qū)動(dòng)程序入口地址。

整個(gè)系統(tǒng)只有一張LUT,邏輯設(shè)備名不允許重復(fù)

每個(gè)用戶一張LUT,不同用戶的邏輯設(shè)備名可重復(fù)

?

設(shè)備的回收:回收占有設(shè)備、設(shè)備控制器、通道

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

脫機(jī)技術(shù):脫離主機(jī)的控制,緩解了CPU與慢速I(mǎi)/O設(shè)備的矛盾

假脫機(jī)技術(shù)(spooling)用軟件的方式模擬脫機(jī)技術(shù)。

組成:輸入/輸出井(在磁盤(pán)內(nèi)開(kāi)辟兩個(gè)存儲(chǔ)區(qū)域)、輸入/輸出緩沖區(qū)(都在內(nèi)存中)、輸入/輸出進(jìn)程、井管理程序

輸入井模擬脫機(jī)輸入時(shí)的磁帶,用于收容I/O設(shè)備輸入的數(shù)據(jù)

輸出井模擬推擠輸出時(shí)的磁帶,用于收容用戶進(jìn)程輸出的數(shù)據(jù)

輸入進(jìn)程模擬脫機(jī)輸入時(shí)的外圍控制機(jī),用于暫存從輸入設(shè)備輸入的數(shù)據(jù),之后再轉(zhuǎn)存到輸入井中

輸出進(jìn)程模擬脫機(jī)輸出時(shí)的外圍控制機(jī),用于暫存從輸出井中送來(lái)的數(shù)據(jù),之后再傳送到輸出設(shè)備上。

要實(shí)現(xiàn)spooling技術(shù),必須要有多道程序技術(shù)的支持,系統(tǒng)會(huì)建立輸入進(jìn)程和輸出進(jìn)程。

特點(diǎn):提高I/O速度,將獨(dú)占設(shè)備改造成共享設(shè)備,實(shí)現(xiàn)虛擬設(shè)備功能。

獨(dú)占式設(shè)備:只允許各個(gè)進(jìn)程串行使用的設(shè)備。一段時(shí)間內(nèi)只能滿足一個(gè)進(jìn)程的請(qǐng)求。

共享設(shè)備:允許多個(gè)進(jìn)程同時(shí)使用的設(shè)備(宏觀上同時(shí)使用,微觀上可能時(shí)交替使用)

打印機(jī)可以利用spooling技術(shù)改造成共享設(shè)備。

多個(gè)用戶進(jìn)程提出輸出打印的請(qǐng)求時(shí),系統(tǒng)會(huì)做2件事

在磁盤(pán)輸出井中為進(jìn)程申請(qǐng)一個(gè)空閑緩沖區(qū)(在磁盤(pán)上),并將要打印的數(shù)據(jù)送入其中。

為用戶進(jìn)程申請(qǐng)一張空白的打印請(qǐng)求表,并將用戶的打印請(qǐng)求填入表中,再將該表掛載假脫機(jī)文件隊(duì)列上。當(dāng)打印機(jī)空閑時(shí),輸出進(jìn)程會(huì)取出一張打印請(qǐng)求表,并根據(jù)表中的要求將要打印的數(shù)據(jù)從輸出井傳送到輸出緩沖區(qū),再輸出到打印機(jī)進(jìn)行打印。

Spooling技術(shù)可以把一臺(tái)物理設(shè)備虛擬成邏輯上的多臺(tái)設(shè)備,可將獨(dú)占式設(shè)備改造成共享式設(shè)備

設(shè)備驅(qū)動(dòng)程序接口

?

外存管理

磁盤(pán)

磁盤(pán)結(jié)構(gòu):磁盤(pán)設(shè)備可以包括一個(gè)或多個(gè)物理盤(pán)片(磁盤(pán)片),每個(gè)磁盤(pán)片分為一個(gè)或2個(gè)存儲(chǔ)面(盤(pán)面),每個(gè)盤(pán)面上有若干個(gè)磁道,每個(gè)磁道又從邏輯上被劃分成若干個(gè)扇區(qū)(盤(pán)塊),各個(gè)扇區(qū)之間留有必要的間隙

可用柱面號(hào),盤(pán)面號(hào),扇區(qū)號(hào)來(lái)定位任意一個(gè)磁盤(pán)塊。

可用根據(jù)該地址讀取一個(gè)塊

根據(jù)“柱面號(hào)”移動(dòng)磁臂,讓磁頭指向指定柱面。

激活指定盤(pán)面對(duì)應(yīng)的磁頭

磁盤(pán)旋轉(zhuǎn)的過(guò)程中,指定的扇區(qū)會(huì)從磁頭下面劃過(guò),這樣就完成了對(duì)指定扇區(qū)的讀寫(xiě)。

磁頭可以移動(dòng)的稱(chēng)為活動(dòng)頭磁盤(pán),可以伸縮。磁頭不可移動(dòng)的稱(chēng)為固定磁頭磁盤(pán)。這種磁盤(pán)中每個(gè)磁道有一個(gè)磁頭。

盤(pán)片可以更換的稱(chēng)為可換盤(pán)磁盤(pán),不可更換的稱(chēng)為固定盤(pán)磁盤(pán)。

?

低級(jí)格式化->分區(qū)->高級(jí)格式化

低級(jí)格式化(物理格式化),將磁盤(pán)的各個(gè)磁道劃分為扇區(qū)。一個(gè)扇區(qū)可分為頭、數(shù)據(jù)區(qū)域、尾三個(gè)部分組成。管理扇區(qū)所需要的各種數(shù)據(jù)結(jié)構(gòu)一般存放在頭、尾兩個(gè)部分。包括扇區(qū)校驗(yàn)碼(奇偶校驗(yàn)、CRC冗余碼)校驗(yàn)碼校驗(yàn)扇區(qū)中的數(shù)據(jù)是否錯(cuò)誤。

將磁盤(pán)分區(qū),每個(gè)分區(qū)由若干個(gè)柱面組成(也就是C盤(pán)、D盤(pán)等)

進(jìn)行邏輯格式化,創(chuàng)建文件系統(tǒng)。包括創(chuàng)建文件系統(tǒng)的根目錄、初始化存儲(chǔ)空間管理所用的數(shù)據(jù)結(jié)構(gòu)(位視圖、空閑分區(qū)表)

?

引導(dǎo)塊

計(jì)算機(jī)開(kāi)機(jī)時(shí)需要進(jìn)行一系列初始化的工作,這些初始化工作是通過(guò)執(zhí)行初始化程序(自舉程序)完成的。初始化程序可以放在ROM中。ROM中的數(shù)據(jù)出廠時(shí)就寫(xiě)入,且不能再修改,一般是集成在主板上。不過(guò)ROM中只存放很小的自舉裝入程序。開(kāi)機(jī)時(shí)先運(yùn)行自舉裝入程序,通過(guò)執(zhí)行該程序就可以找到引導(dǎo)塊,并將完整的自舉程序讀入內(nèi)存。完整的自舉程序存放在磁盤(pán)的啟動(dòng)塊(引導(dǎo)塊/啟動(dòng)分區(qū))上,啟動(dòng)塊位于磁盤(pán)的固定位置。

?

對(duì)于壞塊,也就是無(wú)法使用的扇區(qū)。應(yīng)該將其標(biāo)記出來(lái)。

在簡(jiǎn)單的磁盤(pán)中,使用FAT表表明,壞塊對(duì)操作系統(tǒng)不透明。

在復(fù)雜的磁盤(pán)中。在出廠前進(jìn)行低級(jí)格式化時(shí)就將壞塊鏈進(jìn)行初始化。會(huì)保留一些備用扇區(qū),用于替換壞塊,這種方案稱(chēng)為扇區(qū)備用,這種處理方式中,壞塊對(duì)操作系統(tǒng)透明。

?

一次磁盤(pán)讀寫(xiě)操作需要的時(shí)間

尋找時(shí)間、延遲時(shí)間、傳輸時(shí)間

尋找時(shí)間(尋道時(shí)間):在讀寫(xiě)之前,將磁頭移動(dòng)到指定磁道所花費(fèi)的時(shí)間。包括啟動(dòng)磁頭臂時(shí)間s+移動(dòng)磁頭時(shí)間=跨一個(gè)磁道時(shí)間m*跨過(guò)的磁道數(shù)n

延遲時(shí)間,通過(guò)旋轉(zhuǎn)磁盤(pán),使得磁頭定位到目標(biāo)扇區(qū)所需要的時(shí)間。設(shè)轉(zhuǎn)速為r,1/r為轉(zhuǎn)一圈的時(shí)間。平均所需時(shí)間為1/2r

傳送時(shí)間,從磁盤(pán)讀出或向磁盤(pán)寫(xiě)入數(shù)據(jù)所經(jīng)歷的時(shí)間,假設(shè)轉(zhuǎn)速為r,此次讀寫(xiě)的字節(jié)數(shù)為b,每個(gè)磁道上的字節(jié)數(shù)為n。傳輸時(shí)間=(1/r)*(b/n)

總的平均存取時(shí)間為尋道時(shí)間+1/2r+(1/r)*(b/n)

?

減少延遲時(shí)間的方法:

交替編號(hào)

讓編號(hào)相鄰的扇區(qū)在物理上不相鄰。因?yàn)樽x取完一個(gè)扇區(qū)后需要一段時(shí)間處理才可以繼續(xù)讀入下一個(gè)扇區(qū)

錯(cuò)位命名

讓相鄰盤(pán)面的扇區(qū)編號(hào)錯(cuò)位。與交替編號(hào)的原理相同。錯(cuò)位命名法可降低延遲時(shí)間。

磁盤(pán)地質(zhì)結(jié)構(gòu)設(shè)計(jì)

采用(柱面號(hào)、盤(pán)面號(hào)、扇區(qū)號(hào))的結(jié)構(gòu)的原因是在讀取地址連續(xù)的磁盤(pán)塊時(shí),前者更不需要移動(dòng)磁頭。

?

磁盤(pán)調(diào)度算法:

先來(lái)先(FCFS):按進(jìn)程請(qǐng)求訪問(wèn)磁盤(pán)的先后次序調(diào)度

好處是公平,缺點(diǎn)是性能差

最短尋道時(shí)間優(yōu)先(SSTF):選擇與當(dāng)前磁頭所在的磁道距離最近的磁道。貪心算法的思想,能保證眼前最優(yōu),但無(wú)法保證總的尋道時(shí)間最短,可能導(dǎo)致饑餓

掃描算法SCAN(電梯調(diào)度):在磁頭當(dāng)前移動(dòng)方向上選擇與當(dāng)前磁頭所在的磁道距離最近的磁道。只有磁頭移動(dòng)到最邊緣的磁道時(shí)才可以改變磁頭的移動(dòng)方向。缺點(diǎn)是對(duì)各個(gè)位置磁道的相應(yīng)頻率不均

LOOK算法(默認(rèn)):SCAN算法的改進(jìn),只要在磁頭方向上不再有請(qǐng)求,就立即改變磁頭方向,不用去最邊邊的磁道。

循環(huán)掃描算法(C-SCAN):在掃描算法的基礎(chǔ)上規(guī)定磁頭單向移動(dòng),移動(dòng)到邊緣后立即讓磁頭返回起點(diǎn)(最邊邊的起點(diǎn)),返回途中不響應(yīng)任何請(qǐng)求

C-LOOK調(diào)度算法(默認(rèn)):C-SCAN算法的改進(jìn),只要在磁頭移動(dòng)方向上不再有請(qǐng)求,就立即讓磁頭返回,不用移到最邊。

?

?

固態(tài)硬盤(pán)

優(yōu)點(diǎn):快速讀寫(xiě)、質(zhì)量小、體積小、能耗低

缺點(diǎn):價(jià)格比較昂貴,容量較低,數(shù)據(jù)損壞時(shí)難恢復(fù),耐用性差,壽命短。

磨損均衡:一種基于固態(tài)硬盤(pán)主控芯片的內(nèi)置機(jī)制,分為靜態(tài)磨損和動(dòng)態(tài)磨損。

動(dòng)態(tài)磨損:寫(xiě)入數(shù)據(jù)時(shí),選擇累計(jì)擦除次數(shù)少的新閃存塊。

靜態(tài)磨損:SSD監(jiān)測(cè)并自動(dòng)進(jìn)行數(shù)據(jù)分配、遷移,讓老舊的閃存塊承擔(dān)以讀為主的存儲(chǔ)任務(wù),讓新的閃存塊承擔(dān)更多的寫(xiě)任務(wù)。


操作系統(tǒng)筆記至此結(jié)束。

操作系統(tǒng)學(xué)習(xí)記錄5-輸入輸出管理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
鄂州市| 阿克苏市| 金堂县| 崇礼县| 白朗县| 昭通市| 布拖县| 合山市| 安乡县| 合肥市| 北川| 临夏市| 盐亭县| 潜江市| 东阿县| 安达市| 大港区| 西吉县| 施甸县| 洛阳市| 鄂尔多斯市| 邛崃市| 太保市| 连州市| 海门市| 陕西省| 太和县| 施甸县| 彭阳县| 手机| 内黄县| 武乡县| 铜梁县| 新乐市| 怀化市| 栾城县| 城步| 阜南县| 桐庐县| 仙桃市| 鄂州市|