免费注册 查看新帖 |

Chinaunix

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

代码到底是如何陷入内核空间的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-21 20:33 |只看该作者 |倒序浏览
在学习的过程中,在应用程序中老是遇到像这样的代码
1. status = ioctl(Fd, IOCTL_SET_MODE, &cmd )
2. fopen("/temp/1.txt","r+")

一看到这样的代码,就马上认为是cpu将会进人内核执行.
自己在这个地方有个疑问,望大家指点.
1. 到底是什么机制(原理)使cpu陷入到内核空间执行? 个人觉得是某种中断,可是有找不出根据. 望赐教.

现在只能肤浅的理解到一旦在应用程序中调用了fopen函数后,最终会和操作系统中的一个open函数关联起来.

望高人指点.谢谢.

论坛徽章:
0
2 [报告]
发表于 2008-09-21 20:40 |只看该作者
中断机制,用户空间程序调用libc库,libc库将系统调用号压入eax后调用int 0x80进入内核执行system_call函数(在entry.S中),将寄存器压栈保护后,调用sys_call_table(,%eax,4)执行系统调用,比如打开文件的就调用sys_open。。。。

去google上搜下linux系统调用,再自己看看

http://blog.csdn.net/zhy05/archive/2007/05/20/1617761.aspx
这个链接貌似讲的还行

[ 本帖最后由 LZHWWY 于 2008-9-21 20:56 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-09-21 21:43 |只看该作者

回复 #2 LZHWWY 的帖子

谢谢提示.我先研究下,有问题在问下.

论坛徽章:
0
4 [报告]
发表于 2015-04-13 18:50 |只看该作者
请问我尝试用read函数读取idt的内容,但是errno为1提示没权限,问了别人,说要用内核陷入的方式访问。
请问普通的C文件如何使用内核陷入啊,,搜到的内核陷入说是用中断和系统调用,但是我调用了系统的read函数啊,这样也没有陷入内核吗。。。

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
5 [报告]
发表于 2015-04-14 09:25 |只看该作者
访问核心结构需要写内核模块,而不是普通的用户态程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP