Fundamentos de Sistemas Operacionais (FSO)
1. Conceitos Básicos
Um computador é formado por duas partes principais:
- Hardware (parte física)
- Software (programas e instruções)
1.1 Definição
Tanenbaum: Sistema Operacional (SO) é a parte fundamental do software que executa em modo protegido, com acesso total ao hardware e capacidade de executar qualquer instrução da máquina.
- Exemplo: apenas o SO tem acesso direto ao disco, memória e dispositivos. Aplicativos precisam solicitar esse acesso ao SO.
Machado e Maia: O SO é uma aplicação capaz de executar de forma assíncrona, em vez de linear.
- Exemplo: podemos ouvir música, baixar arquivos e usar antivírus ao mesmo tempo; se fosse síncrono, só rodaria uma tarefa por vez.
1.2 Funções
Abstração do hardware (máquina estendida / máquina abstrata):
- O SO atua como interface entre usuário e computador.
- Inicialmente, programadores precisavam conhecer linguagem de máquina e hardware em detalhes.
- Atualmente, o SO esconde a complexidade, simplificando e tornando o uso mais seguro.
Compartilhamento de recursos:
O SO gerencia recursos físicos (CPU, memória, disco, dispositivos) e lógicos de forma organizada e protegida. - Exemplo multiusuário: o SO organiza impressões de vários usuários em uma mesma impressora. - Exemplo monousuário: em um laptop, o SO organiza múltiplas tarefas simultaneamente.
Responsabilidades do SO:
- Gerenciar dispositivos (HD, memória, CPU, periféricos);
- Controlar operações de leitura/escrita;
- Transferir dados entre hardware e memória;
- Informar programas sobre conclusões de operações;
- Definir quem pode acessar quais recursos.
3. Classificação dos Sistemas Operacionais
3.1 Monoprogramáveis / Monotarefa
- Primeiros a surgir.
- Executam apenas uma aplicação por vez.
- Todos os recursos são dedicados a uma única tarefa.
3.2 Multiprogramáveis
- Permitem que múltiplos programas compartilhem recursos.
- Enquanto um programa espera por E/S, outro pode usar o processador.
- Implementação mais complexa.
3.2.1 Classificação por número de usuários:
- Monousuário
- Multiusuário
3.2.2 Classificação pela forma de gerenciamento:
Batch (em lote):
- Programas armazenados e processados em lotes, sem interação do usuário.
- Exemplo: geração de boletos de clientes.
Tempo compartilhado:
- Divisão do tempo do processador em fatias (time-slice).
- Usuários interagem diretamente com o SO.
- Alternância rápida → aparência de simultaneidade.
- Exemplo: celular executando vários aplicativos.
Tempo real:
- Cumprimento rígido de prazos temporais.
- Pontualidade > desempenho.
- Exemplo: controle de tráfego aéreo, airbags, indústria automobilística.
3.3 Sistemas com Múltiplos Processadores
- Dois ou mais processadores trabalhando em conjunto.
- Vários programas executados em paralelo.
- Maior desempenho, escalabilidade e disponibilidade.
Tipos:
- Fortemente acoplados: memória compartilhada.
- Fracamente acoplados: memórias independentes.
4. Sistemas Operacionais Usuais
4.1 Computadores Pessoais
- Desktop, notebooks.
- Exemplo: Windows 10, Ubuntu, Fedora.
4.2 Servidores
- Objetivo: atender vários usuários simultaneamente.
- Serviços: web, e-mail, autenticação.
- Exemplo: Windows Server 2008, CentOS, Red Hat.
4.3 Embarcados
- Equipamentos que não aparentam ser computadores.
- Exemplo: Android, iOS, sistemas embarcados de TVs, micro-ondas, carros.
5. Estrutura dos Sistemas Operacionais
5.1 Básico
- O núcleo (kernel) é responsável por oferecer serviços essenciais.
-
Comunicação com o núcleo:
-
Chamadas de sistema (system calls): exemplo, criar/escrever arquivos.
- Utilitários: interfaces gráficas (gerenciador de arquivos, tarefas).
- Linguagem de comando: terminal (prompt de comando, shell).
5.2 Funções do Núcleo
- Tratamento de interrupções e exceções.
- Criação e eliminação de processos e threads.
- Comunicação e sincronização entre processos.
- Escalonamento de tarefas.
- Gerência de memória e arquivos.
- Controle de dispositivos de E/S.
- Suporte a redes locais e distribuídas.
- Contabilização e auditoria de recursos.
5.3 Modo de Acesso
- Modo Usuário: execução de instruções não privilegiadas.
- Modo Kernel: acesso total às instruções e recursos.
5.4 System Calls
- Permitem que aplicações solicitem serviços privilegiados do SO.
- Executadas em modo kernel.
- O processador alterna entre modo usuário ↔ modo kernel durante chamadas.
5.5 Arquiteturas do Núcleo
5.5.1 Monolíticos
- Núcleo único formado por módulos compilados em um único programa.
- Apenas o SO roda em modo protegido.
- Vantagem: melhor tempo de resposta.
- Desvantagem: difícil manutenção.
- Exemplo: Linux.
5.5.2 Em Camadas
- Dividido em camadas sobrepostas.
- Cada camada acessa apenas a imediatamente inferior.
- Vantagens: isolamento, proteção.
- Desvantagens: menor desempenho, mais trocas de modo.
- Exemplos: THE, MULTICS.
5.5.3 Máquinas Virtuais
- Camada intermediária que cria máquinas virtuais independentes.
- Cada VM possui cópia virtual configurável do hardware.
- Vantagens: isolamento, consolidação de servidores, testes.
- Exemplo: VMware ESX, VirtualBox.
5.5.4 Microkernel
- Modelo cliente-servidor.
- Núcleo mínimo: gerencia processos, memória básica, IPC e interrupções.
- Serviços do SO implementados em nível usuário.
- Vantagens: estabilidade, segurança.
- Desvantagens: implementação complexa, menor desempenho.
5.5.5 Exokernel
- Núcleo mínimo que apenas gerencia recursos básicos (CPU, memória, disco).
- Aplicações acessam diretamente o hardware.
- Vantagens: alta performance, customização.
- Desvantagens: complexidade de uso.
5.5.6 Contêineres
- Alternativa às máquinas virtuais.
- Não emulam hardware nem rodam um SO completo.
- Compartilham o mesmo kernel, mas têm bibliotecas isoladas.
- Exemplo: Docker.
6. Considerações Finais
- O Sistema Operacional é essencial para abstrair, organizar e proteger recursos.
- Diferentes arquiteturas e classificações atendem a necessidades distintas (tempo real, multiprogramação, servidores, embarcados).
- Evoluções recentes como máquinas virtuais e contêineres expandem seu papel para ambientes de nuvem e escalabilidade.