1 of 35

MC504 Sistemas Operacionais

Prof. Dr. Eng. Isaías Bittencourt Felzmann

isaias@ic.unicamp.br

Campinas, 2s/2026

Serviços do SO

1/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

2 of 35

Aviso Legal

The following set of slides are copyright Silberschatz, Galvin and Gagne, 2018. Modifications were made for their use in conjunction with MC504. The original material is available at os-book.com .

Os direitos autorais do conjunto de slides a seguir pertencem a Silberschatz, Galvin and Gagne, 2018. Foram feitas modificações para seu uso em MC504. O material original está disponível em os-book.com .

Este material foi elaborado com apoio de ferramentas de IA generativa como recurso auxiliar. O conteúdo foi revisado, validado e é de responsabilidade do docente.

2/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

3 of 35

Serviços do Sistema Operacional

  • Os sistemas operacionais fornecem um ambiente para a execução de programas e serviços a programas e usuários
  • Um conjunto de serviços do sistema operacional fornece funções úteis ao usuário:
    • Interface com o usuário - Quase todos os sistemas operacionais possuem uma interface com o usuário (UI).
      • Varia entre Linha de Comando (CLI), Interface Gráfica de Usuário (GUI), tela sensível ao toque
    • Execução de programas - O sistema deve ser capaz de carregar um programa na memória e executá-lo, encerrando a execução de forma normal ou anormal (indicando erro)
    • Operações de E/S - Um programa em execução pode exigir E/S, que pode envolver um arquivo ou um dispositivo de E/S
    • Manipulação do sistema de arquivos - O sistema de arquivos é de particular interesse. Os programas precisam ler e escrever arquivos e diretórios, criá-los e excluí-los, pesquisá-los, listar informações de arquivos e gerenciar permissões.

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

3/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

4 of 35

Serviços do Sistema Operacional

  • Um conjunto de serviços do sistema operacional fornece funções que são úteis ao usuário:
    • Comunicações – Processos podem trocar informações, no mesmo computador ou entre computadores em uma rede
      • As comunicações podem ocorrer via memória compartilhada ou por troca de mensagens (pacotes movidos pelo SO)
    • Detecção de erros – o SO precisa estar constantemente atento a possíveis erros
      • Podem ocorrer no hardware da CPU e de memória, em dispositivos de E/S, no programa do usuário
      • Para cada tipo de erro, o SO deve tomar a ação apropriada para garantir uma computação correta e consistente
      • Recursos de depuração podem melhorar significativamente a capacidade do usuário e do programador de usar o sistema de forma eficiente

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

4/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

5 of 35

Serviços do Sistema Operacional

  • Outro conjunto de funções do SO para garantir a operação eficiente do próprio sistema por meio do compartilhamento de recursos
    • Alocação de recursos - Quando há múltiplos usuários ou múltiplos jobs executando simultaneamente, os recursos devem ser alocados a cada um deles
      • Muitos tipos de recursos - ciclos de CPU, memória principal, armazenamento de arquivos, dispositivos de E/S.
    • Registro (logging) - Para acompanhar quais usuários usam quanto e que tipos de recursos computacionais
    • Proteção e segurança - Os proprietários de informações armazenadas em um sistema de computador multiusuário ou em rede podem querer controlar o uso dessas informações; processos concorrentes não devem interferir uns nos outros
      • Proteção envolve garantir que todo acesso aos recursos do sistema seja controlado
      • Segurança do sistema contra agentes externos requer autenticação de usuário, estendendo-se à defesa de dispositivos de E/S externos contra tentativas de acesso inválidas

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

5/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

6 of 35

Serviços do Sistema Operacional

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

6/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

7 of 35

Interpretador de Linha de Comando

  • CLI permite a entrada direta de comandos
  • Às vezes implementado no kernel, às vezes por um programa de sistema
  • Às vezes múltiplas variantes implementadas – shells
  • Primariamente obtém um comando do usuário e o executa
  • Às vezes os comandos são embutidos, às vezes apenas nomes de programas
    • Neste último caso, adicionar novos recursos não exige modificação do shell

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

