Process Descriptor and Task Structure


Task list

The kernel stores the list of processes in a circularly doubly linked list called a task list

Each element in the task list is called a process descriptor, and it has a struct of type task_struct (see <linux/sched.h>)

Allocating the Process Descriptor

The task_struct of the process descriptor is allocated via the slab allocator

Prior v2.6 kernels, task_struct was stored at the end of the kernel stack of each process

Now, with task_struct dynamically created via the slab allocator, a new struct thread_info lies at the end of the kernel stack instead

Within the thread_info struct has a member called task, which points the actual task_structure

Storing PID

The kernel identifies a process by using a unique process identification called a PID represented by pid_t

Default value of PID is 32,768, which can be modified in <linux/threads.h>. The value of the current max PID can be found in /proc/sys/kernel/pid_max

Looking up for process descriptor of the current task

To access the process descriptor of the current task, a macro called current can be used

current_thread_info()->task

results matching ""

    No results matching ""