进程fork创建PID获取

Posted 阿龙亡命天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程fork创建PID获取相关的知识,希望对你有一定的参考价值。

PCB(进程控制块)进程标识符PID,
从cpu获得时间片,就会从就绪状态R转换成运行状态R


包含的信息比上述包含的多得多…
一个内存页4096字节
虚拟内存实际映射到物理内存时只有一点点的内存,需要时会申请内存

进程和程序:

并行和并发的区别:

多个处理器才叫并行,单个处理器在短时间内轮换执行叫并发!

内存管理单元:

进程控制块:

Linux内核源文件:(很长 只截取一部分)

这个结构体中有很多的变量:

进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。
在三态模型中,进程状态分为三个基本状态,即运行态,就绪态,阻塞态。
在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。

  1. fork()之后处于就绪态(所有都储备好了,就差CPU调度),cpu调度后就变为运行态。优先级高的越先被调度。
  2. 子进程挂了,父进程没有替他收尸,就成了僵尸进程。
  3. 运行态接收到信号(内核发送的)就到了停止态,被唤醒后就到就绪态,再到运行态
  4. 运行后未申请到资源,就成为了不可中断等待态/可中断等待态。

    查看进程状态命令

ps aux

ps:


top命令:

kill:


-9代表强制结束
Linux中可以存在名字相同的进程:(但是PID不一样)

killall:
一次性杀死全部同名的进程

以上是关于进程fork创建PID获取的主要内容,如果未能解决你的问题,请参考以下文章

进程创建函数fork

进程创建fork函数的调试[1]

Linu创建回收进程forkexecwaitwaitpid函数的理解

C - 在后台启动外部程序并获取 pid

进程创建

if((pid1=fork())<0)和if(pid1=fork()<0)有啥区别么?!因为在Linux下这两个条件运行出的结果完全不同