計算機必須在記憶體或ram(随機通路記憶體random access memory)運作,記憶體是處理器可以直接通路的唯一大容量存儲區域。
記憶體和處理器本身内置寄存器是cpu能直接通路的唯一存儲媒體。
指令load能将記憶體中的字移到cpu内部的寄存器中。而指令store能将寄存器的内容移動到記憶體。除了顯式使用load和store,cpu可自動從記憶體中裝入指令以執行。
記憶體比較小,并且是易失性儲存設備,是以計算機系統提供輔助存儲器作為記憶體的擴充。
對于i/o,每個i/o控制器都有寄存器來報存指令和所要傳輸的資料。通常,特殊的i/o指令允許在這些寄存器和系統記憶體之間進行資料傳輸。為了允許對這些i/o裝置更友善的通路,許多計算機體系結構都提供記憶體映射i/o,記憶體位址的一塊範圍被單獨分開,并映射到裝置管理器。通過讀寫這些記憶體位址就能實作與裝置寄存器之間的資料傳輸。
通用計算機系統有一個cpu和多個裝置控制器組成,他們通過共同的總線連接配接起來。每個裝置控制器負責特定類型的裝置,可有多個裝置與其連接配接。裝置控制器維護一定量的本地緩沖存儲和一定用途的寄存器。裝置控制器負責在其所控制的外部裝置與本地緩存之間進行資料傳遞。通常作業系統為每個裝置控制器提供一個裝置驅動程式。
為了開始i/o操作,裝置驅動程式在裝置控制器中裝載适當的寄存器。相應的,裝置控制器檢查這些寄存器的内容以決定采取什麼操作(如從鍵盤讀取一個字元),控制器開始從裝置向本地緩存傳輸資料,一旦資料傳輸完成,裝置控制器會通過中斷告訴驅動程式已完成操作,然後,驅動程式傳回對作業系統的控制。
一旦i/o開始,就可能有兩種行動過程。對于最簡單的情況,開始進行i/o,在i/o完成後,控制權傳回給使用者程序,這種情況稱為同步i/o。另一種可能,稱為異步i/o,無須等待i/o完成,就将控制權傳回給使用者程式。接着i/o繼續進行,同時其他系統操作照常進行。
等待i/o完成可以采用:wait指令使cpu空閑直到下一個中斷開始。等待循環。
一種更好地選擇是開始i/o之後,就繼續執行其他作業系統或者使用者程式代碼。如果需要,系統調用就要允許使用者程式等待i/o的完成。如果沒有使用者程式就緒可執行,作業系統也沒有其他工作可做,那麼需要wait或空閑循環以及能夠在同一時刻跟蹤多個i/o請求,為此,作業系統采用了裝置狀态表。
這種i/o中斷驅動适合少量資料,dma(直接記憶體通路)可以用于大量資料移動,裝置控制器能在本地緩沖和記憶體之間傳送一整塊資料,而無需cpu的幹預,且每塊隻産生一個中斷,而不是一個位元組一個中斷。