Você está na página 1de 258

www.cliqueapostilas.com.

br

Sistemas Operacionais
Organização e Arquitetura
(para concursandos da ÁREA de TI)
TI

Prof. Marcus Belfort


Brasília/DF
professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 1

Conceitos Básicos
Histórico
Arquiteturas

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Fun ções b
Funções ásicas: gerenciar recursos
básicas: 3

• Facilitação de acesso (abstrair detalhes do hardware)


• Compartilhamento organizado e protegido

usuários
programadores programas,
e analistas sistemas e
aplicativos

Usuários

Sistema Operacional

memória discos

Hardware

fitas
UCP

impressoras monitores
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Fun ções b
Funções ásicas: computador em camadas
básicas: 4

Aplicativos

Utilitários

Sistema Operacional

Linguagem de Máquina

Microprogramação

Circuitos Eletrônicos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Hist órico
Histórico 5

•Primeira geração (1945 – 1955)


–Não havia Sistemas Operacionais
–Válvulas, painéis de programação
•Segunda geração (1955 – 1965)
–Perfuradoras de cartão
–Transistores, sistemas em lote (job único/inteiro)
•Terceira geração (1965 – 1980)
–CI´s e multiprogramação (jobs em lote)
–Sistemas de tempo compartilhado (time-sharing)
–Surgimento das LAN e primeiros SOR
•Quarta geração (1980 – presente)
–Computadores pessoais
–Primeiras linguagens concorrentes
–Incremento no uso de threads
–Suporte a multiprocessamento
–Padronização de GUI´s e API´s (compatibilização)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Taxonomia de hardware [[Flynn
Flynn 1972] 6

•SISD (Single Instruction stream over a Single Data stream)


– uma Sequência de Instruções, uma Sequência de Dados (apenas uma UC)
– Computadores sequenciais convencionais
•SIMD (Single Instruction stream over a Multiple Data stream)
– uma Sequência de Instruções, Múltiplas Sequências de Dados (apenas uma UC)
– Processador matricial (cada UP com sua memória e dados próprios)
– Processador vetorial (cada core com vários pipelines ou várias ALU´s)
•MISD (Multiple Instruction stream over a Single Data stream)
– Múltiplas Sequências de Instruções, uma Sequência de Dados (várias UC)
– (não existem computadores construídos que se enquadrem nesta categoria.
•MIMD (Multiple Instruction stream over a Multiple Data stream)
– Múltiplas Sequências de Instruções, Múltiplas Sequências de Dados (várias UC)
– Sistemas multiprocessadores
– Sistemas multicomputadores

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sistemas Operacionais: tipos de processamento 7

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Monoprograma ção x Multiprograma
Monoprogramação ção
Multiprogramação 8

programa/ programa/
tarefa UCP tarefa
UCP
programa/
tarefa

Memória Dispositivos
Principal de E/ S
Memória Dispositivos
Principal de E/ S

programa/ programa/
tarefa tarefa

programa/
tarefa

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Acoplamento 9

Memória
UCP Principal UCP

Forte

Dispositivos Dispositivos
de E/ S de E/ S

link de comunicação

UCP UCP

Fraco

Memória Dispositivos Memória Dispositivos


Principal de E/ S Principal de E/ S

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Classifica ção dos SO
Classificação 10

•Quanto ao número de aplicativos


–Monoprogramação (monotarefa)
–Multiprogramação (multitarefa)
•Quanto ao número de usuários
–Monousuário
–Multiusuário
•Quanto à quantidade de processadores
–Monoprocessado
–Multiprocessado (simétrico e assimétrico)
•Quanto ao compartilhamento da memória
–Fortemente acoplados
–Fracamente acoplados
•Quanto ao tipo de trabalho
–Lote (batch)
–Tempo compartilhado (time-sharing)
–Tempo real

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Ambientes de SO 11

•SO de computadores de grande porte


•SO de servidores (de rede)
•SO de multiprocessadores
•SO de computadores pessoais
•SO de tempo-real (compromisso com o tempo)
– Críticos (compromisso rígido)
– Não-críticos (compromisso elástico)
•SO de missão crítica (não podem parar)
•SO de cartões inteligentes (smart cards)
•SO embarcados*

*Sistema Embarcado (ou sistema embutido)


•Sistema microprocessado dedicado
•Diferente de computadores de propósito geral, como o computador pessoal
•Computador é encapsulado (dedicado ao dispositivo ou sistema que ele controla)
•Conjunto de tarefas predefinidas (fixas), geralmente com requisitos específicos
•Otimização do projeto: baixar custos, aumentar eficiência, miniaturização

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sistemas fechados x Sistemas abertos 12

•Windows
–Código proprietário (fechado)
–GUI - cada vez mais oferecendo CLI
–Pago (licenciamento)
•Linux
–Código disponibilizado livremente (aberto)
–CLI - cada vez mais oferecendo GUI
–Gratuito

GUI (Graphical User Interface)


CLI (Command Line Interface)
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Atributos desej áveis em um SO
desejáveis 13

•Desempenho (eficiência x eficácia)


•Baixo custo
•Segurança
–Controle de acesso
–Criptografia
–Rastreabilidade
–Redundâncias
•Robustez (estabilidade em condições extremas)
•Escalabilidade
•Extensibilidade
•Portabilidade
•Usabilidade
•Padronização
•Manutenibilidade

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Estrutura llógica
ógica de um SO 14

Usuário

Shell
Aplicação (interpretador de comandos)
(não faz parte do kernel)

Modo usuário
System Calls (API´s)
Sistema Operacional
Núcleo* (kernel)

Drivers

Hardware

* PRINCIPAIS ROTINAS DO KERNEL


•Escalonador de processo
•Gerenciador de memória
•Gerenciador de E/S
•Gerenciador do sistema de arquivos
•Gerenciador de comunicação interprocessos (IPC)
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Modos de operação
operação 15

•Processo pode executar em dois modos


–Modo usuário
–Modo núcleo
•Modo usuário: só são executadas as instruções que
–Não precisam de privilégios
–Não controlam o HW diretamente
•Modo núcleo: são executadas as instruções que
–Permitem acesso às rotinas do kernel (privilegiadas)
–Permitem acesso direto ao hardware
–(Mecanismo de proteção e controle do SO)
•Chaveamento de modo (troca entre modos)
–É implementada no nível de hardware (set de flags pelo SO)
–Consome recursos do processador (pára a execução)
–<> de Troca de contexto (escalonamento de processos)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquiteturas de SO 16

•Forma de organização e interação dos componentes


•Definição da complexidade do núcleo
•Principais arquiteturas
–Monolítica
–Em camadas
–Micronúcleo (cliente-servidor)
–Máquina Virtual
–Exokernel

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquitetura monolítica
monolítica 17

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquitetura monolítica
monolítica 18

•Mais antiga e mais comum


•Componentes do núcleo contidos em bloco único
•Todas as funções interagem livremente entre si
•Simples e de bom desempenho (DOS e primeiros UNIX)
•Difícil de isolar fontes de problemas e erros

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquitetura em camadas 19

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquitetura em camadas 20

•Organiza as funções similares em camadas


•Uma camada comunica-se com as camadas vizinhas
•Uma camada presta serviço à camada de cima
•Facilita a construção, uso e manutenção do SO
•Requisição de serviço pode atravessar várias camadas
–invocando métodos adicionais de passagem de parâmetros
–degradando o desempenho

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquitetura de micron úcleo (cliente
micronúcleo -servidor)
(cliente-servidor) 21

Gerenciador de
Gerenciador de Impressão
Memória

O GDI (Graphics Device Interface), é


um dos três subsistemas principais do
Microsoft Windows. É um padrão
desse sistema operacional para
representar objectos gráficos e
transmiti-los para dispositivos de
saída, como monitores e impressoras.
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquitetura de micron úcleo (cliente
micronúcleo -servidor)
(cliente-servidor) 22

•Funções do núcleo: reduzidas ao extremo (leve e simples)


•Serviços disponibilizados como processos (modo usuário)
–Aplicação solicitante é o cliente
–Processo demandado é o servidor
•Função do núcleo:
–Gerenciar comunicação Cliente/Servidor (IPC)
–Escalonamento, Interrupções, E/S
•Independência entre componentes:
–Facilidade de desenvolvimento e manutenção
–Falha em um serviço não prejudica os outros
•Alto grau de modularidade: portável, extensível e escalável
•Implementação pura, na prática é difícil
–Baixo desempenho: se excessiva troca de modos
–Acesso ao hardware: exige acionamento do núcleo
•Solução: combinação com arquitetura em camadas

professorbelfort@gmail.com
www.cliqueapostilas.com.br
M áquina Virtual
Máquina 23

•Camada intermediária entre o SO e o hardware


•Diversas máquinas virtuais independentes (VM)
–Cópia virtual do hardware completa
–Sistemas Operacionais diferentes
•Isolamento total entre máquinas (e respectivas falhas)

VM 1

VM 2

VM n
Ap1 Ap2 Apn

SO1 SO2 SOn

HV1 HV2 HVn

Gerência de Máquinas Virtuais

Hardware

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Exokernel 24

•Arquitetura semelhante às Máquinas Virtuais


•Camada virtualizadora está no topo do núcleo
•Disponibilizadas diversas máquinas virtuais independentes
•Cada máquina:
–É um subconjunto de recursos da máquina real
–Pode usar um Sistema Operacional diferente
•Vantagem: dispensa a camada externa de virtualização

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Tipo de kernel 25

•Linux: monolítico-modular
•Windows: microkernel-monolítico

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Linguagens 26

•Gerações das linguagens


–3ª geração - Linguagem de alto nível
• Sequenciais
• Estruturadas
• Orientadas a objetos (classes, propriedade e métodos)
–2ª geração - Linguagem de montagem
–1ª geração - Linguagem de máquina
•Linguagens de construção dos SO
–C
–C++
–Assembly (p/ alguns drivers)
•Filosofia multiplataforma da linguagem Java (JVM)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
27
Cria ção do programa
Criação
Linguagem de alto nível (3ª e 4ª gerações)
•Compilador
–Análise Léxica
–Análise Sintática
–Análise Semântica
–Código intermediário
–Otimização: código-objeto não-executável
•Ligação (linker)
–Integração de várias bibliotecas (módulos pré-compilados)
–Gera uma grande unidade executável
•Carregamento
Linguagem de baixo nível (Assembly)
•Montador (Assembler): código-objeto não-executável
•Ligação (linker)
–Integração de várias bibliotecas (módulos pré-compilados)
–Gera uma grande unidade executável
•Carregamento professorbelfort@gmail.com
API ((Application
Application Programming Interface) www.cliqueapostilas.com.br
28

•Interface de Programação de Aplicativos


•Conjunto de rotinas e padrões desenvolvido para cada SO
•Disponibiliza os serviços do SO para os programadores
•Tornam transparentes os detalhes da programação
•Protegem sistema contra acessos indevidos das aplicações
•Uso de API gera chamadas ao sistema e mudança de modo
•Cada API tem sua própria sintaxe e documentação
•Padronização de API´s
–Win32
–POSIX

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mecanismos de proteção de um SI
proteção 29

•Processador
–Modos: usuário x kernel (real x protegido)
–Instrução privilegiada
•Memória
–Registrador de limite superior
–Registrador de limite inferior
•Execução
–Interrupção e exceção
–Temporizador
•Disco
–Permissão
–Criptografia
•Rede
–Autenticação
–Firewall
•Princípio do privilégio mínimo
–UAC (Windows Vista)
–su (Unix)
professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 2

Processos e Trheads

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Processo 31

•Um processo é um programa em execução (está na RAM)


•Como processo, um programa pode
–Alocar recursos
–Compartilhar dados
–Trocar informações e
–Sincronizar sua execução
•SO cria um contexto de execução para rodar um programa
–Área da RAM a ser usada
–Abertura de arquivos acessados
–Privilégios de segurança
–Quantum de tempo
–Prioridade (entre outros)
•Gerência de processos:
–Função básica do SO
–Essência da multiprogramação

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Contextos de um processo (3 partes) 32

Recursos alocados nome Registradores


PID registradores
gerais
owner (UID)

prioridade de
execução registrador PC

data/ hora
de criação Contexto de Contexto de
Software Hardware

tempo de registrador SP
processador

quotas
Programa registrador
privilégios de status
Espaço de
Endereçamento

endereços de memória
principal alocados Espaço na RAM
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Ciclo de vida do processo (diagrama de estados) 33

Estado de Execução

(b) Iniciado pelo próprio processo


b d

Início
c

Estado de Espera Estado de Pronto


•Fatores internos e externos provocam mudanças de estado
•Sempre entra na fila de Prontos antes de executar novamente
•Criação e morte não são considerados professorbelfort@gmail.com
www.cliqueapostilas.com.br
Processos: Foreground x Background 34

•Roda em primeiro plano


•Interativo (online)

•Roda em segundo plano


•Não-Interativo (em lote)
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Processos: I/I/O-bound
O-bound x CPU -bound
CPU-bound 35

•CPU-bound (ligado à CPU)


–Maior parte do tempo em estado de execução
–Ou seja: usando o processador
•I/O-bound (ligado à E/S)
–Maior parte do tempo em estado de bloqueado
–Ou seja: fazendo E/S
•Pode: iniciar CPU-bound e tornar-se I/O-bound (e vice-versa)
•Mais eficiente: revezamento entre CPU-bound e I/O-bound

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Gerenciamento de processos 36

•SO organiza os processos da fila de prontos


•Periodicamente o ESCALONADOR de processos:
–Escolhe um processo da fila para executar
–Critério de escolha pode variar
•Alguns critérios usados para escalonamento
–Ordem de chegada dos processos
–Fatia de tempo demandada pelo processo
–Prioridade do processo
•Outros nomes para ESCALONADOR/ESCALONAMENTO:
–Despachante/despacho
–Dispatcher/dispatch
•Quando um processo solicita uma operação de E/S
–Ele é interrompido e desviado para a fila de bloqueado
–Posteriormente, ele retornará para o fim da fila de pronto
–Então, será submetido ao critério de escalonamento da fila
•Preempção: capacidade do SO de
–Interromper um processo a qualquer instante (a seu critério)
–Retomar a execução a partir do ponto de interrupção
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Bloco de controle do processo (PCB) 37

•Ao criar um processo, o SO cria um BCP (PCB)


–É uma tabela com informações relativas ao processo
–Reside na RAM enquanto o processo existe
–Acesso exclusivo do SO

Ponteiros
Estado do processo
Nome do processo
Prioridade do processo
Registradores
Limites de memória
Lista de arquivos abertos
Pai
Filhos
......

Bloco de Controle do Processo (ou Descritor do Processo)


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Bloco de controle de processos 38

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Chaveamento de contexto (alternância de processos) 39

•SO ao interromper um processo


–Armazena no BCP as informações de contexto (hardware)
–Permite continuar, mais tarde, exatamente de onde parou
•SO também responde a interrupções
–Sinais enviados pelo hardware através do barramento
–Verificadas após execução de cada instrução (atomicidade)
–Requerem uma rotina de tratamento apropriada
–Interrompem o processo em execução

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Chaveamento de contexto (alternância de processos) 40

Sistema Operacional

Processo A Processo B

executando

Salva registradores do
Processo A

Carrega registradores do
Processo B

Sobrecarga executando

Salva registradores do
Processo B

Carrega registradores do
Processo A

executando

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Gerenciamento de filas 41

•SO gerencia filas de BCPs


–Fila de PRONTOS
–Fila de BLOQUEADOS
•Não existe fila de processos em EXECUÇÃO

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Interrupção, Exce
Interrupção, ção e Sinal
Exceção 42

•Interrupções (geradas por eventos assíncronos)


–São geradas por hardware (extra instrução corrente)
–Servem para comunicar a ocorrência de um dado evento
• Fim de uma operação de E/S
• Término de fatia de tempo
•Exceções (geradas por eventos síncronos)
–São geradas por software (instrução corrente)
–Servem para indicar a ocorrência de um erro de execução
• Divisão por zero ou um overflow
• Erro de hardware (Ex: perda da controladora de HD)
• Interrupção do usuário (Ctrl+C = abort)
•Sinal: usado para notificação de eventos (SOp Æ processos)
–Podem ser consequência de interrupções e exceções
–Ex: alarmes do temporizador, cotas excedidas, sincronização

HW

SW

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sinal (ciência da computa ção): leitura recomendada
computação): 43

•Em ciência da computação, um sinal (signal em Inglês) é uma forma limitada


de comunicação entre processos utilizada em sistemas Unix e outros sistemas
operacionais compatíveis com o padrão POSIX. Um sinal é uma notificação
assíncrona enviada para um processos com o objetivo de notificar a ocorrência de
um evento. Quando um sinal é enviado a um processo, o Sistema Operacional
interrompe o seu fluxo normal de execução. A execução pode ser interrompida em
qualquer operação que não seja atômica. Um processo pode registrar uma rotina
de tratamento de sinal (signal handler em Inglês) para tratar um determinado sinal,
se não for desejado que a rotina padrão para este sinal seja executada.
•Determinadas combinações de teclas, ao serem pressionadas no terminal de
controle de um processo em execução, fazem com que o sistema envie
determinados sinais a este processo:
•Ctrl-C (DEL em versões antigas do Unix) envia um sinal INT (SIGINT);
normalmente causa o término do processo.
•Ctrl-Z envia um sinal TSTP (SIGTSTP); normalmente causa a suspensão da
execução do processo.
•Ctrl-\ envia um sinal QUIT (SIGQUIT); normalmente causa o término da execução
do processo e a geração de um core dump (log da memória).
•A chamada de sistema kill envia um sinal ao processo, se o usuário tiver
permissão para tal. De maneira parecida, o comando kill do Unix permite que um
"usuário" envie sinais a um processo. A chamada de sistema raise envia um sinal
para o processo "corrente".
•As exceções causadas por divisão por zero ou violação de segmento de memória
geram sinais (SIGFPE e SIGSEGV, respectivamente, gerando um core dump).

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Atendimento à interrup ção
interrupção 44

VETOR DE INTERRUPÇÃO:
É uma tabela, na RAM, que
contém todas as rotinas de
tratamento de interrupção
(número da interrupção x
endereço da rotina de trata-
Para alguns autores: interrupção de hardware e interrupção de software (trap) mento).
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Comunica ção entre processos (IPC)
Comunicação 45

•Em ambientes multiprogramação: processos se comunicam


•SO possui 2 mecanismos para comunicação interprocessos
–Sinais
–Troca de mensagens (com passagem de parâmetros)
•Sinais: são “interrupções” de software
–Notificam a ocorrência de um evento (from SO ou processos)
–Não permitem a troca de dados entre processos
–Usados para comunicação/sincronização de processos
–Leva à paralização do processo e à rotina de tratamento
•Troca de mensagens
–Protocolos de confirmação e autenticação (troca de dados)
–Muito utilizado em sistemas distribuídos (multiplataforma)

Troca de Mensagens é um mecanismo de comunicação e sincronização entre processos. O sistema


operacional possui um subsistema de mensagem que suporta esse mecanismo sem que haja necessidade do
uso de variáveis compartilhadas. Para que haja a comunicação entre os processos, deve existir um canal de
comunicação, podendo esse meio ser um buffer ou um link de uma rede de computadores.
Os processos cooperativos podem fazer uso de um buffer para trocar mensagens através de duas rotinas:
SEND (receptor, mensagem) e RECEIVE (transmissor, mensagem). A rotina SEND permite o envio de uma
mensagem para um processo receptor, enquanto a rotina RECEIVE possibilita o recebimento de mensagem
enviada por um processo transmissor.
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Pipe 46

saída do
Processo A
entrada do saída do
Processo A Processo B
entrada do
Processo B
Processo A Processo B

ls | more

Comunicação entre processos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Threads (processos leves) 47

•Primeiros SO multiprogramados: um processo de cada vez


•SO multiprocessados:
–Execução simultânea de processos
–Em processadores distintos
•Antes (mesmo com multiprocessamento):
–Em cada processo, somente uma instrução por vez
–Linguagens não tinham estruturas de paralelismo (C e C++)
•Hoje:
–SO e linguagens de programação evoluíram
–Suportam: execução simultânea em um mesmo processo
–Estruturas de execução paralela: threads (processos leves)
•Suporte às tecnologias “multithreading”:
–SO modernos (Windows e Linux)
–Linguagens de última geração (Java e C#)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Threads (processos leves) 48

•Thread: fluxo de execução (set de instruções) do processo


•Estrutura que permite execução paralela de instruções
•Um processo pode gerar vários threads (ou pool de threads)
•Alternativa à criação de processos filhos (subprocesso)
•Conhecidos como “processos leves” porque compartilham:
–Espaços de endereçamento
–Contextos de software
–Porém: cada thread tem seu próprio contexto de hardware
•Comunicação entre threads é mais simples
–Criar threads gasta menos recursos do que subprocessos
–SO pode escalonar processos ou threads (para execução)

Leia: http://msdn.microsoft.com/pt-br/library/3dasc8as.aspx
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Threads de um processo 49

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aplica ções ttípicas
Aplicações ípicas de threads 50

•Servidor WEB
–Cada solicitação de cliente: ativa uma thread (operária)
–Processo pai
• Atende às novas solicitações que chegam
• Despacham threads operárias para execução
•Servidor de BD
–Cada query de usuário: ativa uma thread (operária)
–Processo pai: igual ao exemplo anterior
•Processador de texto
–Uma rotina básica de captura de teclas (principal)
–Com menor prioridade, pode implementar threads para:
• Formatar o texto
• Fazer revisão ortográfica
• Fazer revisão gramatical
• Salvar automaticamente o texto (a cada 15 minutos)
•Paralelismo: visa aumentar o desempenho (processo e SO)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Motiva ções para usar threads
Motivações 51

•Exprimir atividades de modo paralelo (como na vida real)


•Estruturar codificação do programa por tarefas ou módulos
•Melhorar rendimento da UCP em sistemas multiprocessados
•Dispensar as rotinas de IPC*: pq compartilham contextos

*IPC: Inter-Process Comunication


http://pt.wikipedia.org/wiki/Comunicação_entre_processos
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Ciclo de vida de uma thread (diagrama de estados) 52

•SO podem escalonar threads e processos


•Java: pode detalhar ainda mais os estados e o ciclo
–Cancelar e associar: há diferenças entre threads e processos

Outra maneira de colocar uma determinada thread


no estado de 'espera sincronizada' é colocá-la para
dormir. Uma thread adormecida permanece nesse
estado por um período determinado de tempo
(chamado de intervalo de adormecimento) no ponto
em que ela retorna para o estado executável. As
threads dormem por um pequeno período quando
não tem de realizar nenhuma tarefa.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Tipos de thread 53

•Threads podem ser implementadas de 3 modos distintos


–de usuário (muitos para um)
–de núcleo (um para um)
–híbridas (muitos para muitos ou m x n, onde m≥n)
•De usuário
–Usam bibliotecas carregadas em tempo de execução
–São totalmente transparentes para o SO
–Escalonamento é feito pela aplicação (modo usuário)
•De núcleo
–Suportadas diretamente pelo núcleo do SO
–Usam uma API para gerenciamento de threads
–Têm acesso ao hardware e às instruções privilegiadas
•Híbridas: combinam aspectos positivos dos tipos acima

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Threads de usu ário (não suportadas pelo n
usuário úcleo)
núcleo) 54

&Aplicativo: independe do suporte pelo SO: + portabilidade


&Programadores decidem a rotina de escalonamento
&Não há mudança de modo e a sobrecarga é menor
'Não executam instruções privilegiadas (modo usuário)
'Não podem ser despachadas para outras UCP
'E/S bloqueante de uma thread paralisa outras threads

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Threads de n úcleo (suportadas pelo n
núcleo úcleo)
núcleo) 55

&Podem executar instruções privilegiadas (modo núcleo)


&Podem ser despachadas para outras UCP
&Ideal para escalonamento por prioridades (SO tempo real)
&E/S bloqueante de uma thread não paralisa outras threads
'Aplicativos dependem do suporte pelo SO: - portabilidade
'Há mudança de modo e a sobrecarga é maior
'Gerenciar muitas threads: consumo intenso de recursos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Threads híbridos
híbridos 56

•Visa combinar as vantagens dos modos anteriores


•Implementação complexa, sem padronização: - portabilidade
•Para reduzir sobrecarga gerada pelas mudanças de modo:
–Usa “reservatório de threads”
threads
–Usa “threads operários”
rios
•Threads com baixo paralelismo: único thread (modo núcleo)

professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 3

Sincronização e Comunicação entre Processos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Execu ção simultânea de processos
Execução 58

•SO antigos: um processo em execução por vez


•Multiprogramação monoprocessada: paralelismo virtual
–Vários processos em execução “simultânea”
–Apenas uma UCP: rápidas trocas de contexto entre processos
•Multiprogramação multiprocessada: paralelismo real
–n UCP em execução
–n processos em execução simultânea
•SO com suporte à threads:
–Partes de um processo podem executar em paralelo
–Cada parte em uma UCP
•Surgem novos desafios para os programadores

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Programa ção concorrente
Programação 59

•Processos em execução simultânea (paralela ou não)


–Concorrendo por recursos compartilhados
–Vale também threads e subprocessos
•Tornaram os SO e programas muito mais complexos

•Vantagens:
–Maior eficiência em sistemas multiprocessados
–Menor tempo de resposta nos programas interativos
–Transição mais suave e harmônica entre processos
–Melhores soluções para problemas inerentemente paralelos
–Otimização do escalonamento baseado em prioridade

•Desvantagens (dependendo da sequência de execução):


–Inconsistência de valores (variável em memória compartilhada)
–Bloqueios de recursos (dispositivos e dados)
–Adiamento indefinido (não execução)
–Problemas intermitentes
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Programa ção concorrente (paralelismo)
Programação 60

Program Expressao;
Var X, Temp1, Temp2, Temp3: Real;

Begin
ParBegin
Temp1:= SQRT(1024);
Temp2:= 35.4 * 0.23;
Temp3:= 302 / 7;
ParEnd;
X:= Temp1 + Temp2 + Temp3;
WriteLn(“O valor de x é: ”, X);
End.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Programa ção concorrente:condi
Programação ções de disputa
concorrente:condições 61

•X corresponde ao saldo de uma conta bancária.


•Após a execução sequencial
–do Processo A (depósito = 1) e
–do Processo B (saque = 1),
•Espera-se que o saldo permaneça o mesmo (R$ 2,00), pois
–Valores de depósito e saldo são iguais (R$ 1,00)
•Mas, não é o que acontece!!! Por quê?
•Para simplificar: considere um sistema com uma única UCP

Recurso compartilhado = variável em memória compartilhada


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Exclusão m útua
mútua 62

•Como evitar o problema de concorrência mostrado?


•Garantindo a EXCLUSÃO MÚTUA (exclusividade de acesso)
•Negar acesso ao recurso (no caso, uma variável)
–Por outro processo
–Ao mesmo tempo
•Deve afetar apenas processos concorrentes* que
–Dependem do mesmo recurso
–Em operações de escrita
•Esse bloqueio deve ser o mínimo necessário
•Em quais instruções deve-se garantir a exclusão mútua?
–Resposta: na Região Crítica!

*Processos nessa situação estão em: condições de disputa (race condition)


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Região Cr ítica (ou Se
Crítica ção Cr
Seção ítica)
Crítica) 63

