07748操作系統(tǒng)實用教程5設(shè)備管理_第1頁
07748操作系統(tǒng)實用教程5設(shè)備管理_第2頁
07748操作系統(tǒng)實用教程5設(shè)備管理_第3頁
07748操作系統(tǒng)實用教程5設(shè)備管理_第4頁
07748操作系統(tǒng)實用教程5設(shè)備管理_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

操作系統(tǒng)整體結(jié)構(gòu)第5章設(shè)備管理首先回顧操作系統(tǒng)的總體構(gòu)架,從而定位設(shè)備管理所處地位然后學(xué)習(xí)設(shè)備管理的基本原理最后了結(jié)LINUX設(shè)備管理實例操作系統(tǒng)的基本組織結(jié)構(gòu)進程與資源管理文件管理存儲管理設(shè)備管理處理機主存設(shè)備操作系統(tǒng)計算機硬件Linux文件系統(tǒng)設(shè)備管理引言輸入/輸出硬件輸入/輸出軟件LINUX輸入/輸出系統(tǒng)概述小結(jié)引言硬件設(shè)備與控制軟件之間的聯(lián)系:設(shè)備—控制器—內(nèi)存映射地址—處理機 驅(qū)動程序—I/O管理程序—文件系統(tǒng)—用戶的I/O請求設(shè)備管理的主要任務(wù)設(shè)備分配實現(xiàn)數(shù)據(jù)傳輸提供用戶使用接口提高并行操作度設(shè)備管理程序提供的功能為進程管理提供接口(將進程的請求轉(zhuǎn)給設(shè)備管理)實施設(shè)備分配(設(shè)備分類、調(diào)度算法、等待隊列)實現(xiàn)設(shè)備之間以及設(shè)備與CPU之間并行操作(DMA、通道)緩沖區(qū)管理輸入/輸出硬件電子設(shè)備設(shè)備分類字符設(shè)備塊設(shè)備設(shè)備控制器DMA存儲器直接存取通道磁盤控制器打印機控制器其他控制器CPU內(nèi)存控制器-設(shè)備接口打印機磁盤驅(qū)動器圖5-5CPU和控制器通信的單總線模型系統(tǒng)總線磁帶磁帶格式磁帶頭部反光片磁帶尾部反光片記錄記錄IRGIRG塊記錄格式記錄1記錄2記錄3記錄4IRGIRG800字節(jié)磁盤扇區(qū)磁道

單磁盤片表面的劃分旋轉(zhuǎn)方向讀/寫磁頭臂移動方向移動頭磁盤示意圖磁盤設(shè)備結(jié)構(gòu)通道方式的數(shù)據(jù)傳送結(jié)構(gòu)I/O控制器I/O控制器I/O控制器I/O控制器I/O控制器I/O控制器I/O控制器字節(jié)多路通道選擇通道成組多路通道磁盤磁盤磁帶磁帶終端終端終端CPU內(nèi)存總線DMADMA控制器CPU內(nèi)存I/O設(shè)備數(shù)據(jù)中斷位啟動位控制狀態(tài)寄存器數(shù)據(jù)緩沖寄存器內(nèi)存地址寄存器傳送字節(jié)數(shù)寄存器DMA方式的傳送結(jié)構(gòu)startint輸入/輸出軟件輸入/輸出軟件的作用數(shù)據(jù)傳送控制方式程序直接控制方式中斷方式DMA方式通道控制方式中斷處理技術(shù)設(shè)備驅(qū)動程序與設(shè)備無關(guān)的I/O軟件(文件系統(tǒng)功能)用戶層的輸入/輸出軟件(使用read/write)設(shè)備分配

緩沖區(qū)管理I/O進程控制輸入/輸出軟件的作用進行I/O調(diào)用:格式化I/O執(zhí)行I/O操作命名、保護、阻塞、緩沖、分配I/O結(jié)束時,喚醒設(shè)備服務(wù)子程序設(shè)置設(shè)備寄存器、檢測狀態(tài)4-用戶進程3-設(shè)備無關(guān)軟件2-設(shè)備驅(qū)動程序硬件設(shè)備服務(wù)子程序1-中斷處理程序I/O請求I/O應(yīng)答程序直接控制方式否外圍設(shè)備做接收或發(fā)送數(shù)據(jù)準備接收到start命令標志觸發(fā)器置“done”等待CPU來的下條指令準備完畢?是否CPU發(fā)start命令等待執(zhí)行下條指令開始數(shù)據(jù)傳送設(shè)備標志觸發(fā)器為done”?是(a)(b)中斷控制方式的傳送結(jié)構(gòu)I/O控制器1I/O控制器nI/O設(shè)備1I/O設(shè)備n地址線數(shù)據(jù)線控制線intCPU內(nèi)存start啟動位中斷位信號線控制狀態(tài)寄存器數(shù)據(jù)緩沖寄存器中斷控制方式的處理過程接收到CPU發(fā)來的start指令準備數(shù)據(jù)并將其置入緩沖寄存器緩沖寄存器滿嗎?控制器發(fā)中斷信號向設(shè)備發(fā)start指令將中斷允許位置1調(diào)度程序調(diào)度其他進程其他進程執(zhí)行收到中斷信號了嗎?中斷處理被中斷進程執(zhí)行否否是設(shè)備CPUDMA方式的數(shù)據(jù)傳送處理過程否CPU發(fā)start命令內(nèi)存地址內(nèi)存始址寄存器傳送字節(jié)數(shù)字節(jié)計數(shù)器允許中斷位與啟動位置1當前進程被阻塞,調(diào)度程序調(diào)度其他進程運行被調(diào)度的進程執(zhí)行接收到中斷信號嗎?是轉(zhuǎn)中斷處理設(shè)備啟動設(shè)備準備數(shù)據(jù)DMA控制器接收到start指令緩沖寄存器內(nèi)容入內(nèi)存改變傳送字節(jié)數(shù)計數(shù)器與內(nèi)存地址寄存器內(nèi)容否傳送字節(jié)數(shù)=0?嗎?數(shù)據(jù)入數(shù)據(jù)緩沖寄存器發(fā)中斷信號停止I/O操作是通道控制方式的描述過程從CPU執(zhí)行的角度來描述通道控制方式:Channelcontrolprocedure:repeatIR←M[pc]pc←pc+1execute(IR)ifrequireaccessingwithI/ODevicethenCommand(I/Ooperation,AddressofI/Odevice,channel)fiifI/ODoneInteruptthenCallInterruptprocessingcontrolfiuntilmachinehaltInterruptprocessingcontrolprocedure

中斷處理過程關(guān)中斷保存被中斷現(xiàn)場分析中斷原因轉(zhuǎn)中斷處理子程序執(zhí)行中斷處理子程序恢復(fù)現(xiàn)場開中斷返回中斷點用戶進程請求設(shè)備服務(wù)的流程

