PCB进程控制块

(3) 2024-04-17 18:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说PCB进程控制块,希望能够帮助你!!!。

PCB 重要成员

每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体,定义在 /usr/src/linux-headers-4.15.0-142-generic/include/linux/sched.h 内核头文件中(使用 uname -r指令查询 linux 版本),其内部有很多成员,我们重点掌握以下几部分即可。

  • pid:进程id,系统中每个进程有唯一的id,使用 pid_t 类型表示。注意每个线程的pid都不相同。
  • tgid:thread group id,linux引入线程组的概念。一个线程组所有线程与领头线程具有相同的pid,存入tgid字段,getpid()返回当前进程的 tgid 值而不是 pid 的值。
  • 进程的状态:
    • 就绪(初始+就绪):等CPU分配时间片
    • 运行:占用CPU
    • 挂起:等待除CPU以外的其它资源,主支放弃CPU
    • 停止:程序运行停止
  • 进程切换时需要保存和恢复的一些CPU寄存器。
  • 描述虚拟地址空间的信息。
  • 描述控制终端的信息。
  • 当前工作目录。
  • umask掩码。
  • 文件描述符表,包含很多指向file结构体的指针。
  • 和信号相关的信息。
  • 用户id和组id。
  • 会话(Session)和进程组:
    • 进程组:一组相关进程的集合;
    • 会话:一组相关进程组的集合;
  • 进程可以使用的资源上限(Resource Limit)。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复