5. linux下的context

2019-03-20  本文已影响0人  郑行_aover

1. 进程上下文的概念:

LINUX完全注释中的一段话

当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称 为该进程的上下文。当内核需要切换到另一个进程时,它需要保存当前进程的 所有状态,即保存当前进程的上下文,以便在再次执行该进程时,能够必得到切换时的状态执行下去。在LINUX中,当前进程上下文均保存在进程的任务数据结 构中。在发生中断时,内核就在被中断进程的上下文中,在内核态下执行中断服务例程。但同时会保留所有需要用到的资源,以便中继服务结束时能恢复被中断进程 的执行。

2. 上下文切换:

因此上下文是指某一时间点CPU寄存器和程序计数器的内容, 广义上还包括内存中进程的虚拟地址映射信息

3. context_switch 进程上下文切换

linux中进程调度时, 内核在选择新进程之后进行抢占时, 通过context_switch完成进程上下文切换。

注意 进程调度与抢占的区别

由于不同架构下地址映射的机制有所区别, 而寄存器等信息弊病也是依赖于架构的, 因此switch_mm和switch_to两个函数均是体系结构相关的。

context_switch()

{

    struct mm_struct *mm, *oldmm;

    /*  完成进程切换的准备工作  */

    prepare_task_switch(rq, prev, next);

    mm = next->mm;

    oldmm = prev->active_mm;

    arch_start_context_switch(prev);

    switch_to(prev, next, prev);    // 切换进程的执行环境,包括堆栈和寄存器    

}

核心的切换:

因此上下文是指某一时间点CPU寄存器和程序计数器的内容, 广义上还包括内存中进程的虚拟地址映射信息。因此上下文是指某一时间点CPU寄存器和程序计数器的内容, 广义上还包括内存中进程的虚拟地址映射信息。因此上下文是指某一时间点CPU寄存器和程序计数器的内容, 广义上还包括内存中进程的虚拟地址映射信息。

上一篇 下一篇

猜你喜欢

热点阅读