第1关:0号进程和1号进程的mynext变量的取值变化

本关任务调试版本 1.3 内核回答问题:

  1. 1 号进程的 output_char 函数调用会执行几次?
  2. 每次调用时,1 号进程和 0 号进程的 mynext 变量的值分别是多少?
第一步:配置1.3内核环境
#  配置1.3内核  每关都需重新配置
cp /data/workspace/myshixun/exp1/1.3.tgz ~/os/
cd ~/os/linux-0.11-lab/
tar -zxvf ../1.3.tgz
rm -rf cur
ln -s 1.3 cur
ls
cd 1.3/linux
make
cd ../..

第二步:开启gdb调试器
./rungdb
第三步:开启另一个终端 在新的终端运行以下指令
cd os/linux-0.11-lab
./mygdb
第四步:执行第三步之后会进入到gdb指令模式 运行以下指令
b 155
b 172
 
commands 2
x/wx 0x402282c
end
 
commands 3
x/wx 0x2282c
end
 
#一直c到结束 不要太快
c
c
c
c
c
# ...

完成以上操作后修改答案文件如下即可提交:

第2关:LDTR 寄存器

本关任务调试版本 1.3 内核回答问题:

  1. 1 号进程(在用户态)运行时,LDTR 寄存器的值是多少?它指向 GDT 中的几号描述符?该段描述符内的段起始地址是多少?指向哪个进程的 ldt 数组?
  2. 0 号进程(在用户态)运行时,LDTR 寄存器的值是多少?它指向 GDT 中的几号描述符?该段描述符内的段起始地址是多少?指向哪个进程的 ldt 数组?

第一步:配置1.3内核环境
#  配置1.3内核  每关都需重新配置
cp /data/workspace/myshixun/exp1/1.3.tgz ~/os/
cd ~/os/linux-0.11-lab/
tar -zxvf ../1.3.tgz
rm -rf cur
ln -s 1.3 cur
ls
cd 1.3/linux
make
cd ../..

第二步:依次运行以下命令
ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.3.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.3.tgz 1.3

rm -rf cur
ln -s 1.3 cur
ls

cd 1.3/linux
make

cd ../..
./rundbg
第三步:运行第二步之后就进入bochs了 然后输入以下命令
b 0x6969
b 0x69d9
c
sreg
c
sreg

完成以上操作后修改答案文件如下即可提交:

第3关:内核代码段和数据段的段基址

本关任务调试版本 1.3 内核回答问题:

  1. 0 号进程执行到 sys_pause 时,默认数据段(CS)和默认数据段(DS)的值分别是多少?其基地址分别是多少?
  2. 1 号进程执行到 sys_pause 时,默认数据段(CS)和默认数据段(DS)的值分别是多少?其基地址分别是多少?
第一步:配置1.3内核环境
#  配置1.3内核  每关都需重新配置
cp /data/workspace/myshixun/exp1/1.3.tgz ~/os/
cd ~/os/linux-0.11-lab/
tar -zxvf ../1.3.tgz
rm -rf cur
ln -s 1.3 cur
ls
cd 1.3/linux
make
cd ../..

第二步:依次运行以下命令
ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.3.tgz ~/os

cd os/linux-0.11-lab
tar -zxvf ../1.3.tgz 1.3

rm -rf cur
ln -s 1.3 cur
ls


cd 1.3/linux
make


cd ../..
./rungdb
第三步:进入一个新的终端 运行以下命令
cd os/linux-0.11-lab
./mygdb 
第四步:第三步结束之后进入gdb 运行以下命令
b sys_pause if current->pid==0
b sys_pause if current->pid==1
c
info reg
p/x gdt

c
info reg

p/x gdt

完成以上操作后修改答案文件如下即可提交:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