os09設(shè)備管理課件_第1頁
os09設(shè)備管理課件_第2頁
os09設(shè)備管理課件_第3頁
os09設(shè)備管理課件_第4頁
os09設(shè)備管理課件_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、os09設(shè)備管理課件第五章 設(shè)備管理著重于管理的軟件部分設(shè)備驅(qū)動程序和中斷處理程序os09設(shè)備管理課件種類繁多的I/O設(shè)備n以信息交換的單位分類塊設(shè)備字符設(shè)備n按設(shè)備的共享屬性分類獨占設(shè)備共享設(shè)備虛擬設(shè)備os09設(shè)備管理課件os09設(shè)備管理課件I/O系統(tǒng)中的基本概念n總線(ISA、PCI、SCSI、USB)n端口n設(shè)備控制器os09設(shè)備管理課件一個典型的一個典型的PCI總線系統(tǒng)總線系統(tǒng)os09設(shè)備管理課件PC機的I/O指令與I/O空間nIN指令將外部I/O設(shè)備的數(shù)據(jù)傳入到AL、AX或EAX。nOUT指令傳送AL 、AX或EAX的數(shù)據(jù)到外部的I/O設(shè)備。nIBM PC用16位端口地址訪問它的I/

2、O空間。PC的I/O空間放在I/O端口為0000H03FFH的地方,但也有些適配卡使用的I/O地址可能超過03FFH。nIBM PC機提供了外部設(shè)備的抽象接口,并將其固化在BIOS(基本輸入/輸出系統(tǒng))中。os09設(shè)備管理課件常用輸入常用輸入/輸出設(shè)備端口輸出設(shè)備端口os09設(shè)備管理課件設(shè)備控制器n在對設(shè)備的操作中,需要持續(xù)地注意設(shè)備地狀態(tài)。如果軟件想要直接控制設(shè)備,需要在操作中不間斷地監(jiān)控設(shè)備的詳細操作狀態(tài)。這種監(jiān)控大多是簡單地觀察狀態(tài)、提供詳細命令、修正小的錯誤等。這就是設(shè)備控制器要做的第二件事(將設(shè)備連接到總線是第一件事)n接口設(shè)計的目標就是使軟件能操作設(shè)備(經(jīng)由控制器),并能使其行為與

3、設(shè)備同步。os09設(shè)備管理課件busydone錯誤碼busy done00空閑01完成10工作11未定義邏邏 輯輯狀態(tài)狀態(tài)數(shù)據(jù)0命令命令數(shù)據(jù)1數(shù)據(jù)n-1概念化的設(shè)備控制器接口os09設(shè)備管理課件I/O控制方式n在CPU和設(shè)備之間完成數(shù)據(jù)交換,主要有三種方式輪詢中斷DMAos09設(shè)備管理課件應(yīng)用程序內(nèi)I/O與CPU的交迭執(zhí)行n應(yīng)用程序員希望單個的進程(線程)具有串行執(zhí)行語義:read ( dev_ID, “%d”, x );y= f(x);讀指令必須在下一條指令執(zhí)行前完成。從進程的角度看,虛擬機要等候設(shè)備完成I/O操作后才能執(zhí)行賦值語句。os09設(shè)備管理課件多個線程間I/O與CPU的交迭執(zhí)行n無

