游戲服務器Linux中進程管理系統調用
游戲服務器Linux中進程管理系統調用
現在關注一下 游戲服務器Linux 系統中與進程管理相關的系統調用。在了解之前你需要先知道一下什么是系統調用。
操作系統為我們屏蔽了硬件和軟件的差異,它的最主要功能就是為用戶提供一種抽象,隱藏內部實現,讓用戶只關心在 GUI 圖形界面下如何使用即可。游戲服務器操作系統可以分為兩種模式內核態:操作系統內核使用的模式用戶態:用戶應用程序所使用的模式
我們常說的上下文切換指的就是內核態模式和用戶態模式的頻繁切換。而系統調用指的就是引起內核態和用戶態切換的一種方式,系統調用通常在后臺靜默運行,表示計算機程序向其操作系統內核請求服務。
游戲服務器系統調用指令有很多,下面是一些與進程管理相關的最主要的系統調用:
fork 調用用于創建一個與父進程相同的子進程,創建完進程后的子進程擁有和父進程一樣的程序計數器、相同的 CPU 寄存器、相同的打開文件。
exec 系統調用用于執行駐留在活動進程中的文件,調用 exec 后,新的可執行文件會替換先前的可執行文件并獲得執行。也就是說,調用 exec 后,會將舊文件或程序替換為新文件或執行,然后執行文件或程序。新的執行程序被加載到相同的執行空間中,因此進程的 PID 不會修改,因為我們沒有創建新進程,只是替換舊進程。但是進程的數據、代碼、堆棧都已經被修改。如果當前要被替換的進程包含多個線程,那么所有的線程將被終止,新的進程映像被加載執行。【艾娜】