7/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

8 of 35

Bourne Shell

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

8/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

9 of 35

Interface com o Usuário - GUI

  • Interface gráfica baseada na metáfora da área de trabalho (desktop)
    • Geralmente mouse, teclado e monitor
    • Ícones representam arquivos, programas, ações, etc
    • Vários botões do mouse sobre objetos na interface causam várias ações (fornecer informações, opções, executar função, abrir diretório (conhecido como pasta)
    • Inventada no Xerox PARC
  • Muitos sistemas hoje incluem tanto interfaces CLI quanto GUI
    • Microsoft Windows é GUI com o CLI “prompt de comando”
    • Apple Mac OS X é a interface GUI “Aqua” com o kernel UNIX por baixo e shells disponíveis
    • Unix e Linux têm CLI com interfaces GUI opcionais (CDE, KDE, GNOME)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

9/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

10 of 35

Interfaces de Tela Sensível ao Toque

  • Dispositivos de tela sensível ao toque exigem novas interfaces
    • Mouse não é possível ou não é desejado
    • Ações e seleção baseadas em gestos
    • Teclado virtual para entrada de texto
    • Comandos de voz

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

10/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

11 of 35

A Interface Gráfica (GUI) do Mac OS X

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

11/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

12 of 35

Chamadas de sistema

  • Interface de programação para os serviços oferecidos pelo SO
  • Normalmente escritas em uma linguagem de alto nível (C ou C++)
  • Em geral acessadas pelos programas por meio de uma API de alto nível, em vez do uso direto de chamadas de sistema
  • As três APIs mais comuns são a Win32 API para Windows, a POSIX API para sistemas baseados em POSIX (incluindo praticamente todas as versões de UNIX, Linux e Mac OS X) e a Java API para a Java virtual machine (JVM)

Note que os nomes de chamadas de sistema usados ao longo deste texto são genéricos

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

12/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

13 of 35

Exemplo de Chamadas de sistema

  • Sequência de chamadas de sistema para copiar o conteúdo de um arquivo para outro arquivo

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

13/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

14 of 35

Exemplo de API Padrão

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

14/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

15 of 35

Implementação de Chamadas de sistema

  • Normalmente, um número é associado a cada chamada de sistema
    • Interface de chamada de sistema mantém uma tabela indexada de acordo com esses números
  • A interface de chamada de sistema invoca a chamada de sistema pretendida no kernel do SO e retorna o status da chamada de sistema e quaisquer valores de retorno
  • O chamador não precisa saber nada sobre como a chamada de sistema é implementada
    • Basta obedecer à API e entender o que o SO fará como resultado da chamada
    • A maioria dos detalhes da interface do SO fica oculta do programador pela API
      • Gerenciada pela biblioteca de suporte em tempo de execução (conjunto de funções embutidas em bibliotecas incluídas com o compilador)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

15/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

16 of 35

API – Chamada de sistema – SO

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

16/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

17 of 35

Passagem de Parâmetros

  • Frequentemente, são necessárias mais informações do que apenas a identidade da chamada de sistema desejada
    • O tipo e a quantidade exata de informação variam conforme o SO e a chamada
  • Três métodos gerais usados para passar parâmetros ao SO
    • Mais simples: passar os parâmetros em registradores
      • Em alguns casos, pode haver mais parâmetros do que registradores
    • Parâmetros armazenados em um bloco, ou tabela, na memória, e o endereço do bloco passado como parâmetro em um registrador
      • Abordagem adotada pelo Linux e pelo Solaris
    • Parâmetros colocados, ou empilhados, na pilha pelo programa e desempilhados da pilha pelo Sistema Operacional
    • Os métodos de bloco e pilha não limitam o número nem o tamanho dos parâmetros passados

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

17/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

18 of 35

Passagem de Parâmetros via Tabela

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

18/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

19 of 35

Exemplos de Chamadas de sistema do Windows e do Unix

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

19/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

20 of 35

Exemplo da Biblioteca Padrão do C

  • Programa em C invocando a chamada de biblioteca printf(), que chama a chamada de sistema write()

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

20/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

21 of 35

Linkers e Loaders

  • Código-fonte compilado em arquivos objeto projetados para serem carregados em qualquer localização de memória física – arquivo objeto realocável
  • Linker combina esses em um único executável binário
    • Também incorpora bibliotecas
  • O programa reside no armazenamento secundário como executável binário
  • Deve ser trazido para a memória pelo loader para ser executado
    • A realocação atribui endereços finais às partes do programa e ajusta o código e os dados do programa para corresponder a esses endereços
  • Sistemas modernos de uso geral não vinculam bibliotecas aos executáveis
    • Em vez disso, bibliotecas dinâmicas (no Windows, DLLs) são carregadas conforme necessário, compartilhadas por todos que usam a mesma versão dessa mesma biblioteca (carregada uma única vez)
  • Arquivos objeto e executáveis têm formatos padronizados, assim o Sistema Operacional sabe como carregá-los e iniciá-los

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

21/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

22 of 35

O Papel do Linker e do Loader

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

22/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

23 of 35

Por que Aplicações são Específicas de um SO

  • Aplicações compiladas em um sistema geralmente não são executáveis em outros Sistemas Operacionais
  • Cada Sistema Operacional fornece suas próprias chamadas de sistema exclusivas
    • Formatos de arquivo próprios, etc.
  • Aplicações podem ser multi-Sistema Operacional
    • Escritas em linguagem interpretada como Python, Ruby, e o interpretador disponível em vários Sistemas Operacionais
    • Aplicação escrita em linguagem que inclui uma VM contendo a aplicação em execução (como Java)
    • Usar linguagem padrão (como C), compilar separadamente em cada Sistema Operacional para executar em cada um
  • Interface Binária de Aplicação (ABI) é o equivalente em arquitetura da API, define como diferentes componentes de código binário podem se interfacear para um dado Sistema Operacional em uma dada arquitetura, CPU, etc.

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

23/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

24 of 35

Estrutura do Sistema Operacional

  • SO de propósito geral é um programa muito grande
  • Várias formas de estruturá-lo
    • Estrutura simples – MS-DOS
    • Mais complexa – UNIX
    • Em camadas – uma abstração
    • Microkernel – Mach

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

24/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

25 of 35

Estrutura Monolítica – UNIX Original

  • UNIX – limitado pela funcionalidade do hardware, o Sistema Operacional UNIX original tinha estruturação limitada.
  • O Sistema Operacional UNIX é composto por duas partes separáveis
    • Programas de sistema
    • O Kernel
      • Consiste em tudo abaixo da interface de chamada de sistema e acima do hardware físico
      • Fornece o sistema de arquivos, escalonamento de CPU, Gerenciamento de Memória e outras funções do Sistema Operacional; um grande número de funções para um único nível

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

25/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

26 of 35

Estrutura Tradicional do Sistema UNIX

Além de simples, mas não totalmente em camadas

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

26/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

27 of 35

Abordagem em Camadas

  • O Sistema Operacional é dividido em várias camadas (níveis), cada uma construída sobre as camadas inferiores. A camada mais baixa (camada 0) é o hardware; a mais alta (camada N) é a interface com o usuário.
  • Com a modularidade, as camadas são selecionadas de modo que cada uma utilize funções (operações) e serviços apenas de camadas de nível inferior

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

27/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

28 of 35

Microkernels

  • Move o máximo possível do kernel para o espaço de usuário
  • Mach é um exemplo de microkernel
    • Kernel do Mac OS X (Darwin) parcialmente baseado no Mach
  • A comunicação ocorre entre módulos de usuário usando troca de mensagens
  • Vantagens:
    • Mais fácil de estender um microkernel
    • Mais fácil de portar o Sistema Operacional para novas arquiteturas
    • Mais confiável (menos código executando em modo kernel)
    • Mais seguro
  • Desvantagens:
    • Sobrecarga de desempenho na comunicação entre espaço de usuário e espaço de kernel

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

28/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

29 of 35

Estrutura de Sistema com Microkernel

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

29/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

30 of 35

Módulos

  • Muitos sistemas operacionais modernos implementam módulos de kernel carregáveis (LKMs)
    • Usa abordagem orientada a objetos
    • Cada componente central é separado
    • Cada um se comunica com os outros por interfaces conhecidas
    • Cada um é carregável conforme necessário dentro do kernel
  • No geral, semelhante a camadas, mas mais flexível
    • Linux, Solaris, etc.

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

30/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

31 of 35

Sistemas Híbridos

  • A maioria dos Sistemas Operacionais modernos não segue um único modelo puro
    • O híbrido combina múltiplas abordagens para atender às necessidades de desempenho, segurança e usabilidade
    • Os kernels do Linux e do Solaris ficam no Espaço de Endereçamento do kernel, portanto são monolíticos, além de modulares para o carregamento dinâmico de funcionalidades
    • Windows é majoritariamente monolítico, além de microkernel para diferentes personalidades de subsistema
  • Apple Mac OS X é híbrido, em camadas, Aqua como interface, além do Cocoa como ambiente de programação
    • Abaixo está o kernel, composto pelo microkernel Mach e por partes do BSD Unix, além do kit de E/S e de módulos carregáveis dinamicamente (chamados de extensões do kernel)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

31/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

32 of 35

Inicialização do Sistema

  • Quando a energia é inicializada no sistema, a execução começa em um endereço de memória fixo
  • O Sistema Operacional deve ser disponibilizado ao hardware para que o hardware possa iniciá-lo
    • Pequeno trecho de código – carregador de boot, BIOS, armazenado na ROM ou EEPROM, localiza o Kernel, carrega-o na memória e o inicia
    • Às vezes é um processo de duas etapas em que o bloco de boot em local fixo é carregado pelo código da ROM, que carrega o carregador de boot a partir do disco
    • Sistemas modernos substituem o BIOS pela Unified Extensible Firmware Interface (UEFI)
  • Um carregador de boot comum, o GRUB, permite a seleção do Kernel a partir de múltiplos discos, versões e opções de Kernel
  • O Kernel é carregado e o sistema fica então em execução
  • Os carregadores de boot frequentemente permitem vários estados de boot, como o modo monousuário

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

32/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

33 of 35

Depuração do Sistema Operacional

  • Depuração é encontrar e corrigir erros, ou bugs
  • Também ajuste de desempenho
  • O SO gera arquivos de log (registro) contendo informações de erro
  • A falha de uma aplicação pode gerar um arquivo core dump que captura a memória do processo
  • A falha do sistema operacional pode gerar um arquivo crash dump que contém a memória do kernel
  • Além das falhas, o ajuste de desempenho pode otimizar o desempenho do sistema
    • Às vezes utilizando listagens de trace de atividades, registradas para análise
    • Profiling é a amostragem periódica do apontador de instruções para buscar tendências estatísticas

Lei de Kernighan: “Depurar é duas vezes mais difícil do que escrever o código em primeiro lugar. Portanto, se você escrever o código da forma mais engenhosa possível, você, por definição, não é inteligente o suficiente para depurá-lo.”

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

33/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

34 of 35

Rastreamento (Tracing)

  • Coleta dados de um evento específico, como as etapas envolvidas na invocação de uma chamada de sistema
  • As ferramentas incluem
    • strace – rastreia as chamadas de sistema invocadas por um processo
    • gdb – depurador em nível de código-fonte
    • perf – conjunto de ferramentas de desempenho do Linux
    • tcpdump – coleta pacotes de rede

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

34/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

35 of 35

Bibliografia

Capítulo 1.

Capítulo 2.

35/35

rev. 2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais