系統(tǒng)調(diào)用就是通過系統(tǒng)api操作由操作系統(tǒng)統(tǒng)一管理的資源,比如設(shè)備瘩缆、文件、內(nèi)存佃蚜、進程庸娱、進程間通信。系統(tǒng)調(diào)用運行在系統(tǒng)的核心態(tài)谐算,需要內(nèi)核上下文環(huán)境
從用戶態(tài)的函數(shù)調(diào)用切換到核心態(tài)的系統(tǒng)調(diào)用熟尉,需要通過中斷實現(xiàn),當(dāng)執(zhí)行系統(tǒng)調(diào)用時洲脂,先將參數(shù)壓入棧寄存器斤儿,然后通過中斷將控制器交給操作系統(tǒng),操作系統(tǒng)根據(jù)系統(tǒng)調(diào)用碼查找系統(tǒng)調(diào)用表得到相應(yīng)的訪問地址腮考,執(zhí)行系統(tǒng)調(diào)用雇毫,將結(jié)果返回給用戶程序胁艰。這過程中需要切換兩次上下文忍燥,第二次是調(diào)用開始時從用戶地址空間切換到內(nèi)核地址空間,第二次時系統(tǒng)調(diào)用執(zhí)行返回時灾杰,從內(nèi)核地址空間切換回用戶地址空間馅闽。
函數(shù)調(diào)用 | 系統(tǒng)調(diào)用 |
---|---|
運行在用戶地址空間 | 運行在內(nèi)核地址空間 |
不需要切換上下文飘蚯,開銷小 | 需要切換到內(nèi)核上下文,執(zhí)行結(jié)束后需要切換到用戶上下文福也,開銷大 |