OS实验2-2 课后作业2.1 外部中断

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函数格式题中已给出

猜你喜欢

转载自blog.csdn.net/weixin_67752743/article/details/128269038