课堂练习2.2:中断/异常的处理过程

第1关:除零异常分析

输入命令

cp /data/workspace/myshixun/exp1/1.1.tgz ~/os
cd ~/os/linux-0.11-lab
tar -zxvf ../1.1.tgz 1.1
rm -rf cur
ln -s 1.1 cur
cd 1.1/linux
make

打开另一个终端

cd ~/os/linux-0.11-lab
./rungdb

在原来的终端输入

cd ../..
./mygdb

调试gdb输入

b main.c:147
c
x/6i $eip
si
si
si
info registers
si
info registers

调试后的终端图片

最后记得kill退出gdb。防止影响下一关

1.在函数main 的语句“jiffies =jiffies/0;”所对应的汇编指令片段中,有一个idiv指令,此指令的地址是多少?(0x0000690e)
2.在该idiv指令执行之前,当前指令位置(CS:EIP)和栈位置(SS:ESP)分别是多少?(0xf:0x690e)和(0x17:0x25760)
3.使用si 命令执行了该指令后,新指令位置和栈位置分别是多少?(0x8:0x814b)和(0x10:0x1fa2c)
4.此时栈中保存的恢复点位置和用户栈位置分别是多少?(0xf:0x690e)和(0x17:0x25760)

第2关:int指令分析

环境准备

cp /data/workspace/myshixun/exp2/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

 进入gdb调试输入(gdb调试看上一关)

b task1
c
x/5i $eip
si
x/5i $eip
info registers
si
info registers
x/5wx $esp

 

第3关:iret指令分析

第二关的环境下,调试gdb,输入

b task1
c
x/5i $eip
si
x/5i $eip
info registers
si

bt
disas
b *0x795e
c
x/5i $eip
info registers
x/5wx $esp
si
info registers

 

 

### 关于头歌操作系统 2.2中断异常处理机制 在讨论头歌操作系统 2.2 中的中断异常处理机制时,可以从以下几个方面展开分析: #### 1. **硬件与软件协同工作** 中断异常的处理不仅依赖硬件的支持,还需要软件层面的配合。当发生中断异常事件时,硬件会暂停当前正在执行的任务并跳转到相应的处理程序入口地址[^2]。随后,操作系统接管控制权,在内核模式下完成具体的处理逻辑。 #### 2. **保存现场** 一旦检测到中断异常,首要任务是保存处理器的状态信息以便后续恢复。这通常包括寄存器的内容以及堆栈指针等重要数据结构[^1]。通过这一过程可以确保即使发生了错误或其他意外情况,系统仍能够回到之前的工作状态继续正常运作而不会丢失任何未完成的数据计算结果。 #### 3. **转入内核态** 为了提供更高级别的功能和服务给用户空间的应用程序使用,每当发起一次系统调用请求就会触发类似的转换动作——即由较低特权级别的用户态切换至较高权限等级下的核心层运行环境之中去执行特定命令序列直至结束为止再返回原点位置处等待下一个周期的到来再次循环往复如此这般不断重复下去直到整个生命周期完结为止[^3]。 在此期间,所有的资源访问都将受到严格的安全检查以防止非法操作可能带来的潜在威胁损害整体稳定性表现水平下降等问题出现。 #### 4. **执行相应处理程序** 根据发生的具体情况不同(比如外部设备发出的通知还是内部产生的故障),会有专门设计好的对应解决方案被激活来解决问题或者记录日志供以后诊断参考之需所用。如果某个进程引发了不可修复的重大问题,则可能会终止该进程并将受影响区域隔离以免影响其他部分的功能实现效果。 最后一步则是清理临时使用的变量参数等内容之后恢复正常的服务供给链路连接关系图谱展示出来给大家看明白其中奥秘所在之处何方矣! ```c // 示例伪代码表示如何捕获并响应一个简单的除零异常 void handle_divide_by_zero() { printf("Divide by zero exception occurred.\n"); } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值