執行i/o的三種技術:
1)可程式設計i/o:處理器代表乙個程序給i/o模組傳送乙個i/o命令;該程序進入忙等待,直到操作完成才可以繼續執行。
2)中斷驅動i/o:處理器代表程序向i/o模組發出乙個i/o命令。有兩種可能性:如果來自程序的i/o指令是非阻塞的,那麼處理器繼續執行發出i/o命令的程序的後續指令。如果i/o指令是阻塞的,那麼處理器執行的下一條指令則來自作業系統,它將當前的程序設定為阻塞態並排程其他程序。
3)直接儲存器訪問(dma):乙個dma模組控制記憶體和i/o模組之間的資料交換。為傳送一塊資料,處理器給dma模組發請求,並且只有當整個資料塊傳送結束後,它才被中斷。
i/o功能的邏輯解構
邏輯i/o:邏輯i/o模組把裝置當作乙個邏輯資源來處理,它並不關心實際控制裝置的細節。邏輯i/o模組代表使用者程序管理的一般i/o功能,允許使用者程序根據裝置識別符號以及諸如開啟、關閉、讀、寫之類的簡單命令與裝置打交道。
裝置i/o:請求的操作和資料被轉換成適當的i/o指令序列,通道命令和控制器命令。
排程和控制:i/o操作的排隊、排程實際發生在這一層。因此在這一層處理終端,收集並報告i/o狀態。這一層是與i/o模組和裝置硬體真正發生互動的軟體層。
i/o緩衝
在討論各種緩衝方法時,有時候需要區分兩類i/o裝置:面向塊的i/o裝置和面向流的i/o裝置。
面向塊的裝置將資訊儲存在塊中,塊的大小通常是固定的,傳輸過程中一次傳送一塊。通常可以通過快號訪問資料。如磁碟和usb智慧卡。
面向流的裝置以位元組流的方式輸入輸出資料,沒有塊結構。如終端、印表機、通訊埠、滑鼠等。
磁碟排程
磁碟排程策略
先進先出(fifo):按照先來先服務的順序處理佇列中的專案。
最短服務時間優先(sstf):選擇使磁頭臂從當前位置開始移動最少的磁碟i/o請求。
掃瞄法(scan):磁頭臂僅僅沿乙個方向移動,並在途中滿足所有未完成的請求,直到它到達這個方向上最後乙個磁軌,或者在這個方向上沒有其他請求為止。接著反轉服務方向,沿相反方向掃瞄,同樣按順序完成所有請求。
迴圈掃瞄法(c-scan):類似於scan,但到達這個方向上的最後乙個磁軌時,不反向掃瞄,而是繼續從起點掃瞄。
raid 6:在raid 5的基礎上,又增加了一種校驗碼,和解方程似的,一種校驗碼乙個方程,最多有兩個未知數,也就是最多壞兩塊盤。
總體來說,
**引自知乎:
磁碟I O排程
io排程器的總體目標是希望讓磁頭能夠總是往乙個方向移動 移動到底了再往反方向走 這恰恰就是現實生活中的電梯模型,所以 io排程器也被叫做電梯 elevator 而相應的演算法也就被叫做電梯演算法.而 linux中io 排程的電梯演算法有好幾種 乙個叫做 as anticipatory 乙個叫做 cf...
作業系統 6 IO管理和磁碟排程學習筆記
io緩衝 在輸入請求發出之前就開始執行輸入傳送,並且在輸出請求發出一段時間之後才開始執行輸出傳送,這項技術成為緩衝 執行io的裝置物件是 1 塊裝置,可以隨機訪問,例如硬碟 快閃儲存器等 2 流裝置,必須順序訪問,例如串列埠和鍵盤 塊裝置中最小的可定址單位是扇區,一般為2的整數倍,最常見的是512。...
Linux下io磁碟排程策略
i o 排程演算法再各個程序競爭磁碟i o的時候擔當了裁判的角色。他要求請求的次序和時機做最優化的處理,以求得盡可能最好的整體i o效能。在linux下面列出4種排程演算法 cfq completely fair queuing 完全公平的排隊 elevator cfq 這是預設演算法,對於通用伺服...