【问题标题】:OS: Memory allocation操作系统:内存分配
【发布时间】:2016-08-06 04:54:53
【问题描述】:

问题图片:

鉴于上述问题,我有几个问题。首先,proc0 代替了一个比它大的洞,剩下的空间怎么办?

例如在 Q1 i 中:在引入 Proc0 后,它是 a. 10->15->15->25->30。用 15 代替 20,剩下 5 个,那么它会发生什么,我将如何描述它会发生什么?会不会是一个。 10->5->15->15->25->30 或一个。 10->15->5->15->25->30?

【问题讨论】:

  • 这不是学术界以外使用的符号,所以我不清楚这里的问题是什么。
  • 这是一个关于我们一无所知的特定内存分配算法(似乎关心请求来自哪个处理器)的问题。那我们怎么回答呢? (或者“Proc”是否代表处理器以外的东西?进程?我们应该怎么知道?)
  • @DavidSchwartz - 这是一个典型的操作系统问题,不需要任何处理器来回答;这是一个假设理想情况的理论问题。
  • @Am_I_Helpful 这里的“Proc”代表“进程”吗?还是“处理器”?如果是前者,我们是在谈论物理内存的分配吗?这不使用孔和尺寸,而是使用页面——您不会将页面的一部分分配给一个进程。如果是后者,它确实取决于处理器(或者他们为什么告诉我们哪个处理器发出请求)。
  • @DavidSchwartz - 据我所知,proc 应该进行处理。不,我们正在谈论进程的内存分配(漏洞可能只是一个用于描述碎片的概念)。我认为这个问题是在问这个问题,我已经添加了一个假设相同的答案。

标签: memory memory-management memory-leaks operating-system allocation


【解决方案1】:

给定,proc 的大小

sz(proc 0) -> 15 sz(proc 1) -> 5

据我了解,Free List (10 -> 20 -> 15 -> 25 -> 30) 的变化描述如下:

Q1 : First Fit(空闲列表的大小将开始减小)

When proc 0 (size=15) is brought to the list, 
Free List converts to (10 -> 5 -> 15 -> 25 -> 30)
// the freelist size would decrease wherever the first biggest hole is found,
// so, hole of size 20 is replaced by a hole of size 5 to allocate memory to proc 0

When proc 1 (size=5) is brought to the list, 
Free List converts to (5 -> 5 -> 15 -> 25 -> 30)
// the freelist size would decrease wherever the first biggest hole is found,
// so, hole of size 10 is replaced by a hole of size 5 to allocate memory to proc 1

假设 FreeList 在执行 First Fit 分配之前再次是相同的(10 -> 20 -> 15 -> 25 -> 30)

Q2 : Next Fit(空闲列表的大小将开始减小)

When proc 0 (size=15) is brought to the list, 
Free List converts to (10 -> 5 -> 15 -> 25 -> 30)
// the freelist size would decrease wherever the next biggest hole is found,
// so, hole of size 20 is replaced by a hole of size 5 to allocate memory to proc 0

When proc 1 (size=5) is brought to the list, 
Free List converts to (10 -> 0 -> 15 -> 25 -> 30), or better
Free List converts to (10 -> 15 -> 25 -> 30)    // the size of the freelist decreases.
// the freelist size would decrease wherever the next biggest hole is found,
// so, hole of size 5 is replaced by a hole of size 0
// (or, rather no hole left, so list becomes continuous) to allocate memory to proc 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 2017-07-11
    • 2021-10-16
    • 1970-01-01
    • 2021-12-20
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多