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

📄 pcb.java

📁 这是一份标准的课程设计文档
💻 JAVA
字号:
/************************************************************************************
*进程控制块链表:[作业ID][作业状态(0:等待.1:运行)][优先级][当前pc][当前AX][当前BX][当前CX][当前DX][当前在硬盘中的地址]
*************************************************************************************/
package job;
import java.util.*;

public class PCB
{
	private  LinkedList	PCBList;
//	private static boolean	firstRun	=	true;
	private static int SIZE	=	9;
	public PCB()
	{
		//if(firstRun)
		//{
			this.Init();	
		//}
	}
	public void Init()
	{
		PCBList	=	new LinkedList();
	}
	/**************************************************
	*功能描述:	在链表开始处加入一个结点
	***************************************************/
	public void addFirst(int[] pcbValue)
	{
		String	pcb[]	=	new String[SIZE];
		for(int i=0;i<SIZE;i++)
		{
			pcb[i]	=	""+pcbValue[i];
		}	
		PCBList.addFirst(pcb);
	}
	/****************************************************
	*功能描述:	删除莲表最后一个结点
	*****************************************************/
	public void removeLast()
	{
		PCBList.removeLast();
	}
	/****************************************************
	*功能描述:	把最后的结点移到链表最前面的位置
	****************************************************/
	public void Change()
	{
		String pcbString[]	=	new String[SIZE];
		pcbString	=	(String[])PCBList.getLast();
		PCBList.removeLast();	
		PCBList.addFirst(pcbString);
	}
	/****************************************************
	*功能描述:	获取链表最后一个结点的值
	*****************************************************/
	public int[] getLast()
	{
		int pcbInt[]	=	new int[SIZE];
		if(PCBList.size()!=0)
		{
			String pcbString[]	=	new String[SIZE];
			pcbString	=	(String[])PCBList.getLast();
			for(int i=0;i<SIZE;i++)
			{
				pcbInt[i]	=	Integer.parseInt(pcbString[i]);	
			}
		}
		return	pcbInt;
	}
	/*****************************************************
	*功能描述:	设置链表最后一个结点的值
	*******************************************************/
	public void setLast(int[] value)
	{
		String pcbString[]	=	new String[SIZE];
		for(int i=0;i<SIZE;i++)
		{
			pcbString[i]	=	""+value[i];
		}
		int size	=	PCBList.size();
		if(size>0)
			PCBList.set(size-1,pcbString);
	}
	/***********************************************
	*功能描述:	获取链表的大小,即结点个数
	***********************************************/
	public int Size()
	{
		return PCBList.size();	
	}
	/**************************************************
	*功能描述:	获取链表中index位置的结点的值
	*************************************************/
	public int[] Get(int index)
	{
		int pcbInt1[]	=	new int[SIZE];
		for(int i=0;i<SIZE;i++)
		{
			pcbInt1[i]=0;
		}
		if(index>0)
		{
			String pcbString[]	=	new String[SIZE];
			pcbString	=	(String[])PCBList.get(index);
			int pcbInt[]	=	new int[SIZE];
			for(int i=0;i<SIZE;i++)
			{
				pcbInt[i]	=	Integer.parseInt(pcbString[i]);	
			}
			return	pcbInt;
		}
		else return pcbInt1;
	}
	/***************************************************
	*功能描述:	删除作业ID为id的作业的PCB结点
	****************************************************/
	public void Remove(int id)
	{
		for(int i=0;i<PCBList.size();i++)
		{
			String pcbString[]	=	new String[SIZE];
			int jobid;
			pcbString	=	(String[])PCBList.get(i);
			jobid	=	Integer.parseInt(pcbString[0]);	
			if(jobid==id)
			{
				PCBList.remove(i);
				break;
			}
		}
	}
	/***********************************************
	*功能描述:	获取作业在链表中的序号
	************************************************/
	public int getIndex(int id)
	{
		for(int i=0;i<PCBList.size();i++)
		{
			String pcbString[]	=	new String[SIZE];
			int jobid;
			pcbString	=	(String[])PCBList.get(i);
			jobid	=	Integer.parseInt(pcbString[0]);	
			if(jobid==id)
			{
				return i;
			}
		}
		return	-1;
	}
	public int getValue(int id,int pos)
	{
		int index	=	this.getIndex(id);
		if(index==-1)
			return -1;
		String s[]=(String[])PCBList.get(index);
		int value =Integer.parseInt(s[pos]);
		return value;
	}
	public void setValue(int id,int pos,int value)
	{
		int index	=	this.getIndex(id);
		String s[]=(String[])PCBList.get(index);
		s[pos]=""+value;
		PCBList.set(index,s);
	}
	public int PCBSize()
	{
		return	SIZE;	
	}
	public int getLastID()
	{
		int pcbInt[]	=	new int[SIZE];
		if(PCBList.size()!=0)
		{
			String pcbString[]	=	new String[SIZE];
			pcbString	=	(String[])PCBList.getLast();
			for(int i=0;i<SIZE;i++)
			{
				pcbInt[i]	=	Integer.parseInt(pcbString[i]);	
			}
		}
		return	pcbInt[0];
	}
	public void sort()
	{
		if(PCBList.size()>0)
		{
			String s[]=(String[])PCBList.getLast();
			int int_s=Integer.parseInt(s[2]);
			int index=PCBList.size()-1;
			for(int i=0;i<PCBList.size()-2;i++)
			{
				String ss[]=(String[])PCBList.get(i);
				int int_ss=Integer.parseInt(ss[2]);
				//desktop.Desktop.addTextToStateTextField(""+PCBList+">"+int_s+"\n");
				if(int_ss>int_s)
				{
					index=i;
					int_s=int_ss;
				}
			}
			if(index!=PCBList.size()-1)
			{
				String sss[]=(String[])PCBList.remove(index);
				PCBList.addLast(sss);
			}
			//int aa[]	=	this.getLast();
			//desktop.Desktop.addTextToStateTextField(""+aa[0]+">"+aa[2]+"\n");
		}//end if
	}
};

⌨️ 快捷键说明

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