freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)operatingsystem(參考版)

2025-07-22 03:00本頁面
  

【正文】 。 l中斷服務 DPC例程。l中斷服務例程( ISR)。 設備驅(qū)動程序l啟動 I/O例程。 它是設備驅(qū)動程序提供的主要函數(shù),如打開、關閉、讀寫等。 支持 PnP管理器的操作。 I/O管理器利用這些系統(tǒng)對象去識別和訪問驅(qū)動程序。 當驅(qū)動程序被加載到操作系統(tǒng)后, I/O管理器創(chuàng)建一個驅(qū)動程序?qū)ο?,并調(diào)用驅(qū)動程序的初始化例程。2. 驅(qū)動程序結構 設備驅(qū)動程序包括一組調(diào)用例程,用于處理 I/O請求的不同階段。J類驅(qū)動程序: 某一類設備的驅(qū)動程序,如磁盤、磁帶、光盤等。在 Windows 2022中,用戶態(tài) MSDOS應用程序不能直接訪問硬件,而必須通過核心設備驅(qū)動程序,以實現(xiàn)操作系統(tǒng)的安全性。過濾驅(qū)動程序與功能驅(qū)動程序協(xié)作,用于增加或改變功能驅(qū)動程序的行為??偩€驅(qū)動程序管理并檢查總線,以便向 PnP管理器通知總線上的設備情況。J核心態(tài)圖形驅(qū)動程序: 把與設備無關的圖形請求轉換為設備專用請求。主要包括: J文件系統(tǒng)驅(qū)動程序 :接收應用程序的 I/O請求。 這類 I/O能夠提高應用程序的吞吐率,因為它允許在 I/O操作期間,應用程序繼續(xù)其他的工作。 應用程序發(fā)出的大多數(shù) I/O請求都是同步請求,即設備執(zhí)行數(shù)據(jù)傳輸并在 I/O完成時返回一個狀態(tài)碼,然后程序就可以立即訪問被傳輸?shù)臄?shù)據(jù)。 IRP的組成:請求的類型和大小、是同步請求還是異步請求、用于緩沖 I/O的指向緩沖區(qū)的指針、隨著請求的進展而變化的狀態(tài)信息、堆棧單元(包括一個功能碼、功能特定的參數(shù)、一個指向調(diào)用者文件對象的指針)。例如,硬盤的每個分區(qū)都有一個獨立的包含具體分區(qū)信息的設備對象,而這些設備對象共享相同的硬盤驅(qū)動程序。 驅(qū)動程序的初始化例程還創(chuàng)建了用于每個設備的設備對象,通常驅(qū)動程序?qū)ο笥袔讉€與之相關的設備對象。 I/O系統(tǒng)的數(shù)據(jù)結構 I/O管理器根據(jù)應用程序提供的文件對象名來決定它將調(diào)用哪個驅(qū)動程序來處理 I/O請求。 因為文件對象是表示一個基于內(nèi)存的共享資源,而不表示資源本身,所以它有別于其他的執(zhí)行體對象。l指向?qū)S酶咚倬彺嬗成涞闹羔槪罕硎疚募v留在內(nèi)存高速緩存中的部分的位置。l指向卷參數(shù)塊的指針:表示文件所在卷或分區(qū) ?!?打開模式:表示文件被打開的方式,如同步或異步方式、是否高速緩存等。● 字節(jié)偏移量:在文件中標識對文件數(shù)據(jù)操作的位置。 文件對象 提供了基于內(nèi)存的共享物理資源的表示法。 典型的 I/O請求流程如圖 58所示 應用程序 APII/O系統(tǒng)服務 APII/O管理器設備驅(qū)動程序硬件抽象層 I/O服務例程硬件設備圖 58 一個典型的 I/O請求流程 Windows 2022的 I/O系統(tǒng)在處理 I/O請求時涉及到四種主要的數(shù)據(jù)結構:文件對象、驅(qū)動程序?qū)ο?、設備對象和 I/O請求包( IRP)。虛擬文件屬于字符流式文件。 I/O系統(tǒng)結構 Windows 2022隱藏了 I/O操作的實現(xiàn)細節(jié),所有的 I/O操作都通過虛擬文件來實現(xiàn),為應用程序提供了一個統(tǒng)一的到設備的接口界面。 注冊表 是用來存儲設備屬性信息以及設備驅(qū)動程序的初始化和配置信息的數(shù)據(jù)庫。 WDM WMI例程 是 WMI( Windows Management Instrumentation)支持例程, 也叫做 Windows驅(qū)動程序模型( WDM, Windows Driver Model) WMI提供者,允許驅(qū)動程序以這些支持例程為媒介,與用戶態(tài)運行的 WMI服務通信。 設備驅(qū)動程序從 I/O管理器接收 I/O請求命令,處理完請求后通知 I/O管理器。如圖 57所示。接收來自用戶態(tài)和核心態(tài)的 I/O請求,并且以不同的形式把它們傳送到 I/O設備。內(nèi)核對第二類驅(qū)動程序不會提供任何支持,而是由這些驅(qū)動程序自己來處理請求隊列和緩沖區(qū)首部列表。 這時,驅(qū)動程序可以為 DMA數(shù)據(jù)傳送在內(nèi)存分配一個臨時區(qū)域,待數(shù)據(jù)傳送完成后,再把這個臨時區(qū)域中的數(shù)據(jù)拷貝到每個請求在內(nèi)存里的緩沖區(qū)之中。第二類驅(qū)動程序的設計和實現(xiàn)比第一類驅(qū)動程序要復雜得多。 設備的處理 低級設備驅(qū)動程序的執(zhí)行模式: 策略程序處理隊列中的當前請求并設置塊設備控制器,以便在數(shù)據(jù)傳送完成時可以產(chǎn)生一個中斷,然后策略程序終止;當塊設備控制器產(chǎn)生中斷時, 中斷處理程序就激活一個下半部分, 該下半部分把這個請求從隊列中刪除并重新執(zhí)行這個策略程序來處理隊列中的下一個請求。 策略程序 是由 tq_disk任務隊列激活的,不必代表請求 I/O操作的進程執(zhí)行,而是在隨后隨機執(zhí)行。只要低級塊設備驅(qū)動程序被激活,就應該對隊列中的所有請求都進行處理,直到隊列為空才結束。 設備的處理 Linux塊設備處理體系結構的最底層 是由策略程序?qū)崿F(xiàn)的,策略程序與物理塊設備之間相互作用以滿足將隊列中的請求聚集在一起的要求。 Current_request域指向當前正在得到服務的請求的描述符。策略程序是低級塊設備驅(qū)動程序的關鍵函數(shù),與物理塊設備真正打交道,開始傳送隊列中的一個請求所指定的數(shù)據(jù)。系統(tǒng)里所有塊設備的描述符都存放在 blk_dev表中,該表的索引就是塊設備的主號。 為了提高磁盤性能,對請求隊列進行排序,以便策略程序在順序掃描請求隊列時,移動磁頭次數(shù)最少。 通常還對這個鏈表進行排序,排序的原則:首先根據(jù)設備標識符,其次根據(jù)最初的扇區(qū)號。 Linux系統(tǒng)里的請求描述符存放在 request數(shù)據(jù)結構中。 設備的處理 對塊設備的每個請求都是用一個請求描述(request descriptor)來表示的。接著,內(nèi)核檢查能否通過稍微擴大前一個處于等待狀態(tài)的請求而滿足這個新請求,即能否不用進一步的搜索磁盤操作就能滿足新請求,以實現(xiàn)順序訪問磁盤,提高磁盤性能。當進程或內(nèi)核要讀寫一個磁盤塊時,就引起一個塊設備請求。當數(shù)據(jù)傳輸完,控制器就會 產(chǎn)生一個硬件中斷 ,由中斷處理程序激活這個低級設備驅(qū)動程序去做一些善后處理工作,如清除這次 I/O操作所涉及的數(shù)據(jù)結構等。 設備的處理 緩沖區(qū) I/O數(shù)據(jù)傳送通常都是異步處理的。這個過程執(zhí)行的所有操作都與對這個硬件設備的具體讀寫請求有關。 高級驅(qū)動程序處于虛擬文件系統(tǒng)( VFS)層,低級驅(qū)動程序處理硬件設備。也就是說,內(nèi)核是通過緩沖區(qū)首部來操作緩沖區(qū)的。 內(nèi)存里的每個緩沖區(qū)都要用緩沖區(qū)首部來標識。 緩沖區(qū)的大小一定要與塊的大小相匹配。 設備的處理 每個磁盤塊在 RAM內(nèi)存區(qū)都需要自己的緩沖區(qū)。同一個塊設備驅(qū)動程序可以作用于多個磁盤塊大小不同的磁盤。 在 Linux中,磁盤塊大小必須是 2的整次冪,而且不能超過一個頁框大小。 大部分磁盤設備的扇區(qū)大小是 512字節(jié),現(xiàn)在新出現(xiàn)的一些設備使用更大的扇區(qū):1024字節(jié)、 2048字節(jié)。 設備的處理 設備的處理 Linux內(nèi)核的 I/O數(shù)據(jù)傳送方式 : 緩沖區(qū) I/O操作 、頁 I/O操作 。 為了提高硬盤操作性能,對硬盤一類設備的操作可以采用同時傳送很多相鄰數(shù)據(jù)字節(jié)的辦法。 硬盤控制器在操作硬盤時,必須先將磁頭移動到記錄數(shù)據(jù)的確切位置,當磁頭到達正確位置時,才能進行實際地讀 /寫數(shù)據(jù)。 字符設備之間也不盡相同,由各自的需求而定。 設備處理包括字符設備的處理和塊設備的處理。當要啟動 DMA操作時,設備驅(qū)動程序把 DMA緩沖區(qū)的總線地址、傳送方向以及數(shù)據(jù)大小寫入設備的 I/O端口中,接著驅(qū)動程序就掛起當前進程。 每個 ISA總線的 DMA可以同時控制幾個通道的數(shù)據(jù)傳送,每個通道都有一組獨立的內(nèi)部寄存器。 當數(shù)據(jù)傳送完成時, I/O控制器通過 IRQ線向 CPU發(fā)出中斷信號。 DMAC與設備的 I/O控制器相互作用,共同實現(xiàn)數(shù)據(jù)傳送。 設備驅(qū)動程序 DMAC與 IRQ線一樣,也是一種資源,系統(tǒng)內(nèi)核負責把這種資源動態(tài)地分配給需要它的設備驅(qū)動程序。進程調(diào)用 release方法釋放設備文件并減少其引用計數(shù)器的值,之后要對引用計數(shù)器的值進行檢查。 進程調(diào)用 open方法打開設備文件之前,先要對其引用計數(shù)器的值進行檢查。 為了使用 IRQ線,設備驅(qū)動程序通常采用下面的模式: 內(nèi)核為每個設備文件都設置了引用計數(shù)器,用以記錄正在訪問該設備文件的進程個數(shù)。4 請求 IRQ線 由于多個設備可以共享同一 IRQ線,因此存在著 IRQ線的分配問題,在設備使用 IRQ線之前對 IRQ線進行動態(tài)分配。 ★ check_region: 檢查一個給定區(qū)間的 I/O端口是否空閑,是否已分配給某個 I/O設備。 設備驅(qū)動程序3 訪問 I/O端口 為了避免多個硬件設備使用同一 I/O端口, 系統(tǒng)內(nèi)核必須使用一個數(shù)據(jù)結構(如 iotable表)來記錄每個I/O端口的使用情況。當 I/O操作結束時,設備控制器通過 IRQ線發(fā)出中斷信號,中斷處理程序調(diào)用wake_up( )來喚醒該設備驅(qū)動程序進程。l中斷模式( interrupt mode)是指 I/O設備控制器能夠通過IRQ線發(fā)出 I/O操作結束的信號。l輪詢模式( polling mode)是指 CPU重復檢查或輪詢設備的狀態(tài)寄存器,直到狀態(tài)寄存器中的值表明 I/O操作已經(jīng)完成為止。 在 I/O超時 ,即完成這個操作所允許的最大時間間隔已經(jīng)用完時,驅(qū)動程序知道一定出了問題,要做相應的處理。因此, 設備驅(qū)動程序在啟動 I/O操作之后, 都要依靠一種監(jiān)控技術在 I/O操作終止或超時時發(fā)出信號。(3) 擴展支持 :通常,除 串口之外 的所有通用接口(并口、 USB、 PCMCIA接口、 SCSI接口)之上連接的外部設備都需要擴展支持。內(nèi)核通過提供一個具有驅(qū)動程序的設備文件來了解 I/O接口,通過讀寫設備文件來處理外部硬件設備。 內(nèi)核能識別 I/O接口,但不能識別外部硬件設備。 設備驅(qū)動程序(2) 最小支持 : 最小支持保持內(nèi)核盡可能小。 內(nèi)核對硬件設備訪問的支持方式有: 內(nèi)核不支持、最小支持、擴展支持。每個設備都有一個唯一的 I/O控制器,因而有唯一的命令和唯一的狀態(tài)信息。 設備驅(qū)動程序 設備驅(qū)動程序 是指用來控制 I/O設備的一組函數(shù)(如 open、 close、 read、 ioctl等)。 當應用程序進程發(fā)出對設備文件的任一系統(tǒng)調(diào)用時, VFS將之轉換成對設備驅(qū)動里的一個操作函數(shù)的調(diào)用,而不轉換成對主文件系統(tǒng)相應函數(shù)的調(diào)用。 對設備文件的訪問,則只是驅(qū)動硬件設備。進程對設備文件的訪問不同于對普通文件(正規(guī)文件、目錄文件)的訪問。 I/O設備文件表 51 常見的設備文件設備名類型 主號 次號 說明/dev/hda 塊設備 3 0 第一個 IDE磁盤/dev/hda2 塊設備 3 2 第一個 IDE磁盤上的第二個主分區(qū)/dev/hdb 塊設備 3 64 第二個 IDE磁盤/dev/hdb3 塊設備 3 67 第二個 IDE磁盤上的第三個主分區(qū)/dev/fd0 塊設備 2 0 軟盤/dev/ttyp0 字符設備 3 0 終端/dev/console 字符設備 5 1 控制臺/dev/rtc 字符設備 10 135 實時時鐘/dev/ttyS0 字符設備 4 64 第一個串口/dev/lp1 字符設備 6 1 并口打印機/dev/null 字符設備 1 3 空設備(黑洞) I/O設備文件 通常,一個設備文件與一個硬件設備或硬件設備的某一物理或邏輯分區(qū)相關聯(lián)。 表 51列出了一些常見的設備文件的屬性。 次號 也
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1