OS实验2-2 课后作业2.1 外部中断
第1关:修改版本 1 内核源码,使得每次时钟中断发生时,都在屏幕上输出字符‘t’
本关任务:
解题过程:
1.版本1调试内核准备
同课堂练习2.1
2.修改源码
使用VScode打开1/linux文件夹,获取版本1内核源代码
由于要在时钟中断发生时在屏幕上输出字符,故首先定位时钟中断处理函数timer_interrupt
在VScode中搜索timer_interrupt,找到汇编语言程序
在timer_interrupt函数开头添加输出字符t的汇编代码:
movb $116, %al
int $0x81
这里不在timer_interrupt调用的do_timer函数中输出,是因为此题要求使用int 0x81输出字符t,而do_timer函数是C语言代码
回到命令行中重新编译1/linux,再启动bochs虚拟机即可过关
第2关:修改版本 0 内核
本关任务:
解题过程:
由于此关不使用汇编代码,而采用C代码输出字符,故寻找do_timer函数作为输出字符位置
首先找到do_timer
由于是每过100次中断即输出,故可采用jiffies取余的方式判断
当前进程号可采用函数sys_getpid获取,也可直接使用变量pid
printk函数格式题中已给出