操作系统复习3.1.1-内存非连续存储

news2024/12/23 10:29:43

基本分页存储管理

背景

固定分区带来的是内部内存碎片难以利用
而动态分配带来的外部内存碎片难以利用
而基本分页存储管理解决了这个问题,将一个进程分散地装入不同分区,避免了紧凑的处理

思想

将一个进程(43MB)装入内存,一个分页大小为10MB,则分成5份即可,通过减少分页大小,减少内部碎片

概念梳理

内存空间分为一个个大小相等的分区
分区 = 页框 = 页帧 = 内存块 = 物理块
页框号 = 内存块号 = 页帧号 = 物理块号

用户进程的地址空间分为一个个与页框等大的区域,称为页或页面,每个页也有页号

操作系统以页框为单位为各个进程分配内存空间,进程每个页面分别放入一个页框中,各个页面不必按照顺序存放

地址转换

在这里插入图片描述
程序内指令指向的地址都是逻辑地址,当执行时需要转换为物理地址,根据页号和逻辑地址,推算出内存单元在分页内的逻辑地址,再加上对应分页的起始地址的物理地址即可

页号 = 逻辑地址 / 页面长度
页内偏移量 = 逻辑地址 % 页面长度
在这里插入图片描述

分页存储的逻辑结构

页号+页内偏移量
在这里插入图片描述

系统为了得知进程的每个页面在内存中的存放位置,建立一张页表
一个进程对应一张页表
进程的每一页对应一个页表项
每个页表项由页号和内存块号组成
页表项长度相同,页号隐含

页表寄存器

基本地址变换季候可以借助页表将逻辑地址转换为物理地址,通常在系统中设置一个页表寄存器PTR, 存放页表在内存中的起始地址F和页表长度M
进程未执行时,页表的始址和页表长度都放在PCB中,当进程被调度后,操作系统内核会把它们放到页表寄存器中
在这里插入图片描述
根据指令的逻辑地址,计算出页号和页内偏移量
判断页号是否越界
查询页表中对应的页表项,确定内存块号
用内存块号和页内偏移量得出实际物理地址

整体过程和前面推导的一致,而这部分地址转换工作就是通常基本地址转换结构完成

快表

优化基本地址转换结构
又称联想寄存器TLB,是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,加速地址转换,内存中的页表常称为慢表

局部性原理

时空局部性

指令a刚被执行了,则不久后很可能会被再次执行

空间局部性

存储单元a刚被访问了,则不久后很可能会被再次访问
在这里插入图片描述
cpu给出逻辑地址,算出页号和页内偏移量,将页号和快表中的页号进行比较
如果命中,则直接取出内存块号,产生一次访存
否则再查询内存中的页表,产生两次访存

二级页表

由于单级页表,需要的页表非常大,且使用时需要页表项连续,即需要整个页表放入内存中
而由局部性原理可知,不是需要所有页表项放入内存中,因此我们需要建立另一张页表,记录各页面的存放位置,这样就解决了页表必须连续存放的问题,这个表称为页目录表,或称外层页表、顶层页表

地址结构

在这里插入图片描述
对页表进行分组

地址转换

在这里插入图片描述
一级页号对应的内存号,存放着二级页表的地址,皆由二级页表和页内偏移量获取物理地址

而问题二,页表常驻内存问题,可通过虚拟存储解决,需要时才调入内存

多级页表机制,各级页表大小不能超过一个页面

基本分段管理

根据自身逻辑关系划分为若干个段,每个段都有段名,每个段在内存中占据连续空间,各段间可不连续

逻辑结构

在这里插入图片描述
段号+段内地址
每个段对应一个段表项,记录了该段在内存中的起始位置和段长度
参考分区的管理,自然也要引入段表

每个段对应一个段表项,记录了段长和基址(起始地址)
每个段表项的长度是相同的,段号同样是隐藏的

地址变换

与分页类似,都是通过逻辑地址得出段号和段内地址,通过段表寄存器,查询对应的段表获得获取段的基址和长度,最后定位到内存中的位置,期间包含对段内地址和段号的越界检查

分段与分页的对比

页是信息的物理单位,分页用于实现离散分配,提高内存利用率,分页仅仅是为了系统管理上面的需要,用户不可见

段是信息的逻辑单位,分段用于更好的满足用户需求,一个段包含着一组属于一个逻辑模块的信息。分段对用户可见,由用户显式给出段名

分页的用户进程的地址空间是一维的,一个记忆符表示一个地址
分段的用户进程的地址空间是二维的,通过段名和段内地址标记一个地址

分段比分页更容易实现信息的共享和保护

分段的共享和保护

不能被修改的代码被称为纯代码或可重入代码,可共享的
如管理缓冲区的代码,只是检查缓冲区是否可访问,只需让各进程的段表项指向同一段即可实现共享

页表项不支持是因为页很小,且不按逻辑分区,因此会出现该分区的一部分不能共享,一部分可共享

段页式存储管理

段页式即先分段,再分页

段和页的优缺点

分页有很高的内存空间利用率,不会产生外存碎片,只有少量页内碎片,不方便按照逻辑模块实现信息的共享和保护

分段很方便按照逻辑实现信息的共享和保护,但段长过大时,分配连续空间很不方便,且产生外部碎片

段页式逻辑结构

段号+页号+页内地址
在这里插入图片描述

地址转换

在这里插入图片描述
与段、页类似

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

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

相关文章

【fluent】利用UDF和Scheme变量实现根据条件满足情况保存dat、case数据案例文件

一、问题背景 前一段时间在闲鱼上,遇到有一个人问我“在udf中如何实现某一个变量满足一定取值范围内才保存dat和case文件”。 而后我帮他解决了这个问题,在此处也将解决办法公益性地分享出来。 主要参考的是CFD online上的一篇讨论fluent udf, saving…

chatgpt赋能python:Python函数:介绍及应用

Python函数:介绍及应用 Python是一种功能强大的编程语言。函数是Python编程中最常用的组件之一。函数是用来执行特定的程序并返回结果的工具,可以在一个程序中调用多次。在本文中,我们将介绍Python函数的应用和使用方法。 Python函数的定义…

ant-design-vue将英文改为中文 DatePicker日期控件

ant-design设置DatePicker日期控件中文显示 ant-design-vue将英文改为中文 我们在使用 ant-design-vue 的时候 会遇到默认的语言是 英语 大部分我们需要转成为中文 这时候我们就需要进行配置 首先我们改单一组件的语言&#xff1a; <template><a-date-picker v-model:…

互联网医院牌照申请条件|互联网医院牌照申请流程

​ 随着互联网技术的迅速发展&#xff0c;互联网医院已成为医疗服务领域的重要组成部分。互联网医院是指通过互联网提供医疗服务的机构&#xff0c;其开展医疗业务需经过相关管理部门的批准&#xff0c;且必须持有互联网医院牌照。 申请条件 互联网医院牌照的申请条件如下&a…

互联网医院资质的申请条件和流程有哪些

​随着互联网的快速发展&#xff0c;互联网医疗逐渐成为了医疗行业的重要组成部分&#xff0c;互联网医院也因此出现了。互联网医院是指通过网络技术&#xff0c;开展远程医学服务、健康管理、医学教育等活动的医疗机构。 互联网医院牌照申请需要的资料和条件 要想成功申请互…

压缩感知重构之分段正交匹配追踪算法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

Arthas-Class/Classloader相关命令使用

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 开头&#xff1a; 我们先说下生产使用频率较高的有哪些&#xff1a;dump、jad、mc、retransfo…

FMEA教程

1. 2. 3. 4. 5. PFMEA是“过程失效模式与后果分析”的英文“Process Failure Mode and Effect Analysis”的缩写。为了更好地促进AQP PFMEA软件的应用&#xff0c;我们将以系列文章分享运用AQP PFMEA软件有效开展PFMEA工作的理念和方法&#xff0c;同时系统性介绍AQP PFMEA软…

leetcode96--不同的二叉搜索树[java]

不同的二叉搜索树 leetcode 96 题 不同的二叉搜索树题目描述暴力递归解题思路代码演示执行效率 递归 缓存解题思路代码演示执行效率 动态规划专题 leetcode 96 题 不同的二叉搜索树 原题链接: 难度—中等 https://leetcode.cn/problems/unique-binary-search-trees/ 题目描述 …

chatgpt赋能python:分解gif:使用Python将动态图片拆分成单帧图片

分解gif&#xff1a;使用Python将动态图片拆分成单帧图片 随着互联网上图片的使用越来越普遍&#xff0c;动态图片也成为了大家经常使用的图片之一。GIF动态图作为一种常见的动态图片格式&#xff0c;有时需要将其拆分成单帧图片&#xff0c;以便于使用或修改其中的某一帧。本…

目标检测笔记(九):详细介绍并实现可视化深度学习中每层特征层的网络训练情况

文章目录 为什么要解析特征层如何可视化特征层可视化结果如何 ❤️ &#x1f9e1; &#x1f49b; &#x1f49a; &#x1f499; &#x1f49c; &#x1f5a4; &#x1f90d; &#x1f90e; &#x1f494; ❣️ &#x1f495; &#x1f49e; &#x1f493; &#x1f497; &#…

SpringCloud(三)

文章目录 Eureka注册中心Eureka的结构和作用搭建eureka-server创建eureka-server服务引入eureka依赖编写启动类编写配置文件启动服务 服务注册1&#xff09;引入依赖2&#xff09;配置文件3&#xff09;启动多个user-service实例 服务发现1&#xff09;引入依赖2&#xff09;配…

chatgpt赋能python:Python冒泡法排序:一种简单且高效的排序方法

Python 冒泡法排序&#xff1a;一种简单且高效的排序方法 在计算机科学中&#xff0c;排序算法是一种将给定数据集合重新排列为按照一定顺序排列的有序序列的方法。而冒泡排序算法是其中最简单、最基础的一种排序算法。 什么是冒泡排序&#xff1f; 冒泡排序&#xff0c;顾名…

代码随想录第49天

1.买卖股票的最佳时机&#xff1a; 贪心 因为股票就买卖一次&#xff0c;那么贪心的想法很自然就是取最左最小值&#xff0c;取最右最大值&#xff0c;那么得到的差值就是最大利润。 C代码如下&#xff1a; class Solution { public:int maxProfit(vector<int>& …

一键部署个人ChatGPT Web网站

一键部署个人ChatGPT Web网站 githubVercel使用自己的域名 本文将向大家介绍如何通过Github和Vercel这两个具,轻松搭建自己的ChatGPT Web网站&#xff0c;并且我们还可以添加密码保护以防止恶意滥用。 github 首先&#xff0c;我们需要拥有一个Github账号和Vercel账&#xff0…

【Set集合】概述和特点

Set集合概述和特点 Set集合概述 Set作为Collection集合的子接口&#xff0c;没有新增的功能&#xff0c;Collection集合可用的功能Set集合也可以用。 Set集合特点 Set集合存储的元素是无序的&#xff0c;而且不允许存储重复的元素&#xff0c;每当有新的元素存入的时候&#x…

操作系统复习3.2.1-虚拟内存

传统存储的问题 一次性&#xff1a;一次性装入作业才能运行 驻留性&#xff1a;不是所有部分都需要长时间存放在内存中 定义和特征 将要用的部分载入内存&#xff0c;不用的部分调出外存&#xff0c;逻辑上扩大内存 虚拟内存的最大容量为计算机的寻址范围决定 实际容量则为内…

【哈希值】概述和特点

哈希值概述和特点 哈希值概述 哈希值是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值 Object类中有一个方法可以获取对象的哈希值&#xff1a; public int hashCode()&#xff1a;返回对象的哈希值 哈希值特点 同一个对象多次调用hashCode()方法返回的哈希值是相…

0x36transferData 数据传输

0x36transferData TransferData服务用于客户端将数据从客户端传输到服务器&#xff08;下载&#xff09;或从服务器传输到客户端&#xff08;上传&#xff09; 。 数据传输方向由前面的RequestDownload或RequestUpload服务定义。 如果客户端发起请求下载&#xff0c;则要下载的…

【01】STM32·HAL库开发-单片机简介 |用处、发展历程、发展趋势、CISC与RISC对比、冯诺依曼和哈佛结构对比

目录 1.单片机是什么&#xff08;了解&#xff09;2.单片机有什么用&#xff08;了解&#xff09;3.单片机发展历程&#xff08;了解&#xff09;4.单片机发展趋势&#xff08;了解&#xff09;5.CISC & RISC&#xff08;了解&#xff09;5.1CISC和RISC举例5.2冯诺依曼结构…