1、 操作系统课程设计报告 基本分页存储管理的模拟实现基本分页存储管理的模拟实现 学学 院院 计算机科学与技术 专专 业业 计算机科学与技术( 师范) 学学 号号 学学 生生 姓姓 名名 指导教师姓名指导教师姓名 2012 年 6 月 20 日 一一 、设计目的与内容、设计目的与内容 1、 课程设计的目的: 操作系统课程设计是计算机专业重要的教学环节, 它为学生提供了一个既动手 又动脑, 将课本上的理论知识和实际有机的结合起来, 独立分析和解决实际问题的 机会。 进一步巩固和复习 作系统的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学
2、生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 2、 设计内容: 根据设计要求实现对基本分页存储管理的模拟 3、 设计要求: 选择恰当的数据结构表示页表 进程名,进程所需页数,进程进行的操作 (装入/退出)等操作可有键盘输 入,也可从文件读出。 每进行一次进程的装入或者退出操作, 就显示出操作执行后内存中各页的分 配情况。 二、算法的基本思想二、算法的基本思想 主要功能函数:主要功能函数: Void creatA() /内存初始化函数 void NewNode(LinkList /内存物理块,0:未使用,非 0:已使用 int max = 99; /记录内存的物理块数,值为 A10
3、0最大下标 int count = 100; /记录内存未使用物理块数 typedef struct LNode int f; /进程号 char name8; /进程名 int size; /进程大小 int n; /进程页数 int ye100; /页表,下标表示页号,内容表示进程各页所在物理块 struct LNode *next; LNode,*LinkList; /内存初始化 void CreatA() int i = 0; for(i = 0;i f); j=0; while(p != NULL else printf(“n该进程已存在,重新输入:“); scanf(“%d“, p
4、 = L;/p 重新指向头结点 j+; if(jname); printf(“n输入进程的大小:“); scanf(“%d“, new_node-n=new_node-size/1024; k=new_node-size%1024; if(k!=0) new_node-n=new_node-n+1; printf(“所需要的页数为:“); printf(“%dn“,new_node-n); if(new_node-n count) printf(“n内存物理块不足,新建进程失败!nn“); else count -=new_node-n; m = 0; for(i= 0; iyem = i;
5、m+; if(L = NULL) L = new_node; else p = L; /查找最后一个节点 while(p-next != NULL) p = p-next; p-next = new_node; new_node-next = NULL; else printf(“n错误次数过多,返回主菜单:“); /回收进程,释放内存 void FreeNode(LinkList int z; printf(“请输入要删除的进程号:“); scanf(“%d“, p = L;/查找进程;用 p 记录 q = p; while(p != NULL) if(p-f=z) printf(“该进程已删除“); break; else q = p; p = p-next; if(p = NULL) printf(“n该进程不存在!n“); else for(int i = 0; i n; i+) Ap-yei = 0; count += p-n; if(p-f= q-f)/要删除的是头结点 L = p-next; else q-next = p-next; /显示所有进程占用的物理块 void Printf(LinkList L) int i = 0; printf(“n内存物理块分配情况:n“); LinkList