•RC: parte do processo que acessa o recurso compartilhado


•Solução Î Serialização:
–Evitar que processos entrem em suas RC simultaneamente
–Impede problemas no compartilhamento de recursos
•Cabe ao programador
– Detectar as regiões críticas no seu código e
– Implementar as rotinas de proteção e exclusão mútua
•Reconhecer a parte do código que pode trazer problemas
–Não é uma tarefa fácil!
–Exige muitos testes e tempo
•Qual é a RC no problema mostrado?

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Solu ções para região cr
Soluções ítica
crítica 64

•Soluções de hardware
–Desabilitar interrupções (mascaramento)
–Instrução test-and-set (atomicidade): “variável global” na RAM
•Soluções de software
–Algoritmo de Dekker
–Algoritmo de Peterson
–Algoritmo de Lamport

*Test-and-Set: todo processo, antes de entrar na sua RC, executa:


Se TAS = True:
- processo aguarda!
Se TAS = False:
- TAS := True
- processo executa região crítica
- TAS := False

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Algoritmo de Peterson (espera ocupada) 65

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sincroniza ção pelo SO
Sincronização 66

•Problemas da concorrência: sanados com a sincronização


•Mecanismos de sincronização do SO
–Variáveis compartilhadas na memória principal ou
–Troca de mensagens entre processos (protocolos)

Buffer não cheio Buffer não vazio

Sincronização: Produtor x Consumidor


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sem áforos (S)
Semáforos 67

•Conceito proposto por E. W. Dijkstra (déiquistra), em 1965


•Mecanismo de sincronização não estruturado e complexo
•Permite implementar, de forma simples:
–Exclusão mútua e
–Sincronização entre processos
•Um dos principais mecanismos utilizados
– Nos projetos de SO e nas aplicações concorrentes
– Nas linguagens de programação (rotinas para semáforos)
•Um semáforo (S) é:
–Uma variável especial protegida pelo SO (não-negativa)
–Manipulada por duas instruções atômicas (indivisíveis)
• Down (decremento) e
• Up (incremento)
•Se S=zero e Down: thread fica em espera (não ocupada)
•Instruções são implementadas no hardware do processador
•Semáforo está associado a um recurso e pode ser
–binário (ou Mutex): {0;1}
–contador: qq valor inteiro, não-negativo
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sem áforos (S)
Semáforos 68

• S=1: recurso livre


• S=0: recurso ocupado

S=1 Î down Î S=0 S=0 Î down Î S=0

Semáforo binário = Mutex = {0,1} (não-ocupada)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Problema com uso de semáforos
semáforos 69

•Código testado várias vezes apresenta erros intermitentes


•Problema: provavelmente, na concorrência entre processos
•Semáforos: uso complexo (difícil)
–Exige muito critério do desenvolvedor
–Enganos:
•Podem levar a problemas intermitentes na execução
•Dífícil reprodução (no chinês) devido à execução concorrente
•Se um processo travar ou entrar em looping na RC?
–SO deve detectar a situação e encerrar o processo

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Monitores 70

