计算机操作系统实验指导-基于RISC-V代理内核 课件 第四章实验2:内存管理_第1页
计算机操作系统实验指导-基于RISC-V代理内核 课件 第四章实验2:内存管理_第2页
计算机操作系统实验指导-基于RISC-V代理内核 课件 第四章实验2:内存管理_第3页
计算机操作系统实验指导-基于RISC-V代理内核 课件 第四章实验2:内存管理_第4页
计算机操作系统实验指导-基于RISC-V代理内核 课件 第四章实验2:内存管理_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于RISC-V代理内核的操作系统课程实验与课程设计第四章.实验2:内存管理目录实验2的基础知识Sv39虚地址管理方案回顾物理内存布局与规划PKE操作系统和应用进程的逻辑地址空间结构与页表操作相关的重要函数实验内容lab2_1虚实地址转换lab2_2简单内存分配和回收lab2_3缺页异常实验2的基础知识Sv39虚地址管理方案回顾Sv39中逻辑地址的结构Sv39中PDE/PTE格式Sv39虚地址管理方案回顾Sv39中虚拟地址到物理地址的转换过程Sv39虚地址管理方案回顾satp寄存器格式satp寄存器中MODE域的取值和含义取值虚存方案0Bare8Sv399Sv48物理内存布局与规划对于我们用spike的模拟RISC-V机器而言,2GB的物理内存并不是从0地址开始编址,而是从0x80000000开始编址的。PKE操作系统的逻辑地址空间结构在开启了Sv39虚拟内存管理方案后,所有的逻辑地址到物理地址的翻译都必须通过页表和MMU硬件进行。PKE操作系统内核的逻辑地址空间和它到物理地址空间的映射图PKE应用进程的逻辑地址空间结构lab2_1的应用app_helloworld_no_lds进程在装入后,其逻辑地址空间有4个区间建立了和物理地址空间的映射。用户进程的逻辑地址空间到物理地址空间的映射图与页表操作相关的重要函数1、将逻辑地址映射到物理地址intmap_pages(pagetable_tpage_dir,uint64va,uint64size,uint64pa,intperm);2、查找逻辑地址所在的页表项pte_t*page_walk(pagetable_tpage_dir,uint64va,intalloc);3、查找逻辑地址所在虚拟页面地址对应的物理页面地址uint64lookup_pa(pagetable_tpagetable,uint64va);目录实验2的基础知识Sv39虚地址管理方案回顾物理内存布局与规划PKE操作系统和应用进程的逻辑地址空间结构与页表操作相关的重要函数实验内容lab2_1虚实地址转换lab2_2简单内存分配和回收lab2_3缺页异常lab2_1虚实地址转换给定应用预期输出lab2_1虚实地址转换实验内容:开启Sv39页式地址管理,将应用(app_helloworld_no_lds.c,链接时未指定逻辑地址)投入正常运行。实现user_va_to_pa()函数,完成给定逻辑地址到物理地址的转换,最终使得helloworld程序获得正确输出。lab2_2简单内存分配和回收给定应用预期输出lab2_2简单内存分配和回收实验内容:这里,新定义了两个用户态函数naive_malloc()和naive_free(),它们最终会转换成系统调用,完成内存的分配和回收操作。需要完成naive_free对应的功能,获得预期的输出。lab2_3缺页异常给定应用预期输出lab2_3缺页异常实验内容:应用程序执行时,由于采用递归函数求等差数列的和,递归层数过多,使得用户态栈溢出。本实验中,我们处理的是缺页异常。首先,判断我们处理的确实是缺页异常;判断发生缺页的是不是用户栈空间,如果是则分配一个物理页空间,最后将该空间通过vm_map“粘”到用户栈上以扩充用户栈空间。lab2_challenge1复杂缺页异常给定应用预期输出lab2_challenge1复杂缺页异常实验内容:程序思路基本同lab2_3一致,对给定n计算0到n的和,但要求将每一步递归的结果保存在数组ans中。创建数组时,我们使用了当前的malloc函数申请了一个页面(4KB)的大小,对应可以存储的个数上限为1024。首先由于n足够大,所以在函数递归执行时会触发用户栈的缺页,你需要对其进行正确处理,确保程序正确运行;其次,1025在最后一次计算时会访问数组越界地址,由于该处虚拟地址尚未有对应的物理地址映射,因此属于非法地址的访问,这是不被允许的,对于这种缺页异常,应该提示用户并退出程序执行。lab2_challenge2堆空间管理给定应用预期输出lab2_challenge2堆空间管理实验内容:以上程序先利用better_malloc分别申请100和50个字节的一个物理页的内存,然后使用better_free释放掉100个字节,向50个字节中复制一串字符串,进行输出。原本的pke中malloc的实现是非常简化的(一次直接分配一个页面),你的挑战任务是修改内核(包括machine文件夹下)的代码,使得应用程序的malloc能够在一个物理页中分配,并对各申请块进行合理的管理。通过应用程序和对应的预期结果可以看出:两次申请的空间在同一页面,并且释放第一块时,不会释放整个页面,所以需要你设计合适的数据结构对各块进行管理,使得better_malloc申请的空间更加“紧凑”。lab2_challenge3多核内存管理给定应用预期输出……lab2_challenge3多核内存管理实验内容:

在本次实验中,给定两个程序,每个程序会通过lab2_2实现的naive_malloc申请一些内存页,在内存页开始处写入一个int并打印内存页的虚拟地址。最后每个进程会打印自己写入内存页的数,并通过naive_f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论