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

📄 新建 文本文档.txt

📁 我做的那部分是直接嵌入组长的OS.JAVA文档中,因为OS文档是编写主界面的,所以直接插入OS中比较方便. 主要思想是这样的:就是在主界面上创建一个文本框,用于接受键盘输入.只要在文本框中输入命令,
💻 TXT
字号:
我负责的是设备管理部分,设备管理是操作系统对除CPU和内存之外的所有的设备的管理.设备管理的任务是:提高设备的利用率;设备独立性;字符编码的独立性;设备处理的一致性.设备管理的功能包括:状态跟踪;设备存取;设备分配;设备控制.但是由于我的能力很有限,所以只是做了键盘中断响应其它的没有实现.另外做了个Explorer,是用Java写的浏览器,
我做的那部分是直接嵌入组长的OS.JAVA文档中,因为OS文档是编写主界面的,所以直接插入OS中比较方便.
主要思想是这样的:就是在主界面上创建一个文本框,用于接受键盘输入.只要在文本框中输入命令,无论是否正确,系统将会作出反应.系统可以解释的命令有:process 0-3(因为有四种进程可以创建),start(CPU开始运作),md(创建文件夹),mf(添加文件),df(删除文件),cd(进入指定目录).help(命令帮助).至于Exporer,是用了两个堆栈做的,按下Load键,URL的内容将会储入urlStack中,按下back键,URL的内容就会转存到nextStack中,按下next键,URL的内容就会存回到urlStack中,这样就可以实现后退和前进的功能.
中断调用过程图如下:
键盘中断调用代码如下:
/////////////////////////////////
//////////////////////////////////
//中断
public void interrup()
{
try{rootGroup.wait(1000);printSysMessage("键盘中断,暂停执行的进程,响应中断",7);}catch(Exception even){}
int pramInt =-10; //保存当为Process命令时的参数
inputString= keyBroad.getText().trim();
analyser = new StringTokenizer(inputString," ");

if(analyser.hasMoreTokens()){command = analyser.nextToken().trim();}
if(analyser.hasMoreTokens()){pram = analyser.nextToken().trim();}
if( ! pram.equals(""))try{pramInt = Integer.parseInt(pram);}catch(Exception evn){pramInt=-10;}
if(command.equals("process")&&pramInt!=-10){create(pramInt%4);OS.printUserMessage("新建"+String.valueOf(pramInt%4)+"类进程",7);}
else if(command.equals("process")){create();OS.printUserMessage("随机新建进程",7);}
else if(command.equals("start"))try{hasStart=true;}catch(Exception ea){}//开始
else if(command.equals("md"))fileSystem.addDoc(pram);//创建文件夹
else if(command.equals("mf"))fileSystem.addFile(pram);//创建文件
else if(command.equals("df"))fileSystem.delFile(pram);//删除文件
else if(command.equals("cd"))fileSystem.changeDoc(pram);
//解释cd命令



//OS.printUserMessage("输入: "+inPut);
keyBroad.setText("");
if(hasStart)try{rootGroup.wait(700);rootGroup.resume();printSysMessage("中断结束,恢复执行的进程,响应完成",7);}catch(Exception en){System.out.println(en.toString());}
else printSysMessage("中断结束,恢复执行的进程,响应完成",7);
}
///////////////////////////////////////////////
//////////////////////////////
Explorer类:是一个用户接口,是一个模拟现在通用操作系统中的浏览器的功能.可以浏览http协议的网页,不支Applet和JavaScript.
代码如下:
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.UIManager;
import javax.swing.event.*;
import java.io.*;
import javax.swing.border.*;
import java.util.Random;
import java.lang.Thread;
import java.lang.ThreadGroup;
import java.lang.System;
class Explorer extends JFrame implements ActionListener,HyperlinkListener
{ JTextPane browser;
JPanel addressBar;
JTextField webUrl;
JButton loadButton;
JButton backButton;
JButton forwardButton;
JScrollPane scroll;
boolean firstTime=true;
Stack urlStack;
Stack nextStack;
public Explorer()
{ //设置窗口
super("Mic Explorer");
super.setSize(630,430);
//定义两个堆栈
urlStack = new Stack(); 
nextStack = new Stack();
browser = new JTextPane();
browser.setEnabled(false);
browser.setContentType("text/html");

addressBar = new JPanel();
webUrl = new JTextField(30);

loadButton = new JButton("Load");
backButton = new JButton("Back");
forwardButton = new JButton("Next");
loadButton.addActionListener(this);
backButton.addActionListener(this);
forwardButton.addActionListener(this);
scroll = new JScrollPane(browser);
addressBar.add(new JLabel("URL:"));
addressBar.add(webUrl);
addressBar.add(new JLabel(" "));
addressBar.add(loadButton);
addressBar.add(backButton);
addressBar.add(forwardButton);
browser.addHyperlinkListener(this);
super.getContentPane().add(addressBar,BorderLayout.NORTH);
super.getContentPane().add(scroll,BorderLayout.CENTER);
//super.pack();

}
public void actionPerformed(ActionEvent e)
{if(e.getSource()==loadButton)
{ try {urlStack.push(webUrl.getText());
firstTime = true;

//nextStack.push(webUrl.getText());
browser.setPage(webUrl.getText()); 
}
catch(Exception evt){browser.setText("Error"+evt);}

}
else if(e.getSource()==backButton)
{ if(urlStack.size()<=1)return;
try{if(firstTime){nextStack.push(webUrl.getText());firstTime = false;}
urlStack.pop();
String urlString = (String)urlStack.peek();
nextStack.push(urlString);
webUrl.setText(urlString);
browser.setPage(urlString);
}
catch(Exception evt){browser.setText("Error"+evt);}

}
else if(e.getSource()==forwardButton){ 
if(nextStack.size()<=1)return;
try{
nextStack.pop();
String urlString = (String)nextStack.peek();
urlStack.push(urlString);
webUrl.setText(urlString);
browser.setPage(urlString);
}
catch(Exception evt){browser.setText("Error"+evt);}

}
}
public void hyperlinkUpdate(HyperlinkEvent link)
{ 
if(link.getEventType()==HyperlinkEvent.EventType.ACTIVATED)
{ try{urlStack.push(link.getURL().toString());
webUrl.setText(link.getURL().toString());
browser.setPage(link.getURL());
}
catch(Exception evt){browser.setText("Error"+evt);}
}
if(link.getEventType()==HyperlinkEvent.EventType.ENTERED)
{ try{urlStack.push(link.getURL().toString());
webUrl.setText(link.getURL().toString());
browser.setPage(link.getURL());
}
catch(Exception evt){browser.setText("Error"+evt);}
}
}

}
个人体会:
通过这次的课程设计使自己的Java编程能力加强了不少,对数据结构有更深一层的了解.也使我更加体会到团体合作的重要性,由于自己的水平非常之有限,所以有很多问题都无法解决,多得各位组员的帮助才可以完成这个作业.使我对操作系统特别是设备管理这一部分的认识有了很大的加深,虽然有很多功能我都无法模拟出来,不过对于操作系统是怎么实现这些功能还是了解的.一分耕耘,一分收获,这次的课程设计让我受益匪浅.虽然自己所做的很少也不够完善,但毕竟也是努力的结果.
恢复现场,恢复原来进程
中断调用完毕
执行中断例程
暂停当前进程,保护现场
中断调用
中断调用过程图

⌨️ 快捷键说明

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