•Conceito proposto por Brinch Hansen, em 1972


•Mecanismo de sincronização de alto nível
–Estruturado,
–Não preemptivos
•Simplificam o desenvolvimento de aplicações concorrentes
•Maioria das linguagens disponibiliza rotinas para seu uso
•Módulo formado por procedimentos e variáveis declarados
–Criado em tempo de compilação
–Implementa automáticamente a exclusão mútua

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Monitores 71

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Deadlock (impasse) 72

•Ocorre quando um processo aguarda por:


–Um recurso que nunca estará disponível ou
–Um evento que nunca ocorrerá
•Causa provável:
–Compartilhamento de recursos (periféricos, arquivos etc)
–Onde a exclusão mútua é necessária
•Coffman, Elpick e Shoshani, demonstraram, em 1971:
–Para ocorrer deadlock: 4 condições são essenciais (simult.)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Condições necess
Condições árias para deadlock (simultâneas)
necessárias 73

•Exclusão mútua
–Recurso está alocado a um único processo ou
–Está disponível
•Posse e espera por recurso
–Processo retém um recurso (posse) e
–Pode requisitar outro recurso (espera)
•Não-preempção
–Processo obtém um recurso (e só ele pode liberá-lo)
–SO não tem poder de liberá-lo (quando necessário)
• Não-preemptíveis: impressora, gravador de CD
• Preemptíveis: memória RAM, disco rígido
•Espera circular (gera um grafo cíclico de 2 ou mais processos)
–Processo A espera recurso 2 ora alocado ao Processo B e
–Processo B espera recurso 1 ora alocado ao Processo A

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Deadlock 74

Grafo cíclico

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Solu ções para deadlock
Soluções 75

•Prevenção
–Negar qualquer uma das 4 condições necessárias
•Anulação Dinâmica
–Alocar recursos criteriosamente
–Algoritmo do banqueiro (de Dijkstra)
•Detecção e recuperação: muito caro
–Deixar ocorrer, detecta e elimina:
• Reverter o estado do processo (rollback)
• Tomar o recurso de um dos processos (preempção)
• Encerrar um dos processos envolvidos
•Ignorar (Algoritmo do Avestruz)
–Muitos SO modernos ignoram o deadlock (evento raro)
• Windows
• Unix like (Linux)
–Assim: assume-se a possibilidade de reiniciar o sistema

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Algoritmo do Banqueiro (de Dijkstra
Dijkstra)) 76

•Determina se processo pode executar de forma segura:


•Processo declara todos recursos que vai usar
•A execução é permitida se:
–Soma dos recursos requisitados < recursos disponíveis
•Recursos requisitados =
–Recursos declarados pelos processos já executando +
–Recursos declarados pelo novo processo
•Características:
–Conservativo:
• Pode recusar processos que não causem deadlock
• Mas é seguro, pois impede sua ocorrência
–Aplica-se a múltiplas instâncias de recursos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
77
Adiamento indefinido ((starvation
starvation = inani ção)
inanição)
•É uma situação, também, conhecida como:
–Postergação indefinida
–Espera indefinida
–Inanição ou
–Starvation
•Processo nunca consegue:
–Executar sua região crítica, ou seja
–Acessar o recurso compartilhado
•Por que isso ocorre?
–Quando o recurso desejado é liberado
–SO sempre escalona outro processo para o recurso
•Eliminação: técnica de envelhecimento: aging
–Elevando a prioridade do processo gradativamente
–Enquanto ele espera por um recurso

professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 4

Gerenciamento de processos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Políticas de escalonamento ((agendamento)
Políticas agendamento) 79

•SO escolhe qual processo da fila de PRONTOS irá executar


•Despachante designa um processador a um dado processo
•Política de escalonamento (ou disciplina de escalonamento):
–Critério do SO para escolher o processo que executará

Nível de Alto Intermediário Baixo


ESCALONAMENTO (de admissão) (de memória) (de CPU)

Prazo de atuação Longo Médio Curto

Seleciona onde? HD Memória PRONTOS

Entra na RAM Sofrerá SWAP


Qual processo? (prontos) (out/in)
Irá executar

GM* do SO Define Reduz/Aumenta xxx

*GM: Grau de Multiprogramação

Leia também: http://pt.wikipedia.org/wiki/Escalonamento


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Políticas de escalonamento ((agendamento)
Políticas agendamento) 80

•Forte influência no desempenho global do SO


•Deve garantir: justiça, previsibilidade e escalabilidade
•Deve considerar o comportamento de um processo
–Processos CPU-Bound x I/O-Bound
–Processos Em Lote x Interativo
Objetivos do escalonamento (em relação aos processos)
•Maximizar: throughput (total de processos terminados na unidade de tempo)
•Minimizar: turnaround (tempo da criação até o término do processo)
•Maximizar: taxa de utilização de CPU (tempo total de ocupação da CPU)
•Minimizar: tempo de resposta (tempo da criação até o inicio da execução)
•Minimizar: tempo de espera (soma dos tempos na fila de prontos)
•Minimizar: tempo de resposta em processos interativos
•Maximizar: utilização dos recursos (HW ou SW)
•Minimizar: a sobrecarga de gerenciamento do SO
•Favorecer: rotinas de maior prioridade e importância
•Garantir: previsibilidade no atendimento

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Escalonamento 81

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Políticas de escalonamento ((agendamento)
Políticas agendamento) 82

•Poderá ser classificada como


– Preemptiva
– Não-preemptiva
•Não-preemptiva (cooperativo)
–SO não pode interromper um processo
–Processo executa até concluir (ou parar voluntariamente)
•Preemptiva:
–SO pode interromper um processo a qualquer instante
–Para executar outro processo (chaveamento de contexto)
•Há vantagens e desvantagens em ambas

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Políticas de escalonamento com prioridades
Políticas 83

•Permite quantificar a importância relativa dos processos


•Mecanismos de prioridades são de dois tipos:
– Prioridade estática
– Prioridade dinâmica
•Prioridade estática:
–Não varia ao longo da execução do processo
–Fácil de implementar
•Prioridade dinâmica (mais inteligente)
–Varia ao longo da execução do processo
–Permite uma maior responsividade à mudanças no ambiente
–Exemplos: Técnica de aging, algoritmo HRRN
•Inversão de prioridade:
–SO aumenta a prioridade de um processo menos importante
–Diminuir sobrecarga ou liberar recursos para outro processo

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Políticas de escalonamento: crit
Políticas érios
critérios 84

•Tentam implementar “justiça” na escolha dos processos


•Primeiros SO eram colaborativos: ineficientes!
–Exemplo: Windows 95 (multitarefa cooperativa)
–Processo rodava o tempo que desejava
•Regra geral:
1º: Processo que chega vai para o final da fila pronto
2º: Fila é rearranjada conforme o critério de escalonamento
•Atualmente, na prática, algoritmos usados nos SO:
–Combinam dois ou mais critérios e são adaptativos
–Variam dinamicamente conforme os estados dos processos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
FIFO: First In First Out ((First
First Come First Served
Served)) 85

•Critério: ordem de chegada


•Não-preemptivo (processo executa enquanto quiser)
•Vantagens
–Justo: atende pela ordem de chegada
–Impede adiamento indefinido
–Fácil de implementar
•Desvantagens
–Processos longos fazem os curtos esperarem muito
–Não se mostra eficiente para processos interativos
–Não considera a importância de uma tarefa

professorbelfort@gmail.com
www.cliqueapostilas.com.br
SPF: Shortest Process First ((Shortest
Shortest Job First
First)) 86

•Critério: tempo de execução restante (burst): menor primeiro


•Não-preemptivo
•Vantagens
–Favorece os processos mais curtos
–Aumenta o rendimento (throughput)
– Menor tempo médio de espera
•Desvantagens
–Baseado em estimativas de tempo
–Maior variância no tempo de espera (+ imprevisibilidade)
–Não impede o adiamento indefinido

professorbelfort@gmail.com
www.cliqueapostilas.com.br
SRT: Shortest Remaining Time 87

•Critério: tempo de execução restante (burst): menor primeiro


•Preemptivo (se chegar processo de menor burst)
•Versão preemptiva do SPF
•Vantagens
–Busca minimizar tempo de espera
•Desvantagens
–Baseado em estimativas de tempo
–Gera sobrecarga desnecessária nas troca de contexto
–Usado em SO antigos (para processamento em lote)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RR: Round Robin (alternância circular) 88

•Critério: ordem de chegada (como no FIFO)


•Preemptivo (por quantum de tempo)
•Vantagens
–Efetivo com processos interativos
–Impede adiamento indefinido
•Desvantagens
–Mais complexo que FIFO
–Adiciona sobrecarga no chaveamento de contexto

∆T = quantum (time-slice ou fatia de tempo)


Linux: 100 ms (varia de 10 a 200)
Windows: 20 ms (varia se background x foreground)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
por Prioridades (Filas de Prioridades) 89

•Critério: maior prioridade primeiro


