Skip to content

Raw experimental Operating System code for recording a simulating experience.

Notifications You must be signed in to change notification settings

jordonyang/os4j

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

0x00. Process Scheduling

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
----------------------------------------------------

0x01. Job Scheduling

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         
-------------------------------------------------------------------------------

0x03. Memory Allocation

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      
-------------------------------------------------------------------------------------------

0x04. Resource Allocation

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

About

Raw experimental Operating System code for recording a simulating experience.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages