分页是与操作系统相关的内存管理过程。它通过使用页面段将一些进程数据从辅助数据存储器存储或检索到主数据存储器或内存中。分页过程发生在进程在页面上遇到任何错误时,我们不能在此处使用新的空闲页面来满足分配过程。LRU过程生成了特定的替换算法需求。当进程产生一个新页面时,它决定哪个页面需要被替换。让我们举个例子 -
输入的内容用于该过程 -
N = 9, C = 4
登录后复制
Present pages for the process = {5, 0, 1, 3, 2, 4, 1, 0, 5}
输出结果为:8
解释 -
分配的内存页面为 5, 0, 1, 3
这个过程中发生的故障 = 4
需要分配内存,值为2,替换LRU 5:
这个过程中发生的错误 = 4+1 = 5
需要分配值为4的内存,替换LRU 0:
这个过程中发生的错误 = 5 + 1 = 6
需要的值为1的内存已经存在:
这个过程中发生的错误 = 6 + 0 = 6
需要分配值为0的内存,以替换最近最少使用的3个内存块:
这个过程中发生的错误 = 6 + 1 = 7
需要分配值为5的内存,这将替换LRU 2:
在这个过程中发生的错误 = 7 + 1 = 8。
算法评估LRU中的页面错误
LRU算法是操作系统领域中提到的一种替换过程。容量是内存中所持有页面的数量。现在我们将在特定内存中设置当前的页面集合。该过程总是将最不经常使用的页面置于进程的值中。
-
步骤 1 - 启动 LRU 操作的过程。
-
第二步 - 在这里声明总计为0。
-
步骤 3 - 创建一个向量类。
-
第四步 - 构建并声明一个具有所需数组大小的数组。
-
第5步 - 以内存容量大小启动进程。
-
第6步 - 为该方法创建一个地图。
-
第7步 - 将频率值存储到页面的映射中
-
步骤 8 - 遍历页面元素。
-
步骤9 - 如果;所需元素在基本存储位置中存在,则我们
-
步骤10 - 步骤9增加了频率的过程。
-
第11步 - 否则,内存已经完全满了。删除第一个元素并减少频率。
-
第12步 - 计数增加。
-
第13步 - 比较频率结果。
-
第14步 - 根据页面的频率和基于时间的结果进行排序。
-
第15步 - 如果我们得到相同的频率,那么页面将首先到达。
-
第16步 - 重复这个过程。
-
步骤 17 - 返回结果。
-
第18步 - 终止进程。
将其删除并推送。
计算LRU中的页面错误的语法
int main() {
int capacity = 4;
int arr[] = {7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2};
deque q(capacity);
int count=0;
int page_faults=0;
deque::iterator itr;
q.clear();
for(int i:arr)
{
itr = find(q.begin(),q.end(),i);
if(!(itr != q.end()))
{
++page_faults;
if(q.size() == capacity)
{
q.erase(q.begin());
q.push_back(i);
}
else{
q.push_back(i);
}
}
else
{
q.erase(itr);
q.push_back(i);
}
}
cout nopages;
//it will store the numer of Pages
cout page[i];
}
cout > nofaults;
int frame[nofaults], fcount[nofaults];
for (i = 0; i < nofaults; i++)
{
frame[i] = -1;
fcount[i] = 0;
}
i = 0;
while (i < nopages)
{
int j = 0, flag = 0;
while (j < nofaults)
{
if (page[i] == frame[j])
{
flag = 1;
fcount[j] = i + 1;
}
j++;
}
j = 0;
cout