函數調用與系統調用區別


系統調用就是通過系統api操作由操作系統統一管理的資源,比如設備、文件、內存、進程、進程間通信。系統調用運行在系統的核心態,需要內核上下文環境

從用戶態的函數調用切換到核心態的系統調用,需要通過中斷實現,當執行系統調用時,先將參數壓入棧寄存器,然后通過中斷將控制器交給操作系統,操作系統根據系統調用碼查找系統調用表得到相應的訪問地址,執行系統調用,將結果返回給用戶程序。這過程中需要切換兩次上下文,第二次是調用開始時從用戶地址空間切換到內核地址空間,第二次時系統調用執行返回時,從內核地址空間切換回用戶地址空間。

函數調用 系統調用
運行在用戶地址空間 運行在內核地址空間
不需要切換上下文,開銷小 需要切換到內核上下文,執行結束后需要切換到用戶上下文,開銷大




轉載網絡:https://www.jianshu.com/p/8dcbe530fcc3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM