免费注册 查看新帖 |

Chinaunix

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

[NetBSD] 用户空间和内核空间具体在代码上是如何实现转换的呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-04 18:10 |只看该作者 |倒序浏览
用户空间的进程通过系统调用和内核交互,用户空间和内核空间具体在代码上是如何实现转换的呢?
谁可以讲讲吗?谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-04-04 18:14 |只看该作者
原帖由 ljoolj 于 2006-4-4 18:10 发表
用户空间的进程通过系统调用和内核交互,用户空间和内核空间具体在代码上是如何实现转换的呢?
谁可以讲讲吗?谢谢!


请参见下面这个链接:

【FreeBSD 5内核源代码分析之系统调用过程】

论坛徽章:
0
3 [报告]
发表于 2006-04-04 18:29 |只看该作者
太感谢了! 给朵花 ------&@

论坛徽章:
0
4 [报告]
发表于 2006-04-05 17:10 |只看该作者
看了文章有一个疑问:
在i386系统中
当用户层的代码调用 系统调用 时候,如 socket
是如何触发int 0x80中断的?
是不是系统调用程序设计规定其中进去遇到的第一个汇编代码就是软中断 int 80 ?

论坛徽章:
0
5 [报告]
发表于 2006-04-06 08:28 |只看该作者
原帖由 ljoolj 于 2006-4-5 17:10 发表
看了文章有一个疑问:
在i386系统中
当用户层的代码调用 系统调用 时候,如 socket
是如何触发int 0x80中断的?
是不是系统调用程序设计规定其中进去遇到的第一个汇编代码就是软中断 int 80 ?



这个过程我没有研究过,无法直接回答你,先去学习ing。。。不过推荐你去看下面这些资料:

先看【Linux内核源代码情景分析】的第三章“中断、异常和系统调用”,其中有对这个过程的详细解释,很多内容都是取决于架构而与具体系统无关的。然后再看【FreeBSD Developers' Handbook】和【FreeBSD Architecture Handbook】中的相关内容,这两篇文档没有系统地讲述这一过程,不过有了前面的基础,就应该能够对FreeBSD的相应过程了解个大概了。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
6 [报告]
发表于 2006-04-06 20:12 |只看该作者
原帖由 ljoolj 于 2006-4-5 17:10 发表
看了文章有一个疑问:
在i386系统中
当用户层的代码调用 系统调用 时候,如 socket
是如何触发int 0x80中断的?
是不是系统调用程序设计规定其中进去遇到的第一个汇编代码就是软中断 int 80 ?


为了理解如何触发int 0x80,不如看看IA32的IDT是如何工作的,自然就比较清楚了
至于规定,我想就算不规定,也必须通过这个接口陷入内核吧。(那和规定有什么区别呢?娃哈哈哈哈)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP