操作系统内存管理(上)——内存管理基础

news2024/12/24 8:24:54

一、内存的基本知识

 

 1.什么是内存?有什么作用?

内存可存放数据。程序执行前先放到内存才能被CPU处理——缓和CPU和硬盘之间的速度矛盾。

给内存的存储单元编址。如果计算机按字节编址,则每个存储单元大小为1字节。即1B=8b(8个二进制位)

2.进程运行的基本原理

(1)指令的工作原理:操作码+若干参数

(2)程序经过编译、链接后生成的指令中指明的地址是逻辑地址(相对于进程起始地址而言的地址,因此又叫相对地址);

        链接完成后,生成装入模块,模块装入内存后的地址称作物理地址(又叫绝对地址)

(3)地址转换的实现:

装入有三种方式:

绝对装入:编译时就知道要装在内存的哪个地方,因此编译时就将逻辑地址写为物理地址

可重定位装入:在装入时,将所有的逻辑地址变为物理地址

动态重定位:执行时再把逻辑地址变为物理地址。(需要重定位寄存器)

(4)从写程序到程序运行的过程:

 二、内存管理的概念

 (2)内存空间的扩充:

覆盖和交换:覆盖是同一个进程,后来的段占用前面的段,交换是另外一个进程挤占另外一个进程

 (1)内存空间的分配与回收

-内部碎片:分配给进程的内存区域中,某些部分没有用上。

-外部碎片:内存中某些空闲分区由于太小而难以利用

1-----连续分配管理方式:

单一连续分配:同时只能有一个用户位于内存,且失去并发性会产生内部碎片(有的空间没有用上)。

固定分区分配:划分若干固定大小分区(大小可相等,可不相等),每个分区装入一道作业。

动态分区分配:不会预先划分内存,而是在进程装入内存时,根据进程大小动态建立分区。释放空间时,相邻的空闲分区要进行合并

 但动态分区分配也存在他的问题。

1.系统用什么样的数据结构记录内存的使用情况?

空闲分区表:分区大小、起始地址、状态

2.当很多空闲分区都能满足需求时,应该选择哪个分区?

分配算法:

1.首次适应算法:按地址的顺序依次查找,直到第一个合适的(不仅最简单,而且最好最快)

2.最佳适应算法:按容量递增形成链表,然后从小至大查找

3.最坏适应算法:按容量递减形成链表,然后从小至大查找

4.临近适应算法:

2-------!!!!!非连续分配管理

基本分页存储管理:

《1》什么是分页:将内存空间分为一个个大小相等的分区(称为页框或页帧),将进程的逻辑地址空间也分为与页框大小相等的部分(称为页或页面),页可以不连续的存放到页框当中。

《2》页表:注意欧,页号从0开始为了知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。页表一般放在PCB中,记录了相应的映射关系。页表里的每一项都叫做页表项

     问题一:计算每个页表项应为多少字节。

 页表项的字节数,应保证整个内存块都能被记录在页表内。

依题,可以有2的20次方个页。因此页表项的数目应能大于2的20次方。所以页表项应为20b,至少为3B。

        问题二:如何实现地址转换

虽然各页面是离散存放的,但页面内部是连续的。逻辑地址对应物理地址=对应页面的起始地址+页内偏移量。

简而言之:类似IP分配,前多少位是页面号,后面为页内偏移量

《3》基本地址变换机构

页表寄存器(页表起始地址F+页表项数M)。

1.根据逻辑地址计算出页号、页表偏移量;

2.判断页号是否越界(若越界则产生越界中断);

3.查询页表,找到页号对应的页表项,再根据页表项找到相应的页面;

4.用页面起始地址和页内偏移量得到物理地址;

5.访问目标单元;

注意,给出内存大小后就默认给出了页号长度

页面大小为1K=2的十次方,页内偏移量占十位

 2500=2048+452,所以该地址对应的页号是2,查找页表,其对应的内存块是8,

所以物理地址是1024*8+452=8644。

《4》具有快表的地址变换(类似ARP协议中的地址对应)(快表位于高速缓存中)

快表中直接存储页号对应的物理地址,进程访问时先去块表查询,如查找到直接进行访问;如未查找到,去主存中查找慢表,并同时将查找记录写入快表。

《5》两级页表  

目的:便于索引

顶级页表最多一个页面

 

 

基本分段存储管理

分页管理是从计算机的角度考虑的,目的是提高内存的利用率,提升计算机的性能。分页通过硬件实现,对用户完全透明。分段管理则考虑了用户和程序员,以满足方便编程、信息保护和共享、动态增长和动态链接等要求

如一个程序由程序段、数据段、PCB组成,可将其分为三段,并分配逻辑地址(段内连续,段间不必连续)。

 

段页式存储管理

 

 

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

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

相关文章

智能医院导航导诊系统,门诊地图导航怎么做?

现在很多医院都是综合化大型医院,有很多的科室,院区面积也逐渐扩大,一方面给病患提供了更为全面的医疗资源,另一方面,医院复杂的环境也给病患寻医问诊带来了一定的困扰。电子地图作为大家最喜闻乐见的高效应用形式&…

Python的socket模块及示例

13.2 socket模块 socket由一些对象组成,这些对象提供网络应用程序的跨平台标准。 13.2.1 认识socket模块 socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或应答网络请求,使主机间或一台计算机上的进程间可以通信。sock…

Android 路由框架ARouter源码解析

