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

📄 sun.java

📁 内存分页技术模拟 新增进程(包括将其分页)、删除进程、定位进程
💻 JAVA
字号:
import javax.swing.JOptionPane;
import java.lang.String;
public class sun							//主类
{
	public static void main(String args[])	//主函数
	{
		PageFILE p = new PageFILE();
		p.num=p.getInfo();
		String[] p1= new String[p.num];
		newStr(p.num,p1);
		//outputStr(p.num,p1);

		while(p.ch!=4)
		{
			p.ch=p.getChoice();
			if(p.ch==1)
			{
				p.addThread(p1);
				outputStr(p.num,p1);
			}
			if(p.ch == 2)
			{
				p.delThread(p1);
				outputStr(p.num,p1);
			}
			if (p.ch == 3)
			{
				p.calculateThread(p1);
				outputStr(p.num,p1);
			}
			System.out.println("-------------------------------------------------------");
		}
		System.exit(0);
	}


	static void newStr(int num,String[]p1)
	{
			for(int i=0;i<p1.length;i++)
			{
				p1[i]="空";

			}
	}
	static void outputStr(int num,String p[])
	{
		for(int i=0;i<num;i++)
		{
			System.out.println(p[i]);
		}
	}
}

class PageFILE
{
	int ch,num=0;						//ch:choice,num:总页数

	int getInfo()
	{
		String num1;
		int num;
		num1=JOptionPane.showInputDialog("请输入内存页数大小:");
		num=Integer.parseInt(num1);
		return num;
	}
	int getChoice()
	{
		String choice;
		int ch;
		choice = JOptionPane.showInputDialog("请选择操作: 1新建线程 2删除分页 3定位页号与偏移量 4取消");
		ch=Integer.parseInt(choice);


		return ch;
	}

	void addThread(String x[])
	{
		String input;
		int len=0,size=0;
		input=JOptionPane.showInputDialog("请输入线程名: ");
		size=Integer.parseInt(JOptionPane.showInputDialog("请输入该线程大小(将以4K为一页):"));
		len=(size+3)/4;
		int count=0;
		for (int j=0; j<x.length;j++)
		{
			if(x[j]=="空") count++;
		}
		if (len>count) {System.out.print("对不起,内存不足\n");return;}
		int c=0;



		for(int k=0; k<x.length;k++)
		{
			if(x[k]=="空")
			{
				x[k]=input+"."+String.valueOf(c);
				c++;
			}
			if (c==len) return;
		}
	}

	void delThread(String x[])
	{
		String delName;
		int count=0;
		delName=JOptionPane.showInputDialog("请输入线程名:");
		for(int i=0;i<x.length;i++)
		{
			if(x[i].startsWith(delName+"."))
			{
				x[i]="空";
				count++;
			}
		}
		if(count == 0)System.out.println("没有找到该文件名!");
		else
		{
			System.out.println();
			System.out.println("删除成功\n"+count+"页被删除!");
		}


	}
	void calculateThread(String x[])
	{
		String calName,calNum;
		int bef_num,cal_num;
		calName=JOptionPane.showInputDialog("请输入线程名:");
		bef_num=Integer.parseInt(JOptionPane.showInputDialog("请输入偏移量:"));

		for(int i=0;i<x.length;i++)
		{
			if(x[i].startsWith(calName+"."))
			{
				int phy_num;
				phy_num=i*4096+bef_num;
				calNum=String.valueOf(phy_num);
				System.out.println("该进程的页号为"+i+"\n 物理地址为"+calNum);}
		}
	}
}


⌨️ 快捷键说明

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