Você notará que todos os PIDs são divisíveis por 4. 4 é, portanto, o primeiro PID disponível após 0 (que é o processo ocioso).
Se <<> esse for verdadeiro, veja este Post do MSDN de Raymond Chen:
Process and thread IDs are multiples of four as a side-effect of code re-use. The same code the allocates kernel handles is also used to allocate process and thread IDs. Since kernel handles are a multiple of four, so too are process and thread IDs.
Observe, no entanto, que os IDs de processo não são realmente utilizáveis para manipular valores para esses processos. Os números são gerados pelo mesmo algoritmo.
E pela razão de que as alças do kernel são sempre divisíveis por quatro ... Raymond Chen para o resgate novamente!
The availability of the bottom two bits is buried in the ntdef.h header file:
// Low order two bits of a handle are ignored by the system and available // for use by application code as tag bits. The remaining // and used to store a serial number and table index. #define OBJ_HANDLE_TAGBITS 0x00000003L
(Para aqueles que não estão familiarizados com números binários: Um inteiro binário positivo com seus dois bits de ordem baixa zero é sempre divisível por quatro, assim como um número decimal que termina em "00" é sempre divisível por 100.) p>
Então ... uma resposta caprichosa é que o primeiro PID é realmente "1". É só que o Gerenciador de Tarefas, et al , não sabe que na forma interna ele é deslocado para a esquerda por dois bits. :)