实验5 基于内核栈切换的进程切换
实验目的
- 深入理解进程和进程切换的概念;
- 综合应用进程、CPU 管理、PCB、LDT、内核栈、内核态等知识解决实际问题;
- 开始建立系统认识。
实验内容
现在的 Linux 0.11 采用 TSS 和一条指令就能完成任务切换,虽然简单,但这指令的执行时间却很长,在实现任务切换时大概需要 200 多个时钟周期。
而通过堆栈实现任务切换可能要更快,而且采用堆栈的切换还可以使用指令流水的并行优化技术,同时又使得 CPU 的设计变得简单。所以无论是 Linux 还是 Windows,进程/线程的切换都没有使用 Intel 提供的这种 TSS 切换手段,而都是通过堆栈实现的。
本次实践项目就是将 Linux 0.11 中采用的 TSS 切换部分去掉,取而代之的是基于堆栈的切换程序。具体的说,就是将 Linux 0.11 中的 switch_to
实现去掉,写成一段基于堆栈切换的代码。
本次实验包括如下内容:
- 编写汇编程序
switch_to
: - 完成主体框架;
- 在主体框架下依次完成 PCB 切换、内核栈切换、LDT 切换等;
- 修改