什么是捶打?它为什么会发生?

时间:2013-09-26 15:06:18

标签: memory-management operating-system

在操作系统中,颠簸与内存管理有关。为什么会发生颠簸? 我们怎样才能防止它呢?

我检查了维基百科(但我需要一些简单的理解)。

9 个答案:

答案 0 :(得分:36)

在实现虚拟内存空间的操作系统中,程序从地址空间分配内存,该地址空间可能远大于系统拥有的实际RAM量。 OS负责决定哪些程序“内存”在实际RAM中。它需要一个地方来保持它们“外出”的东西。这就是所谓的“交换空间”,因为操作系统根据需要交换内容。当这种交换活动发生时,是CPU时间的主要消费者,那么你就是在有效地捶打。您可以通过运行更少的程序,编写更有效地使用内存的程序,向系统添加RAM,甚至可以通过增加交换大小来阻止它。

当请求的内存访问(来自虚拟地址空间)未映射到RAM中的某些内容时,会发生页面错误。然后必须从RAM将页面发送到交换,以便可以将所请求的新页面从交换到RAM。正如您可能想象的那样,RAM读取的2个磁盘I / O往往性能很差。

答案 1 :(得分:11)

<强>抖动 在这种状态下,我们的CPU可以更少地执行“高效”工作并“更换”。 CPU忙于交换页面,以至于无法根据需要响应用户程序。 为什么会发生 在我们的系统中,当我们的内存中有太多页面时,就会发生Thrashing,并且每个页面都会引用另一个页面。真实内存缩短了包含所有页面的容量,因此它使用“虚拟内存”。当执行中的每个页面都要求当前不在实际内存(RAM)中的页面时,它会在虚拟内存上放置一些页面并在RAM上调整所需的页面。如果CPU忙于执行此任务,则会发生颠簸。

答案 2 :(得分:6)

我知道很久以前就已经提出过这个问题了,但我只想与其他人分享信息。

术语颠簸实际上与虚拟内存有关,操作系统使用虚拟内存来为进程提供额外的内存或空间。术语颠簸实际意味着什么,当进程准备加载到内存中时,只有少数或一些页面(部分)的进程被加载到实际的物理内存中,其余的都在交换中-space(虚拟内存或磁盘)。

现在,如果进程需要执行的页面未加载到内存中,则会生成页面错误并要求操作系统替换页面。这个过程恢复执行。

有些时候,该过程再次要求由操作系统替换的页面,因此它再次要求操作系统将其加载到内存中,替换其他页面等等。由于进程没有执行,因此CPU利用率为0,但磁盘读写处于峰值。

我们的操作系统的设计方式是,当CPU利用率降低时,它会启动内存中的另一个进程。下一个进程必须等待,因为第一个进程正忙。再次,因为CPU没有被使用或它是0(在我们的例子中),操作系统启动另一个进程,同样的事情发生。

因此,CPU利用率降低到极限最低水平,而进程正在忙于读写(交换页面)。这叫做颠簸!

答案 3 :(得分:2)

逻辑地址由CPU生成,实际上不是真正的内存位置,但进程认为它是实际的内存位置。 一个完整的过程被分成不同的部分,这些部分存储在逻辑存储器的页面中,但只有子部分或只有一些页面被分配用于执行的实际存储器,这些是在那个时间点所需的,而其他页面则存在于逻辑存储器中而未被分配物理地址。现在,如果需要加载任何其他页面并且没有足够的帧来分配它,则会发生中断导致页面错误,需要替换算法从帧中删除一些页面并加载所需的当前页面。

现在假设没有足够的帧来满足所有需要加载的页面的要求。然后删除的帧将再次要求加载并再次发生页面错误。这循环。同时,由于进程无法执行,CPU利用率会很低,调度程序会在CPU中加载更多进程,这会进一步降低场景。

这个过程被称为颠簸。当没有为进程分配足够的帧而不是需要时,通常会发生抖动。

防止颠簸的方法:

  1. 指示中期调度程序将部分进程替换为从崩溃中恢复
  2. 指示调度员在阈值之后不加载更多进程

答案 4 :(得分:0)

在虚拟内存系统中,颠簸是内存和硬盘之间数据页面的过度交换,导致应用程序响应速度变慢。虚拟内存功能可以跟踪页面使用情况,并尽可能地将常用页面保存在内存中。

答案 5 :(得分:0)

内存抖动是一个问题,当内存分配的次数超过物理内存并且在系统中不可用时会出现这种问题。 要知道什么是颠簸,您必须首先了解交换和页面错误。所以让我们从这些概念开始: 页面错误和交换: - 当请求的内存访问(来自虚拟地址空间)未映射到RAM中的内容时,会发生页面错误。然后必须从RAM将页面发送到交换,以便可以将所请求的新页面从交换到RAM。这导致2个磁盘I / O.现在您可能知道与内存访问相比,磁盘I / O非常慢。

要知道什么是内存颠簸,请参阅以下链接:

http://www.firmcodes.com/memory-thrashing-in-operating-system/

答案 6 :(得分:0)

操作系统使用虚拟内存的概念来提供内存,以便在主内存已满并且没有空间为进入的进程提供空间时进行处理。这种使用virtual memory替代的机制内存是抽象的,用户无法知道后面发生了什么。用户看来他/她刚刚执行的新进程在main memory中占用了空间。

因此,为了容纳主存储器中的传入进程,驻留在主存储器中的空闲进程需要移动到虚拟存储器。当发生page fault时,这种从主存储器到虚拟存储器的移动发生。

  

现在正在挣扎。

如果operating system使用page replacement algo发生page fault的可能性很高的main memory,则在virtual memory之间往返交换页面的大部分CPU周期将被浪费掉{1}}和Thrashing.。这会抑制CPU性能。由于发生大量页面错误而导致CPU性能下降的过程称为{{1}}

答案 7 :(得分:0)

颠簸是我们的CPU执行“生产性”的状态。少工作,交换&#39;更多。 CPU忙于交换页面,以至于无法根据需要响应用户程序。 发生的原因:在我们的系统中,当内存中的页面太多而每个页面引用另一个页面时,就会发生抖动。真实内存缩短了包含所有页面的容量,因此它使用了“虚拟内存”。当执行中的每个页面都要求当前不在实际内存(RAM)中的页面时,它会在虚拟内存上放置一些页面并在RAM上调整所需的页面。如果CPU忙于执行此任务,则会发生颠簸。 要解决颠簸问题,您可以执行以下任何建议: *增加计算机中的RAM量。 *减少计算机上运行的程序数量。 *调整交换文件的大小。

答案 8 :(得分:-2)

如果你想要正确地发生什么,那么......

如果C.P.U使用率为0(空闲),那么这种情况称为Thrashing。

它会在死锁情况发生的时候发生。那时候没有资源(比如打印机等)会利用C.P.U所以它会闲置所以我们可以将这种情况称为Thrashing。

这就是关于Thrashing :)