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

处置机调剂:调剂的概念、机遇、切换、进程以及调剂方法和根本原则

调剂的概念1.调剂的根本概念在多道程序零碎中,过程的数目常常多于处置机的个数,过程争用途理机的状况就在所不免。处置机调剂是对处置机停止分

调剂的概念

1. 调剂的根本概念

在多道程序零碎中,过程的数目常常多于处置机的个数,过程争用途理机的状况就在所不免。处置机调剂是对处置机停止分派,就是从停当队列中,依照必定的算法(公道、髙效)选择一个过程并将处置机分派给它运转,以完成过程并发地履行。
处置机调剂是多道程序操作零碎的根底,它是操作零碎设计的中心成绩。

2. 调剂的条理

一个功课从提交开端直到完成,常常要阅历以下三级调剂,如图2-4所示。
1) 功课调剂。又称初级调剂,.其次要义务是按必定的准绳从外存上处于后备形态的功课中遴选一个(或多个)功课,给它(们)分派内存、输出/输入装备等需要的资本,并树立响应的过程,以使它(们)取得竞争处置机的权益。简言之,就是内存与辅存之间的调剂。关于每一个功课只调入一次、调出一次。
多道批处置零碎中大多配有功课调剂,而其他零碎中平日不需求设置装备摆设功课调剂。功课调剂的履行频率较低,平日为几分钟一次。
2) 中级调剂。又称内存调剂。引入中级调剂是为了进步内存应用率和零碎吞吐量。为此,应使那些临时不克不及运转的过程,调至外存等候,把此时的过程形态称为挂起形态。当它们已具有运转前提且内存又稍有闲暇时,由中级调剂来决议,把外存上的那些已具有运转前提的停当过程,再从新调入内存,并修正其形态为停当形态,挂在停当队列上等候。
3) 过程调剂。又称为初级调剂,其次要义务是依照某种办法和战略从停当队列当选取一个过程,将处置机分派给它。过程调剂是操作零碎中最根本的一种调剂,在普通操作零碎中都必需设置装备摆设过程调剂。过程调剂的频率很高,普通几十毫秒一次。

处置机调剂:调剂的概念、机遇、切换、进程以及调剂方法和根本原则
图2-4  处置机的三级调剂

3. 三级调剂的联络

功课调剂从外存的后备队列当选择一批功课进入内存,为它们树立过程,这些过程被送入停当队列,过程调剂从停当队列当选出一个过程,并把其形态改为运转形态,把CPU分派给它。中级调剂是为了进步内存的应用率,零碎将那些临时不克不及运转的过程挂起来。当内存空间宽松时,经过中级调剂选择具有运转前提的过程,将其叫醒。
1) 功课调剂为过程运动做预备,过程调剂使过程正常运动起来,中级调剂将临时不克不及运转的过程挂起,中级调剂处于功课调剂和过程调剂之间。
2) 功课调剂次数少,中级调剂次数略多,过程调剂频率最高。
3) 过程调剂是最根本的,弗成或缺。

调剂的机遇、切换与进程

过程调剂和切换程序是操作零碎内核程序。当恳求调剂的事情发作后,才能够会运转过程调剂程序,当调剂了新的停当过程后,才会去停止过程间的切换。实际上这三件工作应当次序履行,但在实践设计中,在操作零碎内核程序运转时,假如某时发作了惹起过程调剂的要素,并纷歧定可以立时停止调剂与切换。
古代操作零碎中,不克不及停止过程的调剂与切换的状况有以下几种状况。
1) 在处置中缀的进程中:中缀处置进程复杂,在完成上很难做到过程切换,并且中缀处置是零碎任务的一局部,逻辑上不属于某一过程,不该被褫夺处置机资本。
2) 过程在操作零碎内核程序临界区中:进入临界区后,需求独有式地拜访共享数据,实际上必需加锁,以避免其他并行程序进入,在解锁前不该切换到其他过程运转,以放慢该共享数据的释放。
3) 其他需求完整屏障中缀的原子操作进程中:如加锁、解锁、中缀现场维护、恢复等原子操作。在原子进程中,连中缀都要屏障,更不该该停止过程调剂与切换。
假如在上述进程中发作了惹起调剂的前提,并不克不及立时停止调剂和切换,应置零碎的恳求调剂标记,直到上述进程完毕后才停止响应的调剂与切换。
应当停止过程调剂与切换的状况有:
1) 当发作惹起调剂前提,且以后过程无法持续运转下去时,可以立时停止调剂与切换。假如操作零碎只在这种状况下停止过程调剂,就长短褫夺调剂。 
2) 傍边断处置完毕或自陷处置完毕后,前往被中缀过程的用户态程序履行现场前,若置上恳求调剂标记,即可立时停止过程调剂与切换。假如操作零碎支撑这种状况下的运转调剂程序,就完成了褫夺方法的调剂。
过程切换常常在调剂完成后立即发作,它请求保管原过程以后切换点的现场信息,恢复被调剂过程的现场信息。现场切换时,操作零碎内核将原过程的现场信息推入到以后过程的内核客栈来保管它们,并更新客栈指针。内核完成重新过程的内核栈中装入新过程的现场信息、更新以后运转过程空间指针、重设PC存放器等相干任务之后,开端运转新的过程。

