linux下的进程
Posted 大飞歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下的进程相关的知识,希望对你有一定的参考价值。
一、进程的基础:
1、程序:程序是一些保存在磁盘上的指令的有序集合;
2、进程:进程是程序的一次执行过程;
3、进程与程序的关系:①、程序是静态的,进程是动态的;
②、一个程序可以对应多个进程;
③、程序只有数据段和代码段,进程除了有数据段和代码段之外,还有堆和栈;
关于进程:
堆栈区:存放的是函数的返回地址,函数的参数以及程序中的局部变量;
代码段:存放程序代码;
bss段:存放未初始化的全部变量和静态变量;
数据段:存放初始化全局和静态变量;
4、进程的特征:
①、动态的:程序的一次执行过程,在虚拟内存中运行,每时每刻都在变化;
②、并发的:“同时”运行;
③、独立的:每一个运行的进程都有独立的4GB大小的虚拟内存空间,每个进程都独占系统资源;
进程是系统资源分配的最小单位;
线程是CPU调度的最小单位;
④、异步的:多个线程运行时他们是相关无关的;
5、进程的生命周期(状态)
6、进程的分类
①、交互进程
②、批处理进程
③、守护进程
7、进程的系统调用(API)
①、创建进程:
#include <unistd.h>
pid_t fork(void);
功能:创建进程;
特点:调用一次,返回两次;
返回值:调用失败:返回-1给调用的进程;调用成功:给父进程返回子进程的ID,给子进程返回:0;
当调用fork后:
1)系统会映射虚拟内存空间给子进程;
2)拷贝父进程的堆、栈,数据段给子进程;
3)给父进程返回子进程ID,给子进程返回0;
4)子进程共享父进程的代码段;
5)fork返回后,父、子进程从fork函数调用的下一条语句同时往下执行;
②、 exec函数族
③、结束进程:exit和_exit
④、使当前进程阻塞,给子进程收尸:wait、waitpid。
以上是关于linux下的进程的主要内容,如果未能解决你的问题,请参考以下文章