Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Operating system 操作系统、内存管理_Operating System - Fatal编程技术网

Operating system 操作系统、内存管理

Operating system 操作系统、内存管理,operating-system,Operating System,我正在学习操作系统,对物理地址和逻辑地址有疑问。 如果逻辑地址不存在于实数中,并且仅用于指示物理地址,那么我们为什么要使用逻辑地址呢?为什么不直接用物理地址呢 提前谢谢 操作系统使用逻辑地址的一个很好的例子是虚拟内存的概念。例如,一个进程可以在需要100MB RAM才能执行的Windows中运行。如果没有虚拟内存,如果这个数量的RAM不可用,进程将无法运行。有了虚拟内存,Windows操作系统可以告诉进程它需要的内存是可用的。但是,操作系统无法公开100MB的物理内存,因为它不存在。相反,操作系

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


提前谢谢

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

另一个原因是碎片。
假设您有100 MB的内存,前三个进程各需要20 MB。你给他们想要的内存,他们运行,然后第二个终止。您还有60 MB的可用内存,但任何需要50 MB顺序地址空间的进程都不能拥有它。

使用逻辑地址可以提供这种能力。

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


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

谷歌搜索“逻辑和物理地址”:“大约761000个结果”。我投票结束这个问题,因为这是一个浪费空间的问题,几乎肯定是一个复制/粘贴作业垃圾场。