操作系统导论 | 第 13 章笔记

87 阅读2分钟

第13章 抽象:地址空间

用户的需求“易于使用”、“高性能”、“可靠性”促使了操作系统越来越复杂与强大。

13.1 早期系统

image.png

这里几乎没有抽象,用户对操作系统的要求也不多。

13.2 多道程序和时分共享

早期系统 -> 多道程序系统时代 -> 分时系统时代

image.png

在进程切换的时候,我们仍然将进程信息放在内存中,这样操作系统可以更有效率地实现时分共享。

新的要求:保护(一个进程不可以读取其他进程的内存)

13.3 地址空间

为了解决这个需求,操作系统需要提供一个易用的物理内存抽象,这个抽象叫地址空间,是运行的程序看到的系统中的内存。

image.png

我们描述地址空间时,所描述的是操作系统提供给运行程序的抽象。程序不在物理地址0~16KB的内存中,而是加载在任意的物理地址。

关键问题:虚拟化内存——操作系统如何在单一的物理内存上为多个运行的进程(所有进程共享内存)构建一个私有的、可能很大的地址空间的抽象?

举例:进程 A 尝试在地址 0(我们将称其为虚拟地址,virtual address) 执行加载操作时,然而操作系统在硬件的支持下,出于某种原因,必须确保不是加载到物理地址 0,而是物理地址 320KB(这是 A 载入内存的地址)。这是内存虚拟化的关键,这是世界上每一个现代计算机系统的基础。

13.4 目标

  • 操作系统的一个主要目标是透明(transparency)(这里的透明指的是看不见的意思)操作系统实现虚拟内存的方式,应该让运行的程序看不见。
  • 虚拟内存的另一个目标是效率(efficiency)。操作系统应该追求虚拟化尽可能高效,包括时间上和空间上。
  • 虚拟内存第三个目标是保护(protection)。进程不影响其他进程,也不影响操作系统本身。

PS:你所看到的所有地址都不是真的,只有操作系统和硬件才知道物理地址。

接下来我们重点学习虚拟化内存所需的基本机制及一些相关策略。

13.5 小结

我们介绍了操作系统的一个重要子系统:虚拟内存。虚拟内存系统负责为程序提供一 个巨大的、稀疏的、私有的地址空间的假象,其中保存了程序的所有指令和数据。

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情