我的操作系統復習——I/O控制和系統調用


  上篇博客介紹了存儲器管理的相關知識——我的操作系統復習——存儲器管理,本篇講設備管理中的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)中斷向量地址:存儲中斷向量的存儲單元地址

 

 

 

 參考:《計算機操作系統(湯子瀛)》、百度

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM