系统调用过程
来源:互联网 发布:周鸿祎谈网络战争 编辑:程序博客网 时间:2024/06/03 16:54
系统调用:
每个系统调用都通过lib库体现。每一个系统调用在lib库中一般是一个宏syscallX(),X是具体某个调用的数字参数。
有的系统调用更复杂,因为它们有可变 的参数列表,但它们仍用一样的入口指针。
当syscall()被调用后,并没有任何的系统代码被执行,直到syscall()调用了int 0x80 ,中断0x80 把调用
(控制)传给核心入口地址中的_system_call(),这个入口地址对任何系统调用都是一样的。 _System_call()
负责保护所有的寄存器,并检查系统调用是否合法,如果合法那么根据从_sys_call_table中
找出的偏移量,把控制权转给真正的系统。
system_call函数详细过程:
(当用户调用INT 0x80而进入system_call函数后,首先检查用来存放系统调用编号的eax的值是否超出IDT表的
项数NR_syscalls(NR_syscalls是在“/include/linux/sys.h”文件中定义的宏,其值为256,表示80x86微机上
最多可容纳的系统调用个数)。如没有超出的话,就根据eax的值从系统调用表(sys_call_table)中得到对
应的系统调用入口,并通过call 指令转入各个具体函数(sys_*)的处理过程。)
系统调用完成后,_system_call() 还要负责调用_ret_from_sys_call()来断后。_Ret_from_sys_call()检
查是否有必要重新调度,如果有的话,调用他。
- 系统调用与过程调用
- 系统调用过程分析
- 系统调用过程分析
- Linux系统调用过程
- Linux系统调用过程
- 汇编语言系统调用过程
- 系统调用过程分析
- 系统调用的过程
- Linux 系统调用过程
- 系统调用执行过程
- 系统调用过程详解
- 系统调用过程
- 系统调用过程
- fork系统调用过程
- 系统调用过程
- 系统调用实现过程
- 系统调用的初始化过程与系统调用执行过程
- SYSENTER系统服务调用过程
- C++单例模式
- 交换变量
- 完整版文本框即时输入数据监听并下拉显示匹配数据
- hdu 4738 Caocao's Bridges 有重边求割边模板
- Java程序员书籍
- 系统调用过程
- 显示凭证-销售凭证流 / 相关索引表
- SDK : error 1260
- 【Shiro】概述
- HTML5中video和audio所支持的格式
- mysql数据库数据表的相关操作
- HashSet HashTable HashMap的区别
- AndroidStudio打包jar包
- epoll