int 0x80(寻根究底)---关于内核空间与用户空间切换
来源:互联网 发布:c多线程socket编程 编辑:程序博客网 时间:2024/05/17 06:04
个人对用户空间/内核空间的理解
通过限定应用程序和内核程序使用不同的内存分配函数,将用户空间程序限制在0-3G空间,将内核程序限制在3G~4G空间,这样就实现了用户空间和内核空间的隔离;
通过int 0x80 软中断实现用户空间与内核空间的交互。
--------------------------------------------------------------------------------------------
软中断:
由程序员通过 INT指令触发。cpu把软中断做为陷阱来处理,也叫编程异常,其中int 0x80可以用于执行系统调用,int3则主要用于设置断点(对程序进行调试)。
关于0x80:
0x80为仅有的用户空间可以触发的两个软中断之一,用户可以通过执行int 0x86指令陷入内核,执行相关的系统调用。
-------------------------------------------------------------------------------call_usermodehelper--->call_usermodehelper_fns--->。。。。。。
参考程序:/kernel/sys.c
int orderly_poweroff(bool force);
启动参数:poweroff_cmd:/sbin/poweroff
kernel_execve();----->int 0x80--->execve-->....正常执行
总结:
内核中调用call_usermodehelper的过程其实就是内核中调用execv系统调用的过程。
记得研一的时候,一个老师说理解linux下面的一些东西有多难多难,那时候还不相信,想想现在都多长时间了看到一些东西感觉还是似是而非,不是说不知道哪些东西,从概念上可以说得头头是道,可是理解上还是没有那么透彻,就说kernel_execv,归根到底还是int 0x80,int 0x80 归根到底还是各种描述符表,而各种描述符表的理解最后还要追溯到CPU架构上,即使系统再熟悉,对架构的理解如果是模糊的,一切也只是雾里看花,知道脉络,根基却依旧不牢,想起这些,就得检讨,总知道看书,去学习哪些框架的东西,这终究代替不了实践。
结了!!!!
- int 0x80(寻根究底)---关于内核空间与用户空间切换
- 关于内核空间与用户空间
- 内核空间与用户空间
- 内核空间与用户空间
- 内核空间与用户空间
- 内核空间与用户空间
- 内核空间与用户空间
- 内核空间与用户空间
- 关于linux内核空间与用户空间的理解
- 关于用户空间和内核空间
- 关于用户空间和内核空间
- 关于用户空间和内核空间
- 用户空间与内核空间(模块与应用程序)
- Linux用户空间与内核空间(转)
- Linux用户空间与内核空间 (转)
- Linux用户空间与内核空间(理解高端内存)
- Linux用户空间与内核空间(理解高端内存)
- Linux用户空间与内核空间
- 算法学习 - Dijkstra's Algorithm
- jqGrid与Struts2的结合应用(一) —— 显示基本Grid表格
- 第一个jqGrid的demo
- 电脑除尘
- spring分页汇总
- int 0x80(寻根究底)---关于内核空间与用户空间切换
- android H264(1): openCore简介
- 2011-07-22日志
- 磁盘 IO 性能 调优 多线程 总结
- android (21)
- Android中利用LinearLayout继承实现ImageButton
- keil c51中启动代码详细说明
- APT(Advanced Packaging Tool)
- 网络拓扑结构5-9-1读取数据库并训练预测(实际数值)