首页 > 系统服务 > 详细

《Linux内核分析》MOOC课程 完成一个简单的时间片轮转多道程序内核代码

时间:2015-07-19 19:46:43      阅读:303      评论:0      收藏:0      [点我收藏+]

  上一篇文章中介绍了一个进程执行的过程,分析了在调用子程序时栈的变化过程。本文介绍一下多进程的执行过程,当一个进程需要停下来等待某个条件或者cpu给它分配的时间片用完时需要切换给别的进程,在切换时首先会产生一个中断,然后cpu会执行相应的中断处理操作,比如一个重要的操作就是保护当前进程的栈和cpu寄存器的值,当cpu再次调度时可以恢复上一次状态继续执行下去。

  按照mykernel上的步骤安装好程序,执行qemu -kernel arch/x86/boot/bzImage看到如下图:

   技术分享

   执行的程序如下:

    技术分享

    技术分享

执行一个进程A 做i++操作,当i%100000时打印i的值,当时钟中断产生时执行中断处理my_timer_handler。我们发现打印的i值是一直在递增的,也就是中断处理执行完后cpu继续调度到A时,i保持了上次调度完成时的值,这是怎样做到的呢,就是中断处理,下面我们通过程序模拟这一过程。

   

  

技术分享

《Linux内核分析》MOOC课程 完成一个简单的时间片轮转多道程序内核代码

原文:http://www.cnblogs.com/yanbiao/p/4659149.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!