操作系统如何抽象程序的内存?

How does an operating system abstract programs' memory?

操作系统如何确保一个进程不会访问另一个进程的内存?这些东西是怎么做到的?

已经使用了多种方法。最常见的是逻辑内存寻址。地址space分为两个区域:用户和内核。

每个进程都有自己的用户内存区。所有进程共享相同的内核内存区域。一个进程无法访问另一个进程的用户模式地址 space。所有用户模式内存引用都进入进程自己的内存space,不能引用其他进程的内存。

内核地址space受到限制,只能在内核模式下访问。 OS 限制进程进入内核模式的方式。