操作系统课程设计-虚拟页式存储管理系统的实现.doc

操作系统课程设计-虚拟页式存储管理系统的实现.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计-虚拟页式存储管理系统的实现

课 程 设 计 课程设计名称: 计算机操作系统 专 业 班 级 :计算机科学与技术 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 操作系统 专业课程设计任务书 课程设计题目 虚拟页式存储管理系统的实现 学院 专业 计算机科学与技术 年级 指导教师 成 绩 所需环境 Linux环境 Bochs虚拟实验室 设计要求 1掌握Linux环境下常用编译工具如gcc/g++/nasm及开源虚拟机bochs的下载、安装、使用 2掌握x86架构下分页式存储管理系统的基本原理,设计一个请求分页式虚拟存储系统。 3掌握Linux系统下程序的编写及运行。 学生应完成的工作 按照实验三要求,构建Bochs虚拟实验室 2.回顾虚拟页式存储系统:作业分页,内存分块,只有当进程要使用其虚拟内存时,其对应的数据才装入物理内存。 3.请认真阅读readme.txt文件,弄清楚各个文件的作用 … 审查意见 指导教师签字: 教研室主任签字: 年 月 日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页 目录 一、设计目的 为了掌握Linux环境下常用编译工具如gcc/g++/nasm及开源虚拟机bochs的下载、安装、使用,掌握x86架构下分页式存储管理系统的基本原理,设计一个请求分页式虚拟存储系统。掌握Linux系统下程序的编写及运行等方面展开实验。 二、设计要求 2.1要求熟练掌握sudo apt-get install的用法。 2.2要求能够掌握分页存储管理系统的基本原理。 2.3要求学会在Linux系统下编写程序、执行程序。 三、设计内容 3.1运行环境 3.1.1虚拟机系统下 3.1.2使用Ubuntu下提供的apt-get软件包安装工具 安装vim、 g++ 、nasm 、bochs等 3.2 2. 详细设计 1)回顾虚拟页式存储系统:作业分页,内存分块,只有当进程要使请认真阅读readme.txt文件,弄清楚各个文件的作用 2)用其虚拟内存时,其对应的数据才装入物理内存。 3)完成frame_pool.H 、frame_pool.C 、page_table.C三个文件,其中page_table.H已经提供,我们需要添加page_table.C,自己设计并实现这些函数。 4)在frame_pool.H定义所需要的数据结构,在frame_pool.C完成这些函数。 添加代码如下所示: class FramePool {private: unsigned long base_frame_no; unsigned long nframes; unsigned long info_frame_no; unsigned char* free_frames; public:static const unsigned char USED -1;static const unsigned char UNUSED -0; static const unsigned int FRAME_SIZE -4096; public:FramePool(unsigned long _base_frame_no,unsigned long _nframes, unsigned long _info_frame_no); 5)建立Frame_pool.C文件 系统中使用位示图bitmap标识页面是否使用,start_frame表示第一个页面的起始地址(如系统内存池从2M开始),pool_size表示在用户池中页框的总数(如系统内存池的页框从2M~4M,因此共有(4M-2M)/4KB=512个页框)。初始化用户池中位示图的内容 Frame_pool::frame_pool()初始化bitmap记录系统中所有物理块是否可用,如果可用设置为0,否则为1。 Frame_pool::get_frame()通过该方法去查询bitmap,查找可用物理块号。 FramePool::mark_inaccessible( )方法将bitmap中对应位置置1。 FramePool::release_frame()方法将bitmap中对应位置置0。 设计一个私有函数set_frame_flag ,来设置某一个字节的某个bit为0或则为1。 6)打开page_table.H 页表如下图所示: 其中,页面大小为4K,即可用12位表示

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档