⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory.java

📁 这是一份标准的课程设计文档
💻 JAVA
字号:
/********************************************
*虚拟内存
*2004-9-14		编写者:赖卫国
*********************************************/
package memory;
import java.util.*;
import myException.*;

public class Memory
{
	private	boolean	first	=	false;
	private static String	Memory[][];
	private static int blocks;
	private static int blocksize;
	//初始化Memory
	public Memory(int Blocks,int BlockSize)
		throws OnlyOneMEMException
	{
		if(!first)
		{
			first	=	true;
			Memory	=	new String[Blocks][BlockSize];
			blocks	=	Blocks;
			blocksize	=	BlockSize;
			for (int i = 0;i<Blocks ;i++ )
			{
				Memory[i][0]	=	"0";
				for(int j=1;j<BlockSize;j++)
					Memory[i][j]	=	"NULL";
			}
		}
		else throw new OnlyOneMEMException();
	}
	/*****************************************************
	*功能描述:	插入一个页面到内存
	*参数说明:	index:内存的块号	page[]:要插入的页面
	******************************************************/
	public void insertPage(int index,String page[])
	{
		Memory[index][0]	=	"1";
		for (int i = 0;i<page.length ;i++ )
		{
			Memory[index][i+1]	=	page[i];
		}
	}
	/*****************************************************
	*功能描述:	清除某一页
	*参数说明:	index:内存的块号
	******************************************************/
	public void clearPage(int index)
	{
		Memory[index][0]	=	"0";
	}
	/*****************************************************
	*功能说明:	获取某一内存单元的值
	*参数说明:	block:块号		offset:块内偏移地址
	*****************************************************/
	public String getValue(int block,int offset)
	{
		return	Memory[block][offset];
	}
	/*****************************************************
	*功能说明:	设置某一内存单元的值
	*参数说明:	block:块号		offset:块内偏移地址	value:插入的值
	*****************************************************/
	public void setValue(int block,int offset,String value)
	{
		Memory[block][offset]	=	value;
	}
	/*******************************************************
	*功能描述:	找到合适的内存空间的地址
	*返回值:	找到的内存块的地址
	*******************************************************/
	public int findBest()
	{
		int min	=	-1;//Integer.parseInt(Memory[0][0]);
		for (int i=0;i<blocks ;i++ )
		{
			if (Memory[i][0].trim().equals("0"))
			{
				return	i;
			}
			/*else if (min > Integer.parseInt(Memory[i][0]))
			{
				min	=	Integer.parseInt(Memory[i][0]);
			}*/
		}
		return min;
	}
	/******************************************************
	*功能描述:	当某一内存块再次被调用时,计数器加一
	*参数说明:	index:	内存块的地址
	*******************************************************/
	public void useAgain(int index)
	{
		int	i	=	Integer.parseInt(Memory[index][0]);
		i++;
		Memory[index][0]	=	""+i;
	}
	public int count()
	{
		int count = 0;
		for(int i=0;i<blocks;i++)
		{
			if(Memory[i][0].trim().equals("0"))
				count++;
		}
		return count;	
	}
	/*************************************************
	*功能描述:	把index页的内存设置为空
	***************************************************/
	public void setNew(int index)
	{
		Memory[index][0]	=	"0";
		for(int i=1;i<blocksize;i++)
		{
			Memory[index][i]	=	"NULL";
		}
	}

};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -