资源简介
实验一 进程调度
实验二 银行家算法
实验三 内存管理
实验四 磁盘调度

代码片段和文件信息
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
相关资源
- 基于stm32f103ve的程序——跑马灯实验
- 升腾Win终端系统升级方法新版.doc
- 周立功开发板ProASIC3实验-syn_FIFO代码
- Uninstall_Cortana_WINCLIENT.CN.rar
- 编译原理实验工具及参考源码(lex&
- dotnet 写字板 实验 源代码 不好请要不
- 类pascal语言编译器(编译原理实验)
- 数学建模实验报告(八个全)
- 数值分析所有实验代码
- STM32基于rt_thread操作系统的SDHC卡文件
- 数字逻辑与数字系统实验报告
- 多媒体综合设计报告(附作品)
- ubuntu9.10 可加载内核模块和字符设备驱
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 数据结构实验魔王语言
- 模拟段页式虚拟存储管理中地址转换
- 迈克尔逊干涉仪的调整与使用实验报
- 8259A中断控制实验
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- 广东工业大学汇编实验二用表格形式
- 数值计算实验源代码
- Bochs入门教程[操作系统第一步]
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 数据结构实验 基于栈的表达式求值
- 模拟一个文件管理系统
评论
共有 条评论