用代码解释简单的时间片轮转

一、准备:

1、代码:mykernel

2、实验楼的环境:实验楼的虚拟机


二、进入实验楼的虚拟机后,打开LinuxKernel/linux-3.9.4文件夹,输入 qemu -kernel arch/x86/boot/bzImage可运行程序(执行后发现my_start_kernel中的代码和my_timer_handler中的代码交替执行)。为了查看该代码的如何运行的,进入到mykernel文件夹中。主要是这两个文件:myinterrupt.c和mymain.c。

wKioL1UFH2zyE8DUAAdbDE7KGks329.jpg


三、首先用编辑器打开mymain.c文件。内核在运行时,首先会找到my_start_kernel方法作为入口。这里i是自增的,通过if判断来决定多少次后执行代码,我把值改成了5220。那就意味着i每增到5220的倍数时,就会输出这一行文字。

wKiom1UFHsHx4RiOAAM2U7SxAq0049.jpg

四、再用编辑器打开interrupt.c查看代码。这里my_timer_handler代码只有一句输出,它在每次被中断的时候会调用。