how does fork() copy threads of a process in multi-processor (SMP)

Mulyadi Santosa mulyadi.santosa at gmail.com
Thu Mar 10 11:55:35 EST 2011


Hi...

On Thu, Mar 10, 2011 at 22:05, lalit mohan tripathi
<lalit.tripathi at gmail.com> wrote:
> I've a general question:  In Multiprocessor (Multi-Core) (SMP)
> environment how does  fork system call  (do_fork() related code)
> maintain the synchronization in case the threads of a process are
> running on different processors?  E.g. it can happen that the fork()
> is called by cpu-0 thread and other thread of same process is
> executing on cpu-1.

well, AFAIK, the newly born child, at least when they are just about
to kick in into the run queue (in any CPU), is actually still inside
the parent's code path. Or in simpler word, they are still bound in
the same core/processor they are created. Therefore, there's no
problem regarding task struct duplication etc

is that what you mean?

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com



More information about the Kernelnewbies mailing list