【问题标题】:What are the different areas of Memory & Disk?内存和磁盘有哪些不同的区域?
【发布时间】:2011-01-06 06:10:21
【问题描述】:

我不确定这是否是一个合适的提问地点,也不确定如何提出我的问题。

让我这样说:

  • 主内存从 0x00000 到 0xFFFFF。
  • 从 0x00000000 到 0xFFFFFFFF 的磁盘空间。

但是我们能够访问的不是从第 0 个字节到最后一个字节,对吧? 在硬盘上,我猜在第 0 个字节我们有 MBR。 & 在某个地方我们有文件系统(我们只能访问这个)。还有什么?

与主存储器类似。我们有一些内核内存和用户内存(每个进程都在其中)。还有什么?

我的问题是从第 0 个字节到最后一个字节的所有区域是什么?我不知道要搜索什么或在哪里可以找到此类信息?如果有人可以发布一些链接,那就太好了。

编辑:

我在 Windows 上使用 x86 32 位。实际上,我正在阅读一本关于计算机安全的书,其中作者提到恶意软件可以存在于磁盘或内存中。(这是非常正确的)。但是当我们说计算机被感染时,并不意味着只有文件(文件系统的一部分)被感染。还有其他区域不适合用户使用,例如 MBR。或内核内存。

所以,这个问题突然出现在我的脑海中。我可能不知道的所有这些领域是什么?

【问题讨论】:

  • 这非常取决于您所谈论的平台。在我们知道我们在谈论什么硬件之前,没有人能给你一个有意义的答案。 (即便如此,除非您可以附加一些您试图通过编程完成的任务,否则与编程无关。)
  • 你需要这些信息做什么?您在那里有标签“驱动程序”。如果你想写一些驱动程序,使用操作系统提供的函数来做内存访问,你不必担心细节。
  • 这些假设无论如何都不成立。有了虚拟内存,一切皆有可能。
  • 是的,Georg 的评论让我意识到磁盘的某些部分专门用于交换/分页以扩展内存。所以,与其这样学习。我想马上知道。我希望你明白我的意思。
  • 尽管假设不正确,但这个问题非常很有趣,我等待一个很好的答案。干得好华硕

标签: windows computer-science x86 driver computer-architecture


【解决方案1】:

除了这个问题的答案高度依赖于操作系统这一事实之外,磁盘空间根本不是主内存的一部分。在 Intel 架构上,磁盘访问占用每个通道的一些 I/O 地址空间(不同于内存地址)。确切的字数取决于什么通道:IDE/ATA/SATA/SCSI。在其他像 PowerPC 磁盘访问这样的内存映射架构上确实需要一些内存地址空间,但仍然不多。

为了说明(请注意,这是一个非常简化的示例,而不是真实世界),假设一个内存映射 CPU*(如 PowerPC)试图访问具有 LBA 寻址的磁盘。磁盘实际上只需要 2 到 3 个字的内存即可保存数 GB 的数据。也就是说,我们只需要 12 个字节来存储和检索千兆字节的数据:

  • 2 个字(8 个字节)告诉磁盘要查找的位置,即我们要读取或写入的地址。
  • 1 个字(4 个字节)实际执行读取和写入。每次从该地址读取时,2 字指针 会自动增加 1 个字符(如果读取 32 位,则增加 4 个字符)。

但以上是对真实情况的抽象视图。大多数磁盘控制器都有多个寄存器来控制电源管理、磁盘旋转速度、进入和退出睡眠模式等。

这些内存位置的地址是什么?嗯,这取决于你在谈论什么 I/O 通道。老式的 ISA 总线依赖于用户在卡上设置跳线来设置地址。所以对于那些你需要询问用户的人。 PCI 总线在引导时自动与磁盘控制器协商地址,然后根据架构告诉您的 BIOS 存在哪些设备,或者将它们作为参数传递给引导加载程序,或者将它们存储在系统总线上的一些临时寄存器中。 USB 像 PCI 一样工作,但与操作系统而不是 BIOS 协商......等等。

如您所见,即使您将其仅限于特定情况,例如在戴尔主板上运行的 64 位 AMD CPU 上运行的 Windows7,也没有简单的答案。

*注意:因为您担心内存位置。

【讨论】:

    【解决方案2】:

    你的问题很复杂,如果不知道内存视图的范围,很难回答。

    假设我们在具有直接映射内存的 ring-0 中,PC 兼容具有多个内存区域。较低的内存、BIOS 映射代码、IO 端口、视频内存等。它们都存在于相同的内存空间中。您通过读取和写入特定内存地址(映射到这些组件)与外围设备进行通信。这些地址由相关硬件和使用的驱动程序设置。

    一旦我们进入用户模式,你就必须处理虚拟内存。地址是象征性的,可能会或可能不会映射到物理内存的任何特定部分。我建议阅读Virtual memory

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 2014-11-06
      • 2018-11-26
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多