进程在xv6中获得(分配)的大小(多少内存)?

时间:2017-04-07 21:57:00

标签: c operating-system xv6

假设我想使用malloc()在进程中分配一些内存

    for(i = 0; i < SOME_NUM; ++i)
        int *x = malloc(sizeof(int *));

我可以将SOME_NUM设置为最大数量是多少?

1 个答案:

答案 0 :(得分:2)

在xv6中,物理内存是有限的,出于简化的原因,您可以看到224MB的常量PHYSTOP。一些内存正在容纳内核代码和其他内容,因此如果需要消耗其余的物理内存,其余内容可以由进程使用。

注意:PHYSTOP可以更改,但是您必须修改mappages函数以映射所有页面。

注2:正在分配页面,因此您可以将PHYSTOP \ pagesize置于循环中。好吧,我在这里作弊,因为内核数据结构和代码已经占据了物理内存的一部分。