# Todo processo tem uma thread principal

Outra coisa para termos em mente, e que é *muito importante*, é o fato de que cada processo incorpora uma thread principal, chamada de **main thread**. Ou seja, quando o processo está em execução, lhe é atribuído um ID de thread (TID) que ocorre de ser o mesmo ID do processo (PID):

```bash
$ ps -eo pid,tid,cmd | grep system | head -n 5
	PID     TID CMD
    387     387 /lib/systemd/systemd-journald
    428     428 /lib/systemd/systemd-udevd
    536     536 /lib/systemd/systemd-timesyncd
    584     584 /lib/systemd/systemd-networkd
    586     586 /lib/systemd/systemd-resolved
```

Repare, que desta forma, fica mais prático para o sistema operacional tratar tudo como "thread", no fim das contas.

> Na verdade, no `libc` existe uma estrutura de dados que se chama **task** e é usada justamente para isto. Mas em termos de escalonamento, podemos chamar de "thread" de modo a simplificar

Até agora falamos apenas de CPU single-core. Mas todos sabemos que, a partir dos anos 2000, tivemos um aumento exponencial do uso de multi-core. Cada vez mais as CPU's são projetadas para terem **mais de um núcleo** de execução.

O que muda no nosso modelo de concorrência? De forma *simplista*, nada. Mas se pensarmos que agora temos mais de um núcleo de execução, podemos **PARALELIZAR** a exeução de diferentes processos e threads consoante ao número de núcleos disponíveis.
