行程與行程抽象

行程識別碼(PID)

/ P-I-D, or 'pid' /

當你打電話到一間繁忙的診所時,他們會給你一個號碼,好讓他們即使遇到兩位同名病人也能毫不含糊地稱呼你。行程識別碼(PID)就是行程的那個號碼:作業系統指派給每個執行中行程的一個唯一整數,好讓它(與你)能精確地指名並對「就是那個、不是別的」行程進行操作。

當作業系統建立行程時,它挑一個未使用的整數作為 PID,並記在該行程的 PCB 裡。工具與系統呼叫之後便用 PID 來指稱行程:一個指令可能依 PID 列出行程,一個系統呼叫可能向某個 PID 送出信號,請那個行程停止。PID 在「當前執行中的行程」之間是唯一的,但會隨時間被重複使用:一旦某個行程結束並被徹底清理,它的號碼日後可能被交給一個全新、毫不相關的行程。在類 Unix 系統上,最初的那個行程拿到 PID 1,而行程可以查詢自己的 PID 與父行程的 PID。

PID 之所以重要,是因為它是系統其餘部分用來談論某個特定行程的把手:終止一個行程、查它的狀態、設它的優先權、追蹤它,全都靠 PID。重複使用帶來一個微妙的危險:記下某個 PID 並稍後對它操作的程式碼,在原行程已退出之後,可能不小心打到一個之後繼承了那個號碼的不同行程,這正是為什麼對行程的長期引用需要比「只存一個 PID」更謹慎。

若一個失控的行程 PID 是 4521,管理員可以用像「kill 4521」這樣的指令把它停掉,這會向「持有那個 PID 的行程」精確地送出一個信號。

PID 是指令與系統呼叫用來指名某個特定行程的方式。

PID 會被重複使用。PID 只在行程存活期間唯一地指稱它;在它退出後,同一個號碼日後可能屬於一個完全不同的行程。

又稱
PIDprocess ID行程編號行程 ID