Conversation

Replying to
It does have the concept of thread groups and distinguishes between the main thread and secondary threads. They're indeed all implemented as tasks. Passing CLONE_THREAD when spawning a task with clone creates it in the same thread group. A POSIX PID maps to a Linux kernel TGID.
1
2
Replying to and
There's still some trickery required in libc implementations to provide the less granular POSIX semantics. For example, the Linux kernel setuid system call sets uid of the task, not the process as a whole like POSIX setuid. libc implementations do more than wrap the set*id calls.
1
2