您的位置:首页 > 其它

操作系统笔记:(一)物理内存分配1:连续内存分配

2018-03-27 15:37 295 查看
remark: 这是我准备考研期间看学堂在线清华大学的OS MOOC的笔记,由于博主不是科班出身,所写错误可能很大,望大家指正.

本文结构如下:

计算机内存管理概述

连续内存分配

碎片整理

e.g: 伙伴系统(Buddy System)

计算机内存管理概述

首先我们知道计算机的内存是分很多层次的,不同层次之间访存速度相差很大,(甚至达到几个数量级)



MMU 工作原理介绍

Where exactly L1, L2 and L3 Caches located in computer?

上面是关于MMU和L1,L2 Cache 的介绍,先留坑,有兴趣可以看看

内存管理方式

重定位 (relocation)

分段(Segmentation)

分页(paging)

段页式

分段分页和段页是都会在非连续内存分配中介绍,重定位先留坑待补

地址空间

物理地址空间 就是真实的计算机内存(e.g.: 4G ,0-4G-1)

逻辑地址空间 CPU看运行进程看到的地址,也称虚拟地址

地址生成

将指令与数据绑定到内存地址有如下几种情况:

* 编译时 编译时写死,生成绝对地址代码

* 加载时 编译时生成可重定位代码,加载时进行地址绑定

* 执行时 执行时进行地址绑定,这种方式更加灵活,执行时可以从一个内存段移到另一个内存段

地址检查



连续内存分配

顾名思义,操作系统为每个进程分配一块连续的内存区域,操作系统需要维护一个表,记录哪些内存块被占用了,哪些没有。这样做很明显会产生

两个问题

1. 外碎片 (相邻两块之间不能用的)

2. 内碎片 (分配的内存中用不完的)

特点

1. 加载时分配

2. 地址连续

分配策略

最先(first-fit) : 找到第一块足够大的,

最佳(best-fit): 找到足够大的中最小的 M=minMi≥Mneed{Mi}M=minMi≥Mneed{Mi}

最差(worst-fit): 分配最大的

碎片整理

一种解决外部碎片的方法是 紧缩(compaction) ,就是移动内存,最暴力的就是将所有占用内存移到一边。but 紧缩并不是总是可以的必须是在地址绑定时是执行时生成才行。另外一种策略就是下一节要讲的非连续内存分配

交换 这种策略是OS在进程空闲时将所占用的数据段换出到硬盘中去,也可以抢占。

Buddy System

它的直观表现是这样的



每一块内存都是2的幂次,需要注意的是由于分配是连续的,所以依然存在外部碎片
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息