O navegador Chromium realmente usa diferentes processos para renderizar suas guias abertas:
$ps -aef
[...]
sylvain 6432 2223 20 11:19 ? 00:00:02 chromium-browser --enable-pinch
sylvain 6441 6432 0 11:19 ? 00:00:00 /usr/lib/chromium-browser/chrome-sandbox /usr/lib/chromium-browser/chromium-browser --type=zygote
sylvain 6442 6441 1 11:19 ? 00:00:00 chromium-browser --type=zygote
sylvain 6446 6442 0 11:19 ? 00:00:00 chromium-browser --type=zygote
sylvain 6469 6432 8 11:19 ? 00:00:00 chromium-browser --type=gpu-process --channel=6432.0.2058149686 --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,11,13,15 --disable-accelerated-video-decode --gpu-vendor-
sylvain 6489 6446 1 11:19 ? 00:00:00 /usr/lib/chromium-browser/chro
sylvain 6509 6469 0 11:19 ? 00:00:00 chromium-browser --type=gpu-broker
root 6516 2 0 11:19 ? 00:00:00 [kworker/0:0]
sylvain 6517 6446 10 11:19 ? 00:00:00 /usr/lib/chromium-browser/chro
sylvain 6541 6446 5 11:20 ? 00:00:00 /usr/lib/chromium-browser/chro
No exemplo acima, pid 6517 e 6541 são minhas guias abertas, mas como você, netstat
retorna apenas um processo de rede para o Chromium ( 6432 ):
$ sudo netstat -tulpn
[sudo] password for sylvain:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1966/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3804/cupsd
tcp 0 0 0.0.0.0:538 0.0.0.0:* LISTEN 1363/gdomap
tcp6 0 0 ::1:631 :::* LISTEN 3804/cupsd
udp 0 0 0.0.0.0:45410 0.0.0.0:* 2158/dhclient
udp 0 0 0.0.0.0:5353 0.0.0.0:* 6432/chromium-brows
udp 0 0 0.0.0.0:5353 0.0.0.0:* 933/avahi-daemon: r
udp 0 0 127.0.1.1:53 0.0.0.0:* 1966/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 2158/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 1715/dhclient
udp 0 0 192.168.1.36:123 0.0.0.0:* 2956/ntpd
udp 0 0 192.168.1.40:123 0.0.0.0:* 2956/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 2956/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 2956/ntpd
udp 0 0 0.0.0.0:49400 0.0.0.0:* 933/avahi-daemon: r
udp 0 0 0.0.0.0:538 0.0.0.0:* 1363/gdomap
udp 0 0 0.0.0.0:631 0.0.0.0:* 1187/cups-browsed
udp 0 0 0.0.0.0:10080 0.0.0.0:* 1715/dhclient
udp6 0 0 :::60417 :::* 933/avahi-daemon: r
udp6 0 0 :::5353 :::* 933/avahi-daemon: r
udp6 0 0 :::47845 :::* 2158/dhclient
udp6 0 0 :::8012 :::* 1715/dhclient
udp6 0 0 fe80::3ea9:f4ff:fe1:123 :::* 2956/ntpd
udp6 0 0 fe80::3e97:eff:fe81:123 :::* 2956/ntpd
udp6 0 0 ::1:123 :::* 2956/ntpd
udp6 0 0 :::123 :::* 2956/ntpd
Então por quê?
- O Chromium usa uma arquitetura de vários processos, que isola os processos de renderização do processo do navegador , mas ...
- O Chromium mantém uma instância única do distribuidor de recursos, que é compartilhado entre todos os processos de renderização e é executado no processo do kernel do navegador.
- Cada processo de renderização se comunica com o distribuidor de recursos via IPC.
Fontes: