設(shè)備管理方法與信息化課程_第1頁
設(shè)備管理方法與信息化課程_第2頁
設(shè)備管理方法與信息化課程_第3頁
設(shè)備管理方法與信息化課程_第4頁
設(shè)備管理方法與信息化課程_第5頁
已閱讀5頁,還剩168頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章設(shè)備管理5.1引言5.2操作系統(tǒng)與中止處理5.3操作系統(tǒng)與時(shí)鐘系統(tǒng)5.4操作系統(tǒng)對(duì)I/O操作控制5.5設(shè)備管理數(shù)據(jù)結(jié)構(gòu)5.6磁盤調(diào)度5.7UNIX系統(tǒng)V設(shè)備管理5.8設(shè)備分配1設(shè)備管理方法與信息化課程第1頁第五章設(shè)備管理5.1引言設(shè)備管理是指計(jì)算機(jī)系統(tǒng)中,除中央處理器、主存放器以外設(shè)備管理,是操作系統(tǒng)主要功效之一。通常把這些設(shè)備及其接口線路、控制部件和管理軟件統(tǒng)稱為I/O系統(tǒng)。

2設(shè)備管理方法與信息化課程第2頁在I/O系統(tǒng)中,普遍地使用中斷、通道、緩沖區(qū)等各種技術(shù),使主機(jī)和外設(shè)并行工作,改善了設(shè)備使用效率。但是,在其次卻給用戶帶來困難。用戶想使用一臺(tái)外部設(shè)備,除了需掌握相關(guān)I/O部分原理之外,還要求對(duì)接口、控制器以及設(shè)備物理特征都要有一定了解。為了使用戶擺脫這些限制,操作系統(tǒng)負(fù)擔(dān)了這項(xiàng)任務(wù),凡是有關(guān)外設(shè)驅(qū)動(dòng)、控制、分配等技術(shù)問題都統(tǒng)一由設(shè)備管理程序負(fù)責(zé)。3設(shè)備管理方法與信息化課程第3頁5.1.1設(shè)備概念和分類1.設(shè)備概念它既指進(jìn)行實(shí)際輸入/輸出操作物理設(shè)備,也指控制這些設(shè)備并進(jìn)行I/O操作支持設(shè)備和支持部件,也指為提升設(shè)備利用率,采取某種I/O技術(shù)形成邏輯設(shè)備和虛擬設(shè)備。所以能夠說,輸入/輸出設(shè)備可指計(jì)算機(jī)系統(tǒng)所能控制一切控制對(duì)象或者與控制對(duì)象相聯(lián)絡(luò)媒體。4設(shè)備管理方法與信息化課程第4頁2.設(shè)備分類①按照功效分類:能夠分為輸入設(shè)備、輸出設(shè)備、存放設(shè)備、供電設(shè)備、網(wǎng)絡(luò)聯(lián)網(wǎng)設(shè)備等。②從設(shè)備數(shù)據(jù)組織方式分類:能夠分為塊設(shè)備(blockdevice)和字符設(shè)備(characterdevice)。塊設(shè)備以數(shù)據(jù)塊為單位組織和傳送數(shù)據(jù)。它將數(shù)據(jù)存放在定長塊中,每個(gè)數(shù)據(jù)塊都有自己地址,塊大小與設(shè)備和詳細(xì)操作系統(tǒng)相關(guān),普通在512~4096字節(jié)之間。塊設(shè)備基本特征是能夠單獨(dú)地讀寫每一個(gè)數(shù)據(jù)塊,所讀寫塊與其它數(shù)據(jù)塊無關(guān)。字符設(shè)備以字符為單位組織和傳送數(shù)據(jù)。它傳送或接收一連串字符,數(shù)據(jù)組織不考慮塊結(jié)構(gòu),也不能單獨(dú)尋址。5設(shè)備管理方法與信息化課程第5頁③從設(shè)備管理模式分類,能夠分為物理設(shè)備和邏輯設(shè)備。物理設(shè)備指計(jì)算機(jī)系統(tǒng)硬件配置實(shí)際設(shè)備。這些設(shè)備在操作系統(tǒng)內(nèi)含有一個(gè)惟一符號(hào)名稱,系統(tǒng)能夠按照該名稱對(duì)對(duì)應(yīng)設(shè)備進(jìn)行物理操作。邏輯設(shè)備是指一個(gè)在邏輯意義上存在設(shè)備,在未加以定義前,它不代表任何硬件設(shè)備和實(shí)際設(shè)備。邏輯設(shè)備是系統(tǒng)提供,它也是獨(dú)立于物理設(shè)備而進(jìn)行輸入輸出操作一個(gè)“虛擬設(shè)備”。6設(shè)備管理方法與信息化課程第6頁④從設(shè)備資源屬性分類,能夠分為獨(dú)占設(shè)備、共享設(shè)備和虛擬設(shè)備。獨(dú)占設(shè)備在用戶作業(yè)或者進(jìn)程運(yùn)行期間為該用戶所獨(dú)享,只有等它用完,才能讓別用戶和進(jìn)程使用;共享設(shè)備是指能被多個(gè)用戶或進(jìn)程交替共用設(shè)備,宏觀上似乎多個(gè)用戶同時(shí)在使用,如磁盤等隨機(jī)存放設(shè)備。虛擬設(shè)備含有將一個(gè)物理設(shè)備模擬成另一個(gè)設(shè)備能力。用戶進(jìn)行輸入輸出所使用設(shè)備并不是他所指定設(shè)備,系統(tǒng)用另一個(gè)設(shè)備代替了用戶指定設(shè)備。7設(shè)備管理方法與信息化課程第7頁SPOOLING技術(shù)系統(tǒng)采取某種I/O技術(shù)(如SPOOLING),將某個(gè)獨(dú)占設(shè)備改進(jìn)為多用戶共享設(shè)備,以提升系統(tǒng)運(yùn)行效率和資源利用率。伴隨SPOOLING技術(shù)引入,I/O設(shè)備不再被看做僅僅是一個(gè)孤立物理設(shè)備,而且把它們與文件系統(tǒng)聯(lián)絡(luò)起來,看做是一個(gè)流式文件(數(shù)據(jù)流I/O),建立了設(shè)備文件概念,采取了直接I/O端口控制語句和文件操作語句來進(jìn)行I/O設(shè)備操作,使I/O設(shè)備操作愈加靈活。8設(shè)備管理方法與信息化課程第8頁5.1.2I/O設(shè)備控制與驅(qū)動(dòng)I/O設(shè)備控制和驅(qū)動(dòng)技術(shù)包含了硬件控制驅(qū)動(dòng)技術(shù)和驅(qū)動(dòng)軟件。前者是I/O設(shè)備廠商設(shè)計(jì)建立與設(shè)備親密相關(guān)技術(shù),這些技術(shù)依據(jù)不一樣設(shè)備依賴性很大。后者包括系統(tǒng)全部I/O處理軟件,經(jīng)過它們完成整個(gè)I/O操作。9設(shè)備管理方法與信息化課程第9頁操作系統(tǒng)中I/O驅(qū)動(dòng)(處理)軟件普通分為幾個(gè)層次,如中止處理程序、設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)I/O原語和用戶級(jí)軟件。中止處理程序位于最底層,它作為系統(tǒng)和I/O操作激勵(lì),響應(yīng)來自系統(tǒng)內(nèi)部和外部I/O請(qǐng)求。設(shè)備驅(qū)動(dòng)程序處理一個(gè)設(shè)備類型或者一類親密相關(guān)設(shè)備,程序代碼依賴于設(shè)備操作,其任務(wù)是接收來自與設(shè)備無關(guān)上層軟件抽象請(qǐng)求,確保操作詳細(xì)實(shí)施。操作系統(tǒng)I/O原語是系統(tǒng)和用戶進(jìn)程請(qǐng)求I/O操作抽象高級(jí)操作,它們不針對(duì)某個(gè)詳細(xì)設(shè)備,而在I/O處理過程中由設(shè)備控制表和設(shè)備驅(qū)動(dòng)程序轉(zhuǎn)接到物理設(shè)備。用戶級(jí)軟件是用戶程序中負(fù)責(zé)處理I/O操作程序部分,經(jīng)編譯后產(chǎn)生對(duì)I/O高級(jí)處理,操作再逐層下交。10設(shè)備管理方法與信息化課程第10頁5.1.3設(shè)備管理設(shè)計(jì)要求和任務(wù)1.設(shè)計(jì)要求第一,為用戶提供方便、統(tǒng)一設(shè)備使用界面;第二,提升外部設(shè)備利用率,盡可能提升并行程度。第三,用戶程序應(yīng)獨(dú)立于設(shè)備,即實(shí)現(xiàn)程序與設(shè)備無關(guān)性,當(dāng)物理設(shè)備發(fā)生意外或有更改時(shí),用戶程序無須修改,就可使用系統(tǒng)分配其它設(shè)備11設(shè)備管理方法與信息化課程第11頁2.設(shè)備管理任務(wù)為了到達(dá)上述目標(biāo),管理功效通常包含設(shè)備配置和資源分配、設(shè)備控制和驅(qū)動(dòng)、系統(tǒng)與設(shè)備之間緩沖協(xié)調(diào)、設(shè)備調(diào)度與分配等。(1)設(shè)備配置和資源分配是針對(duì)I/O設(shè)備本身。因?yàn)橄到y(tǒng)要配置各種I/O設(shè)備和部件,它們都要使用一定系統(tǒng)資源,包含I/O通道、I/O地址、I/O端口、存放器地址、中止請(qǐng)求號(hào)及DMA通道等,它們共享在硬件和軟件上可能會(huì)產(chǎn)生沖突,必須由操作系統(tǒng)對(duì)I/O設(shè)備進(jìn)行正確配置和分配。12設(shè)備管理方法與信息化課程第12頁(2)設(shè)備控制和驅(qū)動(dòng)主要是按照I/O控制方式,對(duì)不一樣設(shè)備完成對(duì)應(yīng)I/O中止、設(shè)備控制器操作、讀寫操作等物理過程。針對(duì)不一樣設(shè)備請(qǐng)求,經(jīng)過設(shè)備處理程序或設(shè)備驅(qū)動(dòng)程序完成對(duì)設(shè)備直接控制。(3)系統(tǒng)與設(shè)備間協(xié)調(diào)主要是速度上協(xié)調(diào),通常要處理快速處理器與慢速I/O設(shè)備之間操作匹配問題,在操作系統(tǒng)中采取緩沖區(qū)方式來緩解這個(gè)矛盾,設(shè)備管理要實(shí)現(xiàn)這些緩沖區(qū)建立、分配、釋放與回收。(4)設(shè)備調(diào)度與分配是針對(duì)兩種不一樣情況:對(duì)等候設(shè)備和I/O操作進(jìn)程進(jìn)行調(diào)度;對(duì)多個(gè)進(jìn)程爭(zhēng)用設(shè)備進(jìn)行分配。13設(shè)備管理方法與信息化課程第13頁UNIX設(shè)備管理在UNIX操作系統(tǒng)中,采取比較統(tǒng)一方法對(duì)外設(shè)進(jìn)行管理。首先將各種外部設(shè)備分成特征迥然不一樣兩大類,即塊設(shè)備和字符設(shè)備;接著又把與設(shè)備物理特征親密相關(guān)部分與設(shè)備管理基本方式和使用基本技術(shù)分離開來。系統(tǒng)為各個(gè)設(shè)備設(shè)置單獨(dú)數(shù)據(jù)結(jié)構(gòu),然后用基本相同方式和技術(shù)對(duì)同類設(shè)備I/O操作進(jìn)行處理。14設(shè)備管理方法與信息化課程第14頁5.2操作系統(tǒng)與中止處理中止是參加計(jì)算機(jī)系統(tǒng)設(shè)備管理一個(gè)主要原因和主要結(jié)構(gòu)。它是操作系統(tǒng)中與硬件最靠近一部分,是操作系統(tǒng)和硬件界面,是由軟、硬件結(jié)合形成一套中止機(jī)構(gòu)實(shí)施。15設(shè)備管理方法與信息化課程第15頁5.2.1中止基本概念當(dāng)一個(gè)正在運(yùn)行過程被另外一個(gè)過程打斷,停頓運(yùn)行過程而轉(zhuǎn)向執(zhí)行另一過程活動(dòng)稱為中止。中止過程是打斷當(dāng)前正在進(jìn)行工作,轉(zhuǎn)而處理更緊急事務(wù),處理完成后再繼續(xù)原來工作。計(jì)算機(jī)系統(tǒng)中止既來自系統(tǒng)內(nèi)部,也來自系統(tǒng)外部,分別稱為內(nèi)(部)中止和外(部)中止。內(nèi)部中止是計(jì)算機(jī)系統(tǒng)本身在工作過程中出現(xiàn)各種需要緊急處理事務(wù),如犯錯(cuò)中止、程序中止等,也稱為軟件中止。內(nèi)部中止多采取程序陷入(trap)方式。外部中止主要是來自I/O設(shè)備中止,如設(shè)備請(qǐng)求中止、打印中止、掉電中止、數(shù)據(jù)傳輸中止等,大部分是硬件中止。16設(shè)備管理方法與信息化課程第16頁17設(shè)備管理方法與信息化課程第17頁5.2.2中止類型(1)I/O中止這是來自通道或者各種外部設(shè)備中止,用于反應(yīng)通道或設(shè)備工作情況。比如,打印機(jī)打印結(jié)束、磁盤傳輸完成、利用終端進(jìn)行I/O操作等,也包含外設(shè)在執(zhí)行I/O操作時(shí)犯錯(cuò)而引發(fā)中止。18設(shè)備管理方法與信息化課程第18頁(2)時(shí)鐘中止一類特殊I/O完成中止,它不一定與詳細(xì)I/O相連,既可由硬件引發(fā),也可由軟件引發(fā)。經(jīng)由硬件定時(shí)芯片產(chǎn)生規(guī)則時(shí)鐘間隔(時(shí)間片)或者由軟件計(jì)數(shù)產(chǎn)生時(shí)間間隔,每一次中止都意味著一段固定時(shí)間已到,時(shí)鐘中止需要定時(shí)、復(fù)位和更新。19設(shè)備管理方法與信息化課程第19頁(3)系統(tǒng)請(qǐng)求中止向操作系統(tǒng)提出請(qǐng)求服務(wù),是由系統(tǒng)指令產(chǎn)生。系統(tǒng)調(diào)用指令是這一類中止特例。各種I/O指令,如TRAP、IOT等均可產(chǎn)生系統(tǒng)請(qǐng)求。該中止把命令傳送到操作系統(tǒng),以確定一個(gè)進(jìn)程需要什么樣服務(wù),操作系統(tǒng)對(duì)請(qǐng)求做出分析并提供所需要服務(wù)。20設(shè)備管理方法與信息化課程第20頁(4)報(bào)警中止普通由計(jì)算機(jī)系統(tǒng)外部條件引發(fā),如計(jì)算機(jī)中止鍵、開啟鍵、求援鍵等,以及由外部通信信號(hào)和網(wǎng)絡(luò)傳輸信號(hào)抵達(dá)產(chǎn)生中止。(5)程序錯(cuò)誤中止因編程錯(cuò)誤、邏輯條件判斷或分支錯(cuò)誤、運(yùn)行參數(shù)錯(cuò)誤而產(chǎn)生中止。它通常會(huì)經(jīng)過用戶終端或顯示器給予提醒。這類中止類型包含:除數(shù)為零、浮點(diǎn)運(yùn)算溢出、存放器使用無效、地址越界、使用特權(quán)或非法指令、越權(quán)訪問、錯(cuò)誤格式化數(shù)據(jù)等21設(shè)備管理方法與信息化課程第21頁(6)機(jī)器錯(cuò)誤中止對(duì)應(yīng)于系統(tǒng)硬件錯(cuò)誤中止。如存放器錯(cuò)誤、I/O設(shè)備錯(cuò)誤、顯示器錯(cuò)誤、接口通道錯(cuò)誤等。普通操作系統(tǒng)只匯報(bào)這些錯(cuò)誤,并終止操作。22設(shè)備管理方法與信息化課程第22頁UNIX中止機(jī)構(gòu)處理一切外部設(shè)備I/O中止。陷入機(jī)構(gòu)處理在系統(tǒng)內(nèi)發(fā)生需要馬上干預(yù)事件,包含使用指令陷入(自陷)和因?yàn)檐?、硬件故障或錯(cuò)誤造成陷入。系統(tǒng)調(diào)用是UNIX操作系統(tǒng)面向在用戶態(tài)下運(yùn)行程序界面,在C語言和匯編語言級(jí)上都允許用戶態(tài)程序使用系統(tǒng)調(diào)用。23設(shè)備管理方法與信息化課程第23頁(補(bǔ)充)系統(tǒng)調(diào)用命令操作系統(tǒng)里預(yù)先編制了很多不一樣功效子程序。用戶能夠在自己程序里調(diào)用這些子程序,請(qǐng)求操作系統(tǒng)提供服務(wù)。這些子程序稱為“系統(tǒng)功效調(diào)用”程序。系統(tǒng)調(diào)用是操作系統(tǒng)程序模塊一部分,它應(yīng)該在管態(tài)下執(zhí)行。不能直接被用戶程序調(diào)用,用戶程序只有經(jīng)過系統(tǒng)提供“訪管”指令,才能實(shí)現(xiàn)由目態(tài)轉(zhuǎn)為管態(tài)、進(jìn)而調(diào)用這些功效程序目標(biāo)。24設(shè)備管理方法與信息化課程第24頁訪管指令訪管指令:是一條非特權(quán)指令,功效是執(zhí)行它就會(huì)產(chǎn)生一個(gè)軟中止,促使處理器由目態(tài)轉(zhuǎn)換到管態(tài),進(jìn)入操作系統(tǒng),并處理中止。利用訪管指令這種功效,編譯程序就把源程序中系統(tǒng)調(diào)用都轉(zhuǎn)換成訪管指令,把詳細(xì)功效轉(zhuǎn)換成不一樣編碼。這么,就能使處理機(jī)執(zhí)行訪管指令由目態(tài)進(jìn)入管態(tài),再依據(jù)編碼,轉(zhuǎn)到對(duì)應(yīng)功效處理程序去執(zhí)行。25設(shè)備管理方法與信息化課程第25頁例:在c語言中,write(fd,buf,count)系統(tǒng)調(diào)用命令。C編譯程序在編譯C源程序時(shí),總把系統(tǒng)調(diào)用命令翻譯成能夠引發(fā)軟中止訪管指令trap.該指令長兩個(gè)字節(jié),第一個(gè)字節(jié)為操作碼,第二個(gè)字節(jié)為系統(tǒng)調(diào)用命令功效編碼。Trap功效碼FdBufcountTrap16進(jìn)制操作碼89;Write功效碼04;Write機(jī)器指令:二進(jìn)制1000100100000100;八進(jìn)制10440426設(shè)備管理方法與信息化課程第26頁Trap指令中功效碼是用來區(qū)分不一樣功效調(diào)用。在UNIX操作系統(tǒng)中,有一張“系統(tǒng)調(diào)用程序入口地址表”。該表表目從0開始、以系統(tǒng)調(diào)用命令所對(duì)應(yīng)功效碼為次序排列。自帶參數(shù)個(gè)數(shù)該系統(tǒng)調(diào)用處理程序入口地址表目內(nèi)容27設(shè)備管理方法與信息化課程第27頁系統(tǒng)調(diào)用處理過程語言編譯程序產(chǎn)生中止查看入口表Write處理程序Write入口3write(fd,buf,count)104404(trap04)C語言源程序目標(biāo)程序Trap中止處理程序34528設(shè)備管理方法與信息化課程第28頁系統(tǒng)調(diào)用與普通過程調(diào)用區(qū)分(1)普經(jīng)過程調(diào)用,調(diào)用者與被調(diào)用者都運(yùn)行在相同cpu狀態(tài)。但發(fā)生系統(tǒng)調(diào)用時(shí),發(fā)出調(diào)用命令調(diào)用者運(yùn)行在目態(tài),而被調(diào)用者運(yùn)行在管態(tài)。(2)普經(jīng)過程調(diào)用,是直接經(jīng)過轉(zhuǎn)移指令轉(zhuǎn)向被調(diào)用程序;但發(fā)生系統(tǒng)調(diào)用時(shí),只能經(jīng)過軟中止指令提供一個(gè)統(tǒng)一入口,由目態(tài)進(jìn)入管態(tài),經(jīng)分析后,才轉(zhuǎn)向?qū)?yīng)命令處理程序。(3)普經(jīng)過程調(diào)用,在被調(diào)用者執(zhí)行完后,就徑直返回?cái)帱c(diǎn)繼續(xù)執(zhí)行;但系統(tǒng)調(diào)用可能會(huì)招致進(jìn)程狀態(tài)改變,從而引發(fā)系統(tǒng)重新分配處理機(jī)。所以,系統(tǒng)調(diào)用結(jié)束后,不一定是返回調(diào)用者斷點(diǎn)處繼續(xù)執(zhí)行。29設(shè)備管理方法與信息化課程第29頁1.與進(jìn)程管理和控制相關(guān)系統(tǒng)調(diào)用屬于這一類有21種?!M(jìn)程創(chuàng)建和消亡:fork、exit。進(jìn)程間同時(shí):wait、pause等。2.與文件系統(tǒng)相關(guān)系統(tǒng)調(diào)用屬于這一類有28種。—文件生成和取消:creat、unlink。文件打開、關(guān)閉及控制:open、close、fcntl。UNIXSVR4提供了53種系統(tǒng)調(diào)用,它們大致可分為3類。30設(shè)備管理方法與信息化課程第30頁3.其它系統(tǒng)調(diào)用屬于這一類有4種。—設(shè)置和取得系統(tǒng)或進(jìn)程時(shí)間:stime、time、times。—在指定時(shí)間后發(fā)告警信號(hào):alarm31設(shè)備管理方法與信息化課程第31頁5.2.3中止響應(yīng)和實(shí)現(xiàn)過程中止是在中止控制機(jī)構(gòu)管理下實(shí)現(xiàn)。設(shè)備提出中止請(qǐng)求信號(hào)由中止控制機(jī)構(gòu)響應(yīng),然后給予實(shí)施。中止控制機(jī)構(gòu)主要功效以下。①統(tǒng)計(jì)各中止源中止請(qǐng)求信號(hào),方便于分別處理。②在CPU硬件中,每當(dāng)執(zhí)行完一條指令,或開始取一條指令前,檢測(cè)有沒有中止請(qǐng)求,若有則硬件自動(dòng)轉(zhuǎn)入中止處理周期。32設(shè)備管理方法與信息化課程第32頁③系統(tǒng)對(duì)不一樣中止類型要求了不一樣優(yōu)先級(jí),當(dāng)同時(shí)存在多個(gè)中止請(qǐng)求時(shí),選優(yōu)先級(jí)最高給予響應(yīng)。假如兩個(gè)中止優(yōu)先級(jí)相等,將按照一定算法,如先來先服務(wù)(FIFO)等進(jìn)行處理。優(yōu)先級(jí)機(jī)制可能使中止服務(wù)形成嵌套,即優(yōu)先級(jí)低中止處理程序執(zhí)行會(huì)被優(yōu)先級(jí)高中止打斷,從而又調(diào)用了另一個(gè)處理程序。在有操作系統(tǒng)(如實(shí)時(shí)系統(tǒng))中是不允許中止嵌套。33設(shè)備管理方法與信息化課程第33頁④響應(yīng)中止后,依據(jù)中止源找出對(duì)應(yīng)中止處理程序入口地址,方便轉(zhuǎn)去執(zhí)行。怎樣轉(zhuǎn)入對(duì)應(yīng)中止處理程序,當(dāng)前慣用結(jié)構(gòu)是中止矢量(interruptvector)結(jié)構(gòu)。中止矢量結(jié)構(gòu)是一類地址指針集合,在主存中開辟了一個(gè)特殊存放區(qū)域來存放這種結(jié)構(gòu),其中某一個(gè)或者幾個(gè)存放單元存放一個(gè)指向中止處理程序地址,它被稱為中止矢量。一個(gè)中止發(fā)生,總能夠在固定位置找到這個(gè)指針,再依據(jù)指針?biāo)肝恢茫粗羔槂?nèi)容)取得對(duì)應(yīng)處理程序或者驅(qū)動(dòng)程序入口地址。34設(shè)備管理方法與信息化課程第34頁⑤保護(hù)現(xiàn)場(chǎng),方便中止返回時(shí)能夠在斷點(diǎn)處繼續(xù)執(zhí)行。中止現(xiàn)場(chǎng)主要指:對(duì)應(yīng)中止時(shí)指令計(jì)數(shù)器PC內(nèi)容(即下一條指令地址,也稱為斷點(diǎn));進(jìn)程運(yùn)行參數(shù)和條件;現(xiàn)運(yùn)行程序狀態(tài)存放器PS內(nèi)容以及累加器或通用存放器內(nèi)容和標(biāo)識(shí),有計(jì)算機(jī)也把PC和PS合起來統(tǒng)稱為程序狀態(tài)字PSW?,F(xiàn)場(chǎng)保護(hù)是把它們保留到主存中特殊區(qū)域(普通是堆棧)中,并確保中止過程中原有現(xiàn)場(chǎng)不做任何改變。35設(shè)備管理方法與信息化課程第35頁⑥當(dāng)正在進(jìn)行某一中止處理時(shí),或在執(zhí)行程序一些階段,有時(shí)不允許響應(yīng)一些中止,所以應(yīng)該在程序控制下,禁止響應(yīng)一些中止,即屏蔽這些中止。當(dāng)不需要屏蔽時(shí),又能及時(shí)在程序控制下撤消屏蔽。在實(shí)時(shí)系統(tǒng)中中止屏蔽必須小型化,而且嚴(yán)格限制中止處理程序執(zhí)行時(shí)間。36設(shè)備管理方法與信息化課程第36頁5.2.4中止處理程序和驅(qū)動(dòng)程序中止處理程序也叫做中止服務(wù)程序,它是與設(shè)備硬件親密相關(guān)處理程序,普通情況下,處理設(shè)備各個(gè)I/O操作細(xì)節(jié)是采取匯編語言和機(jī)器語言編寫。為了將這種與設(shè)備相關(guān)程序?qū)τ脩敉该?,使用戶無須去了解每一個(gè)設(shè)備操作詳細(xì)細(xì)節(jié),通常采取統(tǒng)一簡單方式,如上述中止矢量方式來進(jìn)行。37設(shè)備管理方法與信息化課程第37頁在微型機(jī)和個(gè)人計(jì)算機(jī)中,經(jīng)常把I/O中止處理程序以設(shè)備驅(qū)動(dòng)程序方式作為操作系統(tǒng)設(shè)備管理和控制依據(jù),用戶采取一個(gè)通用界面和操作來使用這些設(shè)備。比如,UNIX和DOS操作系統(tǒng)中都把設(shè)備作為一個(gè)虛擬文件對(duì)待,每個(gè)設(shè)備有一個(gè)像文件名那樣名字,并對(duì)它像一個(gè)文件那樣存取。設(shè)備驅(qū)動(dòng)程序被作為一個(gè)特殊文件存放在系統(tǒng)輔助存放設(shè)備(如磁盤)中,在需要時(shí)由操作系統(tǒng)裝入使用。38設(shè)備管理方法與信息化課程第38頁在操作系統(tǒng)設(shè)計(jì)時(shí),考慮了全部可能與計(jì)算機(jī)系統(tǒng)配置設(shè)備,全部設(shè)備驅(qū)動(dòng)程序隨操作系統(tǒng)軟件一起提供給用戶,用戶在安裝操作系統(tǒng)時(shí),依據(jù)當(dāng)初配置I/O設(shè)備情況,調(diào)入對(duì)應(yīng)設(shè)備驅(qū)動(dòng)程序文件,將它們?cè)O(shè)置并嵌入操作系統(tǒng)中,做好系統(tǒng)運(yùn)行操作環(huán)境準(zhǔn)備。假如操作系統(tǒng)設(shè)備配置有改變,則需要重新引導(dǎo)或者重新配置安裝操作系統(tǒng)。39設(shè)備管理方法與信息化課程第39頁在UNIX系統(tǒng)中,將設(shè)備分成兩類:塊設(shè)備和字符設(shè)備。關(guān)鍵與驅(qū)動(dòng)程序接口是由塊設(shè)備開關(guān)表和字符設(shè)備開關(guān)表描述.40設(shè)備管理方法與信息化課程第40頁5.2.5中止返回與恢復(fù)當(dāng)中止請(qǐng)求操作完成時(shí),系統(tǒng)必須返回被中止程序。此時(shí),必須將中止開始保留下來原來程序狀態(tài)、存放器內(nèi)容和標(biāo)識(shí)、進(jìn)程運(yùn)行參數(shù)和條件等一一恢復(fù),復(fù)原到中止未出現(xiàn)時(shí)狀態(tài),稱為現(xiàn)場(chǎng)恢復(fù)。41設(shè)備管理方法與信息化課程第41頁UNIX操作系統(tǒng)中,中止處理都是在關(guān)鍵態(tài)下進(jìn)行。假如中止前處理機(jī)狀態(tài)為關(guān)鍵態(tài),則在執(zhí)行完設(shè)備處理子程序后就恢復(fù)現(xiàn)場(chǎng),然后用中止返回指令回到中止前狀態(tài),繼續(xù)執(zhí)行被中止操作系統(tǒng)程序。假如中止前為用戶態(tài),則在執(zhí)行完設(shè)備處理子程序后,先要檢驗(yàn)重新調(diào)度標(biāo)志runrun是否設(shè)置。如若已經(jīng)設(shè)置,則調(diào)用進(jìn)程切換調(diào)度程序進(jìn)行進(jìn)程調(diào)度,中止時(shí)被保護(hù)現(xiàn)場(chǎng)就無須馬上恢復(fù)。假如runrun標(biāo)志沒有設(shè)置,則恢復(fù)保護(hù)在堆棧中現(xiàn)場(chǎng),繼續(xù)在用戶態(tài)下執(zhí)行被中止程序。42設(shè)備管理方法與信息化課程第42頁5.4操作系統(tǒng)對(duì)I/O操作控制外圍設(shè)備與內(nèi)存或CPU間慣用數(shù)據(jù)傳送控制方式:程序循環(huán)測(cè)試方式中止控制方式直接存放器存取(DMA)方式通道方式43設(shè)備管理方法與信息化課程第43頁1.程序I/O方式等候發(fā)Start指令Test測(cè)試,設(shè)備標(biāo)志觸發(fā)器為“Done”?CPU執(zhí)行下一條指令開始數(shù)據(jù)傳送否是外圍設(shè)備接收到Start指令作接收或發(fā)送數(shù)據(jù)準(zhǔn)備準(zhǔn)備好?標(biāo)志觸發(fā)器置為“Done”等候CPU來下一條指令是否44設(shè)備管理方法與信息化課程第44頁程序I/O方式在程序I/O方式中,因?yàn)镃PU高速性和I/O設(shè)備低速性,致使CPU絕大部分時(shí)間都處于等候I/O設(shè)備完成數(shù)據(jù)I/O循環(huán)測(cè)試中,造成對(duì)CPU極大浪費(fèi)。在該方式中,CPU之所以要不停地測(cè)試I/O設(shè)備狀態(tài),就是因?yàn)樵贑PU中無中止機(jī)構(gòu),使I/O設(shè)備無法向CPU匯報(bào)它已完成了一個(gè)字符輸入操作。45設(shè)備管理方法與信息化課程第45頁2.中止驅(qū)動(dòng)I/O控制方式I/O操作由程序發(fā)起,在操作完成時(shí)(如數(shù)據(jù)可讀或已經(jīng)寫入)由外設(shè)向CPU發(fā)出中止,通知該程序。數(shù)據(jù)每次讀寫經(jīng)過CPU。硬件要求:

要在CPU與控制器之間連有中止請(qǐng)求線路;

要在設(shè)備控制器狀態(tài)存放器中增設(shè)“中止允許位”46設(shè)備管理方法與信息化課程第46頁數(shù)據(jù)傳輸步驟經(jīng)過CPU發(fā)出start指令。開啟設(shè)備,將中止允許位加以設(shè)置發(fā)出I/O請(qǐng)求進(jìn)程由運(yùn)行狀態(tài)改變?yōu)樽枞麪顟B(tài),等候輸入/輸出完成。輸入/輸出完成時(shí),設(shè)備控制器經(jīng)過中止請(qǐng)求線向CPU發(fā)出中止請(qǐng)求信號(hào)。CPU響應(yīng)該中止后,就轉(zhuǎn)向中止處理程序,對(duì)數(shù)據(jù)傳輸工作進(jìn)行對(duì)應(yīng)處理。輸入/輸出請(qǐng)求全部完成后,進(jìn)程被解除阻塞,改變狀態(tài)為“就緒態(tài)”,方便進(jìn)入它下一步工作。47設(shè)備管理方法與信息化課程第47頁中止控制方式處理過程接收到CPU發(fā)來Start指令緩沖存放器滿?設(shè)備控制器發(fā)中止信號(hào)是準(zhǔn)備數(shù)據(jù)并將其置入緩沖存放器否CPU調(diào)度程序調(diào)度其它進(jìn)程收到中止信號(hào)了嗎?中止處理被中止進(jìn)程執(zhí)行是否向設(shè)備發(fā)Start指令,置中止允許位為“1”其它進(jìn)程執(zhí)行48設(shè)備管理方法與信息化課程第48頁在I/O設(shè)備輸入每個(gè)數(shù)據(jù)過程中,因?yàn)闊o須CPU干預(yù),因而可使CPU與I/O設(shè)備并行工作。僅當(dāng)輸完一個(gè)數(shù)據(jù)時(shí),才需CPU花費(fèi)極短時(shí)間去做些中止處理??梢?,這么可使CPU和I/O設(shè)備都處于忙碌狀態(tài),從而提升了整個(gè)系統(tǒng)資源利用率及吞吐量。比如,從終端輸入一個(gè)字符時(shí)間約為100ms,而將字符送入終端緩沖區(qū)時(shí)間小于0.1ms。若采取程序I/O方式,CPU約有99.9ms時(shí)間處于忙—等候中。采取中止驅(qū)動(dòng)方式后,CPU可利用這99.9ms時(shí)間去做其它事情,而僅用0.1ms時(shí)間來處理由控制器發(fā)來中止請(qǐng)求??梢?,中止驅(qū)動(dòng)方式能夠成百倍地提升CPU利用率。49設(shè)備管理方法與信息化課程第49頁3.直接存放器訪問DMAI/O控制方式1)DMA(DirectMemoryAccess)控制方式引入該方式特點(diǎn)是:①數(shù)據(jù)傳輸基本單位是數(shù)據(jù)塊,即在CPU與I/O設(shè)備之間,每次傳送最少一個(gè)數(shù)據(jù)塊;②所傳送數(shù)據(jù)是從設(shè)備直接送入內(nèi)存,或者相反;③僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊開始和結(jié)束時(shí),才需CPU干預(yù),整塊數(shù)據(jù)傳送是在控制器控制下完成??梢姡珼MA方式較之中止驅(qū)動(dòng)方式,又是成百倍地降低了CPU對(duì)I/O干預(yù),深入提升了CPU與I/O設(shè)備并行操作程度。50設(shè)備管理方法與信息化課程第50頁2).DMA控制器組成51設(shè)備管理方法與信息化課程第51頁為了實(shí)現(xiàn)在主機(jī)與控制器之間成塊數(shù)據(jù)直接交換,必須在DMA控制器中設(shè)置以下四類存放器:(1)命令/狀態(tài)存放器CR。用于接收從CPU發(fā)來I/O命令或相關(guān)控制信息,或設(shè)備狀態(tài)。(2)內(nèi)存地址存放器MAR。在輸入時(shí),它存放把數(shù)據(jù)從設(shè)備傳送到內(nèi)存起始目標(biāo)地址;在輸出時(shí),它存放由內(nèi)存到設(shè)備內(nèi)存源地址。(3)數(shù)據(jù)存放器DR。用于暫存從設(shè)備到內(nèi)存,或從內(nèi)存到設(shè)備數(shù)據(jù)。(4)數(shù)據(jù)計(jì)數(shù)器DC。存放此次CPU要讀或?qū)懽?節(jié))數(shù)。52設(shè)備管理方法與信息化課程第52頁當(dāng)進(jìn)程要求輸入數(shù)據(jù)時(shí),CPU將準(zhǔn)備存放輸入數(shù)據(jù)內(nèi)存起始地址、要傳送字節(jié)數(shù)送入DMA控制器內(nèi)存地址存放器和傳送字節(jié)計(jì)數(shù)器,將中止允許位和開啟位置成1,開啟設(shè)備。CPU將總線讓給DMA控制器,在DMA控制器進(jìn)行數(shù)據(jù)傳輸期間,CPU不再使用總線,而是DMA控制器取得總線控制權(quán)。發(fā)出傳輸要求進(jìn)程進(jìn)入等候狀態(tài),執(zhí)行指令被暫時(shí)掛起,進(jìn)程調(diào)度其它進(jìn)程占據(jù)CPUDMA工作原理53設(shè)備管理方法與信息化課程第53頁DMA控制器按照地址存放器指示,不停與內(nèi)存放器進(jìn)行直接數(shù)據(jù)傳輸,并隨時(shí)修改地址存放器和字節(jié)計(jì)數(shù)器值。輸入設(shè)備不停竊取CPU工作周期,數(shù)據(jù)不停寫入內(nèi)存?zhèn)魉屯瓿?,發(fā)出中止信號(hào)CPU接到中止信號(hào)轉(zhuǎn)入中止處理程序處理中止處理結(jié)束,CPU返回原進(jìn)程或切換到新進(jìn)程DMA工作原理54設(shè)備管理方法與信息化課程第54頁DMA方式工作流程設(shè)置MAR和DC初值開啟DMA傳送命令挪用存放器周期傳送數(shù)據(jù)字存放器地址增1字計(jì)數(shù)存放器減1DC=0?請(qǐng)求中止在繼續(xù)執(zhí)行用戶程序同時(shí),準(zhǔn)備又一次傳送55設(shè)備管理方法與信息化課程第55頁DMA方式與中止方式主要區(qū)分中止方式是在數(shù)據(jù)緩沖存放器滿后,發(fā)中止請(qǐng)求,CPU進(jìn)行中止處理;DMA方式則是在所要求傳送數(shù)據(jù)塊全部傳送結(jié)束時(shí)要求CPU進(jìn)行中止處理大大降低了CPU進(jìn)行中止處理次數(shù)中止方式數(shù)據(jù)傳送是由CPU控制完成而DMA方式則是在DMA控制器控制下不經(jīng)過CPU控制完成,所以防止了因速度不匹配而造成數(shù)據(jù)丟失現(xiàn)象。(DMA硬件比較復(fù)雜)56設(shè)備管理方法與信息化課程第56頁4.I/O通道控制方式1)I/O通道控制方式引入I/O通道方式是DMA方式發(fā)展,它可深入降低CPU干預(yù),即把對(duì)一個(gè)數(shù)據(jù)塊讀(或?qū)?為單位干預(yù),降低為對(duì)一組數(shù)據(jù)塊讀(或?qū)?及相關(guān)控制和管理為單位干預(yù)。同時(shí),又可實(shí)現(xiàn)CPU、通道和I/O設(shè)備三者并行操作,從而更有效地提升整個(gè)系統(tǒng)資源利用率。比如,當(dāng)CPU要完成一組相關(guān)讀(或?qū)?操作及相關(guān)控制時(shí),只需向I/O通道發(fā)送一條I/O指令,以給出其所要執(zhí)行通道程序首址和要訪問I/O設(shè)備,通道接到該指令后,經(jīng)過執(zhí)行通道程序便可完成CPU指定I/O任務(wù)。57設(shè)備管理方法與信息化課程第57頁5.4.1I/O設(shè)備資源分配計(jì)算機(jī)系統(tǒng)各類I/O設(shè)備及其控制部件含有不一樣連接方式和接口,需要使用和占據(jù)系統(tǒng)一些資源,這些資源是I/O設(shè)備正常工作必不可少,也是由設(shè)備所共享。操作系統(tǒng)應(yīng)該檢測(cè)和確認(rèn)哪些I/O設(shè)備使用哪些系統(tǒng)資源,怎樣分配協(xié)調(diào)這些資源以防止沖突。下面介紹這些資源含義。58設(shè)備管理方法與信息化課程第58頁1.I/O地址I/O地址是I/O設(shè)備或控制卡所在位置,處理器經(jīng)過這個(gè)地址找到對(duì)應(yīng)I/O部件和設(shè)備存放器,并對(duì)它進(jìn)行控制和數(shù)據(jù)傳輸操作。因?yàn)楹芏嘣O(shè)備共享某個(gè)I/O地址,這么就會(huì)產(chǎn)生I/O地址沖突。所以,需要在系統(tǒng)開啟時(shí)進(jìn)行正確I/O地址設(shè)置,或者在應(yīng)用軟件運(yùn)行時(shí)進(jìn)行I/O地址重新設(shè)置59設(shè)備管理方法與信息化課程第59頁2.I/O中止請(qǐng)求每個(gè)I/O設(shè)備在工作過程中都會(huì)向處理器發(fā)出各種I/O中止請(qǐng)求,比如數(shù)據(jù)就緒、數(shù)據(jù)抵達(dá)、發(fā)送結(jié)束、紙張用完、操做犯錯(cuò)等。處理器接收這些I/O請(qǐng)求后將轉(zhuǎn)入I/O中止處理程序,完成對(duì)應(yīng)I/O處理。然而,系統(tǒng)擁有I/O中止請(qǐng)求號(hào)是有限,其中一些已經(jīng)用于系統(tǒng)標(biāo)準(zhǔn)功效性中止,如時(shí)鐘中止、除零中止、系統(tǒng)異常中止等。I/O設(shè)備可能爭(zhēng)用剩下中止請(qǐng)求,也會(huì)產(chǎn)生沖突。所以,這也是I/O資源分配主要問題。60設(shè)備管理方法與信息化課程第60頁3.DMA數(shù)據(jù)傳輸通道直接存放器訪問(DMA)通道提供了I/O設(shè)備與系統(tǒng)間有效數(shù)據(jù)傳輸機(jī)制,在設(shè)備與主存放器之間進(jìn)行直接數(shù)據(jù)傳輸,而無需處理器干預(yù)。由硬件組成DMA通道數(shù)是有限,對(duì)爭(zhēng)用同一個(gè)DMA通道I/O設(shè)備需要進(jìn)行協(xié)調(diào)和重新配置。61設(shè)備管理方法與信息化課程第61頁4.I/O緩沖區(qū)輸入輸出緩沖區(qū)是為了加緊I/O設(shè)備數(shù)據(jù)傳輸、協(xié)調(diào)快速處理器和慢速設(shè)備間一個(gè)有效機(jī)制。緩沖區(qū)設(shè)置要占用主存放器一定空間,各種I/O設(shè)備開設(shè)緩沖區(qū)大小和位置可能不一樣,也可能一樣,這個(gè)系統(tǒng)資源也是I/O設(shè)備爭(zhēng)用。系統(tǒng)必須確保各個(gè)I/O設(shè)備開辟緩沖區(qū)不相互沖突,并不影響主存放器使用。62設(shè)備管理方法與信息化課程第62頁5.4.2I/O通道技術(shù)I/O通道是一個(gè)硬件設(shè)施,帶有專用處理器、有很強(qiáng)I/O處理功效智能部件,它能夠獨(dú)立地完成系統(tǒng)處理器交付I/O操作任務(wù),此時(shí),I/O總線直接與通道相連而不與處理器相連。通道含有自己專門指令集,即通道指令,用于與連接到總線上I/O控制器通信,在設(shè)備與存放器之間傳送數(shù)據(jù)。采取這種方式,系統(tǒng)主處理器只需進(jìn)行I/O操作委托,其后全部I/O操作均由通道自己進(jìn)行。通道執(zhí)行來自主處理器通道程序,完成后只需向系統(tǒng)處理器發(fā)出中止,請(qǐng)求結(jié)束??梢?,這種方式能夠形成系統(tǒng)處理器與I/O設(shè)備之間并行操作。63設(shè)備管理方法與信息化課程第63頁I/O設(shè)備與系統(tǒng)數(shù)據(jù)交換通常采取程序查詢、I/O中止和直接存放器存?。―MA)方式,這3種控制方式也一樣適合用于通道機(jī)制。依據(jù)信息交換方式,通道能夠分成3種類型:字節(jié)多路通道、數(shù)據(jù)選擇通道和成組多路通道。64設(shè)備管理方法與信息化課程第64頁通道類型1)字節(jié)多路通道(ByteMultiplexorChannel)這是一個(gè)按字節(jié)交叉方式工作通道。它通常都含有許多非分配型子通道,其數(shù)量可從幾十個(gè)到數(shù)百個(gè),每一個(gè)子通道連接一臺(tái)I/O設(shè)備,并控制該設(shè)備I/O操作。這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道。這么,只要字節(jié)多路通道掃描每個(gè)子通道速率足夠快,而連接到子通道上設(shè)備速率不是太高時(shí),便不致于丟失信息。65設(shè)備管理方法與信息化課程第65頁66設(shè)備管理方法與信息化課程第66頁2)數(shù)據(jù)選擇通道(BlockSelectorChannel)字節(jié)多路通道不適于連接高速設(shè)備,這推進(jìn)了按數(shù)組方式進(jìn)行數(shù)據(jù)傳送數(shù)據(jù)選擇通道形成。這種通道即使能夠連接多臺(tái)高速設(shè)備,但因?yàn)樗缓幸粋€(gè)分配型子通道,在一段時(shí)間內(nèi)只能執(zhí)行一道通道程序,控制一臺(tái)設(shè)備進(jìn)行數(shù)據(jù)傳送,致使當(dāng)某臺(tái)設(shè)備占用了該通道后,便一直由它獨(dú)占,即使是它無數(shù)據(jù)傳送,通道被閑置,也不允許其它設(shè)備使用該通道,直至該設(shè)備傳送完成釋放該通道??梢?,這種通道利用率很低。67設(shè)備管理方法與信息化課程第67頁3)成組多路通道(BlockMultiplexorChannel)

