• 【Linux】进程概念 —— PCB


    目录

    一.基本概念

    二.系统如何管理进程

    三.PCB

    1.PCB的概念

    2.task_struct概念

    3.task_struct内容分类

    四.查看进程

    五.系统调用获取进程标识符


    一.基本概念

    启动一个软件,本质就是启动了一个进程

    例如,在Linux下运行了一条命令,运行时,其实就是在系统层面创建了一个进程

    平时我们都在说,把代码编译好,然后把程序运行一下,其实这种说法是错的!当程序需要运行时,系统会将程序加载到内存,而程序加载到内存准备运行的那一时刻,它就是一个进程了!所以不是把程序运行起来,而是把进程运行起来。

    只有将程序加载进内存,形成进程之后,才能被操作系统管理,操作系统只能对进程做调度

    二.系统如何管理进程

    Linux是可以同时加载多个程序的,Linux是可能同时存在大量进程在系统中的。

    那Linux系统就一定会将这些进程管理起来,如何管理:先描述,再组织

    这里所谓的先描述,就是由程序的属性,创建出的进程PCB

    再组织,就是将所有的PCB以链表等数据结构组织起来,对进程的管理,就变成了对PCB链表的增删查改

    进程 = 对应的代码和数据 + 进程对应的结构体

    补充几点:

    程序(本身就是文本)是静态的

    进程(本身就是进程加载到内存后,要在内存中被CPU处理)是动态的

    进程与程序并不是一一对应的,因为同一个程序可以同时被执行多次

    进程与作业并不是一一对应的,一个作业至少要包含一个进程,可能由多个进程组成一个作业

    三.PCB

    1.PCB的概念

    PCB(process control block):进程控制块

    PCB的本质是一个结构体

    不同的操作系统中PCB的名字不同

    Linux中,PCB名为 struct task_struct

    2.task_struct概念

    在Linux中描述进程的结构体被叫做task_struct

    task_struct是Linux内核的一种结构体,它会被装载到RAM(内存)里并且包含进程属性信息

    可以在内核源代码里找到,所有运行在系统里的进程都以task_struct双链表的形式在内核里

    3.task_struct内容分类

    四.查看进程

    1.可以通过 /proc系统文件查看

    例如:要获取PID为1的进程信息,需要查看/proc/1这个文件

    指令:ls -l /proc/1

    例如:查看所有进程

    指令 ls /proc

    2.ps

    指令:ps/ps -l,只能查看当前终端下且是我自己的进程

    指令:ps -a/ps -al,查看所有终端下自己的进程

    指令:ps axj,查看所有终端所有进程

    3.top

    相当于windows下的任务管理器,并不常用

    五.系统调用获取进程标识符

    1.getpid() —— 获取进程代号

    2.getppid() —— 获取这个进程的父进程代号

    必须包含两个头文件,其返回值pid_t本质是int类型

  • 相关阅读:
    音视频专题--opengl (3)
    Flink核心API之DataSet
    鉴源实验室 | AUTOSAR SecOC:保障汽车通信的安全
    【go-zero】go-zero 脚手架 simple-admin 第一章:通过goctls生成rpc整个项目 | go-zero整合 ENT数据库orm框架
    【SQL】MySQL批量导入数据
    MyBatisPlue-03
    jvm中的类加载器
    湘乡秸秆综合利用组合拳完善产业链 国稻种芯现代饲料规划
    基本算法-希尔排序
    大流量、业务效率?从一个榜单开始
  • 原文地址:https://blog.csdn.net/Hello_World_213/article/details/126156451