admin 管理员组文章数量: 1184232
2024年3月13日发(作者:oracle11g卸载干净重装)
ISSN1009-3044
ComputerKnowledgeandTechnology
第13卷第14期(2017年5月)
电脑知识
与技术
Vol.13,No14,
May
2017
E-mail:xsjl@
ComputerKnowledgeandTechnology
电脑知识
与技术
Tel:+86-551-6569
嵌入式linux多进程应用程序的设计与实现
张错玲
1
,孙宝法
2
(1.安徽三联学院安徽合肥230001;2.安徽文达信息学院安徽合肥230001)
摘要:文章首先介绍了进程的概念,接着进行了多进程与多线程的比较,重点描述了多进程在linux系统下程序设计实现及
实验结果,最后进行总结并对未来课题的研究进行了展望。
Keywords:多进程;多线程;库函数;linux;fork函数
中图分类号:TP316文献标识码:A
DOI:10.14004/.2017.1540
文章编号:1009-3044(2017)14-0081-02
1概述
近年来,一些调查数据显示
[1]
,linux操作系统发展十分迅
速,虽然在桌面平台占有量不是很高,但在超级计算机领域
linux操作系统占据89%左右的市场份额;在嵌入式产品领域,
由于Linux自身的优良特性,以55%的市场份额遥遥领先于其
他嵌入式开发软件平台成为最适合嵌入式开发的操作系统
[2]
。
进行linux系统下的高级编程,我们必然要谈到进程。所
谓进程是指可并发执行的、具有独立功能的程序在一个数据集
合上的运行过程,是操作系统进行资源分配和保护的基本单
位
[3]
。进程的概念是针对系统而不是针对用户的,与普通程序
相比,进程是一个动态实体,它因创建而产生,因调度而运行,
因等待资源或事件而处于等待状态,因完成任务而被撤消,所
以进程具有一定的生命周期。
3Linux下多进程程序设计
首先在linux系统命令行后输入以下内容:
#cd/home
#mkdirprocess
#viprocess.c
打开vi编辑器后输入下列程序:
#include
#include
#include
#include
intmain(void)
{
intpid;
intstatus;
intc;
pid=fork();//fork()函数通过系统调用创建一个与原来进
程几乎完全相同的进程,pid表示fork函数返回的值
if(pid<0)
{printf("forkerror!n");
exit(1);//exit(0)表示进程正确返回值
}
elseif(pid==0)
{for(;;)
{printf("hello!n");
sleep(3);//进程等待时间函数
}
}
else
{for(;;)
{c=getchar();
if(c=='q')
{kill(pid,SIGKILL);//将pid进程进行终止
2多进程与多线程
很多人在学习linux编程时存在认识上的误区,认为用多
线程好、比多进程快、可靠性高,这是非常错误的。网络上有人
把多进程比喻成是立体交通系统,虽然造价高,上坡下坡多耗
点油,但是不堵车;多线程是平面交通系统,造价低,但红绿灯
太多,老堵车
[4]
。我认为这比喻是非常形象、恰当的。线程和进
程有各自的优缺点,具体表现如下:
多进程:进程之间不共享数据,没有锁问题,结构简单,一
个进程崩溃不影响全局,比较可靠;每个子进程都有2GB地址
空间和相关资源,总体能够达到的性能上限非常大;通过增加
CPU,就可以容易扩充性能。
多线程:它们彼此之间使用相同的地址空间,共享大部分
数据,启动一个线程所花费的空间远远小于启动一个进程所花
费的空间,而且,线程间彼此切换所需的时间也远远小于进程
间切换所需要的时间;线程间具有非常方便的通信机制。但线
程受限于2GB地址空间;线程之间的同步和加锁控制比较麻
烦;一个线程的崩溃可能影响到整个程序的稳定性。
综上表述可知,在我们进行编程的时候,要根据实际情况
进行判断,更适合使用哪种方法。
收稿日期:2017-03-20
《单片机原理与应用》(项目编号:2015gxk085)
基金项目:省级精品资源共享课程
——
作者简介:张错玲(1982—),女,讲师,硕士,主要研究方向为计算机应用;孙宝法(1965—),男,安徽合肥人,博士,教授,主要研究方
向为计算机应用、计算机仿真、数学建模、物联网。
本栏目责任编辑:谢媛媛
软件设计开发
81
ComputerKnowledgeandTechnology
电脑知识
与技术
第13卷第14期(2017年5月)
break;
}
elseif(c!='n')
printf("Thekey%cispressedn",c);
}
printf("waitchildprocessn");
waitpid(pid,&status,0);
}
return0;
}
以上程序是用C语言编写的linux下的多进程程序,下面来
运行并观察程序的运行结果。
4多进程实验结果
在linux系统的命令行输入以下命令:
#gcc-oprocessprocess.c
#./process
得到以下结果,如下图1所示:
图2两个进程在同时运行
5总结与展望
本课题的研究较好的完成了linux下多进程程序设计的模
拟,并得出了运行结果(说明:文章中的所有实验数据有环境约
束)。笔者认为对多线程在linux系统中编程的研究也具有一
定的意义,故打算在多线程的研究上下一番功夫,并希望未来
能取得一定的成果。
参考文献:
[1]Linux操作系统发展现状[EB/OL]./con⁃
tent/14/0513/13/13253385_.
[2]2016嵌入式行业现状及发展趋势分析[EB/OL].
/zhuanfang/bianjishidian/2016-12-26/⁃
ml.
[3]许大琴,万福,谢佑波.嵌入式系统设计大学教程[M].北京:人
民邮电出版社,2015.
[4]多进程和多线程的优缺点[EB/OL]./
Yogurshine/p/.
[5]王田苗.潜入认识系统设计与实例开发[M].北京:清华大学出
版社,2013.
图1多进程在linux下的运行结果
保证程序./process在正常运行的前提下,在linux中新建一
个标签,使用psaux命令进行观察,发现窗口中有两个进程同
时在运行,如下图2所示。因此,该程序实现了在linux下的多
进程程序的模拟。
(上接第76页)
这种复杂的需求运算可以大大节省人力成本,通过计算后的结
果有计划地进行采购和生产,可大大降低库存成本。利用物料
需求子系统与个个模块的准确衔接,让生产和采购清单变得有
据可依,并可以确保按时供货。将快速开发系统的特点与生产
与计划管理技术有机的结合在一起,通过运用快速开发技术对
该项目进行开发,加强系统环节设计以及成套能力。
将柔性计划与导航式生产结合起来,研究出一个便捷的管
理系统。最终用无代码开发实现了导航式也实现了这种个性
化需求比较高的生产管理系统,通过MRP物料需求运算后的
结果有利于有计划地进行生产,可大大降低库存成本,并可以
确保按时供货。
将系统的计划模块、生产模块通过抽提的方式将其解耦,
可以根据不同公司的业务需求,对代码规则进行少许的修改,
就可以将与其他模块有机的结合在一起。
参考文献:
[1]方旭升,沈峰,钱文,等.一个柔性化MIS系统的设计与开发[J].
南京航空航天大学学报,1993(10):597-601.
[2]许杜,蒋永平,张宪民.柔性制造系统原理与实践[M].北京:机
械工业出版社,2003:12-15.
[3]尹金玉.半导体制造业的物料需求计划管理系统的设计与
实现[D].成都:电子科技大学,2014:25-26.
[4]张芒,刘洪舟.基于同望V3开发平台的信息系统开发技术
[M].广州:华南理工大学出版社,2017:2.
[5]杨超今.柔性化生产管理信息系统设计与实现[D].成都:电子
科技大学,2008:15-16.
82
软件设计开发
本栏目责任编辑:谢媛媛
版权声明:本文标题:嵌入式linux多进程应用程序的设计与实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710277248a565739.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论