進程, 進程切換, 調度
傳統上, UNIX操作系統下運行的應用程序,服務器及其他程序都稱為進程(processes)
每個進程都在CPU的虛擬內存中分配地址空間
各進程的地址空間是完全獨立的, 因此進程並不會意識到彼此的存在
從進程的角度來看, 它會認為自己是系統中唯一的進程
如果進程想要彼此通信(例如交換數據), 那麼必須使用特定的內核機制
由於Linux是多任務系統,它(看起來)支持並發執行的若干進程, 系統中同時真正在運行的進程數目最多不超過CPU數目,
因此內核會按照短的時間間隔在不同的進程之間切換
1)內核借助CPU的幫助, 負責進程切換的技術細節, 通過在撤銷進程的CPU資源之前,保存進程所有與狀態相關的要素,
並將進程置於空閒狀態
在重新激活進程時, 則將保存的狀態原樣恢復
進程之間的切換稱之為進程切換(task switching)
2)內核還必須確定如何在現存進程之間共享CPU時間, 確定哪個進程運行多長時間的過程稱調度(scheduling)