计算机原理探险系列(六)-- 看图认识内存分配

本文深入探讨了计算机内存管理,包括有限的物理内存问题及解决方案——虚拟存储器。介绍了地址空间的物理地址和逻辑地址,以及CPU中的MMU如何进行地址转换。接着,讨论了连续内存分配的三种算法:首次适配、最佳适配和最差适配,以及它们面临的内存碎片问题。文章还涉及了非连续内存分配,如段和页的访问机制,并提到了页表、TLB缓存和多级页表等优化技术,以提高内存查询效率。

之前的几篇文章里面,我们相应介绍了计算机内部的进程,磁盘,cpu,网络等相关知识点,今天主要来一起探讨下关于计算机的内存分配问题。

有限的物理内存
计算机在运行的时候,其所拥有的内存空间其实是有限的。在早期的Dos操作系统中,通常就是4mb的内存,那时候的应用软件还不怎么流行,基本4mb的内存空间就足够程序运作了。不过到了后期阶段,随着各种硬件设备的不断完善,往往可能会存在内存空间小于程序的大小。(例如:内存空间4mb,程序大小16mb)
解决思路
设计一个虚拟存储器,将需要用到指定程序加载到内存中进行计算,其他情况下程序存储在硬盘中。如果需要切换执行其他程序,就将原先内存数据清空,分配给新的策划个程序应用,这部分的工作主要由操作系统负责。

地址空间

地址空间是什么

表示计算机内部的内存占用大小,主要分为了两类型:物理地址空间,逻辑地址空间

物理地址空间

和硬件直接对应,例如说内存条对应的地址,磁盘对应的存储地址。

逻辑地址空间

运行程序所看到的内存范围。

cpu在进行计算的时候其实是无法直接去识别程序内部的逻辑地址空间,这里就需要借助一些“转换器“的帮助来处理,而这个”转换器“就是cpu内部的MMU计算模块。

MMU

在CPU的内部有一个专门负责将物理地址和逻辑地址做映射转换的模块,叫做MMU。

操作系统和MMU是这样配合的:

操作系统在初始化或分配、释放内存时会执行一些指令在物理内存中填写页表,然后用指令设置MMU,告诉MMU页表在物理内存中的什么位置。

设置好之后,CPU每次执行访问内存的指令都会自动引发MMU做查表和地址转换操作,地址转换操作由硬件自动完成,不需要用指令控制MMU去做。

我们在程序中使用的变量和函数都有各自的地址,在程序被编译后,这些地址就成了指令中的地址,指令中的地址就成了CPU执行单元发出的内存地址,所以在启用MMU的情况下, 程序中使用的地址均是虚拟内存地址,都会引发MMU进行查表和地址转换操作。(注意理解这句话),流程如下所示:

在这里插入图片描述

如果没有开启MMU功能,那么CPU执行单元发出的内存地址会直接传输到处理器芯片上边。

物理地址和逻辑地址映射转换的细节点

大多数的MMU转换器中对于逻辑地址的识别是以页作为内存单位做划分的,而物理地址大多数是页帧作为单位进行划分的。所以当逻辑地址的页单位和物理地址的页帧单位进行转换的时候就需要考虑这两种单位的映射处理。

连续内存分配算法

按照自己的一些过往经验总结,操作系统分配内存的主要两大场景分别是:

  1. 当CPU准备执行程序的时候,会由操作系
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值