gpt4 book ai didi

linux - Linux 内核中的上下文切换时间

转载 作者:太空狗 更新时间:2023-10-29 11:11:55 25 4
gpt4 key购买 nike

在 Linux 内核中,当处理器上下文从一个线程切换到另一个线程时,寄存器的状态将保存到 PCB 中,并进行更多的簿记以确保可以再次加载准确的状态。

从内核内存中保存和加载寄存器的整个过程可能需要一些 CPU 周期。那么这个时间是属于用户 CPU/系统 CPU 还是其他地方

最佳答案

可以这样想:

  • 任务正在用户空间中运行,但发生某些事情(系统调用、异常、IRQ 等)导致任务切换到内核空间

  • 内核计算“在用户空间中花费的时间”(now - last_time)并更新任务的“用户时间”计数器,并为以后设置“上次时间”( last_time = now).

  • 内核做一些事情(最初取决于导致切换到内核空间的原因),并且在做一些事情时它可能会或可能不会决定进行一个或多个任务切换。当每个任务切换发生时,内核会计算出前一个任务在内核中花费了多少时间(now - last time),并将其添加到任务的“系统时间”中,并为以后设置“last time”(last_time = 现在)

  • 内核最终决定当前运行的任务应该返回用户空间,并且在此之前它会立即对任务的系统时间进行最终更新(now - last time again)并为以后再次设置“上次”(last_time = now),以便内核稍后可以计算出“在用户空间中花费的时间”。

  • 任务切换回用户空间后,回到上面的第一步,再做一遍。

关于linux - Linux 内核中的上下文切换时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52768798/

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