十六进制内存地址是否代表整个内存中的位置?
例如4 gb ram,并且存在存储器地址。它是否指向数据开始的位置(以字节为单位)?例如2.1 gb。
在数据加载到内存之前,内存地址在硬盘上是如何工作的?
有没有从内存中获取部分数据,而从磁盘中获取其他数据的情况?位置是如何区分的?
谢谢
发布于 2011-01-18 22:20:01
十六进制内存地址(就像打印出指针的值一样)指向虚拟内存中的某个位置。
在32位系统上,每个进程都有整整4 4GB的虚拟内存。此虚拟内存由CPU和操作系统管理。当您访问虚拟内存中的某个位置时,CPU和操作系统会确定该位置在系统实际物理内存中的映射位置,并从那里检索数据。
操作系统也可以从物理内存中取出一些东西并将它们交换到磁盘上,以便在物理内存中为其他东西腾出空间。然后,如果您试图访问从物理内存交换到磁盘的内容的虚拟内存位置,则会生成“页面错误”,导致操作系统将页面从磁盘重新加载到物理内存中。
发布于 2011-01-18 22:10:34
现代操作系统有virtual memory。
这意味着使用你的程序访问内存中的某个字节的地址纯粹是“虚拟的”,不存在。操作系统通过特殊的硬件控制器将其映射到完全不同的实际内存位置,并且对于给定的地址可能根本没有物理内存位置。例如,您可以将一个文件mmap()到(虚拟)内存中,在虚拟地址访问一个字节就意味着访问一个字节的文件。类似地,如果某个memory page长时间未使用,操作系统可能会将该页从物理内存swap off到磁盘。在这种情况下,虚拟内存也不会指向物理内存位置。
发布于 2011-01-18 22:15:22
在大多数情况下-是的。但是一些处理器使用2个值来计算实际地址。例如Intel8086。Hardisk只是一种存储,它有自己的系统来存储信息。因此,在执行任何CPU操作之前,必须将数据加载到RAM中。
https://stackoverflow.com/questions/4725004
复制相似问题