操作系统教程OS 孙忠秀待读

11、存储模型1(操作系统笔记)

2017-01-04  本文已影响184人  yjaal

一、基本概念:地址重定位

1.1 需要了解的内容

1.2 要解决的问题

1
说明:在左边的单处理器系统中,如果一个进程想要运行,那么必须将进程地址空间装载到物理内存中才可以运行。而右边的是多处理器系统中有多个进程需要进入物理内存执行,这里要解决的问题就是,如何将进程地址空间合理的装载到物理内存中,如何合理的分配使用内存,使得每个进程能正确执行。

1.3 复习:进程地址空间

2

1.4 注意

这就需要地址重定位来解决这些问题。

二、地址重定位

为了保证cpu执行指令时可以正确访问内存单元,需要将用户程序中的逻辑地址转换为运行时可由机器直接寻址的物理地址,这一过程称为地址冲地位。

2.1 静态重定位与动态重定位

2.2 动态重定位实现

3

三、物理内存管理

3.1 空闲内存管理

4
说明:我们对物理内存有不同的划分,一种是等长的划分,一种是不等长的划分。

3.2 内存分配算法

这里我们使用空闲区表、已分配区表为例来说明内存分配算法。

当找到满足进程需求的空闲区表后,需要将空闲区分为两部分,一部分供进程使用,另一部分形成新的空闲区。

3.3 回收问题

3.4 伙伴系统

这是Linux底层内存管理采用的一种方法

3.5 伙伴系统例子

5
说明:从上图中可以看到上面的算法是如何工作的。

四、基本的内存管理方案1

即整个进程进入内存一片连续的区域,有多种解决方案:单一连续区、固定分区、可变分区、页式、段式、段页式等方案。

4.1 单一连续区

特点:一段时间内只有一个进程在内存中,有简单、内存利用率低的特点。这种方案是在早期系统中使用的,有三种不同的布局:


6

4.2 固定分区

7
说明:可以看到不同的进程链分别排在不同的分区位置。这样有个缺点是有的进程链很长,一时半会得不到分区,但是此时可能有些空闲分区根本没有被使用。于是还有右边这种排队方案,就是只有一个进程链,然后哪个分区空闲了,排在首位的进程就进入执行。早期手机中就是采用这种方法。

4.3 可变分区

碎片问题解决

五、基本内存管理方案2

即一个进程进入内存中若干个不连续的区域

5.1 页式存储管理方案

相关数据结构及地址转换

5.2 段式存储管理方案

相关数据结构及地址转换

5.3 段页式存储管理方案

5.4 小结

12

六、交换技术

6.1 内存不足时如何管理

即如何在一个较小的物理内存空间中运行一个会占用较大地址空间的进程?

6.2 内存“扩充”技术

6.3 覆盖技术

这种技术主要用于早期的操作系统,现在使用不多。

6.4 交换技术

上一篇 下一篇

猜你喜欢

热点阅读