预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共35页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

华清远见——嵌入式培训专家http://www.farsight.com.cnQQ:313638714 http://shop.embedu.cn “黑色经典”系列之《嵌入式Linux应用程序开发详解》 第7章进程控制开发 本章目标 文件是Linux中最常见最基础的操作对象,而进程则是系统调度的单位,在上一章学习 了文件I/O控制之后,本章主要讲解进程控制开发部分,通过本章的学习,读者将会掌握以 下内容。 掌握进程相关的基本概念 掌握Linux下的进程结构 掌握Linux下进程创建及进程管理 掌握Linux下进程创建相关的系统调用 掌握守护进程的概念 掌握守护进程的启动方法 掌握守护进程的输出及建立方法 学会编写多进程程序 学会编写守护进程 华清远见<嵌入式Linux应用开发班>培训教材 华清远见——嵌入式培训专家http://www.farsight.com.cnQQ:313638714 http://shop.embedu.cn 7.1Linux下进程概述 7.1.1进程相关基本概念 1.进程的定义 进程的概念首先是在60年代初期由MIT的Multics系统和IBM的TSS/360系统引入的。 经过了40多年的发展,人们对进程有过各种各样的定义。现列举较为著名的几种。 (1)进程是一个独立的可调度的活动(E.Cohen,D.Jofferson) (2)进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源(P.Denning) (3)进程是可以并行执行的计算部分。(S.E.Madnick,J.T.Donovan) 以上进程的概念都不相同,但其本质是一样的。它指出了进程是一个程序的一次执行的 过程。它和程序是有本质区别的,程序是静态的,它是一些保存在磁盘上的指令的有序集合, 没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、 调度和消亡的整个过程。它是程序执行和资源管理的最小单位。因此,对系统而言,当用户 在系统中键入命令执行一个程序的时候,它将启动一个进程。 2.进程控制块 进程是Linux系统的基本调度单位,那么从系统的角度看如何描述并表示它的变化呢? 在这里,是通过进程控制块来描述的。进程控制块包含了进程的描述信息、控制信息以及资 源信息,它是进程的一个静态描述。在Linux中,进程控制块中的每一项都是一个task_struct 结构,它是在include/linux/sched.h中定义的。 3.进程的标识 在Linux中最主要的进程标识有进程号(PID,ProcessIdenityNumber)和它的父进程号 (PPID,parentprocessID)。其中PID惟一地标识一个进程。PID和PPID都是非零的正整数。 在Linux中获得当前进程的PID和PPID的系统调用函数为getpid和getppid,通常程序 获得当前进程的PID和PPID可以将其写入日志文件以做备份。getpid和getppid系统调用过 程如下所示: /*process.c*/ #include<stdio.h> #include<unistd.h> #include<stdlib.h> intmain() { /*获得当前进程的进程ID和其父进程ID*/ printf("ThePIDofthisprocessis%d\n",getpid()); printf("ThePPIDofthisprocessis%d\n",getppid()); 华清远见<嵌入式Linux应用开发班>培训教材 《嵌入式Linux应用程序开发详解》——第7章、进程控制开发QQ:313638714 http://shop.embedu.cn } 使用arm-linux-gcc进行交叉编译,再将其下载到目标板上运行该程序,可以得到如下结 果,该值在不同的系统上会有所不同: [root@localhostprocess]#./process ThePIDofthisprocessis78 THePPIDofthisprocessis36 另外,进程标识还有用户和用户组标识、进程时间、资源利用情况等,这里就不做一一 介绍,感兴趣的读者可以参见W.RichardStevens编著的《AdvancedProgrammingintheUNIX Environmen》。 4.进程运行的状态 进程是程序的执行过程,根据它的生命期可以划分成3种状态。 ·执行态:该进程正在,即进程正在占用CPU。 ·就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。 ·等待态:进程不能使用CPU,若等待事件发生则可将其唤醒。 它们之间转换的关系图如图7.1所示。 时间片到因等待