代码改变世界

随笔分类 -  算法

Multi-Queue Replacement Algorithm

2012-05-15 14:49 by Demote, 293 阅读, 收藏,
摘要: 维护M个LRU队列.请求在Cache中命中时,根据请求被访问的次数计算出它应该处于的LRU队列中(例如,当计算函数为Log2(accesscount),当请求被访问2^i时,该请求则被放于第i条LRU队列中).CacheMiss时,从第一条非空的LRU队列中替换出一个块并将其置于Qout队列中.Qout队列用于记录从缓存中替换出去的请求且只记录块的地址指针和访问次数.每个缓存中的块有一个有效时间,每次处理请求时,检查各个队列中的第一个块的有效时间,如果超出,则将该块降至前一级LRU链中并重置块有效时间.伪代码如下:* YuanyuanZhou and James F. Philbin, The 阅读全文

区间调度问题(最大利润作业调度问题)

2011-12-01 11:17 by Demote, 769 阅读, 收藏,
摘要: #include "iostream" #include "ctime" using namespace std; typedef struct { int tasksign; //任务标志 int timestart; //任务开始时间 int timeend; //任务结束时间 int wage; //暂时用不到,可以不考虑,下面讨论动态规划时用到 }task; void IntervalScheduler(task tasks[], int total); //区间内任务调度实现 void QuickSort_End(task tasks[], i 阅读全文