Pie*_*lli 5 memory virtual-memory
大多数字段都是可以理解的,但有人可以向我解释“页面调入”和“页面换入”之间的区别吗?。我很确定交换是将整个过程移入硬盘驱动器上的交换空间,而分页是将某些页面移入交换空间。那么这是否意味着“页面调入”是属于移入主内存的进程部分的页面,而“换入页面”是属于整个进程移入主内存的页面?有人可以在这里说明一下吗?如果您有关于其他领域的其他信息,那也会很棒。我已阅读手册,但没有找到有关此特定选项的命令的有用信息。命令输出示例:
vmstat -s
131072 K total memory
125700 K used memory
59836 K active memory
49268 K inactive memory
5372 K free memory
0 K buffer memory
101984 K swap cache
0 K total swap
0 K used swap
0 K free swap
18594 non-nice user cpu ticks
0 nice user cpu ticks
17990 system cpu ticks
108464145 idle cpu ticks
1121 IO-wait cpu ticks
0 IRQ cpu ticks
0 softirq cpu ticks
0 stolen cpu ticks
123672 pages paged in
486324 pages paged out
0 pages swapped in
0 pages swapped out
0 interrupts
7439516 CPU context switches
1457280256 boot time
131927 forks
Run Code Online (Sandbox Code Playgroud)
这是一个相关文件的输出,可以帮助对比值并更好地理解它,它与上一个同时拍摄:
cat /proc/meminfo
MemTotal: 131072 kB
MemFree: 5404 kB
Cached: 101984 kB
Buffers: 0 kB
Active: 59820 kB
Inactive: 49268 kB
Active(anon): 11532 kB
Inactive(anon): 16920 kB
Active(file): 48288 kB
Inactive(file): 32348 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 28452 kB
Shmem: 21348 kB
Slab: 16544 kB
SReclaimable: 10580 kB
SUnreclaim: 5964 kB
Run Code Online (Sandbox Code Playgroud)
考虑您的程序需要加载到内存中才能运行。您有一定数量的可用地址空间,您的程序需要更多。将此地址空间划分为多个页面。这些被称为虚拟页面。尝试将这些虚拟页面映射到物理内存,并假设您没有足够的物理内存来加载所有页面。您将加载立即需要的页面,而将您现在不需要的页面留在外面。但是当时机成熟时,您将卸载未使用的页面以加载程序运行所需的页面。这就是分页算法所做的,您会看到“页面调入”和“页面调出”。
另一方面,换入或换出处理运行程序所需的整个内存空间。假设您的进程处于等待某些资源可用的状态。没有必要让它一直加载到内存中,直到条件得到满足。同时还有其他进程在等待内存运行。你的整个过程被换出,然后在时机成熟时换回。
考虑到具有大量物理内存的现代系统,对于大多数系统而言,交换已成为过去。
当然,这两种算法(分页和/或交换)都不是那么简单。这只是一万英尺的概览。您可以在网络的其他地方阅读有关这些的更多详细信息。
归档时间: |
|
查看次数: |
1633 次 |
最近记录: |