操作系统调用实验过程记录

实验内容

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


实验结果

操作系统调用实验过程记录