关于struct page所在队列的问题
时间:2009-08-11
来源:互联网
struct page的几个与队列指针:
struct list_head list;
struct address_space *mapping;
struct page *next_hash;
struct page **pprev_hash
struct list_head lru;
各有什么用?他们根据page的状态各自挂入哪个队列?
内核2.4.0vmscan.c的代码中:
int refill_inactive_scan(unsigned int priority, int oneshot)
{
struct list_head * page_lru;
struct page * page;
int maxscan, page_active = 0;
int ret = 0;
/* Take the lock while messing with the list... */
spin_lock(&pagemap_lru_lock);
maxscan = nr_active_pages >> priority;
while (maxscan-- > 0 && (page_lru = active_list.prev) != &active_list) {
page = list_entry(page_lru, struct page, lru);
/* Wrong page on list?! (list corruption, should not happen) */
if (!PageActive(page)) {
printk("VM: refill_inactive, wrong page on list.\n");
list_del(page_lru); //将page从活动队列中删除
nr_active_pages--; //活动页面数--
continue;
}
在最后这个if结构中将page结构从活动队列中删除了,但是既没有挂入脏队列,也没有挂入到干净队列,也没有放入空闲区中。这样一个这一个页面对应的内存在内核范围内不就永远的丢失了么?
拜谢
struct list_head list;
struct address_space *mapping;
struct page *next_hash;
struct page **pprev_hash
struct list_head lru;
各有什么用?他们根据page的状态各自挂入哪个队列?
内核2.4.0vmscan.c的代码中:
int refill_inactive_scan(unsigned int priority, int oneshot)
{
struct list_head * page_lru;
struct page * page;
int maxscan, page_active = 0;
int ret = 0;
/* Take the lock while messing with the list... */
spin_lock(&pagemap_lru_lock);
maxscan = nr_active_pages >> priority;
while (maxscan-- > 0 && (page_lru = active_list.prev) != &active_list) {
page = list_entry(page_lru, struct page, lru);
/* Wrong page on list?! (list corruption, should not happen) */
if (!PageActive(page)) {
printk("VM: refill_inactive, wrong page on list.\n");
list_del(page_lru); //将page从活动队列中删除
nr_active_pages--; //活动页面数--
continue;
}
在最后这个if结构中将page结构从活动队列中删除了,但是既没有挂入脏队列,也没有挂入到干净队列,也没有放入空闲区中。这样一个这一个页面对应的内存在内核范围内不就永远的丢失了么?
拜谢
作者: new_new_one 发布时间: 2009-08-11
对于第一个问题,可以看毛德操的书,
第二个问题,if里面的表示这个page是有问题的,因为在活动队列里,但是状态又不是active的,一定是哪里出了问题,所以就直接删掉了
第二个问题,if里面的表示这个page是有问题的,因为在活动队列里,但是状态又不是active的,一定是哪里出了问题,所以就直接删掉了
作者: blizz 发布时间: 2009-08-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28