我想了解当进程和线程之间的上下文切换发生时,进程堆栈,不同段等上发生了什么。基本上我想知道如何在并发编程中的上下文切换之间修改每个段。什么是最好的阅读地方?你能为操作系统推荐一些教程或视频吗?
我不确定我的问题是否正确,让我知道。请建议。
答案 0 :(得分:1)
最好开始阅读特定操作系统的代码:
Linux内核的kernel/sched.c
函数sched_fork()
可能与任何开始阅读的地方一样好;它启动了一项全新的任务,因此我觉得它可以让您对调度程序的内部和任务内存管理有一个很好的概述。
FreeBSD的内核sys/kern/sched.c
function sched_switch()
直接在当前进程和下一个进程之间交换;它可能比Linux变种更容易阅读。
其他操作系统可能选择以不同方式处理上下文切换。 (我的一位经理worked on an operating system that replaced the process table generic code with code to jump to the exact next task that would be scheduled,以及其他很酷的运行时数据特定优化。)
FXR website让人很容易理解 代码在各种操作系统中。 (感谢Robert,如果你正在阅读!)在FXR列表中,我建议学习Plan9,Minix和OpenSolaris - 它们比FreeBSD树更远,而不是其他更相关的BSD衍生分发。 / p>
答案 1 :(得分:0)
你问了一个非常有问题的问题。我建议你从教科书开始,然后从那里开始工作。计算机科学专业学生几乎使用的一本书是:
答案 2 :(得分:0)
如果您希望了解h / w级别,请从英特尔系统编程指南3A开始。然后继续执行linux内核源代码,并按照sarnold的说法进行操作。