Operating system 这个术语是什么;运行映射/未映射的操作系统”;什么意思?

Operating system 这个术语是什么;运行映射/未映射的操作系统”;什么意思?,operating-system,Operating System,我目前正在学习操作系统课程 这些说明说: 在某些情况下,操作系统只是在未映射的情况下运行。然后,它所要做的就是读取表并在软件中翻译用户地址。但是,虚拟地址空间中连续的地址在物理上可能不连续。因此,可能必须将I/O操作拆分为多个块 假设操作系统也运行mapped,那么它必须为用户区域生成一个页面表条目。请注意,在任何情况下都不应允许用户访问映射表 我有三个问题: 运行未映射的操作系统意味着什么 运行映射的操作系统的定义是什么 为什么当操作系统运行未映射时,I/O操作可能必须拆分为多个块 没有足够

我目前正在学习操作系统课程

这些说明说:

在某些情况下,操作系统只是在未映射的情况下运行。然后,它所要做的就是读取表并在软件中翻译用户地址。但是,虚拟地址空间中连续的地址在物理上可能不连续。因此,可能必须将I/O操作拆分为多个块

假设操作系统也运行mapped,那么它必须为用户区域生成一个页面表条目。请注意,在任何情况下都不应允许用户访问映射表

我有三个问题:

  • 运行未映射的操作系统意味着什么
  • 运行映射的操作系统的定义是什么
  • 为什么当操作系统运行未映射时,I/O操作可能必须拆分为多个块

    • 没有足够的上下文来100%确定;但我怀疑:

      a) 当他们说“OS”时,实际上是指“内核”。请注意,操作系统是一个庞大的系统,由许多部分组成(帮助系统、国际化文件、GUI、各种库、管理系统的各种实用程序等),其中几乎所有操作系统(除内核外的所有内容)都是普通的用户空间内容

      b) “OS只是运行未映射”实际上意味着内核在禁用MMU的情况下运行(这样内核就可以直接访问物理内存,而不需要涉及“将虚拟地址转换为物理地址”)。对于真正的硬件来说,这是可怕的(CPU将“虚拟地址到物理地址”的转换缓存在一个称为TLB/转换暂放缓冲区的东西中,并且在进入内核时禁用MMU,在从内核返回时重新启用MMU会导致TLB被刷新,这会由于“TLB未命中”而破坏性能)

      c) “OS也运行映射”实际上意味着内核在启用MMU的情况下运行(因此内核必须确保内容映射到虚拟地址空间才能访问它,因为它不能直接访问物理内存)。请注意,内核可能只是将部分/大部分/全部物理内存映射到所有虚拟地址空间,以便它始终“几乎直接”访问物理内存

      为什么当操作系统运行未映射时,I/O操作可能必须拆分为多个块

      如果用户空间正在使用MMU(将虚拟地址转换为物理地址),“虚拟内存中连续”并不意味着“物理内存中连续”;用户空间的IO(例如,
      read()
      write()
      )必须拆分为设备的“物理连续”部分。在这种情况下,内核是否被映射(或者是否使用MMU)并没有什么区别——重要的是用户空间是否使用MMU

      若内核也在使用MMU,“在虚拟内存中连续”并不意味着内核空间“在物理内存中连续”;从内核到内核的IO也必须被拆分为设备的“物理连续”部分