热门标签 | 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


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 本文介绍了游戏开发中的人工智能技术,包括定性行为和非定性行为的分类。定性行为是指特定且可预测的行为,而非定性行为则具有一定程度的不确定性。其中,追逐算法是定性行为的具体实例。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
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社区 版权所有