操作系统day1:中断

这篇博客详细介绍了操作系统的中断处理过程,包括中断的进入、保存现场、转至处理程序及恢复现场的步骤。中断处理涉及PC、PS寄存器的保存与恢复,中断向量表的使用,以及核心态和用户态的切换。在中断处理结束后,CPU会执行特定程序以恢复用户态或进行进程调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PC:程序计数器,指向马上要执行的那一条指令

中断号:系统分配给每个中断源的代号,以便识别和处理
断点:检测到中断时,处理机刚执行完的那条指令地址
恢复点断点的逻辑后续指令地址
现场信息:中断那一刻确保被中断程序能继续运行的有关信息,如PC,通用寄存器,其他特殊寄存器等

PS:处理机状态字,寄存处理机运行状态的寄存器
核心态:允许特权指令执行的状态,可访问系统空间。内核程序在此态运行
用户态:一般程序所运行的状态,只可访问用户空间

中断向量:一组存放程序入口地址和程序运行所需PS的内存单元

在这里插入图片描述
1.中断,异常(陷入)进入
1)硬件自动将当前PC,PS存入暂存寄存器.
2)中断/异常发生,用中断号/异常号作下标,查中断向量表,从指定的中断向量单元中取出新PC,PS内容装入 PC,PS寄存器,从而转到相应处理程序
3)将原PC,PS保存到现场保护区栈

2.保存现场,形成现场区栈帧
1)硬件将原PS,PC压栈,且根据中断类将中断向量表中的新PS,PC值送PS,PC寄存器.
2)中断入口指令将r0压栈后将中断处理程序地址存入r0,转总控程序.
3)由总控程序将新的PS压栈(因其中有陷入号信息).
4)由总控将r1,r6压栈(r6中为栈指针,此时是上一栈帧顶)由总控从新PS低五位截取trap号进入栈.
5)总控按照r0转相应中断(或trap)处理程序时,将返回地址压栈.
6)由各中断(陷入)处理程序先将r5,r4,r3,r2压栈,返回总控时恢复r2,r3,r4,r5.
在这里插入图片描述
3.转相应中断/异常(陷入)处理程序
总控程序直接根据r0中的地址(已存放好中断程序的入口地址)转向中断(陷入)处理子程序。转向子程序时,将返回地址压栈(转子指令自动压栈)

中断处理通常是向设备控制器发下一个I/O请求,就绪等该I/O结束的进程。
陷入处理即操作系统系统调用处理。
指令出错时一般是做进程结束处理。

4.恢复现场
问题:中断处理完成后,回到用户态之前CPU要先去运行什么程序?
中断处理完成后,
回退到核心态时:
1)退栈
2)执行rtt指令,该指令自动将栈帧中保存的原PC,PS值装入PC,PS寄存器
回退到用户态时:
1)进程调度
2)退栈
3)执行rtt指令.该指令自动将栈帧中的PC,PS值装入PC,PS寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值