Professor: Gabriel Soares Baptista
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.
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. |
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.
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.
A literatura técnica destaca os seguintes sistemas:
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. |
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.
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:
O conceito de processo é a pedra angular, definido essencialmente como um programa em execução.
Todo processo funciona como um contêiner composto por:
O sistema operacional alterna periodicamente entre processos ativos. Quando um processo é suspenso, deve ser reiniciado no exato estado em que parou.
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.
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.
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. |
Arquiteturas de 32/64 bits geram espaços de $2^{32}$ ou $2^{64}$ bytes, excedendo frequentemente a memória física instalada.
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.
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). |
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.
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.

O UNIX trata dispositivos como arquivos (arquivos especiais):
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).
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).
rwxr-x--xrwx): Leitura, escrita e execução.r-x): Leitura e execução (sem escrita).--x): Apenas execução.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 & |
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. |
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.
chmod (lembrando que r=4, w=2, x=1).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").
memo é duplicado no disco para criar o arquivo note? Justifique usando o conceito de i-número.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.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.

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.
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. |
if (fork() != 0) {
waitpid(-1, &status, 0); /* Código do processo pai */
} else {
execve(command, parameters, 0); /* Código do processo filho */
}
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.O_RDONLY, O_WRONLY, O_RDWR, O_CREAT.read, write, close.stat/fstat: Metadados do arquivo.O acesso aleatório usa lseek para alterar o ponteiro com base em: 1) Descritor; 2) Offset; 3) Referência (início, atual, fim).
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.

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.
| 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). |
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.
2. Sobre o mecanismo de Chamadas de Sistema e a instrução TRAP, analise as afirmações abaixo e assinale a alternativa correta:
CALL), pois apenas desvia o fluxo para um endereço de memória onde reside a função do sistema.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:
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);
}
fork() retorna para o processo pai e qual valor ela retorna para o processo filho?waitpid neste contexto e o que aconteceria com o shell (pai) se ela não fosse utilizada?execve faz com a imagem de memória do processo filho?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 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.

| 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: Ú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.
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.
Monitora drivers e servidores em usuário. Se falharem, são substituídos automaticamente, conferindo "autocura".
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.
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).


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 |
Não simula hardware físico. Compila código para bytecode de uma máquina abstrata (JVM), que o interpreta no destino.
6. Sobre as Arquiteturas de Sistemas Operacionais, marque (V) para Verdadeiro ou (F) para Falso:
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.
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. """