Linux--进程的基本概念(PCB,查看进程,获得进程的标识符)

2019-07-14 06:20发布

一.PCB的引入
1.当我们遇到一个结构时,我们要先描述它(描述它的基本信息),然后在组织它,对于进程我们也要这样做。
2.描述进程:PCB(将进程的信息用一个结构体存储起来,这个结构体相当于一个结点)组织进程:用双向链表将PCB连接起来。(用双向链表将这些结点连接起来)
二.描述进程--PCB1.PCB是一个struct。      为什么要用struct?
  • 因为在数据结构里面,一般的数据结构都会用到结构体,而PCB也是一个数据结构,所以这里用到struct。
2.在Linux下PCB是task_struct的结构体。(在别的平台下,存放PCB信息的可能是别的struct)
三.task_struct结构体里面的内容(重要的信息如下,因为在Linux内里task_struct里面含有很多的东西)1.由于可能会有多个进程,这些进程必须要有唯一标识符,所以里面含有pid2.操作系统会调度进程执行相关操作,如何调度这些进程,所以里面应该含有表示进程优先级的变量。3.多个进程之间可能会相互进行切换,但是又必须记住该进程切换之前的相关信息,所以需要有上下文记录它。4.进程执行时需要知道它接下来应该执行什么命令,所以需要有程序计数器存放程序执行的下一条指令的地址5.还需要存放进程的状态信息6.内存指针7.I/O状态信息8.一些记账信息(例如可以存放当前进程已经执行了多长时间,如果当前进程执行了很长信息,而别的进程还没有执行过,为了让那些进程执行,可以将当前进程切换出去)。
四.组织进程--链表
五.查看进程(查看进程有两种方式)1.在proc目录下查看①首先可以进入proc目录;②然后可以通过进程的pid查看;也可以通过一条命令来查看:
2.通过ps命令查看进程;
①ps aux查看操作操作系统里面所有的进程信息:②ps aux | grep   test4(在所有进程中筛选出进程名为test4的进程信息)
  • 例如先创建一个进程test4:
  • 查看该进程(下面时通过进程名来查看进程信息):(可以通过进程名来查看进程,也可以通过进程的pid来查看进程信息)。
六.获得进程标识符
  • 获得当前进程的pid(通过getpid()函数);
  • 获得当前进程父进程的pid(getppid()函数)。
  • 代码如下