作者:小马快跑 我们知道在使用ARouter时,需要在build.config里配置: annotationProcessor com.alibaba:arouter-compiler:1.2.2并且知道annotationProcessor用来声明注解解析器,arouter-compiler用来解析ARouter中的各个注解并自…

代码管理记录(一): 码云Gitee代码提交和维护

文章目录 Gitee介绍登录地址代码提交 Gitee介绍 Gitee 是一个类似于GitHub的代码托管平台,是中国的开源社区和开发者社区。它为开发者提供了基于Git的代码托管、协作、部署、代码质量检测、漏洞扫描、容器镜像等服务,同时也提供了一系列的个人资料和社交…

gitlab使用docker简单快速部署

文章目录 前言一、下载gitlab镜像二、安装步骤1.创建docker-compose文件2. 启动及登陆 三、配置页面总结 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。本文主要用来记录如何使用docker快速搭…

c#笔记-类成员

声明类 类可以使用帮助你管理一组相互依赖的数据,来完成某些职责。 类使用class关键字定义,并且必须在所有顶级语句之下。 类的成员只能有声明语句,不能有执行语句。 class Player1 {int Hp;int MaxHp;int Atk;int Def;int Overflow(){if (…

七大排序算法一文通(易懂图解+优化代码)

目录 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 6.1 递归实现——Hoare版 6.2 递归实现——挖坑法 6.3 非递归实现 6.4 优化 7.归并排序 7.1 归并排序——递归实现 7.2 归并排序——非递归实现 8.复杂度以及稳定性 1.直接插入排序 …

一列数到中位数的总距离最小

一列数到中位数的总距离最小 3554.二进制(二进制数的加减法-转化为十进制运算再将结果转回二进制3565.完美矩阵1824.钻石收藏家(经典双指针) 3554.二进制(二进制数的加减法-转化为十进制运算再将结果转回二进制 输入样例&#xff…

i春秋 Misc Web 爆破-1

打开链接是PHP源码 代码审计: include "flag.php"; 表示文件中包含flag.php文件,即根目录下存在flag.php $a $_REQUEST[hello]; 命名一个变量a来接收超全局变量$_REQUEST(接收表单’hello’数据,请求一个为hello的参…

研发效能系列 - 质量与速度能否兼得?

作者:冬哥 引言 我们的时间,应该是用于提高软件质量,还是专注在发布更有价值的功能?这貌似是软件研发中永恒的话题。 到底什么是质量?质量有什么特质? 质量与速度是什么关系,两者是一个硬币的…

spring.factories 的作用是什么

spring.factories 文件用于在 Spring Boot 项目中配置自动配置项。它包含了一系列 key-value 对,key 是自动配置类的全限定名,value 是这些配置类对应的条件类。Spring Boot 会在启动时扫描 classpath 下的 META-INF/spring.factories 文件,并加载其中定义的自动配置类。这些自…

[IAR][CC2642R1] IDE安装和环境搭建,CC2642的环境配置

文章目录 一、IAR安装(1)压缩包下载(2)IAR安装(3) 注册(4) 补丁 二、在IAR中使用CC2642(0)打开IAR,配置环境。(1)例程位置(2)打开例程&#xff08…

4.Redis10大数据类型

Redis10大数据类型 Which 101.String(字符串)2.List(列表)3.hash (哈希)4.Set(集合)5.zset(sorted set:有序集合)6.Redis GEO (地理空间)7.HyperL…

金融贷款行业怎么找客户,运营商数据了解过没?

现如今随着信息社会发展的来临,销售市场呈碎片化发展趋向,各个行业为寻找用户,根据网上广告投放线下推广做活动,但效果微乎其微。拓客越来越难,且成本费也越来越高,成为很多公司的烦恼之处。 从被动获取客…

K8S基础理论,核心组件,数据流向详解

目录 第一章.k8s概述 1.1.什么是云原生 1.2.什么是K8S 1.3.K8S的优势 1.4.K8S的功能 1.5.K8S 的特性: 1.6.Kubernetes 集群架构与组件 第二章.K8S的核心组件 2.1.Master 组件 2.2.配置存储中心 2.3.Node 组件 第三章.Kubernetes 核心概念 3.1.Pod 3.2…

【Unity项目实战】手把手教学:飞翔的小鸟(6)添加障碍

承接上一篇:【Unity项目实战】手把手教学:飞翔的小鸟(5)背景滚动,我们已经让主角在停止不动的情况下,移动背景图,使得主角小鸟像是自己往前移动了一样,接下来我们将继续往下&#xf…

【王道·计算机网络】第二章 物理层

一、通信基础 1. 基本概念 1.1 物理层接口特性 物理层解决如何在连接各种计算机的传输媒体上传输比特流,不指定具体的传输媒体主要任务:确定与传输媒体接口有关的一些特性 → 定义标准接口特性: 机械特性:定义物理连接的特性&a…

区间预测 | MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测。QRDNN模型…

linux 超过4个G的文件传不上去的解决办法

服务器是内网的要挂载镜像 哎呀。。。。超过4个G还挂载不上。。。 解决先分卷压缩,然后上传 上传文件 单个上传再把文件合并成一个 cat Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.zip* >ky.zip 再次解压就好了 unzip ky.zip

Opencv+Python图像基本操作

目录 图像的读取、显示和保存 获取图像属性 图像截取 绘图功能 画线 画矩形 画圆圈 画椭圆 画多边形 向图像添加文本 图像的读取、显示和保存 # 导入 OpenCV import cv2 # 读取图片-与python文件相同目录 img cv2.imread("image.png", cv2.NORM_HAMMING) …