操作系统的存储管理

一、内存分配的过程

1.【单一连续分配】单用户、单进程
2.【固定分区分配】内存空间被划分位若干分区,每个分区只供一个程序使用
3.【动态分区分配】根据进程需要动态分配分区

①动态分区数据结构

①空闲表:给每一个分区标记状态
②空闲链:动态使链表的节点合并,并给每一个节点标记容量

②动态分区分配算法

①首次适应算法(FF):从开始顺序查找合适的分区,但此算法会导致头部地址空间不断的被划分
②最佳适应算法(BF):将空闲链表按容量大小进行排序,再从小到大进行顺序查找
③快速适应算法(QF):创建多个空闲链表,每一个空闲链表只存储一种容量的空闲区

二、内存回收的过程

1.【空闲区位于回收区前】将空闲区的容量增大至包含回收区
2.【回收区位于空闲区前】将回收区与空闲区合并,新的节点使用回收区的地址
3.【回收区位于空闲区A与空闲区B之间】将空闲区A、空闲区B和回收区合并,新的节点使用空闲区1的地址
4.【回收区周围没有空闲节点】创建空闲节点并插入链表

三、段页式存储管理

1.页式存储管理

将进程的逻辑空间分成若干大小的页面,再以页面为单位把进程空间装进物理内存块,以提高内存利用率。
页面大小一般为512B ~ 8K,页面大小若过大会导致无法分配,若过小会产生内存碎片(碎片指一个链表节点没有被利用的那一部分)
缺陷:如果有一段连续的逻辑分布在多个页面中,将大大降低执行效率

2.段式存储管理

将进程的逻辑空间划分为若干非等分的段,段的长度由连续逻辑的长度决定,可动态的满足实际需求。

3.段页式存储管理

先分段,再分页(先将进程的逻辑空间分成若干段,再将段内空间分成若干页)在这里插入图片描述

四、虚拟内存

将暂时不使用的内存资源放置到磁盘,当程序访问的页面不存在的时候,发起页面置换。

1.置换算法

①先进先出算法(FIFO)
②最不经常使用算法(LFU)
③最近最少使用算法(LRU)

2.主存页面的替换时机

当主存缺页的时候发生替换

发布了48 篇原创文章 · 获赞 4 · 访问量 6180

猜你喜欢

转载自blog.csdn.net/Knightletter/article/details/102512134