Sistemas Computacionais: Uma Perspectiva do Programador (Edição Global)
Uma análise aprofundada sobre como os sistemas computacionais executam programas e armazenam informações. Este curso pontua a lacuna entre a programação de alto nível e o hardware subjacente, abrangendo representação em nível de máquina, arquitetura de processadores, hierarquia de memória e programação concorrente.
Visão Geral do Curso
Resumo do Conteúdo
Uma análise aprofundada sobre como sistemas computacionais executam programas e armazenam informações. Este curso pontua a lacuna entre programação de alto nível e o hardware subjacente, abordando representações em nível de máquina, arquitetura de processadores, hierarquia de memória e programação concorrente.
Domine a arte da programação de sistemas compreendendo a interface entre hardware e software.
Autor: Randal E. Bryant, David R. O'Hallaron
Agradecimentos: Apoiado pelos alunos e instrutores do curso 15-213 na Universidade Carnegie Mellon. Os agradecimentos incluem contribuições de Manasa S. e Mohit Tahiliani.
Objetivos de Aprendizagem
- Identificar como as informações são representadas usando bits e contexto dentro de um sistema.
- Traçar as quatro fases do sistema de compilação desde o código-fonte até o executável.
- Descrever a estrutura organizacional do hardware e a natureza hierárquica dos dispositivos de armazenamento.
- Converter entre notações decimal, binária e hexadecimal e explicar endereçamento em nível de máquina (Endianness).
- Realizar operações a nível de bit e lógicas em C e prever os resultados de deslocamentos aritméticos.
- Analisar codificações de inteiros para identificar vulnerabilidades potenciais a estouro e erros de conversão.
- Analisar o mapeamento entre construtos C (laços, ramificações, procedimentos) e instruções assembly x86-64.
- Desmontar a pilha de tempo de execução para explicar como parâmetros são passados, variáveis locais são armazenadas e chamadas recursivas são gerenciadas.
- Avaliar layouts de memória para estruturas de dados heterogêneas e aplicar regras de alinhamento para calcular requisitos totais de armazenamento.
- Definir o Estado Visível ao Programador Y86-64 e codificar/decodificar instruções em sequências de bytes.