资源简介

计算机操作系统模拟实现 进程管理模拟:实现操作系统进程管理功能,如实现进程的控制(进程创建,状态转换、进程撤销),进程并发执行。 文件管理模拟:实现文件系统的管理,如目录管理,创建文件,打开文件,读写文件,删除文件等功能。 内存管理模拟:实现内存的三种请求分页算法 设备管理模拟:实现设备的分配回收等功能。

资源截图

代码片段和文件信息

package file;
import java.awt.*;
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;
public class VirtualDisk extends JPanel implements Serializable{

private static final long serialVersionUID = 1L;
private byte[][] content=new byte[128][64];
private boolean[] flag=new boolean[128];
private JButton[] button=new JButton[128];
private Color color;
private VirtualFileModel treeModel;
public VirtualDisk(){
setBorder(BorderFactory.createtitledBorder(
BorderFactory.createEtchedBorder()“模拟硬盘“));
setLayout(new GridLayout(168));
for(int i=0;i<128;i++){
flag[i]=false;
add(button[i]=new JButton());
button[i].setPreferredSize(new Dimension(55));
for(int j=0;j<64;j++)
content[i][j]=-1;
}
color=button[0].getBackground();
//磁盘的第0、1块磁盘块存放文件分配表
//第2块磁盘块存放根目录
//所以他们为系统占用
flag[0]=flag[1]=flag[2]=true;
button[0].setBackground(Color.green);
button[1].setBackground(Color.green);
button[2].setBackground(Color.green);
content[0][0]=1;
createRootDirectory();
serializeToDisktxt();
}
private void serializeToDisktxt() {
objectOutputStream out;
try{
out=new objectOutputStream(new FileOutputStream(“src/file/disk.txt“));
out.writeobject(this);
out.writeobject(null);
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
private void createRootDirectory() {
char[] direName=new char[]{‘R‘‘O‘‘T‘};
for(int i=0;i<3;i++)
content[2][i]=(byte)direName[i];
content[2][3]=(byte)VirtualFile.EXETENSION_DIRECTORY_FILE;
content[2][5]=2;
content[2][6]=0;
content[2][7]=8;
//说明:一开始目录文件只有控制部分 8字节长度
}
public void createFile(VirtualFile parentVirtualFile child){
int pIndex=parent.getFileControl()[5];//父文件的起始盘块号
//父目录文件的长度
int pLength=parent.getFileControl()[6]*128+parent.getFileControl()[7];
for(int i=3;i<128;i++){
if(flag[i]==false){
child.setStartBlockNum(i);//设置起始盘块号
child.setFileLength(8);//设置初始文件长度
parent.setFileLength(pLength+1);//父目录文件长度增1 并记录子文件的起始盘块号
content[pIndex][7]+=1;
content[pIndex][pLength]=(byte)i;
byte[] control=child.getFileControl();//得到新建文件的文件控制
for(int j=0;j<8;j++) //把文件控制写入磁盘
content[i][j]=control[j];
flag[i]=true;
button[i].setBackground(Color.orange);
break;
}
}
serializeToDisktxt();
}
public void deleteFile(DefaultMutableTreeNode parentDefaultMutableTreeNode choseNode){
//更新视图
treeModel.removeNodeFromParent(choseNode);
//更新存放子文件的磁盘块
VirtualFile file=(VirtualFile)choseNode.getUserobject();
//如果要删除的是目录文件,那么它的所有自文件应该一并删除
if(file.getFileExtension().equals(“d“)){
deleteAllFileUnderThis(file.getFileControl()[5]);
}
int start=file.getFileControl()[5];
flag[start]=false;
button[start].setBackground(color);
for(int i=0;i<64;i++)
content[start][i]=-1;
//更新存放父文件的磁盘块
VirtualFile parentFile=(VirtualFile)parent.getUserobject()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        301  2019-04-21 11:48  操作系统模拟\.classpath

     文件          0  2019-04-21 17:02  操作系统模拟\.metadata\.lock

     文件        985  2019-04-21 17:02  操作系统模拟\.metadata\.log

     文件        561  2019-04-21 17:02  操作系统模拟\.metadata\.mylyn\repositories.xml.zip

     文件          1  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes\history.version

     文件         57  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes\properties.index

     文件          1  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes\properties.version

     文件         81  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.resources\.root\1.tree

     文件        488  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.resources\.safetable\org.eclipse.core.resources

     文件         42  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.core.resources.prefs

     文件        623  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs

     文件         58  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jst.j2ee.webservice.ui.prefs

     文件         73  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.m2e.discovery.prefs

     文件         62  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.mylyn.context.core.prefs

     文件         97  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.mylyn.monitor.ui.prefs

     文件        194  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.mylyn.tasks.ui.prefs

     文件         69  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.team.ui.prefs

     文件         69  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.editors.prefs

     文件        129  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.ide.prefs

     文件        371  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.ui.workbench.prefs

     文件     441935  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.e4.workbench\workbench.xmi

     文件         20  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\http-cache\segments.gen

     文件         32  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\http-cache\segments_1

     文件         20  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\segments.gen

     文件        240  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\segments_1

     文件          0  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\write.lock

     文件         11  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\_0.fdt

     文件         12  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\_0.fdx

     文件         15  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\_0.fnm

     文件          0  2019-04-21 17:02  操作系统模拟\.metadata\.plugins\org.eclipse.epp.logging.aeri.ide\org.eclipse.epp.logging.aeri.ide.server\local-history\_0.frq

............此处省略152个文件信息

评论

共有 条评论