https://www.cnblogs.com/roucheng/p/linuxc.html

进程

进程分类
系统进程:用于完成操作系统的各种功能的进程就是系统进程
用户进程: 由用户启动的进程就是用户进程

常见的系统进程

使用ps命令可以查看,使用[]包裹的就是系统进程
ps

  • kthreadd 父内核线程
  • ksoftirqd [ksoftirqd/0]: 内核调度/管理第0个CPU软中断的守护进程。硬件中断处理往往需要关中断,而这个时间不能太长,否则会丢失新的中断。所以中断处理的很大一部分工作移出,转给任劳任怨的ksoftirqd在中断之外进行处理。比如一个网络包,从网卡里面取出这个过程可能需要关中断,但是TCP/IP协议处理就不必关中断了。
  • migration [migration/0]: 管理多核心(包括HypterThreading衍生的那个不大管用的、大家都不愿迁过去的核心)系统之中,线程在各核心的迁移)
  • kworker [kworker/0:0H] : 内核工作进程

    u:是unbound的缩写,代表没有绑定特定的CPU,kworker /u2:0中的 2 是 work_pool 的ID。
    不带u的就是绑定特定cpu的workerq,它在init_workqueues中初始化,给每个cpu分配worker,如果该worker的nice小于0,说明它的优先级很高,所以就加了H属性。
    具有负面价值的勤劳工人的名字后缀为’H’。

进程数据结构

进程是操作系统对一个正在运行的程序的一种抽象,将二进制可执行文件加载到内存里。 可以理解成:指令+数据+PCB

PCB是进程存在的唯一标志,在linux系统中使用task_struct 结构表示。

进程状态图

  • 创建状态:首先由内核申请一个空的PCB,并向PCB填入用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入就绪队列。如果进程所需的资源尚不能满足,则此时进程所处的状态称为创建状态。

  • 就绪[Ready]状态:当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态, 在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列

  • 执行[Running]状态:进程已经获得CPU,其程序正在执行的状态。在同一时刻而言,单处理机系统,只有一个进程处于执行状态,多处理机系统,则多个进程处于执行状态。

  • 阻塞[Block]状态:指正在执行的进程因发生某个事件(如IO请求、申请缓冲区失败等)暂时无法继续执行时, 便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态封锁状态的状态。

  • 终止状态:首先等待OS进行善后处理,然后将其PCB清零,并将PCB返还给系统

状态转换图

常见到的状态标记有:
R 运行
D 不可中断的阻塞状态(通常为IO), 可处理signal 有延迟
S 可中断的阻塞状态(等待事件完成), 可处理signal
Z 僵尸状态, 不可被kill,即不响应任务信号,无法用SIGKILL杀死
T 暂停状态/跟踪状态, 不可处理signal,根本没有时间片运行
X 终止状态

文档更新时间: 2021-03-08 11:49   作者:周国强