早期的計算機一次只能執行一個程式。這種程式完全控制系統,並且存取所有系統資源。相比之下,現代計算機系統允許載入多個程式到記憶體,以便並行執行。這就要求作業系統對各種程式提供更嚴的控制和更好的劃分。這些需求導致了
進程概念的產生,即
進程為執行程式,是現代分時作業系統的工作單元。
作業系統越複雜,有望為使用者做的也越多。雖然它主要關注的是執行使用者程式,但是也要顧及各種系統任務(這些任務留在核心之外會更好)。因此,
系統會由一組行程群組成:作業系統進程執行系統程式碼,而使用者進程執行使用者程式碼。
通過 CPU 的多路複用,所有這些進程可以並行執行。通過在進程之間切換 CPU,作業系統能使計算機更為高效。
前面說,進程是執行的程式,這是一種非正式的說法。
進程不只是程式程式碼(文字段或程式碼段),通常還包含以下內容:
-
當前活動,如程式計數器的值和處理器暫存器的內容等。
-
進程堆疊(包括臨時資料,如函數引數、返回地址和區域性變數)和資料段(包括全域性變數)。
-
堆,這是在進程執行時動態分配的記憶體。
進程的記憶體結構如圖 1 所示。
圖 1 記憶體中的進程