郑轻操作系统实训

本文讲述了在GPT的帮助下,作者实现了SCAN算法,处理了删除子进程时的野指针问题,优化了scan函数的时间复杂度,通过优先队列(小根堆和大根堆)设计提高了IO请求处理效率。文章涉及了fork、wait、exit等系统调用和样例测试。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值