【 在 bigsen 的大作中提到: 】
: 什么情况下会进行 paging in/ paging out切换来着
看操作系统的调度策略吧,反正所有现代通用CPU(x86、ARM、MIPS、Power等等)都在硬件上支持,什么时候使用该功能换出到swap里就看操作系统的决策了;至于换入——程序(含OS)需要读取的内容不在物理内存里,也就是发生“未命中错误”,就必须去换入,有专门的CPU中断代号对应这种情况,然后根据调度策略的不同,也可能顺带进行附近部分内容的预取。
另外需要特别提一下的是,你看我说换入的时候并没有说从swap里换入,因为现代操作系统的可执行文件尤其是动态链接库部分基本都支持按需读取,所以paging in的内容并不一定是之前被paging out到swap上的内容,有可能它之前根本就没被加载到内存里面过,在需要时直接从可执行文件或者动态链接库文件中paging in,而不一定是从swap。
标准的x86页面大小4KB,但是一般操作系统换入换出的都是几个甚至更多个4KB,称为一簇
为了向前兼容,x86-64页面大小通常也是4KB,是否支持别的大小我不清楚
32位时代,x86还曾经有一种特殊的方式即使用更大的页面(比如4MB每页),来支持超过2^32字节内存空间,称为PSE技术
ARMv7(ARM32)页面大小4KB
ARMv8(ARM64)可选三种大小,4KB、16KB、64KB
--
修改:marion FROM 223.104.213.*
FROM 223.104.213.*