资料介绍
7.1.1 进程的基本概念
1.进程的定义
进程的概念首先是在20世纪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,Process Idenity Number)和它的父进程号(PPID,parent process ID)。其中PID惟一地标识一个进程。PID和PPID都是非零的正整数。
在Linux中获得当前进程的PID和PPID的系统调用函数为getpid()和getppid(),通常程序获得当前进程的PID和PPID之后,可以将其写入日志文件以做备份。getpid()和getppid()系统调用过程如下所示:
/* pid.c */
#include《stdio.h》
#include《unistd.h》
#include 《stdlib.h》
int main()
{
/*获得当前进程的进程ID和其父进程ID*/
printf(“The PID of this process is %d\n”, getpid());
printf(“The PPID of this process is %d\n”, getppid());
}
使用arm-linux-gcc进行交叉编译,再将其下载到目标板上运行该程序,可以得到如下结果,该值在不同的系统上会有所不同:
$ 。/pid
The PID of this process is 78
THe PPID of this process is 36
另外,进程标识还有用户和用户组标识、进程时间、资源利用情况等,这里就不做一一介绍,感兴趣的读者可以参见W.Richard Stevens编著的《Advanced Programming in the UNIX Environmen》。
4.进程运行的状态
进程是程序的执行过程,根据它的生命周期可以划分成3种状态。
n 执行态:该进程正在运行,即进程正在占用CPU。
n 就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。
n 等待态:进程不能使用CPU,若等待事件发生(等待的资源分配到)则可将其唤醒。
它们之间转换的关系如图7.1所示。
图7.1 进程3种状态的转化关系
1.进程的定义
进程的概念首先是在20世纪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,Process Idenity Number)和它的父进程号(PPID,parent process ID)。其中PID惟一地标识一个进程。PID和PPID都是非零的正整数。
在Linux中获得当前进程的PID和PPID的系统调用函数为getpid()和getppid(),通常程序获得当前进程的PID和PPID之后,可以将其写入日志文件以做备份。getpid()和getppid()系统调用过程如下所示:
/* pid.c */
#include《stdio.h》
#include《unistd.h》
#include 《stdlib.h》
int main()
{
/*获得当前进程的进程ID和其父进程ID*/
printf(“The PID of this process is %d\n”, getpid());
printf(“The PPID of this process is %d\n”, getppid());
}
使用arm-linux-gcc进行交叉编译,再将其下载到目标板上运行该程序,可以得到如下结果,该值在不同的系统上会有所不同:
$ 。/pid
The PID of this process is 78
THe PPID of this process is 36
另外,进程标识还有用户和用户组标识、进程时间、资源利用情况等,这里就不做一一介绍,感兴趣的读者可以参见W.Richard Stevens编著的《Advanced Programming in the UNIX Environmen》。
4.进程运行的状态
进程是程序的执行过程,根据它的生命周期可以划分成3种状态。
n 执行态:该进程正在运行,即进程正在占用CPU。
n 就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。
n 等待态:进程不能使用CPU,若等待事件发生(等待的资源分配到)则可将其唤醒。
它们之间转换的关系如图7.1所示。
图7.1 进程3种状态的转化关系
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 嵌入式linux查看服务进程,通过proc查看进程资源
- 进程控制块,信号集是什么资料下载
- Linux教程之进程的概念和进程管理命令的使用 2次下载
- linux进程的深入理解 2次下载
- Linux进程调度的原理解析 1次下载
- 进程控制开发之编写多进程程序实验解析 0次下载
- 进程间通信之Linux下进程间通信概述 0次下载
- 进程间通信之:管道 0次下载
- Linux守护进程详解 0次下载
- Linux进程控制编程 0次下载
- Linux源码分析系列的进程 32次下载
- LINUX进程源代码分析 44次下载
- 利用Hook技术实现进程控制
- Linux 2.6进程调度
- Linux进程管理 0次下载
- Linux中进程、线程和协程的基础概念 650次阅读
- 程序中进程和线程的区别 519次阅读
- Linux系统开发中进程与线程的基本原理 747次阅读
- 如何在Linux终止僵尸进程 1952次阅读
- 如何在Linux使用ps/pstree/top命令查看进程 1666次阅读
- 进程在Linux上是怎么实现的 1272次阅读
- Linux进程间通信方法之管道 1820次阅读
- Linux:测试进程占用的虚拟内存大小 2762次阅读
- 虚拟机:linux 进程的最大线程个数 2624次阅读
- Linux进程调度时机概念分析 2682次阅读
- Linux进程管理:什么是进程?进程的生命周期 7750次阅读
- 什么是僵尸进程_Linux僵尸进程可以被“杀死”吗? 4589次阅读
- Linux进程的概念及进程通信的应用场景 6622次阅读
- Linux进程的睡眠和唤醒 4276次阅读
- 基于Linux进程管理的详细剖析 3630次阅读
下载排行
本周
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 137次下载 | 1 积分
- 2PCB布线和布局电路设计规则
- 0.40 MB | 4次下载 | 免费
- 3TPS6287B25降压转换器评估模块
- 3.46MB | 1次下载 | 免费
- 4INA226EVM用户指南
- 4.7MB | 1次下载 | 免费
- 5INA226EVM修订版A模型用户指南和软件教程
- 2.28MB | 1次下载 | 免费
- 6Altium Designer印刷电路板设计与制作PDF电子书免费下载
- 14.11 MB | 0次下载 | 3 积分
- 7DLPC3470和DLPC3478软件编程人员指南
- 1.68MB | 次下载 | 免费
- 8TPS1213-Q1智能高侧驱动器评估模块
- 1.63MB | 次下载 | 免费
本月
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 137次下载 | 1 积分
- 2新概念模拟电路第四册信号处理电路电子书免费下载
- 10.69 MB | 60次下载 | 免费
- 3800VA纯正弦波逆变器的参考设计
- 2.96MB | 34次下载 | 免费
- 4纯电动汽⻋的主要部件及⼯作原理
- 5.76 MB | 15次下载 | 5 积分
- 5JESD79-5C_v1.30-2024 内存技术规范
- 2.71 MB | 10次下载 | 免费
- 6elmo直线电机驱动调试细则
- 4.76 MB | 9次下载 | 6 积分
- 7明伟电源模块RSP-3000图纸
- 0.30 MB | 8次下载 | 免费
- 8使用BQ76PL102系列电量计进行BQ78PL114的快速入门指南
- 4.04MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935115次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191366次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183329次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73805次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多