中断中涉及的主要流程
一个简要的中断流程目录归纳,万一以后遗忘方便回顾(流程的部分详细内容在《CPU篇中断02、03》中有总结)。
- 异常流程:fault、trap、abort和int
- 缺页异常
- 一个主要
- 多个次要
- 多个错误
- NMI
- 系统调用
- int 0x80
- sysenter
- syscall
- 缺页异常
- 中断流程
- IO中断
- 网卡中断
- 磁盘中断
- 时钟中断
- 全局时钟中断
- 局部时钟中断
- timer_interrupt(ISR)-> do_timer_interrupt-> update_process_times-> scheduler_tick:对于一般进程sched_normal,O(1)算法会更新当前进程的时间片,如果为0,则将当前进程的need_resched置一;CFS会根据实际运行的时间按照比例更新当前进程的vruntime,如果大于其预计的运行时间ideal_runtime,则将当前进程的need_resched置一。然后再中断返回或者系统调用返回用户态的时候,再检查当前进程的need_resched标志,如果为1,则调用schedule进行进程调度
- IPI
- reschedule
- invalidate TLB
- call function
- 涉及的软中断流程
- softirqs
- tasklet
- workqueue
- IO中断