Aula 10: O Que Acontece Quando Você Executa um Programa — Processo, Memória e o Sistema Operativo
Chegamos à última aula, e ao momento em que tudo se conecta. Construímos um executável — mas o que exatamente acontece quando você clica para executá-lo? O carregador do sistema operativo cria um processo: uma instância em execução do programa, com seu próprio espaço de memória privado. Vamos ver o
Quando você executa um programa, o sistema operativo cria um 'processo' para ele — uma cópia viva na memória com espaço próprio. Ele tem uma pilha para chamadas de função e um heap para espaço pedido durante a execução. Quando o programa quer falar com o hardware, ele pede ao sistema operativo para fazer isso.
- Processo
- Uma instância em execução de um programa, com seu próprio espaço de endereçamento privado e estado, gerida pelo sistema operativo.
- Carregador
- Parte do sistema operativo que copia um executável para a memória e cria um processo a partir dele.
- Espaço de Endereçamento
- O intervalo de endereços de memória que um processo enxerga como seu; cada processo recebe um intervalo privado graças à memória virtual.
- Segmento de Código e Segmento de Dados
- O segmento de código guarda as instruções (geralmente somente leitura); o segmento de dados guarda variáveis globais e constantes.
- Pilha
- Uma região de memória com os quadros de chamada de função — variáveis locais e endereços de retorno; cresce para baixo.
- Heap
- Uma região de memória para alocação dinâmica em tempo de execução (malloc/new); cresce para cima conforme necessário.
- Quadro de Pilha
- O registo empilhado a cada chamada de função: suas variáveis locais e o endereço de retorno.
- Chamada de Sistema
- Uma solicitação que um programa faz ao sistema operativo para executar uma ação que exige acesso a hardware, como saída ou entrada.
- Memória Virtual
- Um mecanismo em que cada processo recebe um espaço de endereçamento privado, como se toda a memória fosse sua, mapeado para a memória física.
- Troca de Contexto
- Salvar o estado do processo em execução e carregar o de outro, para que uma única CPU possa atender muitos processos.