“神秘”的PCB

“神秘”的PCB

PCB是什么?

PCB是一个进程控制块。他是一个结构体,里面包含了各种描述进程的信息。当然它也有很多名字,在windows系统下它叫PCB,但是在Linux系统下它又叫做task_struct,在μC实时操作系统下它又叫OS_TCB。但是不管它叫什么,他都是一个用来描述进程的结构体。通常,我们把这种结构体统称为PCB。

PCB里面都有什么?(这里用Linux系统下的task_struct举例)

下面只列出常用的内容。

  • 标识符(PID):这是描述进程的唯一标识符。这个标识符在所有进程中是独一无二的,这也就是区别进程的方法。每个进程都有一个不一样的PID
  • 状态:任务状态,退出代码,退出信号等。
    • 就绪状态(R):当进程进入就绪状态,他就会被调度器调度。但是,进入就绪状态的进程可能正在运行,也可能正在等待被调度。所以不能说进入就绪状态的进程都在运行。
    • 睡眠状态(S):一般就是等待一个事件的执行结束,如果之间写过的代码里面有sleep(1)就表示让进程进入睡眠状态1秒。
    • 磁盘休眠状态(D):这个状态下的进程不可以被唤醒。一般进入这个状态的时候,进程都是在密集的进程IO操作的时候。比如说Linux下程序执行完(发生错误),这时候进程就会吐core dump文件,这个时候就不可以打断它,所以处于深度睡眠状态的进程不可以被唤醒。
    • 停止状态(T):可以用过发送SIGSTOP信号给进程来停止进程。这个被暂停的进程可以通过发送SIGCONT信号让进程继续运行。
    • 跟踪状态(t):这个状态一般就是在调试的时候会出现。比如用gdb调试一个程序的时候,这个时候进程会处于跟踪状态。
    • 死亡状态(X):表示进程已经结束。这个状态没办法看到,只在Linux源码上存在。
    • 僵尸状态(Z):僵尸进程,就是子进程结束之后,等待父进程回收信息时的状态。(上一篇博客有细说什么是僵尸进程,不懂的童鞋可以去看看)
  • 优先级:相对于其他进程的优先级。
    • CPU资源分配的先后顺序,就是进程的优先级。
    • 优先级高的进程有优先执行的权利。配置进程的优先级对改善系统性能很有用。
    • 还可以把进程运行到指定CPU上,把不重要的进程安排到某个CPU上,可以改善系统整体性能。
    • Linux资源管理系中用PRI表示。
    • NI表示进程的nice值,是优先级的修正数值。共有从-20 ~ 19 的 40个级别。
    • 优先级 = PRI + NI
    • Linux系统下调整进程的优先级,就是调整nice值。
  • 程序计数器:程序中即将被执行的下一条指令的地址。
  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
  • 上下文数据:进程执行时处理器的寄存器中的数据。
    • 上下文数据有什么作用?
    • 首先Linux系统下不是一个进程从头到尾一直执行的,它会产生进程间切换。但是如果你直接切换,没有保存数据的话,下次再给原进程切换回来的时候,系统怎么知道这个原进程原来执行到哪里了。总不能从头开始吧。所以,每当进程间切换的时候,操作系统就会把当前CPU内的数据(寄存器和PC指针)放到内存中,当进程被切换回来的时候,会恢复上下文内容,继续刚才的行为。
  • I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和进程使用的文件列表。
  • 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
    • 比如每个进程在CPU上执行了多长时间。
  • 其他…

进程间状态转换

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值