【JavaEE初阶】进程调度的基本过程

进程调度的基本过程:

一句话总结——进程调度的基本过程就是规划时间表的过程

我们假设我们的计算机是单CPU核的计算机

操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。

同一时刻只有一个进程可以拥有处理器资源,那么其他的进程只能在就绪队列中等待,等到处理器空闲之后才有计划获得处理器资源来运行。在这种场景下,操作系统就需要从众多的就绪进程中选择一个最合适的进程来运行,这个就是调度器需要做的事情。

进程调度涉及到几个属性:

  1. 状态:描述当前这个进程接下应该怎样调度,其中有两个常见状态
    就绪状态:随时可以去CPU上执行
    阻塞状态/睡眠状态:暂时不可以去CPU上执行
  2. 优先级:决定谁先谁后的问题
  3. 记账信息:统计每个进程都分别被执行了多久,分别都执行了哪些指令,分别都排队等了多久,以便为进程调度提供指导依据
  4. 上下文:表示上次进程被调度处CPU的时候,当时程序的执行状态,下次进程上CPU的时候,就可以回复之前的状态,然后继续往下执行

进程被调度处CPU之前,要先把CPU中的所有寄存器中的数据都给保存到内存中(PCB的上下文字段中),这个操作相当于存档。

下次进程再被调度上CPU的时候,就可以从刚才的内存中恢复这些数据到寄存器中,这个操作相当于读档。

进程调度的核心就是操作系统如何考虑CPU资源给各个进程分配的问题。

这里就引出了一个概念:虚拟地址空间。

在我们的操作系统上,会有很多个进程运行着,那么如果某个进程发生奔溃了,它会不会影响其它进程?

答案是不会的,因为存在一个“进程独立性”的东西,而这个东西,依仗的就是虚拟地址空间。

虚拟地址空间隔开了每个进程,但是不影响进程之间的相互交互。

它类似于我们的共同空间。打个比方,在疫情的时候有一个小区有人在隔离了,每一个人我们把他比作一个进程,那么如何保证志愿者给他送菜的时候不接触到别人。

很简单,我们在小区里开辟一个共同空间,先把菜放到哪里,然后让他自己来取,这样就避免了可能传染的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十叶知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值