编写单通路IO系统中的设备分配程序实验报告.docx

上传人:b****3 文档编号:2125595 上传时间:2022-10-27 格式:DOCX 页数:21 大小:184.25KB
下载 相关 举报
编写单通路IO系统中的设备分配程序实验报告.docx_第1页
第1页 / 共21页
编写单通路IO系统中的设备分配程序实验报告.docx_第2页
第2页 / 共21页
编写单通路IO系统中的设备分配程序实验报告.docx_第3页
第3页 / 共21页
编写单通路IO系统中的设备分配程序实验报告.docx_第4页
第4页 / 共21页
编写单通路IO系统中的设备分配程序实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

编写单通路IO系统中的设备分配程序实验报告.docx

《编写单通路IO系统中的设备分配程序实验报告.docx》由会员分享,可在线阅读,更多相关《编写单通路IO系统中的设备分配程序实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

编写单通路IO系统中的设备分配程序实验报告.docx

编写单通路IO系统中的设备分配程序实验报告

 

合肥学院

计算机科学与技术系

实验报告

2013~2014学年第1学期

 

课程

操作系统原理

实验名称

编写单通路I/O系统中的

设备分配程序

学生姓名

张玉东杨少帅舒正昇

陈杰孙元进

专业班级

11计本(3)班

指导教师

屠菁

2000年12月

一、实验目的

熟练掌握单通路I/O系统中的设备分配方法。

二、实验内容

本实验要求实现模拟单通路I/O系统中的设备分配程序,有如下要求:

1、设计系统设备表SDT、设备控制表DCT、控制器表COCT、通道表CHCT和逻辑设备表LUT。

2、提供给用户各表目的初态。

3、回答信息:

能够分配时,给出设备号、控制器号、通道号,

否则,给出无法分配的回答,插入相应的等待队列。

三、实验步骤

1、任务分析

为单通路I/O系统设计系统设备表SDT、设备控制表DCT、控制器表COCT、通道表CHCT和逻辑设备表LUT五张表。

用户可以查看各表目的内容,另外,程序为用户进程分配设备,并且输出分配结果,如果能够分配,则给出设备号、控制器号、通道号,否则,给出无法分配的回答,插入相应的等待队列。

2、概要设计

为实现本次实验任务要求,首先,定义SDT、DCT、COCT、CHCT、LUT五张表,调用AddCHCT、AddCOCT、AddDCT类初始化各表内容;其次,调用displaySDT、displayDCT、displayCOCT、displayCHCT、displayLUT方法实现对上述五张表的输出显示;最后,调用SimulationAdd类,为用户进程申请设备,如果分配成功,给出设备号、控制器号、通道号,否则,给出无法分配的原因,并将该进程插入相应的等待队列中。

本程序包含如下3个模块:

(1)主模块,由类Equipement组成。

(2)初始化模块,由AddCHCT、AddCOCT、AddDCT类组成。

(3)显示表目模块,由displaySDT、displayDCT、displayCOCT、displayCHCT、displayLUT方法组成。

(4)分配设备模块,由SimulationAdd等类组成。

绘制流程图如下:

流程图

3、详细设计和编码

通过以上的分析和初步设计,已经对本程序作了初步了解。

下面将对本程序的各个模块作详细的讲解。

(1)主类模块

调用各个子模块,完成特定的功能。

(2)初始化模块

对各个表就行初始化,设置好各个表的状态,以及对各个步骤进行类调用来实现本实验的要求。

(3)显示表目模块

调用displaySDT、displayDCT、displayCOCT、displayCHCT、displayLUT方法,显示出SDT系统设备表、DCT设备控制表、COCT控制器控制表、CHCT通道表和LUT逻辑设备表五张表目,直接显示各表中的设备类型、设备名称和设备状态等信息。

(4)分配设备模块

在此模块中,首先调用SimulationAdd类,要求用户选择所要申请的逻辑设备名称,然后根据逻辑设备名称查看LUT表中的该设备是否存在,若不存在,则直接退出分配,输出分配失败原因,若存在,则继续如下分析:

a.分配设备。

根据LUT表找到设备表,然后根据SDT表中指向DCT表该设备的指针,检索到DCT设备控制表中该物理设备,检查该设备的状态信息Busy。

若忙,则将要求I/O的进程插入到该设备的等待队列中等待;若不忙,则继续步骤(b)。

b.分配控制器。