數(shù)據(jù)選擇通道雖有很高傳輸速率,但它卻每次只允許一個(gè)設(shè)備傳輸數(shù)據(jù)。成組多路通道是將數(shù)據(jù)選擇通道傳輸速率高和字節(jié)多路通道能使各子通道(設(shè)備)分時(shí)并行操作優(yōu)點(diǎn)相結(jié)合而形成一個(gè)新通道。它含有多個(gè)非分配型子通道,先為一臺(tái)設(shè)備執(zhí)行一條通道指令,然后自動(dòng)轉(zhuǎn)接,為另一臺(tái)設(shè)備執(zhí)行一條通道指令。因而這種通道既含有很高數(shù)據(jù)傳輸速率,又能取得令人滿意通道利用率。也正所以,才使該通道能被廣泛地用于連接多臺(tái)高、中速外圍設(shè)備,其數(shù)據(jù)傳送是按數(shù)組方式進(jìn)行。68設(shè)備管理方法與信息化課程第68頁5.4.3I/O緩沖技術(shù)提升中央處理器與外設(shè)并行程度另一項(xiàng)技術(shù)辦法是緩沖技術(shù)。降低了I/O設(shè)備對(duì)處理器中止請(qǐng)求次數(shù);簡化了中止機(jī)制;節(jié)約了系統(tǒng)開銷;提升了處理機(jī)與外設(shè)并行程度69設(shè)備管理方法與信息化課程第69頁圖利用緩沖存放器實(shí)現(xiàn)緩沖70設(shè)備管理方法與信息化課程第70頁5.4.3I/O緩沖技術(shù)緩沖技術(shù)能夠采取硬件緩沖和軟件緩沖兩種方式。硬件緩沖是利用專門硬件存放器作為緩沖器。而軟件緩沖是借助操作系統(tǒng)管理,采取內(nèi)存中一個(gè)或者多個(gè)區(qū)域作為緩沖區(qū)。當(dāng)前采取最多是軟件緩沖,它由緩沖區(qū)和對(duì)緩沖區(qū)管理兩部分組成。軟件緩沖能夠改變緩沖區(qū)大小和數(shù)量,但也占據(jù)了一定存放空間。71設(shè)備管理方法與信息化課程第71頁5.4.4設(shè)備驅(qū)動(dòng)為了將設(shè)備硬件復(fù)雜性與用戶隔離,也為了建立一個(gè)通用I/O接口,操作系統(tǒng)采取設(shè)備驅(qū)動(dòng)程序來完成設(shè)備驅(qū)動(dòng)。設(shè)備驅(qū)動(dòng)程序慣用匯編語言編寫,它向上與高級(jí)I/O操作系統(tǒng)調(diào)用相對(duì)應(yīng),向下與I/O硬件設(shè)備相對(duì)應(yīng),完成二者間相互通信。普通每一類設(shè)備有一個(gè)對(duì)應(yīng)驅(qū)動(dòng)程序,能控制同一類中多臺(tái)設(shè)備工作。每個(gè)設(shè)備生產(chǎn)廠商和軟件開發(fā)商都必須按照設(shè)備驅(qū)動(dòng)程序標(biāo)準(zhǔn)結(jié)構(gòu)編寫?yīng)毩⒃O(shè)備驅(qū)動(dòng)程序,當(dāng)系統(tǒng)需要時(shí),再將它安裝配置到系統(tǒng)中。72設(shè)備管理方法與信息化課程第72頁5.4.4設(shè)備驅(qū)動(dòng)當(dāng)前,設(shè)備驅(qū)動(dòng)程序是作為操作系統(tǒng)所提供選擇項(xiàng),用戶能夠依據(jù)需要配置設(shè)備,靈活地選擇、裝載、卸載驅(qū)動(dòng)程序,從而極大地增強(qiáng)了系統(tǒng)開放性和可擴(kuò)展性。設(shè)備驅(qū)動(dòng)程序普通不由用戶執(zhí)行,也不能被用戶進(jìn)程直接執(zhí)行,只能經(jīng)過I/O請(qǐng)求和調(diào)用方式,由系統(tǒng)或者I/O處理器執(zhí)行。73設(shè)備管理方法與信息化課程第73頁5.5設(shè)備管理數(shù)據(jù)結(jié)構(gòu)操作系統(tǒng)提供了若干高級(jí)I/O系統(tǒng)調(diào)用,它包含了對(duì)I/O設(shè)備操作請(qǐng)求、響應(yīng)、處理、控制、緩沖、恢復(fù)等,從而用這些抽象I/O操作把用戶與復(fù)雜I/O設(shè)備操作隔離開來。將抽象I/O操作映射到專門設(shè)備驅(qū)動(dòng)程序,由此隱藏設(shè)備操作細(xì)節(jié),有利于編寫與設(shè)備無關(guān)程序。要完成抽象到實(shí)際映射,操作系統(tǒng)通常采取一個(gè)數(shù)據(jù)結(jié)構(gòu)來完成,稱為設(shè)備控制表(DCT),簡稱設(shè)備表。它統(tǒng)計(jì)每一個(gè)抽象設(shè)備描述、對(duì)應(yīng)實(shí)際設(shè)備地址和所使用設(shè)備驅(qū)動(dòng)程序等參數(shù)。用戶和進(jìn)程對(duì)設(shè)備調(diào)用經(jīng)過設(shè)備表映射到物理設(shè)備,使I/O操作與設(shè)備無關(guān),與硬件接口和硬件地址無關(guān)。5.5.1設(shè)備控制表74設(shè)備管理方法與信息化課程第74頁設(shè)備表設(shè)備表有多個(gè)表項(xiàng),每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)設(shè)備;表項(xiàng)內(nèi)容包含設(shè)備標(biāo)識(shí)符、設(shè)備地址、設(shè)備屬性、設(shè)備狀態(tài)、設(shè)備驅(qū)動(dòng)程序地址、設(shè)備等候隊(duì)列指針等。圖5-4給出了設(shè)備表一個(gè)簡單示例。表中包含了若干抽象I/O操作系統(tǒng)調(diào)用,每個(gè)調(diào)用以函數(shù)指針形式映射到實(shí)際I/O處理程序,再經(jīng)過對(duì)應(yīng)設(shè)備驅(qū)動(dòng)程序?qū)ξ锢碓O(shè)備進(jìn)行操作。75設(shè)備管理方法與信息化課程第75頁76設(shè)備管理方法與信息化課程第76頁Structdevtab{ intdvid; intdvadd; int*dvec; int*dvbuf; int*dvque; int(*dvinit)(); int(*dvopen)(); int(*dvclose)(); int(*dvread)(); int(*dvwrite)(); int(*dvseek)(); int(*dvcntl)(); int(*dvgetc)(); int(*dvputc)();}dct[];77設(shè)備管理方法與信息化課程第77頁設(shè)備讀read抽象操作read(dvcrp,buf,size)/*系統(tǒng)調(diào)用接收3個(gè)傳遞來參數(shù)*/intdvcrp,size;/*參數(shù)為設(shè)備標(biāo)識(shí)符、數(shù)據(jù)塊大小和緩沖區(qū)指針char*buf;{structdevtab*devptr;/*定義一個(gè)指向設(shè)備表指針*/

