司新紅 梁世豪 曹坤(石家莊鐵道大學(xué)計算機科學(xué)與技術(shù)系,河北石家莊 050043)
ARM嵌入式應(yīng)用開發(fā)中多線程與多進程的選擇分析
司新紅 梁世豪 曹坤
(石家莊鐵道大學(xué)計算機科學(xué)與技術(shù)系,河北石家莊 050043)
在ARM嵌入式程序開發(fā)中,由于硬件資源(主要是CPU和內(nèi)存)是非常寶貴的,因此需要對系統(tǒng)的功能進行分析,結(jié)合多進程與多線程兩種方案的優(yōu)缺點,選取最為合適的方案,進行程序開發(fā),使系統(tǒng)運行更加高效可靠。本文詳細分析了多進程與多線程之間通信的特點,并結(jié)合實例進行了分析。
多線程 多進程 嵌入式
進程是嵌入式操作系統(tǒng)中資源分配和獨立運行的基本單位,相當于一個程序的一次運行活動,進程具有并發(fā)性,即在一個時間段內(nèi)多個進程實體同存于內(nèi)存中同時運行。進程是線程的容器,操作系統(tǒng)中引入進程是為了能使程序可以并發(fā)執(zhí)行,提高資源利用率和系統(tǒng)吞吐量。但由于進程作為計算機中資源分配的基本單位,多進程就意味著需要分配更多的內(nèi)存,在硬件資源十分有限的嵌入式操作系統(tǒng)中采用過多的進程數(shù)量必然會導(dǎo)致系統(tǒng)性能的下降。為了減少程序在并發(fā)執(zhí)行時的硬件資源消耗,提高程序的并發(fā)性引入線程的概念,在操作系統(tǒng)中,一個進程中最少需要一個線程來執(zhí)行命令,內(nèi)核空間是通過進程模擬線程的,在用戶控件用pthread創(chuàng)建線程。線程是進程執(zhí)行的最小單位。因為同屬于一個進程,各線程共享工作空間,線程間允許數(shù)據(jù)交換和任務(wù)協(xié)作,而進程間數(shù)據(jù)的交換就沒有這樣的方便性了。
由于進程之間具有獨立性,當一個任務(wù)單獨作為一個進程時,它的崩潰不會影響到其它任務(wù)的活動。進程作為資源分配的最小單位,多進程的方案更適合需要靈活分配內(nèi)存空間的任務(wù),由于線程間共享同一進程的資源,多線程方案在資源分配上沒有多進程更加方便。在Linux系統(tǒng)中,程序需要以不同用戶身份運行也必須使用多進程。
圖1 系統(tǒng)物理結(jié)構(gòu)
表1 S3C6410 芯片主要參數(shù)
與多進程相比,多線程需要的系統(tǒng)開銷要小很多。因為每啟用一個新的進程都有自己的地址空間、數(shù)據(jù)表、代碼段、堆棧段和數(shù)據(jù)段,而運行在同一個進程中的多個線程則使用同一個地址空間,另外還會共享大部分的數(shù)據(jù)。另外線程間還有更加方便的通信機制,相比于只能通過通信來傳遞數(shù)據(jù)的進程間通信,在同一個進程中的線程間共享數(shù)據(jù)空間,這些數(shù)據(jù)可以直接快速地被所有線程使用。除了以上優(yōu)點,多線程程序具有應(yīng)用程序響應(yīng)快,提高多cpu的使用效率,優(yōu)化多進程程序代碼的結(jié)構(gòu)等優(yōu)點。
在以基于Samsung公司的S3C6410X(ARM11)為嵌入式微處理器的UP-Magic6410型嵌入式教學(xué)實驗平臺上開發(fā)如下智能家居控制系統(tǒng)時,對嵌入式編程時對多線程和多進程的選取進行分析。
控制系統(tǒng)技術(shù)要求∶采用以A RM 11為控制核心;通過A RM控制傳感器,實現(xiàn)數(shù)據(jù)的采集;通過串口實現(xiàn)數(shù)據(jù)上傳到上位機;利用gprs通訊模塊,實現(xiàn)手機對系統(tǒng)的控制;采用反饋機制了解設(shè)備的狀態(tài)。如圖1。
S3C6410芯片主要參數(shù)見表1。
下面進行分析∶系統(tǒng)運行時的主要任務(wù)有數(shù)據(jù)采集、命令接受、設(shè)備響應(yīng)、信號發(fā)送四個方面。由于系統(tǒng)硬件資源十分寶貴,要傾向于創(chuàng)建多線程。數(shù)據(jù)采集和命令接受均屬于信號的輸入過程,兩者需要及時的共享數(shù)據(jù)來完成對系統(tǒng)的控制,數(shù)據(jù)采集時多個傳感器協(xié)同運作時,也適合采用數(shù)據(jù)分享更為方便的多線程方案。設(shè)備響應(yīng)對系統(tǒng)響應(yīng)時間要求較高,需要在最短的時間內(nèi)分析接收的信號,并及時做出響應(yīng),創(chuàng)建新線程的時間更快,線程間數(shù)據(jù)訪問也更加方便,因此需要在同一進程下創(chuàng)建數(shù)據(jù)采集和設(shè)備響應(yīng)線程。信號的發(fā)送也需要更加方便的訪問數(shù)據(jù)采集時獲得的數(shù)據(jù),因此將其線程創(chuàng)建在信號采集統(tǒng)一進程下。
隨著社會信息化的飛速發(fā)展,嵌入式應(yīng)用也越來越普遍。嵌入式開發(fā)受到了人們越來越多的關(guān)注,本文從理論和實際討論了嵌入式程序開發(fā)中多線程和多進程技術(shù)的利弊。通過具體實例對兩種技術(shù)的選取進行了分析,為開發(fā)人員提供了參考。
[1]雷銘哲,張勇.Linux線程機制研究[J].火力與指揮控制,2010,35 (2).
[2]鐘誠,盧衛(wèi)恒,李德勇.Linux進程調(diào)度分析[J].電腦知識與技術(shù),2011(1).
[3]駱斌.多線程技術(shù)的研究與應(yīng)用[J].計算機研究與發(fā)展,2000(4). [4]湯小丹.《計算機操作系統(tǒng)》[M].西安電子科技大學(xué)出版社,2007(5).
In the ARM embedded application development, due to the hardware resources (CPU and memory) is very valuable. Therefore, it is necessary to the function of the system is analyzed, combined with the advantages and disadvantages of the two kinds of multi process and multi thread program, select the most suitable scheme, program development, and make the system run more efficiently and reliably. This paper analyzes the characteristics of communication between multi process and multi thread, and combined with case analysis.
Multi-thread;Multi-process;Embedded