•Preemptivo (por tempo e/ou prioridade de execução)
•Prioridade por ser fixa ou dinâmica
•Agrupa processos em filas de prioridades decrescentes
–Filas mais altas são executadas primeiro (na totalidade)
–Em cada fila, aplica-se RR (Round Robin)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Filas M últiplas ((multinível
Múltiplas multinível com feedback) 90

•Critério: Filas de prioridade distintas e quantum crescente


•Preemptivo (em cada fila usa RR ou outro critério)
•Filas mais altas são executadas primeiro (na totalidade)
•Processos mudam de fila: pelo uso do quantum
–Se esgota, desce (menor prioridade)
–Se não esgota, sobe (maior prioridade) ou mantém a fila
•Vantagens
–Mais justo e inteligente que os algoritmos básicos
–Prioriza processos interativos e rápidos (ou IO-Bound)
–Aumenta o quantum dos processos CPU-Bound
•Desvantagens
–Complexidade de implementação

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Fra ção Justa ((Fair-share)
Fração Fair-share) 91

•Critério: escalonamento de dois níveis


–Filas organizadas por grupos de usuários (ou de processos)
–Cada grupo recebe um quantum diferente (fixo)
•Preemptivo (em cada fila usa RR, com prioridade)
–Prioridade do processo, em cada fila = maior valor de:
Tempo de uso recente* + Tempo total de uso*
Tempo total de uso*

•Processo não muda de fila, mas muda de posição na fila


•Vantagens
–Mais justo e inteligente: prioriza processos mais importantes
–Priorização
• Processos CPU-BOUND
• Mais recentemente executados
•Desvantagens
–Complexidade de implementação

*Tempos da fórmula acima são relativos ao uso do processador


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Fra ção Justa ((Fair-share)
Fração Fair-share) 92

RR, com prioridade

professorbelfort@gmail.com
www.cliqueapostilas.com.br
HRRN: Highest Response Rate Next (Próxima
(Próxima taxa
taxa de
de resposta
resposta mais
mais alta)
alta)
93

•Critério: valor da relação abaixo (maior primeiro):


Tempo de espera na fila + Tempo de execução restante
Tempo de execução restante
•Não-preemptivo
•Busca corrigir algumas deficiências do SPF
•Vantagens
–Prioriza processos mais antigos (maior burst): aging
–Elimina o adiamento indefinido
•Desvantagens
–Não leva em consideração a importância dos processos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Outras pol íticas de escalonamento
políticas 94

•Escalonamento Garantido
–Cumpre promessas feitas a usuários (% alocação de CPU)

•Escalonamento por Loteria


–SO distribui tokens (fichas) numerados entre os processos
–Escalonador sorteia um número aleatório
–Processos com mais tokens têm mais chance de escolha
•Vantagens
–Altamente responsivo (ao número de tokens distribuídos)
–Ideal para processos cooperativos (doação de tokens)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Escalonamento de Tempo Real 95

•Ocorre em SO de tempo real


•Prioriza os processos em detrimento do próprio SO
•Busca produzir resultados em tempos determinados
•Divide-se em 2 tipos
– Crítico:
tico prazos devem ser rigorosamente cumpridos
– Não-crítico:
tico descumprimentos de prazo são tolerados

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Resumo: Políticas de Escalonamento
Políticas 96

Não-preemptivos Preemptivos
FIFO (FCFS) SRT
SPF (SJF) RR
HRRN por Prioridades
Filas Múltiplas
Fração Justa
Tempo Real
professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 5

Gerenciamento de Memória
(métodos primitivos)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mem ória prim
Memória ária x Mem
primária ória secund
Memória ária
secundária 98

•Memória real: conhecida por vários outros termos


–Memória principal
–Memória física
–Memória primária
–Memória RAM
•Para ser executado, um programa tem que estar na RAM
•Executar a partir do disco seria muito lento (inaceitável)
•Diferença entre tempos de acesso é de 1/1.000.000
–RAM = 10 ns = 10-9 seg
–Disco= 10 ms = 10-3 seg

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Gerenciador de mem ória
memória 99

•RAM: Sempre foi um recurso caro e escasso


–Programas eram pequenos: para caber inteiros na memória
–Gerenciador de memória eram muito sofisticados
•RAM: grande aumento de capacidade e redução de custo
•SO monotarefa: gerenciador de memória eram simplificados
•SO multitarefa: gerenciador de memória são sofisticados
–Têm grande impacto no desempenho global do sistema
•Hoje: combinação de HW e SW para ganhar desempenho

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Estrat égias de gerenciamento de mem
Estratégias ória
memória 100

Se novos processos são alocados na RAM, considera-se:


•Estratégias de busca
–QUANDO carregar um novo processo na RAM?
–Demanda antecipada: será ou não considerada
•Estratégias de posicionamento
–ONDE carregar um novo processo na RAM?
– Primeiro, melhor ou pior encaixe
•Estratégias de substituição
–QUAIS processos deverão ser substituídos
–Qualquer um, o mais antigo, o mais ocioso, o mais usado

Considere:
•Agora: programa todo carregado na RAM em espaço contíguo
•Depois: essas limitações serão relaxadas (memória virtual)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Política de gerenciamento de mem
Política ória
memória 101

Varia em cada SO, mas, de modo geral, objetiva:


•Manter na RAM o maior número de processos residentes
•Minimizar operações de I/O em disco
•Maximar uso do processador (throughput)
•Carregar novos processos sem espaço livre na RAM: swap
•Executar programas > RAM (overlay e memória virtual)
•Proteger áreas do SO e áreas dos processos na RAM
•Ser “transparente” para os programas

Formas de alocação de memória desse capítulo:


•Não são mais usadas nos SO atuais
•Servem para compreender as técnicas modernas
•Além disso: aparecem nas questões dos concursos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Formas de aloca ção ((particionamento
alocação particionamento da RAM) 102

•Alocação contígua simples (monoprogramação)


–Usa toda a memória livre como um bloco único
•Alocação particionada (multiprogramação)
–Estática (ou de partições fixas)
fixas
• Vários blocos de tamanhos predefinidos
• Pode ser:
–Absoluta
–Relocável
–Dinâmica (ou de partições variáveis)
veis
• Não usa o conceito de blocos
• Aloca processos de forma adjacente

•Gerenciador de memória: controla particionamento da RAM


–Quais partes estão alocadas para processos em execução?
–Quais partes estão livres para novos processos?

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção cont
Alocação ígua simples ((monoprogramação)
contígua monoprogramação) 103

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção cont
Alocação ígua simples ((monoprogramação)
contígua monoprogramação) 104

•Implementada nos primeiros SO monousuário/monotarefa


•RAM dividida em duas partições: SO (protegida) e programa
•Registrador de fronteira (ou de limite) estabelece a divisão
•Um processo em execução por vez
–Menor ou igual ao bloco de programa
–Pode acessar toda a memória
•Overlay: uma forma de ultrapassar o limite de memória
•Vantagem: fácil implementação
•Desvantagem: mau aproveitamento da RAM

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Overlay (sobreposição)
(sobreposição) 105

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Overlay (sobreposição)
(sobreposição) 106

•Permite executar um processo maior que a RAM disponível


•Divide processo: um bloco principal e n blocos secundários
–Bloco principal fica na RAM o tempo (chama os secundários)
–Blocos secundários
• São carregados na RAM, um de cada vez
• Independem uns dos outros
• Dependem do bloco principal para carga e execução
•Troca de blocos gera sobrecarga no SO
•Programador decide sobre a divisão em blocos
•Blocos secundários ≤ área de overlay

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção Particionada Est
Alocação ática
Estática 107

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção Particionada Est
Alocação ática Absoluta
Estática 108

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção Particionada Est
Alocação ática Reloc
Estática ável
Relocável 109

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção Particionada Est
Alocação ática
Estática 110

•Também conhecida como alocação por partição fixa


•Memória dividida em partições de tamanhos fixos
–Estabelecidas durante a inicialização do sistema
–Em cada partição se encaixa um processo
•Alterar tamanho das partições: só reinicializando o sistema
•Tabela de controle: para gerir os espaços alocados/livres
•Inícialmente: processos usavam endereçamento absoluto
–Referências à RAM eram relativas a endereços físicos
–Processo só executava em uma partição específica
–Era a alocação particionada estática absoluta
•Posteriormente: processos usavam endereçamento relativo
–Referências à RAM eram relativas ao início do código
–Processo podia executar em qualquer partição livre
–Era a alocação particionada estática relocável

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção Particionada Dinâmica
Alocação 111

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção Particionada Dinâmica
Alocação 112

•Também conhecida como alocação por partição variável


•RAM dividida em 2 partições: SO (protegida) e programas
•Busca eliminar desperdícios dos métodos anteriores
•Processos carregados sequencialmente, sem espaços livres
•Processos encerrados:
–Deixam lacunas (espaços livres) entre os blocos
–É a fragmentação externa (área livre, não alocável)
•Processo novo:
–Pode encaixar em qualquer lacuna
–Se a lacuna > processo Î permanece a fragmentação
•Como resolver o problema das lacunas?
–Compactação das lacunas (relocação )
• Gera uma enorme sobrecarga no sistema
• Elimina a fragmentação externa
–Fusão das lacunas adjacentes (coalescência)
• Gera menos sobrecarga no sistema
• Diminui a fragmentação externa
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Estrat égias de aloca
Estratégias ção (alocação
alocação (alocação Particionada
Particionada Dinâmica)
Dinâmica)
113

•Como alocar novos processos que vão chegando?


•Existem 3 estratégias básicas para alocação das lacunas
–First-fit (primeiro encaixe)
–Best-fit (melhor encaixe)
–Worst-fit (pior encaixe)
•First-fit varre a TEL e encaixa na primeira lacuna possível
–Baseado na ordem de endereçamento
–TEL não fica ordenada pelos tamanhos das lacunas
•Best-fit varre a TEL toda. Encaixa na lacuna que gera
–Menor desperdício de espaço
–TEL fica ordenada por tamanho crescente
•Worst-fit varre a TEL toda. Encaixa na lacuna que gera
–Maior desperdício de espaço
–TEL fica ordenada por tamanho decrescente

TEL:
TEL: Tabela
Tabela de
de Espaços
Espaços Livres
Livres
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Fragmenta ção: interna x externa
Fragmentação: 114

•Métodos analisados geram efeitos indesejáveis


–Fragmentação interna
–Fragmentação externa
•Fragmentação causa desperdícios de memória
•Fragmentação interna ocorre na alocação estática
–Espaços livres que sobram em cada bloco
–Ao se encaixar um novo processo
•Fragmentação externa ocorre na alocação dinâmica
–Espaços livres que surgem
–Ao se encerrar os processos
•Técnicas de gerenciamento de Memória Virtual
–Ajudam a diminuir esses efeitos
–Exemplo: MV por paginação e MV por segmentação

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Swapping (permuta) 115

Programa F escalonado para execução

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Swapping (permuta) 116

Vários processos em execução simultânea:


•Consomem vários recursos
•Tornam a execução muito lenta (sistema degradado)

Swap out:
•Interrompe processo e armazena temporariamente em disco
•Sobra mais espaço na RAM e a degradação geral diminui
•Escolhe processo com menor chance de execução imediata
–Para evitar novo swapping em seguida
–Para dar preferência a processos no estado de espera

Swap in:
•Depois, processo interrompido é trazido de volta
•Poderá executar com um melhor desempenho
•É necessário um loader que implemente relocação dinâmica
–Pois, o processo pode voltar para uma partição diferente

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Reentrância (c ódigo reentrante)
(código 117

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Reentrância (c ódigo reentrante)
(código 118

•Compartilhamento de código: vários usuários/aplicativos


•Carga do código na RAM é feita apenas uma vez
•Código deve ser executável e somente leitura
•Implementada pelos programadores e suportada pelo SO
•SO detecta código já carregado e o compartilha outra vez
•Código executável é comum, mas dados são independentes
•Presente em utilitários, compiladores, linkers, aplicativos ...
•Evita desperdícios quando:
–Vários usuários invocam um mesmo programa
–Um usuário abre várias instâncias do mesmo programa

professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 6

Memória Virtual

professorbelfort@gmail.com
Mem ória Virtual (pagina
Memória ção): mapeamento EV
(paginação): ÎER
EVÎER
www.cliqueapostilas.com.br
120

Endereço de um bloco

Endereço do endereço de um bloco professorbelfort@gmail.com


Mem ória Virtual (pagina
Memória ção): mapeamento EV
(paginação): ÎER
EVÎER
www.cliqueapostilas.com.br
121

Endereço de um bloco

Endereço do endereço de um bloco professorbelfort@gmail.com


Mem ória Virtual (pagina
Memória ção): mapeamento EV
(paginação): ÎER
EVÎER
www.cliqueapostilas.com.br

• Qual o tamanho da MV (Memória Virtual)? 0B


• Qual a capacidade de endereçamento da MV? 32B
• Qual o tamanho da TP (Tabela de Páginas)? 8*5b = 40b = 5B
• Quantas vias tem o REM (Barramento de Endereços)? 5
• Quantos blocos existem na MV? 25-n
• Quantos deslocamentos existem dentro do bloco? 2n
• Quantos endereços o processador pode gerar? 25-n * 2n = 25
• Se bloco cresce, o que acontece com a TP? Diminui
• Atenção: processo aloca um número inteiro de páginas!

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mem ória Virtual
Memória 123

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mem ória Virtual
Memória 124

•É uma memória fictícia (forma de visualizar RAM + HD)


•Combina a memória principal e parte da memória secundária
•Dá a ilusão de uma memória grande, única e sequencial
•Torna transparente para os programadores
–A quantidade de espaço e
–A organização física da memória
•Realidade: capacidade de endereçamento do processador
•Expõe ao aplicativo um espaço contíguo de 4 GB*
– Mesmo que não exista esta quantidade de memória RAM
•Compilador: gera código baseado no espaço virtual
•SO mapeia endereço virtual (EV) para endereço físico (EF)
•MMU (Memory Management Unit):
– Hardware do processador que mapeia o EV para o EF
– Tem um cache chamado de TLB (Translation Lookaside Buffer)

4 GB = 232 B (32 = largura de barramento de endereços de alguns Pentium e outros)


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mapeamento: Memória Virtual para a Mem
Memória ória F
Memória ísica
Física 125

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mapeamento: consequências da virtualiza ção
virtualização 126

•Programador/aplicação vê uma memória ideal


–Exclusiva, plana, contígua e praticamente ilimitada
–Localização física das instruções e dados é transparente
–O processador demanda o endereço virtual
•Processo não precisa estar em área contígua na RAM
–É gerada uma contiguidade artificial
•Processo não precisa estar inteiro na RAM
–Pode-se carregar apenas algumas partes
–Daí, aloca-se/desaloca-se partes necessárias/desnecessárias
•Técnicas utilizadas
• Paginação
• Segmentação

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Tabela de mapeamento (Tabela de Páginas = TP)
Páginas 127

•Cada processo tem sua TP, mantida estaticamente na RAM


•As tabelas mapeiam blocos de dados: B. Virtual Æ B. Real
•Tabelas são atualizadas pelo Gerenciador de Memória
•Um registrador da CPU indica a posição inicial da tabela
–Na troca de contexto: registrador aponta para nova posição
•Cada processo tem seu espaço de endereçamento virtual
–Como se possuísse sua própria memória (iniciando do zero)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mapeamento: forma de endereçamento
endereçamento 128

•Como cada célula de memória será referenciada?


–Arquiteturas atuais: Barramento de Endereços=32/36/40 vias
•Qual o tamanho de cada bloco de células?
–Maioria das arquiteturas usa blocos de 4KB
–Quanto maior o bloco:
• Menos entradas na tabela
• Menor espaço utilizado na RAM pela TP
• Maior a fragmentação interna do bloco

•Para arquiteturas de endereços de 32 bits:


– Número de blocos = 232-n
– Número de células em cada bloco (deslocamentos) = 2n
– Na prática, n=12 mostrou-se um valor razoável
– Número de blocos = 220 (1.048.576 blocos)
– Tamanho do bloco = 212 (4096 células de endereços)
– Memória endereçável = 220 * 212 = 232 B = 4 GB

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mapeamento: forma de endere çamento (REM = 32b)
endereçamento 129

Endereço do início de cada bloco na RAM

220 blocos * 212 endereços por bloco


1.048.576 blocos * 4096 endereços/bloco
Cada endereço = 1 B de capacidade
Logo: 1.048.576 * 4096 B = 232 B =
= 4 GB (memória endereçável)

TABELA DE BLOCOS (tamanho ocupado na RAM):


1.048.576 entradas de 4B cada = 4MB
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mem ória virtual por Pagina
Memória ção
Paginação 130

•Espaço de endereçamento virtual e real: divididos em blocos


–Blocos virtuais são chamados de páginas (ou pages)
–Blocos reais são chamadas de quadros (ou frames)
•Blocos são todos de tamanho fixo e iguais: Windows = 4KB
•Processo aloca um número inteiros de páginas/quadros
•Fragmentação interna média por processo = ½ página
•Mapeamento EVÎER consta em uma Tabela de Página (TP)
•Cada processo tem a sua própria TP (fica na RAM)
•Cada conversão EVÎER é uma ETP (entrada na TP = linha)
•EV é formado por dois campos:
–NPV (número de página virtual) e um
–Offset (deslocamento dentro da página)
•Cada ETP contém, ainda, outras informações importantes:
–Bit de validade (indica se a página está carregada na RAM)
–Bit de modificação (indica se a página foi modificada)
–Bit de referência (indica se a página foi referida)
–Bit de proteção (indica o tipo de acesso permitido à pagina)
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Mem ória virtual por Pagina
Memória ção: mapeamento
Paginação: 131

EV

ER
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Tabela de Páginas multin
Páginas íveis (ou hier
multiníveis árquica)
hierárquica) 132

•Cada ETD aponta para uma TP


10 10 12 •Cada ETP aponta para um frame (MR)
ETD ETP Offset

0 End início da TP 0

End início da TP 1

1023
Cada TP: 10b = 210 ETP
10b = 210 ETD

ETD ETP Offset


EV00000000000000000000000000000101
ER00000000000001100100000000000101

ETD: Entrada na Tabela de Diretórios ETP: Entrada na Tabela de Páginas


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Tabela de Páginas multin
Páginas íveis (ou hier
multiníveis árquica)
hierárquica) 133

•Limitações do mapeamento direto: alto consumo de RAM


–A TP deve estar toda carregada na RAM
–De forma contígua e sequencial por número de página
•TP multiníveis permitem armazenar apenas:
–Partes da TP de um processo
–Em porções não contíguas da RAM
•Outras partes serão carregadas por demanda (swap)
•Vantagem: economia de memória RAM
–Ficam residentes apenas as ETP necessárias (em uso)
•Desvantagem: tradução mais lenta a cada nível adicionado
–Pois existe um leitura adicional à RAM
•Composição
– 10b para o Diretório: ao todo são 210 ETD = 1024 ETD = 1024 TP
– 10b para cada TP: ao todo são 210 ETP = 1024 ETP por TP
– 12b para deslocamento dentro do bloco
– Total de ETP em todas as TP: 210 * 210 = 220 referências a blocos virtuais
– Total (endereços virtuais) = 220 blocos virtuais * 212 deslocamentos por bloco
– Memória total endereçável = 232 endereços de 1B cada = 4GB
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Buffer de Tradu ção Lateral (TLB
Tradução (TLB -- Translation
Translation Lookaside
Lookaside Buffer)
Buffer)
134

Tradução EVÎER é feito pela MMU (Memory Manager Unit)


–É um dispositivo (hardware) que integra a CPU
•TLB: cache associativo (hardware) que integra a MMU
–Armazena partes da TP do processo ativo
–Mapeia endereços de forma muito rápida
–Baseada no Principio da Localidade (como todo cache)
–Tem de 8 a 2048 entradas: elevado TLB hit% (acertos)
–Varre todas as entradas em uma leitura apenas
–Utiliza uma política aleatória para substituição de endereços

professorbelfort@gmail.com
Buffer de Tradu ção Lateral (TLB
Tradução (TLB -- Translation
Translation Lookaside
www.cliqueapostilas.com.br
Lookaside Buffer)
Buffer)
135

BV = bit de validade
professorbelfort@gmail.com
Exerc ício
Exercício www.cliqueapostilas.com.br
136

professorbelfort@gmail.com
Mem ória virtual por Segmenta
Memória ção
Segmentação www.cliqueapostilas.com.br
137

•Espaço de endereçamento virtual e real é dividido em blocos


–Blocos virtuais e reais são chamados de segmentos
–Blocos têm tamanho variável (em tempo de execução)
• Segue a estrutura da aplicação: procedures, funtions...
• Facilita implementar estruturas de dados dinâmicas
• É mais lógico para os programadores e suas aplicações
• Quantidade e tamanho dos segmentos são limitados
–Bloco virtual e seu correspondente real têm tamanho igual
•Processo bastante parecido com a paginação
•Mapeamento EVÎ ER consta na Tabela de Segmentos (TS)
•Cada processo tem a sua própria TS (fica na RAM)
•Cada conversão EVÎER é uma ETS (entrada na TS = linha)
•EV é formado por dois campos:
–NSV (número de segmento virtual) e um
–Offset (deslocamento dentro do segmento)
•Cada ETS contém, ainda, outras informações importantes:
–Tamanho do segmento (já que são variáveis)
professorbelfort@gmail.com
Mem ória virtual por Segmenta
Memória ção: mapeamento
Segmentação: www.cliqueapostilas.com.br
138

professorbelfort@gmail.com
Pagina ção x Segmenta
Paginação ção
Segmentação www.cliqueapostilas.com.br
139

PROTEÇÃO DE MEMÓRIA (o que significa isso?)


Espaços de endereçamento:
Paginação: Espaço linear único (proteção a cargo do programador)
Segmentação: Espaços distintos protegidos pelo processador/SO
(pag. 234 – Tanenbaum > Sistemas Operacionais Modernos)
professorbelfort@gmail.com
Pagina ção x Segmenta
Paginação ção
Segmentação www.cliqueapostilas.com.br
140

professorbelfort@gmail.com
Mem ória virtual por segmenta
Memória ção paginada
segmentação www.cliqueapostilas.com.br
141

•Espaço de endereçamento é dividido em segmentos


•Cada segmento é dividido em páginas
•Visa unir vantagens das duas técnicas:
–Simplicidade arquitetônica da paginação
–Facilidades de controle de acesso da segmentação
•Na visão do programador, o processo continua sendo:
–Mapeado em segmentos de tamanhos diferentes
–Em função das subrotinas e estruturas de dados do programa
•Na visão do SO, cada segmento é:
–Um conjunto de páginas de tamanho igual
–Mapeadas por uma tabela de páginas associada ao segmento
–Logo: segmentos não precisam estar contíguos na memória
•Mapeamento EVÎER é feito em duas etapas:
–EV é formado por um NSV mapeado em uma ETS
–Resultado é mapeado em uma ETP (para achar o frame)
•Os principais SO modernos implementam essa técnica
•Família x86: segmentação obrigatória, paginação opcional
professorbelfort@gmail.com
Mapeamento em duas etapas www.cliqueapostilas.com.br
142

professorbelfort@gmail.com
Swapping em memória virtual
memória www.cliqueapostilas.com.br
143

•Swapping também é usada com páginas e segmentos


•Influi no número de processos que compartilham a memória
•Logo: aumenta/diminui o Grau de Multiprogramação
•Se ocorre trashing: muitos “page faults”/altas taxas de paginação
–Algumas páginas são descarregados (swap out)
–Mais tarde, essas páginas podem retornar (swap in)
•Para swap out quais páginas são escolhidas pelo SO?
1º: De processos que estão em estado de espera
2º: De processos que estão em estado de pronto

•Windows: arquivo de swap é criado na partição do sistema


•Linux: arquivo de swap é criado numa partição separada

professorbelfort@gmail.com
Compartilhamento (e prote ção)
proteção) www.cliqueapostilas.com.br
144

•Páginas e segmentos podem ser compartilhados


–Mais simples na segmentação do que na paginação
•Basta ETP e ETS apontarem para mesmos frames (na RAM)
–Evitando carregamento redundante do mesmo código
•Permite a comunicação e troca de dados entre eles
–Carece de sincronia entre processos (evitar inconsistências)
•Bits nas ETP e ETS indicam as permissões de acesso
•SO deve fornecer mecanismos de segurança necessários
•Só processos autorizados acessam áreas compartilhadas

professorbelfort@gmail.com
Princ ípio da localidade
Princípio www.cliqueapostilas.com.br
145

•Base para as estratégias de gerenciamento de memória


•Localidade temporal: se uma página foi usada,
–Grande chance de ser usada novamente a seguir
•Localidade espacial: se uma página foi usada,
–Grande chance de suas vizinhas serem usadas a seguir
–(ajuda a orientar a busca antecipada)
•Fatores contribuintes: laços, procedimentos, funções...

professorbelfort@gmail.com
Modos de pagina ção (2 modos)
paginação www.cliqueapostilas.com.br
146

•Carga por demanda


–Página é carregada na RAM quando é referenciada
–Não há desperdício de espaço na RAM
–Ideal para sistemas antigos (RAM cara e escassa)
• Carga antecipada
–Página é carregada na RAM quando é referenciada
–Páginas adjacentes são carregadas também
–Melhora o desempenho da aplicação
–Ideal para sistemas atuais (RAM farta, CPU´s rápidas)

professorbelfort@gmail.com
Substituição de p
Substituição áginas
páginas www.cliqueapostilas.com.br
147

•Se a RAM estiver cheia ao se carregar uma página do disco?


•Será necessário substituir uma página já carregada
•Qual página será escolhida para ser substituída?
–Uma página que será referenciada em seguida não é bom
• Ela será carregada novamente, gerando sobrecarga
–Uma página que demorará a ser referenciada é o ideal
–Se ela foi modificada, é preciso, antes, salvá-la em disco
–Se ela não foi modificada, basta sobrescrevê-la
•Substituir segmentos: é + complexo (tamanhos diferentes)
•Substituição de blocos na RAM é crítico no gerenciamento
•Existem várias estratégias de substituição de páginas

professorbelfort@gmail.com
Ótima)
OPT ((Ótima) www.cliqueapostilas.com.br
148

•Substitui o frame a ser referenciado num futuro bem distante


•Inviável na prática: referências futuras são imprevisíveis
•Após execução dos processos: é um padrão de comparação

professorbelfort@gmail.com
RAND (Aleat ória)
(Aleatória) www.cliqueapostilas.com.br
149

•Substitui uma página qualquer


•Considera que páginas têm chances iguais de substituição
•Vantagem:
–Fácil de implementar
–Gera pouca sobrecarga
•Desvantagem:
–Baixa eficiência (pode substituir páginas logo referenciadas)
–Desconsidera o princípio da localidade
•Pela sua imprevisibilidade, raramente é utilizada na prática

professorbelfort@gmail.com
FIFO (First In First Out) www.cliqueapostilas.com.br
150

•Substitui a página carregada há mais tempo


•Considera que a página teve sua chance e deve revezar
•Vantagem:
–Fácil de implementar
–Gera pouca sobrecarga
•Desvantagem:
–Baixa eficiência (pode substituir páginas logo referenciadas)
–Desconsidera o princípio da localidade
•É usada, com adaptações, em estratégias mais sofisticadas

professorbelfort@gmail.com
LRU (Least Recently Used): Menos
Menos Recentemente
Recentemente Usada
Usada
www.cliqueapostilas.com.br
151

•Substitui página que está há + tempo sem ser referenciada


•Baseada no princípio da localidade temporal:
–Perfil recente da página é um bom indicador do perfil futuro
•Lista de controle de páginas
–No topo: página recentemente referenciada
–No final: página há + tempo sem ser referenciada (candidata)
•Vantagem:
–Maior eficiência, comparada com RAND e FIFO
•Desvantagem
–Manutenção da lista de páginas gera sobrecarga
•Mnemônico:
– Descarta a página mais fria (usada há mais tempo)
– Mesmo que seja muito popular (usada muitas vezes)

professorbelfort@gmail.com
LFU (Least Frequently Used): Menos
Menos Frequentemente
www.cliqueapostilas.com.br
Usada 152
Frequentemente Usada
•Substitui a página que foi menos referenciada
•Baseada na intensidade de uso das páginas
•Vantagem:
– Maior eficiência, comparada com RAND e FIFO
•Desvantagem:
–Processos recém referenciados são prejudicados
–Logo, desconsidera o princípio da localidade
–Manutenção do contador de uso das páginas gera sobrecarga
•Mnemônico:
– Descarta a página menos popular (usada menos vezes)
– Mesmo que seja a mais quente (usada há menos tempo)

professorbelfort@gmail.com
NRU (Not Recently Used): Não
Não Recentemente
Recentemente Usada
Usada
www.cliqueapostilas.com.br
153

•Variante da LRU
•Baseada em dois parâmetros associados à pagina (bits):
–Bit de referência (R) (1 ao carregar; periodicamente zerado)
–Bit de modificação (M)
•Cada par ordenado corresponde a (R,M)
•Substitui páginas na seguinte ordem: [(0,0);(0,1);(1,0);(1,1)]
•Vantagem:
–Maior eficiência, comparada à LRU e LFU
–Considera mais de um fator
–Gera pouca sobrecarga
•Desvantagem:
–Baixa eficiência, comparada a algoritmos mais avançados
•Mnemônico:
– Descarta: páginas geladas, depois as frias, depois as mornas
– Repare que o bit R tem maior prioridade que o bit M

professorbelfort@gmail.com
Segunda Chance www.cliqueapostilas.com.br
154

•Variante do FIFO
•Baseado no valor do bit de referência da página (R)
•Consulta R da página mais antiga (a primeira da fila)
–Se R = 1, R := 0 e a página vai para o final da fila (tempo := 0)
–Se R = 0, a página será substituída
•Elege a página mais antiga não referenciada
•Se todas as páginas foram referenciadas = FIFO puro
•Vantagem:
–Evita substituir uma página intensamente usada
•Desvantagem:
–Reordenação constante da lista, gera sobrecarga

professorbelfort@gmail.com
Rel ógio (ou FIFO circular)
Relógio www.cliqueapostilas.com.br
155

•Organiza as páginas em um buffer circular


–Um ponteiro (giro horário), aponta uma página de cada vez
–Cada página tem um bit de referência ( =1 na hora da carga)
•Se bit da página apontada = 1: coloca bit = 0
–Aponta para próxima página
•Se bit da página apontada = 0: substitui a página
•Vantagem:
–Simples para implementar
–Reduz as atualizações de informações sobre as páginas

professorbelfort@gmail.com
Conjunto de Trabalho (Working Set) www.cliqueapostilas.com.br
156

Busca manter, na RAM, o Conjunto de Trabalho do processo


Base: conceito de Localidade de Referência:

“Num instante T, um processo referencia uma fração pequena de suas páginas”

•Essa fração: Conjunto de Trabalho (Working Set)


•Desvantagem:
–Implementação bastante cara

professorbelfort@gmail.com
WSClock www.cliqueapostilas.com.br
157

•Baseado nos métodos:


–Conjunto de Trabalho (WS) e
–Relógio
•Vantagem:
–É bom e eficiente
– Bastante usado na atualidade

professorbelfort@gmail.com
P ágina long
Página ínqua (baseada na teoria dos grafos)
longínqua www.cliqueapostilas.com.br
158

•Mais próxima do algoritmo OPT e a mais complicada


•Monta um grafo com todas as páginas carregadas
•Substitui a página mais distante não referenciada
•Vantagem:
–Desempenho quase ótimo (OPT)
•Desvantagem:
–Difícil de implementar
–Excesso de cálculos gera sobrecarga e atrasos na execução
•Não é implementada nos SO de mercado

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Resumo dos algoritmos de substituição de páginas (Tanenbaum) 159

NRU

LRU

LFU

≈ LRU

professorbelfort@gmail.com
Políticas de aloca
Políticas ção e de substitui
alocação ção do SO
substituição www.cliqueapostilas.com.br
160

Alocação de páginas
•Fixa:
–Número máximo de páginas por um processo é fixo
–Pode ser útil ou não dependendo do processo
•Variável:
–Número máximo de páginas por um processo é variável
–Função da sua taxa de paginação e ocupação na RAM
• Quantidade de page fault na unidade de tempo

Substituição de páginas
•Global (atende apenas a alocação variável)
–Substitui páginas de qualquer processo
–Tende a ignorar prioridades dos processos
•Local (atende as alocações fixa e variável)
–Substitui apenas páginas do mesmo processo
–Ajusta alocação de memória pela importância do processo

professorbelfort@gmail.com
Working Set (Conjunto de Trabalho) www.cliqueapostilas.com.br
161

•Muitos page faults e altas taxas de paginação = thrashing


•SO: mais trabalho de gerenciamento do que trabalho útil
•Working Set:
–Grupo de páginas que deve ser mantido na RAM
–Para que um processo execute de forma eficiente
•Conceito de Working Set (WS)
–Baseado nos estudos de Denning
–Segue o princípio da localidade no tempo/espaço
•WS=ƒ(t,w):
–É função do tempo (t) e da janela (w)
–t: o WS de um processo varia de um instante para outro
–w: quantidade de páginas num dado momento (janela)
•Nível de paginação aceitável << 50% de páginas na RAM
–Não precisa estar todo carregado para poder executar bem

professorbelfort@gmail.com
Working Set e pagina ção
paginação www.cliqueapostilas.com.br
162

professorbelfort@gmail.com
Exerc ício
Exercício www.cliqueapostilas.com.br
163

• O esquema adotado para gerenciamento de memória de um


determinado computador é baseado na estratégia de Working
Sets: W(t,I), com I = 3 e política de realocação de página do tipo
LRU. Diante dessas condições, se um determinado processo
apresentar a seguinte sequência de referências a páginas, na
memória: 24, 15, 18, 23, 24, 18, 17, 18, 24, 17, 17, 15 o número
de ocorrências de page faults será de:
a)11
b) 9
c) 5
d)13
e) 7

