进程切换涉及到栈的指针的切换,经过搜索后有如下资料
    https://www.cnblogs.com/chaozhu/p/6283495.html
    http://blog.chinaunix.net/uid-22695386-id-272062.html
    https://blog.51cto.com/bluefish/38748

    简单的概括一下就是每一个进程都有一个用户栈和一个内核栈,举个例子,比如说用户进程在用户态下执行陷入中断,随后要转入内核态。那么对应的栈也要从用户栈转入内核栈。进程进入内核态后,首先把用户态的堆栈地址保存在内核堆栈中,然后设置堆栈指针寄存器的地址为内核栈地址,这样就完成了用户栈向内核栈的切换。当进程从内核态切换到用户态时,最后把保存在内核栈中的用户栈地址恢复到CPU栈指针寄存器即可,这样就完成了内核栈向用户栈的切换。内核态在回到用户态的时候会清空内核栈的内容

    至于在用户之间的进程切换简单的说和上面同理
    等待后续的具体学习