重播文件系统调用

时间:2011-09-12 02:57:45

标签: c linux pthreads

我有一组格式为

的文件系统I / O调用
processid   system-call

例如

1  open(A)
1  read(A)
2  open(B)
1  open(C)
2  write(B)
.....

即交错序列。我现在需要以大致相同的顺序重放这些跟踪,并且每个进程由不同的线程执行。在我编写的程序中,主线程读取跟踪文件,并通过将系统调用放入相关线程的任务队列中,将任务分配给与进程相对应的线程。任务线程从其队列中读取调用并进行必要的调用。

但是我没有实现I / O跟踪文件中的交错。请建议我一个方法...

谢谢

编辑:一种方法是在调用每个跟踪后延迟主线程读取文件,从而允许任务线程继续。这使线程的目的无用,但它似乎符合我的目的

1 个答案:

答案 0 :(得分:0)

让调度程序在告诉线程要做什么之后进入休眠状态,直到线程完成时线程唤醒它为止。你不会同时执行;你将被不同的线程命令执行。这就是你所要求的,但它可能不是你想要的。你可能想要的是写入文件的依赖图,让每个线程等到它的依赖完成。有些语言(比如prologue和haskell)会为你做这个。