非连续分配管理方式之基本分页存储管理

news2024/11/25 2:49:11

连续分配:为用户进程分配的必须是一个连续的内存空间。
非连续分配:为用户进程分配的可以是一些分散的内存空间。

基本分页存储管理的思想∶把进程分页,各个页面可离散地放到各个的内存块中。

1.分页存储

1.内存空间分区

  • 将内存空间分为一个个大小相等的分区(比如:每个分区4KB),
  • 每个分区就是一个“页框”(页框=页帧=内存块=物理块=物理页面)。
  • 每个页框有一个编号,即“页框号”(页框号=页帧号=内存块号=物理块号=物理页号),
  • 页框号从0开始。

2.进程的逻辑地址空间

  • 将进程的逻辑地址空间也分为与页框大小相等的一个个部分,
  • 每个部分称为一个“页”或“页面”。
  • 每个页面也有一个编号即“页号”,
  • 页号也是从0开始。

操作系统以页框为单位为各个进程分配内存空间。
进程的每个页面分别放入一个页框中。
也就是说,进程的页面与内存的页框有一一对应的关系。
各个页面不必连续存放,可以放到不相邻的各个页框中。

在这里插入图片描述

2.数据结构:页表

为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。
注:页表通常存在PCB(进程控制块)中。

在这里插入图片描述

1.每个页表项占多少字节

Eg:假设某系统物理内存大小为4GB,
页面大小为4KB,则每个页表项至少应该为多少字节?

在这里插入图片描述
页表项连续存在,因此页号可以隐含的,不占用存储空间(类比数组)
由于页号是隐含的,因此每个页表项占3B,存储整个页表至少需要 3 ∗ ( n + 1 ) B 3*(n+1)B 3(n+1)B

注意:

  • 页表记录的只是内存块号,而不是内存块的起始地址.
  • J号内存块的起始地址=J*内存块大小

2.实现地址的转换

将进程地址空间分页之后,操作系统该如何实现逻辑地址到物理地址的转换?

1.特点:

虽然进程的各个页面是离散存放的,但是页面内部是连续存放的。

2.如果要访问逻辑地址A,则

①确定逻辑地址A对应的“页号”P
②找到P号页面在内存中的起始地址(需要查页表)
③确定逻辑地址A的“页内偏移量”W

3.逻辑地址的计算

逻辑地址A对应的物理地址=P号页面在内存中的起始地址+页内偏移量W

4.例题

在某计算机系统中,页面大小是50B。
某进程逻辑地址空间大小为200B,则逻辑地址110对应的页号、页内偏移量是多少?

