第1關(guān):進(jìn)程創(chuàng)建前后TR寄存器值的分析
編程要求
根據(jù)相關(guān)知識(shí),回答問(wèn)題:(將答案填寫在/data/workspace/myshixun/第一關(guān).txt
中)
- 0 號(hào)進(jìn)程的 fork 系統(tǒng)調(diào)用(main.c:147)中的陷入指令的地址是多少?
- 0 號(hào)進(jìn)程執(zhí)行 fork 系統(tǒng)調(diào)用之前,TR 寄存器的值為多少?
- 0 號(hào)進(jìn)程剛執(zhí)行完 fork 系統(tǒng)調(diào)用時(shí),TR 寄存器的值為多少?
準(zhǔn)備階段
本實(shí)訓(xùn)需要設(shè)置內(nèi)核版本 1 為調(diào)試分析的對(duì)象,用 gdb 調(diào)試內(nèi)核,內(nèi)核版本 1 的壓縮文件存放在/data/workspace/myshixun/exp1
中。
首先先解壓內(nèi)核,敲熟悉的老鐵已經(jīng)形成手指肌肉記憶,秒搞定,還不會(huì)的友友可以跟著來(lái)。
?1.打開(kāi)終端,分別輸入以下指令。
cp /data/workspace/myshixun/exp1/1.tgz ~/os/
cd ~/os/linux-0.11-lab
tar -zxvf ../1.tgz 1
rm -rf cur
ln -s 1 cur
cd 1/linux
make
cd ../..
./rungdb
2.環(huán)境配置完了。打開(kāi)另一個(gè)終端,輸入以下指令。前面一個(gè)不要關(guān)閉。
cd ~/os/linux-0.11-lab
./mygdb
3.接著我們會(huì)進(jìn)入到GDB DEBUGING,如圖所示。
?輸入以下指令:
(gdb)b 145
(gdb)c
(gdb)n
(gdb)x/5i $eip
(gdb)si
(gdb)x/5i $eip
(gdb)quit
y
./rundbg
<bochs>b 0x68e8
<bochs>c
<bochs>sreg
<bochs>n
<bochs>sreg
第2關(guān):1 號(hào)進(jìn)程創(chuàng)建前后的GDT和PCB分析
編程要求
根據(jù)相關(guān)知識(shí),回答問(wèn)題:(將答案填寫在/data/workspace/myshixun/第二關(guān).txt
中)
注:操作過(guò)程中只能出現(xiàn)一個(gè)0x0000690a
。
- 0 號(hào)進(jìn)程的進(jìn)程控制塊的起始地址是多少?0 號(hào)進(jìn)程的 TSS 的地址是多少?
- 在 1 號(hào)進(jìn)程創(chuàng)建前,task 數(shù)組的前 2 項(xiàng)是多少?GDT 的 4~7 號(hào)描述符(64位)是多少?其中存儲(chǔ)的段起始地址分別是多少?
- 在 1 號(hào)進(jìn)程創(chuàng)建后,task 數(shù)組的前 2 項(xiàng)是多少?GDT 的 4~7 號(hào)描述符(64位)是多少?其中存儲(chǔ)的段起始地址分別是多少?
- 1 號(hào)進(jìn)程的進(jìn)程控制塊的起始地址是多少?1 號(hào)進(jìn)程的 TSS 的地址是多少?1 號(hào)進(jìn)程執(zhí)行的第一條語(yǔ)句的地址是多少?
- 1 號(hào)進(jìn)程的核心棧棧底的位置是多少?該位置距離 1 號(hào)進(jìn)程的進(jìn)程控制塊的起始位置有多遠(yuǎn)(字節(jié)數(shù))?
準(zhǔn)備階段
本實(shí)訓(xùn)需要設(shè)置內(nèi)核版本 1 為調(diào)試分析的對(duì)象,用 gdb 調(diào)試內(nèi)核,內(nèi)核版本 1 的壓縮文件存放在/data/workspace/myshixun/exp1
中。
內(nèi)核環(huán)境配置不再說(shuō),可以看前面的。第一關(guān)過(guò)的到了第二關(guān)可以不用再解壓和修改內(nèi)核,如果重置環(huán)境則要。
打開(kāi)一個(gè)終端
cd ~/os/linux-0.11-lab
./rungdb
再打開(kāi)一個(gè)終端,前一個(gè)不要關(guān)閉.
cd ~/os/linux-0.11-lab
./mygdb
(gdb)b 145
(gdb)c
(gdb)n
(gdb)x/5i $eip
(gdb)si
(gdb)p &task[0]->tss
(gdb)ni
(gdb)p task
(gdb)x/20wx gdt
(gdb)p &task[1]->tss
(gdb)p/x task[1]->tss
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-425769.html
課堂練習(xí)3.2:進(jìn)程的創(chuàng)建的兩關(guān)就算全部搞定了,如果對(duì)這些指令運(yùn)行原理感興趣的話,或者是說(shuō)答案怎么從這些指令中找出,可以跟我交流噢!OK了,以上是本次文章的全部?jī)?nèi)容,stay tuned!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-425769.html
到了這里,關(guān)于頭歌操作系統(tǒng)-課堂練習(xí)3.2:進(jìn)程的創(chuàng)建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!