Performance 在内核模式下运行的进程比在用户模式下运行的进程快吗?

Performance 在内核模式下运行的进程比在用户模式下运行的进程快吗?,performance,Performance,我读过这篇文章,想知道进程/程序在根/内核模式下是否运行得更快。 目前我认为肯定是这样的,因为在cpu执行期间没有经过那些操作系统环(用户到内核环)。我说的对吗?这对环转换是正确的,是的。但典型程序中的大多数CPU时间并没有花在环转换上。如果一个程序花费10%,这是一个很大的数目,它最多可以快10% 编写时:while(true)不会转换,您不会观察到任何性能差异 更一般地说,CPU环、虚拟内存和虚拟化带来的保护是以性能为代价的安全特性。成本与您使用这些功能的多少成正比。微软的一项研究曾经发现,

我读过这篇文章,想知道进程/程序在根/内核模式下是否运行得更快。
目前我认为肯定是这样的,因为在cpu执行期间没有经过那些操作系统环(用户到内核环)。我说的对吗?

这对环转换是正确的,是的。但典型程序中的大多数CPU时间并没有花在环转换上。如果一个程序花费10%,这是一个很大的数目,它最多可以快10%

编写时:
while(true)不会转换,您不会观察到任何性能差异

更一般地说,CPU环、虚拟内存和虚拟化带来的保护是以性能为代价的安全特性。成本与您使用这些功能的多少成正比。微软的一项研究曾经发现,如果我没记错的话,虚拟内存通常要花费性能的10-20%


内核模式内存是虚拟的,就像用户模式内存一样(至少在当前的操作系统中是这样)。

这对于环转换是正确的。但典型程序中的大多数CPU时间并没有花在环转换上。如果一个程序花费10%,这是一个很大的数目,它最多可以快10%

编写时:
while(true)不会转换,您不会观察到任何性能差异

更一般地说,CPU环、虚拟内存和虚拟化带来的保护是以性能为代价的安全特性。成本与您使用这些功能的多少成正比。微软的一项研究曾经发现,如果我没记错的话,虚拟内存通常要花费性能的10-20%


内核模式内存是虚拟的,就像用户模式内存一样(至少在当前的操作系统中是这样)。

这对于环转换是正确的。但典型程序中的大多数CPU时间并没有花在环转换上。如果一个程序花费10%,这是一个很大的数目,它最多可以快10%

编写时:
while(true)不会转换,您不会观察到任何性能差异

更一般地说,CPU环、虚拟内存和虚拟化带来的保护是以性能为代价的安全特性。成本与您使用这些功能的多少成正比。微软的一项研究曾经发现,如果我没记错的话,虚拟内存通常要花费性能的10-20%


内核模式内存是虚拟的,就像用户模式内存一样(至少在当前的操作系统中是这样)。

这对于环转换是正确的。但典型程序中的大多数CPU时间并没有花在环转换上。如果一个程序花费10%,这是一个很大的数目,它最多可以快10%

编写时:
while(true)不会转换,您不会观察到任何性能差异

更一般地说,CPU环、虚拟内存和虚拟化带来的保护是以性能为代价的安全特性。成本与您使用这些功能的多少成正比。微软的一项研究曾经发现,如果我没记错的话,虚拟内存通常要花费性能的10-20%



内核模式内存是虚拟的,就像用户模式内存一样(至少在当前的操作系统中)。

需要明确的是,内核模式下的内存访问速度并不比用户模式下快。内核地址是虚拟的。显然,内核的内存管理代码需要跟踪正在使用的物理页地址,并实际构建页表。IDK,如果x86上的内核空间可能是非虚拟的(即,进入操作系统时禁用分页,离开时重新启用),但据我所知,没有操作系统是这样工作的。在虚拟内存管理中浪费大量时间的应用程序上,使用巨大的页面可以在不丢失虚拟内存保护的情况下大大加快速度。我们现在有一种涉及投机计算的漏洞,称为“幽灵”漏洞,而补丁程序通过限制这种漏洞的作用来降低速度。但是如果你在内核模式下运行,你会不会得到推测计算的全部好处?@sudo我当然不是这方面的专家,但我明白以下几点:即使有了所有补丁,CPU仍然在推测,但是当有上下文切换时,内核会执行额外的刷新操作。因此,如果(几乎)没有上下文切换,则spectre保护可能没有性能成本。如果存在切换,则操作系统不会应用这些保护,前提是对于该术语的某些定义,该切换位于相同的“保护域”(例如,同一用户)。因此,同样的进程交换机无论如何都不会受到保护。但我相信,在内核模式下运行任何东西都可以节省最大的成本。但不要相信我在这里说的;-)需要明确的是,内核模式下的内存访问速度并不比用户模式下快。内核地址是虚拟的。显然,内核的内存管理代码需要跟踪正在使用的物理页地址,并实际构建页表。IDK,如果x86上的内核空间可能是非虚拟的(即,进入操作系统时禁用分页,离开时重新启用),但据我所知,没有操作系统是这样工作的。在虚拟内存管理中浪费大量时间的应用程序上,使用巨大的页面可以在不丢失虚拟内存保护的情况下大大加快速度。我们现在有一种涉及投机计算的漏洞,称为“幽灵”漏洞,而补丁程序通过限制这种漏洞的作用来降低速度。但是如果你在内核模式下运行,你会不会得到推测计算的全部好处?@sudo我当然不是这方面的专家,但我明白以下几点:即使有了所有补丁,CPU仍然在推测,但是当有上下文切换时,内核会执行额外的刷新操作。因此,如果(几乎)没有上下文切换,幽灵保护可能就没有性能成本。如果有切换,那么保护就没有性能成本