内存管理概念 (二)

news2024/11/15 1:49:47

目录

  • 一 . 基本分页存储管理
    • 分页存储的几个基本概念
      • 页面 与 页面大小
      • 地址结构
      • 页表
    • 基本地址变换机构
    • 具有快表的地址变换机构
    • 两级页表
  • 二. 基本分段存储管理
    • 分段
    • 段表
    • 地址变换机构
    • 页表和分段的对比
    • 段的共享与保护
  • 三. 段页式存储管理
    • 分页,分段管理优缺点
    • 分页+分段=段页式管理
    • 地址转换

一 . 基本分页存储管理

连续分配方式存储密度高于非连续存储。

  • 非连续分配方式根据分区大小是否固定,分为分页存储管理分段存储管理
  • 分页存储管理中,根据运行作业时是否需要将作业的所有页面都装入内存才能运行,分为基本分页存储管理请求分页存储管理

分页存储的几个基本概念

  • 分页通过硬件机制实现,对用户完全透明,目的是提高内存利用率。

页面 与 页面大小

页、页面 VS 页框、页帧、物理页

  • 进程的逻辑地址空间每个页面有一个编号,称为页号,从 0 开始。
  • 内存空间(物理地址)中每个页框也有一个编号,称为页框号(或物理块号),从 0 开始。
  • 进程执行时候,OS 以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框,产生一一对应关系。

各个页面不必连续存放,可以放到不相邻的页框。

  • 为了方便地址转换,页面大小应该是 2 的整数次幂【如:4KB 等】。
  • 页面太大:内存碎片增多,降低内存利用率。
  • 页面太小:使得进程的页面数过多,页表就会过长,占用大量内存,同时也会增加硬件地址转换开销,降低页面换入/换出效率。

地址结构

某个分页存储管理的逻辑地址结构如下所示:

31 … 1211 … 0
页号 P页内偏移 W

页号 P 为 12~31 位,表示最多允许 2^20 页;
页内地址为 0~11 位,表示每页大小 2^12 B(按字节编址)。

页表

  • 为了便于找到每个页面在内存中存放的位置,系统为每一个进程建立一张页面映射表(页表)。【通常存放在 PCB 中】
  • 页表项:页号 + 块号。记录了页面在物理内存对应的物理块号。【由于页表中的页表项是连续存放的,故页号可以隐含,不占用存储空间】
  • 作用:实现了从逻辑页号到物理块号的地址映射。

联想截图_20240725164122.png

基本地址变换机构

  • 地址变换:即将逻辑地址转换为内存中的物理地址。借助于页表来实现。

联想截图_20240725164505.png
联想截图_20240725164726.png联想截图_20240725165025.png

具有快表的地址变换机构

采用上面的地址变换过程时候,若页表全部放入内存,则取一个数据或指令至少需要访问两次内存:第一次访问页表,确定取出数据/指令的物理地址,第二次访问存储地址取数据/指令。显然比通常执行指令速度慢了一半。

快表(TLB):又称相联存储器,是一个具有并行查找能力的 高速缓存存储器
联想截图_20240725171139.png

  • 用来存放访问过的若干表项,以加速地址变换过程。【对此,主存中的页表常被称为慢表】

联想截图_20240725170633.png
联想截图_20240725170917.png
联想截图_20240725171001.png

两级页表

引入分页管理后,由于页表的存在,需要给页表分配内存空间,并且必须是连续的页地址。如果一个进程的页表项很多,就会出现仅仅页表就需要占用大量连续存储空间的情况,显然不切实际。
解决问题的方法有两个:

  • 离散分配页表所需存储空间,用一张索引表记录各个页表的存放位置。这样就解决了页表占用连续内存空间的问题。【即采用多级页表
  • 只将当前需要的部分表项调入内存,其他页表仍驻留磁盘,需要时再调入(虚拟内存思想),以解决占用内存过多的问题。

联想截图_20240725174142.png
联想截图_20240725174351.png联想截图_20240725174412.png联想截图_20240725174424.png

二. 基本分段存储管理

分段管理考虑用户和程序员,以满足方便编程、信息保护和共享、动态增长以及动态链接等多方面需要。

分段

  • 内存分配以段为单位。
  • 分段系统将用户进程的逻辑地址空间按照自身逻辑关系划分为大小不等的段,每个段都有一个段名。
  • 每段地址从0开始编址,并分配一段连续的地址空间(段内地址需要连续分配,段间不要求,进程的地址空间是二维的)。

例如,用户主程序由主程序段、两个子程序段、栈段和数据段组成。

  • 分段系统中,段号和段内偏移必须由用户显示提供;高级程序设计语言中,该工作由编译程序完成。

联想截图_20240725192416.png

段表

每个进程都有一张逻辑空间与内存空间映射的段表,进程的每个段对应一个段表项。段表项记录该段在内存中起始地址和长度。
联想截图_20240725192644.png

地址变换机构

