Clone leve de processo (thread)
Vamos viajar aqui, como seria a chamada clone
no sistema operacional, com pseudo-código:
Para criar um processo mais leve, ou seja uma thread, seria então necessário passar os seguintes argumentos para a chamada clone
:
CLONE_VM: processo principal e processo filho compartilham o mesmo espaço de memória virtual
CLONE_FS: processos compartilham o mesmo sistema de arquivos
CLONE_FILES: processos compartilham a mesma tabela de descritor de arquivos (file descriptor table)
CLONE_SIGHAND: processos compartilham a mesma tabela de handlers de sinais (signal handlers)
CLONE_PARENT: processos compartilham o mesmo parent, ou seja, o processo "filho" na verdade é filho do processo parent do processo original (mesmo porque estamos falando de uma thread que compartilha o mesmo processo)
CLONE_THREAD: o processo filho é colocado no mesmo grupo de threads do processo original
CLONE_IO: processos compartilham o mesmo contexto de I/O
É isto, caros leitores, uma thread é uma "parte" de um processo, mais leve e que compartilha a memória do processo com outras threads.
Como o sistema operacional é nosso amigo, ele trata as threads como unidades de concorrência, assim como os processos, portanto diferentes partes (threads) de um programa podem ser executadas de forma concorrente no sistema, assim como diferentes processos:
Repare como que o escalonador fica intercalando tanto processos, quanto threads na CPU. Que dia lindo, não?
Last updated