二、中断处理程序
1、时钟中断
kernel/clock.c:
PUBLIC void clock_handler(int irq)
{
if (++ticks >= MAX_TICKS)
ticks = 0;
if (p_proc_ready->ticks)
p_proc_ready->ticks--;
if (key_pressed)
inform_int(TASK_TTY);
if (k_reenter != 0) {
return;
}
if (p_proc_ready->ticks > 0) {
return;
}
schedule();
}
调度函数schedule()在kernel/proc.c:
PUBLIC void schedule()
{
struct proc* p;
int greatest_ticks = 0;
/***每个进程都有一个ticks数,每个tick代表一次时钟中断的时间,也就是说每个进程都

本文主要探讨了操作系统的中断处理,包括时钟中断、键盘中断和硬盘中断。时钟中断涉及调度函数schedule();键盘中断处理涉及读取按键并存入缓冲区;硬盘中断则通过发送中断消息给task_hd来告知数据准备就绪。

2729

被折叠的 条评论
为什么被折叠?



