1. 程式人生 > >Linux進程的原理及與信號的聯系

Linux進程的原理及與信號的聯系

說明 位置 相同 調度 ice 並行 進程切換 運行 的區別


第1節 程序、進程、守護進程的區別


  • 程序:c/php/java,代碼文件,靜態的,放在磁盤裏的數據。

  • 進程:正在內存中運行的程序,進程是動態的,會申請和使用系統資源,並與操作系統內核進行交互。

  • 進程運行:系統把程序放在內存裏執行。

  • 守護進程:在內存持續保持運行著的程序。


第2節 多任務與CPU


  1. 現在所有的操作系統(分時設計,例如CentOS)都能"同時"運行多個進程,也就是多任務或者說是並行執行。但實際上這是人類的錯覺,一顆物理cpu在同一時刻只能運行一個進程,只有多顆物理cpu才能真正意義上實現多任務。

  2. cpu如何選擇下一個要執行的進程,這是一件非常復雜的事情。在Linux上,決定下一個要運行的進程是通過"調度類"(調度程序)來實現的。程序何時運行,由進程的優先級決定,但要註意,優先級值越低,優先級就越高,就越快被調度類選中。
    除此之外,優先級還影響分配給進程的時間片長短。在Linux中,改變進程的nice值,可以影響某類進程的優先級值。

  3. 進程切換被CPU執行時,內核會將每個進程臨時停止時的運行時環境(寄存器中的內容和頁表)保存下來(保存位置為內核占用的內存),這稱為保護現場,在下次進程恢復運行時,將原來的運行時環境加載到cpu上,這稱為恢復現場,這樣cpu可以在當初的運行時環境下繼續執行。

  4. 在進程的優先級相同下;Linux的調度器不是通過cpu的時間片流逝來選擇下一個要運行的進程的,而是考慮進程的等待時間,即在就緒隊列等待了多久

  5. cpu的衡量單位是時間,就像內存的衡量單位是空間大小一樣。進程占用的cpu時間長,說明cpu運行在它身上的時間就長。註意,cpu的百分比值不是其工作強度或頻率高低,而是"進程占用cpu時間/cpu總時間",這個衡量概念一定不要搞錯。

第3節 各進程與CPU的狀態


的 


第4節 父子進程及創建方式(資源,shell實現)



第5節 jobs與父子進程的前後臺,fuser,lsof



第5節 信號與進程與kill,pkill,killall


Linux進程的原理及與信號的聯系