免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5864 | 回复: 17
打印 上一主题 下一主题

[中断] 关于缺页异常的几个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-02 12:24 |只看该作者 |倒序浏览
1.缺页异常的处理属于中断处理吗?
2.那么在单核的X86处理器上,如果进入缺页异常处理do_page_fault,那么此时CPU会一直执行完这个处理还是中途会切换到其他的进程?
3.若是一直执行直到结束,那么期间如果再次发生缺页如何处理?
4.处理缺页期间会发生中断吗,如果会,那么中断可能由什么产生的呢?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
2 [报告]
发表于 2014-06-03 09:23 |只看该作者
本帖最后由 humjb_1983 于 2014-06-03 16:43 编辑

1、中断和异常有比较大的区别的,比如中断是异步,异常是同步;中断使用中断门,异常使用陷阱门。具体可以google一下。
2、异常使用陷阱门,默认情况下是开中断执行的,所以缺页异常处理过程中,可能被中断,如果没有中断,那么就一直执行了。
3、异常本身不可屏蔽,意味着异常可能嵌套。
4、开中断,意味着异常处理过程中可能被中断,中断的来源就很多了,比如时钟中断。

论坛徽章:
0
3 [报告]
发表于 2014-06-03 10:27 |只看该作者
1.如果在缺页处理中关闭中断的话,那么是不是可以保证CPU一直会执行这个处理知道结束,期间不会再执行其他进程了?
2.如果在缺页处理中,关闭中断的情况下又发生了缺页的话,那系统是不是就死掉了呢?
回复 2# humjb_1983


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
4 [报告]
发表于 2014-06-03 12:30 |只看该作者
cu_philfrank 发表于 2014-06-03 10:27
1.如果在缺页处理中关闭中断的话,那么是不是可以保证CPU一直会执行这个处理知道结束,期间不会再执行其他进 ...

1、是的
2、当然不会,关中断时,如果再来中断,中断会pending,等开中断后处理,这样可实现中断的串行处理。

论坛徽章:
0
5 [报告]
发表于 2014-06-03 13:19 |只看该作者
但是由于发生的是第二次缺页,如果这个pending了,那缺页的问题怎么解决呢?程序就进行不下去了啊
humjb_1983 发表于 2014-06-03 12:30
如果再来中断,中断会pending,等开中断后处理,这样可实现中断的串行处 ...

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
6 [报告]
发表于 2014-06-03 16:35 |只看该作者
cu_philfrank 发表于 2014-06-03 13:19
但是由于发生的是第二次缺页,如果这个pending了,那缺页的问题怎么解决呢?程序就进行不下去了啊

需要明确一下(之前没表达清楚~),异常本身是不可屏蔽的,也就是说关中断对异常来说没有影响(关中断只影响可屏蔽中断),也就是说如果缺页异常过程中,即使关了中断,当再次发生异常时,仍能嵌套。

论坛徽章:
0
7 [报告]
发表于 2014-06-04 14:34 |只看该作者
回复 6# humjb_1983
哦,那如果在异常处理函数中有个变量A,A所在的页是缺页的,那么第一次由于其他的缺页进入缺页处理,然后在处理中遇到A又缺页了,进入异常嵌套,然后又会执行到A这里,还是缺页,这个情况系统会怎么办?


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
8 [报告]
发表于 2014-06-04 17:21 |只看该作者
cu_philfrank 发表于 2014-06-04 14:34
回复 6# humjb_1983
哦,那如果在异常处理函数中有个变量A,A所在的页是缺页的,那么第一次由于其他的缺页 ...

呵呵,正常缺页异常地址只可能在用户态或vmalloc区,所以你说的情况是不会有的。

论坛徽章:
0
9 [报告]
发表于 2014-06-04 17:23 |只看该作者
回复 8# humjb_1983
我人为的修改了内核代码,想通过缺页处理来完成一些事情,而且发生在内核空间下的,正常情况下是没有的。
那这样会出现什么情况?系统宕机?


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
10 [报告]
发表于 2014-06-04 18:38 |只看该作者
cu_philfrank 发表于 2014-06-04 17:23
回复 8# humjb_1983
我人为的修改了内核代码,想通过缺页处理来完成一些事情,而且发生在内核空间下的,正 ...

内核态非vmalloc区发生缺页异常,就oops了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP