因为多道程序(multiprogramming),现在的系统都执行虚拟内存系统.
内存是难管理的。当系统内核启动,会将内存分成每一小块,每一块叫页,页的大小根据每个系统结构不一样而不同。页面有他的数据结构,内核通过这个来管理内存。当进程产生会被分配到内存页。
按需分页 (Demand paging)和 虚拟内存
初始化内存会把所有内存放到可用列表。当一个程序第一次运行时,监控页面错误(page fault)会产生.这错误会使一个页面调出可用列表,然后装载程序的数据。当这个发生,一个守护程序会监控可用内存页面的列表。当内存页面的列表达到某个值,守护程序会寻找已经占用的内存页,把他偷转回来。当找到可用内存页(一般是程序已经有一段时间没有用到),然后偷转重用,这个叫page-out.
Page-out 会导致这个页面会写到文件到硬盘(swap space)。
参考
(linux内存管理), http://www.dnxxj.com/questions/47573689004a4a/+linux%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86.html