if(isbaddev(dvcrp))/*確認(rèn)設(shè)備標(biāo)識(shí)符是否有效*/

return(SYSERR);/*無效,系統(tǒng)返回犯錯(cuò)*/devptr=&dct[dvcrp];/*有效,找到對(duì)應(yīng)設(shè)備表項(xiàng)*/

return((*devptr->dvread)(devptr,buf,size));/*將參數(shù)傳向設(shè)備驅(qū)動(dòng)程序并返回*/}78設(shè)備管理方法與信息化課程第78頁5.5.2設(shè)備開關(guān)表針對(duì)各類設(shè)備不一樣物理特征,系統(tǒng)為它們各自設(shè)置了一套子程序,它們包含打開、關(guān)閉和開啟子程序。系統(tǒng)為每類設(shè)備又設(shè)置了一數(shù)據(jù)結(jié)構(gòu),存放這些程序入口地址,該數(shù)據(jù)結(jié)構(gòu)稱為設(shè)備開關(guān)。各類設(shè)備開關(guān)組成設(shè)備開關(guān)表。為使設(shè)備開關(guān)表與設(shè)備控制表建立聯(lián)絡(luò),在設(shè)備開關(guān)表中還設(shè)置了該設(shè)備控制表指針或設(shè)備控制表在系統(tǒng)中編號(hào),即設(shè)備號(hào)。79設(shè)備管理方法與信息化課程第79頁5.6磁盤調(diào)度磁盤特點(diǎn)是存放容量大,存取速度快,而且能夠次序或隨機(jī)存取。磁盤系統(tǒng)硬件可分為兩大部分:一部分是磁盤驅(qū)動(dòng)器,它是機(jī)械部分,包含驅(qū)動(dòng)電機(jī)、讀/寫磁頭和對(duì)應(yīng)邏輯電路;另一部分是磁盤控制器,實(shí)現(xiàn)與計(jì)算機(jī)邏輯接口。磁盤控制器接收來自CPU指令,命令盤驅(qū)動(dòng)器執(zhí)行該指令。這么,一個(gè)磁盤控制器就能夠控制多個(gè)磁盤驅(qū)動(dòng)器工作80設(shè)備管理方法與信息化課程第80頁磁盤結(jié)構(gòu)示意圖每個(gè)盤片有正反兩個(gè)盤面,若干個(gè)盤片組成一個(gè)磁盤組。每個(gè)盤面有一個(gè)讀寫磁頭,全部讀寫磁頭被固定在移動(dòng)臂上,同時(shí)進(jìn)行內(nèi)、外運(yùn)動(dòng)。81設(shè)備管理方法與信息化課程第81頁硬盤俯視圖82設(shè)備管理方法與信息化課程第82頁硬盤磁頭臂83設(shè)備管理方法與信息化課程第83頁數(shù)據(jù)組織和格式磁盤設(shè)備可包含一或多個(gè)盤片,每片分兩面,每面可分成若干條磁道(500-),各磁道之間留有必要間隙。每條磁道上可存放相同數(shù)目標(biāo)二進(jìn)制位。每條磁道又分成若干各扇區(qū)(10-100)。每個(gè)扇區(qū)大小相當(dāng)于一個(gè)盤塊。各扇區(qū)之間保留一定間隙。盤上信息地址是多重編址,通常包含驅(qū)動(dòng)器號(hào)、面號(hào)、道號(hào)和扇區(qū)號(hào)。84設(shè)備管理方法與信息化課程第84頁85設(shè)備管理方法與信息化課程第85頁磁盤訪問時(shí)間1)尋道時(shí)間這是指把磁臂(磁頭)移動(dòng)到指定磁道上所經(jīng)歷時(shí)間。該時(shí)間是開啟磁臂時(shí)間s與磁頭移動(dòng)n條磁道所花費(fèi)時(shí)間之和,即尋道時(shí)間=m×n+s其中,m是一常數(shù),與磁盤驅(qū)動(dòng)器速度相關(guān),對(duì)普通磁盤,m=0.2;對(duì)高速磁盤,m≤0.1,磁臂開啟時(shí)間約為2ms。這么,對(duì)普通溫盤,其尋道時(shí)間將隨尋道距離增加而增大,大致上是5~30ms。86設(shè)備管理方法與信息化課程第86頁2)旋轉(zhuǎn)延遲時(shí)(等候時(shí)間)這是指定扇區(qū)移動(dòng)到磁頭下面所經(jīng)歷時(shí)間。對(duì)于硬盤,經(jīng)典旋轉(zhuǎn)速度大多為5400r/min,每轉(zhuǎn)需時(shí)11.1ms,平均旋轉(zhuǎn)延遲時(shí)間為5.55ms;對(duì)于軟盤,其旋轉(zhuǎn)速度為300r/min或600r/min,這么,平均旋轉(zhuǎn)延遲時(shí)間為50~100ms。87設(shè)備管理方法與信息化課程第87頁3)傳送時(shí)間這是指把數(shù)據(jù)從磁盤讀出或向磁盤寫入數(shù)據(jù)所經(jīng)歷時(shí)間。傳送時(shí)間大小與每次所讀/寫字節(jié)數(shù)b和旋轉(zhuǎn)速度相關(guān):其中,r為磁盤每秒鐘轉(zhuǎn)數(shù);N為一條磁道上字節(jié)數(shù)。88設(shè)備管理方法與信息化課程第88頁由上式能夠看出,在訪問時(shí)間中,尋道時(shí)間和旋轉(zhuǎn)延遲時(shí)間基本上都與所讀/寫數(shù)據(jù)多少無關(guān),而且它通常占據(jù)了訪問時(shí)間中大頭。比如,我們假定尋道時(shí)間和旋轉(zhuǎn)延遲時(shí)間平均為20ms,而磁道傳輸速率為10MB/s,假如要傳輸10KB,此時(shí)總訪問時(shí)間為21ms,可見傳輸時(shí)間所占百分比非常小。當(dāng)前磁盤傳輸速率已達(dá)80MB/s以上,數(shù)據(jù)傳輸時(shí)間所占百分比更低??梢娺m當(dāng)集中數(shù)據(jù)(不要太零碎)傳輸,將有利于提升傳輸效率。89設(shè)備管理方法與信息化課程第89頁操作系統(tǒng)要提供適當(dāng)調(diào)度算法,以改進(jìn)磁盤服務(wù)平均時(shí)間。進(jìn)程需要與磁盤交換信息時(shí)必須向操作系統(tǒng)發(fā)出系統(tǒng)調(diào)用,對(duì)磁盤請(qǐng)求普通要有下述幾個(gè)部分內(nèi)容:輸入或輸出、盤地址(驅(qū)動(dòng)器、柱面、面號(hào)、扇區(qū))、內(nèi)存地址和傳送長度。假如所需磁盤驅(qū)動(dòng)器和控制器是可用,則該請(qǐng)求可馬上得到服務(wù);假如它們正在為別進(jìn)程服務(wù),該進(jìn)程就要排隊(duì)等候。在多道程序系統(tǒng)中,往往有很多進(jìn)程在磁盤隊(duì)列中等候,當(dāng)一個(gè)進(jìn)程請(qǐng)求完成之后,必須選一個(gè)新請(qǐng)求,并為它服務(wù)。90設(shè)備管理方法與信息化課程第90頁5.6.2磁盤調(diào)度因?yàn)樵谠L問磁盤時(shí)間中,主要是尋道時(shí)間,所以,磁盤調(diào)度目標(biāo),是使磁盤平均尋道時(shí)間最少。當(dāng)前慣用磁盤調(diào)度算法有:先來先服務(wù);最短尋道時(shí)間優(yōu)先掃描等算法。91設(shè)備管理方法與信息化課程第91頁1.先來先服務(wù)FCFS(First-Come,FirstServed)原理:磁盤I/O執(zhí)行次序?yàn)榇疟PI/O請(qǐng)求先后次序。該算法特點(diǎn)是公平性;在磁盤I/O負(fù)載較輕且每次讀寫多個(gè)連續(xù)扇區(qū)時(shí),性能很好。缺點(diǎn):效率不高,相臨兩次請(qǐng)求可能會(huì)造成最內(nèi)到最外柱面尋道,使磁頭重復(fù)移動(dòng),增加了服務(wù)時(shí)間,對(duì)機(jī)械也不利92設(shè)備管理方法與信息化課程第92頁例:假設(shè)磁盤訪問序列:98,183,37,122,14,124,65,67讀寫頭起始位置:53安排磁頭服務(wù)序列計(jì)算磁頭移動(dòng)總距離(道數(shù))比如:93設(shè)備管理方法與信息化課程第93頁總共移動(dòng)了640個(gè)磁道。14375365679812212418345851468510811059294設(shè)備管理方法與信息化課程第94頁2.最短尋道時(shí)間優(yōu)先SSTF(ShortestSeekTimeFirst)考慮磁盤I/O請(qǐng)求隊(duì)列中各請(qǐng)求磁頭定位位置,選擇從當(dāng)前磁頭位置出發(fā),移動(dòng)最少磁盤I/O請(qǐng)求。該算法目標(biāo)是使每次磁頭移動(dòng)時(shí)間最少。它不一定是最短平均柱面定位時(shí)間,但比FIFO算法有更加好性能。對(duì)中間磁道有利,可能會(huì)有進(jìn)程處于饑餓狀態(tài)。95設(shè)備管理方法與信息化課程第95頁總共移動(dòng)了236個(gè)磁道。1437536567981221241831223023842425996設(shè)備管理方法與信息化課程第96頁3.掃描(SCAN)算法1)進(jìn)程“饑餓”現(xiàn)象SSTF算法即使能取得很好尋道性能,但卻可能造成某個(gè)進(jìn)程發(fā)生“饑餓”(Starvation)現(xiàn)象。因?yàn)橹灰煌S行逻M(jìn)程請(qǐng)求抵達(dá),且其所要訪問磁道與磁頭當(dāng)前所在磁道距離較近,這種新進(jìn)程I/O請(qǐng)求必須優(yōu)先滿足。對(duì)SSTF算法略加修改后所形成SCAN算法,即可預(yù)防老進(jìn)程出現(xiàn)“饑餓”現(xiàn)象。97設(shè)備管理方法與信息化課程第97頁2)SCAN算法選擇在磁頭前進(jìn)方向上從當(dāng)前位置移動(dòng)最少磁盤I/O請(qǐng)求執(zhí)行,直至抵達(dá)磁盤另一端時(shí)才改變方向。該算法是對(duì)SSTF算法改進(jìn),磁盤I/O很好,且沒有進(jìn)程會(huì)餓死。因?yàn)檫@種算法中磁頭移動(dòng)規(guī)律類似電梯運(yùn)行,因而又常稱之為電梯調(diào)度算法。98設(shè)備管理方法與信息化課程第98頁143753656798122124183162314652312425999設(shè)備管理方法與信息化課程第99頁4.循環(huán)掃描(C-SCAN)算法在一個(gè)方向上使用掃描算法,當(dāng)?shù)诌_(dá)邊緣時(shí)直接移動(dòng)到另一沿第一個(gè)位置。單向重復(fù)地掃描,將磁盤各磁道視為一個(gè)環(huán)形緩沖區(qū),首尾相連,最終一個(gè)磁道與第一個(gè)磁道相連該算法可改進(jìn)掃描算法對(duì)中間磁道偏好。試驗(yàn)表明,該算法在中負(fù)載或重負(fù)載時(shí),磁盤I/O性能比掃描算法好100設(shè)備管理方法與信息化課程第100頁143753656798122124183162316959224312101設(shè)備管理方法與信息化課程第101頁5.N-Step-SCAN和FSCAN調(diào)度算法1)N-Step-SCAN算法在SSTF、SCAN及CSCAN幾個(gè)調(diào)度算法中,都可能出現(xiàn)磁臂停留在某處不動(dòng)情況,比如,有一個(gè)或幾個(gè)進(jìn)程對(duì)某一磁道有較高訪問頻率,即這個(gè)(些)進(jìn)程重復(fù)請(qǐng)求對(duì)某一磁道I/O操作,從而壟斷了整個(gè)磁盤設(shè)備。我們把這一現(xiàn)象稱為“磁臂粘著”(Armstickiness)。在高密度磁盤上輕易出現(xiàn)此情況。102設(shè)備管理方法與信息化課程第102頁N步SCAN算法是將磁盤請(qǐng)求隊(duì)列分成若干個(gè)長度為N子隊(duì)列,磁盤調(diào)度將按FCFS算法依次處理這些子隊(duì)列。而每處理一個(gè)隊(duì)列時(shí)又是按SCAN算法,對(duì)一個(gè)隊(duì)列處理完后,再處理其它隊(duì)列。當(dāng)正在處理某子隊(duì)列時(shí),假如又出現(xiàn)新磁盤I/O請(qǐng)求,便將新請(qǐng)求進(jìn)程放入其它隊(duì)列,這么就可防止出現(xiàn)粘著現(xiàn)象。當(dāng)N值取得很大時(shí),會(huì)使N步掃描法性能靠近于SCAN算法性能;當(dāng)N=1時(shí),N步SCAN算法便蛻化為FCFS算法。103設(shè)備管理方法與信息化課程第103頁隊(duì)列1:98,183,37,122;隊(duì)列2:14,124,65,67;隊(duì)列3:1437536567981221241833799104設(shè)備管理方法與信息化課程第104頁2)FSCAN算法FSCAN算法實(shí)質(zhì)上是N步SCAN算法簡化,即FSCAN只將磁盤請(qǐng)求隊(duì)列分成兩個(gè)子隊(duì)列。一個(gè)是由當(dāng)前全部請(qǐng)求磁盤I/O進(jìn)程形成隊(duì)列,由磁盤調(diào)度按SCAN算法進(jìn)行處理。在掃描期間,將新出現(xiàn)全部請(qǐng)求磁盤I/O進(jìn)程,放入另一個(gè)等候處理請(qǐng)求隊(duì)列。這么,全部新請(qǐng)求都將被推遲到下一次掃描時(shí)處理。105設(shè)備管理方法與信息化課程第105頁隊(duì)列1:98,183,37,122;隊(duì)列2:14,124,65,67,14375365679812212418337106設(shè)備管理方法與信息化課程第106頁4.磁盤調(diào)度算法選擇SSTF相當(dāng)通用,很有吸引力。Scan和C-Scan對(duì)磁盤負(fù)荷很重系統(tǒng)來說更為適當(dāng)。然而,任何調(diào)度算法性能都緊緊地依賴于請(qǐng)求數(shù)量和類型。在極個(gè)別情況下,若隊(duì)列中極少有多于一個(gè)未完成請(qǐng)求,那么全部算法都是實(shí)際等效。107設(shè)備管理方法與信息化課程第107頁磁盤服務(wù)請(qǐng)求受文件分配方式影響很大。讀連續(xù)文件程序?qū)a(chǎn)生大量在盤上擠在一起請(qǐng)求,磁頭移動(dòng)有限。而在鏈接或檢索文件時(shí),可能包括在盤上廣泛分布盤塊,要靠降低磁頭移動(dòng)來獲取很好磁盤利用。磁盤調(diào)度算法像其它算法一樣,應(yīng)作為操作系統(tǒng)單獨(dú)模塊來編寫,允許去除它并重新?lián)Q入不一樣算法。最終,不論FCFS、SSTF,還是Scan,都是可供選擇算法108設(shè)備管理方法與信息化課程第108頁5.6.3系統(tǒng)設(shè)計(jì)應(yīng)考慮幾個(gè)問題1.磁盤存放是有限資源當(dāng)磁盤存放成為“瓶頸”時(shí),不能盲目增加系統(tǒng)內(nèi)磁盤數(shù)量。問題很可能來自調(diào)度不妥:大量請(qǐng)求都?jí)涸谏僭S磁盤上。在這種情況下,采取適當(dāng)磁盤調(diào)度策略能夠改進(jìn)性能和消除瓶頸問題。109設(shè)備管理方法與信息化課程第109頁2.多道程序級(jí)別隨多道程序級(jí)別提升,磁盤負(fù)荷和隨機(jī)請(qǐng)求也增加了。在批處理系統(tǒng)中,多道程序級(jí)別相對(duì)比較低,磁盤調(diào)度就沒有太大用處。而在分時(shí)系統(tǒng),尤其是在信息處理系統(tǒng)中,它就顯得很有意義。110設(shè)備管理方法與信息化課程第110頁3.多磁盤系統(tǒng)在大型系統(tǒng)中,慣用到多個(gè)物理磁盤設(shè)備。為了經(jīng)濟(jì)和標(biāo)準(zhǔn)化,往往用一臺(tái)控制器驅(qū)動(dòng)幾臺(tái)磁盤機(jī),再經(jīng)過通道和中央處理機(jī)聯(lián)絡(luò)。此時(shí)出現(xiàn)瓶頸問題可能來自控制器或者通道,假如情況是這么,可降低各自負(fù)荷。另外,文件系統(tǒng)結(jié)構(gòu)形式和存取方法也影響到磁盤調(diào)度策略選擇。111設(shè)備管理方法與信息化課程第111頁5.7UNIX系統(tǒng)V設(shè)備管理UNIX系統(tǒng)中包含兩類設(shè)備:塊設(shè)備和字符設(shè)備。用戶是經(jīng)過文件系統(tǒng)與設(shè)備接口。文件系統(tǒng)與設(shè)備驅(qū)動(dòng)程序之間接口是設(shè)備開關(guān)表:塊設(shè)備開關(guān)表和字符設(shè)備開關(guān)表。硬件與驅(qū)動(dòng)程序之間接口包含與機(jī)器相關(guān)控制存放器或I/O指令,用來管理設(shè)備和中止矢量:當(dāng)出現(xiàn)設(shè)備中止時(shí),系統(tǒng)要確定中止起源,而且調(diào)用對(duì)應(yīng)中止處理程序。112設(shè)備管理方法與信息化課程第112頁5.7.1塊設(shè)備管理主要數(shù)據(jù)結(jié)構(gòu)UNIX系統(tǒng)采取多重緩沖技術(shù)來平滑和加緊文件信息在內(nèi)存與磁盤之間傳輸。緩沖管理模塊處于文件系統(tǒng)和塊設(shè)備驅(qū)動(dòng)模塊之間。當(dāng)從盤上讀數(shù)據(jù)時(shí),假如數(shù)據(jù)已經(jīng)在緩沖區(qū)中,則關(guān)鍵就直接從中讀出,而無須從盤上讀;僅當(dāng)所需數(shù)據(jù)不在緩沖區(qū)中時(shí),關(guān)鍵才把數(shù)據(jù)從盤上讀到緩沖區(qū),然后再由緩沖區(qū)讀出。關(guān)鍵盡可能使數(shù)據(jù)在緩沖區(qū)停留較長時(shí)間,以降低磁盤I/O次數(shù)。113設(shè)備管理方法與信息化課程第113頁1.緩沖控制塊buf在系統(tǒng)初啟時(shí),關(guān)鍵依據(jù)內(nèi)存大小和系統(tǒng)性能要求分配若干緩沖區(qū)。一個(gè)緩沖區(qū)由兩部分組成:存放數(shù)據(jù)內(nèi)存數(shù)據(jù)結(jié)構(gòu)(普通稱為緩沖區(qū))和一個(gè)緩沖控制塊。緩沖區(qū)和緩沖控制塊是一一對(duì)應(yīng)。系統(tǒng)經(jīng)過緩沖控制塊實(shí)現(xiàn)對(duì)緩沖區(qū)管理。114設(shè)備管理方法與信息化課程第114頁115設(shè)備管理方法與信息化課程第115頁緩沖池共由NBUF(200)個(gè)緩沖區(qū)組成,每個(gè)緩沖區(qū)容量為SBUFSIZE字節(jié)。SBUFSIZE可取兩個(gè)值:512或2048,詳細(xì)值由文件系統(tǒng)類型FSTYPE值而定,在系統(tǒng)生成時(shí)選擇。b_flags反應(yīng)緩沖區(qū)使用情況和I/O方式,如忙或閑、數(shù)據(jù)有效性、“延遲寫”、正在讀/寫、等候緩沖區(qū)空閑等。116設(shè)備管理方法與信息化課程第116頁從buf組成可見,它不但包含了與使用緩沖區(qū)相關(guān)信息,也統(tǒng)計(jì)了I/O請(qǐng)求及其執(zhí)行結(jié)果。所以普通而言,buf既是緩存控制塊,同時(shí)又能夠是針對(duì)該緩存進(jìn)行I/O請(qǐng)求塊。為管理方便,系統(tǒng)還設(shè)置了自由緩存隊(duì)列控制塊bfreelist和進(jìn)程圖像傳送控制塊swbuf。這兩個(gè)塊結(jié)構(gòu)與buf結(jié)構(gòu)相同,但只用部分項(xiàng),其余則棄之不用。117設(shè)備管理方法與信息化課程第117頁2.塊設(shè)備表structiobuf{ intb_flags;/*該設(shè)備隊(duì)列情況標(biāo)志*/ structbuf*b_forw; /*指向本設(shè)備第一個(gè)緩沖區(qū)*/ structbuf*b_back; /*指向本設(shè)備最終一個(gè)緩沖區(qū)*/ structbuf*b_actf; /*指向本設(shè)備I/O請(qǐng)求隊(duì)列中第一個(gè)緩沖區(qū)*/ structbuf*b_actl; /*指向本設(shè)備I/O請(qǐng)求隊(duì)列中最終一個(gè)緩沖區(qū)*/ dev_tb_dev;/*設(shè)備名*/ charb_active; /*設(shè)備正在執(zhí)行一個(gè)I/O請(qǐng)求標(biāo)志*/ chatb_errcnt;/*犯錯(cuò)計(jì)數(shù)*/118設(shè)備管理方法與信息化課程第118頁2.塊設(shè)備表structeblock*io_erec;/*指向塊設(shè)備錯(cuò)誤統(tǒng)計(jì)塊*/intio_nreg;/*設(shè)備存放器個(gè)數(shù)*/physadrio_addr;/*設(shè)備控制狀態(tài)存放器地址*/physadrio_mba;/*MBA(管理開啟代理)配置結(jié)構(gòu)存放器地址*/structiostat*io_stp;/*指向部件I/O統(tǒng)計(jì)塊*/time_tio_start;/*輸入輸出開啟時(shí)間*/intio_s1;/*驅(qū)動(dòng)程序留用位置*/intio_s2;/*驅(qū)動(dòng)程序留用位置*/};119設(shè)備管理方法與信息化課程第119頁3.塊設(shè)備開關(guān)表UNIX系統(tǒng)V為各類塊設(shè)備設(shè)置塊設(shè)備開關(guān)表,存放設(shè)備管理程序入口地址,其結(jié)構(gòu)以下:structbdevsw

