跳至主要內容

调度算法

LincZero大约 2 分钟

调度算法

详细见 ../../03. 计算机系统 - 线性学习版/01. 图解系统/06. 调度算法

目录

计算机相关的调度算法 (四类、多种)

本质都是优化优先级(具体体现为处理顺序的优先级/保留的优先级)

  • 进程调度算法。核心:优化顺序,减少等待时间总和
    • 先来先服务调度算法 (FCFS)
    • 最短作业优先调度算法 (SJF)
    • 高响应比优先调度算法 (HRRN)
    • 时间片轮转调度算法 (PR)
    • 最高优先级调度算法 (HPF)
    • 多级反馈队列调度算法 (MFQ)
  • 磁盘调度算法。核心:优化顺序,减少总寻道的时间
    • 先来先服务算法 (FCFS)
    • 最短寻道时间优先算法 (SSF)
    • 扫描算法 (Scan)
    • 循环扫描算法 (CScan)
    • LOOK 与 C-LOOK 算法
  • 页面置换算法。核心:优化选择,减少页面的置换次数
    • 最佳页面置换算法 (OPT)
    • 先进先出置换算法 (FIFO)
    • 最近最久未使用的置换算法 (LRU)
    • 时钟页面置换算法 (Lock)
    • 最不常用置换算法 (LFU)
  • I/O调度算法。核心:优化顺序,无唯一目标(I/O 请求队列,详见设备管理一章)
    • 没有调度算法
    • 先入先出调度算法
    • 完全公平调度算法
    • 优先级调度算法
    • 最终期限调度算法

Redis 的内存淘汰策略 (八种)

Redis 的内存淘汰策略(和页面置换是很相似的)

Redis 内存淘汰策略共有八种:(且这些策略可以进行以下分类)

  • 不进行数据淘汰的策略
    • noeviction(Redis3.0之后,默认的内存淘汰策略) :它表示当运行内存超过最大设置内存时,不淘汰任何数据,而是不再提供服务,直接返回错误。
  • 进行数据淘汰的策略
    • 在设置了过期时间的数据中进行淘汰
      • volatile-random:随机淘汰设置了过期时间的任意键值;
      • volatile-ttl:优先淘汰更早过期的键值。
      • volatile-lru(Redis3.0 之前,默认的内存淘汰策略):淘汰所有设置了过期时间的键值中,最久未使用的键值;
      • volatile-lfu(Redis 4.0 后新增的内存淘汰策略):淘汰所有设置了过期时间的键值中,最少使用的键值;
    • 在所有数据范围内进行淘汰
      • allkeys-random:随机淘汰任意键值;
      • allkeys-lru:淘汰整个键值中最久未使用的键值;
      • allkeys-lfu(Redis 4.0 后新增的内存淘汰策略):淘汰整个键值中最少使用的键值。