上一篇文章中介绍了一个进程执行的过程,分析了在调用子程序时栈的变化过程。本文介绍一下多进程的执行过程,当一个进程需要停下来等待某个条件或者cpu给它分配的时间片用完时需要切换给别的进程,在切换时首先会产生一个中断,然后cpu会执行相应的中断处理操作,比如一个重要的操作就是保护当前进程的栈和cpu寄存器的值,当cpu再次调度时可以恢复上一次状态继续执行下去。
按照mykernel上的步骤安装好程序,执行qemu -kernel arch/x86/boot/bzImage看到如下图:
执行的程序如下:
执行一个进程A 做i++操作,当i%100000时打印i的值,当时钟中断产生时执行中断处理my_timer_handler。我们发现打印的i值是一直在递增的,也就是中断处理执行完后cpu继续调度到A时,i保持了上次调度完成时的值,这是怎样做到的呢,就是中断处理,下面我们通过程序模拟这一过程。
时间: 2024-11-08 18:54:46