- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Machine类是为了执行用户程序 逻辑地址——》物理地址 * 需要页表项 * 线性页表,逻辑物理 * 页表或者TLB显示标识 * 打开程序文件; 读取程序描述头,并根据noffMagic处理描述头信息在字节顺序上的不同; 计算程序装载需要的空间,并计算需要的分页数目 根据每段记录的文件地址,从文件指定位置读出数据存放到段指定的虚拟地址上; * 执行代码AddrSpace::Execute: 将当前线程的地址空间更改为自己 初始化寄存器: 将所有的寄存器设置为0 将指令寄存器(PCReg)设置到0位置(启始代码位置) 设置NextPCReg到4的位置(一条指令占4byte) 将栈指针StackReg设置到地址空间的末尾(NachOS的堆栈是从高地址向低地址扩展的) 恢复状态,将当前机器的页表设置为自己的页表 开始运行虚拟机 * * 王建勇 内存管理 用户进程空间管理 内存管理算法介绍 * 内存管理模块定义 NachOS虚拟机如何模拟内存: Machine::mainMemory代表了NachOS的物理内存. 虚拟机对物理内存进行分页: PageSize = 128 (byte) NumPhysPages = 128 MemorySize = (NumPhysPages * PageSize) = 16K TranslationEntry *pageTable; unsigned int pageTableSize; TranslationEntry *tlb; const int TLBSize = 4; * 内存分页管理 地址转换表的类型: 线形转换表(目前NachOS使用的) TLB:TLB转换表是又硬件实现的,表的尺寸一般小于用户程序的页面数.因此在转换中会出现转换失败的情况,从而发生PageFaultException 异常. * * viutualPage PhysicalPage valid use dirty readOnly 页表项(Translate.h) the entry is initialized or not page is modified. the user program is not allowed to modify the contents of the page. page is referenced or modified The page number in virtual memory. The page number in physical memory 分页内存管理 如何通过地址转换表将虚拟内存地址转换为物理内存地址: * 逻辑页号 页内偏移 地址转换表 …… …… …… …… 物理页号 页内偏移 虚拟地址 物理地址 (Machine.h Translate.cc) 地址转换 (Machine.h Translate.cc) Translate(int virtAddr, int* physAddr, int size, bool writing) 虚拟内存地址到物理内存地址的转换函数 检查内存对齐 读写尺寸为4字节,则地址必须是4的倍数 读写尺寸为2字节,则地址必须是2的倍数 计算虚拟页表的页面编号和页面偏移 根据页表中查找对应的物理页面 计算物理内存地址 * 大多数处理体提出(甚至要求)应当对齐内存访问.这意味着当处理器访问长度为K(2的n次幂)个字节的一段数据时,这段数据的起始地址必须是k的倍数 其他内存操作 (Manchine.h translate.cc) Machine::ReadMem和Machine::WriteMem 读/写当前运行进程的虚拟地址空间中指定位置的内存数据; 对内存操作异常的处理; 处理了字节顺序的问题; * 字节顺序 什么是字节顺序? 像整数这样的多字节数据可以被表示为两种形式:little-endian和big-endian,他们在数据类型中就展示了字节顺序.在Intel x86这样的little-endian体系结构上,首先存放最低有效位(即存放在低地址处).而像Motorola PowerPC这样的big-endian体系结构则首先存放最高有效位. 另外还有比较少见的mixed-endian和bi-endian的机器. * big-endian值和little-endian值 O* 地址 little-endian big-endian c[0] 0x78 0x12 c[1] 0x56 0x34 c[2] 0x34 0x56 c[3] 0x12 0x78 NachOS需要处理的问题:与宿主
您可能关注的文档
- 脊椎四肢神经系统反射检查详解.ppt
- 关于无菌隔离系统(副本).pdf
- 2型糖尿病治疗靶点钠-葡萄糖共转运蛋白2抑制剂研究进展-万惠新.pdf
- 第17篇 循环系统疾病课件.ppt
- 内容串讲Microsoft Word 文档课件.doc
- 第一章 先端生物芬母口腔抗菌喷剂.ppt
- 中医一般护理要领.ppt
- 高血压危险分层(副本).ppt
- 技术解析之-均线形态理论解析.pdf
- 第6章 DSA+颅内动脉瘤介入治疗.ppt
- DB32T3444 健康企业评估规范.pdf
- DBJ25-82-2000 甘肃省聚苯板外保温墙体设计与施工规程 甘肃省地方标准.pdf
- DB32T-核与辐射突发事件卫生应急处置技术规范 第3部分:现场流行病学调查及编制说明.pdf
- DB44T1430-2014 冷冻水产品流通冷链管理技术规范.pdf
- TCASME-监控系统安装与维护规范.pdf
- TCSAE-汽车远程升级(OTA)信息安全测试规范.pdf
- TJSSAE-智能网联汽车开放道路测试管理要求及编制说明.pdf
- TEERT-挥发性有机物污染治理设施工况自动监控技术规范.pdf
- TCASME-三跨连续节段梁悬浇施工技术规范.pdf
- DB36T-行政执法案卷评查规范编制说明.pdf
文档评论(0)