36.信号捕捉 穿插中断

张开发
2026/6/10 14:07:21 15 分钟阅读
36.信号捕捉 穿插中断
板书中信号检查就是操作系统看看信号是否收到对应信号被阻塞如果没有就进入信号处理过程内核态操作系统的身份用户调用系统调用时候执行方法是操作系统执行访问数据执行代码计算机处的模式是内核态系统执行用户代码方法while就是用户态执行。如果是忽略那么直接把pending改0返回用户层如果是默认就根据特定信号约定执行默认动作。如果暂停操作系统 在内核找到进程pcb把状态由run设置为s链入特定队列等待醒来继续执行。如果是自定义方法转去用户层执行然后再转去操作系统再转用户。转换去用户态也要切换身份不然出bug,.栈帧会保存当时地址pop寄存器可以去当时的地方继续执行。如果这个地址填的是另一个函数地址那么就可以在这两个函数之间穿插一个另一个函数。这里面的sigreturn就试穿插在中间作用就是回到内核然后返回用户态。whiletrue也会进入内核也是进程就要被调度时间片到了就剥离下来下次重新上操作系统拿下来的就是操纵系统强制介入进入内核态调度时候重新执行被调度就要进入内核。操作系统决定的。硬件中断操作系统要随时响应外部事件进程进入阻塞队列在等scanf怎么知道键盘有数据外设会和cpu特定针脚链接当外设按回车外设就向特定cpu发起硬件中断。 线路可以连不以拷贝数据为目的主要是传递信息进行信号沟通。触发高低电平告诉cpu我好了通过中断控制器发送信号给cpu 外设告诉中断中断控制器我好了中断控制器内部形成一个中断号想象成针脚号。寄存器在外设也有看板书右边磁盘那存命令地址数据。把中断号那当成寄存器通过这个发给cpu特定针脚、cpu知道有个好了然后通过这个寄存器就知道哪个好了。硬件提供通知软件知道怎么执行中断向量表就是函数指针数组通过中断号访问数组把这个方法给cpu,当中断来了cpu要把当前上下文保存起来中断处理完再恢复。操作系统一直在暂停计算基在中断向量表中注册进程调度方法计算基硬件引入时钟源以特定频率向中断控制器发中断cpu就会收到就会执行方法操作系统就在硬件时钟驱动下调度。中断不一定是外部设备就绪我注册什么方法就可以定期执行什么方法时钟源放在外部就会和外设竞争中断器就把时钟源集成在cpu内部cpu自己调度。这叫主频中断触发频率。固定频率发中断每调度一次我就知道我时间是多长count10就是分配时间片。每个中断号代表未来要执行的服务中断向量表在操作系统启动时候就被维护的然后操作系统进入pause然后由硬件驱动。标志寄存器知道溢出操作系统自己生成中断号也来执行中断处理异常处理。物理地址就找不到 缺页终端也属于中断的一种有对应方法。这种由软件触发的叫软中断。这个是软件导致硬件先出错了由硬件触发中断这是被动。也有让软件主动触发中断行为。C 代码编译成二进制就是指令集系统内还有int system也是指令集80就是编号int 80就能触发一次中断用户执行0x80软中断此时执行方法获取系统调用号执行方法。用户层面,移动到寄存器调用0x80,触发软中断内核执行对应方法取寄存器执行方法。系统调用过程在glibc直接封装open fork内部只需要mov系统调用号然后system call内核层直接执行注册的中断执行方法。所有语言都和C语言有关系统调用需要glibc。在操作系统的内核区三到4 gb的映射区那么它就会存在一个叫做这就是一个系统调用 同学们所以未来我在我的代码区啊我将来呢直接move把某一个比如说系统调用号move到ex然后system call那么我们的整个进程就会自然那么陷入到内核当中为什么陷入内核了因为cpu就会被触发中断当前你的进程运行就被暂停下来了。 好为什么暂停下来了因为有cpu现场保护它会把cpu内部的计算机给我们保护起来然后呢就陷入内核了为什么陷入内核了因为它要开始执行我们cpu触发的中断所对应的中所对应的中断处理方法了中断处理方法本质就属于啊我们对应的操作系统陷入内核他直接在自己的地址空间上跳转到内核区执行完毕再由内核区返回。课堂板书/20250311_中断.png · whb-helloworld/113 - 码云 - 开源中国

更多文章