当前位置: 首页 > article >正文

操作系统学习笔记2.2调度

文章目录

      • 调度的概念和层次
      • 七状态模型
      • 总结
    • 进程调度的时间,切换
    • 调度方式
    • 调度器和闲逛进程
    • 调度算法的评价指标
  • 调度算法
    • 先来先服务
    • 短作业优先
    • 最短剩余时间优先算法
    • 时间片轮转
    • 优先级调度算法
    • 多级反馈队列调度(Multilevel Feedback Queue Scheduling)
    • 上下文切换
      • 上下文切换的过程
      • 上下文切换的类型
    • 其它杂七杂八知识点

调度的概念和层次

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七状态模型

在这里插入图片描述

总结

在这里插入图片描述

进程调度的时间,切换

在这里插入图片描述

调度方式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

调度器和闲逛进程

在这里插入图片描述
在这里插入图片描述

调度算法的评价指标

利用率:CPU利用世家
系统吞吐量:总共完成作业/时间
周转时间:

在这里插入图片描述

在这里插入图片描述
等待时间:在这里插入图片描述

调度算法

先来先服务

先后顺序
原理:按照进程到达的顺序来调度,先到达的进程先执行。
优点:简单易实现,公平性较好。
缺点:平均等待时间较长,容易发生“短进程等待长进程”的问题,导致“队头阻塞”现象。
有利于长作业,不利于短作业,CPU繁忙

短作业优先

比较谁作业时间短
原理:选择执行时间最短的进程优先执行,以最小化平均等待时间。
优点:可以减少平均等待时间,适用于批处理系统。
缺点:需要事先知道各进程的执行时间,不适合实时系统,容易导致长作业的饥饿。

最短剩余时间优先算法

谁先拉好屎谁占着坑位,时间长让出来。
在这里插入图片描述

时间片轮转

在这里插入图片描述
在这里插入图片描述
原理:为每个进程分配一个固定的时间片(Time Quantum),进程按顺序循环执行,每次执行不超过时间片的长度。
优点:适合时间共享系统,公平性好,每个进程都有机会执行。
缺点:如果时间片太长,算法会退化为FCFS;如果时间片太短,会导致频繁上下文切换,增加开销。

优先级调度算法

原理:每个进程被赋予一个优先级,优先级高的进程先执行。
分类:
抢占式:高优先级进程到来时,可以中断当前进程。
非抢占式:当前进程完成后,调度下一个优先级最高的进程。
优点:适合对任务重要性区分明显的场景。
缺点:可能导致低优先级任务饥饿,通常需要老化机制来解决。

多级反馈队列调度(Multilevel Feedback Queue Scheduling)

原理:结合优先级调度和轮转调度,进程首次进入系统时,优先级较高,随着时间推移优先级降低,且允许进程在不同队列之间移动。
优点:动态调整进程优先级,适应性强,可以防止饥饿问题。
缺点:调度机制复杂,参数设置影响算法效果。
在这里插入图片描述

上下文切换

上下文切换(Context Switching)是操作系统多任务处理中的一个重要概念,指的是在多任务系统中,CPU从执行一个进程切换到另一个进程的操作。

上下文切换的过程

  1. 保存当前进程的状态:操作系统保存当前运行进程的状态,包括CPU寄存器、程序计数器、内存管理信息等,以便稍后可以恢复该进程。

  2. 加载新进程的状态:操作系统从先前保存的某个进程的上下文信息中恢复数据,然后将这些数据加载到CPU中,准备执行新的进程。

  3. 恢复新进程的执行:恢复的进程开始从之前停止的地方继续执行。

上下文切换的类型

  • 进程上下文切换:操作系统在两个不同的进程之间切换。每个进程拥有自己的地址空间,所以上下文切换需要保存和恢复更多的状态信息。

  • 线程上下文切换:同一进程的不同线程之间切换,由于线程共享同一地址空间,所以只需切换部分状态(如寄存器、栈指针等)。

其它杂七杂八知识点


http://www.kler.cn/a/370611.html

相关文章:

  • 【人工智能】:搭建本地AI服务——Ollama、LobeChat和Go语言的全方位实践指南
  • RC2在线加密工具
  • 【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)
  • lvm快照备份技术详细知识点
  • 【爬虫】使用 Scrapy 框架爬取豆瓣电影 Top 250 数据的完整教程
  • 51c大模型~合集106
  • 模型其他压缩方法
  • 前端 eslint 配置,以及在git提交之前自动format
  • Day20 数据结构
  • Python从入门到高手7.3节-列表的常用操作方法
  • 【2024工业3D异常检测文献】LSFA: 面向三维工业异常检测的自监督特征适配
  • Xcode文件默认存储位置-使用c++file保存文件默认路径以及设置为路径为当前项目路径
  • Python 深度学习简单介绍
  • Java表单提交:轻松实现与PHP和Python相同的简便性
  • 力扣刷题(sql)--零散知识点(2)
  • linux系统操作教程小白学习
  • 大数据之Kafka集群的安装部署
  • mysql 十把锁之《小猫钓鱼》
  • 踩坑:关于使用ceph pg repair引发的业务阻塞
  • 【MATLAB源码-第187期】基于matlab的人工蜂群优化算法(ABC)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • js 实现自定义打印模板
  • Java生态系统的完全掌握(5/5)
  • anchor、anchor box、bounding box之间关系
  • 大尺寸彩色电子墨水屏标签,如何焕新数字化商业体验?
  • 解决前后端跨域问题(包会的!)
  • pytest自动化测试数据驱动yaml/excel/csv/json