操作系统原理-实验-linux增加系统调用 下载本文

中国地质大学(武汉)

《操作系统原理》课程实验报告

数据科学与大数据技术专业 班级195182学生姓名钟欢

任课教师康晓军 完成时间2020年3月31日

1

实验一——实现一个linux的系统调用

一、实验目的

1.加深对系统调用的理解,掌握增加与调用系统调用的方法。 2.掌握内核编译方法。

二、实验思路

1.增加新的系统调用:

新增的系统调用名为Hello,其功能是打印输出“This is ZhongHuan ’ s system call ! wo zhong yu cheng gong le !” 2.编译内核:

用编译内核的方法,将其增加进内核源码并编译内核。 3.测试:

在用户控件编写测试程序测试该系统调用。

三、实验步骤

1.系统调用的添加

在Linux中添加新的系统调用,需执行多个步骤才能添加成功: (1)第一步

完成系统调用函数在内核源码目录kernel/sys.c文件中编写待添加的

系统调用函数。该函数的名称应该是新的系统调用名称前面加上sys_标志。新加的系统调用为hello(void),在kernel/sys.c文件中添加源代码:

asmlinkage long sys_hello(void) {

2

printk(\ gong le!\return 1; }

(2)第二步

在系统函数表中表项添加新的系统调用后,需要让Linux内核的其余

部分知晓该程序的存在。在内核源码目录arch/x86/entry/syscalls下修改文件syscall_64.tbl。该文件用来对sys_call_table[]数组实行原始化,数组包含指向内核中每个系统调用的指针。在该文件中的最后一行添加自己的系统调用表项:335 64 hello sys_hello(),这样就在数组中添加了新的内核函数指针。

3