操做系統-IO管理概述

IO管理概述

1、IO設備

  IO設備管理是操做系統設計中最凌亂也最具挑戰性的部分。因爲它包含了不少領域的不一樣設備以及與設備相關的應用程序,所以很難有一個通用且一直的設計方案。因此在理解設備管理以前,應該先了解具體的IO設備類型。安全

  計算機系統中的IO設備按使用特性能夠分爲一下類型:網絡

  1)人機交互類外部設備,又稱慢速IO設備,用於桶計算機用戶之間交互的設備,如打印機、顯示器、鼠標、鍵盤等。這類設備數據交換速度相對較慢,一般是以字節爲單位進行數據交換。
  2)存儲設備,用於存儲程序和數據的設備,如磁盤、磁帶、光盤等。這類設備用於數據交換,速度較快,一般以多字節組成的塊爲單位進行數據交換。
  3)網絡通訊設備,用於與遠程設備通訊的設備,如各類網絡接口、調制解調器等。其數據交換速度介於外部設備與存儲設備之間。網絡通訊設備在使用和管理上與前二者設備有很大的不一樣。異步

  按傳輸速率可分爲如下幾類函數

  1)低速設備,傳輸速率僅爲每秒鐘幾個字節至數百個字節的一類設備,如鍵盤、鼠標等。
  2)中速設備,傳輸速率在每秒數千個字節至數萬個字節的一類設備,如行式打印機、激光打印機等。
  3)高速設備,傳輸速率在數百個千字節至千兆字節的一類設備,如磁帶機、磁盤機、光盤機等。測試

  按信息交換的單位分類spa

  1)塊設備:因爲信息的存取老是以數據塊爲單位,因此存儲信息的設備稱爲塊設備。它屬於有結構設備,如磁盤等。磁盤設備的基本特徵是傳輸速率高,以及可尋址,即對他可隨機地讀寫任意塊。
  2)字符設備:用於數據輸入輸出的設備爲字符設備,由於其傳輸的基本單位是字符。它屬於無結構類型,如交互式終端機、打印機等。他們的傳輸速率低、不可尋址、而且在輸入輸出時常採用中斷驅動方式。操作系統

  對於IO設備,有如下三種不一樣類型的使用方式:設計

  獨佔式使用設備。獨佔式使用設備是指在申請設備是,若是設備空閒,就將其獨佔,再也不允許其餘進程申請使用,一直等到該設備被釋放才容許其餘進程申請使用。例如:打印機。接口

  分時式共享使用設備。獨佔式使用設備時,設備利用率低,當設備沒有獨佔使用的要求時,能夠經過分時共享使用,提升利用率。例如:對磁盤設備的IO操做,各進程每次IO操做請求能夠經過分時來交替進行。進程

  以SPOOLing方式使用外部設備。SPOOLing技術是在批處理操做系統時代引入的,即假脫機IO技術。這種技術用於對設備的操做,實質上就是對IO操做進行批處理。具體的內容後面有單獨講解。

  採用上面三種使用方式的設備分別稱爲獨佔設備、共享設備和虛擬設備

2、IO管理目標

  IO設備管理的主要目標有如下三個方面。

  方便使用:方便用戶使用外部設備,控制設備工做完成用戶的輸入輸出要求。
  提升效率:提升系統的並行工做能力,提升設備的使用效率。
  方便控制:提升外圍設備和系統的可靠性和安全性,以使系統能正常工做。

3、IO管理功能

  IO設備管理的功能是按照輸入輸出子系統的結構和設備類型制定分配和使用設備的策略,主要包括:設備的分配和回收、外圍設備的啓動、對磁盤的驅動調度、外部設備中斷處理、虛擬設備的實現。

4、IO應用接口

  IO應用接口就是從不一樣的輸入輸出設備中抽象出一些通用類型。每一個類型均可以經過一組標準函數(即接口)來訪問。具體的差異被內核模塊(也稱設備驅動程序)所封裝。這些設備驅動程序一方面能夠定製,以設和各類設備,另外一方面也提供了一些標準接口。

  IO應用接口的具體實現方式是:先把IO設備劃分爲若干種類的通用類型;而後對每一種類型提供一組標準函數來訪問,這裏的標準函數就是接口;爲每一個IO設備提供各自的設備驅動程序,各類設備間的差別就體如今設備驅動程序的不一樣之中,而對於訪問這些設備的接口倒是按照該設備分數的類型而統一。

  劃分IO設備所屬的通用類型的依據:

  ①字符設備仍是塊設備。
  ②順序訪問仍是隨機訪問。
  ③IO傳輸是同步仍是異步。
  ④共享設備仍是獨佔設備。
  ⑤操做速度的高低。
  ⑥訪問模式是讀寫、只讀仍是隻寫。

