張錯玲+孫寶法
摘要:文章首先介紹了進程的概念,接著進行了多進程與多線程的比較,重點描述了多進程在linux系統(tǒng)下程序設計實現(xiàn)及實驗結果,最后進行總結并對未來課題的研究進行了展望。Keywords:多進程;多線程;庫函數(shù);linux;fork函數(shù)
中圖分類號:TP316 文獻標識碼:A 文章編號:1009-3044(2017)14-0081-02
1概述
近年來,一些調查數(shù)據(jù)顯示,linux操作系統(tǒng)發(fā)展十分迅速,雖然在桌面平臺占有量不是很高,但在超級計算機領域linux操作系統(tǒng)占據(jù)89%左右的市場份額;在嵌入式產品領域,由于Linux自身的優(yōu)良特性,以55%的市場份額遙遙領先于其他嵌入式開發(fā)軟件平臺成為最適合嵌入式開發(fā)的操作系統(tǒng)。
進行l(wèi)inux系統(tǒng)下的高級編程,我們必然要談到進程。所謂進程是指可并發(fā)執(zhí)行的、具有獨立功能的程序在一個數(shù)據(jù)集合上的運行過程,是操作系統(tǒng)進行資源分配和保護的基本單位。進程的概念是針對系統(tǒng)而不是針對用戶的,與普通程序相比,進程是一個動態(tài)實體,它因創(chuàng)建而產生,因調度而運行,因等待資源或事件而處于等待狀態(tài),因完成任務而被撤消,所以進程具有一定的生命周期。
2多進程與多線程
很多人在學習linux編程時存在認識上的誤區(qū),認為用多線程好、比多進程快、可靠性高,這是非常錯誤的。網絡上有人把多進程比喻成是立體交通系統(tǒng),雖然造價高,上坡下坡多耗點油,但是不堵車;多線程是平面交通系統(tǒng),造價低,但紅綠燈太多,老堵車。我認為這比喻是非常形象、恰當?shù)?。線程和進程有各自的優(yōu)缺點,具體表現(xiàn)如下:
多進程:進程之間不共享數(shù)據(jù),沒有鎖問題,結構簡單,一個進程崩潰不影響全局,比較可靠;每個子進程都有2GB地址空間和相關資源,總體能夠達到的性能上限非常大;通過增加CPU,就可以容易擴充性能。
多線程:它們彼此之間使用相同的地址空間,共享大部分數(shù)據(jù),啟動一個線程所花費的空間遠遠小于啟動一個進程所花費的空間,而且,線程間彼此切換所需的時間也遠遠小于進程間切換所需要的時間;線程間具有非常方便的通信機制。但線程受限于2GB地址空間;線程之間的同步和加鎖控制比較麻煩;一個線程的崩潰可能影響到整個程序的穩(wěn)定性。
綜上表述可知,在我們進行編程的時候,要根據(jù)實際情況進行判斷,更適合使用哪種方法。
3 Linux下多進程程序設計
以上程序是用C語言編寫的linux下的多進程程序,下面來運行并觀察程序的運行結果。
4多進程實驗結果
在linux系統(tǒng)的命令行輸入以下命令:
#gcc-0 process process.c
#./process
得到以下結果,如下圖1所示:
保證程序./process在正常運行的前提下,在linux中新建一個標簽,使用ps aux命令進行觀察,發(fā)現(xiàn)窗口中有兩個進程同時在運行,如下圖2所示。因此,該程序實現(xiàn)了在linux下的多進程程序的模擬。
5總結與展望
本課題的研究較好的完成了linux下多進程程序設計的模擬,并得出了運行結果(說明:文章中的所有實驗數(shù)據(jù)有環(huán)境約束)。筆者認為對多線程在linux系統(tǒng)中編程的研究也具有一定的意義,故打算在多線程的研究上下一番功夫,并希望未來能取得一定的成果。