電腦領域,行程識別碼(英語:process identifier,又略稱為行程ID(英語:process ID)、PID)是大多數作業系統內核用於唯一標識行程的一個數值。這一數值可以作為許多函數呼叫的參數,以使調整行程優先級、殺死行程之類的行程控制行為成為可能。

類UNIX系統

類UNIX作業系統中,新行程都衍自系統呼叫fork()fork()呼叫會將子行程的PID返回給父行程,使其可以之指代子行程,從而在需要時以之為函數參數。例如,若以子行程PID為參數呼叫waitpid(),可使父行程以休眠狀態等待子行程結束;若以之為參數呼叫kill(),便可結束對應子行程。

在各PID中,較為特別的是0號PID和1號PID。PID為0者為交換行程(英語:swapper),屬於內核行程,負責分頁任務;PID為1者則常為init行程,主要負責啟動與關閉系統。值得一提的是,1號PID本來並非是特意為init行程預留的,而init行程之所以擁有這一PID,則是因為init即是內核建立的第一個行程。不過,現今的許多UNIX/類UNIX系統內核也有以行程形式存在的其他組成部分,而在這種情況下,1號PID則仍為init行程保有,以與之前系統保持一致[1]

PID的分配機制則因系統而異,一般從0開始,然後順序分配,直到達到一個最大值(亦因系統而異),而後又從300開始重新分配;在Mac OS XHP-UX下,則是由100開始重分配。在分配PID時,若遇到已分配的PID,則直接跳過,繼續遞增尋找下一個可分配PID。

Microsoft Windows

Microsoft Windows系列作業系統提供了一系列API,以使開發者可以取得相關PID,如用於取得當前行程PIDGetCurrentProcessId()[2]、返回其他行程PID的GetProcessId()[3]。在作業系統內部,行程ID與線程ID在同一個命名空間中,因此二者不會重合。

PID檔案

有些長時間執行的行程(如MySQL的守護行程)會將自己的PID寫入一個檔案,以使其他行程可尋獲之。

參見

參考資料

  1. ^ ISRD Group. Basics Of Os Unix And Shell Programming. Tata McGraw-Hill Education. 2006. 
  2. ^ GetCurrentProcessId Function, Windows Developer Center, [2009-05-20], (原始內容存檔於2009-06-27) 
  3. ^ ProcessId Function, Windows Developer Center, [2011-03-05], (原始內容存檔於2011-03-22) 

本條目部分或全部內容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。