在这里插入图片描述

  • 页号=逻辑地址/页面长度(取除法的整数部分)
  • 页内偏移量=逻辑地址%页面长度(取除法的余数部分
  • 页号=110/ 50=2
  • 页内偏移量=110%50= 10
  • 逻辑地址可以拆分为(页号,页内偏移量)
  • 通过页号查询页表,可知页面在内存中的起始地址
  • 页面在内存中的起始地址+页内偏移量=实际的物理地址

在计算机内部,地址是用二进制表示的:如果页面大小刚好是2的整数幂
则计算机硬件可以很快速的把逻辑地址拆分成((页号,页内偏移量)

结论:
如果每个页面大小为 2 k B 2^kB 2kB,用二进制数表示逻辑地址,
则末尾K位即为页内偏移量,其余部分就是页号。

5.页面大小刚好是2的整数幂的好处
  • ①逻辑地址的拆分更加迅速:如果每个页面大小为 2 k ∗ B 2^k*B 2kB,用二进制数表示逻辑地址,则末尾K位即为页内偏移量,其余部分就是页号。因此,如果让每个页面的大小为2的整数幂,计算机硬件就可以很方便地得出一个逻辑地址对应的页号和页内偏移量,而无需进行除法运算,从而提升了运行速度。
  • ②物理地址的计算更加迅速:根据逻辑地址得到页号,根据页号查询页表从而找到页面存放的内存块号,将二进制表示的内存块号和页内偏移量拼接起来,就可以得到最终的物理地址。

3.逻辑地址结构

分页存储管理的逻辑地址结构如下所示:
在这里插入图片描述
地址结构包含两个部分:前一部分为页号,后一部分为页内偏移量W。
在上图所示的例于中,地址长度为32位,其中0-11位为“页内偏移量”,或称“页内地址”;
12~31位为“页号”。

  • 如果有K位表示“页内偏移量”,则说明该系统中一个页面的大小是 2 k 2^k 2k个内存单元
  • 如果有M位表示“页号”,则说明在该系统中,一个进程最多允许有 2 M 2^M 2M个页面

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

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

相关文章

数据库 MySql快速导入外部数据库流程

适用于新安装MySql本地没有数据情况 外部MySql数据库文件 任务管理器停用Mysql进程 将外部文件替换本地默认文件即可 重启电脑导入完成。

MyLife - Docker安装rabbitmq

Docker安装rabbitmq 个人觉得像rabbitmq之类的基础设施在线上环境直接物理机安装使用可能会好些。但是在开发测试环境用docker容器还是比较方便的。这里学习下docker安装rabbitmq使用。 1. rabbitmq 镜像库地址 rabbitmq 镜像库地址:https://hub.docker.com/_/rabbi…

并联谐振DCDC变换器的设计与仿真

摘 要 在我们日常生活中,并联谐振变换器随处可见,因为其相比其他变换器而言结构相对简单,运行稳定且便于维修等优势,最重要的是并联谐振变换器在并网方面具有很好的优势。随着自动控制技术和微电子技术的不断革新,目前…

并联机器人结构分析与领域应用

并联机器人早在20世纪的90年代就已经崭露头角,具有刚度高、速度快、柔性强、重量轻等优点,是工业机器人的新生代力量。并联机器人与串联机器人一起构成了工业机器人的重要部分。在食品、医药、电子等轻工业中应用最为广泛,在物料的搬运、包装…

记录Bug:VScode中无法识别万能头文件#include<bits/stdc++.h>

问题&#xff1a; 在VScode中使用万能头文件#include<bits/stdc.h>编写程序时报错&#xff1a;“检测到 #include 错误。请更新 includePath。已为此翻译单元(D:\Code_C\desC。。。。”。但是普通的c语言头文件#include <stdio.h>等可以正常运行。 原因&#xff1…

Linux网络编程系列之UDP组播

一、什么是UDP组播 UDP组播是指使用用户数据报协议&#xff08;UDP&#xff09;实现的组播方式。组播是一种数据传输方式&#xff0c;允许单一数据包同时传输到多个接收者。在UDP组播中&#xff0c;一个数据包可以被多个接收者同时接收&#xff0c;这样可以降低网络传输的负载和…

P1433 吃奶酪

#include <iostream> #include <cmath> using namespace std; #define M 15 #define S(n) ((n) * (n)) double indx[M 5], indy[M 5], ans 0, sum 0;//坐标数组&#xff0c;从下标为1开始记录 int n, vis[M 5] { 0 };//vis数组&#xff0c;选过的数字标记为1…

N点复序列求2个N点实序列的快速傅里叶变换

一、方法简介 通过一个点复数序列求出两个点实数序列的离散傅里叶变换&#xff0c;进一步提升快速傅里叶变换的效率。 二、方法详解 和是实数序列&#xff0c;且长度都为&#xff0c;定义复数序列&#xff1a; &#xff0c; 则序列和可表示为&#xff1a; 的离散傅…

openssl学习——消息认证码原理

消息认证码原理 消息认证码&#xff08;Message Authentication Code, MAC&#xff09;是一种技术&#xff0c;它的原理是通过对消息和密钥进行特定的处理&#xff0c;生成一个固定长度的数据&#xff0c;这个数据就是消息认证码&#xff08;MAC&#xff09;。这个过程可以看作…

【10】基础知识:React - DOM的diffing算法

一、虚拟 DOM 中 key 的作用 react/vue 中的 key 有什么作用&#xff1f;key的内部原理是什么&#xff1f; 简单来说&#xff1a; key 是虚拟 DOM 对象的标识&#xff0c;在更新显示时 key 起着极其重要的作用&#xff0c;提高渲染效率&#xff0c;防止渲染错误。 详细的说…

和琪宝的深圳,香港之旅~

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 引言 国庆期间原定和琪宝的旅游计划是深圳-香港-厦门。但是奈何在去厦门的前一天&#xff0c;…

STM32 BootLoader设置

编写bootloader程序&#xff1a; 直接复制下面代码到自己程序中。 typedef void (*iapfun)(void); //定义一个函数类型的参数. iapfun jump2app; //设置栈顶地址 //addr:栈顶地址 __asm void MSR_MSP(u32 addr) {MSR MSP, r0 //set Main Stack valueBX r14 }//跳转到…

TikTok国际版 使用特网科技Bluestacks模拟器安装方法

特网科技Bluestacks模拟器主机 桌面自带Bluestacks模拟器 TikTok国际版Bluestacks模拟器搜索tiktot 登录google应用商店-安装TikTok 安装过程可能需要3-5分钟不等-配置过低可能会导致安装失败&#xff0c;建议升级更高内存。 安装完成-打开 安装成功APP-我的游戏查看 打开国际版…

phpcms_v9模板制作及二次开发常用代码

0:调用最新文章&#xff0c;带所在版块 {pc:get sql"SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url as curl,a.id FROM v9_news a, v9_category b WHERE a.catid b.catid ORDER BY a.id DESC " num"15" cache"300"} {lo…

光电柴微电网日前调度报告

摘要 微电网是目前国内外应用较为广泛的一种绿色可再生能源&#xff0c;近几年我国微电网产业的发展十分迅速。然后&#xff0c;越来越多的微电网系统建立并网&#xff0c;微电网产生的电能受外界因素影响较大&#xff0c;具有一定的随机性和波动性&#xff0c;给并网后的电力系…

leetCode 72. 编辑距离 动态规划

72. 编辑距离 - 力扣&#xff08;LeetCode&#xff09; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 编辑距离的应用场景&#xff1a;…

【内网攻击】DHCP协议概念——地址池耗尽攻击

目录 前言 DHCP 服务概念 1&#xff09;客户端发送DHCP Discovery广播包 2&#xff09;服务器响应DHCP Offer广播包 3&#xff09;客户机发送DHCP Request广播包 4&#xff09;服务器发送DHCP ACK广播包 部署DHCP服务器 dhcp地址池消耗攻击 攻击防御 前言 现在思考我们…

[论文分享] EnBinDiff: Identifying Data-Only Patches for Binaries

EnBinDiff: Identifying Data-Only Patches for Binaries [TDSC 2021] 在本文中&#xff0c;我们将重点介绍纯数据补丁&#xff0c;这是一种不会引起任何结构更改的特定类型的安全补丁。作为导致假阴性的最重要原因之一&#xff0c;纯数据补丁成为影响所有最先进的二进制差分方…

spring security 认证授权详解

spring security简介 Spring Security 是 Spring家族中的一个安全管理框架&#xff0c;它提供了更丰富的功能做认证授权 认证&#xff1a;当前用户有没有权限登录&#xff0c;是否为本系统用户授权&#xff1a;当前登录的用户有没有操作功能的权限 spring security的搭建 引入…

SqlServer安装教程

百度网盘地址: 链接&#xff1a;https://pan.baidu.com/s/1ntqoK9uVc6fBVTm7twh8kw 提取码&#xff1a;grdt 安装: 双击:SQLEXPRADV_x64_CHS.exe ,等待;点击计划,系统配置检查器,根据要求修改(我被要求重启了)点击安装,全新SQL Server独立安装或向现有安装添加功能,接受功能选…