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

多道程式 編輯

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

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

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

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

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