第1关:第一次由时钟中断引发的进程调度
任务描述
本关任务回答问题:
第一次由时钟中断引发进程调度时:
1.当时 bochs 虚拟机输出的 0/1 字符串是什么?(忽略空格)
2.该次中断是第几次时钟中断?当时处于几号进程的上下文? 该进程的剩余时间片是多少?
3.1 号进程当时处于什么状态?1 号进程控制块的 alarm 成员的值是多少?该定时器截止时间到了吗?
相关知识
为了完成本关任务,你需要掌握:
1.如何跟踪到由时钟中断引发的进程调度;
2.如何查看进程的剩余时间片;
3.如何查看 1 号进程的信息;
4.进程控制块中的 alarm 成员的作用是什么?
实验准备
本关卡使用版本 1 内核进行分析,内核文件存放在/data/workspace/myshixun/exp1中,使用 gdb 进行调试。
如何跟踪到由时钟中断引发的进程调度
时钟中断处理程序 timer_interrupt 会调用 C 函数 do_timer ,后者有可能进行进程调度,具体条件是:当前进程的时间片已经用完且中断发生时系统处于用户态
编程要求
根据相关知识,修改版本 1 内核回答问题