操作系统真象还原第七章

本文详细探讨了操作系统的中断概念,包括中断的分类、中断处理程序的上下半部、8259A 可编程中断控制器及其编程,以及8253可编程计数器/定时器的工作方式。中断是操作系统响应外部和内部事件的关键机制,通过中断描述符表进行中断处理,并通过8259A管理外部中断。
摘要由CSDN通过智能技术生成

7.1 中断是什么,为什么要有中断

在 Linux 中文件 “/proc/进程pid/stat” 第一行的第 39 个字段是 “processor id”,它表示进程本次执行时最后所在的 CPU 编号。还可以用命令 ps -eo pid, args, psr | grep <pid>

7.2 操作系统是中断驱动的

7.3 中断分类

把中断按事件来源分类,来自 CPU 外部的中断就称为外部中断,来自 CPU 内部的中断称为内部中断。

外部中断按是否导致宕机来划分,可分为可屏蔽中断和不可屏蔽中断两种。

内部中断按是否正常来划分,可分为软中断和异常。

7.3.1 外部中断

外部中断的中断源是硬件。

外部硬件的中断通过两根信号线通知 CPU 的,分别是 INTR(INTeRrupt)和NMI(Non Maskable Interrupt)。

在这里插入图片描述

可屏蔽中断通过 INTR 引脚进入 CPU,外部设备如硬盘、网卡等发出的中断都是可屏蔽中断。

中断上半部和下半部:

操作系统是中断驱动的,中断发生后会执行相应的中断处理程序,我们希望 CPU 中断响应的时间越短越好,这样便能响应更多设备的中断。于是,把中断处理程序分为上半部和下半部两部分,把中断处理程序中需要立即执行的部分划分到上半部,完成中断应答或硬件复位等重要紧迫工作。中断处理程序中不紧急的部分则被推迟到下半部中去完成。上半部是在关中断的情况下执行。

中断发起时,相应的中断向量号通过 NMI 或 INTR 引脚被传入 CPU,中断向量号是中断向量表或中断描述符表里中断项的下标,CPU 根据此中断向量号在中断向量表或中断描述符表中检索对应的中断处理程序并去执行。

不可屏蔽中断的中断向量号为 2。

7.3.2 内部中断

内部中断可分为软中断和异常。

软中断就是由硬件主动发起的中断,因为它来自于软件,所以称之为软中断。

发起中断的指令:

  • int 8位立即数。
  • int3。调试断点指令,其所触发的中断向量号是 3。我们用 gdb 或 bochs 调试程序时,实际上就是调试器 fork 了一个子进程,用于执行被调试的程序。调试器中经常要设置断点,其原理就是父进程修改了子进程的指令,将其用 int3 指令替换,从而子进程调用 int3 触发中断。
  • into。中断溢出指令,中断向量号是 4。
  • bound。检查数组索引越界指令&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值