📄 memory.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 + -