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

学习笔记处理器调度

1.1 CPU的三级调度在支持交换调度的系统中,CPU调度的层次可分为三级:高级调度、中级调度和低级调度。通俗来讲,三级调度中的作业调度是宏观调度,进程调度是微观调度。例如,在一个

1.1  CPU的三级调度

在支持交换调度的系统中,CPU调度的层次可分为三级:高级调度、中级调度和低级调度。

通俗来讲,三级调度中的作业调度是宏观调度,进程调度是微观调度。例如,在一个班级的学生中挑选几个学生去参加辩论赛,从班上没去参加的同学“宏观”来看,那几个同学都已经去进行辩论了,即都处于辩论的“运行”状态(作业的执行状态)。而具体到辩论会场,即从“微观”来看,这几个同学有正在辩论(相当于进程的运行状态),有的正准备辩论(相当于进程的就绪状态),有的还在写稿,未写好则不能辩论(相当于进程的阻塞状态)。三级调度之间的关系如下图。

1.高级调度

高级调度又称作业调度或宏观调度。

其功能是按一定的调度算法把外存上处于后备作业队列中的作业调入内存,为它们分配所需的资源并创建进程,然后将新创建的进程插入到系统的进程就绪队列中。

功能:

(1)选择作业

(2)分配资源

(3)创建进程

(4)作业控制

(5)回收资源

2.中级调度

又称交换调度。功能是在内存使用紧张的情况下,将内存中暂时无法运行的进程挂起,即由内存调至外存 (换出),使外存上具备运行条件的就绪进程能够及时进入内存运行。

3.低级调度

又称进程调度或微观调度。其主要功能使按照一定的调度算法将CPU分派给进程就绪队列中的某个进程。

 

1.2 处理器的调度队列模型

1. 仅有进程调度的调度队列模型

在分时系统中,通常采用仅有进程调度的CPU调度队列模型,如下图。

进程调度程序按轮转法,为进程就绪队列的队首进程分配一个事件片,让其占用CPU运行。进程运行时可能出现以下三种情况。

(1)进程运行完成。进程在分配给它的一个时间片之内完成了任务,则系统回收它所占用的CPU,该进程进入完成状态。

(2)时间片到。如果进程在分配给它的一个时间片内还未完成任务,则系统回收它所占用的CPU,并把该进程排到进程就绪队列的队尾等待下一个调度。

(3)发生等待事件。如果运行中发生等待事件,则将其插入到阻塞队列中,直到等待事件完成,再唤醒该进程使其变为就绪状态,并插入到就绪队列的队尾。

 

2.具有高级和低级调度的队列模型

在多道批处理器,一般采用两级调度的CPU调度队列模型。

 

 3.同时具有三级调度的调度队列模型

在同时具有多道批处理和分时处理的系统中,为了调整系统的工作负荷而引入了中级调度。模型图如下。

 1.3进程调度的方式和时机

1.进程调度方式

(1)非抢占式(非剥夺式)调度;

(2)抢占式(剥夺式)调度。

2.进程调度的时机

(1)当前运行进程执行结束而终止,或因等待某个事件的完成而无法继续执行,需要启动进程调度来选择一个新的就绪进程运行。

(2)在抢占式调度系统中,就绪队列中出现了优先级更高的进程,或当前运行进程的时间片已经用完,需要剥夺当前运行进程的CPu使用权,并将其分配给更高优先级的进程或时间片轮转的下一个就绪进程。

3.进程调度实现

(1)保存当前运行进程的现场信息

(2)选择待运行的进程

(3)为新选中的进程恢复现场

 


推荐阅读
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 深入解析RDMA中的队列对(Queue Pair)
    本文将详细探讨RDMA架构中的关键组件——队列对(Queue Pair,简称QP),包括其基本概念、硬件与软件实现、QPC的作用、QPN的分配机制以及用户接口和状态机。通过这些内容,读者可以更全面地理解QP在RDMA通信中的重要性和工作原理。 ... [详细]
author-avatar
手机用户2702935673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有