- 论坛徽章:
- 11
|
明确一下:
struct address_space 和paging用的address space应该是两个不同的概念。
linuxfellow 发表于 2011-12-01 11:54 ![]()
怎么是不同概念呢?
address_space 就是所谓地址空间, 无论是 mapping的 file, 还是 mapping 的 swap, 都是backup storage, paging 的时候, 都是通过 adress_space 中的 index 获得需要写到 backup storage 中的哪个 offset, 写方法都是 adress_space 中的函数指针。
所以说 adress_space 就是带有后端存储的可允许 paging out 的页面特有的。
进一步说, 一个页面只有和 adress space 联系起来以后, 才会进入 lru 链表, 才会被内核线程看到从而才有可能被paging out出去; 就算是 malloc出来的用户端内存, 在一开始写到用户页表项的时候, 没有联系adress_space, 也是不可交换的, 等发现内存紧张找到一个进程要page out 它的页面的时候, 也是先将这些页面先加入adress space, 然后才 page out到swap的 |
|