上篇部落格介紹了存儲器管理的相關知識——我的作業系統複習——存儲器管理,本篇講裝置管理中的I/O控制方式和作業系統中的系統調用。
一、I/O控制方式
I/O就是輸入輸出,I/O裝置指的是輸入輸出裝置和儲存設備。I/O控制方式值得就是CPU對記憶體資源與I/O裝置之間輸入輸出的控制。I/O的控制方式按照發展有下面幾種:
(1)、程式I/O方式。
這個最原始的方式的特點是I/O過程中,CPU全程阻塞。CPU向I/O控制器發送指令,要求讀取一個位元組,IO控制器取一個位元組,存入自身的資料寄存器中,存入完畢後通知CPU。然後CPU把這個位元組存入記憶體。在這個過程中,CPU的大部分時間都在等待操作完成。值得注意的是,這種控制方式必須以位元組為機關。
(2)、中斷驅動I/O控制方式。
這種控制方式的特點是I/O過程中,CPU跟I/O控制器并行工作,無需阻塞。傳輸過程跟程式I/O方式沒差別。不過由于CPU在I/O過程中無需阻塞,效率比之程式I/O方式提高了百倍。
(3)、直接存儲器通路I/O控制方式——DMA(Direct Memory Access)
這是一種非常有效率的I/O控制方式——資料傳輸的基本機關是資料塊;DMA控制器将資料直接送入記憶體;整個資料塊傳送開始和結束的一刻CPU才會處理,其他時候CPU與控制器并行工作。值得注意的是DMA控制方式是由DMA控制器實作的,DMA控制器有3部分——主機&控制器接口、控制器&塊裝置接口和I/O控制邏輯。核心就是主機&控制器接口,這個接口是為了完成主機和塊資料的直接交換。DMA控制器為了實作功能有四類寄存器:指令/狀态寄存器(CR),用來存放控制資訊和狀态;記憶體位址寄存器(MAR),存放目标位址;資料寄存器(DR),相當于緩存,暫存資料;以及資料計數器(DC),存放本次 CPU 要讀或寫的字(節)數。資料傳送的過程,簡單來說就是,傳送前在MAR中設定目标位址,在DC中設定資料塊大小,然後控制器每從磁盤取資料存入記憶體或從記憶體取資料存入磁盤,就把MAR中的目标位址加一,并把DC中資料塊大小減一,直到DC中資料塊大小為0,資料便傳送完畢。可以看到,DMA是由硬體實作資料塊移動的。
(4)、I/O通道控制方式
這種控制方式是對DMA方式的改進,把一個資料塊的傳輸改進為一組資料塊的傳輸。通道指的是這整個傳輸的虛拟含義。I/O通道控制方式是由通道程式和裝置控制器共同實作的。可以說,它比DMA方式改進的地方在于用程式增加了對DMA方式的控制,使多個資料塊的傳輸能夠合為一個整體。
《計算機作業系統》上這一幅流程圖直接拿來用了:

二、系統調用
什麼是系統調用?系統調用說白了就是作業系統提供的接口,用以與系統通信,取得系統服務。應用程式需要通過系統調用才能通路作業系統的關鍵資源。首先來了解一下計算機的兩種狀态。
(1)、計算機的兩種狀态——系統态和使用者态
系統态和使用者态,其本質就是CPU的兩種狀态。
1)系統态,又稱管态或核心态。處理機運作作業系統的狀态。
2)使用者态,又稱目态。處理機運作應用程式的狀态。
應用程式需要調用系統功能時,通過系統調用,CPU轉為系統态,取得系統資源,執行系統功能。對應CPU的系統态和使用者态,CPU所執行的指令分為特權指令和非特權指令。
(2)CPU執行的兩種指令——特權指令和非特權指令。
1)特權指令
即CPU在系統态所執行的指令。這種指令隻允許系統态的CPU運作,即隻允許作業系統調用。特權指令可以對作業系統執行能執行的所有操作,不受任何限制。
2)非特權指令
即CPU在使用者态所執行的指令。這種指令隻能執行一般性的操作任務,不能直接進行通路系統中的硬體和軟體,其對記憶體的通路範圍也局限于使用者空間。應用程式想要通路系統中的硬體和軟體,隻能通過系統調用間接進行。
(3)系統調用的實作
那麼系統調用是怎麼實作的呢?系統調用是通過中斷機制實作的,并且是同一個中斷入口來實作。具體操作就是系統調用的時候,CPU轉換為系統态,請求系統服務,處理完畢後繼續執行應用程式。這裡有幾個概念需要了解一下:
1)中斷的本質:百度百科解釋的很好:“CPU執行完每條指令時,都會去檢查一個中斷标志位”,這句話是所有關于中斷長篇大論的開場白,但很容易被人忽略,其實,這就是中斷的本質。
2)内中斷(陷入、捕獲):由于系統調用引起的中斷
3)陷入指令:由于系統調用引起中斷的指令稱為陷入指令。
4)中斷辨別碼(中斷類型号):由硬體(通常是中斷控制器)産生,以辨別不同的中斷源。
5)中斷向量:中斷服務程式的入口位址。在某些計算機中,中斷向量的位置存放一條跳轉到中斷服務程式入口位址的跳轉指令。
6)中斷向量位址:存儲中斷向量的存儲單元位址
參考:《計算機作業系統(湯子瀛)》、百度
/**
* ————————如果覺得本博文還行,别忘了推薦一下哦,謝謝!
* 作者:錢書康
* 歡迎轉載,請保留此段聲明。
* 出處:http://www.cnblogs.com/zrtqsk/
*/