Sillycheese

6.s081-note06-interrupts

真实操作系统内存使用情况 下图是一台Athena计算机(注,MIT内部共享使用的计算机)的top指令输出。如果你查看Mem这一行, 首先是计算机中总共有多少内存(33048332),如果你再往后看的话,你会发现大部分内存都被使用了(4214604 + 26988148)。但是大部分内存并没有被应用程序所使用,而是被buff/cache用掉了。这在一个操作系统中还挺常见的,因为我们不想...

6.s081-note04

Trap机制 程序运行是完成用户空间和内核空间的切换 程序执行系统调用 程序出现了类似page fault、运算时除0的错误 一个设备触发了中断使得当前程序运行需要响应内核设备驱动 都会发生这样的切换 这其间用户空间与内核空间的切换通常被称为trap,其中细节对安全隔离与性能来说非常重要。所以,trap机制要尽可能的简单 这里有很多寄存器都有特殊的作用,我们之后会看...

6.s081-note03

虚拟内存(page tables) 地址空间 支持虚拟内存的硬件 内核地址空间与用户地址空间的结构 地址空间 创造虚拟内存的一个出发点是你可以通过它实现隔离性。如果你正确的设置了page table,并且通过代码对它进行正确的管理,那么原则上你可以实现强隔离。 这里的基本概念也很简单直观,我们给包括内核在内的所有程序专属的地址空间。 所以,基本上来说,每个程序都运行...

6.s081-note01

Isolation 应用程序与操作系统之间具有强隔离性。简单来说,操作系统能够很好地管理多个应用程序的正常运行。 在内存层面来看,不同应用程序之间的内存是隔离的,这样应用程序就不会覆盖另一个的内存。 其实接口就被精心设计来实现资源的强隔离。 接下来是几个例子。 例如进程,进程抽象了CPU,这样多个应用程序才能复用一个或多个CPU。 我们也可以认为exec抽象了内存,应用程序并没有...