24 15 18 23 24 18 17 18 24 17 17 15

professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 7

Entrada e Saída (discos)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Discos rrígidos:
ígidos: estrutura 165

professorbelfort@gmail.com
www.cliqueapostilas.com.br
166
Disco rrígido
ígido de cabe çote m
cabeçote óvel: trilhas e setores
móvel:

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Discos rrígidos:
ígidos: tempos de atuação
atuação 167

•Tempos de acesso:
–RAM: uniforme em qualquer endereço
–HD: depende da posição do cabeçote de leitura/escrita
•HD: na operação de leitura/gravação, o cabeçote:
–1º Posiciona-se na trilha desejada (cilindro)
–2º Aguarda setor desejado passar por ele (giro do disco)

Assim:

Tresposta = Tbusca + Tlatência + Ttransmissão


Onde:
Tbusca: tempo de posicionamento na trilha (cilindro)
Tlatência: tempo de posicionamento do setor
Ttransmissão: tempo de transmissão dos dados

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Discos rrígidos:
ígidos: escalonamento 168

•Maioria dos SO busca otimizar os seguintes critérios


–Justiça no atendimento
–Maximizar o rendimento
–Minimizar o tempo de resposta
–Minimizar a variância do tempo de resposta (imprevisibilidade)
•Tempo mais significativo sempre foi o de busca
•Hoje, tempos de busca e de latência se equivalem
•Tecnologia visa aprimorar:
–Otimização do tempo de busca (atuador do cabeçote)
–Otimização do tempo de latência (atuador de giro do disco)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
FCFS (First Come First Served) (primeiro
(primeiro aa chegar
chegar éé atendido)
atendido)
169

•Critério: ordem de chegada (FIFO)


•Vantagens:
–Justo: atende pela ordem de chegada
–Impede adiamento indefinido
•Desvantagens
–Baixo rendimento
–Amplos movimentos do cabeçote
–Passa por requisições existentes sem atendê-las
–Elevados tempos de busca
•Recomendado apenas para cargas de trabalho leves

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do FCFS 170

Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

professorbelfort@gmail.com
www.cliqueapostilas.com.br
SSTF (Shortest Seek Time First) (menor
(menor tempo
tempo de
de busca
busca primeiro)
primeiro)
171

•Critério: pedidos mais próximos do cabeçote primeiro


