【问题标题】:What is thrashing? Why does it occur?什么是颠簸?为什么会发生?
【发布时间】:2013-10-02 15:18:28
【问题描述】:

在操作系统中,抖动与内存管理有关。为什么会发生颠簸? 我们该如何预防呢?

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

【问题讨论】:

  • 阅读 Galvin:高分页活动称为 thrashing。如果一个进程在分页上花费了更多的时间然后执行。
  • 好的。高尔文是从图书馆发给我们的。我也会尝试从那里理解它。
  • 我的建议是先看书,如果您需要进一步参考,请使用网络。否则你会浪费你重要的时间和精力。

标签: memory-management operating-system


【解决方案1】:

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

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

【讨论】:

  • 页面错误是否也与抖动有关?抱歉,我是操作系统新手。
  • @niss 是的,这是由于全球页面替换算法。一个进程从其他进程抢夺页面(内存)。由于分页活动(在输入/输出单元中)CPU 变得空闲。并且操作系统监视CPU利用率,如果两个操作系统过多,则通过允许新进程执行来增加多道程序的程度。引入新进程意味着更多的页面错误会导致 CUP 利用率进一步降低。 ——这就是所谓的颠簸。
  • @niss 面试中经常被问到的问题。所以学习吧。
  • 我最近看到的最精确和简洁的答案之一!
【解决方案2】:

捶打 在这种状态下,我们的 CPU 执行的“生产性”工作更少,而“交换”更多。 CPU 忙于交换页面,以至于它无法对用户程序做出所需的响应。 为什么会发生 在我们的系统中,当我们的内存中的页面过多并且每个页面都引用另一个页面时,就会发生抖动。实际内存的容量会缩短以容纳所有页面,因此它使用“虚拟内存”。当执行中的每个页面需要当前不在实际内存 (RAM) 中的页面时,它会将一些页面放置在虚拟内存上并调整 RAM 上所需的页面。如果 CPU 忙于执行此任务,则会发生抖动。

【讨论】:

    【解决方案3】:

    我知道这个问题很久以前就有人问过了,但我只是想与他人分享信息。

    术语抖动实际上与虚拟内存有关,操作系统使用虚拟内存来为进程提供额外的内存或空间。抖动一词的实际含义是,当进程准备好加载到内存中时,只有少数或部分进程的页面(部分)加载到实际物理内存中,其余页面(部分)在交换中-space(虚拟内存或磁盘)。

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

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

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

    因此,当进程忙于读写(交换页面)时,CPU 利用率降至最低水平。这叫甩锅!

    【讨论】:

      【解决方案4】:

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

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

      此过程称为抖动。当没有为进程分配足够多的帧而不是所需的帧时,通常会发生抖动。

      防止抖动的方法:

      1. 指示中期调度程序换出一些进程以从抖动中恢复
      2. 指示调度程序在达到阈值后不要加载更多进程

      【讨论】:

      • 欢迎来到 SO。一般而言,如果您为已确定答案的旧问题添加答案,则应确保以某种形式或形式提供独特的新信息。也值得将一段文本(如您的答案的原始版本)分成多个段落。
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        要了解什么是内存抖动,请参考以下链接:

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

        【讨论】:

        • 链接的文章似乎不完整(似乎停止了解释)。这个答案本身不会增加其他答案,虽然正确,但我认为它可能不会帮助那些不了解关键概念的人。
        • 请点击链接获取内存抖动的详细信息。
        • 这并不可怕,但它以对虚拟内存的(非常)部分描述而非常突然地结束,感觉不像是一个结论。
        【解决方案7】:

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

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

        现在要崩溃了。

        如果operating system使用page replacement algo这样page fault发生概率很高的page fault,那么大部分CPU周期将浪费在main memoryvirtual memory之间来回交换页面.这会抑制CPU性能。这种由于出现大量页面错误而导致CPU性能下降的过程称为Thrashing.

        【讨论】:

          【解决方案8】:

          抖动是我们的 CPU 执行“高效”工作较少而“交换”更多的一种状态。 CPU 忙于交换页面,以至于它无法对用户程序做出所需的响应。 为什么会发生:在我们的系统中,当我们的内存中有太多页面时,就会发生抖动,并且每个页面都引用另一个页面。实际内存的容量会缩短以容纳所有页面,因此它使用“虚拟内存”。当执行中的每个页面需要当前不在实际内存 (RAM) 中的页面时,它会将一些页面放置在虚拟内存上并调整 RAM 上所需的页面。如果 CPU 忙于执行此任务,则会发生抖动。 要解决抖动问题,您可以执行以下任何建议: *增加计算机中的 RAM 量。 *减少计算机上正在运行的程序数量。 *调整交换文件的大小。

          【讨论】:

            【解决方案9】:

            如果你想要什么是正确的..

            如果 C.P.U 使用率为 0(idle),则这种情况称为 Thrashing。

            它会在死锁情况发生时发生。所以那时没有资源(如打印机等)将使用 C.P.U,因此它将处于空闲状态,因此我们可以将这种情况称为 Thrashing。

            这就是关于Thrashing :)

            【讨论】:

            • 这没有回答问题,而且很模糊。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-09-13
            • 2015-09-23
            • 2013-02-17
            • 1970-01-01
            • 1970-01-01
            • 2017-03-20
            • 1970-01-01
            相关资源
            最近更新 更多