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çoCaracterísticas e Aplicações
Processamento em Lote (Batch)Executa tarefas rotineiras automaticamente, sem usuário interativo (ex: apólices de seguros).
Processamento de TransaçõesGerencia 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:

CategoriaDefiniçãoExemplos
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:

IdentificadorSiglaDescrição
Identificação do UsuárioUIDHerdada de quem o iniciou (incluindo filhos).
Identificação do GrupoGIDAssocia usuários a grupos para permissões.
SuperusuárioRootPoderes 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).

ConceitoDefinição
Memória Principal (Física)Hardware real disponível para armazenamento volátil.
Espaço de EndereçamentoConjunto 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ísticaHierarquia de ProcessosHierarquia de Arquivos
ProfundidadeRasa (raramente > 3).Profunda (4, 5+ níveis).
DuraçãoCurta (minutos).Longa (anos).
ControleRestrito (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.

OperadorFunçãoExemplo
>Saídadate >file
<Entradasort <f1 >f2
|Pipecat f1 f2 | sort
&Backgroundcommand &

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 AColuna 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.

ChamadaDescriçã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

ChamadaFunção Principal
chdirAltera o diretório de trabalho atual (relativiza caminhos).
chmodAltera a proteção (ex: octal 0644 = rw-r--r--).
killEnvia sinais a processos (pode forçar encerramento).
timeRetorna 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:

  • a) A instrução TRAP é idêntica a uma chamada de função comum (CALL), pois apenas desvia o fluxo para um endereço de memória onde reside a função do sistema.
  • b) A principal função da TRAP é alternar o estado do processador de modo usuário para modo núcleo (kernel), permitindo a execução de operações privilegiadas de forma segura.
  • c) As chamadas de sistema no padrão POSIX são executadas inteiramente em modo usuário para garantir que uma falha no driver não derrube o sistema operacional.
  • d) O comando read acessa diretamente o hardware do disco sem passar pelo sistema operacional, utilizando a TRAP apenas para notificar o término da leitura.

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

  • (A) A biblioteca coloca o número da chamada de sistema em um registrador.
  • (B) O tratador da chamada de sistema executa a operação solicitada (trabalho real).
  • (C) O programa do usuário empilha os parâmetros (nbytes, &buffer, fd).
  • (D) A instrução TRAP é executada, mudando para modo núcleo.
  • (E) O código do núcleo usa uma tabela de despacho para encontrar o tratador correto.
  • (F) A biblioteca retorna ao programa do usuário, que limpa a pilha.

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);
}

  • a) Qual valor a chamada fork() retorna para o processo pai e qual valor ela retorna para o processo filho?
  • b) Qual é a função da chamada waitpid neste contexto e o que aconteceria com o shell (pai) se ela não fosse utilizada?
  • c) O que a chamada execve faz com a imagem de memória do processo filho?

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".

  • a) Explique o que é o "Epoch" e qual a data base utilizada.
  • b) Sabendo que o valor máximo de um inteiro sem sinal de 32 bits é $2^{32} - 1$, calcule aproximadamente quantos anos esse contador pode registrar a partir do Epoch.
  • c) Por que a migração para arquiteturas de 64 bits é recomendada para solucionar este problema definitivamente?

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

FuncionalidadeUNIXWin32 API
CriaçãoforkCreateProcess
EsperawaitpidWaitForSingleObject
Execuçãoexecve(CreateProcess)
Abrir Arq.openCreateFile

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.

ComponenteFunção Principal
ClienteEnvia requisição via mensagem (ex: Navegador).
ServidorProcessa requisição e retorna (ex: Servidor Web).
Rede/KernelTransporta 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).

TipoCaracterísticaExemplos
Tipo 1Roda bare metal no hardware.Xen, ESXi, Hyper-V
Tipo 2Roda 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.

  • Vantagem: Extrema portabilidade ("escreva uma vez, rode em qualquer lugar").
  • Segurança: Sandbox evita danos por códigos maliciosos da Web.

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

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

  • ( ) Sistemas Monolíticos: Todo o sistema operacional roda como um único programa em modo núcleo; uma falha em um driver de áudio pode travar todo o computador.
  • ( ) Micronúcleos: Visam alta confiabilidade movendo a maior parte do código (como drivers e sistemas de arquivos) para o espaço do usuário; ex: MINIX 3.
  • ( ) Sistemas de Camadas: No modelo do sistema THE, a camada de mais alto nível era responsável pelo gerenciamento de memória e paginação.
  • ( ) Máquinas Virtuais (Tipo 2): O hipervisor roda diretamente sobre o hardware ("bare metal"), sem a necessidade de um sistema operacional hospedeiro como Windows ou Linux.

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

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

  • a) Localização da execução (sobre o que eles rodam?).
  • b) Exemplos de softwares comerciais citados no texto para cada tipo.

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:

  • Estados de execução
  • Escalonamento
  • A distinção crucial entre processos pesados e threads leves.

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. """