段页式存储管理方式详解

2023-10-19 19:20

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

段页式存储管理方式详解

  • 分段存储方式
      • 引入目的:
      • 基本原理
        • 分段
        • 段表
        • 地址变换机构
      • 信息保护
      • 信息共享
      • 分页与分段的主要区别:
  • 段页式存储管理方式
      • 引入原因:
      • 基本原理
      • 段表与页表
      • 地址变换机构

分段存储方式

引入目的:

满足用户在编程和使用.上的习惯和需求

方便编程:为满足用户作业的逻辑关系,将数据和指令分段存储,其地址由段名和段内偏移量共同组成
信息共享
信息保护(以信息的逻辑单位为基础)
动态增长:保证使用过程中对内存的动态需求
动态链接:运行时动态加载需要的目标程序段

在这里插入图片描述

基本原理

分段

分段地址中的逻辑地址为:| 段号 | 段内地址 |
每个段都是从0开始编址,并采用一段连续的地址空间,段长由相应的逻辑信息组的长度决定(各段段长不同)。每个段即包含了一部分地址空间,又标识了段与段之间的逻辑关系。

段表

分段存储管理系统为每个段分配一个连续的分区,进程的各个段可离散地装入内存的不同位置,用一张段映射表(段表)记录每段在内存的起始地址(基址)和段的长度。在配置了段表后,执行中的进程可通过逻辑地址中的段号来查询段表,找到段的对应内存区。
段表表项的结构为:| 段长 | 基址 |

地址变换机构

段表寄存器:存放段表基址和段表长度TL
地址变换过程:

a、逻辑地址中的段号s与TL比较,若s>TL,越界
中断;反之,根据段表基址和段号所指示的段表
项找到所需段在内存中的基址b、逻辑地址中的段内偏移d和上一步找到的段长
SL相比较,若d>SL,越界中断;反之,将d与
段基址相加得到数据物理地址

在这里插入图片描述
例:eg:设某程序中有5个段,段号分别为0-4,段表如下,求:

界限基址
010001400
14006300
24004300
311003200
410004700

1)段2字节53的物理地址?
2)段3字节852的物理地址?
3)段0字节1222的物理地址?
answer:

  1. 4300+53=4353
  2. 3200+852=4052
  3. 1222>1000,越界中断!

信息保护

分段有助于实现将段与对其对应的保护机制相关联。
现代OS中,指令不可自我修改,故指令段只能定义为只读或只执行,内存映射硬件会检查段表项中的保护位,以防止对内存的非法访问(对只读
段的写将代码段视为数据等)。
数据则放在特定数组中,当需要访问数据时会对数组下标进行检测,超界时会产生越界中断。

信息共享

在每个进程的段表中对多进程共享的可重入代码设置一个段表项,当需要使用这部分代码时,应保证在执行时不会修改它,每个进程的私有数据和局部变量必须使用独立的段保存且不提供共享。
可重入代码(纯代码) :允许多个进程同时访问的代码,且为保证每个进程所执行的代码完全相同,决不允许执行过程中修改代码。
分页系统信息共享:使用可重入代码时,各进程的部分逻辑页面将被映射到可重入代码使用的各帧中,但其私有数据和局部变量所使用的帧则各不相同,且所有这些页面和帧的对照关系需要存入页表(长度可能会极大)。
分段系统信息共享:使用可重入代码时,只需在段表中为其设置一个段表项,并将执行时用到的部分数据copy到局部数据区,用来支持对执行时不可避免的代码修改的支持即可。
在这里插入图片描述

分页与分段的主要区别:

➢段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
➢页的大小固定不变,由系统决定。段的大小是不固定的,它由其完成的功能决定。
➢段式向用户提供的是二维地址空间,页式向用户提供的是一~维地址空间,其页号和页内偏移是机器硬件的功能。
➢由于段是信息的逻辑单位,因此便于存贮保护和信息的共享,页的保护和共享受到限制。

段页式存储管理方式

引入原因:

分页和分段管理方式各有其优缺点,分页系统能有效提高内存的利
用率,而分段则能更好地满足用户的需要,因此可以将两者结合成一种新
的存储管理方式系统称为“段页式系统”。

基本原理

结合分段和分贝思想,先将用户程序分成若干段并分别赋予段名,再将这些段分为若干页
地址结构:由段号、段内页号和页内地址三项共同构成地址

段号(S)段内页号(P)页内地址(W)

段表与页表

系统需要配置段表和页表。
在这里插入图片描述

地址变换机构

本系统中使用段表寄存器存放段表基址和段表长度TL
在这里插入图片描述
CPU提供的逻辑地址中的段号S首先和段表长度TL比较,若未越界则根据S和段表基址找到相应段表项中纪录的该段所在页表基址,接着使用段内页号P获得对应页面的页表项位置,从中找到帧号b,最后拼接上页内地址W得到
数据的物理地址。
该过程需要三次访问内存,为提高执行速度,可以增加一个快表,访问数据时利用段号和页号检索它,若可以命中,直接取出物理帧号;否则,进行上述三次内存访问过程获得数据。
在这里插入图片描述
例:设有一页式存储管理系统向用户提供的逻辑地址空间最大为16页,每页2048字节,内存共有8个物理帧,试问逻辑地址至少应为多少位?内存空间
有多大?

答:每页的2048字节需要11位二进制位标识页内位移部分地址;
逻辑空间最大为16页,页号地址需要4个二进制位,
故逻辑地址至少需要15位由于内存共有8个物理帧,
而在页式管理系统中的页面大小与帧等大,因此内存空间为16K

例:在一个采用段页式存储管理的系统中,页的大小为1KB。某个正在执行的作业情况如下:
(1)请给出将逻辑地址(2,3500)转换成物理地址的过程;
(2)计算出上述逻辑地址对应的物理地址的值。
在这里插入图片描述
( 1 )①逻辑地址中的段号 2 跟段表控制寄存器中的段表长 3 进行比较,由于 2<3 ,故段号没有越界;②根据段表控制寄存器中的段表起始地址加上段号 2 ,找到段表中对应于第 2 段的段表项,从而得到第 2 段的页表长度和页表起始地址;③根据段内偏移 3500 得到段内页号为 3 ,页内偏移为 428 ;④把段内页号 3 和段表项中的页表长度 5 进行比较,得知页号没越界;⑤页表起始地址加上页号得到对应的页表项,从而得到第 2 段的第 3 页的物理块号 30 ;⑥物理块号 30 和块内偏移 428 拼接成物理地址 31148 。

( 2 )逻辑地址 (2,3500) 对应的物理地址为十进制数 31148 ,十六进制 79AC 。

这篇关于段页式存储管理方式详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs