Memory 操作系统:内存分配

Memory 操作系统:内存分配,memory,memory-management,memory-leaks,operating-system,allocation,Memory,Memory Management,Memory Leaks,Operating System,Allocation,问题图片: 鉴于上述问题,我有几个问题。首先,proc0取代了一个比它大的洞,剩下的空间会发生什么变化 例如,在Q1 i中:引入Proc0后,它是a。10->15->15->25->30。让15个代替20个,剩下5个,它会发生什么,我该如何描述它会发生什么?会不会是一个。10->5->15->15->25->30或a。10->15->5->15->25->30?给定的proc的大小 sz(过程0)->15 sz(程序1)->5 据我所知,免费列表(10->20->15->25->30)中的更改

问题图片:

鉴于上述问题,我有几个问题。首先,proc0取代了一个比它大的洞,剩下的空间会发生什么变化


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

给定的
proc的大小

sz(过程0)->15 sz(程序1)->5

据我所知,
免费列表(10->20->15->25->30)
中的更改描述如下:

Q1:首次拟合(自由列表的大小将开始减小)

在执行第一次拟合分配之前,假设自由列表再次相同
(10->20->15->25->30)

问题2:下一次适合(自由列表的大小将开始减小)


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