Linux进程调度

Linux进程调度

1.1在介绍进程调度之前首先要说明进程的两种类型:
1.I/O消耗型:进程的大部分时间用来提交I/O请求或者等待I/O请求,这样的进程经常处于可运行状态。
2.处理器消耗型:大多数时间在执行代码上,除非抢占,否则它可以一直运行。

1.2有两种类型的多任务操作系统:协同多任务处理和抢占式多任务处理。
1、协同多任务处理
当进程因为事件的等待,而自动放弃CPU资源,而使其它进程得以使用CPU,这时称之为协同多任务处理。其实如果进程都采用协同多任务处理时,系统将会轻松的调度进程,以分配资源。
2、抢先式多任务处理
当进程不进行I/O,比如计算型运算应用时,一直占用大量的CPU时间,这时系统将会利用中断,使原占用CPU的进程放弃CPU,这时称之为抢先式多任务处理。

小结
1、LINUX采用协同多任务处理与抢先式多任务处理相结合的方式处理进程。
2、当进程都采用协同多任务处理,系统就可能永远不会用到抢先式。
3、调度程序本身也是一个进程,PID是0,是INIT进行的父进程。

1.3抢先式任务处理方式
1、抢先占用的触发:
A、当一个进程因为它的时间片用完而被内核停止执行时,就说这个进程被抢占。
B、当一个享有更高优先公的进程在就绪队列,内核同样可以抢占正在执行的进程,即使它的时间片还没用完。
2、放弃的触发:
A、用户进程可以通过sched_yield系统调用来放弃使用CPU。
B、用户进程通过其它系统调用来放弃CPU。
例如:一个进程正在调用read/write时,它很可能不得不等待相应的设备的响应,这时它应用使自己睡眠(sleep),放弃CPU,直到设备就绪为止。
3、阻塞的触发:

总结:
阻塞与放弃的区别:一个阻塞的进程即不会占用CPU,也不会被调度程序调度。而放弃的进程则会被调度程序调度。linux2.6内核是一个可抢先占有的内核,在不可抢先有的内核则高优先级的进程不能抢占低优先级的进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值