gpt4 book ai didi

linux - 从处理器的角度进行进程调度

转载 作者:可可西里 更新时间:2023-11-01 11:43:37 27 4
gpt4 key购买 nike

我明白调度是由内核完成的。让我们假设一个Linux 中的进程 (P1) 当前正在处理器上执行。由于当前进程对时间片一无所知并且内核当前不在处理器上执行,内核如何调度下一个进程执行?

是否有某种中断告诉处理器切换到执行内核或为此目的的任何其他机制?

最佳答案

简而言之,它是一个将控制权交还给内核的中断。中断可能由于任何原因出现。大多数情况下,内核由于定时器中断而获得控制权,或者按键中断可能会唤醒内核。中断通知与外围系统或几乎任何改变系统状态的 IO 完成可能唤醒内核。

关于中断的更多信息:

中断本身分为上半部分和下半部分。 Bottom Halves 用于延迟中断上下文的工作。

上半部分: 在禁用中断的情况下运行,因此应该超快,通常尽快放弃 CPU

1) stores interrupt state flag and disables the interrupts(reset
some pin on the processor),
2) communicates with the hardware, stores state information,
delegates remaining responsibility to bottom-half,
3) restores the interrupt state flag and enables the interrupt((set
some pin on the processor).

下半部分: 处理延迟的工作(上半部分委派的工作)在启用中断的情况下运行,因此可能需要一段时间才能完成。

两种机制用于实现下半部分处理。

1) Tasklets    
2) Work queues

.

If timer is the interrupt to switch back to kernel, is the interrupt a hardware interrupt???

我们讨论的上下文中感兴趣的定时器中断是硬件定时器中断,

在内核中,定时器中断一词可能表示(依赖于体系结构的)硬件定时器中断或软件定时器中断。

阅读this简要概述。

更多关于 timers

记住“定时器”是一个高级话题,很难理解。

is the interrupt a hardware interrupt??? if it is a hardware interrupt, what is the frequency of the timer?

阅读Chapter 10. Timers and Time Management

if the interval of the timer is shorter than time slice, will kernel give the CPU back the same process, which was running early?

这取决于许多因素,例如:正在使用的调度程序、系统负载、进程优先级等等。最受欢迎CFS并不真正依赖于抢占时间片的概念!CFS 拾取的下一个合适的进程将获得 CPU 时间。

计时器滴答、时间片和上下文切换之间的关系并不是那么简单。

每个进程都有自己的(动态计算的)时间片。内核跟踪进程使用的时间片。

在 SMP 上,CPU 特定的事件(例如监视当前正在运行的进程的执行时间)是由本地 APIC 计时器引发的中断完成的。本地 APIC 计时器仅向其处理器发送中断。

然而,默认的时间片是在include/linux/sched/rt.h中定义的

阅读this .

关于linux - 从处理器的角度进行进程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com