内存管理——分页分段

2023-11-20

一、分页存储管理
1、页面与页框
(1)、页面
将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号
(2)、页框
相应于页面,把内存空间分成和页面相同大小的若干个存储块,称为(物理)块或页框(frame)
(3)、页内碎片
在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而 形成了不可利用的碎片,称之为"页内碎片"
2、页表
列出作业的逻辑地址与其在主存中的物理地址间的对应关系
(1)、页面大小
应选择适中且为2的幂,通常为512B-8KB
(2)、表目
又称页描述子。一个页表包含若干表目,表目的自然序号对应于用户程序中的页号,表目中的块号是该页对应的物理块号。页表的每一个表目除了包含指向页框的指针外,还包括一个存取控制字段
在这里插入图片描述
3、地址结构
在这里插入图片描述
对某一特定机器,地址结构是一定的。设逻辑地址为A,页面大小为L,则:
页号P=INT(A/L)
页内地址d=A mod L
3、地址变换机构
(1)、基本地址变换机构
在这里插入图片描述
(2)、地址变换过程
在这里插入图片描述
(3)、管理
①、页表
系统为每个进程建立一个页表,页表放在内存,属于进程的现场信息
②、空块管理
位示图
在这里插入图片描述
③、内存的分配
计算一个作业所需要的总块数N
查位示图,看看是否还有N个空闲块
如果有足够的空闲块,将页表长度设为N,填入PCB
申请页表区,把页表始址填入PCB
依次分配N个空闲块,将块号和页号填入页表
修改位示图
4、快表
(1)、如果把页表放在主存中,无疑会影响系统性能。为了解决这个问题,采用一组硬件寄存器啊,存放当前访问过的页的页描述子
(2)、每次访问主存时,首先查找快表,若找到所需的页描述子,则快速形成物理地址。否则从页表中查找后形成物理地址,同时把页描述子写入快表
(3)、具有快表的地址变换机构
在这里插入图片描述
5、两级和多级页表
现代大多数计算机系统都支持非常大的逻辑地址空间(232-264),页表就变得非常大,要占用相当大的内存空间,解决方法
①、采用离散方式来找到一块连续的大内存空间
②、只将当前需要的部分页表项调入内存,其余的页表项扔驻留在磁盘上,需要时再调入
(1)、两级页表
①、逻辑地址结构
在这里插入图片描述
②、两级页表结构
在这里插入图片描述
③、地址映射
在这里插入图片描述
(2)、多级页表
设页面大小为4K,则一个页目录对应的用户地址空间为4GB,对于更大的用户空间需要使用多级页表

二、分段存储管理
在分页存储系统中,作业的地址空间是一维线性的,这破坏了程序内部天然的逻辑结构,造成共享、保护的困难。引入分段存储管理,主要是为了:
①、方便编程
②、信息共享
③、信息保护
④、动态增长
⑤、动态链接
1、分段系统基本原理
(1)、分段地址结构
在这里插入图片描述
(2)、段表
记录了段号、段首地址、长度之间的关系
每个程序设置一个段表,放进内存,属于进程的现场信息
在这里插入图片描述
(3)、作业与段表、存储空间关系
在这里插入图片描述
(4)、硬件支持
①、段表始址寄存器
用于保存正在运行进程的段表的始址
②、段表长度寄存器
用于保存正在运行进程的段表的长度
(5)、地址变换机构
在这里插入图片描述
(6)、地址映射及存储保护
在这里插入图片描述
2、分页和分段的主要区别
①、页是信息的物理单位,段是信息的逻辑单位
②、页的大小固定且由系统决定,段的长度不固定
③、分页的作业地址空间是一维的,即单一的线性地址空间,分段的作业地址空间则是二维的
④、信息共享
分页:
在这里插入图片描述
分段:
在这里插入图片描述
3、分段优缺点
(1)、优点
①、便于动态申请内存
②、管理和使用统一化
③、便于共享
④、便于动态链接
(2)、缺点
产生碎片

三、段页存储管理
1、基本思想
(1)、用户程序划分:按段式划分
①、对用户来讲,按段的逻辑关系进行划分
②、对系统来讲,按页划分每一段
(2)、内存划分:按页式存储管理方案
(3)、内存分配:按页为单位进行分配
(4)、逻辑地址
在这里插入图片描述
2、管理
(1)、段表
记录每一段的页表始址和页表长度
(2)、页表
记录逻辑页号与内存块号的对应关系,每一段有一个,一个程序可能有多个页表
(3)、空块管理:同页式管理
(4)、分配:同页式管理
3、地址空间与地址结构
一个程序首先被划分成若干程序段,每一段给予不同的分段表示符,然后,对每一分段又分成若干个固定大小的页面
(1)、地址空间
在这里插入图片描述
(2)地址结构
在这里插入图片描述
4、地址映射
在这里插入图片描述
5、地址变换
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存管理——分页分段 的相关文章

  • 计算机网路基础 - 一些基本概念与网络结构

    1 基本概念 计算机网络 通信技术 计算机技术 是两项技术紧密结合的产物 通信系统的基础模型 计算机网络 是指将地理位置不同 具有独立功能的多台计算机及其外部设备 通过通信线路连接 在网络操作系统 网络管理软件及网络通信协议的管理和协调下
  • 掉电无法启动数据库问题解决

    由于突然掉电 造成客户在windows平台上10 2 0 1数据库无法驱动 以下是具体解决步骤 一 定位故障问题 1 启动数据库 查看错误 SQL gt startup ora 01113 file 1 needs media recove
  • VMware-Ubuntu安装bochs

    我的运行环境是VMware的Ubuntu 首先大家可以按照CSDN上的教程按照符合自己需求的虚拟机 我在上午还在VMware和virtualBox之间做选择 但是由于已经安装过了VMware 所以我就直接用了VMware 当然了 一千人眼中
  • Linux网络安全-Zabbix入门(一)

    一 基本概念 1 监控目的 运行情况 提前发现问题 2 监控资源类别 公开 tcp udp 端口 私有 cpu 磁盘 监控一切需要监控的东西 只要能够想到 能够用命令实现的都能用来监控 如果想远程管理服务器就有远程管理卡 比如Dell id
  • 操作系统学习(九)进程通信

    一 知识总览 二 定义 进程通信是指进程之间的信息交换 每个进程都拥有自己的内存空间 是相互独立的 这样在每个进程执行时 才不会被其他进程所干扰 三 进程通信的方式 1 共享存储 1 两个进程对共享区的访问必须是互斥的 即在同一时间内 只允
  • 操作系统PV操作及读者写者问题

    操作系统PV操作及读者写者问题 目录 1 信号量 2 P V操作原语可描述为以下式子 3 解释 4 互斥模式原理 5 同步模式原理 6 读者写者问题 1 信号量 PV操作与信号量的处理有关 信号量是表示资源的实体 是一个与队列有关的整型变量
  • JSON.stringify()

    JSON stringify 将一个JavaScript值 对象或者数组 转换为一个 JSON字符串 如果指定了replacer是一个函数 则可以选择性的替换值 或者如果指定了replacer是一个数组 可选择性的仅包含数组指定的属性 语法
  • Linux系统编程:多线程交替打印ABC

    引言 分享关于线程的一道测试题 因为网上基本都是Java的解决方法 决定自己写一篇来记录一下线程的学习 问题描述 编写一个至少具有三个线程的程序 称之为线程 A B 和 C 其中线程 A 输出字符 A 线程 B 输出字符 B 线程 C 输出
  • LWIP在STM32上的移植

    本文做记录摘抄 加上自己的体会 文章标题 STM32使用LWIP实现DHCP客户端 http www cnblogs com dengxiaojun p 4379545 html 该文章介绍了几点 LWIP源码的内容 关键点 1 inclu
  • 操作系统笔记六(文件管理)

    1 文件逻辑结构 1 1逻辑结构的文件类型 分类 有结构文件 例如 PNG文件 无结构文件 1 2顺序文件 1 3索引文件 2 辅存的存储空间分配 2 1分配方式 连续分配 直接分配连续的存储空间 链接分配 隐式链接 在盘块内指定下一个盘块
  • Linux,Network manager 导致节点异常重启

    推断是Network manager 导致的 原因待查今天在VmWare的虚拟机上装了个测试RAC 又遇到了一个摸不到头绪的问题CRS装好后 一旦登陆图形界面 节点就重启 事情就有这么巧不登陆图形界面 观察了1个小时没问题 一旦登陆后 立刻
  • Visual studio 2005 hangs on startup AppHangXProcB1 svchost devenv.exe svchost.exe:{2a811bb2-303b-48b...

    This problem has been torturing me for the whole afternoon and after searching on the web for a long time I finally get
  • Linux 内核中的 Device Mapper 机制

    Linux 内核中的 Device Mapper 机制 尹 洋 在读博士生 尹洋 中科院计算所国家高性能计算机工程技术研究中心的在读博士生 主要从事服务部署和存储资源管理以及Linux块设备一级的开发和研究工作 简介 本文结合具体代码对 L
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • Anaconda 安装 Python 库(MySQLdb)的方法-(转)

    安装python库的过程中 最重要的地方就是版本需要兼容 其中操作系统为64位 Python为2 X 64位 下载安装文件的时候也要注意版本匹配 其中文件名中包含的cp27表示CPython 2 7版本 cp34表示CPython 3 4
  • 图解五种磁盘调度算法, FCFS, SSTF, SCAN, C-SCAN, LOOK

    一 FCFS 调度 先来先服务 磁盘调度的最简单形式当然是先来先服务 FCFS 算法 虽然这种算法比较公平 但是它通常并不提供最快的服务 例如 考虑一个磁盘队列 其 I O 请求块的柱面的顺序如下 98 183 37 122 14 124
  • linux 使用systemctl 启动服务报错: Error: No space left on device

    By default Linux only allocates 8192 watches for inotify which is ridiculously low And when it runs out the error is als
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • 使用ShellJS提升你的开发效率(一)

    Shelljs Unix shell commands for Node js Shelljs是Node js下的脚本语言解析器 具有丰富且强大的底层操作 Windows Linux OS X 权限 Shelljs本质就是基于node的一层
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • 二叉搜索树(BST)的基本操作

    二叉搜索树 BST 的创建 增加 删除 查找 需要注意 BST的左子树必小于根 右子树必大于根 所以不存在值相同的结点 include
  • 计算机网络(自顶向下方法)中的PoP

    目录 前言 问题 解决 前言 在读 计算机网络 自顶向下方法 时 看到在讲网络结构的时候提到过PoP 但是其中有一句话始终不理解 不通顺 上网搜索也没发现相关解释文章 因此 在我把这个问题解决后 就写下了这篇文章 希望可以帮助到其他人 问题
  • Eclipse常用插件下载地址

    Eclipse常用插件下载地址 官方网站http www eclipse org downloads index php下载eclipse的最新版本 Eclipse 项目资源中心 http www ibm com developerwork
  • 2、Java 环境搭建

    Java 环境搭建 1 JDK 的简介 JDK Java Development Kit 是一组实现Java程序开发与运行的本地环境 在实际的项目的开发与运行过程之中 往往都会选择一些比较好用的桌面系统 Windows MacOS 进行开发
  • linux下定时器timer_create()的使用

    一 采用新线程派驻的方式 注 编译时 需加上 lrt include
  • Spring IoC依赖注入的实现

    看了 spring技术内幕 的第二章 学习了spring的IoC容器的实现 对其做了浅显地分析 依赖注入的时机 如果配置文件有配置lazy init 那么依赖注入的时机发生在用户向IoC 容器索取bean的时候 即调用beanfactory
  • Django基础2——URL路由系统

    文章目录 一 基本了解 二 url路由分发 三 正则匹配 四 压缩归档超链接 优化一 使用分组名称功能 优化二 使用url名称功能 4 1 使用功能之前效果展示 4 2 使用功能之后效果展示 一 基本了解 概念 路由系统就是URL路径和视图
  • 字符串匹配算法总结

    转自 http blog csdn net zdl1016 archive 2009 10 11 4654061 aspx 我想说一句 我日 我讨厌KMP KMP虽然经典 但是理解起来极其复杂 好不容易理解好了 便起码来巨麻烦 老子就是今天
  • 面向对象设计 简述

    面向对象设计 面向对象的特性 将数据封装于类中 完全面型对象 封装 隐藏细节 只给出使用信息 公共的访问方式 隐藏对象的属性和实现细节 继承 继承就是子类继承父类的特征和行为 使得子类对象 实例 具有父类的实例域和方法 或子类从父类继承方法
  • nodeJs(express)文件上传配置

    用node作为服务器端 在需要上传文件到后台时 后台需要相应配置 简单配置如下 1 安装multer依赖 npm install multer save 渣渣前台的渣渣后台技术有限 不是自己配置的node服务器 使用的是webstorm自带
  • Android客户端apk自动检测更新自动下载自动安装的实现方法

    改进了一个可以检测版本更新自动下载自动安装的客户端升级方案 在下载之前删除之前的历史下载文件 减少垃圾数据 先给出核心类 public class DownloadService extends Service private Downlo
  • airpodspro没有弹窗_安卓党能用 AirPods Pro ?这样操作可以完美适配

    AirPods Pro一出现就引爆了市场 高达2000元的售价没能阻拦人们对它的狂热 目前AirPods已经在官网全面缺货 发货等待期甚至多达一个月 这是因为AirPods Pro的产品力实在太过出色 比它降噪强的没它小 比它小的没它降噪
  • C# A potentially dangerous 问题解决

    A potentially dangerous Request Path value was detected from the client 如果在页面中出现上述错误 只需在页面的头文件添加validateRequest false 即可
  • 【Vue基础】Vuex全局管理的基本代码结构及其使用

    Vuex全局管理的基本代码结构及其使用 一 代码结构及其使用 1 state 提供唯一的公共数据源 组件访问 state 中数据的第一种方式 this store state 全局数据名称 组件访问 state 中数据的第二种方式 mapS
  • UE4 使蓝图连接线出现小箭头标志

    当我们写的蓝图杂乱无章 甚至不能看清执行顺序的时候 只需要在偏好设置里设置一下就可以清晰的看清蓝图的执行顺序
  • 区块链+物联网 BOT

    不可否认 我们的一只脚已经迈入万物智联时代 但另一只脚迈入还存在一定的阻碍 区块链技术的出现将会促进这一进程的发展 智能音响 主人你好 我是小Q 现在是早上08点29分 上班时间要到咯 智能门锁 主人你摔疼我了 你总是这样匆忙 下次赶紧麻溜
  • 安装Python第三方库

    视频版教程 Python3零基础7天入门实战视频教程 在Python的标准安装中 包含了一组自带的模块 这些模块被成为 标准库 比如常用的math random datetime os json等等 此外 还有很多的第三方模块 或者叫做库也
  • 若以框架 vue富文本字符串中获取图片的存储路径

    若依的富文本 字符串是上述格式 我们要获取以下格式 就是图片的存储路径 有几个步骤 第一步 main js中添加两行代码 import axios from axios Vue prototype axios axios 第二步 Edit包
  • Python 笔记 — 单例模式和魔术方法

    目录 一 单例模式 1 概念 2 优点 3 使用 4 实现方法 5 运用 6 内存地址 7 通过 new 实现 8 通过 classmethod 9 通过装饰器实现 10 通过导入模块时实现 11 hasattr 函数 12 getattr
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在