Sistemas de Computação: Uma Perspectiva do Programador
1120 páginas
Portuguese
PDF
4.5

Sistemas de Computação: Uma Perspectiva do Programador

Sistemas de Computação: Uma Perspectiva do Programador

Autor:

Ano:

Resumo:

Introdução

O livro «Sistemas de Computação: Uma Perspectiva do Programador» (título original Computer Systems: A Programmer's Perspective) é uma obra fundamental que, há mais de uma década, continua sendo o padrão ouro para todos que desejam entender como os computadores modernos realmente funcionam. Escrito pelos professores da Universidade Carnegie Mellon, Randal Bryant e David O'Hallaron, este livro não apenas explica a teoria — ele fornece ao programador uma compreensão prática profunda de como o hardware e o software interagem entre si.

Apesar de a sinopse mencionar a linguagem C++, o livro é, na verdade, voltado para as linguagens C e assembly (x86-64). Não é um manual de uma linguagem específica, mas um guia sobre o funcionamento interno dos sistemas computacionais. Para o site educacional PythonLib, este livro será especialmente valioso, pois ajuda desenvolvedores de qualquer linguagem (incluindo Python) a escrever código mais eficiente e confiável, entendendo o que acontece "sob o capô".

Sobre o que é este livro?

O livro aborda todos os aspectos-chave dos sistemas de computação, desde bits e bytes até programação de redes. Os principais tópicos incluem:

  • Representação de dados: como números, texto e outros dados são armazenados na memória (sistema binário, complemento de dois, números de ponto flutuante).
  • Código de máquina e assembly: como o compilador traduz o código C em instruções do processador, como funcionam os registradores, a pilha e as chamadas de função.
  • Arquitetura do processador: pipeline, predição de desvios, superescalaridade — por que um código é mais rápido que outro.
  • Hierarquia de memória: memória cache, RAM, discos — como minimizar latências e maximizar a largura de banda.
  • Linkagem e carregamento: como um programa executável é montado a partir de arquivos objeto, como funciona a linkagem dinâmica.
  • Gerenciamento de processos e threads: chamadas de sistema, paralelismo, sincronização, problemas de deadlock.
  • Medição de desempenho: profiling, benchmarking, otimização de código.
  • Redes e aplicações cliente-servidor: fundamentos de sockets, protocolos TCP/IP.

Para quem é este livro?

Este livro é destinado a programadores de nível intermediário e avançado que desejam passar de escrever "apenas código funcional" para escrever código eficiente, confiável e seguro. Será útil para:

  • Desenvolvedores em C e C++ que desejam entender como seu código é executado no hardware real.
  • Programadores em Python, Java ou outras linguagens de alto nível que desejam olhar "sob o capô" e entender as causas de lentidão ou vazamentos de memória.
  • Estudantes de áreas técnicas que estudam arquitetura de computadores, sistemas operacionais ou compiladores.
  • Engenheiros que trabalham com sistemas embarcados, drivers ou serviços de alta carga.

O que o leitor aprenderá?

Após estudar este livro, o leitor será capaz de:

  • Ler e analisar código assembly x86-64.
  • Entender por que algumas operações (como divisão ou ponto flutuante) são mais lentas que outras.
  • Otimizar programas considerando a hierarquia de memória (cache misses são o principal inimigo do desempenho).
  • Evitar erros típicos relacionados a estouro de buffer, vazamentos de memória e condições de corrida.
  • Usar ferramentas de profiling (gprof, perf, Valgrind) para encontrar gargalos.
  • Escrever código multithread seguro usando mutexes, semáforos e variáveis de condição.
  • Entender como funcionam a linkagem dinâmica e o carregamento de bibliotecas.
  • Criar aplicações de rede simples com sockets.

Pontos fortes do livro

A primeira e principal vantagem é o foco prático. Cada capítulo contém

Recommendations