Aula 15 - Entrada e Saída (I/O)
Se o Processador e a Memória trabalham num relógio bilionário (GHz), como eles se comunicam com o Teclado USB do seu usuário ou sua Placa de Rede cuja resposta se mede nas lentas métricas de milissegundos?
🚪 1. System Calls (O Pedágio do Kernel)
Programas nativos de C/C++ rodando na zona abstratamente segura (User Space) NÃO TÊM permissão física elétron-elétron para dar ordens ao cabo de Rede de imprimir um byte TCP. Tentar burlar isso gera um sumário e fulminante encerramento compulsório pelo Processador através do bloqueio de Anéis de Proteção.
Para acionar a Rede, o C++ precisa paralisar, invocar a sagrada System Call (Syscall, ex: write, sendto, read) que abre o portal para o S.O (Kernel Space). É o Kernel Linux quem vai orquestrar a placa C de Ethernet.
⚠️ 2. Interrupções vs Polling
Seu App em Python/C diz: "Puxe o dado que está vindo no mouse". 1. Polling (Desastroso): A CPU fica travada rodando while(mouse_is_empty) {} perguntando de nano em nanosegundo "Chegou? E agora? E Agora?". (Suga 100% da CPU por um mouse inerte). 2. Interrupts (Moderno): A CPU delega para o controlador USB rodar a escuta passiva, e a CPU volta a fechar os frames de Game. Quando o usuário clica com o dedo, o Controlador injeta um choque elétrico no pino do Processador. Interrupt request (IRQ)! A CPU congela subitamente o Game, salva o contexto, trata o clique do Mouse rapidamente, e exuma a cena do Game novamente do congelamento.
🚀 3. DMA (Memória com Acesso Direto)
Mesmo com as Interrupções ajudando a não ficar paralisado Polling... Fazer a Placa de Rede encher a placa RAM transitando Bit a Bit passando pelo miolo doloroso da CPU era impraticável em Gigabit Ethernets.
A revolução moderna chama-se Direct Memory Access (DMA). Placas de Captura, NVMe e Placas de Rede conversam Diretamente com a Memória RAM por vias de bypass.
graph BT
A["Placa de Rede"] -- "Caminho Direto (DMA)" --> B["Memória RAM"]
A -. "Aviso via IRQ\n(Terminei!)" .-> C["CPU"]
C -. "Ordens Lentas" .-> B A CPU diz: "Placa, baixe o NetFlix do Ponto P pro Q na RAM". A Placa faz todo os trabalho violento por trás. A CPU usa seu pipeline pra cálculos e matemática puros, enquanto sua memória vai sendo injetada pela placa de vídeo via túneis secretos pelas pontes.
🚀 Resumo Prático
- Se a sua aplicação Web Framework assíncrona (como NodeJS ou Nginx C++) trava muito com "I/O", isso significa que o Sistema delega operações custosas pelo DMA ao Kernel, enquanto orquestra Event-Loops aguardando os famigerados Interrupts de retorno.
Fim do estudo base teórico, chegamos ao final. É hora de compilar conhecimento na Otimização Pura (Aula Final).
🎯 Próximos Passos
-
Acessar Slides
Reveja a apresentação visual desta aula.
-
Quiz
Teste seu entendimento básico com perguntas rápidas.
-
Exercícios
Prática avançada e dissertativa com consulta.
-
Projeto
Laboratório prático de codificação em C/C++.