• 【Linux】进程 && 进程控制块PCB && 查看进程


    基本概念

    书本上:加载到内存的程序,被叫做进程。

    -这里引出一个问题 -> 进程和程序有什么区别?

    程序就是文件。
    进程 = 程序 + OS维护进程的相关数据结构

    进程包括程序文件内容,以及与进程相关的数据结构(如:struct task_struct),这是由OS帮我们自动创建的。

    在这里插入图片描述

    进程控制块PCB

    process control block,Linux操作系统下的PCB是:task_struct,task_struct包含了进程中的所有属性信息。PCB->task_struct的关系类似shell->bash的关系。task_struct是Linux内核的一种数据结构,会被装载到内存里。

    磁盘中的文件或者exe,加载到内存中,操作系统还要创建PCB(进程控制块)。

    在这里插入图片描述

    在这里插入图片描述
    有了PCB,所有的进程管理任务和进程对应的程序毫无关系,和进程相关的内核创建的该进程的PCB强相关!

    PCB内部构成

    1、标识符:描述本进程的唯一标示符,用来区别其他进程。
    pid、ppid

    2、状态:任务状态,退出代码、退出信号等。
    echo $?输出最近执行命令的退出码。

    3、优先级:相对于其他进程的优先级。

    -这里需要区分优先级和权限?
    权限围绕能不能的问题,而优先级是在能的前提下,先后的问题。

    4、程序计数器:程序中即将被执行的下一条指令的地址、

    5、内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。

    6、上下文数据:进程执行时处理器寄存器中的数据

    理解上下文数据:进程的代码可能不是很短的时间就能完成的,可能要被调度成千上百次,规定每个进程单次运行的时间片(比如10ms,超时就放在队列末端)。在一个CPU情况下,用户感受到的多个进程同时在进行,本质是通过 CPU的快速切换完成的。所以进程在运行时,是会切换的,进程可能存在大量临时数据~这些数据暂时保存在CPU的寄存器中,可是CPU只有一套寄存器。所以为了 保护上下文,恢复上下文,寄存器中的数据需要保存到自己结构体里。

    由此,可以感受到,进程是被切换的

    7、I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

    8、记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制等

    9、其他信息

    查看进程

    方法一:
    ps axj | head -1 && ps axj | grep "test"

    在这里插入图片描述

    方法二:
    ls /proc
    ls /proc/pid

    在这里插入图片描述

    方法三:
    getpid() 进程id — PID
    getppid()父进程id — PPID

    在这里插入图片描述

  • 相关阅读:
    第一本Docker书,带你走进微服务架构的奇妙世界!手撕面试官
    如何使用ai去水印?用这款就够了
    LQ0041 特别数的和【进制】
    openlayers 绘图功能,编辑多边形,长度面积测量,tip提示(八)
    一种子模块化的基于Hash刷新机制的iOS端数据驱动的MVVM架构思考
    【JAVA】MyBatis-Plus插入/更新数据时如何自动更新字段时间
    java:操作session
    JAVA实操代码练习1
    剑指offer专项突击版第39天
    BOM- 操作浏览器
  • 原文地址:https://blog.csdn.net/Joy_Cheung666/article/details/126062316