4、論何時一個單線程執(zhí)行I/O操作,它會將CPU讓給另一個線程執(zhí)行。os09設(shè)備管理課件使用輪詢的直接I/On由CPU負責確定I/O操作何時完成,并在機器主存與設(shè)備控制器數(shù)據(jù)寄存器間進行數(shù)據(jù)傳送。nCPU在向控制器發(fā)出一條I/O命令后,同時置busy位為1,然后CPU不斷地循環(huán)檢測busy位,直至busy位為0os09設(shè)備管理課件n空閑:軟件可以放置一個命令到命令寄存器,激活設(shè)備。n新的I/O命令的出現(xiàn)會引起控制器將busy設(shè)為1(工作),并開始工作。利用數(shù)據(jù)寄存器完成數(shù)據(jù)的輸入和輸出,進程通過檢查狀態(tài)寄存器來檢測操作狀態(tài)。n當I/O操作完成后(成功或失?。?,設(shè)備控制器清除busy標志位,而置do

5、ne標志位(完成) 。當完成讀操作后,設(shè)備會將數(shù)據(jù)拷貝到數(shù)據(jù)寄存器;當完成寫操作后,數(shù)據(jù)會從控制器的數(shù)據(jù)寄存器拷貝到設(shè)備中。n如果在寫操作后,設(shè)備的標志位均為0,那么就可以寫新數(shù)據(jù)到控制器的數(shù)據(jù)寄存器;如果是從設(shè)備讀數(shù)據(jù),軟件從控制器讀取數(shù)據(jù)后,控制器清done位,表明設(shè)備空閑。os09設(shè)備管理課件read (device, )數(shù) 據(jù)讀函數(shù)寫函數(shù)設(shè)備控制器命令狀態(tài)數(shù) 據(jù)硬件接口系統(tǒng)接口1、應(yīng)用進程請求讀操作2、設(shè)備驅(qū)動程序查詢狀態(tài)寄存器,確定設(shè)備是否空閑;如果設(shè)備忙,則驅(qū)動程序循環(huán)等待知道設(shè)備空閑。3、驅(qū)動程序把輸入命令存入控制器命令寄存器,啟動設(shè)備(設(shè)置狀態(tài)位)。4、驅(qū)動程序通過反復讀取狀態(tài)

6、寄存器的值等待設(shè)備操作完成。5、驅(qū)動程序拷貝控制器數(shù)據(jù)寄存器的內(nèi)容到用戶進程地址空間。os09設(shè)備管理課件中斷I/On中斷請求(由設(shè)備與CPU的中斷連線)n中斷向量定位中斷請求到對應(yīng)的中斷處理程序中斷優(yōu)先級可屏蔽中斷與不可屏蔽中斷n中斷處理程序負責處理中斷請求n中斷機制可以用于實現(xiàn)異常系統(tǒng)調(diào)用n中斷處理程序可以分為兩個部分Top halfBottom halfos09設(shè)備管理課件os09設(shè)備管理課件os09設(shè)備管理課件DMA I/On中斷驅(qū)動I/O是以字節(jié)為單位進程I/O,DMA允許以較大的數(shù)據(jù)塊為單位傳輸。nDMA控制器n數(shù)據(jù)交換是在設(shè)備與內(nèi)存間直接完成,無需CPU中轉(zhuǎn)。os09設(shè)備管理課件

7、os09設(shè)備管理課件I/O系統(tǒng)n一方面,I/O設(shè)備種類繁多,另一方面,I/O系統(tǒng)必須為用戶提供簡單、一致的I/O接口n解決問題的方法是,操作系統(tǒng)隱藏或抽象大多數(shù)設(shè)備操作的細節(jié),為用戶提供幾種的設(shè)備類型的訪問塊設(shè)備字符設(shè)備時鐘os09設(shè)備管理課件os09設(shè)備管理課件I/O設(shè)備管理器抽象n設(shè)備管理器被分為兩部分設(shè)備無關(guān)部分(設(shè)備管理的基礎(chǔ)設(shè)施)n設(shè)備管理中的數(shù)據(jù)結(jié)構(gòu)n緩沖區(qū)管理(buffering、caching)nspooling(獨占設(shè)備的共享技術(shù))n錯誤處理n訪問控制設(shè)備相關(guān)部分n設(shè)備驅(qū)動程序os09設(shè)備管理課件設(shè)備管理器的基礎(chǔ)設(shè)施n基礎(chǔ)設(shè)施使得OS可以提供一組公共的設(shè)備接口系統(tǒng)調(diào)用,并將對

8、公共接口的調(diào)用轉(zhuǎn)換到特定的設(shè)備驅(qū)動函數(shù)。是設(shè)備管理器的設(shè)備無關(guān)部分os09設(shè)備管理課件緩沖n緩沖區(qū)可以緩和CPU和I/O設(shè)備間的速度不匹配的矛盾;減少CPU的中斷頻率,提高CPU和I/O設(shè)備間的并行能力。單緩沖雙緩沖循環(huán)緩沖緩沖池專有緩沖區(qū)os09設(shè)備管理課件設(shè)備分配n當進程通過系統(tǒng)調(diào)用使用I/O設(shè)備時,設(shè)備分配程序按照一定的策略,將設(shè)備分配給請求用戶。設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)分配策略(相關(guān)屬性、算法、安全性分配)n設(shè)備分配是設(shè)備無關(guān)的。os09設(shè)備管理課件設(shè)備獨立性n應(yīng)用程序獨立于具體使用的物理設(shè)備。n邏輯設(shè)備和物理設(shè)備增強設(shè)備分配的靈活性易于實現(xiàn)I/O重定向n設(shè)備獨立性軟件os09設(shè)備管理課件設(shè)

