MIT6.S081 icon indicating copy to clipboard operation
MIT6.S081 copied to clipboard

lec08: 8.2 也许是个小翻译问题

Open Opadc opened this issue 3 years ago • 2 comments

在 8.2 Lazy page allocation节中:

当调用sbrk时,它的参数是整数,代表了你想要申请的page数量。sbrk会扩展heap的上边界(也就是会扩大heap)。

sbrk的参数含义好像是想要allocate或shrink的字节数,不是page数,只是xv6只会以page为单位分配和释放。

Opadc avatar Apr 11 '21 11:04 Opadc

重新听了视频,在lec08的12分54秒,视频中的确说的是分配page。但是根据Linux man page,sbrk应该是以bytes为单位。

这里可能与实际的底层实现有关系,底层的内存管理应该都是要以page为单位来进行,因为最后需要通过Page Table体现到应用程序中。这里sbrk可能只是软件记录了字节数,但是在内存分配上还是以page为单位,当sbrk申请的新的空间超出了当前可用的page,那么会涉及到新申请一个page。

huihongxiao avatar Apr 11 '21 13:04 huihongxiao

代码里面有给出,sys_sbrk->growproc->uvmalloc。uvmalloc中old size -> new size 是以一个page的大小增加的。

songmuhan avatar Sep 09 '21 00:09 songmuhan