热门问题
时间线
聊天
视角
系統調用
在電腦科學中,應用程式用來向作業系統或其他應用程式請求服務的機制 来自维基百科,自由的百科全书
Remove ads
在電腦中,系統調用(英語:system call),指運行在使用者空間的程序向操作系統內核請求需要更高權限運行的服務。這些服務可能包含訪問文件系統、創建和銷毀進程、進程間通信和內存分配。[1]系統調用在進程和作系統之間提供了一個重要的接口。系統調用提供用戶程序與操作系統之間的接口。大多數系統交互式操作需求在內核態執行。如設備IO操作或者進程間通信。
此條目沒有列出任何參考或來源。 (2021年1月21日) |

用戶空間(用戶態)和內核空間(內核態)
庫函數
系統調用和普通庫函數調用非常相似,只是系統調用由操作系統內核提供,運行於內核核心態,而普通的庫函數調用由函數庫或用戶自己提供,運行於用戶態。
典型實現(Linux)
Linux 在x86上的系統調用通過 int 80h 實現,用系統調用號來區分入口函數。操作系統實現系統調用的基本過程是:
- 應用程序調用庫函數(API);
- API 將系統調用號存入 EAX,然後通過中斷調用使系統進入內核態;
- 內核中的中斷處理函數根據系統調用號,調用對應的內核函數(系統調用);
- 系統調用完成相應功能,將返回值存入 EAX,返回到中斷處理函數;
- 中斷處理函數返回到 API 中;
- API 將 EAX 返回給應用程序。
應用程序調用系統調用的過程是:
- 把系統調用的編號存入 EAX;
- 把函數參數存入其它通用寄存器;
- 觸發 0x80 號中斷(int 0x80)。
參考資料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads