在操作系统中,抖动与内存管理有关。为什么会发生颠簸?我们该如何预防呢?
我查了维基百科(但我需要一些简单的理解)。
在实现虚拟内存空间的操作系统中,程序从地址空间分配内存,该地址空间可能比系统拥有的实际 RAM 量大得多。操作系统负责决定哪些程序“内存”在实际 RAM 中。它需要一个地方来存放“外出”的东西。这就是所谓的“交换空间”,因为操作系统会根据需要交换东西。当这种交换活动发生时,它是 CPU 时间的主要消耗者,那么您实际上是在颠簸。您可以通过运行更少的程序、编写更有效地使用内存的程序、向系统添加 RAM 或者甚至增加交换大小来防止它发生。
当请求的内存访问(来自虚拟地址空间)没有映射到 RAM 中的内容时,就会发生页面错误。然后必须将一个页面从 RAM 发送到交换,以便可以将请求的新页面从交换带到 RAM。正如您可能想象的那样,用于读取 RAM 的 2 个磁盘 I/O 的性能往往很差。
Thrashing 这是我们的 CPU 执行“生产性”工作较少而“交换”更多的状态。CPU 忙于交换页面,以至于无法对用户程序做出所需的响应。 为什么会发生 在我们的系统中 当我们的内存中有太多页面并且每个页面引用另一个页面时,就会发生抖动。实际内存的容量会缩短以容纳所有页面,因此它使用“虚拟内存”。当执行中的每个页面需要当前不在实际内存 (RAM) 中的页面时,它会将一些页面放在虚拟内存上并调整 RAM 上所需的页面。如果 CPU 忙于执行此任务,则会发生抖动。
我知道很久以前就有人问过这个问题,但我只是想与他人分享信息。
术语抖动实际上与虚拟内存有关,操作系统使用虚拟内存来为进程提供额外的内存或空间。术语抖动实际上意味着什么,当进程准备好加载到内存中时,只有少数或部分进程的页面(部分)被加载到实际的物理内存中,其余的都在交换中-space(虚拟内存或磁盘)。
现在,如果进程需要执行的页面没有加载到内存中,它会生成页面错误并要求操作系统替换该页面。在这里,该过程恢复其执行。
有时,进程再次需要由操作系统替换的页面,因此它再次要求操作系统将其加载到内存中,替换其他页面等等。由于进程没有执行,因此CPU利用率为0,但是磁盘读写处于峰值。
我们的操作系统的设计方式是,当 CPU 利用率降低时,它会在内存中启动另一个进程。下一个进程现在必须等待,因为第一个进程很忙。同样,由于没有使用 CPU 或者它为 0(在我们的示例中),操作系统启动了另一个进程,并且发生了同样的事情。
因此,当进程忙于读写(交换页面)时,CPU 利用率降至最低水平。这叫甩锅!
逻辑地址是由 CPU 生成的,实际上不是真正的内存位置,而是一个进程认为它是实际的内存位置。一个完整的进程被划分为不同的部分,这些部分存储在逻辑内存的页面中,但只有子部分或只有一些页面被分配了当时需要执行的实际内存,而其他页面驻留在逻辑内存中并且没有分配物理地址。现在,如果需要加载任何其他页面并且没有足够的帧来分配它,则会发生中断,导致页面错误,并且需要替换算法来从帧中删除一些页面并加载所需的当前页面。
现在假设没有足够的框架来满足所有需要加载的页面的要求。然后删除的框架将再次要求加载,并再次发生页面错误。这是循环的。同时,由于进程无法执行,CPU 利用率会很低,调度程序会在 CPU 中加载更多进程,从而更加恶化场景。
这个过程被称为抖动。当没有为进程分配足够多的帧而不是所需的帧时,通常会发生抖动。
防止颠簸的方法:
在虚拟内存系统中,抖动是内存和硬盘之间数据页的过度交换,导致应用程序响应更慢。虚拟内存功能跟踪页面使用情况,并尽可能将常用页面保留在内存中。
抖动是我们的 CPU 执行较少“生产性”工作而“交换”更多的状态。CPU 忙于交换页面,以至于无法对用户程序做出所需的响应。为什么会发生:在我们的系统中,当我们的内存中有太多页面时,就会发生抖动,并且每个页面都引用另一个页面。实际内存的容量会缩短以容纳所有页面,因此它使用“虚拟内存”。当执行中的每个页面需要当前不在实际内存 (RAM) 中的页面时,它会将一些页面放置在虚拟内存上并调整 RAM 上所需的页面。如果 CPU 忙于执行此任务,则会发生抖动。要解决抖动问题,您可以执行以下任何建议: *增加计算机中的 RAM 量。*减少计算机上正在运行的程序数量。
操作系统使用虚拟内存的概念在主内存已满且没有空间为传入进程提供空间时为进程提供内存。virtual memory
这种用作替代内存的机制是抽象的,用户无法获得知道后面发生了什么。在用户看来,他/她刚刚执行的新进程在 main memory
.
因此,为了在主内存中容纳传入进程,需要将驻留在主内存中的空闲进程移动到虚拟内存。这种从主内存到虚拟内存的移动发生在page fault
发生时。
现在开始颠簸。
如果operating system
使用这种page replacement algo
很有可能page fault
发生的情况,那么大量的 CPU 周期将浪费在和之间来回交换页面 main memory
。 virtual memory
这会抑制 CPU 性能。由于发生大的情况而导致 CPU 性能下降的过程页面错误数被称为 Thrashing.
内存抖动是内存分配多于物理内存并且在系统中不可用时出现的问题。要知道什么是抖动,您必须首先了解交换和页面错误。因此,让我们从这些概念开始:页面错误和交换:- 当请求的内存访问(来自虚拟地址空间)未映射到 RAM 中的内容时,就会发生页面错误。然后必须将一个页面从 RAM 发送到交换,以便可以将请求的新页面从交换带到 RAM。这会产生 2 个磁盘 I/O。现在您可能知道磁盘 I/O 与内存访问相比非常慢。
要了解什么是内存抖动,请参阅以下链接:
http://www.firmcodes.com/memory-thrashing-in-operating-system/
如果你想要什么是正确的..
如果 CPU 使用率为 0(空闲),则这种情况称为抖动。
它会在死锁情况发生时发生。所以那时没有资源(如打印机等)将使用 CPU,因此它将处于空闲状态,因此我们可以将这种情况称为 Thrashing。
这就是关于Thrashing :)