我认为一个核心负责处理单个线程。因此,当有人说一个进程占用了 75% 的资源时,这意味着什么?那是记忆吗?计算能力?
一个进程使用了 75% 的 CPU 资源是什么意思?
我认为一个核心负责处理单个线程。因此,当有人说一个进程占用了 75% 的资源时,这意味着什么?那是记忆吗?计算能力?
让我们打个比方:想象一个双手灵巧的名人坐在桌前签名。
以下是系统的规格(整个签名活动):
名人(CPU)正在签名(做工作)。
有一排(队列)的粉丝(流程)上来请他签(做工作)照片、签名书、衬衫、身体等(记忆、文件等)
名人有并且可以用他的双手(核心)书写。
一些粉丝是 VIP(更高优先级),因此可以提前排队并在桌子上停留更长时间。
有的是为自己排队的普通粉丝(单线程),有的是经理这样的“超级用户”,还有一些业务员(多线程)有几个助手(线程)站在宣传资料上,以便他们一次可以完成更多的工作(让他用双手而不是一只手签名)。
名人的经理(调度员)站在桌子旁边,决定名人何时在粉丝身上花费了足够的时间,并且必须转移到下一位。
现在让我们检查可能发生的不同类型的场景。
如果线路很短,那么他的工作速度很低(CPU 使用率低)并且不会变得很热,因为他没有以最高速度移动。
如果线路变长,他必须更快地签署文件,以达到他能够达到的最大速度,以跟上(高 CPU 使用率)并因额外的工作而变得炙手可热。
如果一个普通的粉丝走到桌子旁,他会用一只手在照片上签名,然后粉丝就离开了。如果粉丝想要更多的签名,那么他会尝试容纳,但如果队伍太长,他会道歉,粉丝必须走到队伍的后面等待另一个回合。
如果一个超级用户上桌,这和普通粉丝的情况完全一样,但是因为他是用双手签名,所以他可以做更多的事情,而不必将业务人员送到后面线。
如果一个普通的粉丝到达签名会,他们必须排队等待轮到他们。
如果 VIP 到达签名会,他们可以在普通球迷之前切入,并在其他 VIP 中靠近桌子等待。当他们到达那里时,他们也可能在餐桌上停留更长时间。
如果一个“低级/优先级的人”(名人的助手?员工?路人?)到达签名会,他们必须排队,但在他们到达时让普通粉丝在他们前面。他们还必须更快地冲到队伍的后面,以便更高优先级的人可以获得他们的签名。
那么,在您使用 75% CPU 的进程的给定场景中会发生什么?
好吧,想象一下名人工作室的营销主管带着两个助手到达签名会,拿到一大堆签名照片,以便在宣传活动中分发。执行程序是多线程和高优先级的。
队伍不会太长,所以名人正在慢慢地签名。
行政人员将两名助手派到队伍中,他们向前切入队伍的最前面,并迅速到达餐桌旁。他们把一叠照片放在桌子上,名人立即开始用双手签名。
他加快了签约速度,以适应必须完成的大量重要工作,但由于排队时间不太长,他只能达到体能(他的最大速度)的 75%。
助理们在桌子上待了很长一段时间,因为他们很重要,但最终经理告诉他们重新排队,以便其他一些等待一段时间的粉丝轮到他们。
一个核心只能处理一个任务是正确的,这个任务就是你的操作系统。它占用了整个 CPU、所有内核,但并未真正使用其所有功能。这个未使用的时间被分配给操作系统子进程。
这里有一种叫做调度器的东西发挥作用,调度器如何为不同的运行进程分配处理能力有不同的方法。
首先考虑将 100% CPU 分成几个同样大的时间片。现在调度程序为每个进程分配一个或多个处理它的切片。
每个任务获得多少切片取决于任务实际使用最后一个切片的数量以及它必须具有的反应性。如果您有多个核心,则每个核心都有自己的一组时间片来分配给不同的进程。这称为循环调度(最简单的调度程序之一)。
实际上,这要复杂得多,因为进程必须对诸如键盘按下(硬件中断)或程序故障(软件中断)之类的实时事件做出反应。但基本上这就是它的工作原理以及时间百分比的测量方式。