#include <stdio.h>
// 定义一页的大小
#define PAGE_SIZE 4096
// 定义缓存大小
#define CACHE_SIZE 4
// 缓存结构体
typedef struct cache_s {
unsigned int page[CACHE_SIZE]; // 缓存列表
int count[CACHE_SIZE]; // 计数器:记录每个缓存块最后一次被访问的时间
} cache_t;
// 初始化缓存
cache_t init_cache() {
cache_t cache;
int i;
for (i = 0; i < CACHE_SIZE; i++) {
cache.page[i] = -1;
cache.count[i] = 0;
}
return cache;
}
// 查找缓存
int find_page(cache_t cache, unsigned int page) {
int i;
for (i = 0; i < CACHE_SIZE; i++) {
if (cache.page[i] == page) {
return i; // 返回缓存块的下标
}
}
return -1; // 没有找到
}
// 获取最久未使用的缓存块的下标
int get_least_used_page(cache_t cache) {
int i, least_used_page = 0;
for (i = 0; i < CACHE_SIZE; i++) {
if (cache.count[i] < cache.count[least_used_page]) {
least_used_page = i;
}
}
return least_used