Gem5 se 模式是非 os 模式,但我能够在其上执行行锤代码,该代码具有具有 os 依赖关系的命令。但是如果 se 模式下没有 os,那么它们如何在 se 模式下执行。
问问题
442 次
1 回答
3
大多数用户态允许的指令只是做通常的事情,即稍微改变 CPU 的状态:触摸寄存器 + 缓存 + 内存。
然后当到达系统调用指令时,系统调用被转发到实际采取行动的主机。
但是,这也需要操作系统进行一些额外的记账,这就是为什么每个系统调用都必须单独实现的原因。
如果我想学习这个:-) 我会看看一个简单的系统调用的实现,比如 brk:
- https://github.com/gem5/gem5/blob/5d442571eff5116551609ee7a3b63a3b9d27ff45/src/arch/x86/linux/process.cc#L223
- https://github.com/gem5/gem5/blob/5d442571eff5116551609ee7a3b63a3b9d27ff45/src/sim/syscall_emul.cc#L212
我也会研究 QEMU 用户模式,我认为这将是一个类似的概念,但可能有更多可用的材料。
也许有更好理解的人可以更详细地解释,并进一步注释代码的特定部分。
于 2018-06-21T07:28:40.950 回答