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

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

本文结构如下:

  • 计算机内存管理概述
  • 连续内存分配
  • 碎片整理
  • e.g: 伙伴系统(Buddy System)

计算机内存管理概述

首先我们知道计算机的内存是分很多层次的,不同层次之间访存速度相差很大,(甚至达到几个数量级)
操作系统笔记:(一)物理内存分配1:连续内存分配_第1张图片

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. 内碎片 (分配的内存中用不完的)

特点
1. 加载时分配
2. 地址连续

分配策略

  • 最先(first-fit) : 找到第一块足够大的,
  • 最佳(best-fit): 找到足够大的中最小的 M=minMiMneed{Mi} M = m i n M i ≥ M n e e d { M i }
  • 最差(worst-fit): 分配最大的

碎片整理

一种解决外部碎片的方法是 紧缩(compaction) ,就是移动内存,最暴力的就是将所有占用内存移到一边。but 紧缩并不是总是可以的必须是在地址绑定时是执行时生成才行。另外一种策略就是下一节要讲的非连续内存分配
交换 这种策略是OS在进程空闲时将所占用的数据段换出到硬盘中去,也可以抢占。

Buddy System

它的直观表现是这样的
操作系统笔记:(一)物理内存分配1:连续内存分配_第3张图片

每一块内存都是2的幂次,需要注意的是由于分配是连续的,所以依然存在外部碎片

你可能感兴趣的:(system&software,engineer)