为了实现进程从逻辑地址到物理地址的转换,系统设置一个段表寄存器,用于存放段表起始地址 F 和段表长度 M
联想截图_20240725193136.png

页表和分段的对比

  • 相似
    • 都是非连续分配方式;
    • 都需要提供地址映射机构实现地址变换。
  • 不同:
    • 是信息的物理单位是信息的逻辑单位
    • 页的大小固定且由系统决定段长不固定,取决于用户编写的程序
    • 分页管理地址是一维的;
    • 段式管理不能通过给出一个整数确定对应的物理地址(由于段长不固定),无法通过除法得到段号和取余得到段内偏移,因此必须显示给出段号和段内偏移。因此分段管理地址空间是二维的。

段的共享与保护

分页系统中,虽然也能实现共享,但远不如分段系统来得方便。若被共享的代码占N个页框,则每个进程的页表中都要建立N个页表项,指向被共享的N个页框。

在分段系统中,不管该段有多大,都只需为该段设置一个段表项,因此非常容易实现共享。只需在每个进程的段表中设置一个段表项,指向被共享的同一个物理段。

不能被任何进程修改的代码称为可重入代码或纯代码(不属于临界资源),它是一种允许多个进程同时访问的代码。为了防止程序在执行时修改共享代码,在每个进程中都必须配以局部数据区,将在执行过程中可能改变的部分复制到数据区,这样,进程就可对该数据区中的内容进行修改。

与分页管理类似,分段管理的保护方法主要有两种:

  • 一种是存取控制保护。
  • 另一种是地址越界保护。地址越界保护将段表寄存器中的段表长度与逻辑地址中的段号比较,若段号大于段表长度,则产生越界中断;再将段表项中的段长和逻辑地址中的段内偏移进行比较,若段内偏移大于段长,也会产生越界中断。

分页管理只需要判断页号是否越界,页内偏移是不可能越界的。

三. 段页式存储管理

分页,分段管理优缺点

联想截图_20240725194322.png

分页+分段=段页式管理

分页存储管理能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享和保护。将这两种存储管理方法结合起来,便形成了段页式存储管理方式。

在段页式系统中,进程的地址空间首先被分成若干逻辑段,每段都有自己的段号,然后将每段分成若干大小固定的页对内存空间的管理仍然和分页存储管理一样,将其分成若干和页面大小相同的存储块,对内存的分配以存储块为单位
为了实现地址变换,系统为每个进程建立一张段表,每个段对应一个段表项,每个段表项至少包括段号、页表长度和页表始址;每个段有一张页表,每个页表项至少包括页号和块号。此外,系统中还应有一个段表寄存器,指出进程的段表始址和段表长度(段表寄存器和页表寄存器的作用都有两个,一是在段表或页表中寻址,二是判断是否越界)。
联想截图_20240725194446.png

联想截图_20240725194612.png

地址转换

在进行地址变换时,首先通过段表查到页表始址,然后通过页表找到物理块号,最后形成物理地址。进行一次访问实际需要三次访问主存,这里同样可以使用快表来加快查找速度,其关键字由段号、页号组成。

联想截图_20240725194849.png

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

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

相关文章

MATLAB中reset用法

目录 语法 说明 示例 重置坐标区和图窗属性 参数说明 局限性 reset函数的功能是重置图形对象属性。 语法 reset(h) 说明 reset(h) 将指定图形对象的所有属性重置为其默认值。没有默认值的属性不重置。 MATLAB 不会重置任何图形对象的 Position 或 Units 属性。此外&am…

Java-根据前缀-日期-数字-生成流水号(不重复)

🎈边走、边悟🎈迟早会好 小伙伴们在日常开发时可能会遇到的业务-生成流水号,在企业中可以说是比较常见的需求, 可以采用"前缀日期数字"的方式(ps:此方式是需要用到缓存的)前缀:为了…

SpringBoot集成Kaptcha验证码

Hi 👋, Im shy 有人见尘埃,有人见星辰 1. 什么是Kaptcha验证码? Kaptcha是一个强大的开源Java验证码生成库,由Google开发。它能够生成高度可配置的图片验证码,主要用于防止自动化程序滥用web应用,提高应用的安全性。 2. Kaptcha的主要特性 Kaptch…

Kafka快速入门+SpringBoot简单的秒杀案例

1. 主题相关 1.1 创建主题 kafka-topics.sh --create --bootstrap-server [服务器地址] --replication-factor [副本数] --partitions [分区数] --topic [主题名]liberliber-VMware-Virtual-Platform:/home/zookeeper$ docker-compose exec kafka /bin/bash #进入kafka容器 b…

还手动抄字幕?学会这3个视频转文字方法,轻松提取视频中的字幕!

大家有尝试过考试前极限抱佛脚吗? 在下不才,曾经试过一次,轻松在及格线低空飘过【大家不要学不要学不要学,重要的事情说三遍!!!】 至于我当时究竟是怎么做到的呢?其实这里面有点小…

走进数组的奇妙之旅(1)-学习笔记

