What is PID 0?
It’s the thread with ID 0, it’s the only thread in the group with ID 0, and no child PID namespaces exist yet, so there’s no other numbers for init task to be. We know init task is the PID 0 we’re looking for, albeit now it’s actually two different PID 0s at the same time because it’s the thread with ID 0 within the thread group with ID 0. On multicore linux systems, every CPU core gets an idle thread. All those idle threads are part of thread group 0, which userspace would call PID 0.
Source: What is PID 0? - blog.dave.tf
Lots of detail here