Can somebody explain the -j option of make ? how does this work on a single processor? I read that this option is for multiple invocation of commands or"parallel exec" of jobs. But when i strace it ( for e.g strace -F -f -tt -otraceout make -j8 allyesconfig) , i see that none of the system calls have the same timestamp on entry... so how do i really know what parts are being done in parallel? Now im dealing with a specific problem of finding a "happens-before" relation from this trace...Anyone know how i could find the dependencies of the syscalls and happens-before relation from this trace?

I also have another problem :

When i use strace -F -f make -j8 allyesconfig, it works fine.. but when i use
strace -F -f make -j8 bzImage it gives me the following messages and quits:
make: *** wait: No child processes. Stop.
make: *** Waiting for unfinished jobs...
make: *** Waiting for unfinished jobs...

But this works fine if i use either -f or -F but not both...
Can someone tell me why this happens??