行程管理

在現代作業系統中,行程管理(英語:Process management)是作業系統的功能之一,特別是多任務處理的狀況下,這是必要的功能。作業系統將資源分配給各個行程,讓行程間可以分享與交換資訊,保護每個行程擁有的資源,不會被其他行程搶走,以及使行程間能夠同步。為了達到這些要求,作業系統為每個行程分配了一個資料結構,用來描述行程的狀態,以及行程擁有的資源。作業系統可以透過這個資料結構,來控制每個行程的運作。

多道程式

許多現代作業系統都支援在主記憶體中同時載入同一程式的不同實例。例如,多個用戶可能都在執行同一個程式,每個用戶所執行的就是該程式在主記憶體中的不同副本。有一些程式可以只在主記憶體中載入一個副本,在不同的用戶間共用通向的程式碼,這樣的程式是可重入的。同一處理器(核)在任意時間點都只能執行一個程式中的一條指令,而如果每隔一段時間輪換處理器所處理的行程,暫時停止其它行程的活動,那麼多個行程就可以同時在一段時間主記憶體在,這樣就是一種並行計算

多道和多工的作業系統便是一種可以多行程並行執行的系統。多道程式要求處理器為每個行程都分配一定的時間,並在合適的時機釋放。如果釋放時行程尚未結束,則需要確保行程能夠很方便地重新啟動。

行程執行過程中,如果作業系統需要取回處理器的控制權,一般有兩種方法:

  1. 行程執行系統呼叫(也叫軟件中斷);例如執行 I/O 請求,請求訪問硬碟上的檔案。
  2. 發生硬件中斷;例如鍵盤上的按鍵被按下、計時器逾時(搶佔式多工處理)。

一個行程停止、另一個行程開始(或者重新啟動)的過程稱作上下文交換或上下文交換。在許多現代作業系統中,行程還可以包含許多子行程,這樣便引入了線程的概念。可以將線程看作子行程,即在同一行程中的獨立代碼執行單元。