?? sun.java
字號:
import javax.swing.JOptionPane;
import java.lang.String;
public class sun //主類
{
public static void main(String args[]) //主函數(shù)
{
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:總頁數(shù)
int getInfo()
{
String num1;
int num;
num1=JOptionPane.showInputDialog("請輸入內(nèi)存頁數(shù)大小:");
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èi)存不足\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("該進(jìn)程的頁號為"+i+"\n 物理地址為"+calNum);}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -