zoukankan      html  css  js  c++  java
  • 操作系统-CPU调度

    概念

    控制、协调多个进程对CPU的竞争 

    即按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程

    场景

    N个进程就绪,等待上M(M>=1)个CPU运行,需要决策哪个进程分配给哪个CPU运行

    解决

    WHAT:调度算法(按什么原则选下一个),WHEN:调度时机(何时选),HOW:调度过程(被选中的进程如何上CPU运行)

    具体

    调度时机:内核对中断/异常/系统调用处理后返回用户态时(就绪队列的改变引发重新调度)

      如进程正常终止(退出),进程由于错误终止(如abort异常),新进程创建,一个等待进程变就绪态(唤醒),一个进程由运行态变为就绪态

    或阻塞态(等待或中断)

    调度过程:进程切换,一个进程让出CPU,另一个占用CPU,包括对原进程状态的保存和新进程状态的恢复

      举例:进程A下CPU,进程B上CPU,整个过程包括保存A的进程的上下文,修改进程A的状态(更新PCB),进程A移至合适队列,将B的状态

    设置为运行态,从进程B的PCB中恢复上下文

    一个重要概念:上下文切换开销

    直接开销包括内核完成切换所用的CPU时间(保存和恢复寄存器,切换地址空间等)

    间接开销包括高速缓存,缓冲区缓存,TLB失效

    调度算法的衡量指标

    吞吐量--每单位时间完成的进程的数目

    周转时间--每个进程从提出请求到运行完成的时间

    响应时间--从提出请求到第一次回应的时间

    CPU利用率--CPU做有效工作的时间比列

    等待时间--每个进程在就绪队列中等待的时间

  • 相关阅读:
    2012个人总结与展望
    C++Event机制的简单实现
    string与char*比较 ——why use string
    创建型模式学习总结——设计模式学习笔记
    Bridge模式——设计模式学习笔记
    Singleton模式——设计模式学习
    Adapter模式——设计模式学习笔记
    C++ 申请连续的对象内存
    7 个致命的 Linux 命令与个人评论
    关于保存Activity的状态
  • 原文地址:https://www.cnblogs.com/yb38156/p/9748173.html
Copyright © 2011-2022 走看看