|  | |
| Linux下多任務系統之進程的基本概念 | |
| 多(duo)(duo)任(ren)務的(de)概(gai)念人們已經(jing)非常熟悉了,它是(shi)指用戶(hu)可以(yi)在同一時(shi)間內運(yun)行(xing)多(duo)(duo)個應用程序。Linux就是(shi)一種支持多(duo)(duo)任(ren)務的(de)操(cao)作系統,它支持多(duo)(duo)進(jin)程、多(duo)(duo)線程等多(duo)(duo)任(ren)務處理(li)和(he)任(ren)務之間的(de)多(duo)(duo)種通信機(ji)制(zhi)。 多任(ren)務處理(li)是指用戶可以在同一時間內(nei)運行(xing)多個應用程序,每個應用程序被稱做一個任(ren)務。Linux就是一個支(zhi)持多任(ren)務的(de)操作系統,它比單任(ren)務系統的(de)功能增(zeng)強了許多。 當(dang)多任(ren)(ren)務(wu)(wu)操作(zuo)系統使用(yong)某種任(ren)(ren)務(wu)(wu)調(diao)度策略允許(xu)兩(liang)個(ge)或(huo)更多進程并發共享一個(ge)處(chu)理器時,事實上處(chu)理器在(zai)某一時刻只會(hui)給一個(ge)任(ren)(ren)務(wu)(wu)提(ti)供服務(wu)(wu)。由于任(ren)(ren)務(wu)(wu)調(diao)度機制保證(zheng)不(bu)同(tong)任(ren)(ren)務(wu)(wu)之(zhi)間(jian)的(de)切換速度十分迅速,因此(ci)給人多個(ge)任(ren)(ren)務(wu)(wu)同(tong)時運(yun)行(xing)的(de)錯覺。多任(ren)(ren)務(wu)(wu)系統中有3個(ge)功能(neng)單位:任(ren)(ren)務(wu)(wu)、進程和線程,下面(mian)分別進行(xing)介紹。 進程的基本概念 進(jin)程是(shi)指一個(ge)具有獨立功(gong)能的(de)程序在(zai)某個(ge)數據集上(shang)的(de)一次動態執行過程,它是(shi)系(xi)統進(jin)行資源(yuan)分(fen)配(pei)和調度的(de)基本單元。一次任務的(de)運行可以(yi)并(bing)發激活多個(ge)進(jin)程,這些進(jin)程相(xiang)互合作來(lai)完成(cheng)該(gai)任務的(de)一個(ge)終(zhong)目標(biao)。 進程具有并發性(xing)、動(dong)態(tai)性(xing)、交互性(xing)、獨立性(xing)和異步性(xing)等(deng)主(zhu)要特性(xing)。 并(bing)發性:指的是(shi)系統(tong)中多個進程可以(yi)同時(shi)并(bing)發執行(xing),相(xiang)互(hu)之間(jian)不受干(gan)擾。 動態性:指(zhi)的(de)(de)是(shi)進(jin)程(cheng)(cheng)都有完(wan)整的(de)(de)生命(ming)周期(qi),而(er)且在進(jin)程(cheng)(cheng)的(de)(de)生命(ming)周期(qi)內,進(jin)程(cheng)(cheng)的(de)(de)狀態是(shi)不斷變(bian)化的(de)(de)。另外,進(jin)程(cheng)(cheng)具有動態的(de)(de)地址(zhi)空間(包(bao)括(kuo)代碼、數據和進(jin)程(cheng)(cheng)控制(zhi)塊(kuai)等)。 交(jiao)互(hu)(hu)性:指的(de)是(shi)進(jin)(jin)程在執行過程中可(ke)能會與其他進(jin)(jin)程發生(sheng)直接和間接的(de)交(jiao)互(hu)(hu)操作,如進(jin)(jin)程同步(bu)和進(jin)(jin)程互(hu)(hu)斥等,需要為此添加(jia)一定的(de)進(jin)(jin)程處理機(ji)制(zhi)。 獨立性:指的(de)(de)是進(jin)(jin)程是一個(ge)相(xiang)對完整的(de)(de)資(zi)源分(fen)配和調度的(de)(de)基(ji)本(ben)單(dan)位,各個(ge)進(jin)(jin)程的(de)(de)地(di)址空間是相(xiang)互獨立的(de)(de),只有采(cai)用某些特定的(de)(de)通信(xin)機制才能實現進(jin)(jin)程間的(de)(de)通信(xin)。 異步性:指的(de)是每(mei)個進程都(dou)按(an)照各(ge)自(zi)獨立(li)的(de)、不可預知的(de)速度(du)向前(qian)執行(xing)。 進程(cheng)(cheng)和程(cheng)(cheng)序(xu)(xu)是(shi)有(you)(you)本質區別的(de)(de)(de)(de):程(cheng)(cheng)序(xu)(xu)是(shi)靜態的(de)(de)(de)(de)一(yi)段(duan)代(dai)碼(ma),是(shi)一(yi)些保存(cun)在非易失(shi)性(xing)存(cun)儲器的(de)(de)(de)(de)指令的(de)(de)(de)(de)有(you)(you)序(xu)(xu)集合,沒有(you)(you)任何執(zhi)行(xing)的(de)(de)(de)(de)概念;而進程(cheng)(cheng)是(shi)一(yi)個動(dong)態的(de)(de)(de)(de)概念,它是(shi)程(cheng)(cheng)序(xu)(xu)執(zhi)行(xing)的(de)(de)(de)(de)過程(cheng)(cheng),包括動(dong)態創建(jian)、調度和消亡的(de)(de)(de)(de)整個過程(cheng)(cheng),它是(shi)程(cheng)(cheng)序(xu)(xu)執(zhi)行(xing)和資源(yuan)管理的(de)(de)(de)(de)小單位。 Linux系統中包括(kuo)以下幾種(zhong)類型的進(jin)程(cheng)。 交互(hu)式進程:這(zhe)類(lei)進程經常與用(yong)戶進行交互(hu),因此(ci)要花很多時間等待用(yong)戶的交互(hu)操(cao)作(鍵盤和鼠(shu)標操(cao)作等)。當(dang)接收到用(yong)戶的交互(hu)操(cao)作后,這(zhe)類(lei)進程應該很快被(bei)運行,而且響應時間的變化也應該很小,否則用(yong)戶就會覺得系統反(fan)應遲鈍(dun)或者不太穩定。典型的交互(hu)式進程有shell命令進程、文本編輯器和圖(tu)形應用(yong)程序(xu)運行等。 批處(chu)理進(jin)程:這類進(jin)程不(bu)必(bi)與用戶(hu)進(jin)行交互,因此經常在后臺運行。因為這類進(jin)程通常不(bu)必(bi)很快(kuai)地響應,因此往往受到調度器(qi)的(de)“慢待(dai)”。典(dian)型(xing)的(de)批處(chu)理進(jin)程有編(bian)譯器(qi)的(de)編(bian)譯操作、數(shu)據庫搜索引擎等(deng)。 實時(shi)進(jin)(jin)程:這類(lei)進(jin)(jin)程通常對(dui)調度響應時(shi)間(jian)有(you)(you)很(hen)高的(de)要(yao)求,一般不會被低(di)優先級的(de)進(jin)(jin)程阻塞。它們不僅要(yao)求很(hen)短的(de)響應時(shi)間(jian),而且更重要(yao)的(de)是(shi)響應時(shi)間(jian)的(de)變化應該很(hen)小。典(dian)型的(de)實時(shi)進(jin)(jin)程有(you)(you)視頻和音(yin)頻應用程序、實時(shi)數據采集系(xi)統程序等。 本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》 熱點鏈接(jie):     
         1、Linux下多任務系統之任務介紹 |