存储管理

操作系统课程链接:https://www.bilibili.com/video/BV1a54y1D7R8?p=10

一 内存分配与回收

随着计算机和程序越来越复杂,使得存储成为必要。

存储管理解决的问题:

1. 确保计算机有足够的内存处理数据

2. 确保程序可以从可用内存中获取一部分内存使用

3. 确保程序可以归还使用后的内存以供其他程序使用

内存分配的过程

1. 单一连续分配是最简单的内存分配方式,只能在单用户,单进程的操作系统中使用。

2. 固定分区分配是支持多道程序的最简单分配方式

将内存空间分为固定大小的区域,每个区域只分给一个程序使用,互不干扰。

3. 动态分区分配

根据进程需要,动态分配内存空间。涉及到相关数据结构,分配算法。

动态分区空闲表数据结构

0表示还没有被使用,1表示已经被使用

动态分区空闲链数据结构

使用双向链表来保存内存中的空闲区域

将空闲节点首尾相连

节点记录可存储的容量

动态分区分配算法

1. 首次适应算法(FF算法)

每次分配算法从头部开始,使得头部地址空间不断被划分。

改进:循环适应算法,每次开始是从上次结束的位置开始分配。

2. 最佳适应算法(BF算法)

该算法可以避免一些大材小用的情况。 

3. 快速适应算法(QF算法)

内存回收的过程

内存回收的情况:

第一种情况:

第二种情况:

 第三种情况:

第四种情况:

为回收区创建新的空闲节点,将节点插入到相应的空闲区链表中

二 段页式存储管理

从进程角度理解进程的存储管理

操作系统如何管理进程的空间?

三个方面:

页式存储管理

页面:相对于逻辑空间的定义

内存碎片:

有空闲列表如上,现有页面大小比节点1大,比节点2-3小,会产生如下结果:

所以页面大小应该适中,过大难以分配,过小内存碎片过多

页面大小通常是以512B~8K大小 

通过页面我们可以将进程逻辑的页面·放入到对应的物理块中但是我们不知道进程页面分配的具体情况,

所以在这里我们需要一个索引,也就是页表。

页表是记录进程逻辑空间与物理空间的映射。

 

为了减少这种情况,所以产生了多级页表的概念。

可以按需取页表,节省内存空间。在运行的时候,只需要将根页表加入到内存空间,如果说我们调用哪一个字块,这个耳机页表不在的话,我们临时加载,所以节省空间。 

但是页式会有的问题:有一段连续的逻辑分散在多个页面中,会大大降低执行效率。

 

段式存储管理

同样也有段号和段内偏移。

二者比较:

段页式存储管理

分页可以有效提高内存利用率,虽然存在内存碎片。

分段可以更好满足用户需求。

所以两者结合形成段页式存储管理

 

三 虚拟内存

虚拟内存概述

程序局部性原理

局部性原理是指CPU访问存储器时,无论存取指令还是存取数据,所访问的存储单元都趋向于聚集在一个较小的连续区域中。

所以:

虚拟内存实际是对物理内存的一个补充,速度接近于内存,成本接近于辅存。

虚拟内存的置换算法

1. 先进先出算法(FIFO)

2. 最不经常使用算法(LFU)

3. 最近最少使用算法(LRU)

页面置换算法链接:http://blog.sina.com.cn/s/blog_631d3a630101mhup.html

感觉这里讲清楚了。

计算机组成原理高速缓存置换。

箭头先向右,再向左。

箭头先向右,再向左。

两种替换的比较:

四 Linux的内存分配 

 

 

 

 

 

 

 

 

Buddy内存管理算法的思想就是,努力让内存分配与相邻内存合并能快速进行。

Buddy内存分配原则

(1) 向上取整为2的幂大小

(2) 伙伴系统,伙伴是指内存的伙伴,一片连续内存的伙伴是相邻的另一片大小一样的连续内存

算法具体流程:

1. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

回收内存的过程:

 

 

 

 

 

该算法是基于计算机处理二进制的优势,有极高的效率

该算法的目的是为了解决内存外碎片的问题

该算法将内存外碎片问题转移为内存内碎片问题

Linux交换空间:

 

 

 

交换空间是冷启动的依赖

系统睡眠依赖

大进程空间依赖

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值