"Fork is nothing but a new process that looks exactly
like the old or the parent process but still it is a different
process with different process ID and having it's own memory.
Parent process creates a separate address space for child. Both
parent and child process possess the same code segment, but execute
independently from each other.
"Threads are Light Weight Processes (LWPs). Traditionally, a
thread is just a CPU (and some other minimal state) state with the
process containing the remains (data, stack, I/O, signals). Threads
require less overhead than "forking" or spawning a new process
because the system does not initialize a new system virtual memory
space and environment for the process."