•Vantagem:
–Baixos tempos de busca
•Desvantagens:
–Injusto: atende mal as trilhas extremas
–Elevada variância nos tempos de resposta (imprevisível)
–Inadequado para sistemas interativos
–Não impede o adiamento indefinido
–Manutenção da lista de mais próximos: gera sobrecarga

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do SSTF 172

Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Scan (Varredura) ou Algoritmo do Elevador 173

•Critério: pedidos mais próximos do cabeçote primeiro


– Tem um sentido preferencial (de fora pra dentro)
–Nesse sentido: atende todos os pedidos até o batente e
–Direção oposta: atende todos os pedidos até o batente
–Reinicia o ciclo
•Vantagem:
–Baixos tempos de busca
–Rendimento semelhante ao SSTF
•Desvantagens:
–Injusto: atende mal as trilhas extremas
–Elevada variância nos tempos de resposta (imprevisível)
–Inadequado para sistemas interativos
–Não impede o adiamento indefinido

Adiamento indefinido: novas requisições são atendidas antes das antigas.


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do Scan 174

Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

•Atende nos dois sentidos


•Vai aos batentes, mesmo quando não é necessário professorbelfort@gmail.com
www.cliqueapostilas.com.br
C -Scan (Varredura Circular)
C-Scan 175

Critério: semelhante ao Scan, porém:


–Atende pedidos apenas em uma direção (de fora pra dentro)
–No batente interno: vai direto para a borda, sem atendimentos
–Reinicia o ciclo
•Vantagens
–Elevados níveis de rendimento
–Limita a variância nos tempos de resposta
–Reduz a discriminação dos cilindros extremos
•Desvantagens:
–Não impede o adiamento indefinido (melhor que Scan e SSTF)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do C -Scan
C-Scan 176

Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

•Atende apenas em um sentido


•Vai aos batentes, mesmo quando não é necessário professorbelfort@gmail.com
www.cliqueapostilas.com.br
FScan (varredura congelada) 177

•Critério: semelhante ao Scan (atende nas duas direções)


•Porém:
–Fila de pedidos é congelada no início de cada varredura
–Novos pedidos são listados e atendidos na próxima varredura
•Vantagens
–Impede o adiamento indefinido
–Alto rendimento
–Tempo médio de resposta aceitável
–Menor variância nos tempos de resposta

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do Fscan (Freezing Scan) 178

Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

•Atende nos dois sentidos, congelando pedidos (em cada varredura)


•Vai aos batentes, mesmo quando não é necessário professorbelfort@gmail.com
www.cliqueapostilas.com.br
Scan N -fases
N-fases 179

•Critério: semelhante ao FScan:


–Atende pedidos nas duas direções (como o Scan)
– Atende as primeiras N requisições da fila (em cada sentido)
•N poderá ser ajustado:
–Se N=1, degenera para FCFS
–N muito alto, degenera para Scan
•Vantagens:
–Impede o adiamento indefinido
–Alto rendimento
–Tempo médio de resposta aceitável
–Menor variância nos tempos de resposta

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do Scan N -fases
N-fases 180
37,
37,80
80
Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

•Atende nos dois sentidos, primeiros N pedidos da fila (em cada varredura)
•Vai aos batentes, mesmo quando não é necessário professorbelfort@gmail.com
www.cliqueapostilas.com.br
Look (olhar à frente) e C-Look (Look circular)
C-Look 181

Look
•Critério: semelhante a Scan (duplo sentido), porém:
–Não vai aos batentes, em cada direção, se não houver pedidos
–Elimina movimentos desnecessários até os cilindros extremos
•Melhora o desempenho

C-Look
•Critério: semelhante ao C-Scan (sentido único), porém:
–Não vai aos batentes, em cada direção, se não houver pedidos
–Elimina movimentos desnecessários até os cilindros extremos
•Melhora o desempenho

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do Look e C -Look
C-Look 182

Fila de requisições: {33, 72, 47, 8, 99, 74, 52, 75}

•Azul (Look): atende nos dois sentidos


•Verde (C-Look): atende em um sentido
•Não vai aos batentes, quando não é necessário

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Políticas de Cache
Políticas 183

Exemplo: dados da RAM são salvos no disco

Write-back (escrita indireta):


–Dados são gravados no cache
–Depois, cache é escrito para o disco, em lotes (requisição única)
•Melhor desempenho
•Menos confiável
–Problemas de consistência em caso de queda do sistema

Write-through (escrita-direta):
–Dados são gravados no cache e no disco, simultaneamente
•Pior desempenho
•Mais confiável
–Sem problemas de consistência em caso de queda do sistema

(Deitel > Sistemas Operacionais: 3ª. ed. pág 355)

professorbelfort@gmail.com
www.cliqueapostilas.com.br

Capítulo 8

Gerenciamento de Arquivos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Opera ções com arquivos
Operações 185

•Arquivo:
–Conjunto de dados tratado como uma unidade pelo SO
–Pode ser executável (programa) ou de dados
•SO: realiza diversas operações com arquivos como
–Criar/excluir
–Abrir/fechar
–Copiar/mover
–Listar/renomear
•SO trata estruturas internas dos arquivos (registros):
–Ler para memória/gravar em disco
–Atualizar/inserir/apagar
•Para o SO, arquivos possuem atributos como
–Nome, extensão, local, caminho (path)
–Tamanho (bytes), tipo, permissões
–Datas de criação e última modificação
•SO: basta conhecer a estrutura interna dos programas
•Aplicativos: orientam o tratamento dos arquivos de dados
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sistema de arquivos 186

•Organiza os arquivos e gerencia o acesso aos dados


•Principais tarefas:
–Gerenciar arquivos e armazenamento auxiliar
–Especificar modo de acesso
–Assegurar a integridade
–Permitir ao usuário: criar, modificar e excluir arquivos
–Permitir ao aplicativo: tratar os dados adequadamente
–Inicializar transferência de dados entre arquivos
•Referencia arquivo usando um caminho ou atalho (path)
•Ferramenta específica para cópia de segurança de arquivos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Metadados (dados sobre dados) 187

•Metadados são informações especiais sobre os arquivos


–Armazenadas em arquivos e diretórios especiais
–Não podem ser modificadas diretamente pelos usuários
•SO mantém no disco: superbloco com metadados (tabela)
–Localizado no disco (armazenamento auxiliar)
–Ajuda a proteger a integridade do sistema de arquivos
–Possui cópias redundantes em outras partes do disco
–Informações mais importantes do superbloco são:
• Tipo de sistema de arquivos e seu número de blocos
• Localização dos blocos livres da partição e do diretório raiz
• Data e hora da última modificação
• Informações sobre integridade
•SO mantém na RAM: tabela para tratar cada arquivo aberto
–Contém detalhes dos atributos do arquivo
•SO: recebe da aplicação o descritor do arquivo (um índice)
–Número que aponta para a tabela do arquivo aberto

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Diret órios (também chamados de pastas no Windows)
Diretórios 188

•São: subdivisões lógicas da partição do disco


•São: arquivos especiais do sistema com ponteiros para:
–Outros arquivos e seus metadados
–Outros diretórios (subdiretórios) e seus metadados
•Servem para organizar e facilitar a localização de arquivos
•Possuem atributos como nome, tamanho, path...
•Antes: diretório de nível único (não se mostrou muito útil)
–Todos arquivos eram armazenados na raiz da unidade
–Nomes dos arquivos não podiam ser repetidos
•Depois: diretório estruturado em hierarquia (vários níveis)
–Utilizado até hoje pela maioria dos SO
–Permite repetir um nome de arquivo em diretórios diferentes
•Conceito básicos de diretórios
–Diretório raiz (“/” ou “\”), diretório corrente (atual)
–Caminho absoluto, caminho relativo (path)
–Ligação flexível (simbólica, atalho, alias)
–Ligação estrita (hard link = ponteiro, provê compartilhamento)
–Mapeamento de compartilhamentos
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Diret órios hier
Diretórios árquicos (em áárvore)
hierárquicos rvore) 189

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Técnica de Montagem
Técnica 190

•Permite montar (combinar), em um único espaço de nomes


–Vários sistemas de arquivos heterogêneos
–De várias localizações e tecnologias diferentes
–De forma transparente
–Exemplo: Unidades de: FD, CD, DVD, BR, partições de HD
•Ponto de montagem:
–Local onde começa uma hierarquia de diretórios
–Pode pertencer à outra unidade ou partição
–Funciona como uma espécie de atalho
–Pode ser movido ou renomeado sem perdas
–Controlado por Tabelas de Montagem do SO
– Essas tabelas contêm informações de origem dos:
• Dispositivos anexados
• Sistemas de arquivos anexados
•Linux (Ext2): montagem no diretório /mnt (normalmente)
•Windows (NTFS): montagem em qualquer diretório
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Implementa ção de montagem
Implementação 191

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Arquivos: m étodos de acesso
métodos 192

•Métodos de acesso a arquivos (dependem da alocação)


–Sequencial
–Aleatória (ou Direta)
–Sequencial indexada
–Particionada
•Sequencial: (fitas magnética)
–Registros físicamente contíguos
–Acesso sequencial (pela ordem física dos registros)
•Aleatória ou Direta (discos rígidos)
–Registros físicamente dispersos
–Acesso de forma direta pelo número de registro
•Sequencial indexada (combinação dos dois anteriores)
–Acesso sequencial pela ordem das chaves ou
–Diretamente pelos índices
•Particionada:
–Arquivo de subarquivos sequenciais (denominados membros)
–Usado para armazenar bibliotecas de programas
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção de arquivos (organização do espaço ocupado)
Alocação 193

•Alocação de arquivos em disco:


–Semelhante à alocação na RAM
–Organização dos arquivos contribuem para otimizar acessos
–Localidade (temporal e espacial) continuam valendo
•Modos de alocação mais utilizados são:
–Alocação contígua (AC)
–Alocação não contígua (ANC)
• Lista Encadeada
• Tabela na Memória (tabular)
• Indexada (i-nodes)
•Arquivos aumentam e diminuem de tamanho, por isso:
–AC foi substituída pela ANC
–Mais dinâmica e flexível

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção cont
Alocação ígua
contígua 194

•Mantém dados de arquivos em seções adjacentes no disco


•Localização pelo endereço de início e tamanho do arquivo
•Vantagem:
–Registros sucessivamente dispostos, lógica e fisicamente
•Desvantagem:
–Fragmentação externa devido aos arquivos apagados
–Possível falta de espaço ao criar ou expandir um arquivo
•Uso:
– CD/DVD (permite organização antecipada dos dados)
– Nada impede que seja usada em HDs

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Aloca ção cont
Alocação ígua
contígua 195

professorbelfort@gmail.com
www.cliqueapostilas.com.br
ANC por Lista Encadeada 196

•Blocos do arquivo ficam aleatoriamente dispostos no disco


•Cada setor armazena um ponteiro para o próximo
–No último setor, o ponteiro é nulo
•Mais fácil achar espaço livre para a gravação de dados
•A busca é sequencial (em uma direção)
–Fragmentação torna as buscas mais lentas
–Usar blocos de setores contíguos aumenta a eficiência
–Busca nas duas direções: lista duplamente encadeada
•Blocos grandes:
–Maior fragmentação interna
–Menos operações com E/S
•Desvantagem:
–Desperdício da área de armazenamento com os ponteiros

professorbelfort@gmail.com
www.cliqueapostilas.com.br
ANC por Lista Encadeada 197

professorbelfort@gmail.com
www.cliqueapostilas.com.br
ANC por Lista Encadeada usando Tabela na Memória 198

•Blocos do arquivo ficam aleatoriamente dispostos no disco


•Mantém uma Tabela de Alocação de Blocos (TAB)
–Tabela adicional mantida em disco contiguamente
–Usada em cache na RAM para acelerar acessos
–Um bloco aponta para o próximo bloco, até o último
–Facilita aumentar ou reduzir o tamanho de um arquivo
–Localiza rapidamente blocos livres contíguos (< fragmentação)
–Diminui acessos ao disco para pesquisa
•Busca é sequencial com base na TAB
•Sistema FAT (do DOS) usava essa forma de alocação

professorbelfort@gmail.com
www.cliqueapostilas.com.br
ANC por Lista Encadeada usando Tabela na Memória 199

16

professorbelfort@gmail.com
www.cliqueapostilas.com.br
ANC Indexada (i -Node)
(i-Node) 200

•Blocos do arquivo ficam aleatoriamente dispostos no disco


•i-Node (index node): estrutura de controle de cada arquivo
•Contém um ou mais blocos de índices que apontam para:
–Blocos físicos de dados do arquivo ou
–Outros blocos de índices (que apontam para dados ou índices)
Blocos de índices:
–São percorridos de modo sequencial nas buscas
• Bom desempenho de E/S
• Pouca sobrecarga no SO
–Podem estar na RAM para acelerar a pesquisa dos índices
–Permitem acomodar arquivos de tamanhos variados
–Podem ter até 3 níveis hierárquicos (arquivos grandes)
–Quanto mais níveis, mais acessos ao disco
•Ext2 e NTFS implementam variações dessa forma

professorbelfort@gmail.com
www.cliqueapostilas.com.br
ANC Indexada (i -Node)
(i-Node) 201

professorbelfort@gmail.com
www.cliqueapostilas.com.br
II-node
-node 202

Calcule o tamanho desse arquivo:


Bloco de índices = 13 endereços

Bloco 1 IO 2 IO 3 IO 4 IO
Tamanho total do arquivo
Apontador direto dado 10*4KB = 40KB
Apontador indireto A1x dado 1024 x 4KB = 4MB
Apontador 2x indireto A1x A2x dado 1024 x 1024 x 4KB = 4GB
Apontador 3x indireto A1x A2x A3x dado 1024 x 1024 x 1024 x 4KB = 4TB
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Gerenciamento de espa ço livre
espaço 203

•Há, basicamente, 2 modos de controlar os espaços livres


–Lista de livres
–Mapa de bits
•Lista de livres: lista encadeada aponta para blocos livres
–Busca por bloco livre varre a lista e suprime a entrada
–Blocos a ocupar são retirados do início da lista e
–Blocos liberados são anexados ao final da lista
•Mapa de bits: mapa associa um bit a um bloco diretamente
–“0” indica bloco livre; “1” indica bloco ocupado
–É mantida em blocos especiais
–Busca por bloco livre varre rapidamente o mapa (bit :0→1)
•Vantagens do mapa de bits sobre a lista de livres:
–Facilidade para achar blocos livres contíguos e
–Menor sobrecarga

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Lista de livres e mapa de bits 204

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Controle de acesso aos dados (em disco) 205

•Pode ser feito de 3 modos


–Matriz de controle de acesso
–Controle de acesso discricionário
–Compartilhamento
•Matriz de controle de acesso (na prática, não é mais usada):
–Organiza usuários na coluna e arquivos na linha
–Interseção usuário x arquivo: bit=1 marca permissão de acesso
–Difícil gerir com muitos usuários, arquivos e modos de acesso
•Controle discricionário:
–Metadado de cada objeto (um diretório ou um arquivo)
–Especifica quem pode acessar e o tipo de acesso
–Deve ser configurada para cada objeto
•Compartilhamento: permite o acesso através da rede
–Mais prático e seguro trabalhar com grupos em vez de usuários
–Grupo: coleção nomeada de usuários com mesmo perfil

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Configura ção de permissões
Configuração 206

Discricionário

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Prote ção e integridade
Proteção 207

•SO tem ferramentas para proteger os arquivos contra:


–Acessos indevidos e
–Violações de integridade (intencionais ou não)
•Controle de acesso pode ser feito com:
–Autenticação e permissões (ACL: quem pode fazer o quê) quê
–Criptografia de arquivos
•Integridade pode ser protegida com:
–Discos em RAID
–Cópias de backup
–Sistemas de arquivos log-estruturados (operações atômicas)
•Registram as transações em arquivos de log (histórico)
•Pode reverter (roll back) ou terminar mais tarde (roll forward):
–Sombreamento de páginas (operações atômicas)
•Grava as transações em um novo bloco
•Validada a transação: descarta bloco antigo e habilita o novo
• Pode reverter se houver alguma falha

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sistemas de arquivos do Windows 208

blocos

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Sistemas de arquivos do Linux 209

professorbelfort@gmail.com
www.cliqueapostilas.com.br
210

ooooo
b
b
b
b
OOOO
Críticas e sugestões: professorbelfort@gmail.com
professorbelfort@gmail.com
www.cliqueapostilas.com.br

Leitura recomendada

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID 212

•Proposto por Patterson, Gobson e Katz


•É uma técnica de gerenciamento de discos
•Projeto Inicial
–Redundant Arrays of Inexpensive Disks
•Mais tarde passou a chamar-se:
–Redundant Arrays of Independent Disks

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID 213

•Combina diversos discos para:


–Melhorar desempenho e/ou
–Obter redundância
•Desempenho (simultaneidade de acesso a vários discos):
–Reduzir tempos de leitura e escrita
•Redundância (duplicação dos dados em vários discos):
–Ter acesso aos dados, mesmo se falhar um dos discos
–Usado em servidores de missão crítica
–Não tem objetivo de substituir o backup

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID - funcionamento 214

•RAID divide dados em conjuntos de tiras (blocos)


•Tiras dividem-se por diversos discos (strip set). Podem ser:
–Tiras de granulação fina
–Tiras de granulação grossa
•Fina: divide um arquivo em várias tiras (em diversos discos)
–Reduz tempo de acesso e
–Aumenta taxas de transferência (pelo acesso simultâneo)
–Melhor para supercomputadores (acessam poucos registros)
•Grossa: aglomera os arquivos em uma tira (um disco)
–Atende várias requisições simultâneas em discos diferentes
–Melhor para servidores Web e de Banco de Dados

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID 0 215

•Conhecido como faixas de disco sem paridade


•Distribui dados em várias tiras em dois ou mais discos
•Não provê redundância:
–Se um disco falhar dados são perdidos
–Por isso, muitos não o consideram como RAID
•Vantagem: aumento de desempenho (pelo acesso paralelo)
•Serviços de baixa responsabilidade e alto desempenho
–Exemplo: servidor proxy (cache de páginas web)
•Aproveitamento de disco é de 100%

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Distribui ção RAID 0
Distribuição 216

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID 1 217

•Conhecido como espelhamento


•Distribui dados em exatamente 2 discos, de forma repetida
•Provê redundância:
–Se um disco falhar, dados são recuperáveis
–Basta usar o outro disco
•Vantagem: redundância e razoável desempenho (de leitura)
•Serviço que exija redundância e algum desempenho
–Exemplo: Arquivos do próprio SO
•Aproveitamento de disco é de 50%

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Distribui ção RAID 1
Distribuição 218

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID 5 219

•Conhecido como faixas de disco com paridade


•Distribui dados em várias tiras em três ou mais discos
•Cada grupo de tiras (cada disco) associado a uma paridade
•Provê redundância: se um disco falhar, dados são recuperáveis
–Basta usar paridade respectiva
–Não aceita falhas em mais de um disco
•Provê um bom desempenho, pelos acessos paralelos
–Quanto mais discos, mais rápido o acesso
•Serviço de responsabilidade e alto desempenho
–Exemplo: Servidor de Banco de Dados (de leitura: query)
query
•Aproveitamento de disco é de (n-1)/n%
–Onde n é a quantidade de discos
–Exemplo 4 HDs de 200 GB cada = ¾ * 800 = 600 GB)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Distribui ção RAID 5
Distribuição 220

professorbelfort@gmail.com
www.cliqueapostilas.com.br
RAID 10 e RAID 01 221

•Combinação do RAID 1 com o RAID 0


•Desempenho de RAID 0 com redundância do RAID 1
•Bom para: ambientes de rede corporativa
–Exemplo: Grandes BD

RAID 10 RAID 01 professorbelfort@gmail.com


www.cliqueapostilas.com.br
RAIDs 2, 3, 4 e 6 222

RAID 2, 3 e 4
•Previstos no projeto inicial
•Menos evoluídos do que o RAID 5
–RAID 2: paridade Hamming* no nível de bit (ECC) (n discos)
discos
–RAID 3: paridade XOR no nível de bit (disco exclusivo)
exclusivo
–RAID 4: paridade XOR no nível de bloco (disco exclusivo)
exclusivo
•Raramente implementados na prática

RAID 6
•Caso especial de RAID 5
•Não foi previsto no projeto inicial
•Paridade:
–Armazenada duas vezes
–Distribuída pelos discos de dados (discos não-dedicados)
•Torna admissível parada de até 2 discos ao mesmo tempo
•Pouco implementado na prática
*Código de Hamming: vide Wikipedia (teoria e exercícios)
professorbelfort@gmail.com
www.cliqueapostilas.com.br
223

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Disco rrígido:
ígido: particionamento e formata ção
formatação 224

•HD deve ser particionado e formatado para armazenar dados


•Particionamento
–Divide o HD em discos lógicos, estanques e independentes
–Visa organizar arquivos e otimizar o uso dos setores
–Um HD aceita até:
•4 partições primárias ou
•3 partições primárias e uma estendida (com n unid. lógicas)
•Formatação
–Cria o sistema de arquivos do SO:
•Tabelas de controle dos espaços livres e ocupados
•Unidades de alocação, setor de boot etc
–Habilita o SO a trabalhar com o disco
–DOS usava o comando:
•fdisk para particionar o disco
•format para formatar as partições
–Windows: usa o comando
•convert para converter partição FAT ou FAT32 para NTFS
•Só é possível desfazer a conversão se formatar o disco
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Otimiza ção no desempenho (formas)
Otimização 225

•Usar tecnologias de alto desempenho (SCSI, SATA, SAS)


•Aumentar a densidade do meios
•Usar RAID por software ou por hardware
•Usar a técnica de antecipação do braço do disco*
•Usar buffer e cache
–Cache write-through
–Cache write-back
•Desfragmentar o disco regularmente
•Trabalhar com dados compactados
•Usar blocagem (agrupar dados em blocos contíguos)
•Adicionar novos discos (locais ou remotos)
•Otimizar tempos de busca e de latência

*Antecipação do braço do disco: Formação prévia da fila de acessos, em cada passada.


professorbelfort@gmail.com
www.cliqueapostilas.com.br
SLTF (Shortest Latency Time First) 226

•Tempo de latência mais curto primeiro


•Também chamada de otimização rotacional
•Critério: baseado no atraso rotacional (tempos de latência)
–Organiza as requisições de um mesmo cilindro numa fila
–Atende do mais próximo para o mais distante
•Estratégia mais próxima da teoricamente ótima
•Fácil de ser implementada

Métodos de OTIMIZAÇÃO ROTACIONAL podem ser


combinados com os métodos de OTIMIZAÇÃO DE BUSCA.
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do SLTF 227

professorbelfort@gmail.com
www.cliqueapostilas.com.br
SPTF e SATF 228

•SPTF (Tempo de Posicionamento mais curto primeiro)


TPosicionamento = TBusca + TLatência
•Chegar ao cilindro e ao setor primeiro

•SATF (Tempo de Acesso mais curto primeiro)


TAcesso = TPosicionamento + TTransferência
•Chegar ao cilindro, ao setor e transmitir primeiro

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Movimentos do SPTF e SATF 229

Respostas precisas exigem conhecimento das


especificações reais do disco: Tbusca, Tlatência, etc
professorbelfort@gmail.com
www.cliqueapostilas.com.br

Processamento Paralelo

professorbelfort@gmail.com
www.cliqueapostilas.com.br
231
Processamento paralelo (MIMD)
•Necessidade contínua de computadores mais rápidos
•Saída: computadores paralelos (diferença é a latência)
– Multiprocessadores de memória compartilhada
– Multicomputadores com troca de mensagens
– Sistemas distribuídos de longa distância (computadores completos)

(alta velocidade)

(troca de mensagens) (troca de mensagens)

Fortemente acoplados Fortemente acoplados Fracamente acoplados


(memória não compartilhada) (memória não compartilhada)
(rede é de altíssimo desempenho)

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Computa ção em cluster
Computação 232

•Sistema de 2 ou + computadores chamados nodos ou nós


