Pular para conteúdo

Aula — Sistemas Operacionais: História, Conceitos e Estruturas

Informações da Aula

Disciplina: Sistemas Operacionais
Professor: Rafael Descio, M.Sc.
Data: Março de 2026


🎯 Objetivos da Aula

  • Entender a necessidade histórica do surgimento dos Sistemas Operacionais
  • Identificar as principais fases evolutivas da computação
  • Compreender o SO como máquina estendida e gerenciador de recursos
  • Diferenciar as estruturas arquiteturais modernas (monolítico, microkernel, híbrido)

🧠 O que é um Sistema Operacional?

Um Sistema Operacional pode ser entendido de duas formas complementares:

1. Máquina Estendida (Abstração)

O SO esconde a complexidade do hardware e oferece uma interface amigável para o programador.

Sem SO Com SO
Setor de disco Arquivo
Execução binária bruta Processo
Endereços físicos Memória virtual

Analogia: É como dirigir um carro. Você pisa no acelerador e vira o volante, mas não precisa controlar a injeção eletrônica, combustão ou sincronismo das válvulas. O painel e os controles são a "máquina estendida".

2. Gerenciador de Recursos (Eficiência)

O SO atua como árbitro decidindo quem usa os recursos, quando e por quanto tempo.

Recursos gerenciados: - CPU - Memória - Disco - Rede - Dispositivos de E/S

Analogia: Pense em um aeroporto. Aviões querem pousar, pistas são limitadas, portões são disputados. O controle de tráfego aéreo é o Sistema Operacional.

Frase do Professor (Do professor substituto)

"A decisão que você toma em alto nível deve ser coerente com o que acontece no baixo nível."


📜 Linha do Tempo dos Sistemas Operacionais

Era Zero: Pré-Sistema Operacional (1940–1955)

Características: - Programação manual via painéis de plugues e chaves - Válvulas eletrônicas (alto consumo, falhas frequentes) - Um programa por vez - Operadores humanos controlavam tudo - Nenhuma abstração de hardware

Problemas: - Máquina ficava ociosa durante o setup manual - Tempo de preparação maior que tempo de execução - Extremamente ineficiente

Marco: ENIAC (1945) — Electronic Numerical Integrator And Computer


2ª Geração: Sistemas em Lote / Batch (1955–1965)

Inovações: - Transistores substituem válvulas → menor aquecimento, mais confiabilidade - Cartões perfurados para entrada de dados - Fitas magnéticas para armazenamento

O Monitor Residente — primeiro "embrião" de SO: - Pequeno programa sempre carregado na memória - Carregava automaticamente o próximo trabalho - Introduziu fila de execução (job queue) - Reduziu intervenção humana

Problema persistente: CPU ainda ficava 90% ociosa esperando E/S (entrada/saída)


3ª Geração: Multiprogramação e Time-Sharing (1965–1980)

Inovações: - Circuitos Integrados (ICs) substituem transistores - Mainframes mais poderosos e confiáveis - Terminais conectados a um computador central

Multiprogramação: - Vários programas na memória simultaneamente - Quando um espera E/S, o SO alterna para outro - Nascem os conceitos de escalonamento e gestão de memória

Time-Sharing (Tempo Compartilhado): - SO divide o tempo da CPU entre múltiplos usuários - Cada usuário sente que tem a máquina inteira - Interação em tempo real

Marcos: CTSS, MULTICS, e o nascimento do UNIX e da Linguagem C

Dica

A linguagem C é considerada a melhor para programação em nível de máquina por sua proximidade com o hardware.


4ª Geração: Computadores Pessoais (1980–2000)

Características: - Sistemas multiusuário e multitarefa - Interfaces gráficas (GUI) - Suporte a redes - Maior abstração de hardware - Proteção de memória e modos usuário/kernel - Sistemas portáveis e padronizados (POSIX)

Padrão ASCII (1960): Padronização dos códigos binários para representar caracteres.


5ª Geração: Dispositivos Móveis e Cloud (2000–hoje)

Características: - SO como plataforma de serviços - Computação distribuída e móvel - Recursos provisionados sob demanda - Kernel é parte de um ecossistema maior - Sistemas embarcados (IoT, Indústria 5.0)

Arquitetura ARM: Dominante em dispositivos móveis e embarcados.

Dica do Professor Rafael Descio

"Quando vai programar, eu preciso entender qual a necessidade de SO. O que eu vou programar? Qual SO vai me servir melhor?"


🔧 Conceitos Fundamentais

Chamadas de Sistema (System Calls)

Programas não acessam o hardware diretamente por segurança. Usam chamadas de sistema:

  • São solicitações formais de serviços ao SO
  • Exemplos: read(), write(), fork()
  • Padronização via APIs (ex: POSIX)

Modos de Execução

Modo Descrição
Modo Usuário Restrito, sem acesso direto ao hardware
Modo Kernel Privilegiado, controle total da máquina

O processador alterna entre esses modos para garantir segurança e integridade.

Sistema de Cache

  • Quanto mais próximo da CPU, mais rápido o acesso
  • Quanto mais próximo da máquina, mais "desagradável" a programação
  • Hierarquia: Registradores → Cache L1 → L2 → L3 → RAM → Disco

🏗️ Estruturas de Sistemas Operacionais

1. Kernel Monolítico

┌─────────────────────────────────────┐
│           MODO KERNEL               │
│  ┌─────────────────────────────┐    │
│  │    Todo o SO num bloco      │    │
│  │  (drivers, sistema de arq,  │    │
│  │   gerência de memória...)   │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘
Vantagens Desvantagens
Alto desempenho Baixo isolamento
Comunicação direta Falha pode derrubar tudo

Exemplos: Linux, Android


2. Microkernel

┌─────────────────────────────────────┐
│          MODO USUÁRIO               │
│  ┌───────┐ ┌───────┐ ┌───────┐     │
│  │Driver │ │Sistema│ │ Rede  │     │
│  │       │ │Arquiv.│ │       │     │
│  └───────┘ └───────┘ └───────┘     │
└─────────────────────────────────────┘
          ↕ IPC ↕ IPC ↕
┌─────────────────────────────────────┐
│           MODO KERNEL               │
│  ┌─────────────────────────────┐    │
│  │     Kernel Mínimo           │    │
│  │  (apenas o essencial)       │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘
Vantagens Desvantagens
Alto isolamento Menor desempenho
Falha de serviço não derruba tudo Comunicação via IPC (mais lenta)

Exemplos: MINIX, QNX, FreeRTOS (Arduino), dispositivos IoT


3. Kernel Híbrido

Combina o desempenho do monolítico com a modularidade do microkernel.

Exemplos: Windows, macOS


Comparativo

Característica Monolítico Microkernel Híbrido
Desempenho Alto Médio Alto
Isolamento Baixo Alto Médio
Complexidade Média Alta Alta
Exemplos Linux MINIX, QNX Windows, macOS

📖 Glossário

Termo Significado
SO Sistema Operacional
Kernel Núcleo do SO, parte que roda em modo privilegiado
Batch Processamento em lote, execução sequencial de jobs
Time-Sharing Compartilhamento de tempo da CPU entre usuários
Multiprogramação Vários programas na memória ao mesmo tempo
POSIX Padrão de interface para sistemas operacionais Unix-like
IPC Inter-Process Communication (comunicação entre processos)
ASCII Padrão de codificação de caracteres (1960)
System Call Chamada de sistema, solicitação de serviço ao SO
Assembly Linguagem de programação de baixo nível

🎬 Para Aprofundar

Recurso Link/Descrição
Livro Sistemas Operacionais Modernos, 5ª Ed. - Tanenbaum e Bos (2022)
Vídeo O que é Sistema Operacional - Crash Course
Vídeo O que é Linux - Diolinux

✅ Perguntas para Fixação

Responda as perguntas abaixo para consolidar o aprendizado:

1. Máquina Estendida

Explique com suas palavras o que significa dizer que o SO é uma "máquina estendida". Dê um exemplo prático de abstração que o SO oferece.

2. Evolução Histórica

Por que os Sistemas Operacionais surgiram? Qual era o principal problema da era pré-SO (1940-1955) que motivou a criação do Monitor Residente?

3. Multiprogramação

Qual a diferença entre processamento em lote (batch) e multiprogramação? Por que a multiprogramação foi uma evolução importante?

4. Arquiteturas de Kernel

Compare o Kernel Monolítico e o Microkernel. Em qual situação você usaria cada um? (Dica: pense em desempenho vs. segurança/isolamento)