一、相关知识
1.给menuOS增加命令的方法:
rm -rf menu //强制删除当前menu目录
git clone https://github.com/mengning/menu.git //重新克隆一个新版本的menu
cd menu //切换目录
make rootfs //
2.使用gdb跟踪调试内核的方法:
cd …//返回上一级目录
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s //利用该命令启动内核
target remote:1234 //建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
break start_kernel //断点的设置,注意寻找对应的系统调用函数名字,例如time命令对应sys_time
二、实验过程
1.启动内核进入menu程序

2.进入menu修改test.c文件

3.增加子函数rename()和rename_asm()


4.修改main函数

5.使用gdb跟踪系统调用内核函数sys_rename

6.make rootfs编译,重启menu,已添加rename,rename_asm功能

三、流程图

总结
系统调用过程主要包括以下几个步骤:
1.用户态请求:应用程序通过系统调用接口发出请求。
2.陷入内核态:通过 int 指令或 syscall 指令,陷入内核态。
3.保存上下文:保存当前CPU的寄存器状态,以便以后恢复。
4.系统调用处理:内核根据系统调用号查找对应的处理函数,并执行相应的内核代码。
5.返回用户态:通过 iret 指令恢复之前保存的寄存器状态,返回用户态继续执行。
756

被折叠的 条评论
为什么被折叠?



