今天小编我带大家了解一下什么是内存管理,在介绍内存管理之前,我们首先介绍一下什么是内存,当你看到内存的时候有没有想到外存,外存很简单,我们的电脑硬盘,软盘,小时候看动画片的光盘,小时后听歌的磁带,手机里面的内存卡,我们存储数据的U盘等,可见硬盘、光盘、里面的数据不会因为一些断电使得数据丢失。那什么是内存呢?
一张导图,给你解释一下我眼中的内存
我们都知道内存好,内存棒,那我们需要知道它为什么好,下面让我们看看内存的管理模式吧。
1.地址的映射
首先大家需要明确的是程序到内存,从一个地方到另一个地方,程序给内存说我要去你家,内存说行,我给你一个“指令”,你按照这个指令说的走就可以,即访问内存时指令给出的地址就是逻辑地址(相对地址),但是机器语言只认识0和1,,哪里明白什么是逻辑地址,它就将逻辑地址进行变换自己懂得的地址,即物理地址。
2.内存的分配
这里的分配方式有很多,单一连续分配区分配,固定分区分配方式、动态分区分配方式。
2.1单一连续分配:将内存分为系统区和用户区,适合单用户、单任务的操作系统。(可见这个已经落后了)
2.2固定分区分配:将内存空间分配若干大小相等的固定大小区域,每个用户区可以装入一道程序。
优点:每个程序占用一个固定的分区,可以让多个程序进来,可以是几个程序并发运行
缺点:当一个程序很小的时候,无法占全部占用一个固定的分区,这样内存分配效率就会下降。或者一个固定分区无法装入一个要运行的程序,程序的运行无法得到满足。
2.3动态分区分配:根据进程的实际需要进行内存的分配。
动态分区分配算法
2.31首次适应算法
思想:将空闲分区链以地址递增的顺序连接;在进行内存分配时,从链首开始顺序查找,直到找到一块满足进程大小的空闲区,将剩下的空闲分区仍然链在空闲分区链中。
优点:1)使得空闲分区分布更加均匀;2)空闲分区的查找开销小;
缺点:高址部分的大空闲分区被分小,使得大作业进入无法分配内存
2.32循环首次适应算法
思想:分配内存时不再每次从链首进行查找可以分配内存的空闲分区,而是从上一次分配内存的空闲分区的下一个分区开始查找,直到找到可以为该进程分配内存的空闲分区。
优点:空闲区分布均匀,查找开销小
缺点:容易是系统缺乏大的空闲区
2.33最佳适应算法
思想:该算法每次为作业分配内存,总是把大小与进程所请求的内存空间大小最接近的分配给进程。
优点:避免了大材小用,提高内存的利用率。
缺点:容易留下难以利用的空闲区
稍后给大家介绍分页存储和分段存储,博客篇幅不想过长。