李洋 龐立濱
【摘要】系統(tǒng)在執(zhí)行多道程序時(shí)需要共享資源,而這種共享資源就會(huì)導(dǎo)致各個(gè)程序之間出現(xiàn)相互制約,這些過程都是動(dòng)態(tài)的,而程序本身是一組指令的集合,這是靜態(tài)的過程,我們?yōu)榱四軌驕?zhǔn)確去描述程序動(dòng)態(tài)的整體執(zhí)行過程,就引入了“進(jìn)程(Process)”這個(gè)概念。進(jìn)程是具有一定獨(dú)立功能的程序,程序可以包括進(jìn)程,進(jìn)程也可以包括程序,進(jìn)程是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,既屬于基本的分配單元,也是最基本的執(zhí)行單元,本文是就以linux中進(jìn)程的概念、分類、啟動(dòng)方式及使用方法、注意事項(xiàng)進(jìn)行分析和研究。
【關(guān)鍵詞】進(jìn)程;終端;虛擬內(nèi)存
一、Linux進(jìn)程的基本概念
1、進(jìn)程就是指系統(tǒng)在進(jìn)行資源分配和調(diào)度所需要的最基本單位,也是一個(gè)具有獨(dú)立功能的程序的一次運(yùn)行過程。實(shí)際上就是每一個(gè)程序模塊還有它執(zhí)行時(shí)所要處理的數(shù)據(jù)共同組成了進(jìn)程。
2、理解進(jìn)程和程序的區(qū)別:●程序是靜態(tài)的,但進(jìn)程都是動(dòng)態(tài)的●程序是永久的,但進(jìn)程都是有生命的●一個(gè)程序可以包含若干個(gè)進(jìn)程,同樣的,一個(gè)進(jìn)程也可以包含若干個(gè)程序
3、進(jìn)程號(hào)。Linux之中每一個(gè)進(jìn)程都擁有一個(gè)唯一的標(biāo)識(shí)號(hào),被稱為PID(Process ID)。系統(tǒng)啟動(dòng)后的第一個(gè)進(jìn)程是init,它的進(jìn)程號(hào)是1。init是惟一一個(gè)由系統(tǒng)內(nèi)核直接運(yùn)行的進(jìn)程,也是系統(tǒng)中所有進(jìn)程的起源。除了init之外,每個(gè)進(jìn)程都有父進(jìn)程。
二、 Linux進(jìn)程的分類
當(dāng)你啟動(dòng)Apache程序的時(shí)候,linux系統(tǒng)會(huì)自動(dòng)為它分配一個(gè)進(jìn)程號(hào),然后我們就可以使用這個(gè)進(jìn)程號(hào)來監(jiān)視和控制這個(gè)程序,觀察它的運(yùn)行狀態(tài)。我們一般把進(jìn)程分為以下3大類:1)交互式的進(jìn)程:由一個(gè)Shell命令來啟動(dòng)的進(jìn)程。這些進(jìn)程常和用戶發(fā)生交互,要有一定的時(shí)間來等待用戶的操作。這種進(jìn)程既可以在后臺(tái)運(yùn)行,當(dāng)然也可以在前臺(tái)來運(yùn)行。如控制臺(tái)命令shell,文本編輯器等。2)批處理的進(jìn)程:不與特定的終端相關(guān)聯(lián),也就是不需要交互,主要是在后臺(tái)運(yùn)行的進(jìn)程。如編譯器、數(shù)據(jù)庫搜索引擎等。3)守護(hù)進(jìn)程:一般是由系統(tǒng)在開機(jī)時(shí)自動(dòng)激活啟動(dòng)或是由超級(jí)管理用戶root來啟動(dòng),對(duì)調(diào)度有嚴(yán)格的要求,不能被低優(yōu)先級(jí)進(jìn)程阻塞,一般運(yùn)行于后臺(tái)。如音視頻應(yīng)用程序等。
三、進(jìn)程管理的常用命令
1、ps的應(yīng)用。-功能:用來顯示系統(tǒng)進(jìn)程的各方面信息,方便我們監(jiān)視和控制程序。-格式:ps[參數(shù)]-參數(shù):
進(jìn)程的狀態(tài)(STAT)。R,進(jìn)程處于運(yùn)行(系統(tǒng)的當(dāng)前進(jìn)程)或者準(zhǔn)備運(yùn)行狀態(tài)(等待系統(tǒng)分配CPU);S,進(jìn)程處于睡眠狀態(tài);T,追蹤或停止;Z,僵死進(jìn)程(zombie),進(jìn)程已經(jīng)結(jié)束但因沒有妥善處理尚未釋放所有資源;W,進(jìn)程沒有固定的pages;<,高優(yōu)先級(jí)的進(jìn)程;N,低優(yōu)先級(jí)的進(jìn)程。作為一個(gè)Linux系統(tǒng)管理員,其主要的一個(gè)核心任務(wù)就是進(jìn)程的監(jiān)視和控制。"ps"就是這樣的一個(gè)監(jiān)視Linux的標(biāo)準(zhǔn)工具,它會(huì)顯示正在運(yùn)行的程序信息。比如,哪些程序運(yùn)行多長時(shí)間和使用多少CPU,哪些程序是哪個(gè)用戶來運(yùn)行的等等。當(dāng)我們需要人為來判定是哪個(gè)程序會(huì)讓系統(tǒng)變慢或是終止程序的時(shí)候,這些信息則是必需的。用戶可以通過ps命令看到所有的進(jìn)程,包括正在運(yùn)行的和沒有運(yùn)行的。其中,USER域指明了是由哪個(gè)用戶啟動(dòng)了這個(gè)命令。這個(gè)信息可以幫助你縮小問題范圍,假設(shè)某一個(gè)用戶占用了服務(wù)器大量的I/O,如果我們能夠很快找到它,那么就可以釋放其所占據(jù)的資源。通過ps命令,用戶可以實(shí)時(shí)地查看每個(gè)進(jìn)程的狀態(tài),如占用了多少CPU,查看內(nèi)存的狀態(tài)及VSZ(虛擬內(nèi)存大?。┖蚏SS(常駐集大小)的運(yùn)行狀態(tài)。我們可以通過這些數(shù)據(jù),來確定這個(gè)進(jìn)程是在正常運(yùn)行還是出現(xiàn)了異常。我們是在盡力確保正確合理地運(yùn)用系統(tǒng)資源,所以經(jīng)常要由管理員來決定對(duì)進(jìn)程進(jìn)行終止或重啟的操作。
2、kill的應(yīng)用
進(jìn)程通信:Linux中,kill命令是通過向進(jìn)程發(fā)送指定的信號(hào)來結(jié)束進(jìn)程的。前臺(tái)進(jìn)程在運(yùn)行時(shí),可以用【ctrl+c】鍵來終止它。后臺(tái)進(jìn)程可以使用kill命令向進(jìn)程發(fā)送強(qiáng)制終止信號(hào),以達(dá)到終止進(jìn)程的目的。-功能:終止正在運(yùn)行的進(jìn)程或作業(yè);-格式:kill [選項(xiàng)] PID
3、進(jìn)程調(diào)度
進(jìn)程調(diào)度就是通過合理的調(diào)度,選擇下一個(gè)要運(yùn)行的進(jìn)程,系統(tǒng)資源才能最大限度地發(fā)揮作用,多進(jìn)程才會(huì)有并發(fā)執(zhí)行的效果。而進(jìn)程之間是資源競爭通過謙讓度來實(shí)現(xiàn)的。謙讓度的值從-20到19。高謙讓度表示進(jìn)程優(yōu)先級(jí)別最低,執(zhí)行的順序靠后。nice命令:是在創(chuàng)建進(jìn)程時(shí)為進(jìn)程指定謙讓度的值。renice命令:是通過進(jìn)程ID找到相應(yīng)的進(jìn)程,用此命令來修改謙讓度,即是更改進(jìn)程的優(yōu)先級(jí)。
4、交互式的進(jìn)程管理工具?!裣到y(tǒng)監(jiān)視器gnome-system-monitor●終止進(jìn)程工具xkill●監(jiān)視系統(tǒng)任務(wù)的工具top??傊?,Linux系統(tǒng)上每個(gè)用戶任務(wù)、每個(gè)系統(tǒng)的守護(hù)進(jìn)程,我們都稱為進(jìn)程。Linux系統(tǒng)則用分時(shí)管理的方法能夠使所有的任務(wù)共同來分享系統(tǒng)上的資源。而我們要做的就是如何去控制這些進(jìn)程,讓它們能夠很好地為用戶服務(wù)。
作者簡介
李洋.單位:天津工程職業(yè)技術(shù)學(xué)院.郵政編碼:300270.