io系統的基本功能,操作系統 第五章 IO管理

 2023-10-20 阅读 24 评论 0

摘要:5.1 IO管理概述 IO設備根據不同的分類標準,可以進行不同的分類。 首先,根據IO設備的使用特性,可以分為人機交互類外部設備(打印機、顯示器)、存儲設備和網絡設備。按照傳輸速率分類,可以分為低速設備、中速設備和高速設備。按照信息

5.1 IO管理概述

IO設備根據不同的分類標準,可以進行不同的分類。
首先,根據IO設備的使用特性,可以分為人機交互類外部設備(打印機、顯示器)、存儲設備和網絡設備。按照傳輸速率分類,可以分為低速設備、中速設備和高速設備。按照信息交換的單位分類可以分為塊設備字符設備,塊設備的信息存取以數據塊為單位,速率快而且可以尋址,字符設備傳輸的基本單位為字符,傳輸速率低而且不可尋址。

外圍設備與內存之間的輸入輸出控制方式主要有四種,在計算機組成原理中提到了三種,在操作系統中又補充了一種:
①程序直接查詢方式
在計算機組成原理中叫做程序查詢方式,CPU對外設狀態進行循環檢查,直到確定需要的數據已經在IO設備的數據寄存器中,這個過程屬于快速的CPU一直在等待慢速的IO設備,所以造成了CPU的資源浪費。這種方式下由于CPU沒有采用中斷機構,所以IO設備無法向CPU報告已經完成了一個字符的輸入,從而只能讓CPU循環掃描。
在這里插入圖片描述

io系統的基本功能。②中斷驅動方式
在計算機組成原理中叫做程序中斷方式,通過增加中斷機構,讓CPU擺脫外設的限制。該方式之下,CPU給IO設備發送IO信號之后,無需循環等待IO設備,而是繼續做自己的任務,當IO設備完成輸入之后,通過中斷的方式報告CPU,由CPU采用中斷的處理來完成IO輸入輸出。具體的中斷過程屬于計算機組成原理的內容。中斷驅動方式相比于程序直接控制方式,由于不需要讓快速的CPU等待慢速的外設,所以CPU的利用率提高了很多,但是每次中斷CPU都需要進行上下文的保護以及切換,所以還是需要一定的開銷。
在這里插入圖片描述
③DMA方式
在中斷驅動方式的基礎上再次優化,DMA方式的基本思想是在IO設備和內存之間開辟一條單獨的數據交換通路,從而徹底解放CPU。采用DMA方式的情況下,數據傳輸的單位是,數據在內存和設備之間傳送而不需要經過CPU,僅在傳輸開始或者結束時才需要CPU的干預,而數據的傳送是由專屬的DMA控制器來完成。
在這里插入圖片描述
DMA控制器主要由四部分組成:
a 命令/狀態寄存器:用于接收CPU發過來的IO命令或者控制信息
b 內存地址寄存器:用于存放地址,輸入時為數據要放在內存上的地址,輸出時為數據來自于內存的地址。
c 數據寄存器:用于暫存本次要傳送的數據
d 數據計數器:用于存放本次要傳送的字節數

DMA控制器是很具有自主性的控制器,DMA控制器工作過程中,首先IO設備發出DMA請求,CPU收到DMA請求后啟動DMA控制器,然后繼續工作,關于IO的事情就交給DMA代為處理,根據計算機組成原理,DMA控制器此時占據總線,CPU進行的工作不能使用總線,當DMA控制器完成數據傳送時會再次發送中斷信號報告CPU已經完成。所以只有傳送開始和結束的時候才會用到CPU
對比DMA方式和中斷驅動方式,前者在傳送的一批數據完全傳送完時才會中斷通知CPU,而后者每次傳輸一個數據就需要一次中斷,此外前者是在DMA控制器的控制下完成的,而后者則是在CPU控制下來完成傳輸。可以說DMA方式以存儲器為核心,而中斷控制方式以CPU為核心。此外DMA是以為單位進行傳輸,而中斷控制方式以字節為傳輸單位。
④通道控制方式
這種方式是操作系統中才介紹的,屬于對DMA方式的進一步優化。IO通道指的是專門負責輸入輸出的處理機,這種方式可以進一步減少CPU的干預,即把以一個數據塊的讀寫為單位的干預換成對一組數據塊的讀寫為單位,同時還可以實現CPU、通道和IO設備三者的并行。
簡單來說這種方式就是多IO設備的DMA方式,比如當CPU需要完成一組相關的讀寫操作及有關控制時,只需要向IO通道發送一條IO指令,給出要執行的通道程序的首地址和要訪問的IO設備,可以進行多個IO設備的傳送。數據傳送結束時再向CPU發出中斷請求。
IO通道可以看作是專門為IO而生的簡化處理機,通道指令類型單一,而且沒有自己的內存,通道所執行的通道程序是存放在內存上的,即通道與CPU共享內存。
相比于DMA方式,DMA方式需要CPU來控制數據塊大小、傳輸的位置等,而通道方式完全是由通道來控制的,此外每個DMA控制器對應一臺設備與內存傳遞數據,而一個通道可以控制多臺設備和內存的數據交換。
在這里插入圖片描述
這部分屬于課本上有但是王道上沒有的,常用的通道有三類:
a 字節多路通道
字節多路通道是一種簡單的共享通道,主要用于連接控制多臺低速外設,以字節交叉方式傳送數據。例如,某個外設的數據傳輸率只有1000B/s,即傳送1個字節的時間間隔是1ms,而通道從設備接收或發送一個字節只需要幾百ns,因此,通道在傳送兩個字節之間有很多空閑時間,字節多路通道正是利用這個空閑時間為其他設備提供服務。每個設備分時占用一個很短的時間片,不同的設備在各自分得的時間片內與通道建立連接,實現數據的傳輸。
b 選擇通道
選擇通道又稱高速通道,在物理上它可以連接多個設備,但是這些設備不能同時工作,在某一個時間段內通道只能選擇一個設備進行工作。選擇通道很像一個單道程序的處理器,在一段時間內只允許執行一個設備的通道程序,只有當這個設備的通道程序全部執行完畢后,才能執行其他設備的通道程序。選擇通道主要用于連接高速外圍設備,如磁盤、磁帶等,信息以成組方式高速傳輸。由于數據傳輸率很高,如達到1.5MB/s,通道在傳送兩個字節之間只有很少的空閑時間,所以,在數據傳送期間只為一臺設備服務是合理的。但是,這類設備的尋址等輔助操作的時間往往很長,在這樣長的時間里通道一直處于等待狀態,因此,整個通道的利用率還不是很高。
c 數組多路通道
連接控制多個高速外設并以成組交叉方式傳送數據的通道稱為數組多路通道。數組多路通道是對選擇通道的一種改進,當某個設備進行數據傳送時,通道只為該設備提供服務;當設備在執行尋址等控制性動作時,通道暫時斷開與該設備的連接,掛起該設備的通道程序,而轉去為其他設備提供服務,即執行其他設備的通道程序。所以,數組多路通道很像一個多道程序的處理器。
從圖里面可以看出,字節多路是多個外設一個傳輸一字節從而交替進行,選擇通道是選擇連接的多個外設中的一個進行傳輸,而數組多路則是對前面兩種的綜合。

IO軟件涉及范圍很廣,IO軟件不僅要與硬件打交道,而且還需要與進程協作。一般來說IO軟件普遍采用層次式結構,這種結構類似于計算機網絡中的分層結構,上下層之間靠接口連接,上層只需要知道下次提供的服務而不需要知道服務的具體細節。
一個比較合理的層次劃分如下:
在這里插入圖片描述
整個IO系統可以看作四個層次的系統結構:
①用戶層IO軟件
實現與用戶交互的接口,用戶可直接調用在用戶層提供的、與IO操作有關的庫函數對設備進行操作。
②設備獨立性軟件
用于實現用戶程序與設備驅動器的統一接口、設備命令、設備保護及設備分配與釋放,同時為設備管理和數據傳送提供必要的存儲空間。
設備獨立性也稱作設備無關性,是使得應用程序獨立于具體使用的物理設備。為了實現設備獨立性,引入了邏輯設備和物理設備,應用程序中用邏輯設備名來請求使用某種設備,而系統在實際執行時必須將邏輯設備映射成為物理設備名來使用。這樣做增加了設備分配的邏輯性,易于實現IO設備的重定向。一般為了實現設備獨立性,都需要在驅動程序上再設置一層設備獨立性軟件,設備獨立性軟件需要執行所有設備的公有操作,并且向用戶層提供統一接口。
③設備驅動程序
硬件直接相關,負責具體實現系統對設備發出的操作指令,驅動IO設備工作的驅動程序。通常每類設備配置一個設備驅動程序,它是IO進程與設備控制器之間的通信程序。
④中斷處理程序
用于保存被中斷進程的CPU環境,轉入相應的中斷處理程序,處理完成后恢復現場。
⑤硬件設備
一般包括一個機械部件和一個電子部件,電子部件稱為設備控制器,一般是一塊電路板,而機械部件則是設備本身。
設備控制器通過寄存器與CPU通信,可以看作是IO設備的代理人。設備控制器需要實現的功能包括接受識別CPU或者通道的指令、實現數據交換、發現和記錄設備及自身的狀態信息和識別設備地址。
設備控制器需要分成兩部分來看:
a 設備控制器與CPU的接口
該接口和CPU相連,需要三類信號線(數據線、地址線和控制線),數據線一般和數據寄存器、控制狀態寄存器相連。
b 設備控制器與設備的接口
該接口與設備相連,一個接口對應一臺設備。
c IO邏輯控制
用于實現對于設備的控制,負責選擇相應的設備。
在這里插入圖片描述

