进程切换过程之一:上下文切换
注:下面给出的源码均出自https://github.com/mit-pdos/xv6-public
在进程进行切换时,需要进行上下文切换,也就是寄存器的值的保存。
对于上下文的切换,有两种情况:硬件自动(隐式)完成、操作系统显式保存。
下面分析两段xv6的源代码,都是上下文切换部分,版本有所不同:
注:每个进程都有一个用来维护过程调用的栈,有的书把这个栈叫做内核栈;在编译原理中,这个栈的术语叫活动记录,在下文中,提到的栈都是说的这个保存活动记录的栈。每个进程都有自己的活动记录(当然,如果是多CPU的情况下,就会引入线程的概念,则每个线程有一个活动记录)

本文探讨了进程切换中的上下文切换过程,通过分析xv6操作系统的源代码,解析了两种不同版本的上下文切换实现。在较老的版本中,上下文被操作系统显式保存和恢复,而在较新的版本中,硬件参与了部分寄存器的保存工作,其余部分仍需手动处理。上下文切换涉及寄存器的保存和恢复,对于理解进程调度和多任务执行至关重要。
最低0.47元/天 解锁文章
1446

被折叠的 条评论
为什么被折叠?



