虚拟内存管理——操作系统课程大作业虚拟内存管理报告

虚拟内存管理——操作系统课程大作业虚拟内存管理报告

ID:12001664

大小:246.00 KB

页数:10页

时间:2018-07-15

虚拟内存管理——操作系统课程大作业虚拟内存管理报告_第1页
虚拟内存管理——操作系统课程大作业虚拟内存管理报告_第2页
虚拟内存管理——操作系统课程大作业虚拟内存管理报告_第3页
虚拟内存管理——操作系统课程大作业虚拟内存管理报告_第4页
虚拟内存管理——操作系统课程大作业虚拟内存管理报告_第5页
资源描述:

《虚拟内存管理——操作系统课程大作业虚拟内存管理报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2011年操作系统大作业1.虚拟内存管理实验。在Linux环境下编写一个内核模块,分别实现如下几个函数:lstaticvoidmtest_dump_vma_list(void):依次列出当前进程所占用的虚拟内存空间各段的读、写或执行权限。lstaticvoidmtest_find_vma(unsignedlongaddr):查找出虚拟地址addr所在的vma,并通过printk打印该段的起始地址、终止地址和段标志等信息。lstaticvoidmtest_find_page(unsignedlongaddr):找到虚拟地址addr对应的物理地址并打印。为了测试

2、和使用以上函数,需要在内核模块的初始化函数中创建一个名为mtest的/proc文件。mtest文件绑定的写函数mtest_write允许用户程序写入一串字符串:l如果写入的字符串是listvma则调用函数mtest_dump_vma_list(void);l如果写入的字符串是findvma0xffffffff则调用函数mtest_find_vma(0xffffffff),字符串的后几个字符是传递给函数的参数;l如果写入的字符串是findpage0xffffffff则调用函数mtest_find_page(0xffffffff),同样字符串的后几个字符是参数。

3、实验要求:为了测试以上模块的正确性,需要编写一个小型的test应用程序,它打开/proc/mtest文件,并向其中写入字符串调用模块中的相关函数并给出相应的反馈信息。知识储备:l虚拟存储空间管理的相关数据结构vm_area_struct和mm_structl/proc文件系统的相关知识l内核模块的相关知识实验思路及过程:相关知识储备:1.可以使用/proc文件系统和pmap工具查看给定进程的内存空间和其中所包含的内存区域mmap描述的该地址空间中的全部内存区域。内核使用内存描述符结构表示进程的地址空间,由结构体mm_struct结构体表示,定义在linux/

4、sched.h中,同时linux操作系统采用虚拟内存技术,所有进程之间以虚拟方式共享内存。进程地址空间由每个进程中的线性地址区组成,而且更为重要的特点是内核允许进程使用该空间中的地址。通常情况况下,每个进程都有唯一的地址空间,而且进程地址空间之间彼此互不相干。但是进程之间也可以选择共享地址空间,这样的进程就叫做线程。Linux提供了内存映射函数mmap,它把文件内容映射到一段内存上(准确说是虚拟内存上),通过对这段内存的读取和修改,实现对文件的读取和修改,2.unlikely()的作用就是告诉编译器,a

5、代码尽量不要和前边的编译在一块。if(likely(a>b))和if(a>b)在功能上等价,同样if(unlikely(a

6、structvm_area_struct*mmap_cache;//最近一次使用的虚存空间,pgd_t*pgd;//指向进程页面目录atomic_tmm_users;atomic_tmm_count;intmap_count;structsemaphoremmap_sem;//用于进程的间的互斥访问spinlock_tpage_table_lock;structlist_headmmlist;unsignedlongstart_code,end_code,start_data,end_dataunsignedlongstart_brk,brk,start_s

7、tack;unsignedlongarg_start,arg_end,env_start,env_end;unsignedlongrss,total_vm,locked_vm;unsignedlongdef_flags;unsignedlongcpu_vm_mask;unsignedlongswap_cnt;unsignedlongswap_address;mm_context_tcontext;};structvm_area_struct{structmm_struct*vm_mm;/*虚拟区域的参数*/unsignedlongvm_start;/*虚拟区

8、域的起始地址*/unsignedlongvm_end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。