1. 程式人生 > >為什麼系統呼叫消耗更多時間?

為什麼系統呼叫消耗更多時間?

參考:《Understanding Unix/Linux Programming: A Guide to Theory and Practice》之2.7

        使用者程序位於使用者空間,核心程序位於系統空間,磁碟只能被核心直接訪問。

        在執行核心程式碼時,CPU工作在管理員模式,這對應於一些特殊的堆疊和記憶體環境,必須在系統呼叫時切換到這個環境中。系統呼叫結束後,CPU要切換到使用者模式,又要將堆疊和記憶體環境恢復到使用者模式的狀態,這種記憶體環境的切換要耗費很多時間。

        因此,系統呼叫所耗費的時間主要在兩次環境切換上,如果使用者程式中普通程式碼和系統呼叫交替出現,那麼將產生很大的環境切換的開銷。