免费注册 查看新帖 |

Chinaunix

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

[内核入门] 系统调用之后,需要从用户栈切换到内核栈吗?why [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-29 15:16 |只看该作者 |倒序浏览
最近在看Linux内核入门的资料,很多资料上都写分用户栈、内核栈、中断栈,对这个内核栈不是很理解,
是不是说一个用户程序系统调用之后,切换到内核态,是不是要从用户栈切换到内核栈?这个时候为什么不能继续使用用户栈呢?
感觉内核栈只是专门针对kernel thread task的栈,跟用户栈类似,只不过是属于内核空间的,而用户进程不需要内核栈,不知道理解是否正确?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-09-29 16:01 |只看该作者
回复 1# Huntsmen
这个时候为什么不能继续使用用户栈呢?


如果使用用户态栈,那么应用程序巧妙的设置堆栈就会把内核panic或者rootkit等。内核不能假设应用程序都是好的,他可能存在bug,所以不能使用用户态栈。

更好的隔离内核态和用户态

论坛徽章:
0
3 [报告]
发表于 2013-09-29 19:33 |只看该作者
进入系统调用之后,控制权已经交到内核了,用户空间没有机会去改写用户栈了吧!
只有可能在系统调用之前,app把自己的栈写爆,然后到内核态时,如果内核接着使用用户栈,栈就会溢出,会导致内核panic或者rootkit,是这么理解吗

如果不考虑内核态和用户态的隔离等其他一些因素,从系统能够work的角度来看,是不是在内核态用用户栈,是可以工作的

论坛徽章:
0
4 [报告]
发表于 2013-09-29 20:51 来自手机 |只看该作者
主要问题就是系统安全和健壮性考虑,用户栈处于用户空间,内核栈处于内核空间,权限不一样。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
5 [报告]
发表于 2013-09-30 08:35 |只看该作者
回复 3# Huntsmen
如果不考虑内核态和用户态的隔离等其他一些因素,从系统能够work的角度来看,是不是在内核态用用户栈,是可以工作的


可以工作的。但安全隔离是目前操作系统的基本组成部分了,所以没有这样设计的,除了一些小的工控系统。

   

论坛徽章:
0
6 [报告]
发表于 2013-09-30 14:48 |只看该作者
肯定是需要的,主要是内核和用户态的权限级别不一样,直接使用用户态的堆栈不方便,也不安全。回复 1# Huntsmen


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP