Linux内核模块编程:深入理解系统调用与模块机制
1. 系统调用底层机制
在操作系统中,系统调用是用户空间程序与内核空间交互的重要途径。在 syscall() 系统调用之下,无论通过 int 0x80 、 sysenter/sysexit 还是 syscall/sysret 等机制将控制权传递给内核,这些都属于内核的内部实现细节,开发者通常无需深入关注。不过,了解这些路径有助于全面理解从库函数调用到系统调用,再到内核系统调用表 sys_call_table 的完整调用流程。
下面是使用 int 0x80 的汇编代码示例:
; int80.s
section .text
global _start
_start:
mov edx,len
mov ecx,msg
mov ebx,1 ; file descriptor (stdout)
mov eax,4 ; system call number (sys_write)
int 0x80 ; call kernel
mov eax,1 ; system call number (sys_exit)
int 0x80 ; ca
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



