嵌入式linUX多进程应用程序的设计与实现

2017-07-10 07:00张错玲孙宝法
电脑知识与技术 2017年14期
关键词:线程程序设计进程

张错玲+孙宝法

摘要:文章首先介绍了进程的概念,接着进行了多进程与多线程的比较,重点描述了多进程在linux系统下程序设计实现及实验结果,最后进行总结并对未来课题的研究进行了展望。Keywords:多进程;多线程;库函数;linux;fork函数

中图分类号:TP316 文献标识码:A 文章编号:1009-3044(2017)14-0081-02

1概述

近年来,一些调查数据显示,linux操作系统发展十分迅速,虽然在桌面平台占有量不是很高,但在超级计算机领域linux操作系统占据89%左右的市场份额;在嵌入式产品领域,由于Linux自身的优良特性,以55%的市场份额遥遥领先于其他嵌入式开发软件平台成为最适合嵌入式开发的操作系统。

进行linux系统下的高级编程,我们必然要谈到进程。所謂进程是指可并发执行的、具有独立功能的程序在一个数据集合上的运行过程,是操作系统进行资源分配和保护的基本单位。进程的概念是针对系统而不是针对用户的,与普通程序相比,进程是一个动态实体,它因创建而产生,因调度而运行,因等待资源或事件而处于等待状态,因完成任务而被撤消,所以进程具有一定的生命周期。

2多进程与多线程

很多人在学习linux编程时存在认识上的误区,认为用多线程好、比多进程快、可靠性高,这是非常错误的。网络上有人把多进程比喻成是立体交通系统,虽然造价高,上坡下坡多耗点油,但是不堵车;多线程是平面交通系统,造价低,但红绿灯太多,老堵车。我认为这比喻是非常形象、恰当的。线程和进程有各自的优缺点,具体表现如下:

多进程:进程之间不共享数据,没有锁问题,结构简单,一个进程崩溃不影响全局,比较可靠;每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大;通过增加CPU,就可以容易扩充性能。

多线程:它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间;线程间具有非常方便的通信机制。但线程受限于2GB地址空间;线程之间的同步和加锁控制比较麻烦;一个线程的崩溃可能影响到整个程序的稳定性。

综上表述可知,在我们进行编程的时候,要根据实际情况进行判断,更适合使用哪种方法。

3 Linux下多进程程序设计

以上程序是用C语言编写的linux下的多进程程序,下面来运行并观察程序的运行结果。

4多进程实验结果

在linux系统的命令行输入以下命令:

#gcc-0 process process.c

#./process

得到以下结果,如下图1所示:

保证程序./process在正常运行的前提下,在linux中新建一个标签,使用ps aux命令进行观察,发现窗口中有两个进程同时在运行,如下图2所示。因此,该程序实现了在linux下的多进程程序的模拟。

5总结与展望

本课题的研究较好的完成了linux下多进程程序设计的模拟,并得出了运行结果(说明:文章中的所有实验数据有环境约束)。笔者认为对多线程在linux系统中编程的研究也具有一定的意义,故打算在多线程的研究上下一番功夫,并希望未来能取得一定的成果。

猜你喜欢
线程程序设计进程
基于Visual Studio Code的C语言程序设计实践教学探索
债券市场对外开放的进程与展望
从细节入手,谈PLC程序设计技巧
浅谈linux多线程协作
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
社会进程中的新闻学探寻
我国高等教育改革进程与反思
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux僵死进程的产生与避免