Project4: Creating a Shell Interface
来源:互联网 发布:淘宝怎样才能前几名 编辑:程序博客网 时间:2024/06/01 08:33
Project4:
Creating a Shell Interface
一、实验环境
Ubuntu 10.04系统
Eclipse开发平台
二、实验过程:
1、新建java project,编写代码
我自己编写了测试软件
程序大体思路:
1.1、Bank.java
银行家算法的接口,声明了必要的方法以提供操作;
1.2、BankIml.java
实现Bank接口,存放基本的数据:
intnumOfCustomers= 0;
intnumOfResources;
booleanstate;
boolean[]finish;//存放进程是否完成
int[]available;//存放可获得的资源
int[][]maximum;//存放每个进程需要的最大资源
int[][]allocation;//存放每个进程已经分配到的资源
int[][]need;//存放每个进程还需要得资源
基本函数实现如下:
共有函数:
publicvoid initResourceAvailable(int i,int availablenum)
初始化Available数组,使available[i]=availablenum;
publicvoid initNumOfCustomers(int num)
根据进程(消费者)数量初始化所有数组;
publicvoid addCustomer(int customerNum,int[] maxDemand)
添加消费者,并添加其最大资源使用情况,修改maximum数组对应的值;
publicvoid addCustomerallocation(int customerNum,int[] allocationResource)
添加消费者的已分配资源、需要资源情况,根据int[] allocationResource的值修改allocation[][]、need[][]的customerNum行的值;
publicvoid getState()
根据银行家算法,对现在的状态进行判断。如果进程没有全结束,进行以下操作:找到没有完成的进程,如果分配该进程资源后系统仍处于安全的状态,那么就分配给他资源,并释放它已分配资源,修改它的标志位为已执行,并修改相应资源的数组。如果进程可全部执行完,则系统是安全的,反之不安全。
publicboolean requestResources(int customerNum,int[] request)
分配给customerNum进程request的资源;
publicvoid releaseResources(int customerNum,int[] release)
释放customerNum进程release的资源
为方便实现,我添加了以下私有函数。
私有函数:
privateboolean allFinnish()
判断是否所有的进程都进行完毕,若存在finish[]=false,则返回false;
privatevoid releaseResources(int customerNum)
释放customerNum的已分配的所有资源;
privateboolean requestResources(int customerNum)
判断customerNum对应的进程是否可以释放资源。如果存在avaiable[j]<need[customerNum][j],则返回false;
1.3、TestHarness.java
测试文件,通过读取运行时的参数,初始化一个BankIml的对象。根据用户输出对系统是否安全进行判断。具体如下:
1、分解命令:文件的前两个参数为要读入的两个文件,第一个用以初始化max数组,第二个用于构建allocation数组。命令参数的个数-2(两个文件)即为资源个数,通过循环调用initResourceAailable初始化。
2、根据文件内容初始化max、allocation。
3、然后根据用户输入的申请资源的进程和申请的资源情况分配资源
4、调用getState,返回系统状态(是否安全)
2、运行并测试
运行命令举例:java TestHarness.java max allocation 10 5 7
max
运行结果举例:
Input the number of process which has request (0to4):0
Input the number of resources the request need (3 kinds of resources, input like "1 1 1"):1 1 1
cusrtomer:0 Allocate resource:1 2 3
Release cusrtomer:0
Release cusrtomer:1
Release cusrtomer:4
Release cusrtomer:3
Release cusrtomer:2
The system is ina safe state.
绿色部分为用户输入部分,表示进程0申请资源情况为1 2 3。
黄色部分表示一种进程运行的顺序,并且当前系统处于一个安全的状态。
三、实验总结
通过这个实验,我对银行家算法有了进一步了解,明白了其工作机制和原理,对DeadLock的状态、判断有了深刻的认识。
这次实验,也锻炼了我java编写的能力。尤其是对程序大体框架、输入输出、数组运算、接口和类的编写有了更进一步的认识和提高。
最后,要感谢老师提供材料和课堂上理论的详细讲解,助教的热心帮助和指导。
附:源码(http://jcube.sjtu.edu.cn/f/G51FvGs7z5nN0d8rhttp://)大概有少许BUG,没空调了!!!谁比较闲,调好了记得通知我啊~~
- Project4: Creating a Shell Interface
- 实验报告:Project2:Creating a Shell Interface
- android-Creating a Search Interface
- Android API Guides---Creating a Search Interface
- Search 之Creating a Search Interface
- geekos project4
- Android开发者指南-创建搜索界面-Creating a Search Interface[原创译文]
- Quickly creating, deploying and testing a WebService interface for ADF Business Components
- CS143-project4基于滑窗的人脸检测 Face detection with a sliding window
- Creating a Scrollable DataGrid...
- Creating a Transparent Form
- Creating a Multithreaded Service
- Creating a Delete Button
- Creating a clickable map
- Creating a WCF ACD
- Creating a New Project
- Creating a Parameter Block
- Creating a Singleton Instance
- Project5: Design a File System
- 二叉树中的最近公共祖先问题
- JavaScript程序开发(四)—js语法
- watch、see、look区别是什么呢
- javaScript的作用域链深入理解
- Project4: Creating a Shell Interface
- gearman
- javascript数据类型
- jQuery学习笔记--ajax查询,jQuery解析返回的json数据 详解
- 开发环境配置
- 各种报错
- 「宮崎駿とジブリ美術館』に迷ったのですか?作者は逝世者
- INF文件详解(转)
- django 1.3下关于静态文件staticfiles的设置