请说人话!如何理解基本分页存储管理

news2024/12/23 17:40:36

一、默认设定

(一)按字节编制==一个房间可以装8只猪猪

现在的计算机一般都是按字节编址的。这个不理解的话,可以看我的文章为什么20位地址总线决定寻址空间是1MB“http://t.csdn.cn/Eo2nE”

(二)内存采用非连续分配方式

即,下面的例子中,如果CPU运行进程A时需要把二页数据调入内存,这两页可以不连续(两栋别墅可以不连号)

(三)官话、规定

为了方便举例子,现在我规定一下我的例子中,1页是8B,内存可以有16页,外存有64页,某个进程需要2页。
↓以下这个是结合书本的规定与例子来讲解
1.内存外存都按照一页一页来划分。
在这里插入图片描述
外存:64页/64块
在这里插入图片描述
对一页的理解如下(猪就是数据,更准确地说,就是数字0或数字1)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.内存里面的页,叫页框,即图示中的一栋别墅;
2.外存中的页,叫做块。

二、实例理解基本分页存储管理的地址转换过程

现在来考虑基本分页存储管理的地址转换过程:(模拟寻址过程,实际上CPU应该是一页一页数据调入的,即一栋一栋的别墅调度进来,而不是把一栋别墅的一层调进来)

某一天,CPU如果要运行进程A,根据进程A的要求,需要把外存中15号别墅(因为从0开始编号,15号别墅是第16栋,图中显示的是编号,不是第几栋)的7号房间和16号别墅的0号房间请到内存里面的1号别墅的6号房和3号别墅的5号房。
假设内存里面有两种表达的方式,第一种是别墅栋号和栋内相对编号,第二种是直接用房号编址的对应关系如下:(假设1页1B!!)
两种表达方式对应如下↓
即,用房间编号的话:
内存里面的1号别墅的6号房 == 14号房
内存里面的3号别墅的5号房 == 29号房
在这里插入图片描述
在这里插入图片描述

CPU与进程的沟通方式如下(不严谨模拟版)
在这里插入图片描述
进程记录这个对应关系,
首先,要记录其中的别墅栋号,
因为外存有64栋,内存有16栋,因此外存需要记录数字0-63(对应二进制的0至111111);内存需要记录数字0-15(对应二进制的0至1111)
外存材料比较便宜,因此外存一般都比内存大,所以,需要记录的数字的最大范围一般以外存的数字范围为准,即我们需要记录栋号0至11111,为了记录这个栋号,需要5bit位来存放数字。即在这个例子中,栋号需要5bit位来记录
其次要记录“栋内偏移量”,即别墅内的相对的房间号
因为我们最开始假设了一页是8B,即一栋别墅有8层,(每层一个长条形房间),即一栋别墅有8个房间,这些房间的编号从0到7,(对应二进制0至111),为了记录别墅内的相对的房间号,需要3bit位来记录。即在这个例子中,别墅内相对房间号需要3bit位来记录

把上面的例子转换成页式存储管理,就是
拿到一个逻辑地址/对话中的“内存的29号房”/
把逻辑地址/对话中的“内存的29号房”/除以页面大小/一栋别墅8个房间/,得到页号+页内偏移量(分别对应别墅栋号和栋内偏移量)
逻辑地址 页面大小 = 按房号编址的房间号 一栋别墅容纳的房间个数 = 29 8 = 3...5 \frac{逻辑地址}{页面大小}=\frac{按房号编址的房间号}{一栋别墅容纳的房间个数}=\frac{29}{8}=3...5 页面大小逻辑地址=一栋别墅容纳的房间个数按房号编址的房间号=829=3...5
即第4栋别墅的第5个房间,按从0开始编号的话,就是3号别墅的6号房间。
这里的别墅栋号,就是页式存储管理里面所谓的页号。
这里的栋内相对房间号,就是页式存储管理里面的页内偏移量。

这个例子中的页表
进程设计的表想要把这些信息存起来,为了存别墅栋号(0至11111)和栋内房间号(0至111),需要5bit位存栋号,需要3bit位存“栋内偏移量”。
即用来存信息的表中,栋号占5bit位,栋内偏移量占3bit位。
例如:29号房间=3号别墅的6号房
换成二进制的栋号、栋内偏移量即00010,101;
因此29号房间对应的页表项就是00010101。(这里先不考虑什么访问位那些鬼的)

所以表里面存的信息就是00010101,其中前5bit是栋号,即所谓的页号,后3bit位是栋内偏移量,即页内偏移量。
而设计的用来存信息的表,叫做页表。
而页表里面的每一条对应关系,就是页表项。
00010101,5bit页号+3bit页内偏移量,就是这个例子下的“地址结构”

CPU再来调用进程时,获取到00010101时,把逻辑地址3号别墅的6号房转换成物理地址29号房间,就是所谓的逻辑地址转物理地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

法线矩阵推导

法线矩阵推导 https://zhuanlan.zhihu.com/p/72734738 https://juejin.cn/post/7113952418613690382 https://blog.csdn.net/wangjianxin97?typeblog 1、为什么需要法线矩阵 vec3 normalEyeSpace modelViewMatrix * normal;如果模型矩阵执行了非等比缩放, 顶点的改变会导致法…

基于蝴蝶算法优化的BP神经网络(预测应用) - 附代码

基于蝴蝶算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于蝴蝶算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.蝴蝶优化BP神经网络2.1 BP神经网络参数设置2.2 蝴蝶算法应用 4.测试结果:5.Matlab代码 摘要…

sNMFcross-entropyK

0.简单介绍 稀疏非负矩阵(sNMF)和最小二乘优化来产生祖先比例估计数的祖先推断算法,这个算法呢与admixture来说差别不是很大,但是优点就是快,运算速度可以快到10-30倍左右。 1.安装 这一步不必多说,下载…

tailscale使用教程(远程连接服务器)

tailscale:将多个设备放在同一局域网下,实现异地组网。 首先进入tailscale官网,根据系统需求进行下载 需要远程的设备和被远程的设备都需要下载。 然后两个设备均登录同一账号即可 注:这里重点讲一下linux操作系统上的操作&…

PID输出PWM温度控制(PID输出PWM的各种方法介绍)

这篇博客主要介绍PID的输出如何和PWM输出进行绑定,PID控制算法和源代码大家自行查看PID专栏,这里不再赘述。常用链接如下: 位置式PID(S7-200SMART 单自由度、双自由度梯形图源代码)_RXXW_Dor的博客-CSDN博客有关位置型PID和增量型PID的更多详细介绍请参看PID专栏的相关文章…

读SQL学习指南(第3版)笔记02_数据类型

1. 命令行工具 1.1. mysql -u root -p; 1.2. mysql> show databases; 1.3. mysql> use sakila; 1.4. mysql> SELECT now(); 1.4.1. now()是MySQL的内建函数 1.4.2. 返回当前日期和时间 1.5. mysql> SELECT now() FROM dual…

DFT计算入门新手坑:能带不连续

新手在学习DFT计算时,在熟悉了基本的操作和VASP输入文件后,首先就会学习到结构优化、自洽计算和能带的计算。 而笔者学习DFT计算这些年来看到太多新手学者踩到大大小小的坑,其中能带看起来不连续或者能带不连续则是几乎必踩的坑之一。 这些初…

【HCIP】04.VRRP与BFD

