资源简介
实现作业调度(先来先服务)、进程调度功能(时间片轮转)
实现内存管理功能(连续分配)。
实现文件系统功能(选作)
这些功能要有机地连接起来

代码片段和文件信息
import java.util.linkedList;
import java.util.Random;
public class ProcessMemoryController {
private class PCB {
String name; //进程名
double arrtime; //到达时间
double needtime; //需要运行时间
double usedtime; //已用时间
int needmemo; //所需内存
int address; //主存起始位置
char state; //进程状态
}
private class MemoItem {//内存表条目
int address = 0;
int length = 0;
char state = ‘F‘;//B代表busy或F代表free
public MemoItem(int address int length) {
this.address = address;
this.length = length;
}
}
int NUM = 6;//进程数
int ACCURACY = 1;//控制格式化后小数点后面的位数
int THRESHOLD = 3;//允许并发的进程数量,小于时从后备队列调入进程
int MINSIZE = 10;//控制内存碎片的产生
PCB[] pcb = new PCB[NUM];
linkedList memoList = new linkedList<>();
double pTime; //时间片
int run; //当前运行的进程,没有则为-1
long lastTime; //每次调度程序都记录当前时间
long beginTime;//程序开始时间
boolean isAllFinished() {
for (int i = 0; i < NUM; i++) {
if (pcb[i].state != ‘F‘) return false;
}
return true;
}
void init() {
run = -1;
Random r = new Random();
for (int n = 0; n < NUM; n++) {
pcb[n] = new PCB();
pcb[n].name = Character.toChars(65 + n)[0] + ““;
pcb[n].needtime = r.nextDouble() * 5 + 5;//5到10秒
pcb[n].needmemo = r.nextInt(120) + 30;//需要的内存为30到150的随机数
if (n == 0) {
pcb[n].arrtime = 0;
pcb[0].needmemo = 50;
} else {
pcb[n].arrtime = r.nextDouble() * 5 + 1;
pcb[n].needmemo = r.nextInt(120) + 30;//需要的内存为30到150的随机数
}
}
for (int n = 0; n < NUM; n++) {
pcb[n].usedtime = 0;
pcb[n].address = 0;
pcb[n].state = ‘U‘;
}
//设置起始地址为30,初始化的长度在50到100之间
MemoItem first = new MemoItem(30 r.nextInt(50) + 50);
memoList.add(first);
MemoItem prev = first;
for (; ; ) {
int address = prev.address + prev.length;
if (address >= 500) break;
int length = r.nextInt(50) + 50;
MemoItem ano = new MemoItem(address length);
memoList.add(ano);
prev = ano;
}
}
String d2s(double d) {
String tmp = d + ““;
int index = tmp.indexOf(“.“);
return tmp.substring(0 index + ACCURACY + 1);
}
void sortByArrtime() {
int i j;
PCB temp;
for (i = 0; i < NUM - 1; i++) //按照到达时间排序
{
for (j = 0; j < NUM - 1 - i; j++) {
if (pcb[j + 1].arrtime < pcb[j].arrtime) {
temp = pcb[j];
pcb[j] = pcb[j + 1];
pcb[j + 1] = temp;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-20 13:19 操作系统课程设计\
文件 217 2017-12-13 21:59 操作系统课程设计\ProcessMemoryController$1.class
文件 532 2017-12-13 21:59 操作系统课程设计\ProcessMemoryController$MemoItem.class
文件 689 2017-12-13 21:59 操作系统课程设计\ProcessMemoryController$PCB.class
文件 6688 2017-12-13 21:59 操作系统课程设计\ProcessMemoryController.class
文件 10205 2017-12-13 20:34 操作系统课程设计\ProcessMemoryController.java
文件 332288 2018-01-20 13:18 操作系统课程设计\课程设计.doc
- 上一篇:机械工程测试技术第三版
- 下一篇:操作系统银行家算法两个
相关资源
- FTP课程设计(服务端+客户端)
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- 高频电子线路课程设计报告收音机
- 直流稳压电源的课程设计、安装及调
- EDA课程设计_密码锁
- STM32基于rt_thread操作系统的SDHC卡文件
- 单片机课程设计 篮球计分器
- 数据结构课程设计 6 1 彩票系统
- 端口扫描课程设计详细的报告
- 步进电机课程设计(个人设计)
- 校园网络规划与设计课程设计
- 编译原理课程设计:词法语法编译器
- 操作系统 LRU算法 实验报告 及 程序代
-
simuli
nk 课程设计 qpsk - 武汉理工大学 单片机课程设计 16*16点
- [免费]车载CE6.0操作系统
- 数据库VFP课程设计
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 硬件课程设计—流水灯(quartus软件
- 超市收银系统eclipse access大学课程设计
- 航空订票系统_数据结构课程设计
- 操作系统实验——虚存管理实验
- c 课程设计 职工信息管理系统
- 广工操作系统实验
- 汇编语言,课程设计,红绿灯
- 机床液压系统课程设计卧式钻床动力
- 广东工业大学操作系统实验四文件系
- 课程设计蔬菜大棚自动控制系统,包
评论
共有 条评论