linux之进程相关知识

进程

程序的一次动态执行过程

 

创建:创建一段虚拟地址空间,还有task_struct结构(PCB进程控制块),存放pid(进程ID)、ppid(父进程ID)、nice(优先级-20 - 19),虚拟内存地址映射表,占用的资源(cpu、内存)等。

         地址空间分段:stack栈区:局部变量,传参,返回地址,递归函数可能会出现栈溢出

                                     Heap堆区:malloc从这里分配,用完记得free,否则可能出现内存泄漏

                                       .bss段:未初始化的全局变量区(静态)

                                       .data段:已初始化的全局变量(静态)

                                       .text段:正文段,存放代码和常量

调度:把task_struct加入内核进程调度列表,达到宏观意义上的多任务状态

执行:分配到时间片,把进程指令载入到cpu里运行。

消亡:清理虚拟内存空间,由父进程回收task_struct结构。

 

R:运行态,分为就绪态和获得时间片两种状态

S:睡眠态,等待态,阻塞等待某种条件到来

Z:僵尸态,task_struct结构没有被回收?

T:停止态,程序暂时停止。

 

  孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

  僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用waitwaitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

 

<:表示高优先级

N :表示低优先级

s :表示会话组长进程组会话组可能包含多个进程组

+ :表示前台进程

l :表示多进程

 

init作为所有进程的祖宗

ps查看进程信息–aux   -ef  -axj

pstree查看进程树形状态

top  动态查看进程空格

刷新  q退出

kill 发送信号格式:kill  -某个信号pid

信号列表kill –l

1.SIGHUP 终端结束发出信号   2.SIGINT ctrl+c发出结束进程   3.SIGQUIT ctrl+\发出的结束进程

9.SIGKILL 结束进程,不能被终止忽略或者处理    10.SIGUSR1 12SIGUSR2给用户的信号,终止进程

19.SIGSTOP 停止进程,不能被停止忽略或者处理  20.SIGTSTP ctrl+z产生,停止进程

 

Kill all–信号程序给进程发信号pkill

Ctrl+z让进程停止再次唤醒fg唤到前台bg将程序置为后台,变成后台进程

 

改变进程优先级 nice开始运行时指定优先级renice运行时改变优先级

 

交互进程:前台(既可以输入又可以输出)、后台进程(只能输出),通过终端进行交互

守护进程:与终端无关,一直运行到系统关闭

批处理进程:依次运行的进程

 

Fork():创建一个子进程,在父子进程中fork返回值不同,父进程里返回子进程ID,子进程里返回0。

孤儿进程的产生:父进程先于子进程退出,子进程由init接管。

_exit(status):退出当前进程,给父进程发送SIGCHLD信号。不清理缓冲区。

exit(status);退出状态宏:EXIT_SUCCESSEXIT_FAILURE。同上但是清理缓冲区。

 

Pid_t wait(*status);阻塞等待某个子进程退出,获得子进程退出状态和ID。错误返回-1.

pid_t waitpid(pid,*status,选项); 选项为0,阻塞等待某个子进程退出;WNOHANG不阻塞,没有子进程退出直接返回,返回0.

<-1 等待组ID等于这个参数绝对值的进程退出

-1  等待任何一个子进程退出常用!

0        等待当前组的某个进程退出

>0  等待指定的进程退出常用!(退出时返回指定退出进程的pid)

 

Execl(可执行文件,执行,传参,NULL); 将当前进程空间替换成新的内容

 

守护进程的创建:

1.      创建子进程,父进程退出,孤儿进程由init接管。Fork  (创建孤儿进程)

2.      设置成为会话组长。Setsid();  

3.      改变工作路径。Chdir(“路径”);

4.      改变文件权限掩码。Umask(0);

关闭所有的文件描述符。获得最大文件描述符getdtablesize()。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值