1. 程式人生 > >I/O裝置管理——硬體/控制方式/軟體/磁碟

I/O裝置管理——硬體/控制方式/軟體/磁碟

I/O裝置管理

參考資料:諶衛軍 王浩娟《作業系統》


1.I/O裝置型別

在這裡插入圖片描述


2. CPU與I/O裝置互動流程

在這裡插入圖片描述
控制器:一組晶片,主要整合在主機板或者,I/O裝置內部
控制暫存器:作業系統通過往其中寫不同的值,來執行傳送/接受資料,開啟/關閉操作
狀態暫存器:作業系統通過讀取其中的值,來自的裝置當前狀態(就緒,繁忙等)
資料暫存器:作業系統讀取與寫入資料
資料緩衝區:作業系統用來讀寫操作


3. I/O地址

CPU需要訪問控制器,就需要I/O地址

  1. I/O獨立編址:所有控制器中的每一個暫存器分配一個唯一的I/O埠編號
    構成的地址單元完全獨立,與記憶體地址沒有任何關係
指令 效果
MOV AX [2] 記憶體地址為2的單元內容儲存到暫存器AX中
IN AX [2] I/O埠編號為2的單元內容儲存到暫存器AX中
  1. 記憶體對映編址:所有控制器中的每一個暫存器對映為一個記憶體地址
    與記憶體地址訪問完全相同,一般位於記憶體地址的高位,記憶體低址為普通記憶體
優點 缺點
無需專門的輸入輸出命令 不能對控制暫存器Cache
無需保護機制(防止使用者執行I/O操作) 每次都需要去判斷訪問的是記憶體還是I/O

無需保護機制(防止使用者執行I/O操作原理:記憶體管理中的記憶體保護機制,埠##### 地址排除在使用者程序的邏輯空間之外,不允許他們去訪問

  1. 混合編址:以上兩者的綜合,對於暫存器 I/O獨立編址,對於資料緩衝區 記憶體對映編址

4. I/O控制方式

作業系統知道地址後,那又以什麼方式訪問呢?

  1. 迴圈檢測:進行I/O操作,要詢問I/O裝置是否可用,CPU會一直詢問並等到I/O操作完成,再進行下一步----造成了CPU的迴圈等待,十分浪費
  2. 中斷機制:就是讓CPU不去等待I/O操作完成,而是讓中斷控制器去處理,讓他去叫CPU處理,但最後還是CPU處理。
    在這裡插入圖片描述
    注:只有中斷處理器收到確認訊號方可以發出新的中斷訊號
  3. DMA :直接記憶體訪問
    在這裡插入圖片描述
    注:CPU已經發送命令讓磁碟控制器讀取了磁碟的資料到他的資料緩衝區
    1:向磁碟控制器發出讀操作,把要寫入記憶體地址打在總線上
    2:磁碟控制器的資料緩衝區取一個位元組,寫入第一步所給地址記憶體中
    3:前兩步執行完成後,磁碟控制器向DMA控制器傳送確認訊號(記憶體位元組+1,傳送位元組數-1 if計數器>0 返回第一步)
    注:對DMA程式設計指CPU可以向DMA傳送讀寫等等操作

5. 以上已經能實現對I/O的控制,但控制過於細節,為了去掉細節,我們需要設計I/O軟體,更好的管理

在這裡插入圖片描述

API

如WindowsAPI
BOOL ReadFile(HANDLE,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
這是一個ReadFile API 的引數,對於開發應用程式的人來說,只要知道這個函式怎麼用就行,讓作業系統再去操作那些細節
注:一般我們希望API分兩類,阻塞I/O,形象的來說scanf ;非阻塞I/O 就會涉及到多執行緒程式設計

抽象介面

抽象介面面對的裝置,所以函式原型相同,於是通過驅動程式來對抽象介面進行轉換,比如引數等等,然後才能向裝置控制器傳送指令

裝置獨立的I/O軟體

  1. 定義與實現了API與抽象介面
  2. 提供裝置無關的資料塊大小
  3. 快取技術

拓展:Spooling技術

作用:多道讓CPU可以成為多個邏輯CPU;Spooling技術讓一臺I/O裝置成為多臺邏輯I/O裝置…

6.介紹具體裝置—磁碟

1.結構

磁碟裝置有一個或多個物理碟片,每個物理碟片有一個或者兩個儲存面,儲存面上有若干磁軌,每個磁軌又分若干扇區(資料塊),扇區與扇區間有扇區間隔,磁軌與磁軌間有磁軌間隙,扇區裡的不同欄位有間隙

2. 格式化情況(溫切斯特盤)

600個位元組 ,512位元組存放資料,其餘放其他資訊[圖片來自湯小丹計算機作業系統] 下面數字為大小 單位Byte
在這裡插入圖片描述
Synch Byte:該欄位定界符
CRC:段校驗

3.磁碟訪問時間

尋道時間(移到磁軌)(大部分)+旋轉延遲時間(移到扇區)+傳輸時間

4.磁碟排程演算法

為了減少尋道時間
在這裡插入圖片描述