操作系统原理与实践-哈工大 实验楼-实验3(系统调用)

实验地址:https://www.lanqiao.cn/courses/115

主要参考资料:
https://blog.csdn.net/qq_32589509/article/details/76293184?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

https://blog.csdn.net/watson2016/article/details/72230850

https://blog.csdn.net/yuebowhu/article/details/78755728

实验内容

1、添加系统调用号以及系统调用函数头

修改linux-0.11/include/unistd.h文件

实验内容
实验内容

因为在 0.11 环境下编译 C 程序,包含的头文件都在 /usr/include 目录下,后续应用程序需要用到unistd.h文件中的系统调用号以及函数头,

所以将修改后的unistd.h复制到挂载的hdc/use/include中 替换原来的unistd.h文件
挂载命令为:sudo ./mount-hdc

2、进入内核函数

在中断 0x80 发生后,自动调用函数 system_call,所以我们要修改对应的system_call文件

修改linux-0.11/kernel/system_call.s

修改系统总调用数 因为增加了两个 变为74

实验内容

修改include/linux/sys.h

增加实验要求的系统调用,需要在sys_call_table这个函数表中增加两个函数引用

实验内容

3、在内核中实现函数 sys_iam() 和 sys_whoami()。

在linux-0.11/kernel文件下新建文件who.c
实验内容
实验内容

4、修改makefile让我们添加的 kernel/who.c 可以和其它 Linux 代码编译链接到一起

修改linux-0.11/kernel/makefile

实验内容

随后执行make all

实验内容

5、编写应用测试程序

注意,要在挂载的hdc/usr/root中编写
实验内容
具体代码含义:
实验内容

6、运行虚拟机 运行应用程序

运行虚拟机:

实验内容

运行应用程序:

实验内容