0

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

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

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

4

1 回答 1

2

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

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

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

于 2017-04-07T22:18:34.737 回答