免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
发表于 2006-04-04 18:10 |显示全部楼层
用户空间的进程通过系统调用和内核交互,用户空间和内核空间具体在代码上是如何实现转换的呢?
谁可以讲讲吗?谢谢!

论坛徽章:
0
发表于 2006-04-04 18:14 |显示全部楼层
原帖由 ljoolj 于 2006-4-4 18:10 发表
用户空间的进程通过系统调用和内核交互,用户空间和内核空间具体在代码上是如何实现转换的呢?
谁可以讲讲吗?谢谢!


请参见下面这个链接:

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

论坛徽章:
0
发表于 2006-04-04 18:29 |显示全部楼层
太感谢了! 给朵花 ------&@

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

论坛徽章:
0
发表于 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
发表于 2006-04-06 20:12 |显示全部楼层
原帖由 ljoolj 于 2006-4-5 17:10 发表
看了文章有一个疑问:
在i386系统中
当用户层的代码调用 系统调用 时候,如 socket
是如何触发int 0x80中断的?
是不是系统调用程序设计规定其中进去遇到的第一个汇编代码就是软中断 int 80 ?


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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP