分页存储管理实验报告_第1页
分页存储管理实验报告_第2页
分页存储管理实验报告_第3页
分页存储管理实验报告_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统实验三报告一实验名称:分页存储管理二实验目的:了解分页存储管理在内存空间分配的作用三实验内容:分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,相应的,也把内存空间分成与页面相同大小的若干个存储块,称为物理块或页框,同样加以编号,在为进程分配内存时,以块为单位将进程的若干个也分别装入到多个可以不相邻的物理块中。系统为每个进程建立了一张页面映像表,简称页表。位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况,这里用位示图来表示内存分配情况。四实验代码4 / 4文档可自由编辑打印#include <stdafx.h>#inclu

2、de <stdlib.h>#include <stdio.h>typedef int datatype;typedef struct node datatype pageNum,blockNum; struct node *next;linknode;typedef linknode *linklist;linklist creatlinklist(int n) linklist head,r,s;int x,y,i=0; head=r=(linklist)malloc(sizeof(linknode);printf("开始创建页表n"); prin

3、tf("请分别输入页表的页号及块号(-1表示空):n");printf("n页号 块号n"); while (i<n) scanf("%d %d",&x,&y); s=(linklist)malloc(sizeof(linknode); s->pageNum=x;s->blockNum=y; r->next=s; r=s;i+; r->next=NULL; return head;void print(linklist head) linklist p; p=head->next;

4、printf("n该页表为:");printf("n页号 块号n"); while(p) printf("%d%7dn",p->pageNum,p->blockNum); p=p->next; printf("n");/*初始化位示图,将值全置为零,0表示空闲状态*/void init(int g100100,int N)int i,j;for(i=0;i<100;i+)for(j=0;j<100;j+)gij=0; gN+10=N*N; /*对作业的每一个页进行分配对应位示图里的块*

5、/linklist Dis(linklist head,int g100100,int n,int N)linklist p;int i,j;p=head->next;if(n<=gN+10) while(p)for(i=0;i<N;i+)for(j=0;j<N;j+)if(gij=0)p->blockNum=N*i+j; gij=1;gN+10-; break; break; p=p->next; return head;/*回收已经完成的页*/linklist Recy(linklist head,int g100100,int n,int N)int

6、i,j;linklist p;p=head->next;while(p&&p->pageNum!=n) p=p->next;if(p) i=p->blockNum/N;j=p->blockNum%N;gij=0; gN+10+;p->blockNum=-1; return head;/*打印位示图*/void printStr(int g100100,int N)int i,j;printf("此时位示图为:n ");for(i=0;i<N;i+)printf(" ");printf("

7、%d",i);printf("n");for(i=0;i<N;i+)printf("%d",i);for(j=0;j<N;j+)printf(" ");printf("%d",gij);printf("n");void main()int n,N,x,y;int graph100100;linklist head;printf("输入位示图的字长:");scanf("%d",&N);printf("输入作业的页数:&

8、quot;);scanf("%d",&n);head=creatlinklist(n);print(head);init(graph,N); printStr(graph,N);printf("n现在进行作业分配:");head=Dis(head,graph,n,N);print(head); printStr(graph,N);printf("是否回收已完成的页,“是”1,“否”0:");scanf("%d",&x);if(x) /判断是否要回收printf("n请输入您要回收的页号:");scanf("%d",&y);head=Recy(head,graph,y,N);print(head); printStr(graph,N);五实验截图:六实验心得:通过这次实验,了解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论