在 xv6 中一个进程可以获得(分配)多大(多少内存)?
How big (how much memory) can a process get (allocate) in xv6?
假设我想使用 malloc() 在进程中分配一些内存
for(i = 0; i < SOME_NUM; ++i)
int *x = malloc(sizeof(int *));
我可以设置 SOME_NUM 的最大数字是多少?
在 xv6 中,物理内存是有限的,您可以看到常量 PHYSTOP,为简单起见,它是 224MB
。其中一些内存用于容纳内核代码和其他内容,因此如果需要消耗其余的物理内存,则其余部分可以由进程使用。
注意:PHYSTOP 可以更改,但是您必须修改 mappages 函数以映射所有页面。
注意 2:正在分配页面,因此您可以将 PHYSTOP
\ pagesize
放入循环中。好吧,我在这里作弊,因为内核数据结构和代码已经占用了一部分物理内存。
假设我想使用 malloc() 在进程中分配一些内存
for(i = 0; i < SOME_NUM; ++i)
int *x = malloc(sizeof(int *));
我可以设置 SOME_NUM 的最大数字是多少?
在 xv6 中,物理内存是有限的,您可以看到常量 PHYSTOP,为简单起见,它是 224MB
。其中一些内存用于容纳内核代码和其他内容,因此如果需要消耗其余的物理内存,则其余部分可以由进程使用。
注意:PHYSTOP 可以更改,但是您必须修改 mappages 函数以映射所有页面。
注意 2:正在分配页面,因此您可以将 PHYSTOP
\ pagesize
放入循环中。好吧,我在这里作弊,因为内核数据结构和代码已经占用了一部分物理内存。