操作系统分页式存储管理

2024-09-07 19:32

本文主要是介绍操作系统分页式存储管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。

对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底的弹出,新来的加入栈顶。

对于FIFO、LRU算法的命中,二者不同之处就是对于LRU算法,当元素命中时,要将该元素移至栈顶。

对于OPT算法,每次置换时向后查找,与栈内未来最久不使用的进行置换,若无法找到最久不使用的元素,那么默认与栈底元素进行置换。

回填位视图时只要对FIFO页表或LRU页表进行扫描,找到状态为true的位置,将其在位视图中对应的位置置回原值即可。

对于三种算法的输出格式,只要开三个相对应的二维数组,然后每次按照格式对二维数组进行赋值即可。


#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <time.h>
#include <string>
#include <algorithm>
#include <deque>
#include <queue>
using namespace std;int N , M;
#define Length 4132
const int maxn = 101;struct Page
{int id;int block;bool stau;
};struct Page page_fifo[maxn] , page_lru[maxn] , page_opt[maxn];int fifo[maxn];
int inva_fifo;int lru[maxn];
int inva_lru;int opt[maxn];
int inva_opt;
int cols;int fifo_2[maxn][maxn] , lru_2[maxn][maxn] , opt_2[maxn][maxn];bool view[maxn];int address[maxn];
int add_len;void out_rate_fifo()
{system("cls");cout << "FIFO缺页率 : ";cout << inva_fifo  << "/" << add_len << endl;cout << endl;system("PAUSE");
}void out_rate_lru()
{system("cls");cout << "LRU缺页率 : ";cout << inva_lru  << "/" << add_len << endl;cout << endl;system("PAUSE");
}void out_rate_opt()
{system("cls");cout << "OPT缺页率 : ";cout << inva_opt  << "/" << add_len << endl;cout << endl;system("PAUSE");
}void out_pageFifo()
{system("cls");cout << "页表(FIFO):" << endl;for(int i = 0 ; i < M ; i ++)cout << page_fifo[i].id << " " << page_fifo[i].block << " " << page_fifo[i].stau << endl;cout << endl;system("PAUSE");
}void out_pageLru()
{system("cls");cout << "页表(LRU):" << endl;for(int i = 0 ; i < M ; i ++)cout << page_lru[i].id << " " << page_lru[i].block << " " << page_lru[i].stau << endl;cout << endl;

这篇关于操作系统分页式存储管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145951

相关文章

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在 var str: TMemoryStream; begin    begin      str:= TMemoryStream.Create;      CurrRichRecord.richedit.Lines.SaveToStream(str);      str.Posit

简单Hbase 分页方案

简单Hbase分页方案 网上大多数分页方案分为从服务端分页或者从客户端分页 服务端分页方式主要利用PageFilter过滤器,首先太复杂,其次针对集群的兼容性不是很好,作者利用服务端分页+客户端分页结合方式给出一种简单易行的中间方案。 1.利用PageFilter过滤器从服务端分页,过滤出所需要的最大条数, 注:作者认为大多数用户不会进行太深的翻页,假设pageSize=5,客户饭100页一共

SpringBoot项目-实现简单的CRUD功能和分页查询

背景 本博文主要是创建了一个新的SpringBoot项目,实现基本的增删改查,分页查询,带条件的分页查询功能。是方便初学者学习后端项目的一个比较清晰明了的实践代码,读者可根据博文,从自己动手创建一个新的SpringBoot项目,到使用PostMan测试基本请求,完完全全实践一遍,写出自己的代码,或者实现自己想要的功能。因为在这个过程中会遇到许多的问题,从JDK的版本选择到跑通SpringBo

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

Jasperreports+jaspersoft studio学习教程(八)- 报表分页和大量数据内存处理

9.1 设计报表模板 9.1.1 使用Table组件新建模板(步骤参考教程七)如下: 9.1.2 模板自带变量 $V{PAGE_NUMBER} :代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置) $V{PAGE_COUNT} :当前页面中记录的数目 $V{groupname_COUNT} :   代表当前组的记录数 $V{COLUMN_NU

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息

Linux操作系统命令集(一)

最近开了操作系统的课,弄着虚拟机的linux系统命令学学 文件和目录操作命令: ls:列出目录内容 示例:ls -l 以长格式列出目录内容cd:切换目录 示例:cd /home/user 切换到 /home/user 目录mkdir:创建目录 示例:mkdir new_directory 创建名为 new_directory 的目录rmdir:删除空目录touch:创建空文件或更新文件的时间戳