GitMind 脑图:
内存管理https://gitmind.cn/app/doc/ec110358699
1.连续分配管理方式
1-1 单一连续分配
早期的内存分配 (单用户,单任务)
在内存中,用户区的进程很少,可能只有一个。
优点:1)实现简单 2)无外部碎片,相当于独占内存了。3)不需要内存保护,一个进程一块内存,互不干涉。
缺点:1)单用户单任务OS 2)有内部碎片 3)存储器利用率低
1-2 固定分区分配
预先将用户区内存分好区了。
优点:1)实现简单 2)无外部碎片
缺点:1)当用户进程较大时,一个分区无法满足要求,需要采用覆盖技术,降低了性能。 2)有内部碎片 3)存储器利用率低
1-3 动态内存分配
根据进程的大小或者说进程请求的内存进行分区。即按需请求内存分配。
存在一个分区说明表,对固定分区进行记录。
1)怎么纪录内存的使用情况
可以空闲分区表来记录内存中空闲的内存分区
也可以通过双向链表来记录
2)怎么选择哪个分区给新进程
4个策略:
首次适应算法(用的多):从低地址查找合适空间。
需要先对分区表排个序。
最佳适应算法:优先使用最小空闲空间
最坏适应算法:优先使用最大连续空间
产生大的内部碎片,但是效率高,排序的第一个就是目标。
临近适应算法(循环首次适应):从上次查找处向后查找。和首次适应算法很像。
3)已使用的分区怎么回收
回收后相邻空间要合并;更新空闲分区表或链表。
离散回收分区
连续分区回收