zoukankan      html  css  js  c++  java
  • 进程调度

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

    进程调度与切换

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

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

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

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

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

    强制性调度

    • 在时钟中断的服务程序中,发现当前进程运行的时间过长。
    • 当唤醒一个睡眠中的进程时,发现被唤醒的进程比当前进程更有资格运行。
    • 一个进程通过系统调用改变调度政策或礼让。这种情况实际上应该被视为主动的、自愿的调度,因此这样的系统调用会引起立即调度。
  • 相关阅读:
    怎样克服 JavaScript 框架疲劳?
    jQuery 简单归纳总结
    锋利的JQuery —— 事件和动画
    锋利的JQuery —— DOM操作
    锋利的JQuery —— 选择器
    Maven日常 —— 你应该知道的一二三
    《时间简史》—— 读后总结
    Elasticsearch之_default_—— 为索引添加默认映射
    Elasticsearch 动态映射——自动检测
    安装了Node.js 从VScode 使用node -v 和 npm -v等命令却无效
  • 原文地址:https://www.cnblogs.com/r1ng0/p/12809709.html
Copyright © 2011-2022 走看看