码迷,mamicode.com
首页 > 系统相关 > 详细

进程调度

时间:2020-04-30 17:25:02      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:信号   时间   优先   基础   综合   nice   唤醒   ble   linux内核   

在Intel i386 CPU中,提供了TSS与TR用于任务切换,但是Linux出于效率的考虑自己实现了任务切换。但Linux内核还是使用了TSS,用于完成系统堆栈空间的自动切换(从用户空间进入系统空间时的堆栈切换)。

进程调度与切换

三种不同应用的需求:交互式,批处理,实时

调度政策:内核为系统中的每个进程计算出一个反映其运行“资格”的权值,然后挑选权值最高的进程投入运行。在运行过程中,当前进程的资格随时间而递减,从而在一次调度的时候原来资格较低的进程可能更有资格运行了。到所有进程的资格都变成了0时,就重新计算一次所有进程的资格。资格的计算主要是以优先级为基础的,所以说是以优先级为基础的调度。

TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE的区别是:前一个能被信号唤醒,后一个不能。

对于普通进程的权值计算(goodness函数),取决于nice值与剩下的时间配额。

如果当前就绪队列中的所有进程的权值都为0,则要重新计算所有进程的时间配额。注意是所有进程的时间配额,这样对于不在就绪队列中的进程,提升了其时间配额,进一步提升了其综合权值。

强制性调度

  • 在时钟中断的服务程序中,发现当前进程运行的时间过长。
  • 当唤醒一个睡眠中的进程时,发现被唤醒的进程比当前进程更有资格运行。
  • 一个进程通过系统调用改变调度政策或礼让。这种情况实际上应该被视为主动的、自愿的调度,因此这样的系统调用会引起立即调度。

进程调度

标签:信号   时间   优先   基础   综合   nice   唤醒   ble   linux内核   

原文地址:https://www.cnblogs.com/r1ng0/p/12809709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!