什么是系統調用?
OS 提供給用戶編程時的一些公共子程序,一般為函數或方法。
為什么要使用系統調用?
OS 為了安全的管理計算機軟硬件資源,不允許程序員直接操作系統資源,比如(進程、內存、I/O、文件),
但是用戶可以通過系統調用向 OS 請求相關資源的服務,比如:I/O 的請求和釋放、設備啟動、文件的創建、讀寫、刪除、進程的創建、撤銷、阻塞、喚醒
進程間的消息傳遞、內存的配備和回收等。
總結:系統調用就是程序員給 OS 發送請求服務的方法或函數。
好比,你去餐館吃飯,你只需要向服務員點菜(系統調用),服務員就會處理你的請求,而不是你自己去做菜。
程序員如何使用系統調用,OS 如何響應?
程序員在代碼中首先傳遞系統調用參數,然后由陷入(trap)指令負責將用戶態轉換為核心態,並將返回地址壓棧備用,然后 CPU 執行相應的內核服務程序,最后返回用戶態。