什么是鞭打为什么会发生(thrashing in os)

在操作系统中,thrashing 与内存管理有关。为什么会发生 thrashing?我们如何防止它?

在操作系统中,thrashing 与内存管理有关。为什么会发生 thrashing?我们如何防止它?

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

63

在实现虚拟内存空间的操作系统中,程序从可能比系统拥有的 RAM 实际数量大得多的地址空间分配内存。操作系统负责决定哪些程序“内存”在实际 RAM 中。它需要一个地方来保存它们。这就是所谓的“交换空间”,因为操作系统正在根据需要交换东西。当这种交换活动发生时,您可能会通过添加它来有效地交换内存。

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

19

thrashing这是一种状态,在这种状态下,我们的 CPU 执行“生产性”工作的次数减少了,而“交换”的次数增加了。CPU 忙于交换页面,以至于它无法像所需的那样响应用户程序。为什么会发生这种情况在我们的系统中,当内存中的页面太多,并且每个页面都会缩短其他页面

14

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

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

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

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

同样,由于 CPU 未被使用或为 0 (在我们的示例中),操作系统启动另一个进程,同样的事情发生。

因此,当进程忙于读取和写入(交换页面)时,CPU 利用率会降低到一个极端的最低水平。

4

逻辑地址是由 CPU 生成的,实际上不是实际的内存位置,但是进程认为它是实际的内存位置。一个完整的进程分为不同的部分,这些部分存储在逻辑内存中的页面中,但是只有子部分或只有某些页面被分配了在该时间点所需的实际内存,而其他页面则驻留在逻辑内存中,并且没有分配物理地址。现在,如果需要加载任何其他页面,并且没有足够的帧来分配当前页面错误

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

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

防止颠簸的方法:

指示中期调度程序换出一些进程,也从颠簸中恢复

指示调度程序在阈值之后不加载更多进程

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(13)
用python和babel获取翻译的国籍名称列表(或者其他东西)
上一篇
LUA错误“模式太复杂”-桌面模拟器
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(75条)