As you have learned by now, every single user and kernel space thread is internally represented within the Linux kernel by a metadata structure containing all its attributes – the task structure. The task structure is represented in kernel code as include/linux/sched.h:struct task_struct.
It's often, unfortunately, referred to as the "process descriptor," causing no end of confusion! Thankfully, the phrase task structure is so much better; it represents a runnable task, in effect, a thread.
So there we have it: in the Linux design, every process consists of one or more threads and each thread maps to a kernel data structure called a task structure (struct task_struct).
The task structure is the "root" metadata structure for the thread – it encapsulates all the information required by the OS for that thread. This includes information on its memory (segments, paging...