司新紅 梁世豪 曹坤(石家莊鐵道大學計算機科學與技術系,河北石家莊 050043)
ARM嵌入式應用開發中多線程與多進程的選擇分析
司新紅 梁世豪 曹坤
(石家莊鐵道大學計算機科學與技術系,河北石家莊 050043)
在ARM嵌入式程序開發中,由于硬件資源(主要是CPU和內存)是非常寶貴的,因此需要對系統的功能進行分析,結合多進程與多線程兩種方案的優缺點,選取最為合適的方案,進行程序開發,使系統運行更加高效可靠。本文詳細分析了多進程與多線程之間通信的特點,并結合實例進行了分析。
多線程 多進程 嵌入式
進程是嵌入式操作系統中資源分配和獨立運行的基本單位,相當于一個程序的一次運行活動,進程具有并發性,即在一個時間段內多個進程實體同存于內存中同時運行。進程是線程的容器,操作系統中引入進程是為了能使程序可以并發執行,提高資源利用率和系統吞吐量。但由于進程作為計算機中資源分配的基本單位,多進程就意味著需要分配更多的內存,在硬件資源十分有限的嵌入式操作系統中采用過多的進程數量必然會導致系統性能的下降。為了減少程序在并發執行時的硬件資源消耗,提高程序的并發性引入線程的概念,在操作系統中,一個進程中最少需要一個線程來執行命令,內核空間是通過進程模擬線程的,在用戶控件用pthread創建線程。線程是進程執行的最小單位。因為同屬于一個進程,各線程共享工作空間,線程間允許數據交換和任務協作,而進程間數據的交換就沒有這樣的方便性了。
由于進程之間具有獨立性,當一個任務單獨作為一個進程時,它的崩潰不會影響到其它任務的活動。進程作為資源分配的最小單位,多進程的方案更適合需要靈活分配內存空間的任務,由于線程間共享同一進程的資源,多線程方案在資源分配上沒有多進程更加方便。在Linux系統中,程序需要以不同用戶身份運行也必須使用多進程。

圖1 系統物理結構

表1 S3C6410 芯片主要參數
與多進程相比,多線程需要的系統開銷要小很多。因為每啟用一個新的進程都有自己的地址空間、數據表、代碼段、堆棧段和數據段,而運行在同一個進程中的多個線程則使用同一個地址空間,另外還會共享大部分的數據。另外線程間還有更加方便的通信機制,相比于只能通過通信來傳遞數據的進程間通信,在同一個進程中的線程間共享數據空間,這些數據可以直接快速地被所有線程使用。除了以上優點,多線程程序具有應用程序響應快,提高多cpu的使用效率,優化多進程程序代碼的結構等優點。
在以基于Samsung公司的S3C6410X(ARM11)為嵌入式微處理器的UP-Magic6410型嵌入式教學實驗平臺上開發如下智能家居控制系統時,對嵌入式編程時對多線程和多進程的選取進行分析。
控制系統技術要求∶采用以A RM 11為控制核心;通過A RM控制傳感器,實現數據的采集;通過串口實現數據上傳到上位機;利用gprs通訊模塊,實現手機對系統的控制;采用反饋機制了解設備的狀態。如圖1。
S3C6410芯片主要參數見表1。
下面進行分析∶系統運行時的主要任務有數據采集、命令接受、設備響應、信號發送四個方面。由于系統硬件資源十分寶貴,要傾向于創建多線程。數據采集和命令接受均屬于信號的輸入過程,兩者需要及時的共享數據來完成對系統的控制,數據采集時多個傳感器協同運作時,也適合采用數據分享更為方便的多線程方案。設備響應對系統響應時間要求較高,需要在最短的時間內分析接收的信號,并及時做出響應,創建新線程的時間更快,線程間數據訪問也更加方便,因此需要在同一進程下創建數據采集和設備響應線程。信號的發送也需要更加方便的訪問數據采集時獲得的數據,因此將其線程創建在信號采集統一進程下。
隨著社會信息化的飛速發展,嵌入式應用也越來越普遍。嵌入式開發受到了人們越來越多的關注,本文從理論和實際討論了嵌入式程序開發中多線程和多進程技術的利弊。通過具體實例對兩種技術的選取進行了分析,為開發人員提供了參考。
[1]雷銘哲,張勇.Linux線程機制研究[J].火力與指揮控制,2010,35 (2).
[2]鐘誠,盧衛恒,李德勇.Linux進程調度分析[J].電腦知識與技術,2011(1).
[3]駱斌.多線程技術的研究與應用[J].計算機研究與發展,2000(4). [4]湯小丹.《計算機操作系統》[M].西安電子科技大學出版社,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