20242809《Linux内核原理与分析》第六周作业

一、相关知识

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 指令恢复之前保存的寄存器状态,返回用户态继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值