头歌平台 操作系统课堂练习2.3:系统调用
使用 gdb 调试内核,跟踪到 main 函数入口的方法与之前实训一样。系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?本关卡使用版本 1 内核进行分析,版本 1 内核文件存放在。为了完成本关任务,你需要:跟踪系统调用的发生。此时,系统调用号存放在寄存器 eax 中。
·
第1关:版本1内核执行的前 3 个系统调用
任务描述
分析版本1内核,回答下列问题:
系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?
相关知识
为了完成本关任务,你需要:跟踪系统调用的发生。
环境准备
本关卡使用版本 1 内核进行分析,版本 1 内核文件存放在/data/workspace/myshixun/exp1
文件夹中。
使用 gdb 调试内核,跟踪到 main 函数入口的方法与之前实训一样。
cp /data/workspace/myshixun/exp1/1.tgz ~/os
cd ~/os/linux-0.11-lab
tar -zxvf ../1.tgz
rm -rf cur
ln -s 1 cur
cd 1/linux
make
cd ../..
./rungdb
新建一个终端terminal
cd ~/os/linux-0.11-lab
./mygdb
跟踪系统调用的发生
系统调用的总控函数是 system_call ,只要在这里设断点,即可捕获系统调用的发生,如下图所示:
此时,系统调用号存放在寄存器 eax 中
重复上述操作
b system_call
c
disas
display $eax
disas
b *0x7780
c
x/3i $eip
si
再次重复
b system_call
c
disas
display $eax
disas
b *0x7780
c
x/3i $eip
si
编程要求
根据相关知识,回答问题:(将答案填写在/data/workspace/myshixun/第一关.txt
中)
系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?
更多推荐
已为社区贡献1条内容
所有评论(0)