完善内核 — 系统调用的实现
tags: 操作系统, 系统调用@烩面
《操作系统真相还原》学习笔记:用中断门实现系统调用,效仿 Linux 使用 0x80 号中断作为系统调用入口。
实现系统调用
实现步骤
- 用中断门实现系统调用,效仿 Linux 用 0x80 号中断作为系统调用的入口
- 在 IDT 中安装 0x80 号中断对应的描述符,注册系统调用对应的中断处理例程
- 建立系统调用子功能表
syscall_table,利用 eax 寄存器中的子功能号索引相应处理函数 - 用宏实现用户空间系统调用接口
_syscall,最大支持 3 个参数
寄存器传参约定
| 寄存器 | 用途 |
|---|---|
| eax | 子功能号 |
| ebx | 第 1 个参数 |
| ecx | 第 2 个参数 |
| edx | 第 3 个参数 |
宏接口设计
_syscall[0-3] 分别对应 0~3 个参数的系统调用。用户程序通过宏发起系统调用,无需关心底层中断细节。