过程调剂方法

所谓过程调剂方法是指当某一个过程正在处置机上履行时,如有某个更为主要或紧急的过程需求处置,即有优先权更髙的过程进入停当队列,此时应若何分派处置机。
平日有以下两种过程调剂方法:
1) 非褫夺调剂方法,又称非抢占方法。是指当一个过程正在处置机上履行时,即便有某个更为主要或紧急的过程进入停当队列,依然让正在履行的过程持续履行,直到该过程完成或发作某种事情而进入壅塞形态时,才把处置机分派给更为主要或紧急的过程。
在非褫夺调剂方法下,一旦把CPU分派给一个过程,那么该过程就会坚持CPU直到终止或转换到等候形态。这种方法的长处是完成复杂、零碎开支小,实用于大多半的批处置零碎,但它不克不及用于分时零碎和大多半的及时零碎。
2) 褫夺调剂方法,又称抢占方法。是指当一个过程正在处置机上履行时,如有某个更为主要或紧急的过程需求运用处置机,则立刻暂停正在履行的过程,将处置机分派给这个更为主要或紧急的过程。.
釆用褫夺式的调剂,对进步零碎吞吐率和呼应效力都有分明的益处。但“褫夺”不是一种恣意性行动,必需遵照必定的准绳,次要有:优先权、短过程优先和工夫片准绳等。

调剂的根本原则

分歧的调剂算法具有分歧的特征,在选择调剂算法时,必需思索算法所具有的特征。为了比拟处置机调剂算法的功能,人们提出许多评价原则,下面引见次要的几种:
1) CPU应用率。CPU是盘算机零碎中最主要和昂贵的资本之一,所以应尽能够使CPU 坚持“忙”形态,使这一资本应用率最髙。
2) 零碎吞吐量。表现单元工夫内CPU完成功课的数目。长功课需求耗费较长的处置机工夫,因而会下降零碎的吞吐量。而关于短功课,它们所需求耗费的处置机工夫较短,因而能进步零碎的吞吐量。调剂算法和方法的分歧,也会对零碎的吞吐量发生较大的影响。
3) 周转工夫。是指从功课提交到功课完成所阅历的工夫,包含功课等候、在停当队列中列队、在处迤机上运转以及停止输出/输入操作所破费工夫的总和。
功课的周转工夫可用公式表现如下:
周转工夫 = 功课完成工夫 - 功课提交工夫
均匀周转工夫是指多个功课周转工夫的均匀值:
均匀周转工夫 = (功课1的周转工夫 + … + 功课 n 的周转工夫) / n
带权周转工夫是指功课周转工夫与功课实践运转工夫的比值:
处置机调剂:调剂的概念、机遇、切换、进程以及调剂方法和根本原则
均匀带权周转工夫是指多个功课带权周转工夫的均匀值:
均匀带权周转工夫 = (功课1的带权周转工夫 + … + 功课 n 的带权周转工夫) / n
4) 等候工夫。是指过程处于等处置机形态工夫之和,等候工夫越长,用户称心度越低。处置机调剂算法实践上并不影响功课履行或输出/输入操作的工夫,只影响功课在停当队列中等候所花的工夫。因而,权衡一个调剂算法好坏经常只需复杂地调查等候工夫。
5) 呼应工夫。是指从用户提交恳求到零碎初次发生呼应所用的工夫。在交互式零碎中,周转工夫弗成能是最好的评价原则,普通釆用呼应工夫作为权衡调剂算法的主要原则之一。从用户角度看,调剂战略应尽量下降呼应工夫,使呼应工夫处在用户能承受的规模以内。
要想失掉一个知足一切用户和零碎请求的算法简直是弗成能的。设计调剂程序,一方面要知足特定零碎用户的请求(如某些及时和交互过程疾速呼应请求),另一方面要思索零碎全体效力(如增加全部零碎过程均匀周转工夫),同时还要思索调剂算法的开支。



推荐阅读
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
海峰2502853427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有