为什么对调度程序而言区分cpu约束程序和io约束程序很重要

为什么对调度程序而言区分cpu约束程序和io约束程序很重要,第1张

1、中央处理器突发时间是指CPU从接到命令到开始处理命令所需时间Burst time is an assumption of how long a process requires the cpu between I/O waits。

2、CPU约束程序:CPU限制意味着进程正在使用所有可用的CPU周期,并不能跑得更快,因为没有提供更多的CPU周期。

扩展资料:

性能衡量指标:

影响其性能的指标主要有主频、 CPU的位数以及CPU的缓存指令集。所谓CPU的主频,指的就是时钟频率,它直接的决定了CPU的性能,因此要想CPU的性能得到很好地提高,提高CPU的主频是一个很好地途径。

而CPU的位数指的就是处理器能够一次性计算的浮点数的位数,通常情况下,CPU的位数越高,CPU 进行运算时候的速度就会变得越快。现在CPU的位数一般为32位或者64位。以前人们使用的计算机都是32位系统。

短期调度程序: 也称为CPU调度程序

作用:从准备执行的进程中选择进程分配到CPU

因为短期调度程序经常要为CPU选择进程,所以它的执行频率很快

长期调度程序:

作用: 将进程从大容量存储设备的缓冲池中选择进程,加载到内存

长期调度控制内存中进程数量

只有在进程离开系统时,才需要长期调度程序的调度

在新进程创建之间,可能间隔几分钟,所以长期调度程序执行并不频繁。

长期调度程序是认真选择的,他将I/O密集型进程和CPU密集型进程合理组合。

解释如下:

大多数进程可分分为I/O密集型或CPU密集。前者执行I/O比执行计算话费时间多,后者执行计算比I/O时间多。

如果调度的进程大都是I/O密集型的,那么就绪队列总是空的,短期调度程序没事可做

如果大多数调度进程是CPU密集型的,那么I/O等待队列总是为空,从而设备没有得到利用,系统会不平衡。

长期调度将这两用类型进程组合,使性能更佳

中期调度程序:

分时 *** 作系统,可能会引入额外的中期调度程序

中期调度程序的核心思想是将进程从内存(或CPU竞争)中取出,从而降低内存中进程数据(多道程序程度)。之后进程重新调入内存,并从中断处继续执行。通过中期调度程序,进程可以 换出 ,并在后来 换入 。

实现方法进程与指定cpu绑定

:SetProcessAffinityMask(GetCurrentProcess(),dwMask);

线程与指定cpu绑定:

SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001)

代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2

,以此类推。

设置之前最好判断一下系统有几个CPU:

SYSTEM_INFOSystemInfo;

GetSystemInfo(&SystemInfo);CPU个数:SystemInfodwNumberOfProcessors

当前启用的CPU序号:

SystemInfodwActiveProcessorMask

,Mask representing the set of processors configured into the system Bit 0 is processor 0;

bit 31 is processor 31

CPU亲缘性介绍

按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行 *** 作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。

有一种新的计算机结构,称为NUMA(非统一内存访问),在该结构中,计算机包含若干块插件板,每个插 件板上有4个CPU和它自己的内存区。

当CPU访问的内存是它自己的插件板上的内存时,NUMA系统运行的性能最好。如果CPU需要访问位于另一个插件板上的内 存时,就会产生巨大的性能降低。在这样的环境中,就需要限制来自一个进程中的线程在共享同一个插件版的CPU上运行。

为了适应这种计算机结构的需要,Windows允许你设置进程和线程的亲缘性。换句话说,你可以控制哪个CPU能够运行某些线程。这称为硬亲缘性。请注意,子进程可以继承进程的亲缘性。

注意:(1)无论计算机中实际拥有多少个CPU,Windows98及以前系统只使用一个CPU,上述API不被支持。

(2)在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在 各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。

应用场景举例:

将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行

。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。

分时。

计算机考试等级考试资料中,明确写道:为了支持多任务处理, *** 作系统的处理器调度程序使用分时技术把CPU分配给各个任务,使多个任务可以"同时"执行。

分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。

以上就是关于为什么对调度程序而言区分cpu约束程序和io约束程序很重要全部的内容,包括:为什么对调度程序而言区分cpu约束程序和io约束程序很重要、长期调度-中期调度-短期调度的差异、如何设置进程(线程)在指定的CPU上运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10215521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存