nachos源码阅读(内存管理)-2 ReadMem()
ReadMem(int addr, int size, int *value)传入下一条指令地址,每次读取字节数,存放指令位置Translate(int virtAddr, int* physAddr, int size, bool writing) 传入虚拟地址,物理地址指针,每次读取字节数,读写权限,将虚拟地址addr翻译为物理地址,entry是虚拟机对应的页表项指针,用来保存查询记录计算下一
·
ReadMem(int addr, int size, int *value)传入下一条指令地址,每次读取字节数,存放指令位置
Translate(int virtAddr, int* physAddr, int size, bool writing) 传入虚拟地址,物理地址指针,每次读取字节数,读写权限,将虚拟地址addr翻译为物理地址,entry是虚拟机对应的页表项指针,用来保存查询记录
计算下一条指令的虚拟页号和偏移量
取出虚拟页
取出虚拟页对应的物理页
设置使用位,脏页,获取物理地址
回到ReadMem(),根据physicalAddress 从数组mainMemory中取数据,根据size选择对应的方式处理物理地址中的data
更多推荐
已为社区贡献1条内容
所有评论(0)