Linux 伺服器系統管理第七章 行程管理      下一頁

第七章 行程與服務管理

7-1 行程簡介

內容:

7-1-1 行程與程式

『行程』是系統最小的程式執行單元,並享有獨立的記憶體空間。當行程被啟動之後,它便參與 CPU 排程並準備執行。行程一旦被 CPU 選入執行,它除了具有原 CPU 容許最大的記憶體空間之外,對於整個主機系統的資源設備也享有所有主控權(依照行程的權限而定)。簡單的說,在行程被選入執行的期間,所有主機電腦的資源都歸它掌控,但所能管理的程度仍需視該行程的權限而定。

『行程』(Process『程式』(Program之間的差別,一直以來不斷困擾著初學者。簡單的說,程式是靜態還未執行的工作範本;而行程是依照工作範本所執行中的程式,它具有生命週期並進行活動中。此外,同一種工作範本(程式),可同時產生並進行多個執行工作,如圖 7-1 所示。

7-1 行程與程式

基本上,行程必須由另一個行程所產生,產生行程者稱之為『父行程』(Parent process,被產生者則稱為『子行程』(Child process。當子行程被產生時(fork() 系統呼叫),它會繼承父行程的工作環境,但還未真正被啟動;接著父行程再將程式嵌入子行程並啟動它,如圖 7-2 所示。另一個重點是,當父行程因某種原因被中止之後,所有由它所產生的子行程也將隨之被刪除。為了方便管理,每一個執行當中的行程都有一個序號,稱為『行程識別碼』(Process Identifier, PID

7-2 行程的產生

既然行程是由它的父行程所產生,父行程必然也是由它的父行程所產生,所以系統必然存在一個始作俑者,它就是 initPID=1)程序。也就是說,當系統啟動時第一個產生的行程是 init,其他的行程皆由它來產生。

7-1-2 行程概述

我們將行程的重點歸納如下:

  • 系統中第一個行程為 initPID=1

  • 每一個行程都有一個編號,稱為 PIDProcess ID

  • 執行中的行程,呼叫 fork() 系統呼叫可以產生另一個行程。行程產生另一個行程,新的行程稱為原行程的『子行程』(child process,而產生子行程者稱之為『父行程』(parent process

  • 當父行程被消滅時,所有由它所產生的子行程也必須隨之消失,否則稱之為『孤兒』(Orphan

  • 每一行程都有一個獨立的運作環境,行程之間也可透過其他機制來互相通訊,而此獨立的運作環境需要一塊記憶體容量來儲存。

  • 於一部主機可容納多少行程產生,這與該主機 CPU 的處理能力有關,並且也與記憶體的容量息息相關。

  • 一般系統都屬於分時多工作業,表示系統內同時存在許多行程等待執行,CPU 以分配每一行程至多可以執行多少時間,如未完成作業,需再進入等待下一次輪流到才能執行。

  • 雖然同一時間僅能一個行程被執行,但這些行程還是能互相通訊,或共同完成任務,至於如何達成,請參閱相關作業系統書籍(或『Unix/Linux 系統管理實務』),並非本課程範疇。

照理說,當父行程停止後,子行程便沒有存在的價值,應該隨之被消滅才對,但系統還是有可能發生異常狀況,讓某些子行程被遺留下來。因此,一般系統都會在某一區段時間內搜尋是否有『孤兒』存在,如發現有再將其刪除,否則它會繼續參與 CPU 行程排班,並可能佔用其他系統資源,造成系統執行一些沒有意義的工作。

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: