分页与分段

news/2024/4/25 16:15:33/文章来源:https://blog.csdn.net/bmxch/article/details/129280638

前面我们分析了虚拟地址和物理地址

我们这里进行一个简单的分析

这个是程序运行时的地址映射

那么这些碎片,我们现在的操作系统究竟如何处理呢?

我们再引入一个实际问题

我们如何把右边的进程p塞入左边的内存空间里面

有一种方法将p5kill掉,那么p就可以插入,但这种方法绝对不是首选。

我们可以将p进程分为几块塞入内存空间里面

但是如果我们需要运行这个进程需要有一个记录,记录p进程的各个碎片是怎样分布在内存里面的。

这样就引出了我们的分页和分段机制了

1.解决内存碎片,将进程分片存放

因为我们写程序的时候是分段(函数、变量、数组等)写的

我们可以将这些东西分段存放

我们对于分段的寻址是需要段id+段内位移地址

那么我们怎么将逻辑地址转化为物理地址

我们分段表内存储段id+段内偏移+段内最大长度

先拿出段内位移然后根据所在的段号进行判断,判断失败报错;成功,用基址加上短萼你位移取出物理内存地址。

我们看例题

第一题解题方法:

main那条语句为pc寄存器存储的地址,我们可以看到0x240为此地址的虚地址

那么我们可以画出

0x0240填入逻辑地址二进制为

0000 0010 0100 0000

又物理地址等于基址+逻辑地址

最前面的2bits 00 代表段号,那么我们可以得到段号为code(0)基址为0x4000

根据等式可以得到0x4000+0x0240=0x4240

第二题第一步我们可以大致判断是将一个地址存入一个变量或一个寄存器里面(目前来看没啥用)。我们根据pc+4,且前面2bits的段号并没有变(基址还为0x4000)可以得到0x4000+0x0240+0x0004=0x4244

第三题第一步也是存储了一个地址,但他这里注释了是返回地址(对这题来说也没啥用)

,move 0x0360转换

0000 0000 0011 0110 0000

这里可以得到段号还是0,也就是说基址还是0x4000

那根据前面的算是可以得到0x4000+0x0360=0x4360

第四题大家可以自行判断

答案为:0x4364

最后一题,我们发现这个是将a0的地址读一个byte并写入t0,第一题我们知道了a0里的内容为 0x4050

0x4050转化为二进制

0100 0000 0101 0000

这是一个虚拟地址,这个区间是属于段号1的(也可以根据段号判断这里是01)

我们得到段号

01(舍掉)00 0000 0101 0000 舍掉的补0(因为前两个bits代表段号)

偏移量等式逻辑地址减去前面两位bits补0

0000 0000 0101 0000 得到偏移地址0x050

那么我们要得到真实地址需要0x4800 + 0x0050 = 0x4850

其实我们可以分析这段代码是读取一个字符串,当然后面还有很多大家可以自己看下这个代码

分页机制

因为段的大小是不等的,只不过是分的更小一些,那么产生的碎片肯定是会更小的

所以分段对于外部碎片问题并没有完全解决

这里有个基本单元叫做帧也有叫页框的,内存划分的固定大小的区块(注意这里是固定大小不是大小不等),但里面可以离散存放。将进程分成一条一条的整个叫做页面

我们将页面内的每条存入内存中任意空闲的页框(帧)当中

再将他们记录下来

存这个记录的叫做page table 页表

原理和分段是差不多的

那么我们如何得到物理地址呢?

根据下面图我们算下要找page号为0的进程条的物理地址

查页表发现page号为0的这条数据存入了帧号为5的区域

我们根据frame no——5来从内存中查找定位到一块区域(这里可以看到每个页大小为4bytes),注:帧大小和页大小一样

我们再根据页内位移定位物理位置

这里我们可以得到实际的参与运算的参数为 frame no. * page size + 页内位移 = 物理地址

第一个|0|3|我们可以得到5*4+3=23 因为是从0开始的所以这里要减1

第二个|2|3|我们可以得到2*4+3=11-1=10

第三个|1|3|我们可以得到0*4+3=3-1=2

这里可以看出这个帧(页)的大小和磁盘的block块有异曲同工之妙

这里地址

页数2^(m-n),页尺寸为2^n,整个地址长度为m

页和段分区的特点对比,大家自信分析一下

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简易计算器-课后程序(JAVA基础案例教程-黑马程序员编著-第十一章-课后作业)

【案例11-2】 简易计算器 【案例介绍】 1.案例描述 本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。 2.运行结果 运行结果 【案例分析】 要制作一个计算器,首先要知道它由哪些部分组成,如下图所示: 一…

【原创】java+swing+mysql校园订餐管理系统设计与实现

校园订餐管理系统,主要是为了方便广大学生点餐使用,以往的大多数的校园订餐系统基本使用bs架构,也就是网页系统,但是我们今天不用javaweb,我们主要介绍javaswing同样可以去实现一个校园订餐管理系统。 功能分析&#…

「TCG 规范解读」规范结构

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

软测入门(一)测试理念及基础知识