驅(qū)動程序所處地位用戶進程文件系統(tǒng)設(shè)備驅(qū)動程序設(shè)備控制器設(shè)備本身設(shè)備無關(guān)軟件的功能(設(shè)備文件管理)對設(shè)備程序的統(tǒng)一接口設(shè)備命名設(shè)備保護提供一個獨立于設(shè)備的邏輯塊(數(shù)據(jù)塊大?。┚彌_塊設(shè)備的存儲分配分配和釋放獨占設(shè)備錯誤報告用戶層輸入/輸出軟件用戶層I/O軟件包含用于I/O操作的庫例程例如:read(fd,buf,nbytes)是讀文件的系統(tǒng)調(diào)用,由它調(diào)用的庫函數(shù)read將和用戶程序連接在一起,放在可執(zhí)行程序中。

Spooling系統(tǒng)“SimultaneousPeripheralOperationOn-Line”Spooling是在多道程序系統(tǒng)中處理獨占設(shè)備的一種方法。例如:一般的打印機是一種獨占資源,每次只能有一個程序使用打印機,但如果一個進程打開打印機而不使用它,那么其它的進程都無法打印。

創(chuàng)建一個特殊的守護進程(daemon)以及一個特殊的目錄,稱為Spooling目錄。這時,打印一個文件之前,進程首先產(chǎn)生完整的待打印文件并將其放在Spooling目錄下。當進程把該文件放到Spooling系統(tǒng)中之后就可以認為打印過程已經(jīng)完成,雖然打印機還沒有進行該文件的打印,因此也稱為打印的“假脫機”過程。而整個的打印作業(yè)由該守護進程進行處理,只有該守護進程能夠真正使用打印機設(shè)備文件。通過禁止用戶直接使用打印機設(shè)備文件就解決了打印機的獨占問題。設(shè)備分配采用的數(shù)據(jù)結(jié)構(gòu)

設(shè)備類型設(shè)備標識設(shè)備忙/閑標記COCT指針設(shè)備等待隊列首設(shè)備等待隊列尾驅(qū)動程序地址控制器標識控制忙/閑標記CHCT指針控制器等待隊列首控制器等待隊列尾┇通道標識通道忙/閑標記通道等待隊列首通道等待隊列尾┇表目1┇表目i┇設(shè)備類型設(shè)備標識獲得設(shè)備的進程DCT指針

系統(tǒng)設(shè)備表STDCOCT

CHCT

DCT

設(shè)備分配流程圖進程P等待控制器由進程P來的I/O請求搜索SDT找到DCT指針按分配策略選取占據(jù)該設(shè)備的進程進程P被選中?查DCT該設(shè)備忙?檢查該設(shè)備分配給進程P的安全性安全嗎?該設(shè)備分配給進程PA按分配策略選取占據(jù)該設(shè)備的進程進程P按分配策略入I/O等待隊列進程P等待該設(shè)備空閑搜索DCT指針,找到COCT指針控制器忙嗎?A分配控制器給進程P搜索COCT找到CHCT指針通道忙?分配通道給進程P啟動I/O進程P等待通道是是是是否否否是否否緩沖區(qū)管理技術(shù)單緩沖區(qū)多緩沖區(qū)緩沖池

設(shè)備號數(shù)據(jù)塊號緩沖區(qū)號互斥標示位鏈指針::………空緩沖區(qū)inout緩沖區(qū)操作函數(shù):getbuf、putbuf等等緩沖首部I/O控制中斷原因分析喚醒中斷處理程序I/O請求設(shè)備設(shè)備分配程序緩沖區(qū)管理中斷響應(yīng)啟動I/O指令、設(shè)備驅(qū)動程序或通道程序I/O控制I/O控制的實現(xiàn)I/O控制過程在系統(tǒng)中可以按三種方式實現(xiàn)作為請求I/O操作的進程的一部分實現(xiàn)作為當前進程的一部分實現(xiàn)I/O控制由專門的系統(tǒng)進程——

I/O進程完成:每類(個)設(shè)備設(shè)一專門的I/O進程,且該進程只能在系統(tǒng)態(tài)下執(zhí)行整個系統(tǒng)設(shè)一I/O進程,全面負責系統(tǒng)的數(shù)據(jù)傳送工作每類(個)設(shè)備設(shè)一個專門的I/O進程,但該進程既可在用戶態(tài)也可在系統(tǒng)態(tài)下執(zhí)行小結(jié)設(shè)備管理的基本過程設(shè)備管理用的數(shù)據(jù)結(jié)構(gòu)通道、控制器、DMA、中斷、緩沖區(qū)、數(shù)據(jù)傳送控制方式主設(shè)備號、次設(shè)備號(對應(yīng)驅(qū)動程序及其參數(shù))設(shè)備分類設(shè)備分配算法I/O控制LINUX輸入/輸出系統(tǒng)概述Linux輸入/輸出的過程概述

設(shè)備驅(qū)動程序基礎(chǔ)

Linux的中斷處理設(shè)備驅(qū)動程序的框架字符設(shè)備驅(qū)動程序塊設(shè)備驅(qū)動程序概述設(shè)備無關(guān)軟件標準設(shè)備接口(read,write,open,close,…)設(shè)備驅(qū)動程序設(shè)備文件(在/dev目錄下)輸入/輸出請求出錯返回Linux文件系統(tǒng)的層次結(jié)構(gòu)返回設(shè)備驅(qū)動分層結(jié)構(gòu)返回設(shè)備驅(qū)動程序基礎(chǔ)總線: CPU和I/O設(shè)備是通過總線連接起來。

PC機常見總線有ISA,PCI等等。I/O地址空間: 所有設(shè)備的寄存器組成。 察看文件:/proc/ioportsI/O數(shù)據(jù)傳輸: 忙等待、中斷方式、DMA方式設(shè)備分類: 字符設(shè)備、塊設(shè)備設(shè)備名:

主設(shè)備號(驅(qū)動程序)、次設(shè)備號(驅(qū)動程序的參數(shù))設(shè)備文件: 在/dev目錄下,在內(nèi)核中由file結(jié)構(gòu)表示。設(shè)備驅(qū)動程序接口:由file_operations數(shù)據(jù)結(jié)構(gòu)完成。文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)返回設(shè)備號例如:mknod()創(chuàng)建設(shè)備文件,需要提供設(shè)備號structfile_operationschardev_fops={open:chardev_open,release:chardev_release,read:chardev_read,write:chardev_write,};structfile_operations{…loff_t(*llseek)(structfile*,loff_t,int);ssize_t(*read)(structfile*,char*,size_t,loff_t*);ssize_t(*write)(structfile*,char*,size_t,loff_t*);int(*open)(structinode*,structfile*);int(*release)(structinode*,structfile*);int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong)…}驅(qū)動程序接口(調(diào)用入口點)Linux的中斷處理1、中斷類型外中斷,陷阱(INTn),異常。2、睡眠與喚醒驅(qū)動程序啟動設(shè)備后,進入睡眠;設(shè)備完成I/O后,向CPU發(fā)中斷請求;CPU根據(jù)中斷請求找到睡眠的驅(qū)動程序,并喚醒繼續(xù)處理。3、中斷共享中斷向量表有限,對于外中斷來說,其中斷向量表項是共享的。因此,共享項上有中斷請求隊列。4、中斷服務(wù)程序的上部和下部處理(bottom-half)上部執(zhí)行快速(關(guān)中斷),下部執(zhí)行費時(開中斷)。Linux系統(tǒng)I/O層次結(jié)構(gòu)設(shè)備驅(qū)動程序向下與設(shè)備控制器接口:定義如何與設(shè)備進行通信的協(xié)議(設(shè)備控制命令集合)設(shè)備驅(qū)動程序向上則面對文件系統(tǒng),由文件系統(tǒng)為內(nèi)核其他部分提供統(tǒng)一接口:入口調(diào)用集合Operations:(read、write等等)設(shè)備驅(qū)動程序框架一個完整的設(shè)備驅(qū)動程序包括五個部分:1、設(shè)備驅(qū)動程序的注冊與注銷(與系統(tǒng)引導(dǎo)的接口)注冊:在系統(tǒng)初始化/驅(qū)動程序模塊加載時完成,建立了與文件系統(tǒng)的接口,文件系統(tǒng)可根據(jù)注冊資料建立文件操作與具體設(shè)備驅(qū)動程序的映射關(guān)系。注銷:在系統(tǒng)關(guān)閉/驅(qū)動程序模塊卸載時完成2、設(shè)備的打開與關(guān)閉設(shè)備首先要打開才能讀寫,完成之后及時釋放,針對不同設(shè)備有不同操作3、設(shè)備的讀寫操作在讀寫過程中,設(shè)備可能采用查詢或者中斷的方式來控制數(shù)據(jù)傳輸,針對不同的數(shù)據(jù)傳輸控制方式,驅(qū)動程序采取不同的管理方式實現(xiàn)具體的數(shù)據(jù)傳輸4、設(shè)備的控制操作5、設(shè)備的中斷處理或者查詢處理設(shè)備驅(qū)動程序代碼功能驅(qū)動程序的注冊與注銷字符設(shè)備用:register_chrdev向內(nèi)核注冊,unregister_chrdev從內(nèi)核注銷塊設(shè)備用:register_blkdev()向內(nèi)核注冊,unregister_blkdev從內(nèi)核注銷設(shè)備的打開與釋放各自的open()和release()設(shè)備的讀寫各自的read()和write設(shè)備的控制操作各自的ioctl(),例如軟盤彈出。設(shè)備的中斷和忙等待查詢當設(shè)備不支持中斷時讀寫采用忙等待查詢設(shè)備狀態(tài)。字符設(shè)備驅(qū)動程序并口打印設(shè)備驅(qū)動程序與內(nèi)核接口Staticstructfile_operationslp_fops并口打印設(shè)備驅(qū)動程序與打印機設(shè)備接口Structlp_structlp_table注冊與注銷register_chrdev()unregister_chrdev()structfile_operationschardev_fops={open:chardev_open,

溫馨提示

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

評論

0/150

提交評論