进程调度器是如何实现的

本文是《深入理解操作系统》第四章第六篇,从本章开始将开启第一个重要的主题:进程,彻底理解进程对程序员来说是极为重要的,本章就从程序员的角度来讲解到底什么是进程、操作系统是如何实现进程的。本文承接上篇《进程是如何实现的》,以下为本篇目录:

  • 操作系统如何组织进程:队列

  • 进程的行为特点:CPU密集型与I/O密集型

  • 什么情况下会进行进程调度?

  • 两种进程调度方式

  • 调度算法

  • FIFO

  • 短作业优先

  • 最短作业优先完成

  • 轮询调度Round-Robin

  • 开创性工作:多级反馈队列

  • 总结

在这一节中,我们将从各个角度来理解进程调度是如何实现的。

操作系统如何组织进程:队列

如果你观察过城市中的车流就会发现,虽然车可能会很多,但这些汽车都是走走停停,井然有序。操作系统中的进程也是如此,进程也会走走停停,运行一段时间后或者发起I/O请求被暂停,或者由于硬件产生中断而被操作系统暂停,但是当恢复运行后各个进程都能继续向前就像没有被暂停过一样,和汽车井然有序的在城市中行驶一样,进程在操作系统中不可以杂乱无章,那么操作系统应该怎么组织这些进程呢?

如果你去银行办理过业务的话就很容易理解啦,一般去银行的人都非常多,每个窗口都有一些人在排队等待,如果不巧赶到中午去的话那么通常只有一个窗口可以办理业务(因为其它银行职员要中午休息)。我们假设是在中午,因此只有一个银行职员在工作,那么所有人都排成一队等待。等到你的时候银行职员开始处理你的业务,处理一半发现需要你的身份证复印件,这时你不得不先离开银行去打印店。由于打印店生意火爆,因此你不得不再次在打印店排队等待,排到你拿到身份证复印件后再次返回银行继续排队。这次银行职员认为你的资料齐全,办理完业务后你就可以离开银行啦。

在这里例子中,你就好比进程,银行职员就好比CPU,银行职员处理你的业务就好比进程等到CPU后开始运行,你离开银行去打印店就好比进程的I/O请求,因此这里的关键就是排队等待。和这个例子一样,操作系统中同样维护了各种队列,处于就绪状态的进程就放在就绪队列(Ready Queue)当中排队等待CPU,被分配了CPU的进程就开始运行,其它进程继续在就绪队列中等待。

注意这里的队列就是我们在数据结构课程中学到的队列,那么进程在队列中排队等待该怎么实现呢?还记得进程在操作系统中其实就是用PCB来表示的吗,我们只需要建立一个简单的队列,里面存放处于就绪状态的PCB就可以了。至于如何实现队列,方法有很多种,最常见的方法是使用简单的链表来实现,你没有看错,进程就是用这些你熟悉的数据结构组织起来的,如下图所示:

 本文剩余部分请参见这里《深入理解操作系统》。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值