欢迎光临散文网 会员登陆 & 注册

零声Linux内‮源核‬码 2023

2023-06-09 12:49 作者:bili_73767213996  | 我要投稿

系统调用

进程通过系统调用进入和退出内核模式,许多POSIX函数是系统调用的简单封装,如open,close,ictol,write和read等。驱动设备只能在内核模式下执行,应用程序不能直接调用设备驱动程序,而是使用预定义的系统调用间接的访问驱动程序代码。
下面是系统调用read的一个例子:

n = syscall(SYS_read, fd, buffer, length)

Linux提供的系统调用列表由内核版本决定,并且不随时间变化而变化。然而,用于创建系统调用的机制却会因为不同处理器体系结构而不同。系统调用函数是一个用于创建系统调用的汇编代码的封装。命令strace对于追踪系统调用非常有用,因为利用它可以知道当前任务执行的情况。
通常用户代码先将参数压入堆栈或者保存在预定义的寄存器中,然后在使用中断调用系统调用处理器。中断处理器将进程转入到内核模式,并调用适当的系统调用。在内核模式下,它从寄存器中读取参数或使用特定的函数从用户空间复制参数。可移植程序不能直接使用系统调用,而是依赖库为其实现系统调用。系统调用随着操作系统版本变化而变化,库的调用则无需这些变化。


零声Linux内‮源核‬码 2023的评论 (共 条)

分享到微博请遵守国家法律