c - 在 xv6 中一个进程可以获得(分配)多大(多少内存)?

标签 c operating-system xv6

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

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

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

最佳答案

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

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

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

关于c - 在 xv6 中一个进程可以获得(分配)多大(多少内存)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287643/

相关文章:

C:结构语法链表

c - GDB单步执行命令

c - 为什么 return 不退出 xv6 中的进程?

pointers - 不兼容的指针类型添加了系统调用xv6-使用在sysfunc.h中定义的一致返回类型

c++ - typedef 结构中的下划线是什么意思?

显示 jpeg、bmp 或 pcx 文件的 C 程序

c - 如何将图像切片/切割成碎片

x86 - 陷阱和中断有什么区别?

c - 我对内存管理和分页的想法是否正确?

c - 如何将值传递给 XV6 中的系统调用函数?