Loading

操作系统笔记-内存分配与回收

计算机中内存的分层结构

计算机按照运算速度的快慢分为了几层,最顶层为CPU,接着是L1、L2、L3等多级缓存,接着是内存,最后才是硬盘,它们的速度由快到慢。其中多级缓存、内存和硬盘都是作为存储设备使用的。

由于计算机采用多道程序设计,因此在内存中会同时存在多个进程,但是同一时间只会运行一个,当内存空间不足时,os会将内存中没有运行的进程移入到硬盘中,此时硬盘被称为虚拟内存。

地址的概念

地址类似于门牌号,内存是线性一维的,可以把它比作一维数组,它的下标从零开始依次递增,其中这个下标就被称作地址,CPU根据这个下标就可以获取到指定位置的内容。

逻辑地址空间是指所有内存空间都可以使用,它通过一个表格和mmu硬件映射到物理地址空间,程序中使用的都是逻辑地址空间,只有当经过重定向后才会将逻辑地址空间转为物理地址空间。

内存分配

当要给一个程序分配内存时,有多种分配方式,假设现有程序A需要内存300k,内存空间中存在内存空闲块400k,500k,300k,根据算法的不同分配策略也不同:

第一种:最先分配,顾名思义,就是遍历整个空闲块,第一个适合的就选中,此例子中按这种算法会选中400k的空闲块

第二种:最优分配,遍历所有空闲块,找到大小最合适的,此例子中会选中300k的空闲块

第三种:最差分配,遍历所有空闲块,找到大小相差最大的,此例子中会选中500k的空闲块

无论是哪种算法,都有其优点和缺点,区别在于速度的快慢和产生碎片的大小。

内存回收

经过了内存分配算法分配之后,随着时间的推移,会产生一些小的空闲块,但是这些小的空闲块单独并不能给任何应用提供空间,如果能把它们合并的话就可以重新为新的应用分配空间。合并小内存块的行为称为碎片整理,或者称为内存回收。

内存回收也分为多种方式,比如按照临近的两个空闲块合并,或者将所有应用都移到另一端等等,每种回收算法也有其各自的优缺点。

posted @ 2021-03-04 22:18  luffysk  阅读(221)  评论(0编辑  收藏  举报