操作系统,内存管理

时间:2015-07-01 09:37:19

标签: operating-system

我正在学习操作系统,我对物理和逻辑地址有疑问 如果逻辑地址不存在,并且仅用于指示物理地址,为什么我们根本使用逻辑地址?为什么不直接物理地址?

提前致谢!

3 个答案:

答案 0 :(得分:1)

操作系统使用逻辑地址的一个很好的例子是虚拟内存的概念。例如,一个进程可以在Windows中运行,需要100MB的RAM才能执行。如果没有虚拟内存,如果此RAM数量不可用,则无法运行该进程。使用虚拟内存,Windows操作系统可以告诉进程它所需的内存是否可用。但是,操作系统不能暴露100MB的物理内存,因为它不存在。相反,操作系统将暴露100MB的逻辑内存。部分或全部内存可能无法映射到物理地址。相反,它可能映射到磁盘或其他位置。

答案 1 :(得分:1)

另一个原因是支离破碎 假设你有100 MB的内存,前三个进程每个需要20 MB。你给他们想要的内存,他们运行,然后第二个终止。剩下60 MB的可用内存,但任何需要50 MB顺序地址空间的进程都无法使用它 使用逻辑地址可以提供这种能力。

答案 2 :(得分:0)

使用逻辑地址的主要好处之一(事实上,类似的想法适用于大多数命名抽象,例如网络环境中的域名,文件描述符等等,是程序可以用不可知的方式写入物理内存的实际布局。也就是说,您可以编写程序,使数据存储在地址0xdeadbeef(这是一个逻辑地址)中,并且您的程序可以正常工作(MMU或执行二进制转换的引导加载程序会将逻辑地址转换为在运行时或启动时的适当物理地址。)

在上面的场景中,如果您的程序被编写为使用物理地址,那么您将面临与使用相同地址存储数据的其他进程(例如,程序的其他实例)发生冲突的风险)。