码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-07-19 19:46:50      阅读:153      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!