現在,您或許正在查看設備驅動程序,並感到奇怪:“函數 foo_read()
是如何被調用的?”或者可能疑惑: “當我輸入 cat /proc/cpuinfo
時,cpuinfo()
函數是如何被調用的?”內核完成引導後,控制流就從相對直觀的“接下來調用哪個函數?”改變為取決於系統調用、異常和中斷。
什麼是系統調用?
字面上講,系統調用(也稱為“syscall”)就是一條類似於“add”或者“jump”的指令。從更高的層面上講,系統調用是用戶級程序要求>操作系統為它做某些事情的途徑。如果您正在編寫程序,需要讀取某個文件,那麼要使用一個系統調用來要求>操作系統為您讀取那個文件。
系統調用詳述
這裡是系統調用的工作原理。首先,用戶程序為系統調用設置參數。其中一個參數是系統調用編號(稍後對此進行詳述)。注意,所有這些都是由庫函數自動完成的,除非您是使用匯編編程。參數設置完成後,程序執行“系統調用”指令。這個指令會導致一個異常:產生一個事件,這個事件會致使處理器跳轉到一個新的地址,並開