算法导论 思考题 18-1

本文探讨了在不同缓存策略下执行n个栈操作时的磁盘存取次数与CPU时间消耗。分析了无缓存、单页缓存及双页缓存的情况,展示了缓存对提高效率的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a. 最坏情况下,n个栈操作需要O(n)次磁盘存取,由题目可知,每次存取需要O(m)cpu时间,所以一共需要O(mn)的cpu时间

b. 内存中如果有一页的缓存,就可以存m个字。所以最坏情况n个push需要进行O(n/m)次磁盘存取,需要O(n/m)*O(m)=O(n)cpu时间,

c. 最坏情况,设页面是满的,push,pop,pop,push,push,pop,pop......n个栈操作需要O(n)次磁盘存取,需要O(mn)的cpu时间

d. 缓存最近使用的两页。

    假设内存中有n1n2两页,并且都已经满了,再次执行push操作,将n1写进磁盘,读入n3,执行push,这时内存中是n2n3

    假设内存中有n1n2两页,并且都为空,再次执行pop操作,将n2写进磁盘,读入n0,执行pop,这时内存中是n0n1

    其余时间,都在内存中操作,不存取磁盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值