我是靠谱客的博主 清新便当,最近开发中收集的这篇文章主要介绍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)。

最后

以上就是清新便当为你收集整理的PCB进程控制块的全部内容,希望文章能够帮你解决PCB进程控制块所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部