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

进程调度时机和跟踪分析进程调度与进程切换的过程

时间:2016-04-17 20:41:48      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

1理解进程调度时机跟踪分析进程调度与进程切换的过程:

      1.    schedule()调用发生在中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();

      2. 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;
      3. 用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度。
    1. 分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解;推荐在实验楼Linux虚拟机环境下完成实验。

       

    2. switch_to中prev指向当前进程,next指向被调度的进程。进程上下文的切换机制:

      • 程上下文包含了进程执行需要的所有信息

        • 用户地址空间: 包括程序代码,数据,用户堆栈等

        • 控制信息 :进程描述符,内核堆栈等

        • 硬件上下文(注意中断也要保存硬件上下文只是保存的方法不同)

    3. 中断上下文切换的关系:中断前后是在同一个进程上下文中,只是由用户态转向内核态执行。switch_to是指明接下来要执行哪一条具体指令的有关内容的函数。  

      1. 进程调度的时机和进程切换调度时机:发生在中断处理过程中,如I/O中断,时钟中断等,或者在执行返回用户态是调用schedule()。  

        1. switch_to的堆栈状态进行当前正在执行进程X的内容等的保存现场的处理,然后对即将要执行的进程Y的内容进行restore_all。总结部分:Linux系统一般执行过程,可以抽象成正在执行的进程X切换到进程Y继而切换到进程Z...等,其间要涉及到各个状态之间保存现场,恢复现场,上下文的切换等,还有一系列的有关进程调度时机,算法选择等的问题,是计算机内核部分很关键也很核心的部分。 

进程调度时机和跟踪分析进程调度与进程切换的过程

标签:

原文地址:http://www.cnblogs.com/yktlll/p/5401869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!