{

int(*d_open)();/*打開函數(shù)入口*/

int(*d_close)();/*關(guān)閉函數(shù)入口*/

int(*d_strategy)();/*開啟函數(shù)入口*/

int(*d_print)();/*打印函數(shù)入口*/

};設(shè)備表和設(shè)備開關(guān)表集中了與設(shè)備相關(guān)特征及其管理和使用信息,也表達(dá)了UNIX中把設(shè)備物理特征和使用情況與設(shè)備管理基本方式分隔開來主要思想。120設(shè)備管理方法與信息化課程第120頁5.7.2緩沖管理1.各種緩沖區(qū)管理隊(duì)列系統(tǒng)設(shè)置了各種隊(duì)列對(duì)全部緩沖區(qū)進(jìn)行管理。因?yàn)閎uf統(tǒng)計(jì)了與緩沖區(qū)相關(guān)各種管理信息,所以緩沖區(qū)管理隊(duì)列實(shí)際上是緩存控制塊buf隊(duì)列。(1)自由buf隊(duì)列系統(tǒng)把空閑緩沖區(qū)buf組成空閑buf隊(duì)列,即自由buf隊(duì)列。這個(gè)隊(duì)列是雙向鏈結(jié)構(gòu),隊(duì)首塊為bfreelist,bfreelist和自由buf經(jīng)過av_forw和av_back作為雙向指針,121設(shè)備管理方法與信息化課程第121頁av_forwav_backav_forwav_backav_forwav_backav_forwav_backbfreelistbuf[...]buf[...]buf[...]122設(shè)備管理方法與信息化課程第122頁(2)設(shè)備緩沖區(qū)隊(duì)列設(shè)備緩沖區(qū)隊(duì)列連接全部各類設(shè)備使用過緩沖區(qū),這也是一個(gè)雙向隊(duì)列,buf中b_forw和b_back分別為該隊(duì)列前指針和后指針,頭部為hbuf,共64個(gè)隊(duì)列。b_forwb_backb_forwb_backb_forwb_backb_forwb_backhbufbuf[...]buf[...]buf[...]123設(shè)備管理方法與信息化課程第123頁(2)設(shè)備緩沖區(qū)隊(duì)列一個(gè)緩沖區(qū)被分配用于讀、寫某個(gè)設(shè)備字符塊時(shí),其對(duì)應(yīng)buf就進(jìn)入該設(shè)備設(shè)備buf隊(duì)列,并一直保留在該設(shè)備buf隊(duì)列中,除非被移做它用。不過系統(tǒng)V與第6版有所不一樣,不是每個(gè)塊設(shè)備一個(gè)緩沖隊(duì)列,同一個(gè)塊設(shè)備緩沖區(qū)能夠分布在不一樣隊(duì)列,不一樣設(shè)備緩沖分布均勻,以加緊緩沖區(qū)搜索速度。系統(tǒng)中平均每個(gè)隊(duì)列只不過有兩三個(gè)緩沖區(qū)。這就提升了搜索速度,降低系統(tǒng)開銷。124設(shè)備管理方法與信息化課程第124頁(3)空設(shè)備隊(duì)列(NODEV隊(duì)列)NODEV隊(duì)列是一個(gè)特殊設(shè)備buf隊(duì)列。當(dāng)系統(tǒng)需要緩存,但它不與特定設(shè)備字符塊相關(guān)聯(lián)時(shí),將分配到緩存控制塊buf送入NODEV隊(duì)列。其隊(duì)列控制塊也是bfreelist,但它與自由buf隊(duì)列不一樣,用隊(duì)首、隊(duì)尾指針是b_forw和b_back。125設(shè)備管理方法與信息化課程第125頁(3)空設(shè)備隊(duì)列(NODEV隊(duì)列)在UNIX中有兩種情況將buf送入NODEV隊(duì)列。一個(gè)是在進(jìn)程執(zhí)行一個(gè)目標(biāo)程序開始階段,它用緩存存放傳向該目標(biāo)程序參數(shù);另一個(gè)情況是用緩存存放文件系統(tǒng)資源管理塊。在系統(tǒng)初啟時(shí),全部空閑緩沖區(qū)buf既在自由buf隊(duì)列,又在NODEV設(shè)備buf隊(duì)列中126設(shè)備管理方法與信息化課程第126頁(4)設(shè)備I/O請(qǐng)求隊(duì)列每個(gè)塊設(shè)備有一個(gè)設(shè)備I/O請(qǐng)求隊(duì)列,單向連接,頭部為iobuf,b_actf和b_actl分別指向隊(duì)首和隊(duì)尾。127設(shè)備管理方法與信息化課程第127頁av_forwav_backav_forwav_backav_forwav_backav_forwav_backbfreelistbuf[...]buf[...]buf[...]b_backb_forwb_forwb_backb_forwb_backb_forwb_backbuf[...]buf[...]buf[...]自由buf隊(duì)列空設(shè)備隊(duì)列128設(shè)備管理方法與信息化課程第128頁b_actfb_actlav_forwav_backav_forwav_backav_forwav_backiobufbuf[...]buf[...]buf[...]b_backb_forwb_forwb_backb_forwb_backb_forwb_backbuf[...]buf[...]buf[...]設(shè)備I/O請(qǐng)求隊(duì)列設(shè)備緩沖區(qū)隊(duì)列129設(shè)備管理方法與信息化課程第129頁4個(gè)隊(duì)列所屬緩沖區(qū)之間關(guān)系總結(jié)—任何一個(gè)緩沖區(qū)在穩(wěn)定狀態(tài)下,同時(shí)屬于兩個(gè)隊(duì)列?!谧杂蒪uf隊(duì)列中緩沖區(qū)可能同時(shí)屬于NODEV隊(duì)列(未分配給指定設(shè)備),也可能屬于設(shè)備buf隊(duì)列(已經(jīng)分配給某設(shè)備用過,因I/O結(jié)束而釋放)。—在設(shè)備buf隊(duì)列中緩沖區(qū),可能掛在自由buf隊(duì)列(已用過被釋放),也可能掛在設(shè)備I/O請(qǐng)求隊(duì)列(正在使用)。—在NODEV隊(duì)列中緩沖區(qū)若已被釋放必定在自由buf隊(duì)列中,而在設(shè)備I/O請(qǐng)求隊(duì)列中緩沖區(qū)則必定屬于設(shè)備buf隊(duì)列130設(shè)備管理方法與信息化課程第130頁2.緩沖區(qū)管理算法(1)當(dāng)分配一個(gè)緩沖區(qū)用于某個(gè)設(shè)備讀寫操作時(shí),要求被分配緩沖區(qū)是最久未使用。詳細(xì)實(shí)現(xiàn)情況是:當(dāng)要求分配一個(gè)緩沖區(qū)時(shí),系統(tǒng)從自由buf隊(duì)列隊(duì)首取出一個(gè)空閑buf,并把buf標(biāo)志位b_flags置為“忙”,因?yàn)閎uf同時(shí)存在于某個(gè)設(shè)備buf隊(duì)列中,這時(shí)要從原設(shè)備buf隊(duì)列中取出這個(gè)buf,將其插入申請(qǐng)?jiān)摼彌_區(qū)設(shè)備buf隊(duì)列中。所以,當(dāng)一個(gè)緩沖區(qū)剛被分配用于讀、寫某塊設(shè)備上某字符塊時(shí),它b_flags標(biāo)志位被置為“忙”,它一定位于對(duì)應(yīng)設(shè)備buf隊(duì)列中,而不在自由buf隊(duì)列中。131設(shè)備管理方法與信息化課程第131頁(2)當(dāng)一個(gè)讀/寫操作完成后,就要求馬上釋放所占用緩沖區(qū),把這個(gè)緩沖區(qū)bufb_flags標(biāo)志位置為“空閑”,并加入自由buf隊(duì)列隊(duì)尾,表示它能夠被考慮移作它用。這個(gè)buf仍留在原設(shè)備buf隊(duì)列中,也就是說一個(gè)緩沖區(qū)buf處于空閑狀態(tài)時(shí),總是同時(shí)存在于兩個(gè)隊(duì)列中,一是自由buf隊(duì)列,二是對(duì)應(yīng)設(shè)備buf隊(duì)列。132設(shè)備管理方法與信息化課程第132頁所謂讀操作結(jié)束,就是將所需字符塊從指定設(shè)備上讀入緩沖區(qū),并傳送到用戶指定內(nèi)存區(qū)。若該字符塊已被讀到某個(gè)緩沖區(qū)中,則不需對(duì)物理設(shè)備進(jìn)行讀操作,只是將這個(gè)緩沖區(qū)信息傳到指定內(nèi)存區(qū)。寫操作結(jié)束是指把某個(gè)內(nèi)存區(qū)信息傳到緩沖區(qū),然后把緩沖區(qū)信息寫到指定物理設(shè)備上去。但當(dāng)一次寫操作未寫滿緩沖區(qū)時(shí),就采取“延遲寫”,即不急于寫到設(shè)備上去,而是把這個(gè)緩沖區(qū)標(biāo)志位置上延遲寫標(biāo)志,表示詳細(xì)寫操作延遲到以后某個(gè)時(shí)機(jī)進(jìn)行,并把這個(gè)buf掛到自由buf隊(duì)尾,同時(shí)留在這個(gè)設(shè)備buf隊(duì)列中。133設(shè)備管理方法與信息化課程第133頁(3)好處:其一,在自由buf隊(duì)列中緩沖區(qū)中,只要未重新分配使用,其內(nèi)容不會(huì)改變。所以若再次需使用這個(gè)緩沖區(qū)信息,只是簡單地從自由buf隊(duì)列中抽出對(duì)應(yīng)buf,仍按原狀使用緩沖區(qū)信息,從而降低了對(duì)設(shè)備I/O操作,提升了文件系統(tǒng)工作效率。其二,若將一個(gè)緩沖區(qū)移作他用,則只需從自由buf隊(duì)列和原設(shè)備buf隊(duì)列中同時(shí)抽出,插入新設(shè)備buf隊(duì)列。這就實(shí)現(xiàn)了進(jìn)程對(duì)有限緩沖區(qū)共享。134設(shè)備管理方法與信息化課程第134頁(4)為了使釋放緩沖區(qū)盡可能長地保留原來使用信息,每次釋放緩沖區(qū)時(shí)總是將其buf插入到自由buf隊(duì)列隊(duì)尾。分配緩沖區(qū)時(shí),總是從自由buf隊(duì)列隊(duì)首抽出一個(gè)空閑buf(FIFO)。(5)而且當(dāng)一個(gè)buf在自由隊(duì)列內(nèi)移動(dòng)時(shí),只要有按原狀使用需要時(shí),就馬上從自由buf隊(duì)列中抽出,使用完成后釋放該緩沖區(qū),又將其buf插入到自由buf隊(duì)列隊(duì)尾。這就確保了在全部自由緩沖區(qū)中被重新分配是最久未使用,且準(zhǔn)確地實(shí)現(xiàn)了LRU算法。135設(shè)備管理方法與信息化課程第135頁(6)已經(jīng)設(shè)置“延遲寫”標(biāo)志緩存,即使已經(jīng)在自由buf隊(duì)列中,實(shí)際上其內(nèi)容還未寫到對(duì)應(yīng)設(shè)備上。當(dāng)它已經(jīng)移到自由buf隊(duì)列隊(duì)首準(zhǔn)備移作他用時(shí),不應(yīng)將其按普通自由buf處理,即不能馬上對(duì)它進(jìn)行重新分配,而是要提出I/O請(qǐng)求,方便將其內(nèi)容寫到對(duì)應(yīng)設(shè)備指定字符塊上。為此將它從自由buf隊(duì)列中抽,而只留在原設(shè)備buf隊(duì)列中。寫操作結(jié)束后,這種緩存又被釋放進(jìn)入自由buf隊(duì)列末尾(也有插到隊(duì)列首),同時(shí)仍保留在原設(shè)備buf隊(duì)列中。136設(shè)備管理方法與信息化課程第136頁3.緩沖區(qū)分配和釋放當(dāng)進(jìn)程想從特定盤塊上讀取數(shù)據(jù)或打算把數(shù)據(jù)寫到特定盤塊上時(shí),關(guān)鍵要查看該塊是否已在緩沖池中。假如未在,則為該塊分配一個(gè)空閑緩沖區(qū)。輸入:文件系統(tǒng)號(hào)(即邏輯設(shè)備號(hào))dev,盤塊號(hào)blkno輸出:bp——可供該盤塊使用buf(被封鎖)getblk(dev,blkno){

while(未找到對(duì)應(yīng)buf){

if(盤塊在設(shè)備buf隊(duì)列中){

if(buf忙){137設(shè)備管理方法與信息化課程第137頁

sleep(buf成為空閑);

continue;/*回到while循環(huán)*/ } 標(biāo)識(shí)buf忙; 從自由buf隊(duì)列中移走該buf;

return(buf);}else{/*盤塊不在設(shè)備buf隊(duì)列中*/

if(自由隊(duì)列中已無buf){

sleep(任一buf成為空閑);

continue;/*回到while循環(huán)*/ } 從自由隊(duì)列中移走該buf;

if(buf標(biāo)志為“延遲寫”){ 異步寫buf到對(duì)應(yīng)設(shè)備上;

continue;/*回到while循環(huán)*/} 138設(shè)備管理方法與信息化課程第138頁 從原來設(shè)備buf隊(duì)列中移走該buf; /*找到空閑buf*/ 把它放在新設(shè)備buf隊(duì)列中;

return(buf); } }}139設(shè)備管理方法與信息化課程第139頁在函數(shù)getblk中,把一個(gè)緩沖區(qū)分配給磁盤塊時(shí)可能出現(xiàn)5種經(jīng)典情況。①關(guān)鍵發(fā)覺該塊在它設(shè)備隊(duì)列中,而且它緩沖區(qū)是空閑。②關(guān)鍵在設(shè)備隊(duì)列中找不到該塊,所以,它從自由隊(duì)列中分配一個(gè)緩沖區(qū)。③在第二種情形時(shí),在自由隊(duì)列中找到一個(gè)標(biāo)有“延遲寫”緩沖區(qū),關(guān)鍵必須把“延遲寫”緩沖區(qū)內(nèi)容寫到磁盤上,并分配另一個(gè)緩沖區(qū)。140設(shè)備管理方法與信息化課程第140頁④關(guān)鍵在設(shè)備隊(duì)列中找不到該塊,而且自由隊(duì)列已空。⑤關(guān)鍵在設(shè)備隊(duì)列中找到該塊,但它緩沖區(qū)當(dāng)前正忙。當(dāng)關(guān)鍵用完緩沖區(qū)后,要把它釋放,加入到自由隊(duì)列中。141設(shè)備管理方法與信息化課程第141頁釋放算法所用函數(shù)brelse算法以下:輸入:bp——要釋放緩沖區(qū)輸出:無brelse(bp){ 喚醒全部等候自由隊(duì)列成為“非空”進(jìn)程; 喚醒全部等候本buf成為空閑進(jìn)程; 提升處理機(jī)執(zhí)行級(jí)別,屏蔽中止; if(buf內(nèi)容有效且不是過時(shí)) 把本buf放入自由隊(duì)列末尾;/*以備未來使用*/ else/*如偶然碰到犯錯(cuò)*/ 把本buf放入自由隊(duì)列開頭;/*以后極少使用它*/ 降低處理機(jī)執(zhí)行級(jí)別,開放中止; 解除封鎖(buf);}142設(shè)備管理方法與信息化課程第142頁5.7.3塊設(shè)備管理UNIX系統(tǒng)對(duì)塊設(shè)備主要有兩種使用方式:第一個(gè)是文件系統(tǒng)使用,能夠說這是塊設(shè)備管理和文件系統(tǒng)之間界面,每次I/O請(qǐng)求讀、寫一字符塊,它使用前面介紹緩存技術(shù),方便為文件系統(tǒng)提供有效服務(wù);第二種是進(jìn)程圖像在內(nèi)存和盤交換區(qū)之間進(jìn)行傳送時(shí)使用,這種傳送不經(jīng)過緩存進(jìn)行,每次I/O請(qǐng)求讀、寫字節(jié)數(shù)按圖像長度確定。在系統(tǒng)中,這種操作進(jìn)行得相當(dāng)頻繁。143設(shè)備管理方法與信息化課程第143頁1.讀盤塊字符塊輸入是指從盤上讀字符塊,它有兩種:一個(gè)是基本讀入方式,另一個(gè)增加了預(yù)讀操作。前者是讀字符塊基本工作過程;后者是一個(gè)提升中央處理機(jī)和塊設(shè)備工作并行程度所采取技術(shù)?;咀x入方式是從塊設(shè)備上用同時(shí)方式將一個(gè)指定字符塊讀入緩存,實(shí)施這一操作程序是bread()144設(shè)備管理方法與信息化課程第144頁bread算法/*基本讀盤塊*/輸入:邏輯設(shè)備號(hào)dev,塊號(hào)blkno輸出:bp—指向包含數(shù)據(jù)緩沖區(qū)bread(dev,blkno){ 為邏輯塊找一個(gè)緩沖區(qū)(getblk算法);

if(緩沖區(qū)數(shù)據(jù)有效)

return(buf); 開啟磁盤讀;

sleep(盤塊讀完);/*等候盤I/O完成中止*/

return(buf);}145設(shè)備管理方法與信息化課程第145頁預(yù)讀盤塊算法當(dāng)一個(gè)進(jìn)程次序讀取文件時(shí),為加緊它前進(jìn)速度,提升CPU和塊設(shè)備工作并行程度,關(guān)鍵還提供了預(yù)讀盤塊程序breada。其實(shí)現(xiàn)思想是:(1)關(guān)鍵檢驗(yàn)第一塊是否在緩沖區(qū)中,如不在,則調(diào)用磁盤驅(qū)動(dòng)程序讀該塊。(2)如第二塊不在緩沖區(qū)中,關(guān)鍵指示盤驅(qū)動(dòng)程序異步讀它。然后進(jìn)程睡眠,等候第一塊I/O完成。146設(shè)備管理方法與信息化課程第146頁預(yù)讀盤塊算法(3)該進(jìn)程被喚醒后就返回第一塊buf,而不論第二塊是否讀完。(4)以后,當(dāng)?shù)诙K讀完后,產(chǎn)生盤I/O中止,由中止處理程序識(shí)別異步讀完成,并釋放對(duì)應(yīng)buf,使執(zhí)行預(yù)讀進(jìn)程能直接從緩沖區(qū)中取走第二塊數(shù)據(jù)。在預(yù)讀開始,如第一塊已在緩沖區(qū),則關(guān)鍵馬上檢驗(yàn)第二塊是否在緩沖區(qū),然后作如上所述對(duì)應(yīng)處理。147設(shè)備管理方法與信息化課程第147頁2.寫盤塊字符塊輸出是將一個(gè)字符塊緩存內(nèi)容寫到一個(gè)指定塊設(shè)備指定盤塊上去。從是否需要等候I/O操作結(jié)束角度考慮,字符塊輸出有同時(shí)和異步兩種工作方式;從提出I/O請(qǐng)求時(shí)間角度考慮,字符塊輸出有延遲和非延遲兩種處理方式。字符塊輸出普通采取異步方式,也就是進(jìn)程提出輸出請(qǐng)求后,不等候輸出操作結(jié)束就繼續(xù)執(zhí)行。不論同

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論