交换空间或页面文件中的页面

问题描述 投票:1回答:2

OS何时实际将进程的地址空间划分为页面?

假设我编写了一个程序并保存它。 OS是否会将程序的地址空间划分为页面,即使它没有在硬盘中执行和空闲?

我读到我们有一部分称为交换空间或页面文件驻留在硬盘中,其大小可以配置,它包含未使用的页面或已从物理内存交换到硬盘的页面。

那么在执行程序之前,整个程序是复制到交换空间还是可以从硬盘的任何部分执行?

x86 operating-system paging cpu-architecture virtual-memory
2个回答
1
投票

OS何时实际将进程的地址空间划分为页面?

通常,LINKER将应用程序划分为页面以建立程序/进程的初始状态,并将执行此操作的指令写入可执行文件。程序加载器按可执行文件的指示分配页面。

假设我编写了一个程序并保存它。 OS是否会将程序的地址空间划分为页面,即使它没有在硬盘中执行和空闲?

往上看。链接器将您写入的内容划分为页面。

那么在执行程序之前,整个程序是复制到交换空间还是可以从硬盘的任何部分执行?

在任何虚拟内存系统(其功能)上,分配给进程的每个页面都将在页面文件中具有相应的位置。在某些系统上,可能有多个页面文件。例如,可执行文件可以成为静态数据和代码的页面文件。


0
投票

交换空间是匿名页面的后备存储,或“私有”映射中的脏页(例如,可执行文件的数据段:它是从可执行文件中读取的,但更改不会更新文件)。

进程的虚拟地址空间中的未修改页面仍由磁盘(或任何库)上的可执行文件支持。

大多数现代操作系统实际上并没有进行严格的计算,以确保它们允许进程分配的所有虚拟内存页面都有足够的交换(这称为overcommit),但传统的模型是操作系统在分配虚拟内存时保留交换。

OS是否会将程序的地址空间划分为页面,即使它没有在硬盘中执行和空闲?

我几乎不知道从哪里开始回答这一部分。去找一个操作系统教科书(或维基百科)并查找:

  • process:程序的运行实例
  • 可执行文件:只是磁盘上的字节,在运行它之前与任何其他文件没有区别。
  • 虚拟与物理地址空间。

如果程序没有执行,则没有进程也没有地址空间。如果它正在执行,则每个进程都有自己的虚拟地址空间。 (并且只读页面都由磁盘上的同一文件支持。)

© www.soinside.com 2019 - 2024. All rights reserved.