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