Sistemas Operacionais

Conceitos e Estruturas de Sistemas Operacionais

Professor: Gabriel Soares Baptista

Introdução

Os sistemas operacionais evoluíram drasticamente ao longo de mais de cinco décadas, resultando em uma linhagem tecnológica vasta e heterogênea. Nem todos os modelos desenvolvidos alcançaram o mainstream, mas cada um contribuiu para o estado da arte atual.

Esta seção analisa nove variantes fundamentais, desde arquiteturas robustas para mainframes até microkernels para dispositivos vestíveis.

Isso estabelece uma base conceitual que será revisitada e aprofundada, permitindo uma compreensão clara de como o software de base se adapta a diferentes restrições de hardware e exigências de processamento.

Sistemas operacionais de computadores de grande porte

No topo da hierarquia encontram-se os mainframes. Diferenciam-se drasticamente dos PCs pela sua massiva capacidade de Entrada e Saída (E/S), gerenciando milhares de discos e volumes na escala de milhões de gigabytes, essencial para comércio eletrônico de larga escala (B2B).

Esses sistemas são orientados para processamento simultâneo e oferecem três modalidades:

Modalidade de Serviço Características e Aplicações
Processamento em Lote (Batch) Executa tarefas rotineiras automaticamente, sem usuário interativo (ex: apólices de seguros).
Processamento de Transações Gerencia volume alto de pequenas requisições (ex: compensação de cheques, reservas aéreas).
Tempo Compartilhado (Timesharing) Múltiplos usuários remotos executam tarefas simultaneamente.
Evolução e Tendências

Sistemas operacionais executam todas as funções acima de maneira integrada (ex: OS/390). Observa-se uma transição onde esses sistemas proprietários estão sendo substituídos por variantes UNIX, com destaque para o Linux.

Sistemas operacionais de computadores pessoais

A categoria voltada para computadores pessoais representa a interface mais comum da tecnologia no cotidiano. Atualmente, todos oferecem suporte nativo à multiprogramação, gerenciando dezenas de programas simultaneamente logo na inicialização.

O objetivo primordial é fornecer suporte robusto e intuitivo para um único usuário, facilitando tarefas essenciais como processamento de texto e navegação na internet.

Principais Exemplos

A literatura técnica destaca os seguintes sistemas:

  • Base Unix/BSD: Linux, FreeBSD e OS X (Apple).
  • Base Windows: Windows 7 e Windows 8.

Sistemas operacionais de tempo real

Definem-se pelo tratamento do tempo como parâmetro-chave, essenciais onde a precisão temporal dita o sucesso (ex: controle de maquinário industrial).

A classificação depende da tolerância a falhas temporais:

Categoria Definição Exemplos
Crítico (Hard) Garantias absolutas de instante exato. Falha causa danos. Indústria, aviônica.
Não Crítico (Soft) Perda ocasional de prazo aceitável; sem danos permanentes. Multimídia, smartphones.
Arquitetura e Eficiência

Para garantir prazos nos sistemas críticos, o SO muitas vezes funciona apenas como uma biblioteca conectada diretamente aos programas aplicativos (ex: eCos). Sem proteção entre partes, visando maximizar velocidade de resposta.

Há sobreposição com sistemas embarcados. A diferença: sistemas de tempo real voltam-se ao uso industrial e geralmente não permitem que o usuário adicione softwares próprios.

Conceitos de sistemas operacionais

A compreensão da arquitetura exige o domínio de certas abstrações basilares. Estas estruturas formam o vocabulário essencial para o gerenciamento de recursos em virtualmente todas as plataformas modernas:

  • Processos
  • Espaços de Endereçamento
  • Arquivos

Processos

O conceito de processo é a pedra angular, definido essencialmente como um programa em execução.

Todo processo funciona como um contêiner composto por:

  • Espaço de endereçamento: Faixa de memória (programa executável, dados, pilha).
  • Recursos: Registradores, contador de programa, ponteiro de pilha, arquivos abertos, alarmes.

O sistema operacional alterna periodicamente entre processos ativos. Quando um processo é suspenso, deve ser reiniciado no exato estado em que parou.

A Tabela de Processos

Armazena todas as informações do processo (exceto o espaço de endereçamento). Cada entrada guarda o estado dos registradores, ponteiros e dados críticos. Um processo suspenso consiste em sua imagem do núcleo e sua entrada na tabela.

Hierarquia de Processos

As chamadas de sistema gerenciam o ciclo de vida (ex: o shell cria um processo filho para executar o compilador). Como processos criam processos recursivamente, forma-se uma hierarquia:

Identificador Sigla Descrição
Identificação do Usuário UID Herdada de quem o iniciou (incluindo filhos).
Identificação do Grupo GID Associa usuários a grupos para permissões.
Superusuário Root Poderes para sobrepor regras de proteção.

Processos utilizam sinais (análogos às interrupções de hardware) para comunicação assíncrona.

Espaços de endereçamento

A memória principal armazena programas em execução. A multiprogramação exige convivência de múltiplos programas e proteção robusta (implementada no hardware, gerida pelo SO).

Conceito Definição
Memória Principal (Física) Hardware real disponível para armazenamento volátil.
Espaço de Endereçamento Conjunto de endereços lógicos que um processo pode utilizar.
O Desafio da Escala

Arquiteturas de 32/64 bits geram espaços de $2^{32}$ ou $2^{64}$ bytes, excedendo frequentemente a memória física instalada.

A Solução da Memória Virtual

O SO mantém parte do espaço na RAM e o resto no disco, fazendo swapping. O espaço de endereçamento é desacoplado da memória física, permitindo que o programa utilize mais memória lógica que física.

Arquivos e Diretórios

Uma função primordial do SO é ocultar peculiaridades dos discos, apresentando arquivos independentes do dispositivo manipulados via chamadas (criar, ler, escrever).

Para agrupamento, utiliza-se o conceito de diretório, formando uma hierarquia:

Característica Hierarquia de Processos Hierarquia de Arquivos
Profundidade Rasa (raramente > 3). Profunda (4, 5+ níveis).
Duração Curta (minutos). Longa (anos).
Controle Restrito (pai-filho). Amplo (grupos/usuários).

Nomes de Caminho e Montagem

Todo arquivo possui um nome de caminho (path) a partir do diretório-raiz (ex: /Professores/Prof.Brown/Cursos/CS101). Nomes relativos dependem do diretório de trabalho atual.

Convenção de Caminhos

O Windows usa barra invertida (\) por razões históricas. O UNIX e o ambiente acadêmico utilizam a barra (/).

A montagem (mount) integra sistemas de arquivos removíveis (CD-ROMs, USBs) à árvore principal, eliminando dependência de letras de unidade.

Arquivos Especiais, Pipes e E/S

O UNIX trata dispositivos como arquivos (arquivos especiais):

  • Bloco: Acesso direto (ex: discos).
  • Caracteres: Fluxo (ex: impressoras, modems).

Pipes: Pseudoarquivos conectando dois processos para comunicação (A escreve, B lê):

Entrada/Saída: O subsistema divide-se em software Independente do Dispositivo (interface padronizada genérica) e Específico do Dispositivo (drivers).

Proteção e o Shell

A proteção de arquivos no UNIX usa código de 9 bits para proprietário, grupo e outros (3 bits cada: Read, Write, Execute).

Interpretação do código rwxr-x--x
  • Proprietário (rwx): Leitura, escrita e execução.
  • Grupo (r-x): Leitura e execução (sem escrita).
  • Outros (--x): Apenas execução.

O Interpretador de Comandos (Shell)

O shell (ex: bash) não é o SO, mas a interface que invoca chamadas de sistema. Após exibir o prompt ($), lê o comando, cria processo filho, executa e aguarda.

Operador Função Exemplo
> Saída date >file
< Entrada sort <f1 >f2
| Pipe cat f1 f2 | sort
& Background command &

Questões de fixação - 1 / 3

1. O texto descreve a evolução e a diversidade dos sistemas operacionais. Associe corretamente o tipo de sistema operacional (Coluna A) à sua característica ou exemplo principal (Coluna B).

Coluna A Coluna B
(1) Mainframe / Grande Porte ( ) O sistema operacional funciona frequentemente apenas como uma biblioteca ligada à aplicação; foca em prazos rígidos.
(2) Tempo Real Crítico (Hard) ( ) Otimizado para processar milhares de transações por segundo e gerenciar volumes massivos de E/S; ex: OS/390.
(3) Computadores Pessoais ( ) Sistemas onde a perda ocasional de um prazo é aceitável e não causa danos permanentes; ex: Áudio digital.
(4) Tempo Real Não Crítico (Soft) ( ) Focado em fornecer uma interface robusta para um único usuário e suportar multitarefa para aplicações de escritório e web.

