操作系统(内存管理)
2021/9/9 7:03:51
本文主要是介绍操作系统(内存管理),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
内存管理
内存管理相关概念
内部碎片、外部碎片(紧凑技术解决)
操作系统对于内存管理需要实现的功能
- 操作系统负责内存空间的分配和回收
- 操作系统如何记录内存当前状态?
固定分区分配:通过分区说明表,记录内存的分配与回收(分区号、大小、起始地址、状态)
动态分区分配:空闲分区表 or 空闲分区链- 操作系统如何为新的进程分配内存?
动态分区分配算法
可能出现的情况:空闲分区表记录数量不变,表项需要修改(分配分区大);空闲分区表记录数量减少一个(分配大小相等)- 操作系统如何将结束的进程使用的内存进行回收?
可能出现的情况:(1)回收后产生的空闲分区和上或下分区相邻,需要两个分区合并(数量:表项不变)(2)回收的分区上下都是空闲分区,需要三个相邻分区合并(数量:表项-1)(3)回收分区上下都无空闲分区,产生新的空闲分区(数量:表项+1)
-
连续分配管理方式(分配的空间一定连续)
- 单一连续分配,内存中只能有一道用户程序,分为系统区和用户区。(好处:简单、无外部碎片、不一定提供内存保护;缺点:单用户单任务,内部碎片,空间利用率低)
- 固定分区分配:将用户空间分为若干固定大小分区,每个分区可以装入一道作业,可运行多道程序管理方式。(又分为分区大小相等与不等两种方式)相等分区不够灵活、但实现简单适用于控制多个相同对象的情况。分区大小不等灵活性强,满足不同需求。
实现简单,无外部碎片,数据不共享。
缺点:用户程序太大,可能不能满足需求;内部碎片,利用率低。 - 动态分配分区:不预先划分内存分区,在进程状图内存时根据进程大小动态建立分区,使其满足进程需要。无内部碎片,但有外部碎片。
-
动态分区分配算法(连续分配方式)
- 首次适应算法:按照地址顺序排列,从低地址顺序检索,找到第一个满足要求的分区进行分配。
- 最佳适应算法:按照容量递增的顺序进行连接,顺序查找,找到第一个满足要求、大小最小的分区。(缺点:留下越来越多很小的外部碎片)
- 最坏适应算法:每次分配优先使用最大的空闲分区。按容量递减的分区进行分配(后来的大进程可能无法运行)
- 邻近适应算法:按地址排列,每次从上次结束的位置开始查找。(循环链表)
1,4链表不会重新排列;2,3链表顺序会动态变化
-
操作系统需要提供某种技术从逻辑上对内存空间进行扩充(虚拟内存)
-
需要提供地址转换功能(逻辑地址->物理地址)
-
提供内存保护功能,进程运行互不干扰(上下位寄存器、从定位寄存器和限长寄存器进行越界检查)
其他
- 按字节编址,每个存储单元的大小为一个字节。内存单元的大小看计算机编址方式。
这篇关于操作系统(内存管理)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法