Process — отдельный execution context со своим адресным пространством. Thread — поток выполнения внутри процесса: делит память, но имеет свой стек и планируется независимо. А для ядра Linux разницы почти нет: и то и другое — task (task_struct), отличие лишь в том, какими флагами clone() их создали.