9、備獨立性軟件n執(zhí)行所有設(shè)備的公有操作:設(shè)備的分配&回收邏輯設(shè)備到物理設(shè)備映射設(shè)備保護緩沖管理差錯控制n向用戶層軟件提供統(tǒng)一的接口os09設(shè)備管理課件I/O 接口struct int (*seek) (struct inode * ,struct file *, off_t ,int); int (*read) (struct inode * ,struct file *, char ,int); int (*write) (struct inode * ,struct file *, off_t ,int); int (*readdir) (struct inode * ,struct fil

10、e *, struct dirent * ,int); int (*select) (struct inode * ,struct file *, int ,select_table *); int (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long); int (*mmap) (struct inode * ,struct file *, struct vm_area_struct *); int (*open) (struct inode * ,struct file *); int (*release)

11、(struct inode * ,struct file *); int (*fsync) (struct inode * ,struct file *); int (*fasync) (struct inode * ,struct file *,int); int (*check_media_change) (struct inode * ,struct file *); int (*revalidate) (dev_t dev); os09設(shè)備管理課件function i ()Dev_func_i ( devID, . ) / processing common to all device

12、s switch( devID) case dev0: dev0_func_i ( ) ; break;case dev1: dev1_func_i ( ) ; break;case devM: devM_func_i ( ) ; break; ;/ processing common to all devices 設(shè)備獨立性軟件設(shè)備分配策略邏輯設(shè)備到物理設(shè)備映射差錯控制并發(fā)控制緩沖區(qū)管理os09設(shè)備管理課件可重配置的設(shè)備驅(qū)動程序系統(tǒng)調(diào)用接口Open ( )Close ( )Etc.設(shè)備J的驅(qū)動程序設(shè)備J的入口點 支持可重配置的設(shè)備管理器使用一個間接表(對每個系統(tǒng)調(diào)用)來引用各自的設(shè)備函數(shù)。特

13、定設(shè)備的表項可以用對設(shè)備驅(qū)動程序進行注冊的實用程序在運行時建立。Dev_func_i j ( )os09設(shè)備管理課件Spooling 技術(shù)輸入進程輸出進程輸入緩沖區(qū)輸出緩沖區(qū)輸入井輸出井輸入設(shè)備輸出設(shè)備磁盤湯子瀛計算機操作系統(tǒng)page 166os09設(shè)備管理課件設(shè)備處理方式設(shè)備處理方式n為每一類設(shè)備設(shè)置一個進程,專門用于執(zhí)行這類設(shè)備的I/O操作 .n在整個系統(tǒng)中設(shè)置一個I/O進程,專門用于執(zhí)行系統(tǒng)中所有各類設(shè)備的I/O操作。 n不設(shè)置專門的設(shè)備處理進程,而只為各類設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序(模塊), 供用戶進程或系統(tǒng)進程調(diào)用。 os09設(shè)備管理課件設(shè)備驅(qū)動程序n設(shè)備驅(qū)動程序由一組函數(shù)組成,它抽

14、象了一個特定設(shè)備控制器的操作。一組設(shè)備驅(qū)動程序為所有的設(shè)備導出了相同的(或盡可能相似的)抽象。n設(shè)計者依據(jù)設(shè)備的細節(jié),通過構(gòu)建標準接口上的實現(xiàn)函數(shù)來實現(xiàn)抽象。os09設(shè)備管理課件struct test_fops = NULL, read_test, write_test, NULL, /* test_readdir */ NULL, NULL, /* test_ioctl */ NULL, /* test_mmap */ open_test, release_test, NULL, /* test_fsync */ NULL, /* test_fasync */ /* nothing more

15、, fill with NULLs */ ; os09設(shè)備管理課件設(shè)備相關(guān)的驅(qū)動程序基礎(chǔ)框架n每個設(shè)備控制器都提供一個特定的接口給軟件:接口的細節(jié)包括了用來發(fā)送給設(shè)備的命令、狀態(tài)和返回的錯誤報告、定時和軟件如何控制設(shè)備的其他需求。n設(shè)備驅(qū)動程序使用特定的硬件接口來實現(xiàn)抽象的I/O操作。設(shè)備驅(qū)動程序被分為n個不同的函數(shù),它們可以經(jīng)由系統(tǒng)調(diào)用接口進行訪問。os09設(shè)備管理課件設(shè)備驅(qū)動程序的功能設(shè)備驅(qū)動程序的功能n接收由I/O進程發(fā)來的命令和參數(shù), 并將命令中的抽象要求轉(zhuǎn)換為具體要求,例如,將磁盤塊號轉(zhuǎn)換為磁盤的盤面、 磁道號及扇區(qū)號。n檢查用戶I/O請求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù)

