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

软件设计开发

本栏目责任编辑:谢媛媛


本文标签: 进程 进行 系统 开发 程序