•Executa aplicações e tarefas pesadas e/ou de missão crítica
•Usuários utilizam recursos do cluster de modo transparente
•Simula um computador de alta capacidade que não falha
•Atende os requisitos críticos de uma rede corporativa
–Desempenho/Tempo de resposta
–Confiabilidade/Disponibilidade /Tolerância a falhas
–Balanceamento de carga/Adaptação ao ambiente

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Cluster (identifica ção na rede)
(identificação 233

•Nodos: fisicamente próximos, no mesmo segmento IP de rede


•Cada nodo tem dois endereços IP e responde pelos dois
–O endereço de rede individual (conforme o segmento IP)
–O endereço de cluster compartilhado (depende do cluster)
•Clientes enviam pedidos para o nome ou IP atribuído ao cluster
•DNS resolve o nome do cluster para o respectivo IP do cluster
•Serviço interno: decide que nó irá atender a solicitação

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Tipos de cluster 234

•Baseados em hardware e/ou software (do SO ou de 3ºs)


•Existem basicamente 3 tipos de cluster
–Cluster de alta disponibilidade (High Availability)
–Cluster de alto desempenho
–Cluster de balanceamento de carga (Load Balancing)
•Alta disponibilidade
–Aplicativos e serviços a prova de falhas (failover automático)
•Alto Desempenho
–Tarefas de grande volume computacional
–Em pouco tempo e com baixo custo
•Balanceamento de carga
–Distribui os pedidos de clientes entre diversas máquinas

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Cluster de Alta Disponibilidade (HA) 235

•Depende de HW específico e das aplicações “cluster aware”*


•Um nó ativo de cada vez (failover automático)
•Cliente reenvia pedido se necessário
•Discos são compartilhados entre os vários nodos
•Serviço que roda na rede define quem será o nó ativo
•Sinais heart beat (batida cardíaca) checa integridade do nó ativo
•Usado em:
–Sistemas de missão crítica
–Correio eletrônico
–Banco de Dados
–Servidor de Arquivos, entre outros

Cluster aware: voltadas para cluster


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Cluster de Alta Disponibilidade (HA) 236

•O projecto Linux-HA (High-Availability Linux) incide na


pesquisa e implementação de soluções de alta
disponibilidade (clustering) para GNU/Linux, FreeBSD,
OpenBSD, Solaris e Mac OS X.
•O principal componente deste projecto, em evolução, é
o heartbeat que funciona como gestor do cluster e dos
seus recursos. Como o nome indica, a sinalização da
presença (ou ausência) de contacto com os nodos do
cluster faz-se mediante o envio de pequenos pacotes
(heartbeats, batimentos cardíacos) dirigidos a todos os
nodos do cluster, cuja confirmação de recepção por
parte de cada nodo indica o estado desse nodo.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Implementa ção de Cluster HA
Implementação 237

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Cluster de Balanceamento de Carga (LB) 238

•Distribui pedidos dos clientes por diversos nós


•Busca equilibrar as cargas de trabalho entre nós
•Alocação:
–Base: função hash (parâmetros: características dos clientes)
–Aponta para apenas um dos nós
•Todos os nós ficam ativos ao mesmo tempo
•Falhas: nós restantes assumem as solicitações dos clientes
•Cliente reenvia pedidos se necessário
•Pode: adicionar ou remover nós, de acordo com a demanda
•Normalmente:
–Usado em serviços Web
–De grande volume e com custo de parada alto

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Implementa ção de Cluster LB
Implementação 239

*Network Load Balancing


professorbelfort@gmail.com
www.cliqueapostilas.com.br
Cluster de Alto Desempenho 240

•Composto por um nó mestre e vários nós escravos


•Objetivo:
–Tarefa de grande volume computacional
–Em pouco tempo e com baixo custo
•Funcionamento:
–Mestre: divide a carga de trabalho em partes
–Escravos: assumem a execução das partes
–Mestre: Supervisiona e gerencia os escravos
•Todos os nós ficam ativos ao mesmo tempo
•Pode: adicionar ou remover nós, de acordo com a demanda
•Cluster Beowulf:
–HW padrão e heterogêneo (de baixo custo)
–SW opensource (Linux)

As provas têm cobrado as diferenças entre:


computação em cluster x computação em gradeprofessorbelfort@gmail.com
(grid)!
www.cliqueapostilas.com.br
Implementa ção de Cluster de Alto Desempenho
Implementação 241

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Implementa ção de Cluster Beowulf
Implementação 242

Foto de um Cluster Beowulf usando


sistema operacional Red Hat Linux

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Cluster no Windows 243

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Computa ção em GRID
Computação 244

•A diferença existente entre a computação distribuída e computação em grade de dá


pelo fato de que a computação distribuída é um conceito que vem dos anos 80 e 90, e
consiste na possibilidade de resolver um determinado problema computacional através
da utilização de diferentes recursos distribuídos geograficamente. A computação
distribuída passa a ser uma “Computação em Grade” no momento em que existe uma
infra-estrutura física e uma infra-estrutura lógica (software) que permita coordenar os
trabalhos que vão ser processados e garantir a sua qualidade de serviço.
•O Grid é um caso particular da computação distribuída, uma vez que os Grids são
orientados essencialmente para aplicações que precisam de uma grande capacidade
de cálculos, ou enormes quantidades de dados transmitidos de um lado para o outro, ou
as duas.
•O nome Grid foi idealizado baseado nas malhas de interligação dos sistemas de
energia elétrica (power-grids), em que um usuário utiliza a eletricidade sem ao menos
saber em que local ele foi gerada, sendo totalmente transparente aos seus usuários.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Computa ção em GRID
Computação 245

•A computação em grid envolve a utilização de recursos dispersos em diferentes


domínios. Estes recursos podem ser processamento, capacidade de armazenamento,
softwares instalados em determinados pontos ou equipamentos específicos a serem
compartilhados.
•Cada domínio pode possuir regras próprias de segurança em relação ao acesso a seus
recursos. Este conjunto de recursos utilizados em conjunto para uma determinada
finalidade cria uma organização virtual (virtual organization) que ultrapassa os limites
dos domínios pré-existentes. Esta organização virtual pressupõe o estabelecimento de
regras de segurança diferentes das existentes nos domínios individuais.
•Um fator complicador que deve ser levado em consideração é a dinâmica na criação
das organizações virtuais, muitas vezes criadas por curtos períodos de tempo, o que
dificulta o estabelecimento de relações fixas de confiança entre os domínios.
•A organização real caracteriza-se por ser um domínio permanente com regras e
recursos bem definidos. O controle de segurança é definido por uma autoridade local.
•O segundo tipo de organização é a organização virtual, com caráter temporário,
normalmente criada para atender uma necessidade de processamento específica e com
regras de segurança não definidas. A figura mostra que as organizações virtuais
englobam recursos de vários domínios. Estes recursos podem pertencer
simultaneamente a várias organizações virtuais.

http://arquivosweb.lncc.br/pdfs/relatorio-30-03.pdf
professorbelfort@gmail.com
www.cliqueapostilas.com.br
Grid: organiza ção real x organiza
organização ção virtual
organização 246

professorbelfort@gmail.com
www.cliqueapostilas.com.br
Diferen ças entre Cluster e Grid
Diferenças 247

•Utilizaremos a referência do Prof Buyya. “ Se acontece o


compartilhamento de recursos gerenciados por um único
sistema global sincronizado e centralizado, então é um
cluster.
•Em um cluster, todos os nós trabalham cooperativamente
em um objetivo comum e o objetivo é a alocação de recursos
executada por um gerente centralizado e global.
•Em grid, cada nó, possuí seu próprio gerente recursos e
política de alocação".

•A tônica aqui é o nível de unicidade de:


– Gerenciamento
– Objetivos

professorbelfort@gmail.com
www.cliqueapostilas.com.br

Leitura adicional

professorbelfort@gmail.com
www.cliqueapostilas.com.br
249
Escalonamento Windows
O escalonador do Windows NT é preemptivo com prioridades, onde as prioridades são
organizadas em duas classes: tempo real e variável. Cada classe possui 16 níveis de prioridades,
sendo que as threads de tempo real têm precedência sobre as threads da classe variável. Todas
as threads prontas para executar são mantidas em estruturas de filas de acordo com as
prioridades em cada uma das classes. Cada fila é atendida por uma política de Round-Robin. A
atribuição de prioridades é diferente para cada uma das classes. As threads da classe de tempo
real possuem prioridade fixa determinada no momento da criação, enquanto que as threads da
classe variável tem prioridades dinâmicas. Assim quando uma thread da classe variável é
criada, recebe uma prioridade e é inserida sempre na fila dessa prioridade, já uma thread da
classe variável pode migrar entre as filas de prioridades. Na classe variável, a prioridade das
threads é formada por dois parâmetros, um vinculado a própria thread e o outro vinculado ao
processo a que ela pertence. Um objeto processo recebe na sua criação, uma prioridade que
varia de zero a quinze e cada thread recebe uma prioridade variando de duas unidades para
cima ou para baixo da prioridade do processo. O critério usado para variar a prioridade de uma
thread é o tempo de uso do processador. Se a thread é interrompida por usar todo oquantum de
tempo que lhe foi atribuído, o escalonador do Windows 2000 reduz sua prioridade, caso
contrário sua prioridade é aumentada.
O sistema de memória virtual do Windows NT é baseado em um espaço linear de 32
bits, o que fornece até 4 GB de memória virtual. Normalmente, esse espaço é dividido
igualmente entre o processo usuário (parte inferior) e o sistema operacional (parte superior),
mas há a opção de se atribuir 3 GB ao processo usuário e 1 GB ao sistema operacional.
Também é prevista a extensão VLM (Very Large Memory) para os processadores de
arquitetura de 64 bits, que permitem a alocação de até 28 GB de memória suplementar. Já a
alocação de memória é realizada em duas fases. Primeiro, o processo reserva um certo número
de páginas da memória virtual sem necessariamente utilizá-las. Em seguida, à media que o
processo necessita de memória, essas páginas pré-alocadas são mapeadas a áreas efetivas de
armazenamento (commit). As páginas podem ter três estados diferentes: livre (páginas não
utilizadas pelo processo), reservadas (alocadas a algum processo, porém não mapeadas em
disco físico) e dedicadas (já mapeadas).
professorbelfort@gmail.com
www.cliqueapostilas.com.br
250
Escalonamento Windows
A tradução de um endereço virtual em endereço físico se baseia em uma tabela de
paginação em dois níveis. Assim, o endereço virtual de 32 bits é formado por três
componentes: índice de diretório de páginas, índice de tabelas de páginas e índice de byte
(deslocamento dentro da página). O endereço de páginas é acessado para determinar qual a
tabela de páginas correspondente ao endereço virtual. A entrada da tabela, por sua vez, possui
informações referentes ao endereço da página a ser acessada. Finalmente, o índice de byte é
somado ao endereço inicial da página em memória correspondendo ao endereço físico.
Para um sistema de gerencia de memória baseado em paginação, é necessário
determinar quando e como buscar páginas do disco (swap) para a memória. O algoritmo de
paginação é baseado por demanda com clustering. Nesse esquema, quando ocorre uma falta de
página, o gerenciador de memória carrega a página que faltava e algumas ao redor. Uma das
vantagens do clustering é a minimização do número de acessos ao disco provocados pela
paginação de um processo. Além disso, a carga de páginas em avanço diminui o número de
leituras individualizadas, e aumenta a probabilidade de um processo paginado acessar a
memória diretamente. A política para a substituição de páginas na memória depende da
arquitetura e do processador da máquina. Para arquiteturas do tipo multiprocessador, a
estratégia é baseada em FIFO. Para arquiteturas monoprocessadas, o algoritmo de seleção da
página é LRU, implementado através do algoritmo do relógio (clock). Para representar o
número de páginas presentes em memória para um processo, é usado o Working Set. Existem
um valor mínimo e um valor máximo definidos a partir do tamanho, e o Working Set é ajustado
a depender da quantidade de memória existente e da necessidade dos processos.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
251
Escalonamento Linux
O problema básico de escalonamento em sistemas operacionais é como satisfazer
simultaneamente objetivos conflitantes: tempo de resposta rápido, bom throughput para
processos background, evitar postergação indefinida, conciliar processos de alta prioridade com
de baixa prioridade, etc. O conjunto de regras utilizado para determinar como, quando e qual
processo deverá ser executado é conhecido como política de escalonamento. Nesta seção, nós
estudaremos como o Linux implementa seu escalonador e qual a política empregada para
determinar quais processos recebem o processador.
Tradicionalmente, os processos são divididos em três grandes classes: processos
interativos, processos batch e processos tempo real. Em cada classe, os processos podem ser
ainda subdivididos em I/O bound ou CPU bound de acordo com a proporção de tempo que
ficam esperando por operações de entrada e saída ou utilizando o processador. O escalonador
do Linux não distingue processos interativos de processos batch, diferenciando-os apenas dos
processos tempo real. Como todos os outros escalonadores UNIX, o escalonador Linux
privilegia os processos I/O bound em relação aos CPU bound de forma a oferecer um melhor
tempo de resposta às aplicações interativas.
O escalonador do Linux é baseado em time-sharing, ou seja, o tempo do processador é
dividido em fatias de tempo (quantum) as quais são alocadas aos processos. Se, durante a
execução de um processo, o quantum é esgotado, um novo processo é selecionado para
execução, provocando então uma troca de contexto. Esse procedimento é completamente
transparente ao processo e baseia-se em interrupções de tempo. Esse comportamento confere ao
Linux um escalonamento do tipo preemptivo.
O algoritmo de escalonamento do Linux divide o tempo de processamento em épocas
(epochs). Cada processo, no momento de sua criação, recebe um quantum calculado no início
de uma época. Diferentes processos podem possuir diferentes valores de quantum. O valor do
quantum corresponde à duração da época, e essa, por sua vez, é um múltiplo de 10 ms inferior a
100 ms.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
252
Escalonamento Linux
Outra característica do escalonador Linux é a existência de prioridades dinâmicas. O
escalonador do Linux monitora o comportamento de um processo e ajusta dinamicamente sua
prioridade, visando a equalizar o uso do processador entre os processos. Processos que
recentemente ocuparam o processador durante um período de tempo considerado “longo” têm
sua prioridade reduzida. De forma análoga, aqueles que estão há muito tempo sem executar
recebem um aumento na sua prioridade, sendo então beneficiados em novas operações de
escalonamento.
Na realidade, o sistema Linux trabalha com dois tipos de prioridades: estática e
dinâmica. As prioridades estáticas são utilizadas exclusivamente por processos de tempo real
correspondendo a valores na faixa de 1-99. Nesse caso, a prioridade do processo tempo real é
definida pelo usuário e não é modificada pelo escalonador. Somente usuários com privilégios
especiais têm a capacidade de criar e definir processos tempo real. O esquema de prioridades
dinâmicas é aplicado aos processos interativos e batch. Aqui, a prioridade é calculada,
considerando-se a prioridade base do processo e a quantidade de tempo restante em seu
quantum.
O escalonador do Linux executa os processos de prioridade dinâmica apenas quando
não há processos de tempo real. Em outros termos, os processos de prioridade estática recebem
uma prioridade maior que os processos de prioridade dinâmica. Para selecionar um processo
para execução, o escalonador do Linux prevê três políticas diferentes :
 SCHED_FIFO: Essa política é valida apenas para os processos de tempo real. Na
SCHED_FIFO
criação, o descritor do processo é inserido no final da fila correspondente à sua prioridade.
Nessa política, quando um processo é alocado ao processador, ele executa até que uma de três
situações ocorra: (i) um processo de tempo real de prioridade superior torna-se apto a executar;
(ii) o processo libera espontaneamente o processador para processos de prioridade igual à sua;
(iii) o processo termina, ou bloqueia-se, em uma operação de entrada e saída ou de
sincronização.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
253
Escalonamento Linux
SCHED_RR
SCHED_RR: Na criação, o descritor do processo é inserido no final da fila
correspondente à sua prioridade. Quando um processo é alocado ao processador, ele executa até
que uma de quatro situações ocorra: (i) seu período de execução (quantum) tenha se esgotado
nesse caso o processo é inserido no final de sua fila de prioridade; (ii) um processo de
prioridade superior torna-se apto a executar; (iii) o processo libera espontaneamente o
processador para processos de prioridade igual a sua; (iv) o processo termina, ou bloqueia-se,
em uma operação de entrada e saída ou de sincronização. Essa política também só é válida para
processos de tempo real.
 SCHED_OTHER: Corresponde a um esquema de filas multinível de prioridades
SCHED_OTHER
dinâmicas com timesharing. Os processos interativos e batch recaem nessa categoria. A criação
de processos em Linux, como em todos os sistemas UNIX, é baseada em uma operação do tipo
fork-exec, ou seja, um processo cria uma cópia sua (fork) e em seguida substitui o seu código
por um outro (exec). No momento da criação, o processo pai (o que fez o fork) cede metade de
seu quantum restante ao processo filho. Esse procedimento é, na verdade, uma espécie de
proteção que o sistema faz para evitar que um usuário, a partir de um processo pai, crie um
processo filho que execute o mesmo código do pai. Sem essa proteção, a cada criação o filho
receberia um novo quantum integral. Da mesma forma, o núcleo Linux previne-se contra o fato
de um mesmo usuário lançar vários processos em background, ou executar diferentes sessões
shell.
O escalonador do Linux é executado a partir de duas formas diferentes. A primeira é a
forma direta através de uma chamada explícita à rotina que implementa o escalonador. Essa é a
maneira utilizada pelo núcleo do Linux quando, por exemplo, detecta que um processo deverá
ser bloqueado em decorrência de uma operação de entrada e saída ou de sincronização. A
segunda forma, denominada de lazy, também é conseqüência do procedimento de
escalonamento, ocorrendo tipicamente em uma de três situações.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
254
Escalonamento Linux
A primeira dessas situações é a rotina de tratamento de interrupção de tempo que
atualiza os temporizadores e realiza a contabilização de tempo por processo. Essa rotina, ao
detectar que um processo esgotou seu quantum de execução aciona o escalonador para que seja
efetuada uma troca de processo. A segunda situação ocorre quando um processo de mais alta
prioridade é desbloqueado pela ocorrência do evento que esperava. A parte do código que
efetua o desbloqueio, isto é, trata os eventos de sincronização e de entrada e saída, consulta a
prioridade do processo atualmente em execução e compara-a com a do processo que será
desbloqueado. Se o processo a ser desbloqueado possuir uma prioridade mais alta, o
escalonador é acionado, e ocorre uma troca de processo. A terceira, e última forma de execução
lazy, é quando um processo explicitamente invoca o escalonador através de uma chamada de
sistema do tipo yield. Essa chamada de sistema permite a um processo “passar sua vez de
execução” a outro processo, e, para isso, parece claro, é necessário executar o escalonador.

professorbelfort@gmail.com
www.cliqueapostilas.com.br
FIFO com buffer de p áginas (m(método
páginas étodo de
de substitui ção de
substituição de ppáginas
áginas na
na memória)
memória)
255

•Combina duas listas de referências a páginas:


–Uma lista de páginas ativas (LPA) e
–Uma lista de páginas inativas (LPI)
•Páginas mais recentes ficam no início da LPA
•Páginas menos recentes ficam no final da LPI
•Vantagem:
–Páginas recém referenciadas não são substituídas
–Pela simplicidade, esse método é adotado no Linux
–Considera o princípio da localidade

• Página referida pela 1ª vez Î início da LPI, bit de referência = 1


• Página referida pela 2ª vez Î LPA, bit de referência = 0
• Página referida pela 3ª vez Î topo da LPA, bit de referência =1
professorbelfort@gmail.com
www.cliqueapostilas.com.br
256
Sistemas Operacionais (questões dissertativas)
•Rollback/commit em transferências bancárias (explique)
•Semáforos: binários x contadores (diferencie)
•Escalonamento: alto x médio x baixo (diferencie)
•SRT: processo preemptado: onde encaixa-se na fila?
•Fork: finalidades do uso (Carissimi x Berenger) (explique)
–Monoprocessado: gera concorrência
–Multiprocessado : gera paralelismo
•Impedimento de deadlock (citar as 4 estratégias)
•Substituição de páginas (explique)
–Windows: FIFO ou LRU (depende arquitetura do processador)
–Linux: FIFO com buffer de páginas
•HD: tipos de cache – diferencie: write .......... X write ..........
•Modularidade afeta: (explique)
–Extensibilidade: facilidade de modificação
–Portabilidade: facilidade de adaptação
•Qual a relação entre Working Set e Page Faults?

professorbelfort@gmail.com
www.cliqueapostilas.com.br
257
Análise do Working Set (W) x Quantidade de Page Fault (PF)
•Δ = W (fixo)
•N = número de referências à memória
•M = número de páginas distintas
•Política de realocação local
•Em qualquer situação:
–PF (page fault) ≤ N
–M ≤ N
•PFmin = Número mínimo de PF (melhor caso)
•PFmáx = Número máximo de PF (pior caso)

•Melhor caso: Δ → ∞; N ≥ 1; M = 1 ∴ sempre a mesma página


–PFmin = M
•Pior caso: Δ = 1; N = M ∴ páginas são todas diferentes
–PFmáx = N
•Para W ≥ 1 ∴ independe de Δ
•PFmin = Número mínimo de PF (melhor caso) =M
•PFmáx = Número máximo de PF (pior caso) =N
professorbelfort@gmail.com
www.cliqueapostilas.com.br

Boa sorte na prova!


Foi um prazer trabalhar com vocês.

professorbelfort@gmail.com

Você também pode gostar