系統呼叫
外觀

此條目沒有列出任何參考或來源。 (2021年1月21日) |

在電腦中,系統呼叫(英語:system call),指運行在使用者空間的程式向作業系統核心請求需要更高權限運行的服務。這些服務可能包含訪問檔案系統、建立和銷毀行程、行程間通訊和主記憶體分配。[1]系統呼叫在行程和作系統之間提供了一個重要的介面。系統呼叫提供使用者程式與作業系統之間的介面。大多數系統互動式操作需求在核心態執行。如裝置IO操作或者行程間通訊。
使用者空間(使用者態)和核心空間(核心態)
[編輯]作業系統的行程空間可分為使用者空間和核心空間,它們需要不同的執行權限。其中系統呼叫執行在核心空間。
函式庫函式
[編輯]系統呼叫和普通函式庫函式呼叫非常相似,只是系統呼叫由作業系統核心提供,執行於核心核心態,而普通的函式庫函式呼叫由函式庫或使用者自己提供,執行於使用者態。
典型實現(Linux)
[編輯]Linux 在x86上的系統呼叫通過 int 80h 實現,用系統呼叫號來區分入口函式。作業系統實現系統呼叫的基本過程是:
- 應用程式呼叫函式庫函式(API);
- API 將系統呼叫號存入 EAX,然後通過中斷呼叫使系統進入核心態;
- 核心中的中斷處理常式根據系統呼叫號,呼叫對應的核心函式(系統呼叫);
- 系統呼叫完成相應功能,將返回值存入 EAX,返回到中斷處理常式;
- 中斷處理常式返回到 API 中;
- API 將 EAX 返回給應用程式。
應用程式呼叫系統呼叫的過程是:
- 把系統呼叫的編號存入 EAX;
- 把函式參數存入其它通用暫存器;
- 觸發 0x80 號中斷(int 0x80)。
參考資料
[編輯]- ^ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. 操作系统导论. 由王海鵬翻譯. 人民郵電出版社. 2019-06-01: 38–39. ISBN 9787115508232.