MIT6.828_HW4_xv6 lazy page allocation

1. HW4_xv6 lazy page allocation

操作系统可以与页表硬件一起使用的许多巧妙技巧之一是堆内存的惰性分配。Xv6应用程序使用sbrk()系统调用向内核请求堆内存。 在我们给你的内核中,sbrk()分配物理内存并将其映射到进程的虚拟地址空间。 有些程序分配到内存但从不使用它,例如实现大稀疏数组。精妙的内核延迟每页内存的分配,直到应用程序尝试使用该页面 - 如页面错误所示。

1.1. Part One: Eliminate allocation from sbrk()

你的新sbrk(n)应该只用n增加进程的大小(myproc() - > sz)并返回旧的大小。

  if(argint(0, &n) < 0)
    return -1;
  addr = myproc()->sz;
  myproc()->sz += n;
  return addr;
$ echo hi
pid 3 sh: trap 14 err 6 on cpu 0 eip 0x112c addr 0x4004--kill proc

"pid 3 sh:trap …"消息来自trap.c中的陷入内核处理程序; 它捕获了页面错误(陷入14或T_PGFLT),xv6内核不知道如何处理。addr 0x4004表示导致页面错误的虚拟地址为0x4004。

1.2. Part Two: Lazy allocation

根据提示

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值