Linux内核之调度器

一、多任务与调度器
  多任务操作系统就是能同时并发的交互执行多个进程的操作系统,在单处理器机器上,这会产生多个进程在同时运行的幻觉。在多处理器机器上,这会使多个进程在不同的处理机上真正同时、并行地运行。无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,知道工作确实就绪了。这些任务尽管位于内存,但是并不处于可运行的状态。相反,这些进程利用内核阻塞自己,直到某一事件发生了,因此,现代的Linux系统也许有100个进程数据在内存中,但是只有被调度器选择了的进程才会运行处于可运行状态。
  多任务系统可以划分为两类:非抢占式多任务(cooperative multitasking)和抢占式多任务(preemptive multitasking)。像所有Unix的变体和许多其他现代操作系统一样,Linux提供了抢占式的多任务模式。在此模式下,由调度程序来决定什么时候停止一个进程的运行,以便其他进程能够得到执行的机会。这个强制的挂起动作就叫做抢占(preempion)。进程在被抢占之前能够运行的时间是预先设置好的,而且还有一个专门的名字,叫进程的时间片(timeslice)。时间片实际上就是分配给每个可运行进程的处理器时间段。有效管理时间片能使调度程序从系统全局的角度做出调度决定,这样做还可以避免个别进程独占系统的资源。当今众多现代操作系统对程序运行都采用了动态时间片的计算的方式,并且引入了可配置的计算策略。
  调度器可以切换进程的状态(process state),一个Linux进程从被创建到死亡,可能会经过很多种状态,比如执行、暂停、可中断睡眠、不可中断睡眠、退出等。我们可以把Linux下繁多的进程状态,归纳为三种基本状态。

  在这里插入图片描述
  进程创建之后,就自动变成了就绪状态。如果内核把CPU时间分配给了该进程,那么进程就从就绪状态变成了执行状态;在执行状态下,进程执行指令,最为活跃

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值