A ideia por trás de encadeamentos e processos é quase a mesma: você bifurca o caminho de execução. Caso contrário, os segmentos e processos diferem em coisas como memória. Ou seja os processos têm um espaço de VM diferente, enquanto os threads compartilham o que existia antes da divisão.
Subjacente ao trabalho de segmentação e bifurcação usando a chamada clone () (man 2 clone):
Unlike fork(2), clone() allows the child process to share parts of its execution context with the calling process, such as the memory space, the table of file descriptors, and the table of signal handlers. (Note that on this manual page, "calling process" normally corresponds to "parent process". But see the description of CLONE_PARENT below.)
The main use of clone() is to implement threads: multiple threads of control in a program that run concurrently in a shared memory space.
As diferenças vêm das bandeiras que são passadas para clone (). Como você pode ver na página man, fork e threading são apenas um conjunto de parâmetros pré-definidos para clone (). No entanto, também é possível fazer coisas personalizadas com ele.