C语言基本分页存储管理.doc

C语言基本分页存储管理.doc

ID:49284923

大小:153.00 KB

页数:12页

时间:2020-03-01

C语言基本分页存储管理.doc_第1页
C语言基本分页存储管理.doc_第2页
C语言基本分页存储管理.doc_第3页
C语言基本分页存储管理.doc_第4页
C语言基本分页存储管理.doc_第5页
资源描述:

《C语言基本分页存储管理.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统实验报告姓名:卢一一学号:201607010209学校:清华大学专业:计算机科学与技术班级:2008级—2班精选范本,供参考!精选范本,供参考!精选范本,供参考!基本分页存储管理实验目的连续内存分配方式会形成许多“碎片”,虽然可以通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。如果允许将一个进程直接分散地装入到许多不相邻接的分区中,则无需再进行“紧凑”。基于这一思想而产生了离散分配方式。如果离散分配的基本单位是页,则称为分页存储管理方式;如果离散分配的基本单位是段,则称为分段存储管理方式。在分页存储管理方式中,如果不具备页面兑换功能,则称为基本的分页存储

2、管理方式,或称为纯分页存储管理方式,它不具备支持虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。本实验通过程序模拟操作系统的基本分页存储管理方式,进一步理解这一内存分配方式的原理和特点,加深对理论知识的掌握。实验要求1、用C语言或Java语言编写程序模拟操作系统对内存的基本分页存储管理方式2、程序要能正确对“内存”进行“分配”和“回收”,能接受用户的输入,显示内存的分配情况,并有一定的容错能力。3、每个人独立按时完成实验内容。实验内容本实验假定内存空间已经按块划分,目标程序无需关心内存块大小等底层细节,只需按算法对内存块进行分配即可。程序应该实现以下功能:1、内存初始化。假

3、定内存块共有N个,初始化后的内存空间应该有一部分已经被使用,这可以用随机数或程序内部的其他算法完成。2、程序应该能接受用户输入的进程信息,并为之分配内存,返回分配结果(成功或失败),注意,此处应该考虑到不合法的输入并进行相应处理。3、程序能回收用户指定的进程所占用的内存空间,因此,程序可能需要为每个进程分配一个唯一的进程号并给出详细的提示信息。4、能直观合理地显示内存分配情况。5、程序界面友好,便于操作和查看运行结果。精选范本,供参考!实验结果精选范本,供参考!实验总结基本分页的思想是比较简单的,而且实验前老师已经给出了一种可行的数据结构来存储程序中需要用到的数据,因此这个实验在构思

4、上是没有多少难度的。由于程序中主要使用的是数组,操作起来比较方便,不像前两个实验需要用到大量的链表操作。在这次试验中,我主要遇到了以下一些问题:1、程序刚写完时,记录“内存”中的进程数的变量和当前剩余总内存的变量的值不正确,经检查后发现是在结束进程时没有同时更新这些数据。2、内存使用情况应该以哪种形式输出以及输出哪些信息。精选范本,供参考!最终我选择了尽可能详细地输出有用信息,通过空格、空行、对齐等手段尽力使输出格式简洁美观。比如,在输出每个进程的内存使用情况时,首先输出该进程占用的总内存,然后以统一的对齐方式依次输出各个内存块编号。当然,对于不同的模块输出的信息也应该不一样,比如,

5、内存初始化结束后应该输出哪个内存块被占用了,否则无法判断后续的内存分配是否正确,但在以后查看内存使用情况时则不必把所有已占用的内存块输出,因为每个进程都会单独把自己占用的内存块显示出来。为了达到这种效果,我使用了一个全局变量作为判断依据,详细情况见附录中代码。3、程序的容错性。这是一个容易被忽略的问题。这个程序起初基本没考虑这个问题,但在后来的调试过程中,逐渐加上了一些基本的容错功能,比如用户在结束某进程时,其输入的进程号可能根本不存在,这时应该给出用户出错提示,并要求用户重新输入,但这里用了一个编程中不太推荐的方式:goto语句。总体而言,这次实验还是比较顺利的,没有遇到什么特别难

6、解决的问题。通过自己编程模拟内存分配,我不仅加深了对这种内存管理方式的理解,也增强了C语言的编程能力。通过这几次的实验,我感觉手工写一个几百行的程序不像以前那么困难了。附录#include#include#defineN100//共有100个内存块intprocess[N][N+1];//存放每个进程的页表intblock[N];//内存块状态标志数组,0:空闲,1:使用intblockCount;//记录当前内存剩余空间intprocessCount;//记录当前进程数boolflag=true;voidinit();voidoutput()

7、;boolcreateProcess();boolendProcess();voidinit(){inti,j;//初始化内存状态标志数组for(i=0;i

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

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

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