Pular para conteúdo

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.


Voltar para Exercício