5.2 核心子系統

io端口的作用?IO子系統是指控制設備的多種方法,它將內核的其他方面從繁重的IO設備管理中解脫出來。

IO子系統需要解決的問題首先是IO調度,即選擇一個好的順序來執行這些IO請求,讓進程之間公平地進行設備的訪問,上一章中的磁盤調度算法其實就屬于IO調度中的一種。

操作系統中通過使用磁盤高速緩存技術來提高磁盤的IO速度。該技術是指利用內存上的存儲空間來暫存從磁盤中讀出的一系列盤塊中的信息,所以磁盤高速緩存理論上屬于磁盤,而物理上是駐留在內存上的物理盤塊
高速緩存在內存中分為兩種形式,一種是在內存上開辟一個單獨的存儲空間作為磁盤高速緩存,大小固定;另一種是把未利用的內存空間作為一個緩沖池,用于共享。

io系統的組成?引入緩沖區,主要是為了以下目的:
在這里插入圖片描述
當緩沖區的數據非空時不能向緩沖區沖入數據,只能把數據從緩沖區傳出;當緩沖區為空時,可以網緩沖區沖入數據,但必須把緩沖區充滿后才能從緩沖區中把數據傳出。
在引出緩沖區之間,在緩沖區這部分有一個常用的計算處理時間的方法。首先規定一個初始狀態,然后計算下一次到達相同狀態所需要的時間,這個時間就是處理一塊數據所需要的時間。這個方法在緩沖區部分會很常用。
根據系統設置緩沖器的個數,緩沖區可以分為以下幾種:
①單緩沖
設備和處理機之間設置一個緩沖區,交換數據時,先把被交換的數據寫入緩沖區,之后需要的設備或者處理機將數據從緩沖區中取走。
在這里插入圖片描述
根據前面所提到的計算處理時間的方法,可以得到單緩沖區處理每塊數據的用時為max(C,T)+M
②雙緩沖
IO設備先裝填緩沖區1,填滿后再填充緩沖區2,此時緩沖區1中的數據可以取出交給進程處理,當緩沖區1中的數據處理完后,如果緩沖區2也滿了,那就處理緩沖區2同時填充緩沖區1。
這種方式提高了處理機和輸入設備的并行操作的程度。采用相同的方式,可以得到雙緩沖區處理每塊數據的用時為max(C+M,T)。采用雙緩沖區時,當M+C>T時,相當于處理器消費的很慢,所以CPU不需要等待設備輸入,當M+C<T時,處理器消費速度很快,所以需要等待緩沖區滿,即可使塊設備連續輸入。
③循環緩沖
包含許多個大小相等的緩沖區,每個緩沖區中有一個鏈接指針指向下一個緩沖區,最后一個緩沖區又指向第一個緩沖區,多個緩沖區構成一個環形。需要兩個指針來指示緩沖區。
④緩沖池
多個系統公用的緩沖區組成,緩沖區按照使用情況分為三個隊列:空緩沖隊列、裝滿輸入數據的緩沖隊列和裝滿輸出數據的緩沖隊列
在這里插入圖片描述
IO子系統也需要考慮設備的分配和回收。
設備的分配需要充分發揮設備的使用效率,盡可能讓設備忙碌,但是又要避免由于不合理的分配方法而導致的進程的死鎖。從設備的特性上來看,設備可以分為下面三類:
獨占式使用設備
申請設備時如果設備空閑才可以使用并且獨占,不允許其他進程申請使用,直到該設備被釋放才能允許其他進程申請使用。
分時式共享使用設備
一定程度上提高了使用率,對磁盤的IO操作其實就屬于分時式共享使用設備。
③以SPOOLing方式使用外部設備
即假脫機IO技術,即對IO操作進行批處理,屬于一種拿空間換時間的技術。

設備分配過程需要一個設備控制表(DCT)用一個設備控制表來表征一個設備,表中的表項就是設備的各個屬性。這種思想在進程(PCB)、文件(FCB)的思想是一樣的。系統中設置一張系統設備表,每個連接到系統中的設備都在里面占據一個表面。

