個人操做系統複習——I/O控制和系統調用

  上篇博客介紹了存儲器管理的相關知識——個人操做系統複習——存儲器管理,本篇講設備管理中的I/O控制方式和操做系統中的系統調用。html

1、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的大部分時間都在等待操做完成。值得注意的是,這種控制方式必須以字節爲單位。spa

(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是由硬件實現數據塊移動的。htm

(4)、I/O通道控制方式

  這種控制方式是對DMA方式的改進,把一個數據塊的傳輸改進爲一組數據塊的傳輸。通道指的是這整個傳輸的虛擬含義。I/O通道控制方式是由通道程序和設備控制器共同實現的。能夠說,它比DMA方式改進的地方在於用程序增長了對DMA方式的控制,使多個數據塊的傳輸可以合爲一個總體。blog

   《計算機操做系統》上這一幅流程圖直接拿來用了:接口

 

 2、系統調用

   什麼是系統調用?系統調用說白了就是操做系統提供的接口,用以與系統通訊,取得系統服務。應用程序須要經過系統調用才能訪問操做系統的關鍵資源。首先來了解一下計算機的兩種狀態。內存

(1)、計算機的兩種狀態——系統態和用戶態

  系統態和用戶態,其本質就是CPU的兩種狀態。資源

  1)系統態,又稱管態或核心態。處理機運行操做系統的狀態。get

  2)用戶態,又稱目態。處理機運行應用程序的狀態。

  應用程序須要調用系統功能時,經過系統調用,CPU轉爲系統態,取得系統資源,執行系統功能。對應CPU的系統態和用戶態,CPU所執行的指令分爲特權指令和非特權指令。

(2)CPU執行的兩種指令——特權指令和非特權指令。

  1)特權指令

  即CPU在系統態所執行的指令。這種指令只容許系統態的CPU運行,即只容許操做系統調用。特權指令能夠對操做系統執行能執行的全部操做,不受任何限制。

  2)非特權指令

  即CPU在用戶態所執行的指令。這種指令只能執行通常性的操做任務,不能直接進行訪問系統中的硬件和軟件,其對內存的訪問範圍也侷限於用戶空間。應用程序想要訪問系統中的硬件和軟件,只能經過系統調用間接進行。

(3)系統調用的實現

  那麼系統調用是怎麼實現的呢?系統調用是經過中斷機制實現的,而且是同一個中斷入口來實現。具體操做就是系統調用的時候,CPU轉換爲系統態,請求系統服務,處理完畢後繼續執行應用程序。這裏有幾個概念須要瞭解一下:

  1)中斷的本質:百度百科解釋的很好:「CPU執行完每條指令時,都會去檢查一箇中斷標誌位」,這句話是全部關於中斷長篇大論的開場白,但很容易被人忽略,其實,這就是中斷的本質。

  2)內中斷(陷入、捕獲):因爲系統調用引發的中斷

  3)陷入指令:因爲系統調用引發中斷的指令稱爲陷入指令。

  4)中斷標識碼(中斷類型號):由硬件(一般是中斷控制器)產生,以標識不一樣的中斷源。

  5)中斷向量:中斷服務程序的入口地址。在某些計算機中,中斷向量的位置存放一條跳轉到中斷服務程序入口地址的跳轉指令。

  6)中斷向量地址:存儲中斷向量的存儲單元地址

 

 

 

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

相關文章
相關標籤/搜索