【问题标题】:Executing a Stopped Process in XV6在 XV6 中执行已停止的进程
【发布时间】:2016-04-21 20:47:48
【问题描述】:

我编写了两个新的系统调用并将它们添加到 xv6 操作系统内核。所以使用一个系统调用我可以保存进程状态,使用另一个我可以重新加载前一个状态并继续。 问题重新加载部分


仅重新加载进程的上下文就足够了吗? (我的意思是 struct context 包含一些 CPU 寄存器)

【问题讨论】:

  • 你是设计这个功能的人,我对 xv6 一无所知,但这里有一些事情要考虑:虚拟内存布局、内存内容、打开的文件、打开的套接字跨度>
  • 如果我是未来的设计师,那么我将改变 xv6 的整个架构,因为它没有足够的文档
  • 如果你愿意,你可以这样做。需要多长时间?
  • 我想两三个小时就够了:)

标签: c process operating-system kernel xv6


【解决方案1】:

没有。

该进程可能在proc->ofile 中有打开的文件和管道,您需要保存/加载。

另请注意,当您重新加载进程时,其parent 可能不再存在。
你真的想确保你的进程在没有真正的父母的情况下不会四处飘荡,否则你会遇到一些有趣的错误。

【讨论】: