Pular para conteúdo

Exercícios: Aula 09 - Processos e Threads

Resolver esses exercícios ajudará na fixação do conteúdo abordado na Aula 09.

1 - 1. Processos (Isolamento Forte) (Básico 1)

Contexto:

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).

Pergunta: Descreva o conceito fundamental de 1. Processos (Isolamento Forte) e liste duas vantagens de seu uso.

2 - 2. Threads (Isolamento Fraco / Partilha) (Básico 2)

Contexto:

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!

Pergunta: Descreva o conceito fundamental de 2. Threads (Isolamento Fraco / Partilha) e liste duas vantagens de seu uso.

3 - 3. Context Switch (A Faca de Dois Gumes) (Intermediário 1)

Contexto:

Quando escrevemos "Hello World", achamos que a CPU roda por horas sem interrupções. Engano.

Pergunta: Analisando o funcionamento de 3. Context Switch (A Faca de Dois Gumes), como essa métrica interage em um ambiente prático de compilação ou execução de código C/C++ a nível de sistema operacional?

4 - Resumo Prático (Intermediário 2)

Contexto:

  • 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.

Pergunta: Analisando o funcionamento de Resumo Prático, como essa métrica interage em um ambiente prático de compilação ou execução de código C/C++ a nível de sistema operacional?

5 - 1. Processos (Isolamento Forte) (Desafio)

Contexto:

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).

Pergunta (Desafio): Elabore um cenário de arquitetura onde o uso incorreto ou a falta de entendimento de 1. Processos (Isolamento Forte) cause um problema grave de performance ou vazamento de memória. Como você mitigaria estruturalmente esse gargalo?



📚 Gabarito e Solução Comentada

Gabarito Explicado Abaixo estão as respostas esperadas e o embasamento teórico para os exercícios propostos na **Aula 09**. !!! success "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. !!! info "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. !!! success "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). !!! info "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. !!! success "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). !!! info "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. !!! success "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! !!! info "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. !!! success "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. !!! info "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. --- [:octicons-arrow-left-24: Voltar para Exercício](exercicio-09.md){ .md-button }