司新红 梁世豪 曹坤(石家庄铁道大学计算机科学与技术系,河北石家庄 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