当前位置: 首页 > news >正文

操作系统--内存管理

目录

1.内存管理的目的和功能

2.程序的装入

2.1绝对装入

2.2静态重定位

2.3动态重定位

3.程序的链接

4.内存空间的分配与回收

4.1连续分配管理方式

4.2非连续分配管理方式:

1.内存管理的目的和功能

引入目的:

更好的支持多道程序的并发执行,提高系统性能

主要功能:

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

(2)存储的保护和共享:保证各道作业在各自的存储空间内运行,互不干扰

(3)地址转换:在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。

(4)内存扩充:利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。

2.程序的装入

2.1绝对装入

在编译时,如果知道程序将驻留在内存的什么位置,那么,编译程序将产生绝对地址的目标代码。
即按照物理内存的位置赋予实际的物理地址

优点:在时间效率上很高。

缺点:

1)是由于内存大小限制,能装入内存并发执行的进程数大大减少
2)编译程序必须知道内存的当前空闲地址部分和其地址,而在多通道程序下,编译程序根本不可能知道当前空闲地址的部分,因此绝对装入方式只适用于单道程序环境

2.2静态重定位

即在程序装入对目标代码装入内存的过程中完成,是指在程序开始运行前,程序中指令和数据的各个地址均已完成重定位,即完成虚拟地址到内存地址映射。地址变换通常是在装入时一次完成的,以后不再改变。

优点:不需要硬件支持(这里的硬件,指的是后文提到的重定位寄存器)(对比一下动态重定位)

缺点:程序在静态重定位之后就不能在内存中搬动了并且要求程序的存储空间是连续的(对比动态
重定位

2.3动态重定位

动态重定位的方式是把地址转换推迟到程序真正要执行时才进行。但这种方式需要硬件支持,也
就是重定位寄存器的支持,否则会影响指令的执行速度

优点:可以解决碎片问题。(因为不需要像静态重定位一样要求整段程序装入,每个模块之间的存
储区域不一定需要相联,只需要有自己的重定位寄存器就行)

缺点:需要硬件支持。(对比静态重定位)

3.程序的链接

静态链接:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的可执行程序,
以后不再拆开。

装入时链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链
接方式。

运行时链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。其
优点是便于修改和更新,便于实现对目标模块的共享。

4.内存空间的分配与回收

4.1连续分配管理方式

单一连续分配:分配到内存固定的区域(单用户/单任务的操作系统)

固定分区分配:分配到内存不同的固定区域,分区可以相等可以不等,但要求一定是固定。

动态分区分配:

(1)可变分区存储管理:按照程序的需要进行动态的划分
(2)动态分区的分配策略算法:

首次适应:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的一个空闲分区。

最佳适应:空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区。

最坏适应:空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,即挑选出最大的分区。

邻近适应:由首次适应算法演变而成。不同之处是,分配内存时从上次查找结束的位置开始继续查找。

4.2非连续分配管理方式:

非连续分配管理方式最大的好处可以看到非连续三个字,是解决了动态分区,连续分区,单一分区中必须要连续分配的弊端,因为连续分配可能会出现很多的外部碎片,导致空间不能够充分利用。

(1)基本分页式存储管理将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”,或称“页帧”、“内存块”、“物理块”每个页框有一个编号,即“页框号”页框号从0开始。将用户进程的地址空间也分为与页框大小相等的一个个区域,称为“页”或“页面”每个页面也有一个编号,即“页号”,页号也是从0开始。

操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页框有一一对应的关系。各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。

http://www.cnnetsun.cn/news/3184.html

相关文章:

  • CppCon 2024 学习: Dependency Injection in C++ A Practical Guide
  • CppCon 2024 学习: Dependency Injection in C++ A Practical Guide(续)
  • SAP 权限创建操作简介与实例
  • YOLO13-C3k2-MBRConv3:窗户检测与识别模型详解
  • 卡簧目标检测基于改进YOLO11-C3k2-Star模型的实现
  • Harmony之路:网络请求——HTTP模块与数据交互
  • Harmony之路:分布式软总线与设备发现——构建跨设备协同的“神经网络“
  • React 状态管理:Zustand 快速上手指南
  • React 状态管理:Jotai 快速上手指南
  • React 状态管理:Redux Toolkit 快速上手指南
  • 程序员转网络安全!90 天吃透内网渗透 + 漏洞分析,直接上手
  • 网络安全必学!撞库攻击从入门到精通,小白直接上手!
  • CTF 小白必看!0 基础入门攻略,看完直接上手打比赛
  • IT 内卷到窒息?转网络安全竟能月入过万?值不值一文说透!
  • 我的30岁:从销售菜鸟到网络安全入门者的逆袭,你也能抄作业!
  • MySQL主从同步原理
  • cas7.2依赖无法下载的问题
  • AIEnhancer — 免费、在线、万能的图片处理“瑞士军刀”
  • 如何在 AI 时代保护内容原创性?我常用的检测方法分享
  • CAE:工程的“虚拟实验室”——无限次试错而不毁一物的智慧先知
  • CAM:制造的“自动翻译官”——将设计语言转化为机器指令的魔术师
  • 攻防演练|分享最近一次攻防演练RTSP奇特之旅
  • 渗透测试 | 分享某次项目上的渗透测试漏洞复盘
  • 通过信息收集进入门户网站的骚打法
  • 哈希表与哈希算法
  • 二叉树以及二叉搜索树
  • halcon常用图像拼接
  • 全国矿场地图更新20251225
  • 用 Sentinel-1 Sentinel-2 结合监测 矿场采掘情况
  • 数说故事联合复旦发布研究报告:中国母婴产品消费群体洞察