不知不覺來到第 12 天,今天跟大家說一下進程管理~
當我們深入了解操作系統中的進程管理時,會發現進程不僅僅是程序的一個執行實例,它還包含了執行程序所需的各種資源,如 CPU 時間、內存空間、打開的文件句柄以及其他必需的系統資源。每個進程都有自己獨立的地址空間,這意味著進程之間的數據不會直接相互干擾,這保障了系統的穩定性和安全性,進程之間可以通過特定的機制來進行通信,這些機制包括信號、管道、消息隊列、共享內存等,這些工具被統稱為進程間通信(Inter-Process Communication, IPC)。父進程和子進程之間常常使用這些機制來交換信息或者協同工作,在現代操作系統中,進程的管理是一個複雜而關鍵的任務。操作系統負責進程的創建、調度和終止。調度程序決定哪個進程在何時獲得CPU的執行時間,這種調度可能基於不同的算法,如先來先服務(FCFS)、最短剩餘時間優先(SRTF)、輪轉(Round Robin)等,此外進程還有自己的生命週期,通常包括創建(creation)、就緒(ready)、運行(running)、等待(waiting)、終止(termination)等狀態。一個進程可能會在不同的時間點處於這些狀態之一,而操作系統則根據進程的當前狀態來決定如何處理它,進程的結構和行為為操作系統提供了高度的靈活性和控制力,使得計算機能夠有效地運行多任務處理,並確保每個程序能夠正確地獲得所需的資源來完成其任務,理論上,一個進程被稱為一個正在執行的程序,也就是系統當前正在處理的一項任務。你在系統上的每一個操作都會導致一個新的進程。例如,打開一個瀏覽器就會啟動一個進程。簡單來說,一個進程是一個程序的實例。用戶的操作被轉化為一個命令,在執行該命令時會創建一個新的進程。進程是按照父-子層次結構來運作的。正如層次結構的名稱所示,由命令或程序啟動的進程被稱為父進程,父進程所產生的進程被稱為子進程。
資源管理與分配,在操作系統中,所有的工作都是通過進程來完成的,每個進程都有一個唯一的識別碼(PID)。掌握進程管理能幫助你了解如何分配系統資源,例如CPU和內存,給不同的進程,特別是在系統資源有限的情況下。當系統資源接近耗盡時,能夠迅速識別出佔用資源最多的進程並適時地終止它,可以防止系統崩潰,並保持系統的正常運行。系統穩定性與安全性,如果某個程序設計不當,可能會產生問題進程,佔用過多的記憶體或其他資源,甚至導致系統的不穩定。學習進程管理可以幫助你迅速識別並清除這類進程,從而維護系統的穩定性和安全性。優先級調度,在多任務操作系統中,同時執行多個進程是常見的情況。如果你知道哪個工作最為重要,那麼理解進程管理就能幫助你通過調整進程優先級,讓關鍵的進程獲得更多的系統資源並優先執行,從而保證重要任務的順利完成。
首先進程管理有分 前台進程 與 後台進程。
前台進程主要與用戶直接交互,前台進程是當前與用戶直接交互的進程,它通常是由用戶在終端或命令行中啟動的,並會佔據終端窗口,接受用戶輸入並將輸出顯示在終端中。唯一性,在一個終端中,同一時間只能有一個前台進程,當你在終端中運行一個命令,這個命令對應的進程就會成為前台進程,直到它完成或被中斷。終止與控制,前台進程通常可以通過鍵盤控制來終止或暫停,比如使用 Ctrl+C
終止,或者 Ctrl+Z
暫停進程。
後台進程不與用戶直接交互,後台進程是指在系統中運行但不與用戶直接交互的進程,它們通常在後台執行,繼續運行而不佔用終端窗口,允許用戶在前台執行其他命令。多個同時運行,在一個終端中可以同時運行多個後台進程,這些進程在啟動後不會阻塞終端,允許用戶繼續執行其他命令。控制方式,後台進程通常是通過在命令後面加上 &
符號來啟動的。它們不能直接接受用戶輸入,但用戶可以通過命令如 fg
將其移到前台,或使用 kill
命令來終止它們。
兩者的差別就在前台進程是當前活躍的進程,與用戶直接交互,並且只在一個終端中存在一個前台進程,而後台進程則是在後台執行,不直接與用戶交互,並且允許多個同時運行,不會阻塞終端。
進程管理是操作系統中的核心功能,理解進程管理有助於提高系統性能、保障穩定性和安全性。無論是前台進程還是後台進程,它們都在日常的系統運行中扮演著不可或缺的角色。掌握進程管理的知識,可以讓你更有效地處理多任務環境,確保系統運行的高效與穩定。下一篇會帶給大家一些指令的使用以及日誌管理