process - 具体来说,将进程分成页面是什么意思?

标签 process operating-system virtual paging

我理解“进程”概念的方式是,它是一个可执行程序的运行实例。exe位于辅助内存中,而它的运行实例位于RAM中。如果这种理解是正确的,我想知道这个抽象描述的真正含义是什么:“将进程划分为‘页面’并在 RAM 中运行某些页面,并将其余页面保留在辅助内存中以便在需要时进行交换”?这里的问题是在虚拟内存的背景下。

按照版主的建议,向问题添加“编程”上下文:

假设我编写了一个小程序来列出从 1 到 100 的数字(或者)来打印“Hello world”(或者)一些桌面实用程序来扫描文本文件并在桌面上一一打印文件中的单词 window 。考虑到我最终的可执行文件,一旦这些程序被编译和链接,当我运行可执行文件时,如何将可执行文件“分割”并在 RAM 中分部分运行?我该如何掌握和可视化 RAM 中某个时间点“应该”什么以及“不应该”什么的想法?

最佳答案

在虚拟地址到物理地址的转换中,你已经有了它(划分)。虚拟地址空间被分成一或几千字节的 block (通常大小相同),每个 block 都可以与相同大小的物理内存块(页)相关联。

可执行文件(或进程)中尚未使用或最近未使用的那些部分不需要从磁盘复制到物理内存中,因此虚拟地址空间的相应部分可能不会被复制到物理内存中。也与物理内存相关。当系统可用物理内存不足时,它可能会重新调整某些页面的用途,必要时将其内容保存到磁盘(如果它们包含只读数据/代码,则不保存)。

关于process - 具体来说,将进程分成页面是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14918870/

相关文章:

.net - 将对象从一个进程传递到另一个进程

linux - CPU使用率: is there any events fired when overall system cpu usage changes

c - 生成任意数量的子进程?

c++ - 从析构函数调用虚函数

c++ - 抽象对象不能声明

multithreading - pthread mutex (un)locking over different threads

java - 如何从调用同一变量的两个线程中获取相同的值?

unix - 检查可执行文件是否有效

r - R 中的 sys.frame、sys.nframe 等

C++虚方法的虚继承