课后作业3.4:进程的切换

第1关:第二次进程切换过程分析

任务描述

本关任务回答问题:

在第二次进程切换时:

1.是从几号进程切换到几号进程?0 号进程和 1 号进程的剩余时间片分别是多少?

2.在(ljmp)切换前,寄存器对 CS:EIP 的值是多少?1 号进程的 TSS 中的字段对 cs:eip 的值是多少?0 号进程的 TSS 中的字段对 cs:eip 的值是多少?

3.在(ljmp)切换后,寄存器对 CS:EIP 的值是多少?其上一条指令的地址是多少?1 号进程的 TSS 中的字段对 cs:eip 的值是多少?0 号进程的 TSS 中的字段对 cs:eip 的值是多少?

4. 0 号进程是在执行哪一条指令时首次切换到 1 号进程的?当 0 号进程后来恢复运行时,是从哪一条指令开始执行的?

实验准备

本关卡使用版本 1 内核,使用 gdb 调试分析。

代码及答案

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,新建一个终端,输入以下内容

//在另一个终端里切换到目录~/os/linux-0.11-lab
cd os/linux/0.11-lab
./mygdb

2.创建断点并跟踪到switch to语句

反汇编找到指令

再跟踪到该指令

上图可以看到0号进程和1号进程的剩余时间片。

下面查看在(ljmp)切换前,0号进程和1号进程对TSS的值( cs:eip 和 ss:esp

用si单步执行ljmp指令切换进程,并查看此刻寄存器 CS:EIP 和 SS:ESP 的值

(这里简写输入为“info reg”也可以)

在(ljmp)切换后,进程对TSS的值:

3.填写txt,准备测评

(gdb 调试过程中输入单词请一次输入正确,如果字母输入错误请重新输入整条命令,否则会影响评测结果!!!) 通过 gdb 调试查找答案,将第三关的答案填写在/data/workspace/myshixun/第三关.txt中。

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值