• 【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类型

  • 相关阅读:
    arm代码
    PHP 简介
    Java-基础语法
    Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
    2021年6月大学英语六级作文
    蓝/绿部署 VS 金丝雀部署
    python字典按照 值进行排序 sorted
    SpringBoot 接口整理
    结构体学习
    【Vue】开发实现 Vue 中的自定义指令(2)
  • 原文地址:https://blog.csdn.net/Hello_World_213/article/details/126156451