系统调用程序在linux上实际发生了什么?

灵感来自于这个问题

How can I force GDB to disassemble?

并与此相关

What is INT 21h?

在linux下如何实际发生系统调用?执行调用时会发生什么,直到实际的内核程序被调用?

解决方法

假设我们在讨论x86:

> ID of the system call存入EAX寄存器
>系统调用所需的任何参数都存入locations dictated by the system call.例如,一些系统调用期望他们的参数驻留在EBX寄存器中.其他人可能希望他们的论据坐在堆栈的顶部.
>调用INT 0x80中断.
> Linux内核为EAX寄存器中的ID标识的系统调用服务,将任何结果存入预定位置.
调用代码使用任何结果.

我可能有点生锈了,这是几年了

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。