zoukankan      html  css  js  c++  java
  • 系统调度问题

    一、什么是调度

      当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状,这个分配CPU时间的过程就是调度

    二、调度的方式

      2.1 非剥夺方式:分派程序一旦把CPU分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。

        2.2 剥夺方式

      当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的CPU,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。
      例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。
    假如它们就按P1、P2、P3的顺序执行,且不可剥夺,则三进程各自的周转时间分别为20、24、
    26个单位时间,平均周转时间是23.33个时间单位。
    假如用时间片原则的剥夺调度方式,可得到:
    可见:P1、P2、P3的周转时间分别为26、10、6个单位时间(假设时间片为2个单位时间),平均周转时间为14个单位时间。
    衡量进程调度性能的指标有:周转时间、响应时间、CPU-I/O执行期
     

    三、为什么出现调度不过来?

      3.1调度不过来,简单来说,就是要求CPU在1小时内做1.5小时的工作量,CPU在1小时做不过来,就导致部分任务无法做;

      3.2为什么出现?

      CPU性能(工作效率:跟频率,cpu核数相关)不足以胜任这份工作量

      工作量太大,减少工作量

      程序占用太多CPU,要写出好的程序,1.尽量少调用效率低的接口(哪些是接口比较耗cpu???),2.线程/进程不需要CPU时,主动让出来;

  • 相关阅读:
    RDD(弹性分布式数据集)的分析
    Spark 开发环境搭建
    本地yum仓库的配置安装
    Java使用PDFBox操作PDF文件获取页码、文章内容、缩略图
    利用bdb实现持久化队列
    SQL查询重复记录
    SQL删除某个时间段的数据
    JAVA文件读取和解析
    多线程
    DOC解析xml
  • 原文地址:https://www.cnblogs.com/jly594761082/p/10310424.html
Copyright © 2011-2022 走看看