16、,設(shè)置設(shè)備的工作方式。 os09設(shè)備管理課件n發(fā)出I/O命令,如果設(shè)備空閑,便立即啟動I/O設(shè)備去完成指定的I/O操作;如果設(shè)備處于忙碌狀態(tài),則將請求者的請求塊掛在設(shè)備隊列上等待。n及時響應(yīng)由控制器發(fā)來的中斷請求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進行處理。os09設(shè)備管理課件設(shè)備驅(qū)動程序的特點設(shè)備驅(qū)動程序的特點n驅(qū)動程序主要是指在請求I/O的進程與設(shè)備控制器之間的一個通信和轉(zhuǎn)換程序。 n驅(qū)動程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān), 因而對不同類型的設(shè)備應(yīng)配置不同的驅(qū)動程序。 n驅(qū)動程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。 n由于驅(qū)動程序與硬件緊密相關(guān), 因而其中的一部分必

17、須用匯編語言書寫。 os09設(shè)備管理課件使用中斷的設(shè)備處理n在使用中斷的情況下,設(shè)備管理的功能可以劃分為4個部分:初始化I/O操作的設(shè)備驅(qū)動程序的“上半部分”設(shè)備狀態(tài)表中斷處理程序設(shè)備處理程序os09設(shè)備管理課件n應(yīng)用進程請求讀操作n設(shè)備驅(qū)動程序的上半部分查詢狀態(tài)寄存器,確定設(shè)備是否空閑;如果忙,驅(qū)動程序等待直到空閑n驅(qū)動程序?qū)⑤斎朊畲嫒肟刂破鞯拿罴拇嫫髦校瑔釉O(shè)備n當設(shè)備驅(qū)動程序的上半部分完成它的工作,根據(jù)操作情況保存相應(yīng)信息到設(shè)備狀態(tài)表,如最初的調(diào)用地址、以及I/O操作的一些特定參數(shù)等。系統(tǒng)中的每個設(shè)備在表中都有對應(yīng)的表項。操作完成后CPU就可以分配給其他進程使用了,因此,設(shè)備管理器調(diào)

18、用進程管理器的調(diào)度程序運行,原進程的執(zhí)行被暫停執(zhí)行輸入指令的步驟os09設(shè)備管理課件n設(shè)備完成操作后,引起中斷處理程序的運行n中斷處理程序確定哪個設(shè)備引起中斷,然后分支轉(zhuǎn)移到該設(shè)備對應(yīng)的設(shè)備處理程序執(zhí)行n設(shè)備處理程序重新從設(shè)備狀態(tài)表中找到等待I/O操作完成的進程狀態(tài)信息n設(shè)備處理程序拷貝控制器數(shù)據(jù)寄存器的內(nèi)容到用戶進程空間n設(shè)備處理程序作為由應(yīng)用程序激活的設(shè)備驅(qū)動程序的下半部分,將控制權(quán)返回給應(yīng)用進程。os09設(shè)備管理課件read (device, )數(shù) 據(jù)系統(tǒng)接口讀驅(qū)動程序?qū)戲?qū)動程序設(shè)備狀態(tài)表設(shè)備處理程序中斷處理程序設(shè)備控制器命令狀態(tài)數(shù) 據(jù)os09設(shè)備管理課件中斷服務(wù)Int read ( ) Out dev# /return after interruptWait (devJ) ; return_from_sys_call ;設(shè)備控制器中斷處理程序Void dev_handler ( ) signal ( dev J ) ;設(shè)備驅(qū)動程序J設(shè)備中斷處

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論