計算機系統常見的系統調用
系統調用概念
系統調用是操作系統提供給用戶程序調用的介面。用戶程序通過介面來獲得操作系統內核提供的服務。系統調用可被看成是一個內核與用戶空間程序交互的介面——它好比一個中間人,把用戶進程的請求傳達給內核,待內核把請求處理完畢後再將處理結果送回給用戶空間。系統調用的概念涉及到內核態和用戶態:
內核態:當一個任務(進程)執行系統調用而陷入內核代碼中執行時,我們就稱進程處於內核運行態(或簡稱為內核態)。此時處理器處於特權級最高的(0級)內核代碼中執行。當進程處於內核態時,執行的內核代碼會使用當前進程的內核棧。每個進程都有自己的內核棧。
用戶態:當進程在執行用戶自己的代碼時,則稱其處於用戶運行態(用戶態)。即此時處理器在特權級最低的(3級)用戶代碼中運行。當正在執行用戶程序而突然被中斷程序中斷時,此時用戶程序也可以象徵性地稱為處於進程的內核態。因為中斷處理程序將使用當前進程的內核棧。這與處於內核態的進程的狀態有些類似。
內核態執行的代碼是是操作系統特有的,代碼一般簡單精鍊。應用程序通過系統調用進入內核態執行達到實際訪問計算機其他資源的目的。
應用代碼從用戶態到內核態是通過系統調用實現的。實現過程如下:
1、準備調用參數
2、系統調用進入內核態
3、內核態執行
4、內核態的返回數據複製到用戶態
5、用戶態得到調用結果
常見的unix系統調用主要分為三類:文件操作系統的系統調用,控制類的系統調用,信號和時間類的調用。
(1) 文件操作的系統調用
(create ,open,read,write,close,link,unlink,lseek,chmod,rename) 打開,關閉,讀寫,鏈接,取消鏈接,建立文件
lseek 設定文件的讀寫位置
chmod 改變對文件的訪問許可權
rename 更改文件名
(2) 控制類系統調用
fork 創建一個子進程
wait 父進程等待子進程終止
exit 終止子進程的執行
exec 啟動執行一個指定文件
(3) 信號與時間的系統調用
UNIX把出現的異常情況或非同步事件以傳送信號的方式進行,與信號有關的系統調用主要有:
kill 把信號傳送給一個或幾個相關進程
sigaction 聲明準備接收的信號類型
sigreturn 從信號返回,繼續執行被信號中斷的操作
(4) UNIX用於時間管理的系統調用主要有:
stime 設置日曆時間
time 獲得日曆時間
times 獲得執行所花費的時間
1、內核態和用戶態的詳解
2、常見系統調用參考
推薦閱讀:
※不借外部工具,對window 7用戶密碼破解與防護
※lunix系統下proc/stat文件怎麼看?
※《深入理解計算機系統》配套實驗:Shell Lab
※喜歡用 OS X 的人覺得它比 Windows 好在哪裡?
※cmd中如何使用ftp?
TAG:操作系統 |