5、設備控制器(IO部件)

  IO設備一般包括一個機械部件和一個電子部件。爲了達到設計的模塊性和通用性,通常將其分開。電子部件成爲設備控制器(或適配器),在我的計算機中,一般是一塊插入主板擴充槽的印製電路板;機械部件即設備自己。

  因爲具體的設備操做涉及硬件接口,且不一樣的設備有不一樣的硬件特性和參數,因此這些複雜的操做交由操做系統用戶編寫程序來操做是不實際的。引入控制器後,系統能夠經過幾個簡單的參數完成對控制器的操做,而具體的硬件操做則由控制器調用相應的設備接口完成。設備控制器的引入大大簡化了操做系統的設計,特別是有利於計算機系統和操做系統對各種控制器和設備的兼容;同時也實現了主存和設備之間的數據傳輸操做,使CPU從繁重的設備控制操做中解放出來。

  設備控制器經過寄存器與CPU通訊,在某些計算機上,這些寄存器佔用內存地址的一部分,稱爲內存映像IO;另外一些計算機則採用IO專用地址,寄存器獨立編址。操做系統經過想控制器寄存器寫命令字來執行IO功能。控制器收到一條命令後,CPU能夠轉向進行其餘工做,而讓設備控制器自行完成具體IO操做。當命令執行完畢後,控制器發出一箇中斷信號,操做系統從新得到CPU的控制權並檢查執行結果,此時,CPU仍舊是從控制器寄存器中讀取信息來得到執行結果和設備的狀態信息。

  設備控制器的主要功能爲:

  ①接收和識別CPU或通道發來的命令,如磁盤控制器能就收讀、寫、查找、搜索等命令。
  ②實現數據交換,包括設備和控制器之間的數據傳輸;經過數據總線或通道,控制器和主存之間的數據傳輸。
  ③發現和記錄設備及自身的狀態信息,供CPU處理使用。
  ④設備地址識別。

  爲實現上述功能,設備控制器必須包含如下組成部分:

  該接口有三類信號線:數據線、地址線和控制線。數據線一般與兩類寄存器相鏈接:數據存儲器(存放從設備送來的輸入數據或從CPU送來的輸出數據)和控制/狀態寄存器(存放從CPU送來的控制信息或設備的狀態信息)。設備控制器連接設備須要相應數量的接口,一個藉口連接一臺設備。每一個接口中都存在數據、控制和狀態三種類型的信號。用於實現對設備的控制。它經過一組控制線與處理器交互,對從處理器收到的IO命令進行譯碼。CPU啓動設備時,將啓動命令發送給控制器,並同時經過地址線吧地址發送給控制器,由控制器的IO邏輯對地址進行譯碼,並相應地對所選設備進行控制。

