拦截和重播所有系统调用是否足以确保确定性的程序行为?

时间:2019-06-05 23:20:06

标签: linux posix

在GNU / Linux上,可以使用ptrace(2)拦截程序及其子级的所有系统调用。典型的软件将完全依靠系统调用来与其他软件进行交互。

程序可以利用哪些不涉及系统调用的不确定性来源?并且它们是常用的吗?

通常,如果我想开发一个通用缓存机制,该机制可以跟踪程序及其子进程的所有系统调用,而我只是简单地重播它们,检查那些调用是否返回了完全相同的结果(如果没有,我会退回到实际运行该程序),那么它始终会像真正的程序一样完美吗?

实际上,如果我放宽一些调用以允许不同的行为(通常,brkmmap倾向于选择不同的地址,而getpid返回不同的进程ID,但是它们并不会真正影响程序的行为)是否存在会破坏这些期望的常用程序? (通常,我认为构建工具往往具有确定性)

那里有通用缓存机制的实现吗?

0 个答案:

没有答案