Questões de fixação - 1 / 3 (Continuação)

5. A segurança em sistemas UNIX é gerida por bits de permissão. Considere um arquivo com as permissões exibidas como rwxr-x--x.

  • a) Converta essa representação simbólica para a notação octal utilizada pela chamada chmod (lembrando que r=4, w=2, x=1).
  • b) Descreva detalhadamente o que o Grupo e os Outros usuários podem e não podem fazer com este arquivo.

7. O sistema de arquivos UNIX permite a criação de links. Analise o cenário onde o usuário ast executa o comando link("/usr/jim/memo", "/usr/ast/note").

  • a) O conteúdo do arquivo memo é duplicado no disco para criar o arquivo note? Justifique usando o conceito de i-número.
  • b) Se o usuário jim remover o arquivo original memo usando unlink, o que acontece com o arquivo note de ast e com o conteúdo no disco? Explique o conceito de contador de referências.

Chamadas de Sistema

A interface entre programas e o SO ocorre através de chamadas de sistema (API POSIX). Um processo em modo usuário executa uma instrução de armadilha (TRAP) para transferir controle ao núcleo.

  • 1-3. Empilhamento inverso (C) de parâmetros.
  • 4-5. Chamada de biblioteca, prepara registrador.
    1. TRAP: Muda modo usuário → núcleo.
  • 7-8. Tabela de despacho e Execução.
  • 9-11. Retorno e limpeza da pilha.

Chamadas de Sistema

TRAP vs. Chamada de Rotina

A TRAP muda de modo usuário para núcleo e salta para endereço fixo seguro (vetor de interrupção), diferentemente do CALL normal.

Gerenciamento de Processos

O processo original (pai) cria uma cópia (filho) com fork, duplicando descritores. Variáveis são independentes após a cópia. Retorna zero para filho e PID para o pai.

Chamada Descrição
pid = fork() Cria um processo filho idêntico ao pai.
waitpid(...) Aguarda a conclusão de um processo filho.
execve(...) Substitui a imagem do núcleo de um processo.
Lógica Simplificada do Shell
if (fork() != 0) {
    waitpid(-1, &status, 0); /* Código do processo pai */
} else {
    execve(command, parameters, 0); /* Código do processo filho */
}

Layout de Memória e Gerenciamento de Arquivos

Layout UNIX: Segmento de Texto (código), Dados (variáveis, cresce para cima, brk/malloc), e Pilha (cresce para baixo).

Arquivos:

  • open(file, flags): Retorna descritor de arquivo.
  • Flags: O_RDONLY, O_WRONLY, O_RDWR, O_CREAT.
  • read, write, close.
  • stat/fstat: Metadados do arquivo.

Layout de Memória e Gerenciamento de Arquivos

Funcionamento do lseek

O acesso aleatório usa lseek para alterar o ponteiro com base em: 1) Descritor; 2) Offset; 3) Referência (início, atual, fim).

Gerenciamento de Diretórios

Operações básicas: mkdir e rmdir.
A chamada link cria um i-número referenciado por múltiplos caminhos sem duplicar o arquivo físico.

Estrutura de Diretório

O link cria apenas uma nova entrada de diretório apontando para um i-número existente. O arquivo é excluído apenas via unlink quando o contador de referências chegar a zero.

A chamada mount agrega dispositivos externos (/dev/sdb0) a um diretório na árvore (ex: /mnt), desconectados por umount.

Chamadas de sistema diversas

Chamada Função Principal
chdir Altera o diretório de trabalho atual (relativiza caminhos).
chmod Altera a proteção (ex: octal 0644 = rw-r--r--).
kill Envia sinais a processos (pode forçar encerramento).
time Retorna segundos desde o "Epoch" (1º Janeiro 1970).
O Problema do Ano 2106

Computadores com 32 bits usando inteiro sem sinal ($2^{32} - 1$) atingirão seu limite em cerca de 136 anos após 1970, ou seja, em 2106. É recomendado migrar para 64 bits para evitar falhas sistêmicas análogas ao Bug do Milênio.

Questões de fixação - 2 / 3

2. Sobre o mecanismo de Chamadas de Sistema e a instrução TRAP, analise as afirmações abaixo e assinale a alternativa correta:

8. Ordene cronologicamente as etapas que ocorrem durante a execução da chamada de sistema read, conforme descrito na arquitetura monolítica/POSIX:

