计算机如何防止程序相互干扰?

i l*_*low 4 operating-system

例如,我在课堂上听说全局变量只是放在内存中的特定位置.什么是防止两个程序意外地为不同的变量使用相同的内存位置?

另外,两个程序都使用相同的堆栈作为参数和局部变量吗?如果是这样,什么是防止变量相互交错并搞乱索引?

只是好奇.

das*_*ght 5

这是现代操作系统通过在单独的虚拟地址空间中加载每个进程来完成的.多个进程可以引用相同的虚拟地址,但是在现代硬件的帮助下,操作系统会将每个进程映射到单独的物理地址,并确保一个进程无法访问分配给另一个进程1的物理内存.


1调试器是一个值得注意的例外:操作系统通常为调试器提供特殊机制,以连接到其他进程并检查其内存空间.


Chi*_*era 5

大多数现代处理器都有一个内存管理单元 (MMU),它为操作系统提供了为每个进程创建受保护的单独内存部分的能力,包括为每个进程创建一个单独的堆栈。在 MMU 的帮助下,处理器可以限制每个进程只修改/访问已分配给它的内存。这可以防止一个进程写入另一个进程的内存空间。

大多数现代操作系统将使用 MMU 的功能为每个进程提供保护。

以下是一些有用的链接:
内存管理单元
虚拟内存