免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1358 | 回复: 1

关于内核态的请教 [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
发表于 2015-01-10 14:58 |显示全部楼层
查资料都说,只有中断或系统调用时,会进入系统空间,我非常不理解这句话。

1. 举个例子:
char *p = malloc(64);  // malloc是系统调用,这行需要内核代码做很多事,我能理解
p[0] = 'a';                  // 难道这行就不会进入内核了吗?

假设p的地址是0x123,这个地址是虚拟地址,不是要靠内核才能映射到物理地址吗?就是说这行代码要由内核代码找到0x123对应的内存位置,然后把'a'写上去,不也是进入内核态了吗?

2. 再想个极端的情况,一台电脑只启动内核,没有任何的用户进程,那它不应该一直在内核态吗?这里没有用户程序,也就是没有系统调用,那难道说这里一直在中断吗?

跪请知情人指导。

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
发表于 2015-01-10 16:04 |显示全部楼层
你说那种情况是在发现该虚拟地址没有映射的时候,会发生缺页中断进入内核执行页面映射。
一旦下次反问的时候就不用了。直接通过mmu访问。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP