免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4975 | 回复: 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是如何工作的,自然就比较清楚了
至于规定,我想就算不规定,也必须通过这个接口陷入内核吧。(那和规定有什么区别呢?娃哈哈哈哈)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】2021年5月20日-22日第十三届中国系统架构师大会将在云端进行网络直播。

大会为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。
http://sacc.it168.com/


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP