3.6 基本分页存储的概念

介绍完连续分配管理方式后我们再来介绍非连续分配管理方式,非连续管理方式主要有三种:基本分页存储管理、基本分段存储管理、段页式存储管理。这节主要介绍分页存储管理方式。

目录

3.6 基本分页存储的概念

3.6.1 分页存储

3.6.2 页表

3.6.3 页表的大小

3.6.4 通过页表实现逻辑地址与物理地址的转换


3.6.1 分页存储

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

将进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部分称为一个“页”或“页面” 。每个页面也有一个编号,即“页号”,页号也是从0开始。
  易混辨析:页、页面 & 页框、页帧、物理页页号、页面号 vs 页框号、页帧号、物理页号
操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页
框有一一对应的关系。各个页面不必连续存放,可以放到不相邻的各个页框中。(注:页框不能太大,否则可能产生过大的内部碎片造成浪费)

3.6.2 页表

  在分页系统中,允许将进程的各个页离散地存储在内存不同的物理块中,但系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立了一张页面映像表,简称页表
  从上面这张示意图我们可以看出: 一个进程对应一张页表、进程的每个页面对应一个页表项、每个页表项由“页号”和“块号”组成、页表记录进程页面和实际存放的内存块之间的映射关系、每个页表项的长度是相同的。
  那么问题来了,每个页表项的长度是多少呢以及如何通过页表实现逻辑地址与物理地址的转换呢?

3.6.3 页表的大小

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

内存块大小=页面大小=4KB=B则4GB/B=个内存块。所以要想表示个内存块那么内存块的地址就是0--1即需要20bit来表示。又1B=8bit所以20bit至少3B来表示,因此我们得到需要3B来表示块号。在页表中页表项是连续存放的,所页号只是一个虚拟概念并不会占用存储空间(类似于数组下标),如果一个进程有(n+1)(从0页到n页)页那么就需要3*(n+1)B来存储这个页表。

注意这只是逻辑地址,要想计算物理地址还需要加上起始的基地址。

3.6.4 通过页表实现逻辑地址与物理地址的转换

在上节讲装入方式时我们提到动态重定位通过重定位寄存器可以实现装入时的逻辑地址与物理地址的转换。在这里页表就类似于重定位寄存器起到了中介的作用:逻辑地址A 对应的物理地址 = P号页面在内存中的起始地址+页内偏移量W

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

由题意可知逻辑地址被划分为如下四部分:

页号以及页内偏移量的计算如下:页号 = 逻辑地址 / 页面长度     页内偏移量 = 逻辑地址 % 页面长度

则本题中       页号 = 110 / 50 = 2       页内偏移量 = 110 % 50 = 10

按照上述的计算方式我们不难总结出一个规律:如果每个页面大小为 2KB,用二进制数表示逻辑地址,则末尾 K 位即为页内偏移量,其余部分就是页号。这也是计算机用2的整数次幂来表示页面大小的原因。如果遇到一些奇奇怪怪的数据我们还是按照公式计算页号以及页内偏移量。

操作系统(三十七)基本分页存储的概念相关推荐

  1. 【学习笔记】第三章——内存 II(分页存储、快表与局部性原理、两级页表)

    文章目录 一. 分页存储概念 二. 地址转换 1)为什么页面大小为2的次幂? 三. 页表 1)页表项长度.页号"隐含" 四. 局部性原理与快表 五. 二级页表 1)单级页表存在的问 ...

  2. 分页存储概念清晰梳理(页面、页表、页表项、页面大小、页内地址等概念)

    当我在学习操作系统的存储器管理这一章中的分页存储时发现我总是将许多概念混为一谈,当我求助于CSDN等众多网站的资源时发现其中的概念作者写的十分清晰但篇幅较长难以理解,因此我想用自己的理解用更加简洁明了 ...

  3. 3.1.6 OS之分页存储(页号、页偏移量等)

    文章目录 0.思维导图 1.为什么学习分页存储? 2.基本分页存储管理的思想 3.分页存储管理的重要概念 4.如何实现地址的转换 如何计算页号和页偏移量 分页存储的逻辑结构 如何知道页面在内存中的起始 ...

  4. NeHe OpenGL教程 第三十七课:卡通映射

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. 【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(7)

    前文回顾: 1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1) 2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2) 3.如何掌握openGauss数据库 ...

  6. 分页存储逻辑地址转物理地址

    目录 ​编辑 一.概念 关系为: 图示 二.十进制逻辑地址 例题 解题步骤 三.十六进制逻辑地址转物理地址 例如: 解题步骤 四.例题 解题步骤: 一.概念 首先要知道页式存储管理的逻辑地址分为两个部 ...

  7. 深度学习入门(三十七)计算性能——硬件(TBC)

    深度学习入门(三十七)计算性能--硬件(CPU.GPU) 前言 计算性能--硬件(CPU.GPU) 课件 电脑 提升CPU利用率① 提升CPU利用率② CPU VS GPU 提升GPU利用率 CPU/ ...

  8. 分页存储存储管理方式详解

    分页存储存储管理方式详解 离散分配方式 分页储存管理方式 页面与页表 页面 物理块 逻辑地址结构 页表 快表(TLB,Translation Look aside Buffer) 一级页表的缺陷 两级 ...

  9. Xen server三 为xen添加存储及创建虚拟机

    Xen server三为xen添加存储及创建虚拟机 上篇我们已经连接到xen主机,下面我们去就讲为xen主机添加本机存储或者网络上的iscsi存储和iso以及创建虚拟机,添加iscsi是为以后可能会做 ...

最新文章

  1. LeetCode Best Time to Buy and Sell Stock with Cooldown(动态规划)
  2. 原理解析_SpringBoot自动装配原理解析
  3. Matlab图像处理创新实践-实验3【图像锐化】
  4. thinkphp5 composer
  5. AttributeError: ‘pyltp.Postagger‘ object has no attribute ‘load‘
  6. 最高的分数(信息学奥赛一本通-T1062)
  7. 获取随机数的方式Random类对象的方法 java 0913
  8. Docker技术入门与实战
  9. matlab第七章符号对象,MATLAB语言:第七章 MATLAB符号计算
  10. 缓存,你真的用对了么?
  11. golang 捕获堆栈信息_一篇文章教你如何捕获前端错误
  12. ToneBoosters Plugins Bundle for Mac(音频效果器插件包)
  13. 我的第一个WM5程序
  14. 将数组A中的内容和数组B中的内容进行交换,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,1到 100 的所有整数中出现多少次数字9。
  15. mui 框架图片预览
  16. ubuntu安装nividia驱动
  17. 软件项目管理_作业1
  18. 计算机网络不同层中用于将网络互连的中间设备——转发器、网桥(桥接器)、路由器、网关
  19. python 轨迹分析_Python语言:程序代码分析铅球运动轨迹
  20. VSS2005使用技巧

热门文章

  1. SSM学习(一)Mybatis
  2. [BZOJ1322]Destroying The Graph
  3. 【78.89%】【codeforces 746A】Compote
  4. Linux企业级项目实践之网络爬虫(28)——爬虫socket处理
  5. 今天在cnblog开博啦
  6. ARM处理器的工作状态
  7. Python学习笔记:常用内建模块5
  8. leetcode_add_two_numbers
  9. [云炬创业基础笔记]第七张创业团队测试8
  10. 云炬随笔20211126(2)