标签:
1理解进程调度时机跟踪分析进程调度与进程切换的过程:
schedule()调用发生在中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();
分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解;推荐在实验楼Linux虚拟机环境下完成实验。
switch_to中prev指向当前进程,next指向被调度的进程。进程上下文的切换机制:
程上下文包含了进程执行需要的所有信息
用户地址空间:包括程序代码,数据,用户堆栈等
控制信息:进程描述符,内核堆栈等
硬件上下文(注意中断也要保存硬件上下文只是保存的方法不同)
中断上下文切换的关系:中断前后是在同一个进程上下文中,只是由用户态转向内核态执行。switch_to是指明接下来要执行哪一条具体指令的有关内容的函数。
进程调度的时机和进程切换调度时机:发生在中断处理过程中,如I/O中断,时钟中断等,或者在执行返回用户态是调用schedule()。
switch_to的堆栈状态进行当前正在执行进程X的内容等的保存现场的处理,然后对即将要执行的进程Y的内容进行restore_all。总结部分:Linux系统一般执行过程,可以抽象成正在执行的进程X切换到进程Y继而切换到进程Z...等,其间要涉及到各个状态之间保存现场,恢复现场,上下文的切换等,还有一系列的有关进程调度时机,算法选择等的问题,是计算机内核部分很关键也很核心的部分。
标签:
原文地址:http://www.cnblogs.com/yktlll/p/5401869.html