精华内容
下载资源
问答
  • 几种CPU调度策略

    千次阅读 2019-07-27 14:41:23
    CPU调度 我们知道,程序需要获得CPU的资源才能被调度和执行,那么当一个进程由于某种原因放弃CPU然后进入阻塞状态,下一个获得CPU资源去被调度执行的进程会是谁呢?下图中,进程1因为阻塞放弃CPU资源,此时,进程2...

    CPU调度

    我们知道,程序需要获得CPU的资源才能被调度和执行,那么当一个进程由于某种原因放弃CPU然后进入阻塞状态,下一个获得CPU资源去被调度执行的进程会是谁呢?下图中,进程1因为阻塞放弃CPU资源,此时,进程2刚IO操作结束,可以获得CPU资源去被调度,进程3的时间片轮转结束,也同样可以获得CPU资源去被调度,那么,此时的操作系统应该安排哪个进程去获得CPU资源呢?这就涉及到我们操作系统的CPU调度策略了。

    根据生活中的例子,我们很容易想到以下两种策略

    CPU调度的直观想法:

    1.FIFO

    谁先进入,先调度谁,这是一种非常简单有效的方法,就好比我们去饭堂打饭,谁先到就给谁先打饭。但是这种策略会遇到一个问题:如果遇到一个很小的任务,但是它是最后进入的,那么必须得前面一大堆任务结束完后才能执行这个小小的任务,这样就感觉很不划算呀!因为我只是简简单单的一个小任务,但是从打开这个任务到结束这个任务要很久。这显然不符合我们的需求,因而我们会想到第2种策略,就是先调度小任务,后调度大任务。

    2.Priority

    很简单,就是任务短的优先执行,但是此时又有问题了,任务虽然短,但是它的执行时间不一定短,就好比在一个银行业务中,客户填写一个表,这是一个非常短的任务吧——就单单填个表,但是这个表很长很长,那么这个短任务它的执行时间就很长了,我们怎么知道这个短的任务将来会执行多长的时间呢?所以,这样的策略还是依然有问题。

     

    那么,面对诸多的场景,如何设计调度算法呢?

    首先,我们要明白我们的算法应该让什么更好呢?面对客户:银行调度算法的设计目标应该是用户满意;而面对进程:CPU调度的目标应该是进程满意

    那怎么才能让进程满意呢?那就是时间了。

    进程希望尽早地结束任务,这就是周转时间(从任务到达到任务结束)要短,而且希望用户的操作能够尽快地被响应,这就是响应时间(从操作发生到响应)要短。而且系统内耗时间要少,吞吐量(任务的完成量)要大,系统需要把更多的时间用再任务的执行上,而不能老是去做无关紧要的事情,例如:频繁切换任务,切换栈,分配资源等事情。同时,系统还要去合理地调配任务。

     

    那么,CPU的调度策略如何做到合理呢?

    首先得明白系统中有以下的几种矛盾。

    1.吞吐量和响应时间之间有矛盾

    响应时间小=>切换次数多=>系统内耗大=>吞吐量小

    由于需要较短的响应时间,那么就得频繁地切换任务,这样系统的很多时间都花在切换任务上面了,系统的内耗大了,吞吐量就小了。

    2.前台任务和后台任务的关注点不同

    前台任务关注响应时间,后台任务关注周转时间。

    前台任务例如我们的word文档,我们打一个字,需要立马显示在文档中,这就是word文档这个任务关注的是响应时间;而后台任务中,例如我们的javac编译java代码,它的周转时间要小,即该任务从进入到结束所花的时间要小,即编译完成的时间要小。

    3.IO约束型任务和CPU约束型任务各有各的特点

    IO约束型任务就是使用CPU的时间较少,进行IO操作的时间较长,CPU约束型的任务就是使用CPU的时间较长。

     

    因此,要做到合理,需要折中、综合考虑以上的几种矛盾。

    由此,产生了以下一些CPU的调度算法。

     

     

    各种CPU调度算法

    1.First Come,First Served(FCFS)

    就是先来先服务的调度算法,哪个任务先进来,就为哪个任务先服务。

    我们上面说过,周转时间=任务结束的时间-任务到达的时间,因此,我们算一算以上四个任务的平均周转时间。进程A到达时间为0时刻,进程B到达时间为1时刻,进程C到达时间为2时刻,进程D到达时间为3时刻,因此,按照FCFS调度算法,我们一词调度A、B、C、D.

    四个任务的平均周转时间=(5-0)+(65-1)+(165-2)+(175-3) / 4 = 101.

    那么,因为一个系统中,可能短任务占的比重较多,那些后来进入的短任务,就得等前面一大堆的任务执行完后,CPU才为这些短任务服务,这样的话,很多短任务即使服务时间短,但是它们的周转时间都比较长。我们可以尝试着把短任务提前,短任务提前了,减少以短任务为主的系统的平均周转时间,由此我们产生了短作业优先的CPU调度算法。

     

    2.SJF(Short Job First,短作业优先)

    也很简单,就是哪个任务的服务时间短就先调度哪个。还是上面那四个进程。

    进程A的服务时间为5,进程B的服务时间为60,进程C的服务时间为100,进程D的服务时间为10,因此,按照短作业优先的CPU调度算法,我们依次调度A、D、B、C.

    因此,这四个任务的平均周转时间=(5-0)+(15-3)+(75-1)+(175-2) / 4 = 66.

    很明显看到,再以短作业为主的系统中,短作业优先的调度算法的平均周转时间比先来先服务的调度算法平均周转时间要低.

    现在问题又来了,如果任务C这个任务是急需要响应的,比如是word文档任务,那么它就要快速响应用户的按键输入请求,就是要求其响应时间要小。很明显,上面的SJF调度策略没有考虑到响应时间这个问题,使得任务C仅仅是周转时间短,而下响应时间较长(必须等A、D、B任务结束后才会响应C)。

    由此,我们想到了按时间片轮转的方式去调度。

     

    3.RR算法(按时间片来轮转调度)

    还是以上面的那四个进程为例。

    那按时间片轮转的调度算法是设置一个时间片,比如为10的CPU时间,然后不停地在A、B、C、D四个进程中切换,每个进程执行时间10,时间到了就切换到下一个进程执行时间10,直到全部执行完毕。

    为每个进程分配10的CPU时间,轮转调度执行,这样每个进程的响应时间就变小了。

    如果时间片设置过大,那响应的时间就会太长,如果时间片设置过小,那整个系统都在不停地切换进程,系统很多时间都浪费在切换进程上面了,造成系统的吞吐量小,折中考虑后,时间片设置为10~100ms,切换的时间为0.1~1ms.

     

    说到这里,SJF算法是关注系统的平均周转时间,而RR算法是关注系统的响应时间,但是如果一个系统需要响应时间小和周转时间小同时存在,那该怎么办?

    比如word很关心响应时间,而javac编译java程序更关心周转时间,两类任务同时存在该怎么办?

    前台的任务更关心响应时间,因为前台任务是与用户直接进行交互的,需要快速响应用户的请求,后台任务更关心周转时间,需要快速的结束任务的。

    一个很直观的想法,定义前台任务和后台任务两条队列,前台使用RR算法,后台使用SJF算法,只有前台任务没有时才调度后台任务。

    但是这样又会产生问题,如果一直有前台任务怎么办,那这样后台任务就永远得不到调度了。在这里有一个有趣的小故事想跟大家讲:1973年有位工作人员去关闭MIT的IBM7094计算机时,发现有一个进程在1967年提交但一直未运行。

    这时候我们可以让后台的任务优先级动态升高,但后台任务(用SJF调度)一旦执行,那前台任务的响应时间又得变大了。

    如果我们前后台任务都用时间片,那又退化为了RR算法。

     

    所以,问题还有很多等着我们去发现去想办法解决。

    如我们怎么知道哪些是前台任务那些是后台任务呢,前台任务难道就没有后台任务的工作?后台任务难道没有前台任务的工作?SJF中的短作业优先如何体现?如何判断作业的长度?

    等等这些问题到现在都在疯狂地探讨和研究当中,有兴趣向这方面进行深入了解的可以阅读相关文献,或者阅读以下linux的CPU调度算法源码。单单一个CPU的调度算法就要考虑这么多东西了,可以看到,我们的操作系统真的是人类的一项很伟大的发明。

    展开全文
  • CPU调度策略

    千次阅读 2019-03-14 22:13:16
    今天见到介绍下CPU处理器的调度策略,自己也还在学习中,后期会继续完善补充,什么不足希望大家多多指教。 ** 首先介绍下CPU调度的相关概念 ** CPU的调度简单来说,就是当前的进程需要进行的OI操作或者时间片结束...

    今天见到介绍下CPU处理器的调度策略,自己也还在学习中,后期会继续完善补充,有什么不足希望大家多多指教。
    **

    首先介绍下CPU调度的相关概念

    **
    CPU的调度简单来说,就是当前的进程需要进行的OI操作或者时间片结束后,操作系统需要从就绪的队列中选择一个进程,把CPU的使用权赋给被选择的进程,如果没有就绪进程的话,系统会自动安排一个空闲进程或idle进程(windows操作系统中都存在的system idle process),目的就是让CPU不空闲,这类进程所占CPU的百分比越高,就说明系统比较空闲。

    CPU的调度主要会发生在,内核对中断、异常、系统调用后还返回到用户态时,现在假设有M个进程,N个CPU需要分配给他们来运行,那么哪个CPU分配给哪个进程?是在什么时候通过什么方式分配的?总的来说有以下几种情况:

    1. 进程正常结束,或由于某种错误而终止运行
    2. 新进程创建,或一个等待进程变成就绪状态
    3. 当一个进程从进行态变为阻塞态
    4. 当一个进程从运行态变为就绪态

    前两种是CPU上有进程在运行,后两种是CPU上没有进程在运行时的调度。
    CPU调度算法有几个衡量的指标:

    1. 吞吐量(Throughput):单位时间完成的进程数目
    2. 周转时间(Turnaround Time):每个进程从提出运行请求道运行完成的时间
    3. 响应时间(Response Time):从提出请求道第一次回应的时间
    4. CPU的利用率(CPU Utilization):CPU有效工作所占的时间比例
    5. 等待时间(Waiting Time):每个进程在就绪队列中等待的时间
      等等一系列标准……

    I/O密集型与CPU密集型:
    I/O密集型:进程的大部分时间都是在等待I/O设备上
    在这里插入图片描述
    CPU密集型:需要大量CPU的时间来计算
    在这里插入图片描述

    区分静态优先级和动态优先级:
    静态优先级:进程创建时指定,运行过程中不再改变
    动态优先级:进程创建时指定了一个优先级,运行过程中可以动态变化
    如:等待时间较长的进程可提升其优先级

    下面再来介绍几种CPU调度的算法:

    先进先出算法FIFO((First In First Out)

    按照进程就绪的先后顺序来使用CPU,处理器被分配给最先进入就绪队列的进程,进程一单分到CPU的使用权,就一直执行到晋城结束或阻塞时才结束。这种进程按照时间顺序来使用,非抢占内存的方式,公平公正,实现起来也相对简单;但是算法的实际效果不佳,比如在长进程后的短进程,必须等到长进程执行完毕后才能执行,不利于有效的提升用户体验。再形象化一点,有3个进程p1,p2,p3,执行期分别为30,20,10,当他们分别进入就绪队列时,对于p1,p2,p3的周转时间分别为30,50,60,平均的周转时间是46.7,可见效率确实不高。

    短进程优先算法SCBF(Shortest CPU Burst First)

    先给每个进程都设置一个优先级,根据比较优先级来确定下一个执行的进程;将一些相对短的进程优先级适当提高,该算法虽然可获得较好的调度性能,用户体验也有所提升,但是难以准确的知道下一个CPU的执行期,只能根据每一个进程的执行历史来预测;不知道进程的具体执行时间,他的优先级还有可能继续改变,所以仍然有所缺陷。

    时间片轮转调度算法RR(Round Robin)

    分配给调度上CPU的进程,确定了允许该进程运行的时间长度。每个进程会被分配一个时间片,在这个时间片的时间段内,允许进程运行;如果在时间片结束时该进程还在运行,就会剥夺该进程得而CPU并分配给另一个进程;如果该进程在时间片结束前终止或者阻塞,则CPU会立即完成任务并进行切换。这种算法有利于交互式计算,响应的速度快,但是由于进程的切换,时间片轮转法要花费较多的内存开销,而且对于彼此进程间相差较大的有利,而对于进程大小相似或相同的则不利。

    虚拟轮转法(Virtual RR)

    这种算法基于时间片轮转法进行改进,能够解决在CPU调度中对于进程大小相似的进程集的不利性,主要特点就是设置了一个辅助的队列,每一个进程在执行完毕一个时间片后,就进入辅助队列,CPU在进行调度是总是先来检查辅助队列是否为空队列,若不为空则优先执行辅助队列中的进程,直到辅助队列为空,再调度就绪队列中的进程。

    优先级算法PSA(Priority Scheduling Algorithm)

    给每一个进程一个优先级,优先级越高的事件越紧急,应该先执行,一般来说,系统进程优先级高于用户进程,前台进程优先级高于后台进程,操作系统更偏向于I/O类型的进程。这种算法实现起来简单,但是缺乏公平性,很可能导致优先级低的进程产生饥饿现象,会造成优先级反转的问题,就是一个低优先级进程持有一个高优先级进程所需要的资源,使得高优先级进程等待低优先级进程运行完毕后再运行。

    展开全文
  • 操作系统中的进程调度策略有几种

    万次阅读 多人点赞 2018-09-22 09:00:39
    先来先服务调度算法:先来先服务(FCFS)调度算法是一最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业...
    1. 先来先服务调度算法:先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
    2. 短作业(进程)优先调度算法:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
    3. 高优先权优先调度算法:为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中。当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成如下两种。
    •     3.1) 非抢占式优先权算法:在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。
    •     3.2) 抢占式优先权调度算法:在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。因此,在采用这种调度算法时,是每当系统中出现一个新的就绪进程i 时,就将其优先权Pi与正在执行的进程j 的优先权Pj进行比较。如果Pi≤Pj,原进程Pj便继续执行;但如果是Pi>Pj,则立即停止Pj的执行,做进程切换,使i 进程投入执行。显然,这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中。
    •     3.3)容易出现先级倒置现象:优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。如果高优先级等待资源时不是阻塞等待,而是忙循环,则可能永远无法获得资源,因为此时低优先级进程无法与高优先级进程争夺CPU时间,从而无法执行,进而无法释放资源,造成的后果就是高优先级任务无法获得资源而继续推进。
    •     3.4)优先级反转案例解释:不同优先级线程对共享资源的访问的同步机制。优先级为高和低的线程tall和线程low需要访问共享资源,优先级为中等的线程mid不访问该共享资源。当low正在访问共享资源时,tall等待该共享资源的互斥锁,但是此时low被mid抢先了,导致mid运行tall阻塞。即优先级低的线程mid运行,优先级高的tall被阻塞。
    •     3.5)优先级倒置解决方案:
    •        (3.5.1)设置优先级上限,给临界区一个高优先级,进入临界区的进程都将获得这个高优先级,如果其他试图进入临界区的进程的优先级都低于这个高优先级,那么优先级反转就不会发生。
    •      (3.5.2)优先级继承,当一个高优先级进程等待一个低优先级进程持有的资源时,低优先级进程将暂时获得高优先级进程的优先级别,在释放共享资源后,低优先级进程回到原来的优先级别。嵌入式系统VxWorks就是采用这种策略。
    •        这里还有一个八卦,1997年的美国的火星探测器(使用的就是vxworks)就遇到一个优先级反转问题引起的故障。简单说下,火星探测器有一个信息总线,有一个高优先级的总线任务负责总线数据的存取,访问总线都需要通过一个互斥锁(共享资源出现了);还有一个低优先级的,运行不是很频繁的气象搜集任务,它需要对总线写数据,也就同样需要访问互斥锁;最后还有一个中优先级的通信任务,它的运行时间比较长。平常这个系统运行毫无问题,但是有一天,在气象任务获得互斥锁往总线写数据的时候,一个中断发生导致通信任务被调度就绪,通信任务抢占了低优先级的气象任务,而无巧不成书的是,此时高优先级的总线任务正在等待气象任务写完数据归还互斥锁,但是由于通信任务抢占了CPU并且运行时间比较长,导致气象任务得不到CPU时间也无法释放互斥锁,本来是高优先级的总线任务也无法执行,总线任务无法及时执行的后果被探路者认为是一个严重错误,最后就是整个系统被重启。Vxworks允许优先级继承,然而遗憾的工程师们将这个选项关闭了。
    •      (3.5.3)第三种方法就是临界区禁止中断,通过禁止中断来保护临界区,采用此种策略的系统只有两种优先级:可抢占优先级和中断禁止优先级。前者为一般进程运行时的优先级,后者为运行于临界区的优先级。火星探路者正是由于在临界区中运行的气象任务被中断发生的通信任务所抢占才导致故障,如果有临界区的禁止中断保护,此一问题也不会发生。

     

           4、高响应比优先调度算法:在批处理系统中,短作业优先算法是一种比较好的算法,其主要的不足之处是长作业的运行得不到保证。如果我们能为每个作业引入前面所述的动态优先权,并使作业的优先级随着等待时间的增加而以速率a 提高,则长作业在等待一定的时间后,必然有机会分配到处理机。该优先权的变化规律可描述为:

           在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。

           5、时间片轮转法:在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几ms 到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。

           6、多级反馈队列调度算法:前面介绍的各种用作进程调度的算法都有一定的局限性。如短进程优先的调度算法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则短进程优先和基于进程长度的抢占式调度算法都将无法使用。而多级反馈队列调度算法则不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下所述。

    • (1) 应设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。

    • (2)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。

    • (3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。

       

       

      批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法?

      批处理系统常用调度算法:
      ①、先来先服务:FCFS
      ②、最短作业优先
      ③、最短剩余时间优先
      ④、响应比最高者优先

      分时系统调度算法:
      ①、轮转调度
      ②、优先级调度
      ③、多级队列调度
      ④、彩票调度

      实时系统调度算法:
      ①、单比率调度
      ②、限期调度
      ③、最少裕度法

    展开全文
  • 系统中进程调度策略有几种

    千次阅读 2013-11-29 18:40:46
    1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务 3,SCHED_RR实时调度策略,时间片轮转 实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定...
    linux内核的三种调度方法:
    
    1,SCHED_OTHER 分时调度策略,
    
    2,SCHED_FIFO实时调度策略,先到先服务
    
    3,SCHED_RR实时调度策略,时间片轮转
    
    实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾使用了cpu最少的进程将会得到优先调度。
    
    SHCED_RR和SCHED_FIFO的不同:
    
    当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾确保了任何具备相同优先级的RR任务的调度公平。
    展开全文
  • Ubuntu调整CPU程序调度几种方法

    千次阅读 2020-01-06 14:38:46
    CPU调度策略 调度策略 1、FIFO队列:新增一个进程时,插入队列尾部,CPU每次从就绪队列头部获取进程,要么执行完切换到下一个进程,要么遇到IO交互,切换到下一个进程,将当前进程加入等待队列,直到IO返回再加入...
  • 一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上 #taskset-p, 设定一个已存在的pid,而不是重新开启一个新任务-c, 指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。 1,...
  • 几种常见的操作系统调度策略

    千次阅读 2018-07-08 21:41:50
    先来先服务调度算法先来先服务(FCFS)调度算法是一最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,...
  • 几种常用的操作系统调度策略

    万次阅读 2017-08-16 17:23:04
    先来先服务(FCFS)调度算法是一最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为...
  • CPU调度

    千次阅读 2018-11-10 13:04:00
    CPU调度 引入了线程,对于支持它们的操作系统,是内核级的线程被操作系统调度,而不是进程。不过,术语线程调度或进程调度常常被交替使用。在讨论普通调度概念时使用进程调度,特别指定为线程概念时使用线程调度。...
  • 操作系统-CPU调度

    千次阅读 2017-07-11 17:20:07
    首先理解一下CPU的基本概念,CPU调度就是每次当CPU空闲时,操作系统按照一定的策略从就绪队列中选择一个进程来执行。这种策略,就是cpu调度的算法的选择。 总体来说,CPU调度遵循以下原则: 总原则:资源高效、...
  • Linux内核线程优先级的三种调度策略

    千次阅读 2020-06-27 22:28:12
    Linux内核三种调度策略: (1).SCHED_OTHER 分时调度策略 (2).SCHED_FIFO 实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到更高优先级任务到达或自己放弃。 (3).SCHED_RR实 时调度策略,时间片...
  • Kubernetes pod调度及精准调度策略

    万次阅读 2020-07-14 12:58:26
    deployment或rc自动调度: 由master的Scheduler经过一系列的算法得出得分最高的节点。 NodeSelector定向调度 apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-...
  • 操作系统:CPU调度

    2017-09-07 19:00:08
    这就是我今天要总结的CPU调度了在正式讨论CPU调度策略之前,我们先来看看CPU调度我们会考虑哪个方面的因素: turnaround时间(周转时间):任务完成时间 - 任务到达时间 响应时间:任务开始运行时间 - 任
  • Linux进程的调度策略

    千次阅读 2018-07-25 16:50:00
    Linux进程的调度策略分为以下几种:   #define SCHED_OTHER 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_BATCH 3 #define SCHED_IDLE 5   可以把它们分为两大类: 实时进程 - SCHED_FIFO...
  • 操作系统进程调度,优先级反转,调度策略,linux进程调度策略
  • 优先级驱动意味着,我们可以为每个线程分配一个优先级,它将可以根据优先级调度策略获取CPU资源。如果一个低优先级线程和一个高优先级线程同时像获取CPU使用权,那么高优先级线程将会运行。抢占式意思是说,如果一个...
  • k8s容器调度策略

    千次阅读 2017-01-16 11:46:38
    当新增一个容器时,集群会在可用的集群... 节点剩余的CPU,内存资源不足以运行容器的; c. 容器运行时占用的宿主机端口出现冲突的; d. 按照节点选择label不匹配的; 在排除不符合的节idanzhihou,剩下的节点均为
  • 进程调度策略

    千次阅读 2014-12-02 00:54:11
    在操作系统中,几乎所有进程的I/O请求或计算都是交替突发的。例如一个进程从磁盘读取了一段数据,然后计算一段时间,将计算得到的数据重新写入...随着CPU变得越来越快,更多的进程倾向于I/O密集型。 1、调度时机  
  • 操作系统概念学习笔记 10 CPU调度

    千次阅读 2015-06-12 11:06:28
    操作系统概念学习笔记 10CPU调度 多道程序操作系统的基础。通过在进程之间切换CPU,操作系统可以提高计算机的吞吐率。对于单处理器系统,每次只允许一个进程运行:任何其他进程必须等待,直到CPU空闲能被调度为止。...
  • linux进程调度策略详解

    千次阅读 2019-03-14 11:53:41
    实时进程的优先级都高于普通进程,除此之外,它们的调度策略也有所不同。 实时进程 硬实时 实时,原本的涵义是“给定的操作一定要在确定的时间内完成”。重点并不在于操作一定要处理得多快,而是时间要可控...
  • 操作系统原理第五章:CPU调度

    千次阅读 2020-03-15 22:48:16
    目录1 CPU调度基本概念1.1 基本概念1.2 CPU调度的时机1.3 CPU调度方案2 CPU调度算法2.1 ...CPU调度就是就从就绪队列中选择一个进程来分配CPU的过程,进行CPU调度的原因是为了实现多道,使得CPU更高的利用率,之所...
  • YARN资源调度策略

    千次阅读 2017-05-10 21:35:52
    YARN资源调度策略 发表于 2015-04-30 | 公司活动写的一篇文章。这里也发下吧。 介绍下YARN中资源调度相关概念和算法。以hadoop 2.2.0为准。 YARN虽然是从MapReduce发展而来,但其实更偏底层,它在硬件...
  • QNX操作系统优先级以及调度策略

    千次阅读 2013-07-14 21:12:14
    优先级驱动意味着,我们可以为每个线程分配一个优先级,它将可以根据优先级调度策略获取CPU资源。如果一个低优先级线程和一个高优先级线程同时像获取CPU使用权,那么高优先级线程将会运行。抢占式意思是说,如果一个...
  • CPU调度与死锁

    千次阅读 2015-12-05 16:46:57
    进程调度:系统按照某种算法,动态的把处理机分配给就绪队列中的进程或线程,使之运行。 死锁:在多个进程并发执行中,某进程申请的资源被其他等待进程占有,如果该等待进程永远无法改变其等待状态,这种情况称之为...
  • Xen CPU 调度算法对比

    千次阅读 2010-01-11 23:15:00
    Xen的CPU调度算法主要3,BVT(borrowed virtual time)调度算法、SEDF(simple earliest deadline first)调度算法、以及Credit调度算法。 一、BVT调度算法1.BVT调度算法的基本原理BVT算法由 KermethJ.Duda于...
  • 操作系统之CPU调度

    千次阅读 2017-05-30 20:15:48
    这种分布助于选择合适的CPU调度算法。 CPU程序调度 每当CPU空闲时,操作系统就必须从就绪队列中选择一个进程来执行。进程选择由 短期调度程序(short-term scheduler) 或 CPU调度程序 执行。调度程序从内存...
  • 学习笔记--多道程序的CPU调度算法

    千次阅读 2015-09-16 16:51:06
    (1)何时调度: ① 在创建一个新进程时,需要决定是运行子进程还是父进程 ② 在一个进程退出时,必须做出调度决策 ...① CPU使用率:要求40%到90% ② 吞吐量:一个时间单元内所完成进程的
  • 几种操作系统调度算法

    千次阅读 2018-10-23 16:53:38
    先来先服务(FCFS)调度算法是一最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们...
  • 浅析Java的线程调度策略

    千次阅读 2019-03-13 23:52:34
    作者:杨兴强 原文来源:开点工作室(ID:kaidiancs) ...它按照什么样的策略调度Java线程?本文将带着这样的问题,探讨Java线程的调度机制。 程序的问题还是先从代码说起吧,下面是一个广泛...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,209
精华内容 25,683
关键字:

cpu调度策略有几种