Solução e Explicação Detalhada: Aula 09 - Processos e Threads
Abaixo estão as respostas esperadas e o embasamento teórico para os exercícios propostos na Aula 09.
Solução da Questão 1 - 1. Processos (Isolamento Forte) (Básico 1)
Explicação Detalhada do Assunto:
O Processo é o contêiner mestre do Sistema Operacional. Quando a execução do seu binário em C/C++ se inicia via Terminal, vira um Processo (PID 2900).
-
O S.O. dá ao Processo sua própria e exclusiva Memória Virtual (visto na Aula 8).
-
O Processo tem sua exclusiva Pilha e não se mistura nunca. E isso isola falhas: se um Chrome (processo isolado) trava, não dá tela azul na outra aba.
-
A comunicação entre Processos (IPC - Inter-process Communication) é pesada e necessita do S.O. através de Pipes ou Redes.
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 1. Processos (Isolamento Forte) determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 2 - 2. Threads (Isolamento Fraco / Partilha) (Básico 2)
Explicação Detalhada do Assunto:
Quando se está em um jogo e, ao mesmo tempo que carrega os gráficos na GPU, uma música de CD está lendo sem travar, estamos olhando para Multithreading!
Uma Thread é simplesmente uma subdivisão leve controlada do processo. Elas todas orbitam e vivem na exata MESMA MEMÓRIA VIRTUAL (Heap) DO PROCESSO MESTRE.
Duas std::thread manipulando os ponteiros apontam rigorosamente rápido ao mesmo endereço na RAM sem nenhuma barreira do S.O., o que traz milisegundos imbatíveis versus IPC!
Como ambas alteram ativamente a mesmíssima RAM viva desprotegidas, se elas lerem/sobreescreverem juntas o mesmo byte int da Conta Bancária C++, ocorre o letífero e maldoso Data Race (Condição de Corrida de Dados).
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 2. Threads (Isolamento Fraco / Partilha) determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 3 - 3. Context Switch (A Faca de Dois Gumes) (Intermediário 1)
Explicação Detalhada do Assunto:
Quando escrevemos "Hello World", achamos que a CPU roda por horas sem interrupções. Engano.
O S.O. possui um núcleo (Kernel Scheduler) que fatia milésimos de milésimos de segundos distribuindo uma core i7-P para a aba do Google, logo retira o Google e taca nos frames do VS-Code, em micro-loop alternante de Context Switches.
O problema? Puxar e devolver o estado (registradores, program counter) na cache é hiper custoso e derruba o Pipeline se abusado (overhead em CPU bound apps).
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 3. Context Switch (A Faca de Dois Gumes) determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 4 - Resumo Prático (Intermediário 2)
Explicação Detalhada do Assunto:
-
Se a tarefa for CPU-Bound (requerer Matemática Bruta Massiva / Machine Learning), você cria Threads numerando-as próximo número oficial de núcleos estritos da CPU, evitando desperdício de overhead com Context Switches ilusórios.
-
É muito fácil em C/C++ estragar a vida financeira do cliente numa Race Condition compartilhada pelo Heap se não protegida... mas isso é o tema da próxima aula!
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de Resumo Prático determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.
Solução da Questão 5 - 1. Processos (Isolamento Forte) (Desafio)
Explicação Detalhada do Assunto:
O Processo é o contêiner mestre do Sistema Operacional. Quando a execução do seu binário em C/C++ se inicia via Terminal, vira um Processo (PID 2900).
-
O S.O. dá ao Processo sua própria e exclusiva Memória Virtual (visto na Aula 8).
-
O Processo tem sua exclusiva Pilha e não se mistura nunca. E isso isola falhas: se um Chrome (processo isolado) trava, não dá tela azul na outra aba.
-
A comunicação entre Processos (IPC - Inter-process Communication) é pesada e necessita do S.O. através de Pipes ou Redes.
Expectativa de Resposta
O aluno deve inferir com clareza que o conceito de 1. Processos (Isolamento Forte) determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel.