资源简介
实验一 进程调度
实验二 银行家算法
实验三 内存管理
实验四 磁盘调度
代码片段和文件信息
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
public class Banker {
int available_resour[] = {10 15 12};
int PCB_NUM = 5;//进程数
int RESOURCE_NUM = 3;//资源种类数
PCB[] pcb = new PCB[PCB_NUM];
double pTime; //时间片
int run; //当前运行的进程,没有则为-1
long lastTime; //每次调度程序都记录当前时间
long beginTime;//程序开始时间
private class PCB {
String name; //进程名
int need_resour[] = new int[RESOURCE_NUM]; //需要的资源
int allocated_resour[] = new int[RESOURCE_NUM]; //已用资源
int apply_resour[] = new int[RESOURCE_NUM];//当前申请的资源
char state; //进程状态
void applyResource() {
Random r = new Random();
for (int i = 0; i < apply_resour.length; i++) {
if (need_resour[i] <= 1) {//需要的剩下1或0时直接申请,不随机
apply_resour[i] = need_resour[i];
} else {
apply_resour[i] = r.nextInt(need_resour[i] + 4);
}
}
System.out.printf(name + “申请了“ + arrayToString(apply_resour) + “: “);
}
}
boolean isAllFinished() {
for (int i = 0; i < PCB_NUM; i++) {
if (pcb[i].state != ‘F‘) return false;
}
return true;
}
boolean isFinished(int check) {
for (int i = 0; i < RESOURCE_NUM; i++) {
if (pcb[check].need_resour[i] != 0) return false;
}
return true;
}
void init() {
run = -1;
Random r = new Random();
for (int n = 0; n < PCB_NUM; n++) {
pcb[n] = new PCB();
pcb[n].name = Character.toChars(65 + n)[0] + ““;
for (int m = 0; m < RESOURCE_NUM; m++) {
pcb[n].need_resour[m] = r.nextInt(available_resour[m] / 2) + 1;//需要的资源
}
}
for (int n = 0; n < PCB_NUM; n++) {
for (int m = 0; m < RESOURCE_NUM; m++) {
pcb[n].allocated_resour[m] = 0;
pcb[n].apply_resour[m] = 0;
}
pcb[n].state = ‘W‘;
}
}
String arrayToString(int[] array) {
String result = ““ + array[0];
for (int i = 1; i < array.length; i++) {
result += “ “ + array[i];
}
return result;
}
void print() {
System.out.println(“\n====================================================“);
System.out.printf(“进程名 需要资源(A B C) 已用资源(A B C) 进程状态\n“);
for (int i = 0; i < PCB_NUM; i++) {
System.out.printf(“%-6s %-17s %-17s %-8s\n“ pcb[i].name arrayToString(pcb[i].need_resour)
arrayToString(pcb[i].allocated_resour) pcb[i].state);
}
System.out.println(“此时系统资源(A B C):“ + arrayToString(available_resour));
System.out.println(“====================================================\n“);
lastTime = Syst
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-20 13:09 操作系统实验报告\
目录 0 2017-11-20 16:31 操作系统实验报告\out\
文件 166 2017-11-17 09:38 操作系统实验报告\out\Banker$1.class
文件 1522 2017-11-17 09:38 操作系统实验报告\out\Banker$PCB.class
文件 7182 2017-11-17 09:38 操作系统实验报告\out\Banker.class
文件 76361 2017-11-20 16:19 操作系统实验报告\out\disc.exe
文件 7856 2017-11-20 16:19 操作系统实验报告\out\disc.o
文件 82 2017-11-19 13:48 操作系统实验报告\out\input.txt
文件 74281 2017-11-17 22:32 操作系统实验报告\out\memory.exe
文件 6128 2017-11-17 22:32 操作系统实验报告\out\memory.o
文件 199 2017-11-16 10:40 操作系统实验报告\out\ProcessController$1.class
文件 763 2017-11-16 10:40 操作系统实验报告\out\ProcessController$PCB.class
文件 7716 2017-11-16 10:40 操作系统实验报告\out\ProcessController.class
目录 0 2017-12-10 16:43 操作系统实验报告\src\
文件 11024 2017-11-20 17:13 操作系统实验报告\src\Banker.java
文件 5350 2017-11-20 16:19 操作系统实验报告\src\disc.c
文件 4713 2017-11-20 17:12 操作系统实验报告\src\memory.c
文件 10465 2017-11-20 17:13 操作系统实验报告\src\ProcessController.java
文件 10695 2017-12-10 16:41 操作系统实验报告\src\ProcessMemoryController.java
文件 1193472 2018-01-20 13:07 操作系统实验报告\实验报告.doc
相关资源
- 《操作系统精髓与设计原理·第六版》
- 求实验数据的spwvd分布,包括功率谱,
- 操作系统考题例题练习题
- DA14580 的BLE 蓝牙收发实验
- 正交实验设计软件II专业版+v3[1].exe
- 机组满分实验报告.rar
- 小型超市管理系统实验报告.docx
- 电磁场虚拟实验报告北理工
- 机器学习实验(Lasso求解算法预测波士
- 东北大学软件学院操作系统实验报告
- 交通灯微机原理综合性实验.doc
- FM调制与解调labview源代码以及USRP进行
- mit jos lab4代码及其实验报告
- StorageAndBufferManager 高级数据库系统实
- 中科大软院软件系统测试实验报告3
- 《MIT JOS Lab1: Booting a PC》实验代码
- 南昌大学汇编实验报告
- 软件测试实验报告
- 北邮编译原理实验二:语法分析程序
- 五邑大学数据结构实验
- inSAR实验报告
- 北邮计通网实验八路由器配置
- 北邮计通网实验三DNS DHCP服务
- premiere视频制作实验报告
- 计算机操作系统教程答案
- 北京工业大学计算机系统结构实验报
- 实验室管理系统(前端)gongdaVue-mas
- 清华大学语音识别实验指导书
- 操作系统实验 7种进程调度算法的实现
- 数据挖掘实验报告.doc
评论
共有 条评论