根据设备控制表DCT中的控制器表指针,可找到与此设备相连的控制器表COCT,通过检查该表中的状态信息Busy。

若忙,则将要求I/O的进程插入到等待该控制器的队列中等待;若不忙,则把该控制器分配给进程,继续步骤(c)。

c.分配通道。

首先根据控制器表COCT中的通道表指针找到与此控制器相连的通道表CHCT,从中了解此通道的状态信息Busy。

若为忙,则把该进程插入等待通道的队列CHL中;若通道空闲,则表明本次I/O请求所需之I/O设备和相应的控制器、通道都能得到,于是便可启动I/O设备开始数据传送。

调用equipementFunction方法来实现上述步骤。

分配完成后,将相应的设备、控制器和通道的状态信息Busy置1。

结束分配程序。

4、调试分析

本次程序设计的核心内容在于设备的分配过程,一次分配只有在设备、控制器和通道三者都分配成功时,这次分配才算成功。

该程序的核心逻辑关系是先分配设备再分配控制器最后分配通道。

当三者都空闲并安全时,才可分配,最终启动该I/O设备进行数据传送。

5、测试结果

数据库表:

主界面:

图1

图2

图3

初始化设备:

显示各表信息:

图4

进程分配信息

图5

四、实验总结

通过本次实验,充分的理解了单通道I/O设备分配程序,知道了设备表,控制器表,通道表以及其他表的数据结构,加深了对课本知识的理解,明白了设备分配的过程:

先分配设备,接下来分配控制器,然后再分配通道,若成功就可以启动该I/O设备进行数据传送了。

同时,通过和同学一起做这个实验,从中学习到了合作的经验,为以后的工作打下基础。

经过编写程序,复习了JAVA语言程序。

深刻体会团队分工合作的重要性。

五、附录

部分源程序:

packagecn.edu.hfuu.action;

 

importjava.awt.EventQueue;

publicclassEquipementextendsJFrame{

privateJPanelcontentPane;

publicTextAreatextArea;

/**

*Launchtheapplication.

*/

publicstaticvoidmain(String[]args){

EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

try{

Equipementframe=newEquipement();

frame.setVisible(true);

}catch(Exceptione){

e.printStackTrace();

}

}

});

}

/**

*Createtheframe.

*/

publicEquipement(){

setTitle("\u6A21\u62DF\u5355\u901A\u8DEFI/O\u7CFB\u7EDF\u4E2D\u7684\u8BBE\u5907\u5206\u914D");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100,100,561,296);

JMenuBarmenuBar=newJMenuBar();

setJMenuBar(menuBar);

JMenumenu=newJMenu("\u6DFB\u52A0");

menuBar.add(menu);

JMenuItemmenuItem_3=newJMenuItem("\u6DFB\u52A0\u901A\u9053");

menuItem_3.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

addCHCT(e);

}

});

menu.add(menuItem_3);

JMenuItemmenuItem_4=newJMenuItem("\u6DFB\u52A0\u63A7\u5236\u5668");

menuItem_4.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

addCOCT(e);

}

});

menu.add(menuItem_4);

JMenuItemmenuItem_5=newJMenuItem("\u6DFB\u52A0\u8BBE\u5907");

menuItem_5.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

addDCT(e);

}

});

menu.add(menuItem_5);

JMenumenu_1=newJMenu("\u663E\u793A");

menuBar.add(menu_1);

JMenuItemmntmsdt=newJMenuItem("\u7CFB\u7EDF\u8BBE\u5907\u8868(SDT)");

mntmsdt.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

displaySDT(e);

}

});

menu_1.add(mntmsdt);

JMenuItemmntmdct=newJMenuItem("\u8BBE\u5907\u63A7\u5236\u8868(DCT)");

mntmdct.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

displayDCT(e);

}

});

menu_1.add(mntmdct);

JMenuItemmntmcoct=newJMenuItem("\u63A7\u5236\u5668\u63A7\u5236\u8868(COCT)");

mntmcoct.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

displayCOCT(e);

}

});

menu_1.add(mntmcoct);

JMenuItemmntmchct=newJMenuItem("\u901A\u9053\u63A7\u5236\u8868(CHCT)");

mntmchct.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

displayCHCT(e);

}

});

menu_1.add(mntmchct);

JMenuItemmntmlut=newJMenuItem("\u903B\u8F91\u8BBE\u5907\u8868(LUT)");

mntmlut.addActionListener(newAction

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1