基本分页存储管理的模拟实现 课程设计

基本分页存储管理的模拟实现 课程设计

ID:9857935

大小:78.50 KB

页数:10页

时间:2018-05-12

基本分页存储管理的模拟实现 课程设计_第1页
基本分页存储管理的模拟实现 课程设计_第2页
基本分页存储管理的模拟实现 课程设计_第3页
基本分页存储管理的模拟实现 课程设计_第4页
基本分页存储管理的模拟实现 课程设计_第5页
资源描述:

《基本分页存储管理的模拟实现 课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《操作系统》课程设计报告基本分页存储管理的模拟实现学院计算机科学与技术专业计算机科学与技术(师范)学号□□□□□学生姓名□□指导教师姓名□□□2012年6月20日一、设计目的与内容1、课程设计的目的:操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。★进一步巩固和复习作系统的基础知识。★培养学生结构化程序、模块化程序设计的方法和能力。★提高学生调试程序的技巧和软件设计的能力。★提高学生分析问题、解决问题以及综合利用C语言

2、进行程序设计的能力。2、设计内容:根据设计要求实现对基本分页存储管理的模拟3、设计要求:★选择恰当的数据结构表示页表★进程名,进程所需页数,进程进行的操作(装入/退出)等操作可有键盘输入,也可从文件读出。★每进行一次进程的装入或者退出操作,就显示出操作执行后内存中各页的分配情况。二、算法的基本思想主要功能函数:VoidcreatA()//内存初始化函数voidNewNode(LinkList&L)//建立新进程函数voidFreeNode(LinkList&L)//回收进程函数voidPrintf(LinkList

3、L)//显示所有进程信息voidlook(LinkListL)//查看某个进程信息voidshowit()//显示内存块使用情况算法思想:通过creatA()函数将内存初始化,设置为未被占用,通过NewNode(LinkList&L)建立新进程,输入进程号、进程名、进程大小,并计算出该进程所需的页数,分配物理块。通过FreeNode(LinkList&L)删除你所要删除进程的一切信息,并空出内存。用Printf(LinkListL)显示以上两个函数产生的所有进程信息。look(LinkListL)可以查看某个进程信

4、息。Showit()函数内存块使用情况。三、主要功能模块流程图建立进程开始p=L输入进程号new_node->f输入进程号次数j=0(j>3,终止)p->f=new_node->f?Y进程存在,重新输入Np=p->next输入进程名称、大小进程页数n=size/1024若页内地址k!=0,n=n+1显示所需页数页数n>物理块数?内存物理块不足,新建进程失败YN分配内存物理块四、四、系统测试主要运行界面如下:建立进程:回收进程:内存使用情况:进程查看:五、结论此基本分页存储管理模拟系统满足了基本要求,可以对进程进行内

5、存块分配,并能对调用结束的进程回收内存块。用户界面设计为菜单模式,使用户能够容易使用。该程序不是通过页面映像表(即页表)显示。由于时间关系和知识储备不够,对文件读入程序无法实现。六、源程序#include"stdio.h"#include"stdlib.h"#include"string.h"intA[100];//内存物理块,0:未使用,非0:已使用intmax=99;//记录内存的物理块数,值为A[100]最大下标intcount=100;//记录内存未使用物理块数typedefstructLNode{intf

6、;//进程号charname[8];//进程名intsize;//进程大小intn;//进程页数intye[100];//页表,下标表示页号,内容表示进程各页所在物理块structLNode*next;}LNode,*LinkList;//内存初始化voidCreatA(){inti=0;for(i=0;i<=max;i++)A[i]=0;}//建立新进程voidNewNode(LinkList&L){inti,j;intm,k;LinkListp;LinkListnew_node;new_node=(LinkLi

7、st)malloc(sizeof(LNode));p=L;printf("输入进程号:");scanf("%d",&new_node->f);j=0;while(p!=NULL&&j<3)//查找进程号是否重复{if(p->f!=new_node->f)p=p->next;else{printf("该进程已存在,重新输入:");scanf("%d",&new_node->f);p=L;//p重新指向头结点j++;}}if(j<3){printf("输入进程名称:");scanf("%s",new_nod

8、e->name);printf("输入进程的大小:");scanf("%d",&new_node->size);new_node->n=new_node->size/1024;k=new_node->size%1024;if(k!=0)new_node->n=new_node->n+1;printf("所需要的页数为:");printf("%d",n

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

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

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