操作系统详解:从系统调用到安全机制
1. 系统调用
系统调用是用户模式代码请求内核模式服务的机制。CPU 提供了专门的指令来方便进行系统调用,不同架构的处理器使用不同的指令:
- ARM 处理器使用 SVC 指令(以前称为 SWI),也被称为管理调用。
- x86 处理器可使用 SYSCALL 和 SYSENTER 指令。
Linux 和 Windows 都实现了大量的系统调用,每个调用都有唯一的编号。例如,在基于 ARM 的 Linux 系统中,写入文件的 write 系统调用编号为 4。进行系统调用时,程序需要按以下步骤操作:
1. 将所需的系统调用编号加载到特定的处理器寄存器中。
2. 将任何额外的参数放入其他特定寄存器。
3. 执行系统调用指令。
虽然软件开发人员可以直接用机器代码或汇编语言进行系统调用,但在大多数情况下,操作系统和高级编程语言通过操作系统 API 或语言的标准库,为程序员提供了自然的系统调用方式。程序员编写代码执行操作时,可能甚至没有意识到背后正在进行系统调用。
2. API 与系统调用的区别
操作系统 API 描述了应用程序与操作系统交互的方式,而系统调用定义了用户模式代码请求内核模式服务的机制,二者相关但并不等同。有些 API 函数会进行系统调用,而有些则不需要,具体取决于操作系统:
2.1 Linux
如果将 Linux 定义限制在内核,那么 Linux API 实际上是使用 Linux 系统调用的规范,因为系统调用是与内核进行编程交互的接口。但基于 Linux 的操作系统不仅仅只有
超级会员免费看
订阅专栏 解锁全文

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



