模拟内存管理
一、目的
模拟动态分区管理凡是来管理内存,实现内存的虚拟分配和回收,观察内存空闲链表和内存分配表在内存分配和回收过程中数据的变化,分析用户程序虚拟地址空间分布。
二、内容:
随机产生数据,或随机产生进程,或由用户输入进程相应信息,实现动态请求分页内存管理,主要功能包括:内存分配、内存回收、内存空闲链表的变化、页表、快表、内存分配和回收过程的模拟。
三、预备内容
阅读和学习教材关羽存储器管理和虚拟存储器管理的相关内容,了解内存分配算法、内容分配和回收机制、内存管理过程中需要的数据结构,如页表、快表
熟悉一种编程语言:Java或C
四、实验指导
1. main 方法
public static void main(String[] args){
//…..
System.out.print(“请输入内存大小:”);
mlength=a.nextInt();
System.out.print(“请输入外存大小:”);
slength=a.nextInt();
System.out.print(“请输入页表大小:”);
plength=a.nextInt();
System.out.print(“请输入快表大小:”);
…..; //初始化快表,外存,内存
…….// 用户创建进程,那么就创建页表。或者简易做法,假定系统只有一个进程,直接创建一个页表,后面的实验都通过页表修改等完成,如programFunction中
…//可以产生一些随机数,放在外存
while(true){
….
programFunction();
….
}
……
}
public void programFunction(){
System.out.println(“****************************请求分页存储系统****************************”);
System.out.println(“功能:”);
System.out.println(“\t 1.查看页表”);
System.out.println(“\t 2.查看快表”);
System.out.println(“\t 3.查看外存”);
System.out.println(“\t 4.在内存修改数据”);
System.out.println(“\t 5.继续访问页面”);
System.out.println(“\t 6.退出程序”);
}
public void Dealfunction(int i,TLB tlb, Source s[],int b[]){
if(i==1)
//printPageShell();
else if(i==2)
tlb.printTLB();
else if(i==3){
System.out.println(“外存:”);
System.out.println(“外存地址\t”+”页号\t”+”数据\n”);
for(int k=0;k