模拟CPU调度的Python算法

2024-06-30 12:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找一种好的算法,用于在SJF、PRI和RR中对值列表(进程ID、到达时间、指令负载和优先级)进行排序

我已经能够创建FIFO,但代码非常混乱,无法轻松更改以支持其他算法

我的FIFO算法的输出如下(再加上一些):

Time unit: 0. CPU idle.
Time unit: 1. PID 1 executes. 11 instructions left. PID 2 wait=1. 
Time unit: 2. PID 1 executes. 10 instructions left. PID 2 wait=2. PID 3 wait=1. 
Time unit: 3. PID 1 executes. 9 instructions left. PID 2 wait=3. PID 3 wait=2. PID 4 wait=1. 
Time unit: 4. PID 1 executes. 8 instructions left. PID 2 wait=4. PID 3 wait=3. PID 4 wait=2. 
Time unit: 5. PID 1 executes. 7 instructions left. PID 2 wait=5. PID 3 wait=4. PID 4 wait=3. 
Time unit: 6. PID 1 executes. 6 instructions left. PID 2 wait=6. PID 3 wait=5. PID 4 wait=4. 
Time unit: 7. PID 1 executes. 5 instructions left. PID 2 wait=7. PID 3 wait=6. PID 4 wait=5. 
Time unit: 8. PID 1 executes. 4 instructions left. PID 2 wait=8. PID 3 wait=7. PID 4 wait=6. PID 5 wait=1. 
Time unit: 9. PID 1 executes. 3 instructions left. PID 2 wait=9. PID 3 wait=8. PID 4 wait=7. PID 5 wait=2. 
Time unit: 10. PID 1 executes. 2 instructions left. PID 2 wait=10. PID 3 wait=9. PID 4 wait=8. PID 5 wait=3. PID 6 wait=1. PID 7 wait=1. 
Time unit: 11. PID 1 executes. 1 instructions left. PID 2 wait=11. PID 3 wait=10. PID 4 wait=9. PID 5 wait=4. PID 6 wait=2. PID 7 wait=2. 
Time unit: 12. PID 1 executes. 0 instructions left. PID 2 wait=12. PID 3 wait=11. PID 4 wait=10. PID 5 wait=5. PID 6 wait=3. PID 7 wait=3. 
Time unit: 13. PID 2 executes. 7 instructions left. PID 3 wait=12. PID 4 wait=11. PID 5 wait=6. PID 6 wait=4. PID 7 wait=4. 
Time unit: 14. PID 2 executes. 6 instructions left. PID 3 wait=13. PID 4 wait=12. PID 5 wait=7. PID 6 wait=5. PID 7 wait=5. 
Time unit: 15. PID 2 executes. 5 instructions left. PID 3 wait=14. PID 4 wait=13. PID 5 wait=8. PID 6 wait=6. PID 7 wait=6. PID 8 wait=1. 
Time unit: 16. PID 2 executes. 4 instructions left. PID 3 wait=15. PID 4 wait=14. PID 5 wait=9. PID 6 wait=7. PID 7 wait=7. PID 8 wait=2. PID 9

这些值是从电子表格中提取的,看起来像这样(再加上一些):

Process ID  Arrival Time    Instruction Load    Priority
1                  1               12              4
2                  1                8              3
3                  2                4              5
4                  3                5              2
5                  8               15              6
6                  10               7              5
7                  10               6              2

所以,我的问题是,有没有好的方法可以对这些值进行排序以适应算法

谢谢


Tags: 算法idtime排序rrunitleftpid