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

X86 交换空间或页面文件中的页面,x86,operating-system,paging,cpu-architecture,virtual-memory,X86,Operating System,Paging,Cpu Architecture,Virtual Memory,操作系统何时实际将进程的地址空间划分为页面 假设我编写一个程序并保存它。操作系统是否会将程序的地址空间划分为页面,即使它没有执行并且在硬盘中处于空闲状态 我了解到,硬盘中有一部分称为交换空间或页面文件,其大小可以配置,其中包含未使用的页面或已从物理内存交换到硬盘的页面 因此,在执行程序之前,整个程序是复制到交换空间还是可以从硬盘的任何部分执行?交换空间是匿名页或“私有”映射中脏页的备份存储(例如,可执行文件的数据段:它是从可执行文件读取的,但更改不会更新文件) 进程虚拟地址空间中未修改的页面仍由

操作系统何时实际将进程的地址空间划分为页面

假设我编写一个程序并保存它。操作系统是否会将程序的地址空间划分为页面,即使它没有执行并且在硬盘中处于空闲状态

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


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

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

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

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

操作系统是否会将程序的地址空间划分为页面,即使它没有执行并且在硬盘中处于空闲状态

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

  • 进程:程序的运行实例
  • 可执行文件:磁盘上的字节数,在运行之前与任何其他文件没有区别
  • 虚拟地址空间与物理地址空间
如果一个程序没有执行,就没有进程和地址空间。如果它正在执行,每个进程都有自己的虚拟地址空间。(只读页都由磁盘上的同一文件支持。)

操作系统何时实际将进程的地址空间划分为页面

通常,链接器将应用程序划分为多个页面,以建立程序/进程的初始状态,并将执行指令写入可执行文件。程序加载器根据可执行文件的指示分配页面

假设我编写一个程序并保存它。操作系统是否会将程序的地址空间划分为页面,即使它没有执行并且在硬盘中处于空闲状态

见上文。链接器将您写入的内容划分为多个页面

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


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

硬盘不在地址空间。@OliverCharlesworth您能详细说明一下吗?没有更多的直接说明了-硬盘(或更一般地说,文件系统)不在物理或虚拟地址空间中。但是,通常操作系统允许您在执行程序时将其转移到交换空间吗?通常在执行程序时,操作系统会将其映射到虚拟地址空间。因此,无需将其移动到交换,如果操作系统由于内存压力决定删除这些页面,它可以在需要时从磁盘重新读取这些页面。我们在Windows中配置的虚拟内存大小与可分配给所有进程的总虚拟内存或交换空间大小相同,对吗?@Zephyr:no,从文件映射为只读的页面可以将其用作备份存储,而不是交换空间。而且,Windows允许过度使用,甚至可以在没有交换空间的情况下运行。在这种情况下,脏页会占用物理RAM,操作系统无法回收这些物理页(在某些操作系统术语中称为“页帧”)。嗯,除了使用内存压缩作为交换的一种形式之外。。。无论如何,我不使用Windows,所以我不知道你的“总数”是否包括物理内存+页面文件大小,但即使包含,Overmit也允许更多虚拟分配。该网站说这是页面文件或交换空间的大小@Zephyr:不,这是物理RAM+交换空间的大小。这与计算机科学家谈论操作系统理论时使用的术语不同。你的最后一段只适用于不会过度使用内存的系统。大多数现代操作系统在默认情况下都会过度使用,否则我们需要的交换空间几乎与物理RAM的交换空间一样多。维基百科说,MMU将地址空间划分为多个页面。请你提供第一份声明的参考资料好吗?