VRRP VRRP基本概念 VRRP路由器 运行VRRP协议的路由器,VRRP是配置在路由器的接口上的,而且也是基于接口来工作的。 VRID 一个VRRP组由多台协同工作的路由器(的接口)组成,使用相同的VRID(Virtual Router…

Spring统一功能处理

1. AOP存在的问题 获取参数复杂AOP的规则相对简单 2. 拦截器 2.1. 应用(以登录为例) 2.1.1. 自定义拦截器 新建interceptor文件夹 import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http…

Blend for Visual Studio:提升用户界面设计的专业工具

随着软件行业的迅速发展,用户界面设计变得越来越重要。一个好的用户界面能够吸引用户的注意力,提供良好的用户体验,并增加应用程序的成功率。在这个背景下,Blend for Visual Studio作为一款专业的用户界面设计工具,为开…

SpringCloud学习笔记(二)_Eureka注册中心

一、Eureka简介 Eureka是一项基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client&#xff…

从电子表格到纸张:Excel转PDF的神奇变身之旅!

当你需要将Excel文件转换为PDF时,可以使用Python编程语言和一些流行的库来实现这个任务。在本篇博客中,我将介绍如何使用wxPython、pandas和PyMuPDF库创建一个简单易用的图形用户界面(GUI)工具来完成这项工作。 C:\pythoncode\new\excelexportpdf.py …

SCCB与IIC的异同及FPGA实现的注意事项

文章目录 前言一、信号线二、SCCB数据传输格式三、SCCB写(与IIC完全一致)四、SCCB读五、SCCB和IIC的区别 前言 IIC接口有比较广泛的应用,而SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV&…

发现一款免费WEB在线使用的AI对话+绘画

这是一个优秀的golang开发作者 免费开放给大家使用的 简单上手 注册就能使用 多个AI角色多模型自由选择 下面是使用效果 链接地址在文末链接地址:目前免费体验

基于51单片机无线温度报警控制器 NRF24L01 多路温度报警系统设计

一、系统方案 1、本设计默认采用STC89C52单片机,如需更换单片机请联系客服。 2、接收板LCD1602液晶实时显示当前检测的2点温度值以及对应的上下限报警值。发射板由DS18B20采集温度值,通过无线模块NRF24L01传给接收板。 3、按键可以设置温度上下限值&…

硬编码基础三(变长指令的查询方式)

硬编码基础三(变长指令的查询方式) intel指令的格式可以看作如下形式: 前缀操作码modrmsib偏移立即数 其中操作码决定了是否存在moderm modrm中的rm位决定了是否存在sib 这边举个例子, 在intel白皮书中的A附录中的A.3章节有一…

HCIP---企业网三层架构实验

实验要求 实验拓扑及IP规划 实验步骤 1. Eth-Trunk通道(将多个接口逻辑的整合成一个接口,实现带宽叠加的作用) SW1和SW2起eth-trunk,并划入接口 [sw1]interface Eth-Trunk 0 [sw1-Eth-Trunk0]int g0/0/3 [sw1-GigabitEthernet0…

第5天----单词替换(C++replace()函数)

当一句话中出现错误的单词时&#xff0c;你是否想快速将它替换为你想要的&#xff0c;接下来的这篇文章&#xff0c;将带你了解什么是单词替换。 一、基本知识&#xff1a; 1. string::replace()函数 C <string>库中的replace()函数是用于替换字符串中的特定字符或子字…

微信小程序canvas type=2d生成海报保存到相册、文字换行溢出显示...、文字删除线、分享面板

做个简单的生成二维码海报分享&#xff0c;我做的时候也找简单的方法看能不能实现页面直接截图那种生成图片&#xff0c;原生小程序不支持&#xff0c;不多介绍下面有全部代码有注释、参数自行替换运行看看&#xff0c;有问题可以咨询我&#xff0c;我写的已经上线 效果如图&a…

CTFhub-sql-整数注入

判断存在 sqli 注入 1 1 and 11 1 and 12 因为 11 为真&#xff0c;12 为假&#xff0c;且 11 与 1 显示的数据一样&#xff0c;那么就存在 sqli 注入 查询该数据表的字段数量 一、 2 3 1,2成功带出数据&#xff0c;3没有数据&#xff0c;所以有两个字段 二、 1 order by …