进程调度:Linux里的进程管理调度,如何调度使用不同的进程占用不同的时间片段,主要在核心函数 scheduler_tick (kernel/sched.c)
硬中断触发:对操作系统来说,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知 OS 已经产生中断。这样,OS 就可以对这个中断进行适当的处理了。不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识。这些中断值通常被称为中断请求线,这里所说的中断就是硬中断,也是我们常说的中断的上半部分。
硬中断的执行:不同的架构在linux上是不同的执行,在x86架构中,源码程序在/arch/x86_64/kernel/irq.c
- asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
- {
- /* high bit used in ret_from_ code */
- unsigned irq = ~regs->orig_rax;
-
- if (unlikely(irq >= NR_IRQS)) {
- printk(KERN_EMERG "%s: cannot handle IRQ %d
",
- __FUNCTION__, irq);
- BUG();
- }
-
- exit_idle();
- irq_enter();
- #ifdef CONFIG_DEBUG_STACKOVERFLOW
- stack_overflow_check(regs);
- #endif
- __do_IRQ(irq, regs);
- irq_exit();
-
- return 1;
- }
其中 __do_IRQ() 是处理不同的中断信号的函数, 而在irq_exit()里所处理的是中断的下半部分,也就是我们常说的软中断。
CentOS 上 关于 SystemTap 安装Linux RAMDisk 源码分析相关资讯 Linux基础教程
- Linux基础教程:对文件打包压缩 (03月08日)
- 基础教程:Linux 新手应该知道的 (09/06/2015 21:17:20)
- Linux基础教程:find 与 xargs (04/05/2015 10:20:11)
| - Linux基础教程:tar 命令使用介绍 (12/03/2015 13:19:47)
- Linux基础教程(1)操作系统基础 (08/15/2015 20:44:01)
- Linux基础教程:从源码安装软件 (04/05/2015 10:14:45)
|
本文评论 查看全部评论 (0)