gpt4 book ai didi

process - 哪个需要更长的时间?在用户模式和内核模式之间切换还是在两个进程之间切换?

转载 作者:行者123 更新时间:2023-12-04 18:46:02 28 4
gpt4 key购买 nike

哪个需要更长的时间?

在用户和内核模式之间切换(或)在两个进程之间切换?

也请说明原因。

编辑:我知道每当有上下文切换时,调度程序需要一些时间将前一个进程的状态保存在其 PCB 中,然后从其对应的 PCB 重新加载下一个进程。为了在用户模式和内核模式之间切换,我知道必须更改模式位。这不是全部,还是还有更多?

最佳答案

按照天哪的命令在进程之间切换(假设您实际上是切换,而不是并行运行它们)。

从用户空间到内核空间的捕获过去是通过处理器中断完成的。大约在 2005 年(不记得内核版本),在邮件列表上讨论之后有人发现陷阱是 较慢 (绝对测量!)在高端至强处理器上而不是在早期的奔腾 II 或 III(再次,我的内存)上,他们用新的 CPU 指令 sysenter 实现了它。 (我认为自 Pentium Pro 以来实际上已经存在)。这是在每个进程的虚拟动态共享对象 (vdso) 页面中完成的(cat/proc/pid/maps 找到它)IIRC。

因此,如今,内核陷阱基本上只是几个 cpu 指令,因此与使用中断时的十分之一或数十万(这在现代 CPU 上确实很慢)相比,周期相当少。

进程之间的上下文切换很重。这意味着将所有处理器状态(寄存器等)存储到 RAM(实际上在用户进程空间中的神奇内存位置,猜猜在哪里!)过程。从上次运行开始,它(可能)在 cpu 缓存中仍然没有任何内容,因此每次内存读取都将是一次缓存未命中,并且需要从 RAM 中读取。这是相当缓慢的。当我在大学时,我“发明了”(嗯,我确实提出了这个想法,知道 CPU 中有很多染料,但如果它持续供电就不够酷)一个无限大小但没有供电的缓存在 CPU 中未使用时(仅用于上下文切换,即),并在 Simics 中实现。实现了对我在 Linux 中称为 CARD(上下文切换事件,运行时昏昏欲睡)的这种神奇缓存的支持,并进行了大量基准测试。我发现它可以将具有大量繁重进程共享同一内核的 Linux 机器加速到大约 5%。不过,这是在相对较短(低延迟)的处理时间片中进行的。

反正。上下文切换仍然非常繁重,而内核陷阱基本上是免费的。

回答每个进程在用户空间中的哪个内存位置:

在地址零。是的,空指针!无论如何,您无法从用户空间读取整个页面:) 这是在 2005 年,但现在可能是一样的,除非 CPU 状态信息增长到大于页面大小,在这种情况下,他们可能会更改实现.

关于process - 哪个需要更长的时间?在用户模式和内核模式之间切换还是在两个进程之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204944/

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