博客
关于我
2021-05-11 现代操作系统 《现代操作系统 第4版》第3章 内存管理——总结(分段,分页,段页)(转载)
阅读量:659 次
发布时间:2019-03-15

本文共 1035 字,大约阅读时间需要 3 分钟。

内存分配技术

内存管理是操作系统中至关重要的核心机制之一。其主要目标是提升内存的利用率,这涉及到为进程分配内存空间的方式。

在深入探讨内存分配方法之前,让我们首先思考以下问题:进程在执行之前是如何存储在内存中的?这一问题的理解将帮助我们更好地理解内存分配的原理。

连续分配

在早期的操作系统中,内存只能存放一个进程,称为单一连续存储。随着多道批处理系统的发展,内存能够存放多个进程。此时,便出现了连续分区分配。进程连续地存储在内存中会产生两种碎片:内部碎片和外部碎片。随着操作系统的不断进步,连续分区分配已无法满足内存利用率的提高需求。

固定分区分配

固定分区分配是连续分区分配的一种方式,系统预先定义了内存区间的大小。分区可以是大小相等或不等的。然而,固定分区分配的一个显著缺点是容易产生空闲空间,从而影响内存利用率。此外,固定分区还存在用户进程只能存储一个固定大小的过程的问题。

为了克服固定分区分配的局限性,动态分区分配逐渐成为主流。动态分区分配的关键在于根据进程的需求动态地分割内存空间。

动态分区分配

动态分区分配的特点是系统初始只有一个大量空闲区。当进程请求内存时,系统根据进程所需的空间大小划分出一片空闲区并分配给该进程。动态分区分配能有效减少外部碎片问题,但也会产生内外部碎片。

离散分配与分页存储管理

为了进一步提升内存利用率,行业逐渐采用离散分配的思想。离散分配将内存空间分割成更小的单位,一根析离散分配在现代操作系统中的表现形式是分页存储管理。将进程划分为与内存块大小相当的页面,如上图所示,进程按照逻辑地址划分为多个小进程,并将这些小进程非连续地存放到内存中。

在分页存储管理中,需要将进程划分为与内存物理帧(页框)大小相当的页样。在进程存储的单元中,关键是要将逻辑地址转换为物理地址。地址转换的逻辑如下:

步骤:1:根据页大小算出页框的起始地址2:加上该指令在该页的页内偏移量3:两者相加即可得出物理地址

为了支持分页存储管理,系统引入了页表,将虚拟地址映射到物理地址。

作为分页存储管理的延伸,合理地结合分段存储管理,一方面确保进程能够按照程序员逻辑分布在内存中,另一方面让内核能够高效地管理内存资源。所有内核通过段表来完成逻辑地址到物理地址的映射。

总结

至此,关于内存分配的相关知识已经完示。在撰写本文期间,逐步梳理了从连续分配到分页存储管理的内存分配过程,也提到了动态分区分配和固定分区分配。如有不当之处,还请多方指出与我交流详细讨论。

转载地址:http://ryfqz.baihongyu.com/

你可能感兴趣的文章
Redis中的key
查看>>
juc-09-控制并发流程工具类
查看>>
第一节 docker安装
查看>>
Linux系统时间与硬件时间及时间同步
查看>>
Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
查看>>
Spring 和 DI 依赖注入
查看>>
中序线索二叉树的遍历
查看>>
文字策略游戏 android studio(学习intent,textview,等等)
查看>>
laravel server error 服务器内部错误
查看>>
Linux驱动实现GPIO模拟I2C读写操作
查看>>
iJ配置Maven环境详解
查看>>
仿QQ登陆界面
查看>>
什么题目的暂时还没想好
查看>>
N皇后问题解法(递归+回朔)
查看>>
面试题 08.01. 三步问题
查看>>
剑指 Offer 11. 旋转数组的最小数字
查看>>
word文档注入(追踪word文档)未完
查看>>
作为我的第一篇csdn博客吧
查看>>
ajax异步提交失败
查看>>
一道简单的访问越界、栈溢出pwn解题记录
查看>>