头歌操作系统 课堂练习4.1:段式内存管理 答案
·
第1关:1 号进程 mynext 变量的逻辑地址与线性地址
编程要求
根据相关知识,修改版本 1.3 内核回答问题: 通过 gdb 调试查找答案,将第一关的答案填写在/data/workspace/myshixun/第一关.txt
中。
-
1 号进程的函数调用 output_char() 所对应的第一条汇编指令的地址是多少?
-
1 号进程的 mynext 变量所在的段地址和段内偏移是多少?该段地址对应到几号描述符?存放在哪个段描述符表中(GDT/LDT)?
-
1 号进程的进程控制块中的 ldt 数组的起始地址是多少?其中 1 号和 2 号描述符里存放的段起始地址分别是多少?
-
1 号进程的 mynext 变量所在的线性地址是多少?
#配置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
cd 1.3/linux
make
cd ../..
开启gdb调试器,在内输入:
b 155
c
p &mynext #查看变量mynext所在的段内偏移
x/6i $eip #反汇编
p/x $ds
p $ds>>3
p/x current->ldt #查看进程的LDT
p ¤t->ldt
第一关文档答案:
第2关:0号进程 mynext 变量的逻辑地址与线性地址
编程要求
根据相关知识,修改版本 1.3 内核回答问题: 通过 gdb 调试查找答案,将第二关的答案填写在/data/workspace/myshixun/第二关.txt
中。
-
0 号进程的函数调用 output_char() 所对应的第一条汇编指令的地址是多少?
-
0 号进程的 mynext 变量所在的段地址和段内偏移是多少?该段地址对应到几号描述符?存放在哪个段描述符表中(GDT/LDT)?
-
0 号进程的进程控制块中的 ldt 数组的起始地址是多少?其中 1 号和 2 号描述符里存放的段起始地址分别是多少?
-
0 号进程的 mynext 变量所在的线性地址是多少?
版本1.3内核环境配置与第一关相同,这里不再赘述。
打开gdb调试器,并键入:
b 172
c
x/6i $eip
p &mynext
p/x current->ldt
p ¤t->ldt
运行效果截图如下:
第二关文档答案:
更多推荐
已为社区贡献8条内容
所有评论(0)