Questões de fixação - 2 / 3 (Continuação)

4. O gerenciamento de processos utiliza chamadas específicas como fork e execve. Analise o trecho de código abaixo, que simula um shell simplificado, e responda:

if (fork() != 0) {
    waitpid(-1, &status, 0);
} else {
    execve(command, parameters, 0);
}

Questões de fixação - 2 / 3 (Continuação)

3. Considere um sistema UNIX de 32 bits que utiliza um inteiro sem sinal para contar o tempo (chamada de sistema time). O texto menciona o "Problema do Ano 2106".

Estrutura de sistemas operacionais

A arquitetura interna revela o espectro de possibilidades de design. Adotamos um paralelo entre POSIX e a Win32 API para demonstrar a equivalência funcional, embora o Windows tenha chamadas mais complexas.

Estrutura de sistemas operacionais

Funcionalidade UNIX Win32 API
Criação fork CreateProcess
Espera waitpid WaitForSingleObject
Execução execve (CreateProcess)
Abrir Arq. open CreateFile

As abordagens arquiteturais principais são: Monolíticos, Camadas, Micronúcleos, Cliente-Servidor, Máquinas Virtuais.

Sistemas monolíticos e de camadas

Sistemas Monolíticos:
Único grande binário em modo núcleo. Alta eficiência, mas baixa estabilidade (um driver derruba tudo). Uso de extensões dinâmicas (DLLs).
Três níveis lógicos: Principal, Serviço, Utilitárias.

Sistemas de Camadas:
Hierarquia onde cada nível abstrai hardware (ex: sistema THE).

MULTICS: Usava anéis concêntricos apoiados em hardware para separar privilégios, não apenas como suporte de projeto de software.

Micronúcleos

O objetivo é máxima confiabilidade. Monolíticos podem ter milhares de bugs no núcleo. O micronúcleo mantém o mínimo código em modo privilegiado. Drivers e sistemas de arquivos rodam como processos em espaço de usuário. Uma falha de driver isola-se sem derrubar o SO.

Exemplo: MINIX 3
Núcleo gerencia apenas interrupções, escalonamento e mensagens.

O Servidor de Reencarnação

Monitora drivers e servidores em usuário. Se falharem, são substituídos automaticamente, conferindo "autocura".

O modelo cliente-servidor

Derivado do micronúcleo, divide processos em servidores (prestam serviço) e clientes (consomem). A comunicação dá-se por troca de mensagens.

Componente Função Principal
Cliente Envia requisição via mensagem (ex: Navegador).
Servidor Processa requisição e retorna (ex: Servidor Web).
Rede/Kernel Transporta a mensagem com transparência.

A grande vantagem é a transparência de localização: o cliente ignora se o servidor é local ou via rede distribuída.

Máquinas virtuais

Historicamente iniciada com CP/CMS e VM/370 (hoje z/VM). O Monitor (Hipervisor) separa multiprogramação da abstração; fornece cópias exatas do hardware físico (modo núcleo, E/S).

Máquinas virtuais

Problema x86

Pentium clássico ignorava instruções privilegiadas de usuário, forçando interpretação pesada (resolvido depois).

Tipo Característica Exemplos
Tipo 1 Roda bare metal no hardware. Xen, ESXi, Hyper-V
Tipo 2 Roda sobre Sistema Operacional. VMware Workstation

JVM

A máquina virtual Java (JVM)

Não simula hardware físico. Compila código para bytecode de uma máquina abstrata (JVM), que o interpreta no destino.

Questões de fixação - 3 / 3

6. Sobre as Arquiteturas de Sistemas Operacionais, marque (V) para Verdadeiro ou (F) para Falso:

Questões de fixação - 3 / 3 (Continuação)

9. Diferencie Hipervisores de Tipo 1 e Hipervisores de Tipo 2 com base em:

10. Explique a filosofia do Modelo Cliente-Servidor em sistemas operacionais locais (não em rede) e como ela se relaciona com a arquitetura de Micronúcleos. Cite o benefício de "transparência de localização" mencionado no texto.

Próximos passos

Na próxima aula, Processos e Threads, aprofundaremos nossa visão sobre a unidade fundamental de execução.

Deixaremos de ver o processo apenas como uma abstração estática para entender sua dinâmica interna:

Investigaremos como o sistema operacional orquestra a alternância rápida da CPU para criar a ilusão de paralelismo e como evitar condições de corrida em ambientes concorrentes.
"""