不同型別的系統呼叫


程序與作業系統之間的介面由系統呼叫提供。一般來說,系統呼叫以組合語言指令的形式提供。它們也包含在彙編級程式設計師使用的手冊中。

當用戶模式下的程序需要訪問資源時,通常會進行系統呼叫。然後它請求核心透過系統呼叫提供資源。

系統呼叫的型別

主要有五種型別的系統呼叫。這些將在下面詳細解釋:

System Calls

以下是系統呼叫的型別:

程序控制

這些系統呼叫處理程序,例如程序建立、程序終止等。

檔案管理

這些系統呼叫負責檔案操作,例如建立檔案、讀取檔案、寫入檔案等。

裝置管理

這些系統呼叫負責裝置操作,例如從裝置緩衝區讀取、寫入裝置緩衝區等。

資訊維護

這些系統呼叫處理資訊及其在作業系統和使用者程式之間的傳輸。

通訊

這些系統呼叫對於程序間通訊非常有用。它們還處理建立和刪除通訊連線。

以下是Windows和Unix中上述所有型別系統呼叫的示例:

系統呼叫的型別WindowsLinux
程序控制CreateProcess() ExitProcess() WaitForSingleObject()fork() exit() wait()
檔案管理CreateFile() ReadFile() WriteFile() CloseHandle()open() read() write() close()
裝置管理SetConsoleMode() ReadConsole() WriteConsole()ioctl() read() write()
資訊維護GetCurrentProcessID() SetTimer() Sleep()getpid() alarm() sleep()
通訊CreatePipe() CreateFileMapping() MapViewOfFile()pipe() shmget() mmap()

如上所示,存在許多不同的系統呼叫。其中一些系統呼叫的詳細資訊如下:

wait()

在某些系統中,程序可能需要等待另一個程序完成其執行。當父程序建立子程序並且父程序的執行掛起直到子程序執行時,就會發生這種情況。父程序的掛起發生在 wait() 系統呼叫中。當子程序完成執行時,控制權將返回給父程序。

exec()

此係統呼叫在正在執行的程序的上下文中執行可執行檔案。它替換了之前的可執行檔案。這被稱為覆蓋。原始程序識別符號保持不變,因為沒有建立新程序,但程序的資料、堆、堆疊等被新程序替換。

fork()

程序使用 fork() 系統呼叫來建立自身的副本程序。這是作業系統中程序建立的主要方法之一。當父程序建立子程序並且父程序的執行掛起直到子程序執行時。當子程序完成執行時,控制權將返回給父程序。

exit()

程式使用 exit() 系統呼叫來終止其執行。在多執行緒環境中,這意味著執行緒執行已完成。exit() 系統呼叫之後,作業系統會回收程序使用的資源。

kill()

作業系統使用 kill() 系統呼叫向程序傳送終止訊號,促使程序退出。但是,kill 系統呼叫並不一定意味著殺死程序,它可以具有多種含義。

更新於:2023年9月2日

72K+ 瀏覽量

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告