1、作業系統中的I/O結構認識I/O作業I/O作業要開始前,CPU會先把指令送到控制單元的暫存器裡頭,然後控制單元會檢視這些指令,決定該進行什麼動作I/O作業源自使用者程序或是其他執行中的程序,通常是程序本身需要進行I/O作業,送出了請求I/O作業的兩種情況同步(Synchronous)I/O:執行中的程序等待I/O作業完成,資料傳送完以後,程序才會繼續執行。非同步(asynchronous)I/O:送出I/O請求的程序繼續執行,這種方式可以提昇作業系統的效率,因為CPU的使用率提高了。中斷處理I/O作業時執行程序的狀態變化序列傳輸與平行傳輸個人電腦中各主要裝置的配置圖硬體層面的作業使用特殊的I/
2、O指令記憶體映射(memory mapped)CPU和控制器之間的溝通輪詢(Polling)中斷(Interrupt)直接記憶存取(DMA Direct Memory Access)輪詢(Polling)的溝通方式中斷處理的程序常見的中斷類型基本的指令週期I/O程式分成3個部分進行I/O的準備實際的I/O指令完成I/O作業沒有中斷時程式的控制流程有中斷時程式的控制流程中斷時控制的轉移支援中斷時的指令週期簡單的中斷處理的流程多重中斷的處理在中斷正在處理時先暫停中斷(disable interrupts)定義中斷的優先順序(priority)直接記憶存取(DMA)為了減輕CPU進行I/O的負擔,在
3、電腦系統的設計上可以加入一個具有獨立處理器的裝置,叫做直接記憶存取控制器(DMA Controller,Direct Memory Access Controller)在DMA進行時,有時候主記憶體連接的匯流排會被DMA Controller佔用,造成CPU暫時無法使用主記憶體,這種現象稱為cycle stealing對CPU的效能會有一些影響,但整體來說,DMA所減輕的負荷遠勝於帶來的副作用,尤其在I/O作業含大量資料的情況下更為明顯DMA的原理使用DMA跟沒有使用DMA的比較作業系統中的抽象化I/O裝置的特性分類傳輸單位同時性傳輸速率資料存取方式讀(read)與寫(write)的特性共用方
4、式I/O作業分類block I/Ocharacter-stream I/O記憶體映射(memory-mapped)的檔案存取網路存取介面常見的I/O裝置的特性系統呼叫(system calls)的特性阻絕式呼叫(blocking call)非阻絕式呼叫(Non-blocking call)非同步的呼叫(Asynchronous call)作業系統核心的輸出入架構作業系統層次的輸出入作業I/O的排程(Scheduling)緩衝處理(buffering)快取記憶體(cache)的運用儲位(Spool)的運用溝通的訊息與系統資料的處理緩衝處理的時機資料傳送兩方的速率不一致資料傳送兩方接受的資料單位大小不同複製效應(copy semantics)儲位系統(spooling system)串流(streams)的概念串流(stream)是一種通化的概念,我們把程式輸入與輸出資料的方式看成是資料的串流進出程式的處理範圍程式可以透過串流來跟記憶體(memory)、螢幕顯示(console)、檔案以及網路通訊槽(network sockets)之間交換資料串流類別之間的關係InputStream的觀念使用InputStreamReader做bytes與characters的轉換使用OutputStreamWriter做bytes與characters的轉換