进程调度--并发编程必修课

目录

进程

进程是什么?

进程是如何产生的?

系统眼中的进程是什么样的?

进程调度

进程调度的原因

进程调度的模式

支持进程调度的属性

状态

优先级

上下文

记账信息


进程

进程是什么?

在操作系统内部,进程是系统资源分配和调度的基本单位,是程序运行的过程,进程间相互独立。我们也可以认为进程是一个运行中的应用程序,这点我们可以打开任务管理器来观察。

可以看到,每一个进程都对应了一个应用程序,并占据了一定的系统资源,当我们点开带有箭头的线程还能看到进程下有许多线程存在。

进程是如何产生的?

当应用程序(.exe文件)运行后,系统就会生成一个进程,并为它分配所需的系统资源。如内存资源,其内部加载了exe文件中的指令和数据等(程序运行起来就是在执行指令)。

产生的进程会被系统描述并以数据结构进行管理,上面我们在任务管理器中看到的就是其中一部分信息。

系统眼中的进程是什么样的?

计算机想要管理任何事物,都需要将其抽象成一组有关联、互为一体的数据。所以系统对进程的采取的措施是“先描述,再管理”的策略。

其中描述线程的是PCB(进程控制块抽象),PCB囊括了进程的相关信息,是一种结构体。

而后PCB被以数据结构的形式组织起来,从而达到管理的目的,可以认为这种数据结构是一种链表。

进程所分配到的内存资源(其内存储指令、数据等)信息仅仅是PCB的一部分,PCB包含如下几个属性:

1.pid进程标识符
2.内存指针进程持有的内存资源
3.文件描述符表进程持有的硬盘资源
4.状态

这些用来完成’‘进程调度”,

和进程持有的CPU资源密切相关

5.优先级

6.上下文
7.记账信息

好了,了解完进程的概念,我们再来回归主题,聊聊进程调度到底是怎么个事吧ヾ(≧▽≦*)o

进程调度

进程调度的原因

从任务管理器界面我们可以看到相当多的进程,而进程的执行是需要消耗CPU资源的。我们常见的CPU很多是8核16线程,通常情况下其数量是无法支撑这么多进程同时执行的,这就需要进程们在CPU上轮流执行(分时复用)。

当然,只要轮流速度够快,进程们在直观上也和同时运行差不多了。

所以进行进程调度的根本原因在于:CPU核心数量太少,进程数量太多

进程调度的模式

进程调度有两种模式,“并发”和“并行”,系统会将两种模式搭配使用,来执行所有进程。

并发指,进程在CPU上分时复用(时间片),轮番执行,由于执行速度够快,所以看起来和进程同时执行一样。当然,这只是一种直观上的感觉。

并行指,进程并非轮番上阵,一个CPU核心执行,同时只运行一个进程。这种情况下,无论是微观还是宏观上进程都是同时执行的。

无论是并发还是并行,我们肉眼都是无法直接观测出来的,因此,并发和并行往往统称为“并发”,并把编写解决并发问题的程序,称为“并发编程”。

支持进程调度的属性

在并发情况下,我们知道进程是轮番执行的,但每个进程执行多长时间,进程轮流执行的顺序该如何确定又是一个问题。为了解决这点,就有了以下几个支持进程调度的属性来作为进程调度的依据。

状态

线程根据能不能到CPU上去执行可以划分出两种状态,即“就绪状态”和“阻塞状态”。例如偶尔程序会出现等待IO(读写)的时候,这时候IO未完成程序是不会向下执行的,陷入阻塞,这时候让他占用CPU资源是很不合理的。因此,判断进程是否是就绪状态是相当重要的。

就绪状态:进程随时能上CPU上执行,或是已经在CPU上执行。

阻塞状态:进程缺少一定条件,无法上继续执行。

详细线程状态文章链接

优先级

根据不同需要,决定对那些线程优先进行资源分配。

如我们在玩游戏是,希望对游戏分配更多的系统资源,以获得更好的游戏体验。

上下文

类似于存档。并发执行下,进程在CPU上执行过程中会产生很多“中间结果”,在切换出CPU之前,就需要把这些中间结果(CPU中各种寄存器中的值)保存到PCB的上下文之中(寄存器->内存),方便下次进程回到CPU继续执行(方便恢复)。

(其中有个pc程序计数器就记录了上次执行到了那一条指令)

上下文:用于保存进程执行状态。

记账信息

进程优先级决定了资源的倾斜程度,为避免有些进程一直得不到CPU资源,对记账信息中资源分配少的进程适当的多分配一些

完……

博主是Java新人,每位同志的支持都会给博主莫大的动力,欢迎留言讨论,如果有任何疑问,或者发现了任何错误,都欢迎大家在评论区交流“ψ(`∇´)ψ

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值