软测入门理念 软件的分类 按层次划分:系统软件、应用软件按组织划分:商业软件、开源软件按结构划分:单机软件、 软件缺陷 由来 Grace Hopper发明Cobol计算机语言,也是找出电脑程序中第一个bug的女程序员 BugDefect 定义 软…

带你掌握webSocket 和 socket.io的基本用法

两者的作用和区别 作用:使得前后端可以随时地相互沟通。什么是互相沟通呢?像网络请求这种就是客户端向服务端的单向的沟通,当然,网络请求也可以实现双向的沟通,比如ajax 轮询,就是浏览器开个定时器不断的发…

【Java】Java进阶学习笔记(四)—— 抽象类与接口

【Java】Java进阶学习笔记(四)—— 抽象类与接口一、抽象类1、抽象类的概念抽象类的定义格式2、抽象类的注意点抽象方法的介绍3、抽象类的具体作用4、抽象类实例二、接口(一)、接口的概念1、接口与类的区别2、接口特性3、抽象类和…

如何实现云原生?推荐的几个实用工具

云原生是一种软件开发和部署的方法,它依赖于容器、微服务和自动化运维。它能使应用更高效、可靠和可扩展,并适用于不同的云平台。 如果要更直接、更通俗地解释上述概念的话。 云的本源更准确地说是一种文化,一种潮流,它必然是云…

此网站可能不支持TLS1.2协议

问题描述 火狐浏览器版本:“97.0.1 (64 位)”,打开360网神设备Web管理地址时出现:“此网站可能不支持TLS1.2协议,而这是Firefox支持的最低版本。”,如下图所示。 原本是默认使用https协议打开的,看起来出问…

蓝桥杯每日一题:不同路径数(dfs深度优先)

给定一个 nm的二维矩阵,其中的每个元素都是一个 [1,9] 之间的正整数。 从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。 走了 k 次后,经过的元素会构成一个 (k1) 位数。 请求出一共可以走出…

零基础机器学习做游戏辅助第十五课--原神自动钓鱼(五)完整效果

一、先上效果二、整理思路我们现在已经具备了所有需要的技术,我们梳理出所有技术的流程。判断当前钓鱼状态(未抛竿、已抛竿、上鱼中)。未抛竿,截图并识别图中所有鱼类,选择其中一个种类。根据以选择鱼类选择对应鱼饵。…

从一个实例配置引入Prometheus的PromQL语法

1. PromQL介绍 PromQL提供对时间序列数据进行逻辑运算、过滤、聚合的支持。应用于数据查询、可视化、告警处理 2. 基本用法 2.1 查询时间序列 点击Prometheus图标,进行查询页面。可以点击地图图标查看有哪些metrics name。输入要查询的metrics name和过滤条件,然后点击执行…

2023年功能测试还值得入行吗?

前言 鉴于笔者从13年入行IT行业,经历了只有开发没有测试的阶段,经历了14年只要会基本的功能测试在一线就能薪资过万的阶段,经历了17年只要会一点自动化,会一点性能就能蒙骗过面试官的阶段,更经历了19年所有面试官对于…

基于大规模边缘计算的千万级聊天室技术实践

当前直播成为一种流行趋势,带货直播,网红带货,明星在线演唱会等,进一步使得直播聊天室变成了一个当前必备的能力,面向大型,超大型的直播场景,技术上也在不断的进行迭代更新。 大规模边缘聊天室如…

如何或者无插件Web页面监控播放软件LiveNVR的固定视频流地址,实现大屏上墙、播放、视频分析等目的

1、LiveNVR介绍 LiveNVR的安防监控的视频直播,可以按标准的Onvif/RTSP协议接入监控设备,也可以通过海康、大华、天地伟业等厂家私有SDK接入监控,实现web页面的播放和录像回放。 可以分发HTTP-FLV、WS-FLV、WebRTC、RTMP、HLS(M3U8)、RTSP等多…

全球化趋势下,如何建设稳定高效的技术能力?

如果将全球化比作一场航行,每个期望走出去的企业都是水手,那么是造一艘属于自己的船,还是搭乘已有的船呢?在不同的时间和场景下,相信每个水手都有自己的答案。 近几年,在国际政经环境复杂变幻的形势之下&am…

ImportError: Can not find the shared library: libhdfs3.so解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

活动回顾|中文社区面对面·上海站

回顾来了! 「中文社区面对面」首次线下交流活动,于 2 月 26 日下午在上海德必世纪 WE 成功举办,迎来了 30 位上海小伙伴的热情参与!Jina AI 高级算法工程师王峰博士与大家分享 Jina AI 的“三驾马车”,百万粉丝B站效率…

4.文件管理

文章目录1、初识文件管理1.1、回顾1.2、文件的属性1.3、无结构文件/有结构文件1.4、文件之间应该怎样组织起来?1.5、操作系统应该向上提供哪些功能?1.6、从上往下看,文件应如何存放在外存?1.7、其他需要由操作系统实现的文件管理功…

【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…

实践数据湖iceberg 第四十二课(业界视野)业界的流批一体架构

系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg 实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到…