設備分配時需要根據設備特性、用戶要求和系統配置情況來綜合考慮,總原則是:既要充分發揮設備的使用效率,又要避免死鎖,同時還需要將用戶程序和具體設備隔離開。
為了實現設備獨立性,應用程序內部使用的是邏輯設備名來請求某類設備,而系統中有一張邏輯設備表,用于將邏輯設備名轉換為物理設備名。

io子系統。SPOOLing技術也叫假脫機技術,指的是為了緩和CPU高速性與IO設備低速性之間的矛盾從而引入的技術。該技術利用專門的外圍控制機,將IO設備的數據傳送到高速磁盤上,或者相反。
該技術組成如圖:
在這里插入圖片描述
磁盤上的輸入井和輸出井是內存中開辟的兩個單獨的存儲區域,輸入井用于模擬脫機輸入時的磁盤,可以收容IO設備輸入的數據,輸出井用于模擬脫機輸出時的磁盤,用于收容用戶程序的輸出數據。
內存中劃分兩個緩沖區,輸入緩沖區用于暫存由輸入設備送來的數據,以后傳送到輸入井,輸出緩沖區則暫存從輸出井送來的數據,以后傳送到輸出設備。
輸入進程用于模擬脫機輸入時的外圍控制機,將用戶要求的數據從輸入機通過輸入緩沖區送入輸入井,輸出進程模擬脫機輸出時的外圍控制機,把用戶要求輸出的數據先送到內存在送到輸出井。
這個技術比較抽象,共享打印機就是使用該技術的一個實例。當用戶進程請求打印輸出時,該系統同意為它打印輸出,但并沒有立即把打印機分配給該進程,而是在由輸出進程將要打印的數據暫存在輸出井,再由輸出進程去打印隊列上排隊。這樣子CPU要打印打印的數據可以先輸出到磁盤的輸出井中,之后做其他的事情,打印交給SPOOLing系統去做,由于輸出到磁盤的速度比打印機快,所以提高了速度。

典型題

在這里插入圖片描述
設備的固有屬性決定了決定了設備的使用方式,設備獨立性可以提高設備分配的靈活性和設備的利用率,設備安全性可以保證分配設備時不會導致永久阻塞,而及時性一般不考慮。
在這里插入圖片描述
典型的現學現賣題目,這道題只要看懂就完全不需要太多的知識。每分鐘打印6頁,一頁是50行,一行是80個字符,所以有6×50×80個字符,而每個字符需要50微秒的處理時間,所以總共處理字符的中斷時間為50×10的-6次方×24000=1.2秒,所以占的比例為2%。
在這里插入圖片描述
緩沖區的計算題是這部分比較典型的題目。根據緩沖區的知識,只有緩沖區滿了以后才能傳遞給進程,進程消耗完后等緩沖區滿了才能再取數據。所以一開始100微秒用于填滿緩沖區,之后50微秒傳送到CPU,之后的50微秒CPU在分析數據,與此同時磁盤也在向緩沖區讀入數據,當50微秒過后緩沖區沒滿,必須要等到第250毫秒才能開始傳送到CPU。所以相當于一次傳送需要150微秒,十個磁盤塊的文件,需要10次傳送,最后一次還需要額外的50毫秒分析,所以在單緩沖區結構下,需要1550微秒。而雙緩沖區情況下,由兩個緩沖區交替進行,首先填滿緩沖區1用100微秒,之后傳輸和分析的過程在完成后,緩沖區2搞好填滿,再次重復填充緩沖區1,如此下來,最后一次填滿剛好是1000微秒,再加上傳送到CPU與分析的100微秒,總共是1100微秒。其實也沒必要這么麻煩,雙緩沖區必然要比單緩沖區優秀,所以必然是時間更小,所以直接排除CD。
在這里插入圖片描述
這是一道同類型的計算題,數據塊數目較少可以直接手動模擬。一開始100用來從外設讀入到緩沖區,滿了以后移動到工作區用5,接下來90工作區開始分析,但是完成后緩沖區沒滿,等到總時間的205才滿,轉移到用戶工作區并分析,再消耗95,總共用時300.
在這里插入圖片描述
鼠標移動時,若有優先級更高的操作產生,為了記錄鼠標的活動,必須要采用緩沖技術。磁盤驅動器和IO設備之間的吞吐量不同,所以也需要緩沖技術。為了能使數據從用戶作業空間傳送到磁盤從磁盤傳送到用戶作業空間,需要緩沖技術。為了便于多幅圖形的存取以及提高性能,緩沖技術可以采用,特別是在顯示當前一幅圖形又要得到下一幅圖形時。

專業課終于搞完了,雖然也沒感覺記住了多少,總歸是記住了一點。希望剩下來的復習一切順利!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/152932.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息