3
我正在开发一个C语言的操作系统,我在分页上挣扎着。我通过分配内存并输出处理物理和虚拟页分配的低级内存分配输出来测试我的内核堆。页面错误后重新启动指令
当PDE 0
,一切的伟大工程0-1023
页,但只要分配移动到PDE 1
,如果我开始从不同的物理地址分配一个页面故障引发本标志设置,有时rw
标志了。
我是否需要从cr2
获取错误地址并将其映射回PDE
和它所属的页面,然后设置或使用3的地址?之后,我需要重新启动指令,但我该怎么做?有什么建议么?
我不确定我是否理解你在第一个问题中提出的问题。这听起来像你已经知道如何处理导致错误的地址?至于返回:页面错误与任何其他中断相同 - 在调用页面错误处理程序之前,EIP/RIP(在这种情况下,指向*导致页面错误*的指令)将保存到堆栈。 – pmdj 2012-02-24 10:47:26
感谢您的回复。页面错误是由于意外分配了已经分配的帧而导致错误的物理帧分配器。另外,通过页面边界传输的kmallocing字节也是一个麻烦。但现在一切都解决了。谢谢! – 2012-02-29 18:10:20