一、系统调用实验:
1.实验的相关知识准备:
(1)系统调用的三层皮:xyz()(API)、system_call(所有系统调用的入口) 、 sys_xyz()(中断服务程序)
(2)API是程序员在用户空间下可以直接使用的函数接口,它提供了一套封装例程,将系统调用在用户空间包装后供用户编程使用。涉及到与内核空间进行交互的API会封装系统调用,而不涉及与内核进行交互的API不会封装系统调用。
(3)系统调用是用户进入内核的接口,并非内核函数。用户程序通过某个系统调用进入内核后,会接着去执行这个系统调用对应的内核函数。这个内核函数 sys_xyz() 称为系统调用的服务例程。
(4)系统调用号将 xyz() 与 sys_xyz() 关联起,系统调用号由 eax 寄存器传递。
2.系统调用的两种实现方法:
本实验我选择的是系统调用号为 38 的 sys_rename(),功能实现设计为将hello.c 文件重新命名 newhello.c
(1)库函数API实现:
运行结果如下: