Java EE:进程调度的基本过程与进程控制块(PCB)画图详解

一、什么是进程

        进程是操作系统对一个正在运行的程序的一种抽象,换而言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配基本单位

        一个程序运行起来,在操作系统中,就会出现一个对应的进程。进程,就是一个跑起来的应用程序。

        要想让一个程序运行,就必须得给这个进程分配资源。包括但不限于:CPU、内存、硬盘、网络带宽、显卡……  进程是操作系统进行这些资源分配的基本单位。

        操作系统上包含了很多进程,一旦东西多了,我们就需要考虑 “管理” 。对于 管理 这个事情,通用的做法,先描述,再组织

描述:通过一些 结构体/类,把一个进程的核心信息抽象提取出来,并进行表示。

           通过PCB结构体,来吧进程的各种属性都表示出来

组织:通过一定的数据结构,把多个这样的 结构体/类 的对象串起来,方便进一步的各种增             删改查。

           通过链表数据结构把多个 PCB 串起来

二、进程控制块(PCB  Process Control Block)

        在操作系统中,通常使用 PCB 这样的结构体来描述进程。PCB 结构体中包含一些进程的核心信息。操作系统中通常会使用链表这样的结构,来把多个PCB 串起来。

·在任务管理器中查看进程列表,就是在遍历链表的每一个节点,来把多个 PCB 串起来

·创建一个新的进程,就会创建出一个新的 PCB,并添加到上述链表中

·销毁某个进程,要把链表上对应的 PCB 节点删除

PCB 中重要的属性:        

1、pid  进程的id / 标识符

        我们点击任务管理器查看,同一个机器,同一时刻,进程 id 一定是不同的。PID 相当于进程的身份证一样,它的主属性值是唯一的,可以起到区分进程的作用。就算是同一个软件下的不同进程,他们的 PID 也是不同的。

2、内存指针

        在进程运行时,需要消耗一定的硬件资源,内存就是其中一个关键的资源。一个程序在运行的时候,就会被从 硬盘 中加载到 内存 中,在这个时候就会加载这个程序的 指令和依赖的数据内存指针 就告诉操作系统,该进程需要运行的指令都在内存的哪些位置,也告诉操作系统该进程运行时依赖的数据在内存中的哪个位置……

3、文件描述表

        一个进程在运行的时候,会操作一些文件。通过一个 “顺序表” 这样的数据结构,记录下当前这个进程都打开了哪些文件。这样的一个 “顺序表” 就被叫做文件描述表。

PCB 中支持进程调度的属性:   

1、状态

        PCB 状态分为 “就绪状态” 和 “阻塞状态”。处于 “阻塞状态” 的进程,无法在 CPU 上执行,处于 “就绪状态” 的进程,可以在 CPU 上执行。

2、优先级

        进程优先级是用来确定在多个进程同时运行时,哪个进程会获取更多的CPU时间片。进程优先级越高,越先处理该进程。

3、上下文

        当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。 也可以说: 所谓的“进程上下文”,可以看作是用户进程传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。

4、记账信息

        记录一个进程占用处理器资源的时间长短。

三、进程调度的两种类型(并行、并发)

        在任务管理器中我们可以看到,系统中包含了很多进程,每个进程都需要执行。执行进程就需要占用 CPU 资源,在 CPU 上执行

        而进程的数量是远远多于 CPU 的数量的,虽然现在的 CPU 都是多核心的,但我们的电脑上需要执行的进程数量还是远远多于 CPU 的数量。所以,此时就需要进程调度来解决问题了!

1、并行执行

        一个核心,同一个时刻只能运行一个进程,有 16 个核心就同时运行 16 个进程。这些进程完全是同时执行的。此时就称这种执行方式为 并行执行

2、并发执行

        CPU 把总的执行时间,切换成若干个小的片段,每一个片段执行一个进程,每个片段就被称为一个 “时间片” ,由于 “时间片” 很短,切换的速度很快,人是无法感知到的。站在人的角度来看,这就是若干个进程在 “同时” 执行,但本质上他们并不是同时执行。此时就称这种执行方式为 并发执行

区别:

并行在微观时间上是同时执行,在宏观时间上也是同时执行

并发在微观时间上不是同时执行,在宏观时间上是同时执行

        在操作系统中,会按照 并行+并发 互相搭配,来运行所有的进程。因此,往往把并行和并发 统称为 “并发”。


        以上就是 Java EE:进程调度的基本过程与进程控制块(PCB)画图详解 的全部内容了,希望能对您有所帮助!

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值