1. 进程描述-PCB
我的理解:进程PCB是放进程属性的一个结构体,也就是说在计算机中任何一个事情,都是先描述,在组织,那么先用结构体**(PCB)**把所描述进程的属性先放到结构体描述出来,再组织起来。Linux操作系统PCB叫:task struct
2.了解基本操作

上面写代码,生成myproc,./myproc运行起来,操作系统创建PCB,并且CPU调用指令,就跑起来了一个进程。我们用ps axj|head -1 && ps axj | grep myproc | grep - v grep我们可以查看进程信息。


上面有个PID:进程ID,PPID:父进程ID,gepid,getppid分别获取这两个。

在/proc这个目录下,每次启动1个进程就会创建一个进程所对应的目录,来管理这个进程。



理解两个属性:exe:是可执行文件所在的目录。cwd:current work direction,当前的工作目录,也就是说我们用程序生成文件等时,会默认在这个目录下,可用chdir这个函数来设置。




我们生成一个可执行程序,运行,创建子进程,在linux中,本质是由bash的进程来创建的。
3.创建进程


pid_t fork(void)函数创建一个进程,也就是说向操作系统申请,那么会创建进程PCB,然后fork后面的代码会共享,然后把两个进程的数据会各自存储。给父进程返回子进程的PID,给子进程返回0.


我们生成了一个可执行proc,fork之后,fork后面的代码父子进程代码会共享,但是数据不会共享,我们要理解,执行./proc之后,bash进程就会创建proc进程,这个proc进程运行起来之后,运行到fork代码,就会向操作系统申请在创建一个进程,fork之后的代码就会共享,由于父子进程都有返回值,因此id>0,父进程执行代码,id==0,子进程执行代码。



上面代码创建10个进程,2369为可执行程序进程,其它都是2369的子进程。