12.29重写
有了gpt之后,可以帮你写一个框架出来,虽然运行不起来吧,但确实轻松了很多,去年数据结构实训难度比这个大的多,本次老师还给了模板代码。
第一天基本就完成了,把老师给的演示视频中的东西都实现了。
exit函数要注意,删除子进程的时候,将父进程中的指针删掉,否则会出现野指针问题,后面删除父进程的时候会内存报错,删除当前进程的时候,子进程要从内存释放掉,就绪队列中也要删。
第四天,给老师验收了,scan函数时间复杂度还可以优化,所以再改一下,现在以当前磁道号位置维护两个优先队列添加磁盘IO请求,一个队列正序,一个队列倒序,优先队列是用小根堆或大根堆实现的,添加的时间复杂度是O(logn),取数据的时间复杂度是O(1),最后的时间复杂度是O(logn),取的时候根据当前方向判断从哪个队列取,如果为空就改变方向。
因为要按pair中第二个数排序,所以要重写排序方法。
偷一张图,大概这个意思。
https://www.cnblogs.com/skprimin/p/15707622.html
SCAN算法实现
满足老师给出的三个测试样例
2048
512
2
new
fork
fork
fork
show p
wait
show p
-
show p
-
show p
-
show p
exit
show p
-
-
show p
exit
show p
quit
2048
512
2
new
fork
fork
fork
wait
show p
m 588
-
m 667
-
m 127
-
m 667
-
m 5333
m 885
-
m 1206
show m
quit
2048
512
3
new
fork
fork
fork
fork
fork
wait
show p
-
d 3 10
d 2 16
show i
d 2 60
show i
d 1 80
show i
d 2 128
show i
-
D 2
show i
d 2 80
d 2 10
show i
quit