Linux中有关页面存放换出的思维导图,包括在交换区中存放页面、选择被交换出的页面、换入/换出概要描述
树图思维导图提供 页面存放换出思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 页面存放换出思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:042ef9948a0d29e7340c91dac7603da2
页面存放换出思维导图思维导图模板大纲
快速交换区
存放在快速磁盘中的交换区
可以获得比较高的优先级
当查找一个空闲插槽时,要从优先级最高的交换区中开始搜索
如果优先级最高的交换区不止一个,为了避免超负荷地使用其中一个,应该循环选择相同优先级的交换区
策略一
需要时才交换
每当缺页异常发生时,就给它分配一个物理页面
如果发现没有空闲的页面可供分配,就设法将一个或多个内存页面换出到磁盘上,从而腾出一些内存页面来
策略二
系统空闲时交换
与策略一相比较,这是一种积极的交换策略
在系统空闲时,预先换出一些页面而腾出一些内存页面,从而在内存中维持一定的空闲页面供应量
策略三
换出但并不立即释放
当系统挑选出若干页面进行换出时,将相应的页面写入磁盘交换区中
修改相应页表中页表项的内容(把 present 标志位置为 0)
策略四
把页面换出推迟到不能再推迟为止
释放页面
如果一个页面变为空闲可用,就把该页面的 page 结构链入某个页面管理区(Zone)的空闲队列 free_area,同时页面的使用计数 count 减 1
分配页面
调用__alloc_pages()或__get_free_page()从某个空闲队列分配内存页面,并将其页面的使用计数 count 置为 1
活跃状态
已分配的页面处于活跃状态
该页面的数据结构 page 通过其队列头结构 lru 链入活跃页面队列 active_list
在进程地址空间中至少有一个页与该页面之间建立了映射关系
不活跃“脏”状态
处于该状态的页面其 page 结构通过其队列头结构 lru 链入不活跃“脏”页面队列 inactive_dirty_list
原则是任何进程的页面表项不再指向该页面
断开页面的映射,同时把页面的使用计数 count 减 1
将不活跃“脏”页面的内容写入交换区
将该页面的 page 结构从不活跃“脏”页面队列 inactive_dirty_list 转移到不活跃“干净”页面队列,准备被回收
不活跃“干净”状态
页面 page 结构通过其队列头结构 lru 链入某个不活跃“干净”页面队列
每个页面管理区都有个不活跃“干净”页面队列 inactive_clean_list
如果在转入不活跃状态以后的一段时间内,页面又受到访问,则又转入活跃状态并恢复映射
就从“干净”页面队列中回收页面,也就是说或者把页面链入到空闲队列,或者直接进行分配