行程管理
何謂行程?就是執行中的程式。
在介紹行程管理之前,我們先提一下 CPU 的執行模式,基本上,許多 CPU 除了執行指令外,還會訂定數種優先等級,當 CPU在不同的優先等級下執行相同的指令會得到不同的結果。 Intel x86 的保護模式定了四種等級,但是 Linux 只用到其中兩種,核心模式(kernel mode) 及使用者模式 (usermode)。核心模式有較大的權限,可以任意存取週邊設備,通常作業系統核心都是以核心模式在執行,而使用者模式權限小,限制多,應用程式均以使用者模式執行。
當應用程式正常執行時,有下列幾個狀況會切換到核心模式(事實上就是 CPU從正在執行的程式切換到作業系統核心碼),一是程式主動呼叫系統服務函式,例如程式想讀取硬碟裡的檔案,或是程式向系統要求多一點記憶體。二是用硬體要求CPU 反應,例如你在鍵盤敲入一個字母,負責鍵盤的晶片要求處理這一筆資料,另一例是電腦內的時鐘每一固定時間會通知 CPU,告訴 CPU說時間又過了一個 tick(在x86上,約0.01秒),CPU就會切換到核心模式,執行與此事件相對應的核心碼,這時有許多要做,其中一項是計算目前這個程式己經執多久了,是否該換手執行讓下一個程式了,如果時間未到,核心事情處理完後會讓原先的程式繼續進行。幾乎每一種可能發生的事件,核心都早已備好對應的程式碼。三是程式作了不該作的事,例如讀取不屬於它的記憶體,或直接存取週邊設備,這時 CPU也會轉到核心模式,讓作業系統核心決定如何處置這個有問題的程式,最普遍的處置就是停止這個程式的執行,把錯誤回報到終端機。
瞭解核心模式和使用者模式後,我們可以介紹行程管理了,之前我們並沒有對行程和程式作區分,在這一節必須作區分。例如執行一個從一數到十的程式,每秒數一下,須十秒的時間程式才能執行完畢,我在十一點時執行這個程式,在十一點過五秒又再執行一次這個程式(幸好 Linux是多工作系統),當我執行這個程式時,作業系統會把對應的檔案讀進記憶體,作一些設定,然後讓 CPU去執行它,第二次執行時作業系統會做同樣的事,但是當然會放在不同位址的記憶區塊(作業系統不會管這兩個程式是否同一個)。所以到了十一點過八秒時,和這個例子相關的有三個東西,第一是仍然躺在硬碟裡的程式碼,第二是數到八,在記憶中未執行完畢的那段與程式對應記憶區塊,第三是數到三的另一記憶區塊。為了作區分,躺在硬碟裡仍然稱為程式,在記憶體中執行的每一個體稱為行程,這裡有兩個行程,每個行程都是獨立的個體,有不同的變數值,可能也會有不同的狀態,例如第一個行程要到記憶體,第二個行程要不到等等。
作業系統核心中的行程管理主要目的就是管理這些正在執行或等待執行的行程們(躺在硬碟裡的程式歸檔案系統管),行程管理的核心是排程器,目的是為行程們安排 CPU 的時間。在 Linux 中行程也分等級,共三個等級 SCHED_FIFO, SCHED_RR 和SCHED_OTHER。前兩種等級有優先權,設計給即時應用軟體使用的,當沒有前兩個等級的行程時,第三等級的行程才有機會執行,這個等級的行程是以類似輪流的方式執行,事實上它們也是互相比等級,等級最高的會選為下一個執行的對象,但是高等級執行完後等級會重算,通常等級會降下來,所以會輪到當初次高等級的行程執行。等級的算法有一個簡單的公式,在函式 goodness() 中,它位於/usr/src/Linux/kernel/sched.c 中,改這個公式是 hacker 喜歡的把戲,可以試試看系統如何變化。
Linux是而UNIX為藍本而發展出的UNIX類操作系統,其檔案系統跟UNIX非常相似.
Linux檔案系統採用一個反樹枝狀的檔案系統目錄層,.以"/"為整個檔案系統目錄頂層,在Linux上這個"/"統稱為root(根目錄).而對下延
伸就是整個系統的檔案目錄架構,每一個檔案目錄都根據其特性分門別類.
為達至各LINUX版本的檔案系統標準化,各LINUX版本都會根據
(Filesystem Hierarchy Standard –FHS)標準.令其版本跟別的發行版本的系統程式及儲存位置達到一至,對於系統管理及程式開發更為容易,令整個LINUX系統相容性大大提高.
最新的FHS版本為2.3,如希望獲得HFS資料可到以下網站
http://www.pathname.com/fhs/
認識檔案系統目錄層
目錄 簡介
bin 一般指令執行檔案 儲存一般性使用指令,如cp,df,mv等工具,供所有使用者使用
boot 系統啟動檔案和核心影像 儲存linux開機核心及其開機時所需影像檔
dev 硬件裝置目錄 儲存裝置目錄位置
etc 系統設定檔案 儲存設定檔案,如網絡設定,各式服務器設定,使用者資料等等,這裡不會放置任 何可執行檔案
lib 系統分享程式庫檔案及核心模組 提供分享程式庫檔案及核心模組,給系統程式及編軟件使用
media 移動式裝置掛載點 這個是FHS2.3新增的一個掛載點,設定為FLOOY,CDROM,USB等移動式裝置預設 掛載點
mnt 預設臨時掛載點 在FHS2.3前,mnt是系統的預設外掛裝置及系統掛載點,FLOOY,CDROM,USB及硬 碟分區都會掛載到mnt,現在到mnt定義為臨時掛載位置
opt 一些外加程式的儲存位置 給予外加程式的安裝目錄,定義安裝在/opt/套件名稱目錄之內
sbin 系統執行檔案 系統執行檔案,儲存系統管理相關程式,只有管理員才能執行
srv 服務儲存 另一個FHS2.3新增目錄,定義為提供一些服務儲存位置,如FTP,WWW,RSYNC等.較適合一些大型網站,儲存大量的服務檔案.
tmp 程式臨時檔案 程式暫存檔位置
usr 第二層檔案系統,通常提供非核心所提供的程式儲存位置及執行檔案位置 第二個主目錄,目錄下同樣提供一個完整檔案系統目錄結構給予外加程式使用.如bin,sbin,lib等
var 經常流動檔案儲存位置 var儲存經常流動檔案,如電郵,資料庫,網站及系統日誌等。
root 管理員的家目錄
home 使用者家目錄