了解 Linux內核架構 (2)

来源:互联网 发布:java反序列化漏洞原理 编辑:程序博客网 时间:2024/05/16 12:17


進程, 進程切換, 調度

傳統上, UNIX操作系統下運行的應用程序,服務器及其他程序都稱為進程(processes)

每個進程都在CPU的虛擬內存中分配地址空間

各進程的地址空間是完全獨立的, 因此進程並不會意識到彼此的存在

從進程的角度來看, 它會認為自己是系統中唯一的進程

如果進程想要彼此通信(例如交換數據), 那麼必須使用特定的內核機制

由於Linux是多任務系統,它(看起來)支持並發執行的若干進程, 系統中同時真正在運行的進程數目最多不超過CPU數目,
因此內核會按照短的時間間隔在不同的進程之間切換

1)內核借助CPU的幫助, 負責進程切換的技術細節, 通過在撤銷進程的CPU資源之前,保存進程所有與狀態相關的要素,
並將進程置於空閒狀態

在重新激活進程時, 則將保存的狀態原樣恢復
進程之間的切換稱之為進程切換(task switching)

2)內核還必須確定如何在現存進程之間共享CPU時間, 確定哪個進程運行多長時間的過程稱調度(scheduling)

0 0