操作系统调用实验过程记录
实验内容
1、在linux-0.11系统下添加两个系统调用:
sys_iam(const char* name) 和
sys_whoami(char* name, unsigned int size).
2、sys_iam()实现向内核空间写入一段字符串,字符串长度不大于23的功能。
3、sys_whoami()实现从上述的内核空间读出那段字符串到用户空间中的功能。
4、并编写应用程序测试这个加入的系统调用。
实验环境
- 使用实验楼中环境:
- 操作系统原理与实践
实验思路
1、分别按要求编写这2个系统调用
2、仿照sys_write()编写并向内核文件中加入2个系统调用
3、修改对应的Makefile,然后进行内核编译,使其编译通过
4、运行这个编译程序,进入系统,在这个修改的系统中编写测试应用程序,并测试验证现象
实验过程
编写sys_iam()和sys_whoami()系统调用
在linux-0.11/kernel/who.c中编写:
sys_whoami()调用:
修改Makefile
在linux-0.11/kernel/Makefile中修改:
修改系统调用数量宏
在linux-0.11/kernel/system_call.s中修改为74:
修改sys_call_table
在linux-0.11/include/linux/sys.h中添加2个系统调用名字:
编译内核
在linux-0.11目录下make,编译目标文件Image
加载运行目标文件,进入新的系统
在新的系统下添加系统调用索引宏
在linux-0.11/include/unistd.h中加入系统调用索引宏:
在新的系统下编写测试文件iam.c
使用gcc iam.c -o iam 生成可执行那个文件iam
在新的系统下编写测试文件whoami.c
使用gcc whoami.c -o whoami 生成可执行那个文件whoami