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