Capítulo 1.4 - Arquitetura de Alto Nível
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender a estrutura de um sistema Linux
- Identificar os componentes do Kernel
- Identificar os componentes do Espaço do Usuário
- Entender a comunicação entre os componentes
Introdução
Um sistema Linux é organizado em várias camadas que trabalham juntas. Compreender essa arquitetura é essencial para dominar o Linux.
Visão Geral de um Sistema
Estrutura Básica
Dois espaços principais:
- Espaço do Usuário: Aplicativos e programas do usuário
- Espaço do Kernel: Gerenciamento do sistema e do hardware
Espaço do Usuário (User Space)
Aplicativos
Programas que você utiliza:
- Navegadores web
- Editores de texto
- Ferramentas de desenvolvimento
- Jogos, etc.
Shell
Interface de linha de comando:
- Bash: Shell padrão na maioria das distribuições
- Zsh: Shell moderno e poderoso
- Fish: Shell amigável
Bibliotecas
Funções compartilhadas:
- libc: Biblioteca C padrão
- Outras: Bibliotecas especializadas
Serviços
Programas em segundo plano:
- systemd: Gerenciador de serviços
- cron: Agendamento de tarefas
- sshd: Servidor SSH
Espaço do Kernel (Kernel Space)
Kernel Linux
O núcleo do sistema:
- Gerenciamento de Processos: Criação, escalonamento, finalização
- Gerenciamento de Memória: Alocação, swap, proteção
- Sistema de Arquivos: VFS, gerenciamento de arquivos
- Gerenciamento de Rede: Stack TCP/IP, interfaces
- Gerenciamento de Dispositivos: Drivers de hardware
Chamadas de Sistema (Syscalls)
Interface entre User Space e Kernel Space:
open(),read(),write(): Arquivosfork(),exec(): Processossocket(),bind(): Redemmap(): Memória
Comunicação Entre Camadas
Fluxo Típico
Componentes de Hardware
CPU
- Execução de instruções
- Gerenciamento de processos
- Escalonamento (scheduler)
Memória RAM
- Armazenamento temporário
- Dados e código em execução
- Cache do sistema
Disco Rígido
- Armazenamento persistente
- Sistema de arquivos
- Swap (extensão da RAM)
Rede
- Interfaces de rede
- Comunicação com outros sistemas
- Protocolos de rede
Separação User/Kernel Space
Por que essa Separação?
Segurança:
- Aplicativos não podem acessar diretamente o hardware
- Proteção contra erros
- Isolamento de processos
Estabilidade:
- Erro em um aplicativo não afeta o kernel
- O sistema permanece estável mesmo se um app travar
Performance:
- Kernel otimizado para o hardware
- Aplicativos podem ser menos otimizados
Resumo
Neste capítulo, você aprendeu:
Arquitetura: User Space + Kernel Space + Hardware
User Space: Aplicativos, Shell, Bibliotecas, Serviços
Kernel Space: Kernel Linux, Chamadas de Sistema, Gerenciamento de recursos
Comunicação: Via chamadas de sistema (syscalls)
Separação: Segurança, estabilidade, performance
Hardware: CPU, RAM, Disco, Rede
Próximos Passos
Capítulo 1.5: Conceitos Fundamentais
Capítulo 1.6: Instalação e Primeiros Passos
Capítulo criado em: Dezembro 2024