行程管理

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

多道程序

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

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

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

  1. 進程執行系統調用(也叫軟件中斷);例如執行 I/O 請求,請求訪問硬盤上的文件。
  2. 發生硬件中斷;例如鍵盤上的按鍵被按下、計時器超時(搶占式多任務處理)。

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