一個過程可以定義為一個正在執行的程序,它構成了所有計算的概念。這個方法和程序代碼按鈕不太一樣。過程是一個“主動的”實體,而程序是一個“被動的”實體。該方法持有的屬性包括硬件狀態、內存、CPU等。
為了高效工作,進程內存被分成四個部分:
- Text部分由編譯後的程序代碼形成,在程序啟動時從非易失性存儲器讀入。
- Data部分由全局變量和靜態變量組成,在執行最多之前分配和初始化。
- Heap被用於動態內存分配,並通過調用new、delete、malloc、free等進行管理。
- 堆棧用於局部變量。一旦局部變量被聲明,堆棧上的空間就會被維護。
各種進程狀態:
操作係統中的進程通常是給定狀態之一:
- 新-方法正在建立。
- READY-該方法期望被分配給處理器。
- 正在執行的方向。
- 等待——該方法正在等待一些事件的發生(例如I/O完成或接收信號)。
- TERMINATED-方法已完成執行。
進程控製塊
每個過程都有一個過程控製塊,包含了關於方法的所有知識。它也被稱為任務控製塊。它是一個知識結構,包含以下內容:
- 進程狀態:通常是運行、等待等狀態。
- 進程ID,因此是父進程ID。
- CPU寄存器和程序計數器。程序計數器保存該進程要執行的後續指令的地址。
- CPU調度信息:像優先級信息和提示,可以調度隊列。
- 內存管理信息:例如,頁表或段表。
- 會計信息:用戶和內核CPU(中央處理器)花費的時間、賬號、限製等。
- I/O狀態信息:已分配的設備、打開的文件列表等。