引言: 在前几篇文章中,我们深入探讨了函数的奥秘。在讲述函数知识的过程中,我们邂逅了一个新的概念,你或许还记得在演示 strcpy函数时,出现的这行代码:char1[20]{0};。当时,你是否感到好奇&…

国产光电耦合器2024年的机遇与挑战

随着科技的飞速发展,2024年对于国产光电耦合器行业来说,无疑是充满机遇与挑战的一年。本文将深入探讨该行业在技术创新、市场竞争、5G时代、新兴应用领域和国际市场拓展方面的现状及未来前景。 技术创新的黄金期 物联网和人工智能技术的迅猛发展&#x…

【实在RPA案例集】实在智能助力中国烟草11省40余家多场景自动化!

近年来,为深入贯彻行业数字化转型战略部署和发展新质生产力体制机制,诸多省市烟草公司及中烟公司大力推进烟草行业数字化转型,然而烟草行业在数字化转型过程中始终存在一个核心痛点,即数据整合的复杂性、系统间的兼容性问题&#…

众人吹捧的Exo并不是真正的分布式推理,而无人问津的Cake或许才是

之前就看到不少抖音AI区的博主吹火爆外网的Exo项目支持多台苹果机运行一个 Llama 70B。我就觉得这个事情或许有些不对劲,而随着最近 Meta 出了 405B,又有朋友向我推荐Exo,我不禁想知道一个 Bonjour 的 Zeroconf 怎么就让 MLX 支持 P2P 的分布…

IP 泄露: 原因与避免方法

始终关注您的IP信息! 您的IP地址不仅显示您的位置,它包含几乎所有的互联网活动信息! 如果出现IP泄漏,几乎所有的信息都会被捕获甚至非法利用! 那么,网站究竟如何追踪您的IP地址?您又如何有效…

【前端学习笔记】CSS基础一

一、什么是CSS 1.CSS 介绍 CSS(Cascading Style Sheets,层叠样式表)是一种用来控制网页布局和设计外观的样式语言。它使得开发者可以分离网页的内容(HTML)和表现形式(样式),提高了…

C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性

文章目录 C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性转换Tip切换内容介绍显示方式字体色背景色 常用光标控制附示例和运行结果 C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性 标准输出格式其属性可控制,控制由一系列的控制码指定。标准输出函数可…

【OAuth2系列】集成微信小程序登录到 Spring Security OAuth 2.0

作者:后端小肥肠 创作不易,未经允许严禁转载。 姊妹篇: 【Spring Security系列】权限之旅:SpringSecurity小程序登录深度探索_spring security 微信小程序登录-CSDN博客 目录 1. 前言 2. 总体登录流程 3. 数据表设计 3.1. sys…

2025第25届北京环卫展|市政设施展|清洗设备展览会

2025第25届北京国际环卫与市政设施及清洗设备展览会 时间:2025年 4月10-12日 地点:全国农业展览馆(朝阳区北三环东路16号) 邀 请 函 指导支持:中国城市环境卫生协会 北京市城市管理委员会 主办单位:北京…

Coggle数据科学 | Kaggle 知识点:时序模型 Prophet

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:Kaggle 知识点:时序模型 Prophet Prophet 算法 在时间序列中Prophet是Facebook开源的时间序列预测算法,可以有效处理节假…

CSS学习笔记[Web开发]

CSS学习 本文为学习笔记,参考菜鸟和w3c 文章目录 CSS 简介CSS 插入外部 CSS内部 CSS行内 CSS多个样式表层叠顺序 CSS 语法例子解释 CSS 选择器CSS 元素选择器CSS id 选择器实例CSS 类选择器实例CSS 通用选择器实例CSS 分组选择器CSS 后代选择器CSS 子元素选择器CSS …

Java初级之集合(Map可变参数集合工具类)

目录 1、Map集合 1.1 Map集合的概述和特点 1.2 Map集合的基本功能 1.3 Map集合的获取功能 1.4 Map集合的遍历(一) 1.4 Map集合的遍历(二) 2、HashMap 2.1HashMap集合概述和特点 2.2HashMap集合应用案例 3、TreeMap集合 …

.Net Core 微服务之Consul(三)-KV存储分布式锁

引言: 集合上两期.Net Core 微服务之Consul(一)(.Net Core 微服务之Consul(一)-CSDN博客) 。.Net Core 微服务之Consul(二)-集群搭建)(.Net Core 微服务之Consul(二)-集群搭建-CSDN博客) 目录 一. Consul KV 存储 1. KV 存储介绍 1.1 数据模型 1.2 一致性和…

react18+

主要是围绕函数式组件讲,18主要用就是函数式组件,学习前先熟悉下原生js的基本使用,主要是事件 1、UI操作 1.1、书写jsx标签语言 基本写法和原生如同一则,只是放在一个方法里面返回而已,我们称这样的写法为函数式组件…

牛客JS题(三)文件扩展名

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 正则表达式可选链操作符 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /></head><body><script>/*** 可能…