output sequence of Multilevel Feedback Queue Scheduling :
初始进程列表
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-0 0 4 0
process-1 2 8 0
process-2 4 5 0
----------------------------------------------------
[t0, queue0, slice: 1]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-0 0 4 0
----------------------------------------------------
[t1, queue0, slice: 1]
[t1, queue1, slice: 2]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-0 0 3 0
----------------------------------------------------
[t2, queue0, slice: 1]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 8 0
----------------------------------------------------
[t3, queue0, slice: 1]
[t3, queue1, slice: 2]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-0 0 2 1
process-1 2 7 0
----------------------------------------------------
[t4, queue0, slice: 1]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-2 4 5 0
----------------------------------------------------
[t5, queue0, slice: 1]
[t5, queue1, slice: 2]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 7 0
process-2 4 4 0
----------------------------------------------------
[t6, queue0, slice: 1]
[t6, queue1, slice: 2]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 6 1
process-2 4 4 0
----------------------------------------------------
[t7, queue0, slice: 1]
[t7, queue1, slice: 2]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-2 4 4 0
----------------------------------------------------
[t8, queue0, slice: 1]
[t8, queue1, slice: 2]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-2 4 3 1
----------------------------------------------------
[t9, queue0, slice: 1]
[t9, queue1, slice: 2]
[t9, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-0 0 1 0
process-1 2 5 0
process-2 4 2 0
----------------------------------------------------
[t10, queue0, slice: 1]
[t10, queue1, slice: 2]
[t10, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 5 0
process-2 4 2 0
----------------------------------------------------
[t11, queue0, slice: 1]
[t11, queue1, slice: 2]
[t11, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 4 1
process-2 4 2 0
----------------------------------------------------
[t12, queue0, slice: 1]
[t12, queue1, slice: 2]
[t12, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 3 2
process-2 4 2 0
----------------------------------------------------
[t13, queue0, slice: 1]
[t13, queue1, slice: 2]
[t13, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 2 3
process-2 4 2 0
----------------------------------------------------
[t14, queue0, slice: 1]
[t14, queue1, slice: 2]
[t14, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-2 4 2 0
----------------------------------------------------
[t15, queue0, slice: 1]
[t15, queue1, slice: 2]
[t15, queue2, slice: 4]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-2 4 1 1
----------------------------------------------------
[t16, queue0, slice: 1]
[t16, queue1, slice: 2]
[t16, queue2, slice: 4]
[t16, queue3, slice: 8]
----------------------------------------------------
进程名 到达时间 所需时间 运行时间
process-1 2 1 0
----------------------------------------------------
add JUnit tests
private JobScheduler scheduler;
@Test
public void scheduleSingleFCFS() {
scheduler = new SingleBatchJobScheduler(prepareData(), ScheduleAlgorithm.FCFS);
scheduler.schedule();
}
@Test
public void scheduleSingleSJF() {
scheduler = new SingleBatchJobScheduler(prepareData(), ScheduleAlgorithm.SJF);
scheduler.schedule();
}
@Test
public void scheduleSingleHRRN() {
scheduler = new SingleBatchJobScheduler(prepareData(), ScheduleAlgorithm.HRRN);
scheduler.schedule();
}
@Test
public void scheduleMultiFCFS() {
scheduler = new MultiBatchJobScheduler(SimulatedSystem.SIMULATED_RESOURCES,
prepareData(), ScheduleAlgorithm.FCFS);
scheduler.schedule();
}
@Test
public void scheduleMultiSJF() {
scheduler = new MultiBatchJobScheduler(SimulatedSystem.SIMULATED_RESOURCES,
prepareData(), ScheduleAlgorithm.SJF);
scheduler.schedule();
}
output sequence of Highest Response Radio Next Scheduling algorithm:
初始作业队列
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 8 0 0.000 [4, 1, 6] null
job-2 2 4 0 0.000 [5, 2, 2] null
job-3 4 5 0 0.000 [1, 0, 5] null
----------------------------------------------------------------------------------------
t[0]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 8 0 0.000 [4, 1, 6] null
----------------------------------------------------------------------------------------
t[1]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 7 1 2.143 [4, 1, 6] null
----------------------------------------------------------------------------------------
t[2]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 6 2 3.500 [4, 1, 6] null
job-2 2 4 0 0.000 [5, 2, 2] null
----------------------------------------------------------------------------------------
t[3]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 5 3 5.200 [4, 1, 6] null
job-2 2 4 0 2.500 [5, 2, 2] null
----------------------------------------------------------------------------------------
t[4]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 4 4 7.500 [4, 1, 6] null
job-2 2 4 0 3.750 [5, 2, 2] null
job-3 4 5 0 0.000 [1, 0, 5] null
----------------------------------------------------------------------------------------
t[5]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 3 5 11.000 [4, 1, 6] null
job-2 2 4 0 4.750 [5, 2, 2] null
job-3 4 5 0 1.800 [1, 0, 5] null
----------------------------------------------------------------------------------------
t[6]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 2 6 17.500 [4, 1, 6] null
job-2 2 4 0 5.500 [5, 2, 2] null
job-3 4 5 0 2.400 [1, 0, 5] null
----------------------------------------------------------------------------------------
t[7]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 1 7 36.000 [4, 1, 6] null
job-2 2 4 0 6.000 [5, 2, 2] null
job-3 4 5 0 2.800 [1, 0, 5] null
----------------------------------------------------------------------------------------
t[8]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-2 2 4 0 6.250 [5, 2, 2] null
job-3 4 5 0 3.000 [1, 0, 5] null
----------------------------------------------------------------------------------------
t[9]
----------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-2 2 3 1 9.333 [5, 2, 2] null
job-3 4 5 0 3.800 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[10]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-2 2 2 2 15.000 [5, 2, 2] null
job-3 4 5 0 4.400 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[11]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-2 2 1 3 31.000 [5, 2, 2] null
job-3 4 5 0 4.800 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[12]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-3 4 5 0 5.000 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[13]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-3 4 4 1 7.250 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[14]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-3 4 3 2 10.667 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[15]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-3 4 2 3 17.000 [1, 0, 5] null
---------------------------------------------------------------------------------------
t[16]
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-3 4 1 4 35.000 [1, 0, 5] null
---------------------------------------------------------------------------------------
完成作业队列
---------------------------------------------------------------------------------------
作业名 到达时间 所需时间 运行时间 响应比 所需资源 系统资源
job-1 0 0 8 36.000 [4, 1, 6] null
job-2 2 0 4 31.000 [5, 2, 2] null
job-3 4 0 5 35.000 [1, 0, 5] null
---------------------------------------------------------------------------------------
-------------------------------------------------------------------------------
作业数目 总周转时间 总带权周转时间 平均周转时间 平均总带权周转时间
3 28.0 5.525 9.333 1.842
-------------------------------------------------------------------------------
output sequence of Best Fit algorithm:
分配请求[需要内存: 130, 请求者: 作业1] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 600 false 640 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
-partition-1 2 470 false 770 0 null
-------------------------------------------------------------------------------------------
分配请求[需要内存: 60, 请求者: 作业2] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
-partition-1 2 470 false 770 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
-partition-1 2 60 true 770 60 作业2
--partition-1 3 410 false 830 0 null
-------------------------------------------------------------------------------------------
分配请求[需要内存: 100, 请求者: 作业3] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
-partition-1 2 60 true 770 60 作业2
--partition-1 3 410 false 830 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
-partition-1 2 60 true 770 60 作业2
--partition-1 3 100 true 830 100 作业3
---partition-1 4 310 false 930 0 null
-------------------------------------------------------------------------------------------
请求释放[作业2]的分区 释放前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
-partition-1 2 60 true 770 60 作业2
--partition-1 3 100 true 830 100 作业3
---partition-1 4 310 false 930 0 null
-------------------------------------------------------------------------------------------
释放后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
partition-0 0 60 false 770 0 null
--partition-1 3 100 true 830 100 作业3
---partition-1 4 310 false 930 0 null
-------------------------------------------------------------------------------------------
分配请求[需要内存: 200, 请求者: 作业4] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
partition-0 0 60 false 770 0 null
--partition-1 3 100 true 830 100 作业3
---partition-1 4 310 false 930 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
partition-0 0 60 false 770 0 null
--partition-1 3 100 true 830 100 作业3
---partition-1 4 200 true 930 200 作业4
----partition-1 5 110 false 1130 0 null
-------------------------------------------------------------------------------------------
请求释放[作业3]的分区 释放前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
partition-0 0 60 false 770 0 null
--partition-1 3 100 true 830 100 作业3
---partition-1 4 200 true 930 200 作业4
----partition-1 5 110 false 1130 0 null
-------------------------------------------------------------------------------------------
释放后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
partition-0 0 160 false 770 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 110 false 1130 0 null
-------------------------------------------------------------------------------------------
请求释放[作业1]的分区 释放前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-1 1 130 true 640 130 作业1
partition-0 0 160 false 770 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 110 false 1130 0 null
-------------------------------------------------------------------------------------------
释放后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 290 false 640 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 110 false 1130 0 null
-------------------------------------------------------------------------------------------
分配请求[需要内存: 100, 请求者: 作业5] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 290 false 640 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 110 false 1130 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 290 false 640 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 100 true 1130 100 作业5
-----partition-1 4 10 false 1230 0 null
-------------------------------------------------------------------------------------------
分配请求[需要内存: 60, 请求者: 作业6] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 290 false 640 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 100 true 1130 100 作业5
-----partition-1 4 10 false 1230 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 60 true 640 60 作业6
-partition-0 5 230 false 700 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 100 true 1130 100 作业5
-----partition-1 4 10 false 1230 0 null
-------------------------------------------------------------------------------------------
分配请求[需要内存: 50, 请求者: 作业7] 分配前的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 60 true 640 60 作业6
-partition-0 5 230 false 700 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 100 true 1130 100 作业5
-----partition-1 4 10 false 1230 0 null
-------------------------------------------------------------------------------------------
分配成功 分配后的分区情况
-------------------------------------------------------------------------------------------
分区名 分区标记 分区总大小 是否占用 起始地址 已分配大小 占用者
partition-0 0 60 true 640 60 作业6
-partition-0 5 50 true 700 50 作业7
--partition-0 6 180 false 750 0 null
---partition-1 4 200 true 930 200 作业4
----partition-1 5 100 true 1130 100 作业5
-----partition-1 4 10 false 1230 0 null
-------------------------------------------------------------------------------------------
output sequence of Banker algorithm:
可利用资源:(3,3,2)
进程 最大需求 分配 需求
P0 (7,5,3) (0,1,0) (7,4,3)
P1 (3,2,2) (2,0,0) (1,2,2)
P2 (9,0,2) (3,0,2) (6,0,0)
P3 (2,2,2) (2,1,1) (0,1,1)
P4 (4,3,3) (0,0,2) (4,3,1)
安全性分析:
进程 Work Need Allocation Work + Allocation Finish
P1 (3,3,2) (1,2,2) (2,0,0) (5,3,2) true
P3 (5,3,2) (0,1,1) (2,1,1) (7,4,3) true
P4 (7,4,3) (4,3,1) (0,0,2) (7,4,5) true
P0 (7,4,5) (7,4,3) (0,1,0) (7,5,5) true
P2 (7,5,5) (6,0,0) (3,0,2) (10,5,7) true
存在安全序列? true
P1请求资源:Request1(1,0,2)
进程 Work Need Allocation Work + Allocation Finish
P1 (2,3,0) (0,2,0) (3,0,2) (5,3,2) true
P3 (5,3,2) (0,1,1) (2,1,1) (7,4,3) true
P4 (7,4,3) (4,3,1) (0,0,2) (7,4,5) true
P0 (7,4,5) (7,4,3) (0,1,0) (7,5,5) true
P2 (7,5,5) (6,0,0) (3,0,2) (10,5,7) true
存在安全序列? true
P4请求资源:Request4(3,3,0)
Request4 > Available4
存在安全序列? false
P0请求资源:Request0(0,2,0)
可利用资源:(2,1,0)
进程 分配 需求
P0 (0,3,0) (7,2,3)
P0 (0,3,0) (7,2,3)
P0 (0,3,0) (7,2,3)
P0 (0,3,0) (7,2,3)
P0 (0,3,0) (7,2,3)
存在安全序列? false