热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

3.3交互进程的调度

交互进程通过从键盘或指示装置接收命令或数据,并且通过生成用户的终端或其它输出设备上的输出响应与在对话框的形式与用户通信。调度交互进程的主要目标是对每个输入做出迅速响

交互进程通过从键盘或指示装置接收命令或数据,并且通过生成用户的终端或其它输出设备上的输出响应与在对话框的形式与用户通信。

调度交互进程的主要目标是对每个输入做出迅速响应。因此,交互式进程必须使用抢占式调度来分时共享 CPU,以便让每个进程都有机会及时取得进展。

RR调度算法

时间量子,Q,是在进程内被允许使用的CPU时间的一个很短的时间单位(通常为10到100毫秒)。

RR(round-robin)算法使用单一的进程队列。优先级仅由进程在队列中的位置决定。队列头部的进程具有最高优先级,允许运行 Q 个时间单位。当 Q 结束时,进程被移动到队列的尾部,下一个位于队列头部的进程又被允许运行 Q 个时间单位。

ML 调度算法

RR调度平等对待所有的进程。外部优先级可以根据重要性划分成多个组。ML(MultiLevel) 调度在每个优先级维护一个单独的进程队列。在每个级别内,进程使用 RR 进行调度。

例:

  1. ML 在队列中维护 N 个不同优先级的进程。
  2. 选择最高优先级队列 § 头部的进程执行。
  3. 当该级别允许的最长时间到期时,正在运行的进程 § 移动到同一队列的尾部,下一个进程 (q) 开始使用 CPU。
  4. 优先级为 N-2 的新进程 (v) 进入相应队列的尾部。
  5. 优先级高于当前运行进程 (q) 的新进程 (x) 抢占正在运行的进程。只有当更高级别的所有队列都为空时,给定级别的进程才能运行。例如:s 将仅在级别 N 和 N-1 的进程终止后运行。

MLF 调度算法

多级反馈(Multilevel feedback)调度类似于 ML,但通过以下方式解决饥饿和公平问题:

  • 在每个优先级使用不同的时间量
  • 动态改变每个进程的优先级

在多级反馈 (MLF) 算法下,新到达的进程进入最高优先级队列 N,并允许运行 Q 个时间单位。当超过 Q 时,进程将移至下一个优先级较低的队列 N-1,并允许运行 2Q 时间单位。优先级每降低一倍,量程大小就会加倍。因此,在优先级 L,允许的最大时间是 2^(NL) Q 个时间单位。

MLF 会自动偏向运行时间较短的进程,而运行时间较长的进程会逐渐迁移到较低优先级。

  1. MLF 维护 N 个优先级。从级别 N 的量子 Q 开始,每个级别允许的最长时间随着每低一个级别增加一倍。
  2. 新进程总是以最高优先级 N 进入。
  3. 队列头部的进程 § 最多可以运行 Q 个时间单位。
  4. 当 p 超过 Q 时,p 从 CPU 中移除并移至下一个较低队列 N-1 的尾部。下一个过程(q)继续。
  5. 如果 q 也超过 Q,则 q 移动到级别 N-1,并且允许进程 p 运行 2Q 时间单位。
  6. 一个新进程 ® 在级别 N 进入并中断 p,它在 q 后面的相同级别 N-1 处进入。允许进程 r 运行 Q 个时间单位。
  7. 如果 r 在一个 Q 内终止并离开,则 q 重新进入以完成第 N-1 级的 2Q 时间单位。
  8. 如果 q 在耗尽 2Q 之前终止并离开,则允许 p 在级别 N-1 完成 2Q 时间单位。如果没有新进程到达,p 继续运行。如果 p 没有终止,则 p 会继续降低优先级直到级别 1。
  9. 在最低优先级,时间是无限的,所以 p 最终在这个级别终止。

交互式调度算法的性能

进程的**响应时间(response time)**是从提交请求(按 Enter 键或单击鼠标按钮)到响应开始到达所经过的时间。保证足够的响应时间是调度交互式进程的主要目标。

对于单独运行的进程,响应时间取决于请求的类型。例如:按下一个键和看到字符出现在屏幕上之间的时间应该是人眼无法察觉的。对文档进行拼写检查或呈现视频剪辑的请求可能需要几秒钟的时间。

当多个进程分时共享 CPU 时,响应时间随着进程数、时间片长度以及执行上下文切换所需的时间而增加。

-> 3.4实时进程调度

此博客仅用于自我学习的记录,如有不当请指正。09/03/2021


推荐阅读
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
author-avatar
着袖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有