Operating system CPU/OS如何维护辅助内存中所有进程和所有数据的信息

Operating system CPU/OS如何维护辅助内存中所有进程和所有数据的信息,operating-system,Operating System,我知道内存表用于跟踪主内存和辅助内存。此外,为了从辅助内存中获取内容,操作系统需要维护关于每个进程的某种信息,但我对上述问题没有什么疑问: 1) 主存是有限的,CPU只能直接访问主存,并且可以有许多进程,因此,如何可能由CPU在主存中维护每个进程的信息。(尽管每个进程的进程映像只有一小部分保存在内存中,但仍然可以有这么多进程) 2) 此外,辅助内存可以在TBs中,因此如何访问地址,因为它肯定需要超过32位来表示TBs。流程的某些数据位于900 GB开始的位置。该进程的PCB将如何告诉CPU它位于

我知道内存表用于跟踪主内存和辅助内存。此外,为了从辅助内存中获取内容,操作系统需要维护关于每个进程的某种信息,但我对上述问题没有什么疑问:

1) 主存是有限的,CPU只能直接访问主存,并且可以有许多进程,因此,如何可能由CPU在主存中维护每个进程的信息。(尽管每个进程的进程映像只有一小部分保存在内存中,但仍然可以有这么多进程)

2) 此外,辅助内存可以在TBs中,因此如何访问地址,因为它肯定需要超过32位来表示TBs。流程的某些数据位于900 GB开始的位置。该进程的PCB将如何告诉CPU它位于900 GB的位置,我的意思是,它需要超过32位才能正确地告诉CPU,并假设系统是32位的,如果系统是64位的,它会有什么不同

3) 另外,辅助内存在TBs中,CPU必须有某种方式来访问辅助内存的任何部分,这是如何做到的


4) 在主存中没有进程信息的情况下也是可能的。如果是这样,那么将如何检索该数据的内容。这可能不是事实,但迫使我从这个角度思考的是,主内存只有这么多,可以有很多很多进程,这就是问题所在

我在网上搜索了很多,但都找不到答案,如果我找到了什么,我会更加困惑。请任何人澄清这些疑问


编辑:以任何CPU或任何操作系统为例,我只想要一张概括性的图片。在不同的系统中,细节可能不同,但我相信在某种程度上会有一些共性。

TB?没问题

您总是可以从较短的整数中构造较长的整数。文件系统通常使用比CPU中指针大小更长的索引、大小和计数。这就是为什么您可以拥有和寻址比CPU地址空间更大的存储空间

您不需要将磁盘中的所有内容都加载到RAM中,您只需将足够的内容加载到CPU的地址空间中即可

文件系统允许您一次读取包含一个或多个文件和目录的数据块,这些数据块的大小通常为千字节,而不是兆字节或千兆字节,更不用说兆字节了


因此,更长的索引/大小/计数+小块。这就是访问磁盘数据所需的全部内容,超过了可以加载到RAM中的数据量。

什么CPU和什么操作系统?你认为每一个CPU和每一个操作系统的设计都是一样的吗?拿任何一个CPU或操作系统来说,我只想要一个概括性的画面。在不同的系统中,细节可能会有所不同,但我相信在某种程度上会有一些共同点。但是CPU如何知道要将辅助内存的哪一部分放入主内存?确实,进程的PCB将保存该信息,但如果所需信息的位置是900 GB,那么PCB会有更长的指向该位置的索引吗?在主内存中没有进程信息的情况下也是可能的。如果是这样,那么将如何检索该数据的内容。可能不是这样,但迫使我从这个角度思考的是,主内存只有这么多,可以有很多很多进程,因此问题就来了。为了从磁盘读取数据,首先需要将数据写入磁盘。将文件写入磁盘时,从文件系统获取文件ID。然后,文件系统将能够在给定文件名或ID的情况下确定文件在介质上的起始位置。此外,当您将文件写入磁盘时,您知道您写入了多少,以及感兴趣的数据在文件中的哪个位置。然后,您可以使用此信息从位于或靠近此位置的文件中请求数据块,其余部分由文件系统完成。此外,您还可以向文件中写入其他“元数据”,描述文件结构(想想各种多媒体文件,除了像素颜色和音频样本外,它们还有结构和特殊控制信息;想想HTML/XML以及另一个结构化数据示例)这样,即使RAM中没有进程的踪迹,你也可以通过解析它在文件中找到它的信息。好吧,为了确保我没有弄错,当你打开任何文件或内容时,CPU通过解析它得到的元数据会加载到主内存中,我假设这个元数据会有PCB和所有其他结构,因此我也会如果主内存中没有进程的信息,它仍然可以访问。如果我错了,请纠正我。