xv6 中的上下文是什么?

What is context in xv6?

context 在 xv6 OS 中的用法是什么? context 中每个寄存器的作用是什么?

struct context {
  uint edi;
  uint esi;
  uint ebx;
  uint ebp;
  uint eip;
};

context 是一组信息,允许您从由于上下文切换而停止的完全相同的点恢复执行任务(即调度程序选择另一个任务 运行 和暂停当前​​任务,因此它必须保存当前任务的执行信息并将下一个任务的执行信息恢复到运行)。

每个寄存器的用途是:

  • edi:目标索引,用于字符串操作
  • esi:源索引,用于字符串操作
  • ebx:基本索引,用于数组
  • ebp: Stack Base Pointer,用于保存当前栈帧的地址
  • eip:指令指针,指向要执行的指令

此结构是 运行 进程的内核上下文。

用户模式上下文被保存到trapframe结构中。