Arm
Arm
Arm
Arm linux
linux
linux
linux 系统调用分析
概述
操作系统为在用户态运行的进程与硬件设备进行交互 , 提供操作系统的系统服务 , 提供了一
组接口。在应用程序和硬件之间 ,内核提供的系统服务 设置一个额外层具有很多优点。
首先,这使得编程更加容易,把用户从学习硬件设备的低级编程特性中解放出来。
其次 , 这极大地提高了系统的安全性 , 因为内核在试图满足某个请求之前在接口级就可以检
查这种请求的正确性。
最后 , 更重要的是这些接口使得程序具有可移植性 , 因为只要内核所提供的一组接口相同
,
那么在任一内核之上就可以正确地编译和执行程序。
ARM Linux 系统利用 SWI 指令来从用户空间进入内核空间 , 还是先让我们了解下这个 SW I
指令吧。 SWI 指令用于产生软件中断,从而实现从用户模式到管理模 式的变换, CPSR 保
存到管理模式的 SPSR ,执行转移到 SWI 向量。在其他模式下也可使用 SWI 指令,处理器
同样地切换到管理模式。指令格式如下:
SWI{cond} immed_24
其中:
immed_24 24 位立即数,值为从 0 —— 16777215 之间的整数。
使用 SWI 指令时,通常使用以下两种方法进行参数传递, SWI 异常处理程序可以提供相关
的服务,这两种方法均是用户软件协定。
1) 指令中 24 位的立即数指定了用户请求的服务类型,参数通过通用寄存器传递。 SWI 异
常处理程序要通过读取引起软件中断的 SWI 指令,以取得 24 为立即数。如: