首页 > 其他分享 >cpu scheduling

cpu scheduling

时间:2024-04-17 21:55:06浏览次数:29  
标签:优先级 调度 CPU 进程 时间 scheduling cpu

基本概念

  1. 多道程序设计的目的将CPU的利用率最大化
  2. 多个进程同时存在于内存(并发),当一个进程暂不使用cpu时,系统调用另一个进程占用cpu。
  3. cpu调度程序
  • whenever the cpu becomes idle(空闲) the operating system must select one of the processes in the ready queue to be executed .The selection process is carried out by the CPU scheduler.(cpu 调度程序)
  • 每当CPU变为空闲时,操作系统必须从就绪队列中选择一个进程来执行。这个选择过程由CPU调度器来进行。
  1. 抢占调度(process scheduling)
  • 非抢占调度(nonpreemptive scheduling)
    • 一旦某个进程得到CPU,就会一直占用到终止或等待状态。
  • 抢占调度(Preemptive scheduling)
  1. 调度算法性能的衡量
  • cpu利用率:cpu的忙碌程度
  • 响应时间:从提交任务到第一次响应的时间(对于每一个指令,需要到cpu中执行,需要等待调度程调度到cpu中)
  • 等待时间:进程积累在就绪队列中等待的时间,(对于多次进入就绪状态的时间是累加的)
  • 周转时间:从提交到完成的时间
  • 吞吐率:每个时钟单位处理的任务数
  • 公平性:以合理的方式让各个进程共享cpu
  1. 调度性能指标
  • 作业(job)=进程(process)
  • 假设作业i提交给系统的时刻是S,完成的时刻是F,所需运行的时间是K,那么:

调度算法

  1. 先来先服务(FCFS)
  • Frist-Come,First-Served(FCFS)
    • 早期系统里,FCFS意味着一个程序会一直运行到结束(尽管其中会出现I/O的情况)
    • 如今,当一个程序阻塞时会让出CPU。
  • FCFS的优缺点
    • 简单易行(在系统中是默认的一个算法)
    • 如果短作业在长作业的后面将导致周转时间变长,假如超市只买了一瓶矿泉水,那排在队伍最后是感觉很不好的
  1. 时间片轮转(round robin)
  • 每个进程都可以得到相同的cpu时间(CPU时间片,time slice),当时间片到达,进程将会被剥夺cpu并加入就绪队列的尾部。
  • 抢占式调度算法
  • n个就绪队列中的进程和时间片q
    • 每个进程获得1/n的cpu时间,大约是q个时间单位
    • 没有进程等待时间会超过(n-1)q
  • rr的平局周转时间是比较差的
  1. 最短作业优先(sjf)
  • SJF(Shortest Job First):下次调度总是选择所需要CPU时间最短的那个作业(进程 )
  • 这是一个非抢占式的算法,也可以改成抢占式SRTF
  • 算法分析
    • 该算法总是将短进程移到长进程之前执行,因此平均等待时间最小,该算法被证明是最优的
    • 饥饿现象:长进程可能长时间无法获得CPU
    • 预测技术:
      • 该算法需要事先知道进程所需的CPU时间
      • 预测一个进程的cpu时间并非易事
    • 优缺点:
      • 优化了响应时间(+)
      • 难以预测作业CPU时间(-)
      • 不公平算法(-)
  1. 优先级调度(PRIORITY)
  • 优先级通常为固定区间的数字,如[0,10]
    • 数字大小与优先级高低的关系在不同系统中实现不一样,以Linux为例,0为最高优先级。
    • 调度策略:下一次调度总是选择优先级最高的进程。
    • SJF是优先级调度的一个特例。
    • 优先级调度可以是抢占式,也可以式非抢占式。
  • 优先级的定义
    • 静态优先级
      • 优先级保持不变,但会出现不公平(饥饿)现象
    • 动态优先级(退化aging)
      • 根据进程占用CPU时间,当进程占用CPU时间愈长,则慢慢减低它的优先级;
      • 根据进程等待CPU时间:当进程在就绪队列中等待时间愈长,则慢慢提升它的优先级。

标签:优先级,调度,CPU,进程,时间,scheduling,cpu
From: https://www.cnblogs.com/zhudachang/p/18141865

