进程调度(I/O消耗型进程和处理器消耗型进程)

 

多任务操作系统

操作系统提供了虚拟处理器的机制,虚拟处理器给进程一种假象,让进程觉得自己是在独占CPU。操作系统内核必须通过合理的进程调度从而保证这种假象,这样操作系统资源才能得到最大的利用率。

正是这种虚拟处理器的机制,使得操作系统能够同时执行多种任务,所以现在的操作系统都是多任务操作系统。

  多任务操作系统分为非抢占式多任务操作系统和抢占式多任务操作系统,现代的操作系统都是抢占式多任务操作系统。

除了虚拟处理器的机制外,进程控制块(PCB)也是使得操作系统能够并发的关键。因为在进程切换时,进程控制块能够保存当前处理器的上下文,使得该进程下次被调度时,能够从上次停止的地方继续运行。

 

I/O消耗型进程和处理器消耗型进程

I/O消耗型进程:程序运行时的大部分时间都在提交或者等待I/O请求,因此这样的进程要经常处于运行状态,但通常都是短短的一会儿,所以处理器倾向于优先调度I/O消耗型的进程。该类进程优先级高,时间片长。

  可能大家会有疑问,进程在等待I/O时,不是会被阻塞吗,然后在用户完成I/O后会中断CPU唤醒该进程处理I/O吗?那为什么还要优先调度该类进程呢?有这个疑问是因为我们看待问题的角度错了,I/O消耗型进程也是会消耗处理器的,只不过消耗的不是很多罢了,而优先调度该类进程是为了让该类进程是为了尽可能地消耗其所需要的处理器资源,从而让该进程阻塞住,这样只要用户一完成I/O操作,该进程就会被唤醒,从而立刻处理I/O操作,那么在用户看来,该进程响应非常快,体现出了很好的用户友好性。

处理器消耗型进程:该类进程在把时间都发在了执行代码上,即在该进程执行期间,马不停蹄的使用处理器资源。所以除非被抢占,否则它们通常都一直不停地运行,因此从系统响应速度考虑,调度器不应该经常让它们运行。该类进程优先级低,时间边短。

  可能大家又要有疑问了,该类进程消耗的是处理器资源,为什么优先级低,时间片短,为什么不去经常调度它们呢,这样子它们就会被尽快执行完。我们从下面两个角度来分析。

1)如果处理器消耗型进程的优先级高,时间片长,那么它就是实打实地消耗完它的时间片后,系统才会为其他低优先级的进程服务

2)而如果I/O消耗型进程的优先级高,时间片长,则因为频繁的IO操作并等待完成,需要处理器处理的时间其实很少,这样系统会自动将其等待的时间片分配给其他需要服务的进程

显然2更合理,不只让I/O消耗型进程的响应速度更快,而且让其它进程不用等太久就会被再次调度到。

 该文章在我的个人博客的地址:http://www.alphaway.org/post-416.html

参考:

Linux中 I/O 消耗型和处理器消耗型的矛盾问题

处理器更优先于调度I/O消耗型进程?

转载于:https://www.cnblogs.com/beMaster/p/5380037.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值