• 【JavaEE】PCB和进程调度的基本过程


    什么是进程

    进程是正在运行的程序的实例(an instance of a computer program that is being executed)

    进程(process)也叫任务(task)。如果想看电脑的进程,可以按 ctrl + alt + delete 调出任务管理器
    在这里插入图片描述
    进程是重要的”软件资源“,由操作系统内核来负责管理,这里的管理就是描述+组织

    • 描述:使用C语言的结构体来描述进程,这里的结构体也叫PCB(进程控制块/进程管理块)
    • 组织:使用一个双向链表来把多个进程串在一起

    创建一个进程就是创建了一个PCB对象,然后把它插入链表中,关闭一个进程就是将管理这个进程的结点给删掉,打开任务管理器查看进程,本质上就是遍历链表。

    PCB的组成

    PCB进程控制块是进程的静态描述,由PCB、有关程序段和该程序段对其进行操作的数据结构集三部分组成。

    • PCB一般包括:
      1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID
      2.特征信息:一般分系统进程、用户进程、或者内核进程等
      3.进程状态:运行、就绪、阻塞,表示进程现的运行情况
      4.优先级:表示获得CPU控制权的优先级大小
      5.通信信息:进程之间的通信关系的反映,由于操作系统会提供通信信道
      6.现场保护区:保护阻塞的进程用
      7.资源需求、分配控制信息
      8.进程实体信息,指明程序路径和名称,进程数据在物理内存还是在交换分区(分页)中
      9.其他信息:工作单位,工作区,文件信息等

    PCB里面的的东西很多,下面给大家介绍一下关于进程的一些核心知识

    PID

    • PID是进程的标识符了,是唯一的,一个进程都必须对应一个PID。PID一般是整形数字
      在任务管理器中查看进程的pid

    内存指针

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

    内存指针是描述当前进程占用的内存是哪些

    文件描述符表

    内核为每个进程维护一个文件描述符表,该表记录了文件描述符的相关信息,包括文件描述符、指向打开文件表中记录的指针。

    文件描述符表描述了进程的硬盘文件等其它资源。

    并行和并发

    硬盘、内存等这些资源都好分给进程,但有的资源不好分 就比如:CPU
    虽然现在的CPU是多核的,但架不住进程有几百个,所以CPU的资源就很难分给这些进程。我们希望这些进程可以“同时进行”,这里的同时并不是真正的同时,而是分时复用 这里就有两个重要的概念—并行和并发

    • 并行在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
    • 并发是指:在同一个时间段内,两个或多个程序执行,但一个核心只能运行一个进程,但它可以对进程进行快速的切换(宏观上是同时,微观上仍是顺序执行)。

    并发可以理解为CPU一次只能执行一个进程,虽然有多个进程,但它对进程之间的切换比较快,一秒内可以执行多次进程,虽然是顺序执行的,我们是感受不到的。

    对于并行和并发,往往也统称为并发,除非显示声明,否则并发就是指并行+并发

    进程调度相关属性

    进程的状态

    进程有三个状态:

    • 就绪状态:进程具备运行条件,等待系统分配处理器以便运行的状态
    • 运行状态:进程占有处理器正在运行的状态
    • 阻塞状态: 正在执行的进程由于发生某事件而暂时无法继续执行时(如:请求I/O、申请缓冲空间等)。有时也称“等待”状态或“睡眠”状态。

    优先级

    优先级表示获得CPU控制权的优先级大小

    进程是有优先级的,操作系统来管理进程的时候并不是“一视同仁”的

    上下文

    进程上下文,意思是可执行程序代码,是进程的重要组成部分。这些代码从可执行文件载入到进程的地址空间执行。一般程序在用户空间执行当一个程序调用了系统调用或者触发了某个异常,它就陷入了内核空间。此时,我们称内核“代表进程执行”并处于进程上下文。在此上下文中current宏是有效的。除非在此间隙有更高优先级的进程需要执行并由调度器做出了相应调整,否则在内核退出的时候,程序恢复在用户空间继续执行。

    举个例子:进程的上下文本质上就是游戏的存档和读档。
    进程的上下文就是CPU中各个寄存器中的值。

    寄存器是CPU内置的存储数据的模块

    • 保存上下文就是将CPU寄存器中的值保存到内存中
    • 恢复上下文就是将CPU中的值恢复回去

    进程的记账信息

    操作系统统计每个进程在CPU上执行的时间和执行指令的数目,来决定下一阶段如何调度

    以上就是是一些关于PCB和进程调度的一些核心内容了
    在这里插入图片描述

  • 相关阅读:
    Docker 使用
    【干货】【全网最全】【全网最详细】 javaWeb关于Thymeleaf+SpringBoot 的学习教程,看这一篇就够了。
    创建线程池的方法
    【华为OD机试真题 python】矩阵扩散 【2022 Q4 | 200分】
    ArcGIS属性域和子类型
    (LdAiChat、Ai Loading、不墨AI助手、360AI搜索、TIG AI)分析好用的ChatGPT
    想要精通算法和SQL的成长之路 - 二叉树的序列化和反序列化问题
    被315点名的流氓下载器,又回来了…
    代码随想录算法训练营day53 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和
    产品生命周期(PLM)发展历程及技术核心分析指导
  • 原文地址:https://blog.csdn.net/m0_63463510/article/details/127946906