相关文章

  • PP-HumanSeg安装、运行、基于PP-HumanSegV2-Lite训练、测试(ubuntu虚拟机 cpu版本)
    参考paddleseg官网【PaddleSeg实践范例】PP-HumanSegV2SOTA人像分割方案github的readme: https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.9/README_CN.md零、准备工作0.安装Anacondaubantu下安装Anaconda、pycharm1.用conda创建虚拟环境#1.查询conda环......
  • process scheduling (进程调度)& practice 1 process operation
    进程切换并发进程的切换并发进程中,一个进程在执行过程中可能被另一个进程替换占有CPU,这个过程称为“进程切换”是什么触发了进程切换?进程切换时要做什么?操作系统到底做了什么操作2中断技术中断是指程序执行过程中当发生某一个事件时,中止cpu上现行的程序的运行in......
  • 关于mac使用figma以及企业微信3.1.18版本,CPU系统占用率飙升至70%
    问题描述使用一段时间正常,不知道是修改了什么设置,还是有什么软件冲突,导致cpu使用率极高系统进程中有一个kernel_task占用了大量的cpu并且该占用并不会消失,只要figma打开就会一直占用企业微信3.1.18也会导致该问题=>企业微信3.1.16之后版本总是会启用独立显卡,导致电......
  • VM虚拟机显示“客户机操作系统已禁用cpu”及“该虚拟机要求使用 AVX2,但 AVX 不存在”
    版本:VM:15.5.7build-17171714虚拟机:rhel-8.8-x86_64-dvd地址:D:\Users\q2383\Documents\VirtualMachines\RedHatEnterpriseLinux864位\RedHatEnterpriseLinux864位.vmx问题:客户机操作系统已禁用cpu1.添加内容点击查看代码.encoding="GBK"config.version=......
  • vmware安装macos提示客户机操作系统已禁用 CPU。请关闭或重置虚拟机
    客户机操作系统已禁用CPU。请关闭或重置虚拟机。这是AMD电脑的VMware安装macOS出现的错误我们需要在虚拟机运行之前打开虚拟机安装目录自动生成的macOSxxxx(你选择安装的版本号).vmx只需要在末尾添加:smc.version="0"cpuid.0.eax="0000:0000:0000:0000:0000:0000:0000:......
  • cpu亲缘性
    目录引言何为cpu亲缘性使用亲缘性的好处LinuxCPU亲缘性的使用例子参考-强推~引言关于cpu亲缘性,文末参考链接讲述的非常详细,本文只记录自己写的一个小demo来了解cpu亲缘性何为cpu亲缘性所谓CPU亲缘性可以分为两大类:软亲缘性和硬亲缘性。Linux内核进程调度器天生就具有被......
  • 使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态
    作者:朱亚光,之江实验室工程师,云原生/开源爱好者。KubeSphere边缘节点的可观测性在边缘计算场景下,KubeSphere基于KubeEdge实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应用交付、运维、管控的需求。根据KubeSphere的支持矩阵,只有1.23......
  • Understanding the linux kernel Chapter 7 Process Scheduling
    SchedulingPolicyLinuxschedulingisbasedonthetimesharingtechnique:severalprocessesrunin“timemultiplexing”becausetheCPUtimeisdividedintoslices(called,quantum),oneforeachrunnableprocess.Analternativeclassificationdistinguis......
  • 多线程下写全局变量时,可借助sleep(0)让出cpu
    目录一个demo(对全局变量++)-->反汇编阅读cpu指令多个线程都去对全局变量++线程不挂起sleep(0)使线程挂起,让出cpu总结一下为啥不到10W?加锁版本近期在重读APUE,对unix下多线程有了新的理解用一个小demo来说明多线程下写全局变量时,让出cpu(使线程挂起)的重要性一个demo(对全局变量++)-......
  • CPU、DSP、MPU、MCU、SOC、FPGA、ARM等概念
    CPU、DSP、MPU、MCU、SOC、FPGA、ARM等概念参考资料:百度知道“stm32和cortexm3是什么关系”:https://zhidao.baidu.com/question/178510430.html知乎“DSP与MCU与ARM与FPGA有什么区别?”:https://www.zhihu.com/question/278500219/answer/405183375CSDN“MCU和SOC的区别”:ht......