0


头歌操作系统 课堂练习3.1:进程的描述与状态 答案

第1关:任务寄存器(TR)的分析

编程要求

根据相关知识,回答问题:(将答案填写在/data/workspace/myshixun/第一关.txt中)

  1. 1 号进程的任务状态段(TSS)的地址是多少?1 号进程的核心栈栈底的位置是多少?

  2. 1 号进程运行时,任务寄存器(TR)的值是多少?它指向的任务状态段描述符的值是多少?该描述符里记录的任务状态段起始地址是多少?

先配置版本内核1

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
./mygdb

在gdb调试器:

b task1
c
p *current

p/x current->tss
p &current->tss
quit

启动dbg调试器:

./rundbg

在dbg调试器中输入:

b 0x7985
c
sreg
x/14wx 0x5cc0

第2关:1 号进程的状态变化

编程要求

根据相关知识,回答问题:(将答案填写在/data/workspace/myshixun/第二关.txt中)1 号进程第一次由睡眠态变为就绪态时:

  • 系统处于几号进程的上下文(或者说,当前进程是几号进程)?

  • 内核的函数调用栈中的底层函数是什么?内核处于哪种控制流(选择:系统调用、中断、异常)?

  • 后续回到用户态时,恢复点的位置是什么?以前的断点位置是什么?

该版本内核使用与第一关相同的版本1内核,详细环境配置操作请移步本文章第一关~

在gdb调试器中:

b sys_pause if current->pid==1
b sched.c:120 if p->pid ==1
c
display current->state
n
c

p p->pid
p p->state
bt
disable
finish
list

finish
x/3i $eip
si
si

x/28i $eip

b *0x77dd
c
si
disassemble

info registers
quit

标签: linux

本文转载自: https://blog.csdn.net/kercii/article/details/129726595
版权归原作者 蓝莓奶油饺子· 所有, 如有侵权,请联系我们删除。

“头歌操作系统 课堂练习3.1:进程的描述与状态 答案”的评论:

还没有评论