内核地址空间大冒险2:中断与异常

前情回顾

通过系统调用进入内核空间的这个虫洞我终于弄清楚了,可我的冒险还要继续······

详情参见:内核地址空间大冒险:系统调用

1

除0错误

我是一个线程,出生在Linux帝国,今天我的任务是去执行一段人类用C语言编写的代码。

开始的工作很顺利,一共执行了18次系统调用,对于来往于用户空间与内核空间的那个虫洞我已经轻车熟路,再也不是萌新一枚。

后来,我拿到了一段数学运算的代码,来来往往地奔波于内存与寄存器之间,把我累得够呛,热的满头大汗,电脑风扇都转的飞快给我降温。

没多久,一条除法指令摆在我的面前,我瞟了一眼除数居然是0,一种不好的预感涌上心头。没有办法,硬着头皮也得上啊,准备开始执行这个除法。

突然!眼前闪过一道白光,然后变得漆黑,这不是执行系统调用的虫洞吗?可是我并没有执行系统调用啊,怎么跑到这里来了。

我心里开始犯嘀咕,打算等会问问原来的白胡子老头究竟是怎么回事。

不久,光亮开始出现,来到了一个陌生的地方,白雾茫茫。

继续前行,雾逐渐散去,一座大门出现在我面前,我定睛一看,上面写着:0:divide_error

除法错误?我越发的紧张起来,这是到哪里了?

2

中断&异常

“年轻人,欢迎来到内核地址空间”,熟悉的问候语响起,走过来一位白发老头,却不是我在系统调用时见过的那位,拄着一根木棍,挂着一只葫芦,看起来年纪比系统调用那个老头还要大一些。

“敢问老先生,我怎么到这里来了,我并没有执行系统调用啊”,我向老头打听情况。

“这里并不是系统调用的入口,因为你执行了除数为0的除法,触发了异常,所以来到了这里”,老头说完喝了一口葫芦里的酒。

“异常,这又是什么意思?”,今天又听到一个新的名词。

只见老头木棍一挥,大雾完全散去,我这才注意到,这里还有好多大门,它们一个挨着一个,形成了一面门墙。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值