系統調用就是通過系統api操作由操作系統統一管理的資源,比如設備、文件、內存、進程、進程間通信。系統調用運行在系統的核心態,需要內核上下文環境
從用戶態的函數調用切換到核心態的系統調用,需要通過中斷實現,當執行系統調用時,先將參數壓入棧寄存器,然后通過中斷將控制器交給操作系統,操作系統根據系統調用碼查找系統調用表得到相應的訪問地址,執行系統調用,將結果返回給用戶程序。這過程中需要切換兩次上下文,第二次是調用開始時從用戶地址空間切換到內核地址空間,第二次時系統調用執行返回時,從內核地址空間切換回用戶地址空間。
函數調用 | 系統調用 |
---|---|
運行在用戶地址空間 | 運行在內核地址空間 |
不需要切換上下文,開銷小 | 需要切換到內核上下文,執行結束后需要切換到用戶上下文,開銷大 |
轉載網絡:https://www.jianshu.com/p/8dcbe530fcc3