18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理
文章目錄
- 1 IO設備的基本概念和分類
- 1.1 什么是I/O設備
- 1.2 I/O設備分類
- 2 IO控制器
- 2.1 I/O設備組成
- 2.2 I/O控制器功能
- 2.3 I/O控制器的組成
- 2.4 寄存器編址方式
- 2.5 IO控制器小結
- 3 IO控制方式
- 3.1 程序直接控制方式
- 3.2 中斷驅動方式
- 3.3 DMA方式
- 3.3.1 DMA控制器
- 3.3.2 DMA方式
- 3.4 通道控制方式
- 3.5 IO控制方式小結
- 4 IO軟件層次結構
- 4.1 用戶層軟件
- 4.2 設備獨立性軟件
- 4.3 設備驅動程序
- 4.4 中斷處理程序
- 4.5 IO軟件層次結構小結
- 5 IO核心子系統與假脫機技術
- 5.1 IO調度
- 5.2 設備保護
- 5.3 假脫機技術
- 5.4 共享打印機原理分析
- 5.5 假脫機技術小結
- 6 設備分配
- 6.1 設備分配時應考慮的因素
- 6.2 靜態分配和動態分配
- 6.3 設備分配管理中的數據結構
- 6.4 設備分配的步驟
- 6.5 設備分配的步驟的改進
- 6.6 設備分配與回收小結
- 7 緩沖區管理
- 7.1 緩沖區定義及作用
- 7.2 單緩沖
- 7.3 雙緩沖
- 7.4 使用單/雙緩沖在通信時的區別
- 7.5 循環緩沖區
- 7.6 緩沖池
- 7.7 緩沖區小結
1 IO設備的基本概念和分類
1.1 什么是I/O設備
- “I/O”就是“輸入/輸出”(Input/Output)
- I/O設備就是可以將數據輸入到計算機,或者可以接收計算機輸出數據的外部設備,屬于計算機中的硬件部件。
UNIX系統將外部設備抽象為一種特殊的文件,用戶可以使用與文件操作相同的方式對外部設備進行操作。
1.2 I/O設備分類
I/O設備按使用特性分類:
I/O設備按傳輸速率分類:
I/O設備按傳輸速率分類:
2 IO控制器
2.1 I/O設備組成
I/O設備由機械部件和電子部件組成,電子部件包括(I/O控制器、設備控制器)
- I/O設備的機械部件主要用來執行具體I/O操作。
如我們看得見摸得著的鼠標/鍵盤的按鈕;顯示器的LED屏;移動硬盤的磁臂、磁盤盤面。 - I/O設備的電子部件通常是一塊插入主板擴充槽的印刷電路板。
- CPU無法直接控制l/O設備的機械部件,因此I/0設備還要有一個電子部件作為CPU和I/O設備機械部件之間的“中介”,用于實現CPU對設備的控制。
- 這個電子部件就是I/O控制器,又稱設備控制器。CPU可控制I/O控制器,又由I/O控制器來控制設備的機械部件。
2.2 I/O控制器功能
2.3 I/O控制器的組成
值得注意的小細節:
(如:每個控制/狀態寄存器對應一個具體的設備),且這些寄存器都要有相應的地址,才能方便CPU操作。有的計算機會讓這些寄存器占用內存地址的一部分,稱為內存映像I/0;另一些計算機則采用I/O專用地址,即寄存器獨立編址。
2.4 寄存器編址方式
內存映像I/O VS 寄存器獨立編址:
2.5 IO控制器小結
3 IO控制方式
IO控制總覽:
3.1 程序直接控制方式
Key word:輪詢
完成一次讀/寫操作的流程(以讀操作為例):
很頻繁,I/O操作開始之前、完成之后需要CPU介入,并且在等待l/0完成的過程中CPU需要不斷地輪詢檢查。
每次讀/寫一個字
讀操作(數據輸入):I/O設備→CPU(CPU寄存器)→內存
寫操作(數據輸出):內存→CPU→I/0設備
每個字的讀/寫都需要CPU的幫助
優點:實現簡單。在讀/寫指令之后,加上實現循環檢查的一系列指令即可(因此才稱為“程序直接控制方式”)
缺點:CPU和I/O設備只能串行工作,CPU需要一直輪詢檢查,長期處于“忙等”狀態,CPU利用率低。
3.2 中斷驅動方式
- 引入中斷機制。由于I/O設備速度很慢,因此在CPU發出讀/寫命令后,可將等待I/O的進程阻塞,先切換到別的進程執行。
- 當I/O完成后,控制器會向CPU發出一個中斷信號,CPU檢測到中斷信號后,會保存當前進程的運行環境信息,轉去執行中斷處理程序處理該中斷。處理中斷的過程中,CPU從I/O控制器讀一個字的數據傳送到CPU寄存器,再寫入主存。接著,CPU恢復等待I/O的進程(或其他進程)的運行環境,然后繼續執行。
注意:
每次I/O操作開始之前、完成之后需要CPU介入。
等待I/O完成的過程中CPU可以切換到別的進程執行。
每次讀/寫一個字
讀操作(數據輸入):I/O設備→CPU→內存
寫操作(數據輸出):內存→CPU→I/0設備
優點:與“程序直接控制方式”相比,在“中斷驅動方式”中,I/0控制器會通過中斷信號主動報告I/0已完成,CPU不再需要不停地輪詢。
CPU和I/O設備可并行工作,CPU利用率得到明顯提升。
缺點:每個字在I/0設備與內存之間的傳輸,都需要經過CPU。而頻繁的中斷處理會消耗較多的CPU時間。
3.3 DMA方式
與“中斷驅動方式”相比,DMA方式(Direct Memory Access,直接存儲器存取。主要用于塊設備的I/0控制)有這樣幾個改進:
1. 數據的傳送單位是“塊”。不再是一個字、一個字的傳送;
2. 數據的流向是從設備直接放入內存,或者從內存直接到設備。不再需要CPU作為“快遞小哥”。
3. 僅在傳送一個或多個數據塊的開始和結束時,才需要CPU干預。
3.3.1 DMA控制器
3.3.2 DMA方式
CPU干預的頻率
僅在傳送一個或多個數據塊的開始和結束時,才需要CPU干預。
數據傳送的單位
每次讀/寫一個或多個塊(注意:每次讀寫的只能是連續的多個塊,且這些塊讀入內存后在內存中也必須是連續的)
讀操作(數據輸入):I/O設備→內存
寫操作(數據輸出):內存→I/O設備
優點:數據傳輸以“塊”為單位,CPU介入頻率進一步降低。數據的傳輸不再需要先經過CPU再寫入內存,數據傳輸效率進一步增加。CPU和I/O設備的并行性得到提升。
缺點:CPU每發出一條I/O指令,只能讀/寫一個或多個連續的數據塊。
如果要讀/寫多個離散存儲的數據塊,或者要將數據分別寫到不同的內存區域時,CPU要分別發出多條I/O指令,進行多次中斷處理才能完成。
3.4 通道控制方式
- 通道:一種硬件,可以理解為是“弱雞版的CPU”。通道可以識別并執行一系列通道指令
- 弱雞版的CPU:與CPU相比,通道可以執行的指令很單一,并且通道程序是放在主機內存中的,也就是說通道與CPU共享內存
極低,通道會根據CPU的指示執行相應的通道程序,只有完成一組數據塊的讀/寫后才需要發出中斷信號,請求CPU干預。
每次讀/寫一組數據塊
讀操作(數據輸入):I/O設備→內存
寫操作(數據輸出):內存→I/0設備
缺點:實現復雜,需要專門的通道硬件支持
優點:CPU、通道、l/O設備可并行工作,資源利用率很高。
3.5 IO控制方式小結
4 IO軟件層次結構
4.1 用戶層軟件
4.2 設備獨立性軟件
設備獨立性軟件,又稱設備無關性軟件。與設備的硬件特性無關的功能幾乎都在這一層實現。
設備獨立性軟件主要實現的功能:
原理類似于文件保護。設備被看做是一種特殊的文件,不同用戶對各個文件的訪問權限是不一樣的,同理,對設備的訪問權限也不一樣。
可以通過緩沖技術屏蔽設備之間數據交換單位大小和傳輸速度的差異
用戶或用戶層軟件發出I/O操作相關系統調用的系統調用時,需要指明此次要操作的I/O設備的邏輯設備名。
(eg:去學校打印店打印時,需要選擇打印機1/打印機2/打印機3,其實這些都是邏輯設備名)
設備獨立性軟件需要通過“邏輯設備表(LUT,Logical Unit Table)”來確定邏輯設備對應的物理設備,并找到該設備對應的設備驅動程序
操作系統系統可以采用兩種方式管理邏輯設備表(LUT):
思考:為何不同的設備需要不同的設備驅動程序?
不同設備的內部硬件特性也不同,這些特性只有廠家才知道,因此廠家須提供與設備相對應的驅動程序,CPU執行驅動程序的指令序列,來完成設置設備寄存器,檢查設備狀態等工作
4.3 設備驅動程序
主要負責對硬件設備的具體控制,將上層發出的一系列命令(如read/write)轉化成特定設備“能聽得懂”的一系列操作。包括設置設備寄存器;檢查設備狀態等
不同的I/0設備有不同的硬件特性,具體細節只有設備的廠家才知道。
因此廠家需要根據設備的硬件特性設計并提供相應的驅動程序。
注:驅動程序一般會以一個獨立進程的方式存在。
4.4 中斷處理程序
當I/0任務完成時,I/0控制器會發送一個中斷信號,系統會根據中斷信號類型找到相應的中斷處理程序并執行。
中斷處理程序的處理流程如下:
4.5 IO軟件層次結構小結
理解并記住I/0軟件各個層次之間的順序,要能夠推理判斷某個處理應該是在哪個層次完成的(最常考的是設備獨立性軟件、設備驅動程序這兩層。只需理解一個特點即可:直接涉及到硬件具體細節、且與中斷無關的操作肯定是在設備驅動程序層完成的;沒有涉及硬件的、對各種設備都需要進行的管理工作都是在設備獨立性軟件層完成的)
5 IO核心子系統與假脫機技術
注:假脫機技術(SPOOLing技術)需要請求“磁盤設備”的設備獨立性軟件的服務,因此一般來說假脫機技術是在用戶層軟件實現的。但是408大綱又將假脫機技術歸為“I/0核心子系統”的功能,因此考試時還是以大綱為準。
5.1 IO調度
I/O調度:用某種算法確定一個好的順序來處理各個I/O請求。
如:磁盤調度(先來先服務算法、最短尋道優先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。當多個磁盤I/O請求到來時,用某種調度算法確定滿足I/O請求的順序。
5.2 設備保護
操作系統需要實現文件保護功能,不同的用戶對各個文件有不同的訪問權限(如:只讀、讀和寫等)。
在UNIX系統中,設備被看做是一種特殊的文件,每個設備也會有對應的FCB。當用戶請求訪問某個設備時,系統根據FCB中記錄的信息來判斷該用戶是否有相應的訪問權限,以此實現“設備保護”的功能。(參考“文件保護”)
5.3 假脫機技術
引入脫機技術后,緩解了CPU與慢速I/0設備的速度矛盾。另一方面,即使CPU在忙碌,也可以提前將數據輸入到磁帶;即使慢速的輸出設備正在忙碌,也可以提前將數據輸出到磁帶。
“假脫機技術”,又稱“SPOOLing技術”是用軟件的方式模擬脫機技術。SPOOLing系統的組成如下:
要實現SPOOLing技術,必須要有多道程序技術的支持。系統會建立“輸入進程”和“輸出進程”。
5.4 共享打印機原理分析
當多個用戶進程提出輸出打印的請求時,系統會答應它們的請求,但是并不是真正把打印機分配給他們,而是由假脫機管理進程為每個進程做兩件事:
當打印機空閑時,輸出進程會從文件隊列的隊頭取出一張打印請求表,并根據表中的要求將要打印的數據從輸出井傳送到輸出緩沖區,再輸出到打印機進行打印。用這種方式可依次處理完全部的打印任務
雖然系統中只有一個臺打印機,但每個進程提出打印請求時,系統都會為在輸出井中為其分配一個存儲區(相當于分配了一個邏輯設備),使每個用戶進程都覺得自己在獨占一臺打印機,從而實現對打印機的共享。
SPOOLing技術可以把一臺物理設備虛擬成邏輯上的多臺設備,可將獨占式設備改造成共享設備。
5.5 假脫機技術小結
6 設備分配
6.1 設備分配時應考慮的因素
設備分配時應考慮的因素:設備的固有屬性、設備分配算法、設備分配中的安全性
- 獨占設備:一個時段只能分配給一個進程(如打印機)
- 共享設備:可同時分配給多個進程使用(如磁盤),各進程往往是宏觀上同時共享使用設備,而微觀上交替使用。
- 虛擬設備:采用SPOOLing技術將獨占設備改造成虛擬的共享設備,可同時分配給多個進程使用(如采用SPOOLing技術實現的共享打印機)
先來先服務
優先級高者優先
短任務優先
…
- 安全分配方式:為進程分配一個設備后就將進程阻塞,本次I/0完成后才將進程喚醒。(eg:考慮進程請求打印機打印輸出的例子)
- 特點:一個時段內每個進程只能使用一個設備
- 優點:破壞了“請求和保持”條件,不會死鎖
- 缺點:對于一個進程來說,CPU和I/O設備只能串行工作
- 不安全分配方式:進程發出I/O請求后,系統為其分配I/O設備,進程可繼續執行,之后還可以發出新的I/O請求。只有某個I/O請求得不到滿足時才將進程阻塞。
- 特點:一個進程可以同時使用多個設備
- 優點:進程的計算任務和I/O任務可以并行處理,使進程迅速推進
- 缺點:有可能發生死鎖(死鎖避免、死鎖的檢測和解除)
6.2 靜態分配和動態分配
- 靜態分配:進程運行前為其分配全部所需資源,運行結束后歸還資源
破壞了“請求和保持”條件,不會發生死鎖
- 動態分配:進程運行過程中動態申請設備資源
6.3 設備分配管理中的數據結構
“設備、控制器、通道”之間的關系:
一個通道可控制多個設備控制器,每個設備控制器可控制多個設備。(樹形關系)
設備控制表(DCT):系統為每個設備配置一張DCT,用于記錄設備情況
控制器控制表(COCT):每個設備控制器都會對應一張COCT。操作系統根據COCT的信息對控制器進行操作和管理。
通道控制表(CHCT):每個通道都會對應一張CHCT。操作系統根據CHCT的信息對通道進行操作和管理。
系統設備表(SDT):記錄了系統中全部設備的情況,每個設備對應一個表目。
6.4 設備分配的步驟
注:只有設備、控制器、通道三者都分配成功時,這次設備分配才算成功,之后便可啟動I/O設備進行數據傳送
6.5 設備分配的步驟的改進
原先的缺點:
改進方法:建立邏輯設備名與物理設備名的映射機制,用戶編程時只需提供邏輯設備名
邏輯設備表(LUT)建立了邏輯設備名與物理設備名之間的映射關系。
- 某用戶進程第一次使用設備時使用邏輯設備名向操作系統發出請求,操作系統根據用戶進程指定的設備類型(邏輯設備名)查找系統設備表,找到一個空閑設備分配給進程,并在LUT中增加相應表項。
- 如果之后用戶進程再次通過相同的邏輯設備名請求使用設備,則操作系統通過LUT表即可知道用戶進程實際要使用的是哪個物理設備了,并且也能知道該設備的驅動程序入口地址。
邏輯設備表的設置問題:
- 整個系統只有一張LUT:各用戶所用的邏輯設備名不允許重復,適用于單用戶操作系統
- 每個用戶一張LUT:不同用戶的邏輯設備名可重復,適用于多用戶操作系統
6.6 設備分配與回收小結
7 緩沖區管理
7.1 緩沖區定義及作用
- 緩沖區是一個存儲區域,可以由專門的硬件寄存器組成,也可利用內存作為緩沖區。
- 使用硬件作為緩沖區的成本較高,容量也較小,一般僅用在對速度要求非常高的場合(如存儲器管理中所用的聯想寄存器,由于對頁表的訪問頻率極高,因此使用速度很快的聯想寄存器來存放頁表項的副本)
- 一般情況下,更多的是利用內存作為緩沖區,“設備獨立性軟件”的緩沖區管理就是要組織管理好這些緩沖區
7.2 單緩沖
假設某用戶進程請求某種塊設備讀入若干塊的數據。若采用單緩沖的策略,操作系統會在主存中為其分配一個緩沖區(若題目中沒有特別說明,一個緩沖區的大小就是一個塊)。
注意:當緩沖區數據非空時,不能往緩沖區沖入數據,只能從緩沖區把數據傳出;當緩沖區為空時,可以往緩沖區沖入數據,但必須把緩沖區充滿以后,才能從緩沖區把數據傳出。
結論:采用單緩沖策略,處理一塊數據平均耗時Max(C,T)+M
7.3 雙緩沖
假設某用戶進程請求某種塊設備讀入若干塊的數據。若采用雙緩沖的策略,操作系統會在主存中為其分配兩個緩沖區(若題目中沒有特別說明,一個緩沖區的大小就是一個塊)
雙緩沖題目中,假設初始狀態為:工作區空,其中一個緩沖區滿,另一個緩沖區空
結論:采用雙緩沖策略,處理一個數據塊的平均耗時為Max(T,C+M)
7.4 使用單/雙緩沖在通信時的區別
兩臺機器之間通信時,可以配置緩沖區用于數據的發送和接收。
顯然,若兩個相互通信的機器只設置單緩沖區,在任一時刻只能實現數據的單向傳輸。
若兩個相互通信的機器設置雙緩沖區,則同一時刻可以實現雙向的數據傳輸。
注:管道通信中的“管道”其實就是緩沖區。要實現數據的雙向傳輸,必須設置兩個管道
7.5 循環緩沖區
將多個大小相等的緩沖區鏈接成一個循環隊列。
注:以下圖示中,橙色表示已充滿數據的緩沖區,綠色表示空緩沖區。
7.6 緩沖池
緩沖池由系統中共用的緩沖區組成。這些緩沖區按使用狀況可以分為:空緩沖隊列、裝滿輸入數據的緩沖隊列(輸入隊列)、裝滿輸出數據的緩沖隊列(輸出隊列)。
另外,根據一個緩沖區在實際運算中扮演的功能不同,又設置了四種工作緩沖區:
從空緩沖隊列中取出一塊作為收容輸入數據的工作緩沖區(hin)。沖滿數據后將緩沖區掛到輸入隊列隊尾
從輸入隊列中取得一塊沖滿輸入數據的緩沖區作為“提取輸入數據的工作緩沖區(sin)。緩沖區讀空后掛到空緩沖區隊列
從空緩沖隊列中取出一塊作為“收容輸出數據的工作緩沖區(hout)。數據沖滿后將緩沖區掛到輸出隊列隊尾
從輸出隊列中取得一塊沖滿輸出數據的緩沖區作為“提取輸出數據的工作緩沖區(sout)。緩沖區讀空后掛到空緩沖區隊列
7.7 緩沖區小結
總結
以上是生活随笔為你收集整理的18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一类新算法研究智能飞行器航迹规划问题
- 下一篇: 单链表介绍及其实现