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 行程的產生 既然行程是由它的父行程所產生,父行程必然也是由它的父行程所產生,所以系統必然存在一個始作俑者,它就是 init(PID=1)程序。也就是說,當系統啟動時第一個產生的行程是 init,其他的行程皆由它來產生。 7-1-2 行程概述 我們將行程的重點歸納如下:
照理說,當父行程停止後,子行程便沒有存在的價值,應該隨之被消滅才對,但系統還是有可能發生異常狀況,讓某些子行程被遺留下來。因此,一般系統都會在某一區段時間內搜尋是否有『孤兒』存在,如發現有再將其刪除,否則它會繼續參與 CPU 行程排班,並可能佔用其他系統資源,造成系統執行一些沒有意義的工作。 |
翻轉工作室:粘添壽
Linux 伺服器系統管理 - CentOS:
翻轉電子書系列:
|