6、IO控制方式

  設備管理的主要任務之一是控制設備和內存或處理器之間的數據傳送,外圍設備和內存之間的輸入輸出控制方式有四種,下面分別介紹。

  計算機從外部設備讀取數據到存儲器,每次讀一個字的數據。對讀入的每一個字,CPU須要對狀態循環檢查,知道肯定該字已經在IO控制器的數據寄存器中。在程序IO方式中,因爲CPU的高速型和IO設備的低速性,導致CPU的絕大部分時間都處於等待IO設備完成數據IO的循環測試中,形成CPU的極大浪費。在該方式中,CPU之因此要不斷地測試IO設備的狀態,就是由於在CPU中無中斷機構,使IO設備沒法向CPU報告它已完成了一個字符的輸入操做。

  程序直接控制方式雖然簡單易於實現,可是其缺點也是顯然的,因爲CPU和外部設備只能串行工做,致使CPU的利用率至關低。

  中斷驅動方式的思想是:容許IO設備主動打斷CPU的運行並請求服務,從而「解放」CPU,使得其向IO控制器發送命令後能夠繼續作其餘有用的工做。咱們從IO控制器和CPU兩個角度分別來看中斷驅動方式的工做過程: 從IO控制器的角度來看,IO控制器從COU接受一個讀命令,而後從外圍設備讀數據。一旦數據讀入到該IO控制器的數據寄存器,便經過控制線給CPU發出一箇中斷信號,表示數據已準備好,而後等待CPU請求該數據。IO控制器收到CPU發出的取數據請求後,將數據放到數據總線上,傳到CPU的寄存器中。至此,本次IO操做完成,IO控制器又能夠開始下一次IO操做。

  從CPU的角度來看,CPU發送讀命令,而後保存當前運行程序的上下文(現場,包括程序計數器及處理器寄存器),轉去執行其餘程序。在每一個指令週期的末尾,CPU檢查中斷。當有來自IO控制器的中斷時,CPU保存當前正在運行程序的上下文,轉去執行中斷處理程序處理該中斷。這時,CPU從IO控制器讀一個字的數據傳送到寄存器,並存入主存。接着,CPU恢復發出IO命令的程序(或其餘程序)的上下文,而後繼續運行。

  中斷驅動方式比程序直接控制方式有效,但因爲數據中的每一個字在存儲器與IO控制器之間的傳輸都必須經過CPU處理,這就致使了中斷驅動方式仍然會花費較多的CPU時間。

  中斷驅動方式中,CPU仍然須要主動處理在存儲器和IO設備之間的數據傳送,因此速度仍是受限,而直接內存存取(DMA)方式的基本思想是在外圍設備和內存之間開闢直接的數據交換通路,完全解放CPU。該方式的特色是:

  ①基本單位是數據塊。
  ②所傳誦的數據,是從設備直接送入內存的,或者相反。
  ③僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊數據的傳送是在DMA控制器的控制下完成的。

  爲了實如今主機與控制器之間成塊數據的直接交換,必須在DMA控制器中設置以下四類寄存器:

  ①命令/狀態寄存器(CR)。用於接收從CPU發來的IO命令或有關控制信息,或設備的狀態。
  ②內存地址寄存器(MAR)。在輸入時,它存放把數據從設備傳送到內存的起始目標地址;在輸出時,它存放由內存到設備的內存源地址。
  ③數據寄存器(DR)。用於暫存從設備到內存或從內存到設備的數據。
  ④數據計數器(DC)。存放本次CPU要讀或寫的字節數。

  DMA的工做過程是:CPU讀寫數據時,他給IO控制器發出一條命令,啓動DMA控制器,而後繼續其餘工做。以後CPU就把這個操做委託給DMA控制器,由該控制器負責處理。DMA控制器直接與存儲器交互,傳送整個數據塊,這個過程不須要CPU參與。當傳送完成後,DMA控制器發送一箇中斷信號給處理器。所以,只有在傳送開始和結束時才須要CPU的參與。

  DMA控制方式與中斷驅動方式的主要區別是中斷驅動方式在每一個數據傳送玩後中斷CPU,而DMA控制方式則是在所要求傳送的一批數據所有傳送結束時中斷CPU;此外,中斷驅動方式數據傳送的是在中斷處理時由CPU控制完成,而DMA控制方式則是在DMA控制器的控制下完成的。

  IO通道方式是DMA方式的發展,它能夠進一步減小CPU的干預,即把對一個數據塊的讀或寫爲一個單位的干預,減小爲對一組數據塊的讀或寫及有關的控制盒管理爲單位的干預。同時,又能夠實現CPU、通道和IO設備三者的並行操做,從而更有效的提升整個系統的資源利用率。

  例如,當CPU要完成一組相關的讀或寫操做及有關控制時,只需向IO通道發送一條IO指令,已給出其所要執行的通道程序的首址和要訪問的IO設備,通道接到該指令後,經過執行通道程序即可完成CPU指定的IO任務。

  IO通道和通常處理器的區別是:通道指令的類型單一,沒有本身的內存,通道所執行的通道程序釋放在主機內存中的,也就是說通道與CPU共享內存。

  IO通道與DMA的區別是:DMA方式須要CPU來控制傳輸的數據塊大小、傳輸的內存位置,而通道方式中這些信息是由通道控制的。另外,每一個DMA控制器對應一臺設備與內存傳遞數據,而一個通道能夠控制多臺設備與內存的數據交換。

相關文章
相關標籤/搜索