#include <iostream> #include <queue> #include <unordered_set> void clockPageReplacement(int pageFrames, int pages[], int numPages) { std::queue<int> frameQueue; std::unordered_set<int> frameSet; int pageFaults = 0; for (int i = 0; i < numPages; i++) { int page = pages[i]; if (frameSet.find(page) == frameSet.end()) { if (frameQueue.size() == pageFrames) { int victimPage = frameQueue.front(); frameQueue.pop(); frameSet.erase(victimPage); } frameQueue.push(page); frameSet.insert(page); pageFaults++; } } std::cout << "页错误次数:" << pageFaults << std::endl; } int main() { int pageFrames; std::cout << "请输入页面帧数:"; std::cin >> pageFrames; int numPages; std::cout << "请输入页面数量:"; std::cin >> numPages; int pages[numPages]; for (int i = 0; i < numPages; i++) { std::cout << "请输入第 " << i + 1 << " 个页面:"; std::cin >> pages[i]; } clockPageReplacement(pageFrames, pages, numPages); return 0; }
clock算法
最新推荐文章于 2024-10-05 21:10:28 发布