Apresentação do PowerPoint

Transcrição

Apresentação do PowerPoint
TI – Básico
Sistemas Operacionais
Professor: Ricardo Quintão
e-mail: [email protected]
Site: www.rgquintao.com.br
1
Objetivos dos Sistemas Operacionais
•
Esconder a Complexidade do Hardware.
Devido a grande complexidade do hardware e também a dificuldade de manipular tal
equipamento, o SO apresenta ao usuário uma máquina de forma que os seus
recursos sejam acessados sem que haja necessidade de conhecimentos técnicos
sobre o hardware instalado.
•
Prover Portabilidade dos Softwares tornando-os o máximo possível
independente do Hardware.
Devido a grande variedade de equipamentos existentes e, consequentemente, formas
diferentes de acessar tais equipamentos, o SO oferece uma forma padronizada de
comunicação, independente do fabricante ou modelo do equipamento.
•
Gerenciamento do uso dos recursos do equipamento.
Quando existem diversos processos sendo executados no equipamento, estes
processos precisarão acessar os recursos existentes (CPU, Memória, E/S). Para que
não haja problemas na disputa por esses recursos, o SO faz a gerência definindo
quando, como e por quem tais recursos serão utilizados.
2
Objetivos dos Sistemas Operacionais
•
Como um Sistema Operacional consegue se comunicar e gerenciar a
vasta gama de equipamentos com seus códigos e formatos de
comunicação diferentes e proprietários?
– Para realizar esta tarefa, foram criados módulos de comunicação específicos para
cada equipamento.
– Estes módulos possuem todas as informações sobre o que o equipamento é capaz
de realizar e todos os códigos e formatos necessários para configurar e acessar tais
recursos no equipamento.
– Podemos visualizar estes módulos como sendo um manual explicativo dos recursos
do equipamento.
3
Objetivos dos Sistemas Operacionais
– Tais módulos são chamados de “DRIVER”.
– Para que o SO consiga acessar o dispositivo, ele precisa ter acesso ao seu
respectivo driver.
– O driver é um software que oferece ao sistema a capacidade de se comunicar com
um determinado dispositivo.
4
Objetivos dos Sistemas Operacionais
•
A figura abaixo mostra esta organização:
Impressora
Scanner
Driver
Driver
Núcleo
ou
Kernel
Driver
Placa de Rede
SO completo e personalizado
para o equipamento
Driver
Placa de Vídeo
5
Tipos de Sistemas Operacionais
•
Sistemas Monoprogramáveis ou Monotarefa.
 Eles se caracterizam por permitir que o processador, a memória e os periféricos
permaneçam exclusivamente dedicados à execução de um único programa.
 Devido a isso, enquanto o programa aguarda por um evento, o processador
permanece ocioso, sem realizar qualquer tipo de processamento.
 A memória é subutilizada caso o programa não a preencha totalmente.
6
Tipos de Sistemas Operacionais
•
Sistemas Multiprogramáveis ou Multitarefa.
 Neste tipo de sistema, os recursos computacionais são compartilhados entre os
diversos usuários e aplicações.
 Enquanto um programa espera por uma operação de leitura ou gravação, outros
programas podem estar sendo processados neste mesmo intervalo de tempo.
 Existe o compartilhamento da memória e do processador.
 O sistema operacional se preocupa em gerenciar o acesso concorrente aos seus
diversos recursos de forma ordenada e protegida entre os diversos programas.
7
Tipos de Sistemas Operacionais
•
Sistemas com Múltiplos Processadores ou Multiprocessado.
 Este sistema se caracteriza por possuir duas ou mais CPUs interligadas e
trabalhando em conjunto.
 A vantagem deste tipo de sistema é permitir que vários programas sejam executados
ao mesmo tempo ou que um mesmo programa seja subdividido em partes para
serem executadas simultaneamente em mais de um processador.
8
Tipos de Sistemas Operacionais
•
Sistemas Multiprogramáveis ou Multitarefa.
– Sistema Batch.
 O sistema batch tem a característica de não exigir a interação do usuário com a
aplicação.
 Todas as entradas e saídas de dados da aplicação são implementadas por
algum tipo de memória secundária, geralmente arquivos em disco.
 Atualmente, os sistemas operacionais implementam ou simulam o
processamento batch, não existindo sistemas exclusivamente dedicados a este
tipo de processamento.
9
Tipos de Sistemas Operacionais
•
Sistemas Multiprogramáveis ou Multitarefa.
– Sistema de Tempo Compartilhado (Time-Sharing).
 Estes sistemas permitem que diversos programas sejam executados a partir da
divisão do tempo do processador em pequenos intervalos, denominados fatia de
tempo (time-slice ou quantum).
 Caso a fatia de tempo não seja suficiente para a conclusão do programa, ele é
interrompido pelo sistema operacional e substituído por um outro programa,
enquanto aguarda por uma nova fatia de tempo.
 O sistema cria para cada usuário um ambiente de trabalho próprio, dando a
impressão de que todo o sistema está dedicado exclusivamente a ele.
10
Tipos de Sistemas Operacionais
•
Sistemas Multiprogramáveis ou Multitarefa.
– Sistema de Tempo Real
 Estes sistemas são implementados de forma semelhante aos sistemas de tempo
compartilhado.
 O que caracteriza a diferença entre os dois tipos de sistemas é o tempo exigido
no processamento das aplicações.
 Enquanto em sistemas de tempo compartilhado o tempo de processamento pode
variar sem comprometer as aplicações em execução, nos sistemas de tempo real
os tempos de processamento devem estar dentro de limites rígidos, que devem
ser obedecidos, caso contrário poderão ocorrer problemas irreparáveis.
11
Tipos de Sistemas Operacionais
• Sistemas com Múltiplos Processadores.
– Sistemas Fortemente Acoplados
Neste sistema existem vários processadores compartilhando uma
única memória física e dispositivos de E/S, sendo gerenciados por
apenas um sistema operacional.
12
Tipos de Sistemas Operacionais
– Sistemas Fortemente Acoplados
CPU
CPU
CPU
CPU
Cache
Cache
Cache
Cache
Barramento Comum
Memória
Principal
Subsistema
de E/S
13
Tipos de Sistemas Operacionais
• Sistemas com Múltiplos Processadores.
– Sistemas Fracamente Acoplados
Estes sistemas caracterizam-se por possuir dois ou mais sistemas
computacionais conectados através de linhas de comunicação.
Cada sistema funciona de forma independente, possuindo seu
próprio sistema operacional e gerenciando seus próprios recursos.
14
Tipos de Sistemas Operacionais
– Sistemas Fracamente Acoplados
CPU
CPU
CPU
cache
cache
cache
Memória
E/S
Memória
E/S
Memória
E/S
Memória
E/S
Rede de Comunicação
Memória
E/S
Memória
E/S
CPU
CPU
CPU
cache
cache
cache
15
Exercícios
1- (Questão 66 – Petrobrás – Analista de Sistemas Júnior – Suporte de Infraestrutura – ano 2005 – Cesgranrio)
Um device driver, ou somente driver, tem como função implementar a comunicação do subsistema de E/S com os dispositivos,
através de controladores. Sendo assim, um device driver:
a)
b)
c)
d)
e)
Manipula diretamente os dispositivos de E/S.
Permite a comunicação entre o sistema computacional e o mundo externo.
Recebe comandos gerais sobre acessos aos dispositivos, traduzindo-os para comandos específicos, que poderão ser
executados pelos controladores.
Realiza as funções comuns a todos os tipos de dispositivos.
Torna as operações de E/S mais simples para o usuário bem como suas aplicações
16
Exercícios
2- (Questão 65 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2011 – Cesgranrio)
Sobre os sistemas operacionais, considere as afirmações a seguir.
I.
II.
III.
IV.
Sistemas operacionais do tipo batch não exigem interação com o usuário.
Sistemas operacionais monoprogramáveis permitem a execução de vários processos concorrentemente.
Sistemas operacionais multitarefa, com suporte a múltiplos processadores, permitem a execução concorrente ou
paralela de vários processos.
Sistemas de tempo compartilhado devem ser utilizados em aplicações de tempo real.
Está correto APENAS o que se afirma em:
a)
b)
c)
d)
e)
I e II
I e III
III e IV
I, II e III
I, III e IV
17
Exercícios
3- (Questão 58 – MEC – Administrador de Redes – ano 2009 – FGV)
A maioria dos computadores opera com apenas uma CPU e executam diversas tarefas, processando-as de forma concorrente e não
simultânea.
Esta modalidade de processamento é conhecida por:
a)
b)
c)
d)
e)
processamento online.
processamento batch.
processamento offline.
multiprocessamento.
multiprogramação.
18
Exercícios
4- (Questão 56 – Petrobrás – Analista de Sistemas Junior – Engenharia de Software – ano 2012 – Cesgranrio)
Alguns dos objetivos dos algoritmos de escalonamento de processos são comuns a todos os tipos de sistemas operacionais.
Outros, entretanto, variam de acordo com o tipo de sistema.
Qual dos objetivos abaixo NÃO se aplica a algoritmos de escalonamento de processos utilizados em sistemas voltados para o
processamento em lote (batch)?
a)
b)
c)
d)
e)
Atender às requisições dos usuários o mais rápido possível.
Manter a CPU ocupada o tempo todo.
Manter os dispositivos de E/S ocupados o máximo de tempo possível.
Maximizar o número de jobs processados por unidade de tempo.
Minimizar o tempo entre a submissão e o término de um job.
19
Exercícios
5- (Questão 43 – Petrobrás – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
A denominação SMP refere-se a um sistema de computador independente, no qual existem dois ou mais processadores similares
com capacidade de computação comparável, que
a)
b)
c)
d)
e)
compartilham a mesma memória principal e as facilidades de E/S (Entrada/Saída).
compartilham a mesma memória principal, mas não compartilham as facilidades de E/S (Entrada/Saída).
compartilham as facilidades de E/S (Entrada/Saída), mas não compartilham a mesma memória principal.
utilizam um esquema de conexão que impede um tempo de acesso uniforme à memória.
desempenham, necessariamente, funções distintas.
20
Operações de Entrada e Saída
Ciclo de Entrada e Saída
Configurar o Dispositivo
Verificar se o
Dispositivo está pronto
Sim
Não
Realizar a transferência de
um bloco de dados
Não
Verificar se os dados
acabaram
Sim
Final da E/S
21
Operações de Entrada e Saída
•
Existem três maneira básicas de executar operações de Entrada e Saída.
–
Entrada e Saída controlada por programa ou polling ou Espera Ocupada (Busy Wait).
 Nesta técnica, o processador sincroniza-se com o periférico para o início da transferência de
dados.
 Após iniciada a transferência, o sistema fica permanentemente testando o estado do
periférico para saber quando a operação chegaria ao seu final.
 Este controle mantinha o processador ocupado até o término da operação de E/S.
 Como o processador executa uma instrução muito mais rapidamente que a realização de
uma operação de E/S, havia um enorme desperdício de tempo da CPU.
22
Operações de Entrada e Saída
Entrada e Saída controlada por programa ou polling
A
E/S
Ciclo de E/S
Configurar o Dispositivo
Verificar se o Dispositivo
está pronto
Realizar a transferência de
um bloco de dados
Verificar se os dados acabaram
23
Operações de Entrada e Saída
– Entrada e Saída controlada por interrupção.
 Com a implementação do mecanismo de interrupção, as operações de E/S
podem ser realizadas de uma forma mais eficiente.
 Neste caso, o controlador interrompe o processador para avisar do término da
operação de E/S.
 Com este mecanismo, o processador, após a execução de um comando de
leitura ou gravação, permanece livre para o processamento de outras tarefas.
 O controlador por sua vez, ao receber um sinal de leitura fica encarregado de ler
os blocos do disco e armazená-los em memória ou registradores próprios.
24
Operações de Entrada e Saída
– Entrada e Saída controlada por interrupção (Continuação).
 Em seguida, o controlador sinaliza uma interrupção ao processador.
 Quando o processador atender à interrupção, a rotina responsável pelo
tratamento transfere os dados dos registradores do controlador para a memória
principal.
 Ao término da transferência, o processador pode voltar a executar o programa
interrompido e o controlador fica novamente disponível para outra operação.
25
Operações de Entrada e Saída
Entrada e Saída controlada por interrupção
A
E/S
Configurar o Dispositivo
Ciclo de E/S
B
Verificar se o Dispositivo
está pronto
IRQ do dispositivo
Realizar a transferência de
um bloco de dados
Verificar se os dados acabaram
26
Operações de Entrada e Saída
– Entrada e Saída controlada por DMA (Acesso Direto à Memória).
 Esta técnica permite que um bloco de dados seja transferido entre a memória
principal e dispositivos de E/S sem a intervenção do processador, exceto no
início e no final da transferência.
 Quando o sistema deseja ler ou gravar um bloco de dados, o processador
informa ao controlador sua localização, o dispositivo de E/S, a posição inicial da
memória de onde os dados serão lidos ou gravados e o tamanho do bloco.
 Com estas informações, o controlador de DMA realiza a transferência entre o
periférico e a memória principal, e o processador somente é interrompido no final
da operação.
 A área de memória utilizada pelo controlador de DMA é chamada de buffer de
entrada e saída.
27
Operações de Entrada e Saída
– Entrada e Saída controlada por DMA (Continuação).
 No momento em que uma transferência de dados através da técnica de DMA é
realizada, o controlador deve assumir, momentaneamente, o controle do
barramento.
 Como a utilização do barramento é exclusiva de um dispositivo, o processador
deve suspender o acesso ao barramento, temporariamente, durante a operação
de transferência.
 Este procedimento não gera uma paralização, e o processador pode realizar
tarefas, desde que sem a utilização do barramento, como um acesso à memória
cache.
28
Operações de Entrada e Saída
Entrada e Saída controlada por DMA
A
Ciclo de E/S
E/S
Configurar o Dispositivo
Evitar
CPU
B
E/S
Verificar se o Dispositivo
está pronto
Evitar
IRQ do dispositivo
Configurar o DMA
MEM
DMA
Realizar a transferência de
um bloco de dados
DMA realiza a
transferência
IRQ do DMA
Verificar se os dados acabaram
29
Exercícios
6- (Questão 61 – Liquigás – Profissional Junior – Tecnologia da Informação – Desenvolvimento – ano 2012 –
Cesgranrio)
Há diversas formas pelas quais um sistema computacional pode tratar os eventos de entrada e saída (E/S). O esquema no qual
a Unidade Central de Processamento (UCP) fica ocupada em um laço de repetição (loop) à espera do término de uma operação
de E/S é conhecido como esquema de:
a)
b)
c)
d)
e)
Interrupção
Prioridades
E/S programada
E/S mapeada em memória
DMA
30
Exercícios
7- (Questão 63 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2011 – Cesgranrio)
Nos sistemas operacionais modernos, as operações de entrada e saída (E/S) são realizadas sem a utilização direta do processador.
PORQUE
Existem controladores que realizam as operações de E/S e implementam técnicas de acesso direto à memória.
Analisando-se as afirmações acima, conclui-se que:
a)
b)
c)
d)
e)
as duas afirmações são verdadeiras, e a segunda justifica a primeira.
as duas afirmações são verdadeiras, e a segunda não justifica a primeira.
a primeira afirmação é verdadeira, e a segunda é falsa.
a primeira afirmação é falsa, e a segunda é verdadeira.
as duas afirmações são falsas.
31
Exercícios
8- (Questão 47 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2011 – Cesgranrio)
No contexto de sistemas operacionais, qual mecanismo de entrada e saída é mais eficiente para um grande volume de
informações, onde as operações são realizadas sem a intervenção do processador?
a)
b)
c)
d)
e)
Acesso direto à memória (DMA)
Transmissão serial
Transmissão paralela
Entrada e Saída distribuída
Entrada e Saída por interrupção
32
Exercícios
9- (Questão 30 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2008 – Cesgranrio)
Que tecnologia tem por objetivo liberar a CPU em operações de entrada/saída?
a)
b)
c)
d)
e)
Acesso direto à memória (DMA)
Cache
Paginação
Pipeline
Spool
33
Exercícios
10- (Questão 24 – Transpetro – Analista de Sistemas Pleno– ano 2006 – Cesgranrio)
Uma das funções principais de um sistema operacional é controlar todos os dispositivos de E/S (entrada/saída) de um
computador. Sobre as formas como a E/S pode ser feita do ponto de vista dos sistemas operacionais, considere as seguintes
afirmativas.
I.
II.
III.
Na E/S programada, a CPU principal lê ou escreve cada byte ou palavra e espera em um laço até que ela possa obter
ou enviar o próximo dado.
Na E/S orientada a interrupção, a CPU inicia uma transferência de E/S para um caractere ou palavra e segue para
outra atividade até que uma interrupção sinalize a conclusão daquela E/S.
Na E/S que usa DMA, um chip separado gerencia a transferência completa de um bloco de dados, ocorrendo uma
interrupção somente quando o bloco for totalmente transferido.
Está(ão) correta(s) a(s) afirmativa(s):
a)
b)
c)
d)
e)
I, apenas.
II, apenas.
III, apenas.
I e II, apenas.
I, II e III.
34
Exercícios
11- (Questão 27 – Petrobrás – Técnico de Informática Junior – ano 2012 – Cesgranrio)
Considere que um processo de usuário em um sistema operacional precisa enviar uma cadeia de caracteres para uma impressora.
Para fazer a impressão, esse processo requisita a impressora para escrita através de uma chamada ao sistema (system call). Na
estratégia de entrada e saída utilizada por esse sistema operacional, a cadeia é copiada do espaço de memória do usuário para o
espaço de memória do núcleo (kernel). A seguir, o sistema operacional entra em um laço (loop) para enviar um caractere por vez
para a impressora. Quando um caractere é impresso, o sistema operacional entra em espera ociosa até que a impressora esteja
pronta para receber o próximo caractere.
Um técnico de informática identifica que a situação aqui descrita descreve a estratégia de entrada e saída
a)
b)
c)
d)
e)
programada
assíncrona
orientada a interrupção
orientada a blocos de memória
que usa acesso indireto à memória
35
Exercícios
12- (Questão 54 – Banco do Estado de Sergipe – Técnico Bancário III – Suporte – ano 2012 – FCC)
Nos sistemas de entrada e saída, o nível de interação entre a CPU e a execução da operação de E/S que conta com a característica
de uso da estratégia de busy-wait (espera ocupada) é conhecido por
a)
b)
c)
d)
e)
E/S por interrupção.
E/S programada.
Canais de dados de E/S.
Processadores de E/S.
Canais seletores.
36
Operações de Entrada e Saída
Interrupção X Exceção
•
Uma interrupção, também conhecida por Interrupção de Hardware, é
sempre gerada por algum evento externo ao programa e, nesse caso,
independe da instrução que está sendo executada.
•
Um exemplo de interrupção é quando um dispositivo avisa ao processador que
alguma operação de E/S está completa.
•
Nesse caso, o processador deve interromper o programa para tratar o término
da operação.
•
Ao final da execução de cada instrução, a unidade de controle verifica a
ocorrência de algum tipo de interrupção.
37
Operações de Entrada e Saída
Interrupção X Exceção
•
Nesse caso, o programa em execução é interrompido e o controle desviado
para uma rotina responsável por tratar o evento ocorrido, denominada rotina de
tratamento de interrupção.
•
Para que o programa possa posteriormente voltar a ser executado, é
necessário que, no momento da interrupção, um conjunto de informações sobre
a sua execução seja preservado.
•
Essas informações consistem no conteúdo de registradores, que deverão ser
restaurados para a continuação do programa.
38
Operações de Entrada e Saída
Interrupção X Exceção
Aplicação
Salva o conteúdo dos
registradores na pilha de controle
Rotina de
Tratamento
Identifica a origem da interrupção
Interrupção
ou Exceção
Obtém o endereço da rotina de
tratamento
Restaura o conteúdo dos
registradores
39
Operações de Entrada e Saída
Interrupção X Exceção
Arquitetura do Sistema de Interrupção
Controlador de
Interrupções
CPU
IRQ
IRQ
INTA
Número do Pino de IRQ
BD
0
1
INTA 2
3
4
5
6
7
Vetor de Interrupção
Clock do Sistema
Controladora de Disco
Teclado
Mouse
.
.
.
.
.
0
End. 0 RT referente ao Pino 0
1
End. 1 RT referente ao Pino 1
2
End. 2 RT referente ao Pino 2
3
End. 3 RT referente ao Pino 3
4
End. 4 RT referente ao Pino 4
5
End. 5 RT referente ao Pino 5
6
End. 6 RT referente ao Pino 6
7
End. 7 RT referente ao Pino 7
CI  Vetor de Interrupção[Pino do Controlador]
40
Operações de Entrada e Saída
Interrupção X Exceção
•
Passos realizados após um pedido de interrupção ser aceito
1. Um sinal de interrupção é gerado para o processador;
Via Hardware
2. Após o término da execução da instrução corrente, o processador identifica o
pedido de interrupção;
3. Os conteúdos dos registradores PC e de status são salvos;
4. O processador identifica qual a rotina de tratamento que será executada e
carrega o PC com o endereço inicial desta rotina;
5. A rotina de tratamento salva o conteúdo dos demais registradores do
processador na pilha de controle do programa;
Via Software
6. A rotina de tratamento é executada;
7. Após o término da execução da rotina de tratamento, os registradores de uso
geral são restaurados, além do registrador de status e o PC, retornando à
execução do programa interrompido.
41
Operações de Entrada e Saída
Interrupção X Exceção
•
Para cada tipo de interrupção existe uma rotina de tratamento associada, para
a qual o fluxo de execução deve ser desviado.
•
A identificação do tipo de evento ocorrido é fundamental para determinar o
endereço da rotina de tratamento.
•
No momento da ocorrência de uma interrupção, o processador deve saber para
qual rotina de tratamento deve ser desviado o fluxo de execução.
•
O principal método utiliza uma estrutura de dados chamada vetor de
interrupção, que contém o endereço inicial de todas as rotinas de tratamento
existentes associadas a cada tipo de evento.
42
Operações de Entrada e Saída
Interrupção X Exceção
•
Uma exceção, também conhecida por Interrupção de Software, é
semelhante a uma interrupção, sendo a principal diferença o motivo pelo qual o
evento é gerado.
•
A exceção é resultado direto da execução de uma instrução do próprio
programa, como:
–
–
–
–
Divisão de um número por zero;
Overflow em uma operação aritmética;
Instrução Inválida;
Instrução Ilegal, dentre outras...
43
Estrutura do Sistema Operacional
•
O sistema operacional é formado por um conjunto de rotinas que oferecem
serviços aos usuários e às aplicações.
•
Esse conjunto de rotinas é denominado núcleo do sistema ou kernel.
•
A maioria dos sistemas operacionais vem acompanhada de utilitários,
linguagem de comandos, que são ferramentas de apoio ao usuário, porém não
são parte do kernel.
44
Estrutura do Sistema Operacional
Funções de Kernel
•
Principais Funções do Núcleo do Sistema.
– Tratamento de interrupções e exceções;
– Criação e eliminação de processos e threads;
– Sincronização e comunicação entre processos e threads;
– Escalonamento e controle dos processos e threads;
– Gerência de memória;
– Gerência do sistema de arquivo;
– Gerência de dispositivos de E/S;
– Suporte a redes locais e distribuídas;
– Contabilização do uso do sistema;
– Auditoria e segurança do sistema.
45
Estrutura do Sistema Operacional
Modos de Acesso
•
Para que o sistema possa gerenciar a máquina, ele tem que estar em um nível
de privilégio superior ao dos demais processos que estão em execução.
•
Se os processos estiverem no mesmo nível de privilégio que o SO, todos terão
o mesmo poder de mando, o que levará ao caos e consequentemente, nada
funcionará corretamente.
•
Para conseguir ter privilégios superiores, o SO utiliza um recurso existente em
diversos processadores conhecido como modo de acesso.
46
Estrutura do Sistema Operacional
Modos de Acesso
•
Em geral, os processadores possuem dois modos de acessos: modo usuário e
modo kernel.
•
Quando o processador trabalha no modo usuário, só é permitido o acesso a
parte do conjunto de instruções. As instruções permitidas são chamadas de
instruções não-privilegiadas.
•
Além disso, diversos outros mecanismos de proteção e restrição de acesso
entram em funcionamento.
47
Estrutura do Sistema Operacional
Modos de Acesso
•
No modo kernel, todo o conjunto de instruções pode ser executado. As
instruções que só podem ser executadas neste modo são conhecidas por
instruções privilegiadas.
•
Esta separação de instruções privilegiadas e não-privilegiadas pode ser vista
como sendo privilegiadas as instruções que colocam em risco o
funcionamento do SO e não-privilegiadas são as instruções inofensivas, isto é,
as que não oferecem risco ao SO.
48
Estrutura do Sistema Operacional
Modos de Acesso
Conjunto de Instruções
Modos de Acesso da CPU
Usuário
Kernel
Modo
Kernel
Modo
Usuário
Não-Privilegiadas
(Inofensivas)
Privilegiadas
(Perigosas)
49
Estrutura do Sistema Operacional
Rotinas do SO e Chamadas ao Sistema (System Calls)
•
As rotinas do SO compõem o núcleo do sistema, oferecendo serviços aos
usuários e suas aplicações.
•
Todas as funções do núcleo são implementadas por rotinas do sistema que
necessariamente possuem em seu código instruções privilegiadas.
•
A partir desta condição, para que estas rotinas possam ser executadas, o
processador deve estar obrigatoriamente em modo kernel, o que exige a
implementação de mecanismos de proteção para garantir a confiabilidade do
sistema.
50
Estrutura do Sistema Operacional
Rotinas do SO e Chamadas ao Sistema (System Calls)
•
Todo o controle de execução de rotinas do sistema operacional é realizado pelo
mecanismo conhecido como system call.
•
Toda vez que uma aplicação desejar chamar uma rotina do sistema
operacional, o mecanismo de system call é ativado.
•
Inicialmente, o SO verificará se a aplicação possui os privilégios necessários
para executar a rotina desejada.
51
Estrutura do Sistema Operacional
Rotinas do SO e Chamadas ao Sistema (System Calls)
•
Em caso negativo, o SO impedirá o desvio para a rotina, sinalizando ao
programa chamador que a operação não é possível.
•
Este é um mecanismo de proteção por software no qual o SO garante que as
aplicações só poderão executar rotinas do sistema que estão previamente
autorizadas.
•
Considerando que a aplicação possua o devido privilégio, o sistema
primeiramente salva o conteúdo corrente dos registradores, troca o modo de
acesso do processador de usuário para kernel e realiza o desvio para a rotina
alterando o registrador PC com o endereço da rotina chamada.
52
Estrutura do Sistema Operacional
Rotinas do SO e Chamadas ao Sistema (System Calls)
•
Ao término da execução da rotina, o modo de acesso é alterado de kernel
para usuário e o contexto dos registradores restaurado para que a
aplicação continue a execução a partir da instrução que chamou a rotina do
sistema.
53
Estrutura do Sistema Operacional
Rotinas do SO e Chamadas ao Sistema (System Calls)
Modo Usuário
Salva o contexto dos
registradores.
Altera o modo de acesso do
processador para kernel.
Verifica as permissões para
execução da Rotina do SO. Se
permitido, redirecionar para a
Rotina.
Não Permitido
Rotina do SO
Modo kernel
Modo Usuário
Aplicação
Altera o modo de acesso do
processador para usuário.
Restaura o contexto dos
registradores.
54
Exercícios
13- (Questão 21 – BADESC – Analista de Sistemas – Desenvolvimento de Sistemas – ano 2010 – FGV)
Com o objetivo de melhorar a eficiência de processamento, microcomputadores utilizam um recurso associado à forma como os
componentes da máquina podem interromper a sequência normal de execução de instruções do processador.
Nesse sentido, uma situação ocorre quando é gerada por alguma condição, resultante da execução de uma instrução, como divisão
por zero, overflow em uma operação aritmética e referência a um endereço de memória fora do espaço de endereçamento de
programa.
Essa situação faz referência a uma classe conhecida por:
a)
b)
c)
d)
e)
interrupção de swap.
interrupção de fetch.
interrupção de clock.
interrupção de software.
interrupção de hardware.
55
Exercícios
14- (Questão 22 – Transpetro – Analista de Sistemas Júnior – ano 2006 – Cesgranrio)
O núcleo do sistema operacional, drivers, utilitários e aplicativos são descritos internamente por instruções de máquina, e se
diferenciam de acordo com sua capacidade de interagir com o hardware. Enquanto aplicativos e utilitários têm acesso mais
restrito, os drivers e o núcleo devem ter pleno acesso ao hardware para poder configurá-lo e gerenciá-lo. Para que os acessos
sejam diferenciados dentre os diversos tipos de software, os processadores contam com:
a)
b)
c)
d)
e)
Níveis de Privilégio de Execução.
Interrupções e Exceções.
Controladores de Dispositivos.
Memória Virtual.
Exclusão Mútua.
56
Exercícios
15- (Questão 65 – Petrobrás – Analista de Sistemas Júnior – Suporte de Infraestrutura – ano 2005 – Cesgranrio)
Uma system call pode ser entendida como uma porta de entrada para o acesso ao núcleo do sistema operacional e a seus serviços.
Isto significa que:
a)
b)
c)
d)
e)
Uma aplicação desenvolvida utilizando serviços de um determinado sistema operacional pode ser portada diretamente para
outro sistema operacional.
A maioria dos programadores conhece os detalhes da implementação de uma system call, podendo implementá-lo no seu
próprio programa.
Para cada serviço disponível existe uma system call associada e cada sistema operacional tem o seu próprio conjunto de
chamadas, com nomes, parâmetros e formas de ativação específicos.
O modo de acesso de uma system call é o mesmo de um programa de usuário.
Os utilitários de um sistema operacional, como compiladores e editores de texto, são considerados system calls.
57
Exercícios
16- (Questão 57 – Petrobrás – Analista de Sistemas Junior – Engenharia de Software – ano 2012 – Cesgranrio)
O mecanismo pelo qual programas dos usuários solicitam serviços ao núcleo do sistema operacional é denominado:
a)
b)
c)
d)
e)
biblioteca do sistema
chamada ao sistema
editor de ligação
shell de comandos
ligação dinâmica
58
Exercícios
17- (Questão 43 – Defensoria Pública de SP – Analista de Sistemas – ano 2013 – FCC)
Analise as afirmativas sobre o mecanismo de interrupção dos sistemas operacionais modernos.
I.
II.
III.
As interrupções de I/O significam que uma saída foi concluída, que dados de entrada estão disponíveis ou que uma
falha foi detectada.
O mecanismo de interrupção também é utilizado para manipular uma ampla gama de eventos, como a divisão por
zero, o acesso a um endereço de memória protegido ou inexistente ou a tentativa de executar uma instrução
privilegiada em modalidade de usuário.
Os eventos que disparam interrupções têm uma propriedade em comum: são ocorrências que induzem a placa-mãe a
bloquear o barramento de dados para permitir que o sistema operacional execute uma rotina urgente.
Está correto o que se afirma APENAS em
a)
b)
c)
d)
e)
I.
II e III.
I e II.
III.
II.
Contesto a banca em relação ao item II,
pois como não foi especificado se a
interrupção em questão é de hardware ou
software, pode-se considerar o item como
falso, levando à marcação da letra a.
59
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
A arquitetura Monolítica.
– Esta pode ser comparada com uma aplicação formada por vários módulos
que são compilados separadamente e depois linkados, formando um
grande programa executável, onde os módulos podem interagir livremente.
– Os primeiros sistemas operacionais foram desenvolvidos com base neste
modelo, o que tornava seu desenvolvimento, e principalmente, sua
manutenção bastante difíceis.
– Devido a sua simplicidade e bom desempenho, a estrutura monolítica foi
adotada no projeto do MS-DOS e nos primeiros sistemas UNIX.
60
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
A arquitetura Monolítica.
Aplicação
Aplicação
Modo Usuário
Modo kernel
System Call
Hardware
61
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
A arquitetura em Camadas.
– Com o aumento da complexidade e do tamanho do código dos sistemas
operacionais, técnicas de programação estruturada e modular foram
incorporadas ao seu projeto.
– Na arquitetura de camadas, o sistema é dividido em níveis sobrepostos.
– Cada camada oferece um conjunto de funções que podem ser utilizadas
apenas pelas camada superiores.
– Neste tipo de implementação, as camadas mais internas são mais
privilegiadas que as mais externas.
62
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
A arquitetura em Camadas (Continuação).
– A vantagem da estruturação em camadas é isolar as funções do sistema
operacional, facilitando sua manutenção e depuração, além de criar uma
hierarquia de níveis de modos de acesso, protegendo as camadas mais
internas.
– Uma desvantagem para o modelo de camadas é o desempenho.
– Cada nova camada implica em uma mudança no modo de acesso.
63
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
A arquitetura em Camadas (Continuação).
– Atualmente, a maioria dos sistema comerciais utiliza o modelo de duas
camadas, onde existem os modos de acesso usuário (não-privilegiado) e
kernel (privilegiado).
– A maioria das versões do UNIX e o Windows da Microsoft está baseada
neste modelo.
64
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
A arquitetura em Camadas.
Kernel
Executivo
Supervisor
Usuário
65
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Arquitetura Microkernel ou Cliente-Servidor.
– Uma tendência nos sistemas operacionais modernos é tornar o núcleo do
sistema operacional o menor e mais simples possível.
– Para implementar esta idéia, os serviços do sistema são disponibilizados
através de processos, onde cada um é responsável por oferecer um
conjunto específico de funções, como gerência de arquivos, gerência de
processos, gerência de memória, escalonamento, etc.
– Sempre que uma aplicação deseja algum serviço, é realizada uma
solicitação ao processo responsável.
66
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Arquitetura Microkernel ou Cliente-Servidor (Continuação).
– Neste caso, a aplicação que solicita o serviço é chamada de cliente,
enquanto o processo que responde à solicitação é chamado de servidor.
– A principal função do núcleo é realizar a comunicação, ou seja, a troca de
mensagens entre cliente e servidor.
– Um cliente, que pode ser uma aplicação de um usuário ou um outro
componente do sistema operacional, solicita um serviço enviando uma
mensagem para o servidor.
– O servidor responde ao cliente através de uma outra mensagem.
67
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Arquitetura Microkernel ou Cliente-Servidor (Continuação).
– A utilização deste modelo permite que os servidores executem em modo
usuário, ou seja, não tenham acesso direto a certos componentes do
sistema.
– Apenas o núcleo do sistema, responsável pela comunicação entre clientes
e servidores, executa no modo kernel.
– Como consequência, se ocorrer um erro em um servidor, este poderá parar,
mas o sistema não ficará inteiramente comprometido, aumentando assim a
sua disponibilidade.
68
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Arquitetura Microkernel ou Cliente-Servidor.
Servidor de
Impressão
Aplicação
Modo Usuário
Modo kernel
Servidor de
Arquivo
Servidor de
Memória
Microkernel
Hardware
69
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Máquinas Virtuais.
– O modelo de máquina virtual cria um nível intermediário entre o hardware e
o sistema operacional, denominado gerência de máquinas virtuais.
– Este nível cria diversas máquinas virtuais independentes, onde cada uma
oferece uma cópia virtual do hardware, incluindo os modos de acesso,
interrupções, dispositivos de E/S.
– Como cada máquina virtual é independente das demais, é possível que
cada MV tenha seu próprio sistema operacional e que seus usuários
executem suas aplicações como se todo o computador estivesse dedicado
a cada um deles.
70
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Máquinas Virtuais (Continuação).
– Além de permitir a convivência de sistemas operacionais diferentes no
mesmo computador, este modelo cria o isolamento total entre cada MV,
oferecendo grande segurança para cada máquina virtual.
– Se, por exemplo, uma MV executar uma aplicação que comprometa o
funcionamento do sistema operacional, as demais máquinas virtuais não
sofrerão problema.
71
Estrutura do Sistema Operacional
Arquiteturas do Kernel
•
Máquina Virtual.
AP1
AP2
AP3
APn
SO1
SO2
SO3
SOn
MV1
MV2
MV3
MVn
Gerência de Máquinas Virtuais (MV)
Hardware
72
Exercícios
18- (Questão 23 – Transpetro – Analista de Sistemas Pleno– ano 2006 – Cesgranrio)
Um sistema operacional é formado por um conjunto de rotinas que oferecem serviços aos usuários, às suas aplicações e também
ao próprio sistema. Esse conjunto de rotinas é denominado núcleo do sistema operacional ou kernel. A estrutura do sistema
operacional, ou seja, a maneira como o código do sistema é organizado, pode variar conforme a concepção do projeto. A
arquitetura monolítica pode ser definida como um programa:
a)
b)
c)
d)
e)
Composto por vários módulos que são compilados separadamente e depois linkados, formando um único programa
executável.
Composto por vários níveis sobrepostos, onde cada camada fornece um conjunto de funções que podem ser utilizadas
apenas pelas camadas superiores.
Composto por várias camadas, onde cada camada isola as funções do sistema operacional, facilitando sua manutenção e
depuração, além de criar uma hierarquia de níveis de modos de acesso, protegendo as camadas mais internas.
Formado por vários níveis, sendo que a camada de nível mais baixo é o hardware, e cada um dos níveis acima cria uma
máquina virtual independente, em que cada uma oferece uma cópia virtual do hardware.
Cujo núcleo do sistema é o menor e o mais simples possível e, neste caso, os servidores do sistema são responsáveis por
oferecer um conjunto específico de funções, como gerência de arquivos, por exemplo.
73
Exercícios
19- (Questão 28 – IBGE – Supervisor de pesquisas, Tecnologia de Informação e Comunicação – ano 2014 – Cesgranrio)
Os projetos de sistemas operacionais admitem várias e diferentes organizações de estrutura interna. Dentre essas organizações,
encontram-se:
a)
b)
c)
d)
e)
sistemas monolíticos, modelo cliente-servidor e máquinas virtuais
sistemas monolíticos, memória e sistemas de camadas
shell, exonúcleos e sistemas de camadas
camadas física, lógica e de aplicação
modelo cliente-servidor, máquinas virtuais e kernel
74
Processos
75
Definição
•
A gerência de uma ambiente multiprogramável é função exclusiva do sistema
operacional que deve controlar a execução dos diversos programas e o uso
concorrente do processador.
•
Para isso, um programa ao ser executado deve estar sempre associado a um
processo.
•
O conceito de processo é a base para a implementação de um sistema
multiprogramável.
•
O processador é projetado para executar instruções a partir do ciclo de busca e
execução.
76
Definição
•
Na visão da camada de hardware, o processador executa instruções sem
distinguir qual programa encontra-se em processamento.
•
É de responsabilidade do sistema operacional implementar a concorrência
entre programas gerenciando a alternância da execução de instruções na CPU
de maneira controlada e segura.
•
Neste sentido, o conceito de processo torna-se essencial para que os sistemas
multiprogramáveis implementem a concorrência de diversos programas e
atendam a múltiplos usuários simultaneamente.
•
Um processo pode ser entendido inicialmente como um programa em
execução, só que seu conceito é mais abrangente.
77
Definição
•
Pode-se definir mais precisamente um processo como sendo o conjunto
necessário de informações para que o sistema operacional implemente a
concorrência de programas.
•
O processo também pode ser definido como sendo o ambiente onde um
programa é executado.
•
Este ambiente, além das informações sobre a execução, possui também a
quantidade de recursos do sistema que cada programa pode utilizar.
•
O resultado da execução de um mesmo programa pode variar dependendo do
processo em que é executado, ou seja, em função dos recursos que são
disponibilizados para o programa.
78
Estrutura de um Processo
•
Um processo é formado por três partes conhecidas como contexto de
hardware, contexto de software e espaço de endereçamento, que juntos
mantêm todas as informações necessárias à execução de um programa.
Estrutura de um Processo
Contexto de
Software
Contexto de
Hardware
Programa
Espaço de
Endereçamento
79
Estrutura de um Processo
•
Contexto de Hardware
– O contexto de hardware de um processo armazena o conteúdo dos registradores
gerais da CPU, além dos registradores de uso específico, como o PC, SP (stack
pointer) e o registrador de status.
– Quando um processo está em execução, o seu contexto de hardware está
armazenado nos registradores do processador.
– No momento em que o processo perde a utilização da CPU, o sistema salva as
informações no contexto de hardware do processo.
– O contexto de hardware é fundamental para a implementação dos sistemas
multiprogramáveis, onde os processos se alternam na utilização da CPU, podendo
ser interrompidos e posteriormente restaurados.
80
Estrutura de um Processo
•
Contexto de Hardware (Continuação)
– O sistema operacional gerencia a troca de contexto, base para a implementação da
concorrência, que consiste em salvar o conteúdo dos registradores do processo que
está deixando a CPU e carregá-lo com os valores referentes ao do novo processo
que será executado.
– Esta operação se resume em substituir o contexto de hardware de um processo pelo
do outro.
81
Estrutura de um Processo
Troca de Contexto
Sistema Operacional
Processo B
Processo A
Salva o conteúdo dos
registradores do Processo A
Carrega o conteúdo dos
registradores do Processo B
Fatia de
Tempo
Salva o conteúdo dos
registradores do Processo B
Carrega o conteúdo dos
registradores do Processo A
82
Estrutura de um Processo
•
Contexto de Software
– No contexto de software de um processo são especificados limites e características
dos recursos que podem ser alocados pelo processo.
– Muitas destas características são determinadas no momento da criação do processo,
enquanto outras podem ser alteradas durante sua existência.
– A maior parte das informações do contexto de software do processo provém de um
arquivo do sistema operacional, conhecido como arquivo de usuários.
– Neste arquivo são especificados os limites dos recursos que cada processo pode
alocar, sendo gerenciado pelo administrador do sistema.
– O contexto de software é composto por três grupos de informações sobre o processo:
identificação, quotas e privilégios.
83
Estrutura de um Processo
•
Contexto de Software (Continuação)
– Identificação
 Cada processo criado pelo sistema recebe uma identificação única (PID –
Process Identification) representada por um número.
 Através do PID, o sistema operacional e outros processos podem fazer
referência a qualquer processo existente, consultando o seu contexto ou
alterando uma de suas características.
 O processo também possui a identificação do usuário.
 Cada usuário possui uma identificação única no sistema (UID – User
Identification), atribuída ao processo no momento de sua criação.
 A UID permite implementar um modelo de segurança, onde apenas os objetos
que possuem a mesma UID do usuário podem ser acessados.
84
Estrutura de um Processo
•
Contexto de Software (Continuação)
– Quotas
 As quotas são os limites de cada recurso do sistema que um processo pode
alocar.
 Caso uma quota seja insuficiente, o processo poderá ser executado lentamente,
interrompido durante seu processamento ou mesmo não ser executado.
 Alguns exemplos de quotas presentes na maioria dos sistemas operacionais são:
– Número máximo de arquivos abertos simultaneamente;
– Tamanho máximo de memória principal e secundária que o processo pode
alocar;
– Número máximo de operações de E/S pendentes;
– Tamanho máximo do buffer para operações de E/S;
– Número máximo de processos, subprocessos e threads que podem criar;
– Espaço de disco disponível.
85
Estrutura de um Processo
•
Contexto de Software (Continuação)
– Privilégios
 Os privilégios ou direitos definem as ações que um processo pode fazer em
relação a ele mesmo, aos demais processos e ao sistema operacional.
 Privilégios que afetam o próprio processo permitem que suas características
possam ser alteradas, como prioridade de execução, limites alocados na
memória principal e secundária, etc.
 Já os privilégios que afetam os demais processos permitem, além da alteração
de suas próprias características, alterar as de outros processos.
86
Estrutura de um Processo
•
Contexto de Software (Continuação)
– Privilégios (Continuação)
 Privilégios que afetam o sistema são os mais amplos e poderosos, pois estão
relacionados à operação e à gerência do ambiente, como a desativação do
sistema, alteração de regras de segurança, criação de outros processos
privilegiados, modificação de parâmetros de configuração do sistema, entre
outros.
 A maioria dos SOs disponibiliza uma conta de acesso com todos estes privilégios
disponíveis, com o propósito de o administrador gerenciar o sistema operacional.
87
Estrutura de um Processo
•
Espaço de Endereçamento
– O espaço de endereçamento é a área de memória pertencente ao processo
onde instruções e dados do programa são armazenados para execução.
– Cada processo possui seu próprio espaço de endereçamento, que deve ser
devidamente protegido do acesso dos demais processos.
88
Estrutura de um Processo
•
A figura a seguir mostra as características da estrutura de um processo.
nome
registradores gerais
PID
dono (UID)
registrador PC
prioridade de execução
data/hora de criação
Contexto
de
Hardware
Contexto
de
Software
registrador SP
tempo de processador
privilégios
Programa
registrador de status
Espaço de
Endereçamento
Endereços de
memória principal
alocados
89
Estrutura de um Processo
Bloco de Controle do Processo
•
O processo é implementado pelo sistema operacional através de uma estrutura
de dados chamada Bloco de Controle do Processo (Process Control Block –
PCB).
•
A partir do PCB, o sistema operacional mantém todas as informações sobre o
contexto de hardware, contexto de software e espaço de endereçamento de
cada processo.
•
Os PCBs de todos os processos ativos residem na memória principal em uma
área exclusiva do sistema operacional.
90
Estrutura de um Processo
Bloco de Controle do Processo
•
O tamanho desta área, geralmente é limitado por um parâmetro do sistema
operacional que permite especificar o número máximo de processos que podem
ser suportados simultaneamente pelo sistema.
•
Toda a gerência dos processos é realizada por intermédio de chamadas a
rotinas do sistema operacional que realizam operações como criação, alteração
de características, visualização, eliminação, sincronização, suspensão de
processos, dentre outras.
91
Estrutura de um Processo
Bloco de Controle do Processo
•
Abaixo temos um exemplo de PCB.
PCB
Ponteiros
Estado do processo
Nome do processo
Prioridade do processo
Registradores
Limites de memória
Lista de arquivos abertos
92
Estados de um Processo
•
Em um sistema multiprogramável, um processo não deve alocar
exclusivamente a CPU, permitindo que exista um compartilhamento no uso do
processador.
•
Os processos passam por diferentes estados ao longo do seu processamento
em função de eventos gerados pelo sistema operacional ou pelo próprio
processo.
•
Um processo ativo pode encontrar-se em três diferentes estados (depende do
SO).
93
Estados de um Processo
– Criação
 É quando um processo está sendo criado. O processo fica neste estado
enquanto todos os recursos iniciais para o seu processamento estão sendo
alocados.
– Término
 É quando um processo chegou ao fim. O processo fica neste estado enquanto
todos os seus recursos estão sendo liberados.
94
Estados de um Processo
– Execução (running)
 Um processo é dito no estado de execução quando está sendo processado pela
CPU.
 Em sistemas com apenas uma CPU, somente um processo pode estar sendo
executado em um dado instante de tempo.
 Os processos se alternam na utilização do processador seguindo uma política
estabelecida pelo sistema operacional.
 Em sistemas com múltiplos processadores existe a possibilidade de mais de um
processo ser executado ao mesmo tempo. Também é possível um mesmo
processo ser executado simultaneamente em mais de uma CPU.
95
Estados de um Processo
– Pronto (ready)
 Um processo está no estado de pronto quando aguarda apenas para ser
executado.
 O sistema operacional é responsável por determinar a ordem e os critérios pelos
quais os processos em estado de pronto devem fazer uso do processador.
 Este mecanismo é conhecido como escalonamento.
 Em geral, existem vários processos no estado de pronto organizados em listas
encadeadas.
96
Estados de um Processo
– Espera (wait)
 Um processo no estado de espera aguarda por algum evento externo ou
por algum recurso para prosseguir seu processamento.
 Como exemplo, podemos citar o término de uma operação de E/S ou
espera de uma determinada data e/ou hora para continuar sua execução.
 Em alguns sistemas operacionais, o estado de espera pode ser chamado de
bloqueado (blocked).
 O sistema organiza os vários processos no estado de espera também em
listas encadeadas.
 Em geral, os processos são separados em listas de espera associadas a
cada tipo de evento.
97
Estados de um Processo
Diagrama de Transição de Estados
•
Um processo muda de estado durante seu processamento em função de eventos originados por
ele próprio (eventos voluntários) ou pelo SO (eventos involuntários). Abaixo temos as possíveis
transições que um processo pode sofrer.
Execução
Espera
Término
Pronto
Criação
Residente na MP
Não Residente na MP
Swapping
Espera
Pronto
98
Estados de um Processo
Transições
Criação
Execução
Pronto Residente na MP
Pronto Residente na MP
Término
Execução
Execução
Pronto Residente na MP
Execução
Espera Residente na MP
Espera Residente na MP
Pronto Residente na MP
Espera Residente na MP
Espera não Residente na MP
Espera não Residente na MP
Pronto não Residente na MP
Pronto não Residente na MP
Pronto Residente na MP
Pronto Residente na MP
Pronto não Residente na MP
99
Estados de um Processo
Transições
Criação
Pronto Residente na MP
•
A criação de um processo ocorre a partir do momento em que o sistema operacional adiciona
um novo PCB à sua estrutura e aloca um espaço de endereçamento na memória para uso.
•
A partir da criação do PCB, o sistema operacional já reconhece a existência do processo,
podendo gerenciá-lo e associar programas ao seu contexto para serem executados.
Execução
•
Término
Na eliminação de um processo, o processo é encaminhado ao estado de Término e em seguida
todos os seus recursos são desalocados e o PCB eliminado pelo Sistema Operacional.
100
Estados de um Processo
Transições
Pronto Residente na MP
Execução
•
Após a criação de um processo, o sistema o coloca em uma lista de processos no estado de
pronto, onde aguarda por uma oportunidade para ser executado.
•
Cada Sistema Operacional tem seus próprios critérios e algoritmos para a escolha da ordem em
que os processos serão executados (política de escalonamento).
Execução
Pronto Residente na MP
•
Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema,
como término da fatia de tempo que o processo possui para sua execução.
•
Nesse caso, o processo volta para a fila de pronto onde aguarda por uma nova oportunidade
para continuar seu processamento.
101
Estados de um Processo
Transições
Execução
Espera Residente na MP
•
Um processo em execução passa para o estado de espera por eventos gerados pelo próprio
processo, como operações de E/S, ou por eventos externos.
•
Um evento externo é gerado, por exemplo, quando o sistema operacional suspende por um
período de tempo a execução de um processo.
Espera Residente na MP
Pronto Residente na MP
•
Um processo no estado de espera passa para o estado de pronto quando a operação solicitada
é atendida ou o recurso esperado é concedido.
•
Um processo no estado de espera sempre terá de passar pelo estado de pronto antes de poder
ser novamente selecionado para execução.
•
Não existe a mudança do estado de espera para o estado de execução diretamente.
102
Estados de um Processo
Transições
Espera Residente na MP
Espera não Residente na MP
•
Quando não existe espaço suficiente na memória principal para carregar um novo processo ou
para aumentar a memória de um determinado processo, o SO envia algum processo do estado
de espera para o disco em um mecanismo denominado Swap out.
•
Dá-se preferência aos processos no estado de espera porque normalmente o tempo de
permanência neste estado é longo.
Espera não Residente na MP
Pronto não Residente na MP
•
Esta transição é a mesma apresentada para a situação de residente na memória principal.
•
A única diferença é que como o processo está originariamente fora da memória principal, ele
mudará de estado, indo para pronto, mas permanecendo fora da memória principal.
103
Estados de um Processo
Transições
Pronto não Residente na MP
Pronto Residente na MP
•
Quando o sistema percebe que já está chegando a vez deste processo ser executado, ele
realiza a transferência do disco para a memória principal no procedimento chamado de Swap in.
•
Se não houver memória principal disponível para receber o processo, um outro será retirado
para liberar memória e então será feita a transferência.
Pronto Residente na MP
•
Pronto não Residente na MP
No caso extremo de não haver memória disponível e todos os processos do estado de espera já
estarem fora da memória principal, é feita então a retirada de um processo no estado de pronto.
104
Processos Independentes, Subprocessos e Threads
•
Processos independentes, subprocessos e threads são maneiras diferentes de
implementar a concorrência dentro de uma aplicação.
•
Nesse caso, busca-se subdividir o código em partes para trabalharem de forma
cooperativa.
•
Considere um banco de dados com produtos de uma grande loja, onde
vendedores fazem frequentemente consultas.
•
Neste caso, a concorrência na aplicação proporciona um tempo de espera
menor entre as consultas, melhorando o desempenho da aplicação e
beneficiando os usuários.
105
Processos Independentes
•
O uso de processos independentes é a maneira mais simples de implementar a
concorrência em sistema multiprogramáveis.
•
Neste caso, não existe vínculo do processo criado com o seu criador.
•
A criação de um processo independente exige a alocação de um PCB,
possuindo contextos de hardware, contextos de software e espaço de
endereçamento próprios.
106
Processos Independentes
•
A seguir temos um exemplo de processos independentes.
Processo A
Processo D
Processo E
Processos
Independentes
107
Subprocessos
•
Subprocessos são processos criados dentro de uma estrutura hierárquica.
•
Nesse modo o processo criador é denominado processo-pai, enquanto o novo
processo é chamado de subprocesso ou processo-filho.
•
O subprocesso, por sua vez, pode criar outras estruturas de subprocessos.
•
Uma característica desta implementação é a dependência existente entre o
processo criador e o subprocesso.
108
Subprocessos
•
Caso um processo pai deixe de existir, os subprocessos subordinados são
automaticamente eliminados.
•
De modo semelhante aos processos independentes, subprocessos possuem
seu próprio PCB.
•
Além da dependência hierárquica entre processos e subprocessos, uma outra
característica neste tipo de implementação é que subprocessos podem
compartilhar quotas com o processo pai.
•
Neste caso, quando um subprocesso é criado o processo-pai cede parte de
suas quotas ao processo-filho.
109
Subprocessos
•
A seguir temos um exemplo de subprocessos.
Processo A
Processo A.2
Processo A.1
Processo A.1.2
Processo A.1.1
Subprocessos
110
Tipos de Processos
•
CPU-Bound
– São processos que fazem uso intenso de CPU, realizando poucas operações de
Entrada e Saída. (Ex: programas matemáticos, estatísticos, engenharia, física, etc).
•
I/O-Bound
– São processos que fazem uso intenso de Entrada e Saída, realizando poucos
cálculos com a CPU. (Ex: editores de texto, planilhas eletrônicas, navegadores de
Internet, clientes de e-mail, etc).
111
Threads
•
O uso de processos independentes e subprocessos no desenvolvimento de
aplicações concorrentes demanda consumo de diversos recursos do sistema.
•
Sempre que um novo processo é criado, o sistema deve alocar recursos
(contexto de hardware, contexto de software e espaço de endereçamento),
consumindo tempo de CPU neste trabalho.
•
No momento do término dos processos, o sistema operacional também
dispensa tempo para desalocar recursos previamente alocados.
•
Outro problema é a comunicação e sincronização entre processos
consideradas pouco eficientes, visto que cada processo possui seu próprio
espaço de endereçamento.
112
Threads
•
O conceito de thread foi introduzido na tentativa de reduzir o tempo gasto em
criação, eliminação e troca de contexto de processos nas aplicações
concorrentes, bem como economizar recursos do sistema como um todo.
•
Em um ambiente multithread, um único processo pode suportar múltiplos
threads, cada qual associado a uma parte do código da aplicação.
•
Neste caso, não é necessário haver diversos processos para a implementação
da concorrência.
•
Threads compartilham o processador da mesma maneira que um processo, ou
seja, enquanto um thread espera por uma operação de E/S, outro thread pode
ser executado.
113
Threads
•
Cada thread possui seu próprio contexto de hardware, porém compartilha o
mesmo contexto de software e espaço de endereçamento com os demais
threads do processo.
•
O compartilhamento do espaço de endereçamento permite que a comunicação
de threads dentro do mesmo processo seja realizada de forma simples e
rápida.
•
A Pilha é uma área reservada para uso exclusivo.
compartilhamento da pilha entre as threads.
Não é permitido o
114
Threads
Ambiente Monothreads
Processo
Thread
Processo A
Processo B
Processo C
Processo D
Thread
Thread
Thread
Thread
115
Threads
Ambiente Multithreads
Processo
Contexto de
Hardware
Contexto de
Hardware
Contexto de
Hardware
Contexto
de
Software
Thread 1
Thread 2
Thread 3
Espaço de
Endereçamento
116
Threads
Threads em Modo Usuário
•
Threads em modo usuário (TMU) são implementados pela aplicação e não pelo
sistema operacional.
•
Para isso, deve existir uma biblioteca de rotinas que possibilite à aplicação
realizar tarefas como criação/eliminação de threads, troca de mensagens entre
threads e uma política de escalonamento.
•
Neste modo, o sistema operacional não sabe da existência de múltiplos
threads, sendo responsabilidade exclusiva da aplicação gerenciar e sincronizar
os diversos threads existentes.
•
A vantagem deste modelo é a possibilidade de implementar aplicações
multithreads mesmo em sistemas operacionais que não suportam threads.
117
Threads
Threads em Modo Usuário
•
Utilizando a biblioteca, múltiplos threads podem ser criados, compartilhando o
mesmo espaço de endereçamento do processo, além de outros recursos.
•
TMUs são rápidos e eficientes por dispensarem acessos ao kernel do sistema
operacional, evitando assim a mudança de modo de acesso.
118
Threads
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
Threads em Modo Usuário
Modo Usuário
Biblioteca
Kernel
Modo Kernel
119
Threads
Threads em Modo Kernel
•
Threads em modo kernel (TMK) são implementados diretamente pelo núcleo do
sistema operacional, através de chamadas a rotinas do sistema que oferecem
todas as funções de gerenciamento e sincronização.
•
O sistema operacional sabe da existência de cada thread e pode escaloná-los
individualmente.
•
No caso de múltiplos processadores, os threads de um mesmo processo
podem ser executados simultaneamente.
•
O grande problema para os threads em modo kernel é o seu baixo
desempenho.
120
Threads
Threads em Modo Kernel
•
Enquanto nos threads em modo usuário todo tratamento é feito sem a ajuda do
sistema operacional, ou seja, sem a mudança no modo de acesso, threads em
modo kernel utilizam chamadas às rotinas do sistema operacional e,
consequentemente, várias mudanças no modo de acesso.
121
Threads
Kernel
Thread 4
Thread 3
Thread 2
Thread 1
Thread 0
Threads em Modo Kernel
Modo Usuário
Modo Kernel
122
Threads
TMU 4
TMU 3
TMU 2
TMU 1
TMU 0
Threads em Modo Híbrido
Modo Usuário
Biblioteca
TMK 0
TMK 1
Kernel
TMK 2
Modo Kernel
123
Threads
Threads em Modo Híbrido
•
O modo híbrido, apesar da maior flexibilidade, apresenta problemas herdados
de ambas as implementações.
•
Por exemplo, quando um TMK realiza uma chamada bloqueante, todos os seus
TMUs são colocados no estado de espera.
•
TMUs que desejam utilizar vários processadores devem utilizar diferentes
TMKs, o que influenciará no desempenho.
124
Exercícios
1- (Questão 22 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2008 – Cesgranrio)
Alguns sistemas operacionais permitem que seus processos criem múltiplos threads de execução. Em operação normal, o que é
previsto que os threads de um mesmo processo do sistema operacional compartilhem?
a)
b)
c)
d)
e)
Arquivos abertos
Registradores
Pilha (stack)
Variáveis locais de cada thread
Contador de instrução (program counter)
125
Exercícios
2- (Questão 38 – Petrobrás – Analista de Sistemas Pleno – Infraestrutura – ano 2006 – Cesgranrio)
Para resolver o problema de hierarquia de processos, foi criado o conceito "thread", no qual um processo pode efetuar várias
operações concorrente ou simultaneamente, sem o consumo de espaço de endereçamento. Neste caso, o processo é dividido no
número de threads sem que haja necessidade de ser criado um outro processo concorrente. Baseado nesta ideia, indique a
afirmativa INCORRETA.
a)
b)
c)
d)
e)
Mudanças feitas por um thread a um recurso compartilhado do sistema serão vistas por todos os outros threads.
Threads podem compartilhar os recursos do processo com outros threads igualmente independentes.
Threads não podem ser escalonados pelo sistema operacional e nem rodar como entidades independentes dentro de um
processo.
Cada thread tem seu próprio conjunto de registradores, mas todos eles compartilham o mesmo espaço de endereçamento,
pois o processo é um só.
Os threads criados por um processo morrem quando esse processo pai morre.
126
Exercícios
3- (Questão 12 – Casa da Moeda – Analista de Nível Superior – Banco de Dados – ano 2009 – Cesgranrio)
Uma instituição financeira adquiriu recentemente um software de análise estatística que rodará localmente nas estações dos
usuários. Como o manual do fabricante indica que o produto é multithread e CPU bound, é recomendável, para aumentar
significativamente o desempenho do software, que essas estações possuam:
a)
b)
c)
d)
e)
Dados em discos rígidos separados do sistema operacional.
Discos rígidos extremamente rápidos e espelhados.
Memória RAM de pelo menos 16 GB.
Gabinetes bastante arejados para dissipação de calor.
Dois ou mais processadores bastante velozes.
127
Exercícios
4- (Questão 24 – TRT 5ª Região – Analista Judiciário – Tecnologia da Informação – ano 2013 – FCC)
Um conceito fundamental para todos os sistemas operacionais é o de processo. Um processo é basicamente um programa em
execução. Associado a cada processo está o I, uma lista de posições de memória, que vai de 0 até um máximo, que esse processo
pode ler e escrever. Essa lista de posições de memória contém o programa executável, os dados do programa e II.
As lacunas I e II são preenchidas, correta e respectivamente, com:
a)
b)
c)
d)
e)
espaço de endereçamento − sua pilha
stack pointer − os registros utilizados
conjunto de mnemônicos − lista de privilégios de acesso
usuário e o UID − endereço de inicialização
núcleo de processamento − próximo bloco de execução
128
Exercícios
5- (Questão 22 – Casa da Moeda – Suporte em TI – ano 2012 – Cesgranrio)
Uma empresa deseja adquirir um software (servidor) cujas especificações técnicas indicam que o produto é CPU Bound. Para
executar adequadamente esse software, o setor de infraestrutura dessa empresa deve providenciar um computador com alto
desempenho de
a)
b)
c)
d)
e)
I/O de disco
I/O de rede
memória RAM
SWAP
CPU
129
Gerência do Processador
130
Definição
•
Com o surgimento dos sistemas multiprogramáveis, nos quais múltiplos
processos poderiam permanecer na memória principal compartilhando o uso da
CPU, a gerência do processador tornou-se uma das atividades mais
importantes em um sistema operacional.
•
A partir do momento em que diversos processos podem estar no estado de
pronto, critérios devem ser estabelecidos para determinar qual processo será
escolhido para fazer uso do processador.
•
O módulo do sistema operacional responsável por esta escolha é o
escalonador.
131
Definição
Execução
Espera
Pronto
132
Critérios de Escalonamento
•
Utilização do Processador (CPU)
 É o tempo gasto pela CPU na execução dos processos do usuário.
 Na maioria dos sistemas é desejável que o processador permaneça a maior parte do
seu tempo trabalhando nos processos do usuário.
•
Throughput (Vazão)
 Throughput representa o número de processos encaminhados para execução
(executados) em um determinado intervalo de tempo.
 Quanto maior o throughput, maior a alternância de processos em função do tempo.
 A maximização do throughput é desejada na maioria dos sistemas, porém aumenta o
custo relacionado à troca de contexto.
133
Critérios de Escalonamento
•
Tempo de Processador (CPU) ou Tempo de Burst ou Surto de CPU

É o tempo total que um processo leva no estado de execução durante seu processamento,
isto é, é o tempo de processamento necessário para completar a sua tarefa.

As políticas de escalonamento não influenciam no tempo de processador de um processo,
sendo este tempo função apenas do código da aplicação e da entrada de dados.
•
Tempo de Espera

É o tempo total que um processo permanece na fila de pronto durante seu processamento,
aguardando para ser executado.

A redução do tempo de espera dos processos é desejada pela maioria das políticas de
escalonamento.
134
Critérios de Escalonamento
•
Tempo de Turnaround
 É o tempo de existência de um processo, isto é, o tempo desde a sua criação até seu
término.
 As políticas de escalonamento buscam minimizar o tempo de turnaround.
•
Tempo de Resposta
 É o tempo decorrido entre uma requisição ao sistema ou à aplicação e o instante em
que a resposta é exibida.
 Em sistemas interativos, podemos entender como o tempo decorrido entre a última
tecla digitada pelo usuário e o início da exibição do resultado no monitor.
135
Escalonamento Não-Preemptivo e Preemptivo
•
Não-Preemptivo
 Neste tipo de escalonamento, quando um processo está em execução, nenhum
evento externo pode ocasionar a perda do uso da CPU.
 O processo somente sai do estado de execução caso termine seu processamento ou
execute instruções do próprio código que ocasionem uma mudança para o estado de
espera.
•
Preemptivo
 Neste tipo de escalonamento o sistema operacional pode interromper um processo
em execução e passá-lo para o estado de pronto, com o objetivo de alocar outro
processo na CPU.
136
Operações de Entrada e Saída
Preempção
Controlador de
Interrupções
CPU
IRQ
IRQ
INTA
Número do Pino de IRQ
BD
0
1
INTA 2
3
4
5
6
7
A Fatia de Tempo ou Quantum é
um múltiplo do Clock do Sistema
.
.
.
.
.
.
.
.
.
.
Clock
do
Sistema
IRQ
IRQ
IRQ
DT
Q = n x DT; onde n é um número inteiro maior que zero.
137
Exercícios
1- (Questão 49 – Petrobrás – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
A política de escalonamento utilizada pelo sistema operacional para fazer a gerência do processador, que é caracterizada pela
possibilidade de o sistema operacional interromper um processo em execução e passá-lo para o estado de pronto, com o objetivo
de alocar outro processo no processador, é chamada de escalonamento
a)
b)
c)
d)
e)
atemporal
temporal
seletivo
preemptivo
não preemptivo
138
Exercícios
2- (Questão 25 – Petrobrás – Tecnologia da Informação – Análise de Infraestrutura – ano 2012 – Cesgranrio)
A gerência do processador estabelece critérios, com base em uma política de escalonamento, para determinar qual processo deve
ser escolhido para usar o processador.
Os processos escalonados deverão ser os que se encontram:
a)
b)
c)
d)
e)
nos estados de pronto, espera e bloqueado
nos estados de pronto e espera
nos estados de espera e bloqueado
apenas no estado de pronto
apenas no estado de espera
139
Exercícios
3- (Questão 46 – Petrobrás – Analista de Sistemas Pleno – Infraestrutura – ano 2006 – Cesgranrio)
Considere um sistema operacional com escalonamento por prioridades, no qual a avaliação do escalonamento é realizada em um
intervalo mínimo de 5 ut. Neste sistema, os processos A e B competem por uma única UCP. Desprezando os tempos de
processamento relativo às funções do sistema operacional, a tabela a seguir fornece os estados dos processos A e B ao longo do
tempo, medido em intervalos de 5 ut (E = execução, P = pronto e W = espera). O processo A tem menor prioridade que o processo
B.
Em que tempos A sofre preempção?
Processo A
Processo B
Processo A
Processo B
a)
b)
c)
d)
e)
00-04
P
E
50-54
P
W
05-09
P
E
55-59
E
P
10-14
E
W
60-64
P
E
65-69
P
E
15-19
E
W
70-74
E
W
20-24
E
P
25-29
P
E
75-79
E
W
Entre os instantes 9-10, 39-40, 69-70.
Entre os instantes 19-20, 54-55, 79-80.
Entre os instantes 24-25 e 59-60.
Entre os instantes 79-80.
Nunca, pois o processo B tem maior prioridade do que o processo A.
80-84
W
P
30-34
P
E
85-89
W
E
35-39
P
E
90-94
P
E
40-44
E
W
95-99
E
–
45-49
W
W
100-105
E
–
140
Exercícios
4- (Questão 42 – Defensoria Pública de SP – Analista de Sistemas – ano 2013 – FCC)
Em sistemas com multiprogramação, inicialmente um novo processo é inserido na fila de prontos. Este processo aguarda até ser
selecionado para execução ou ser despachado. Uma vez que o processo seja alocado à CPU, eventos podem ocorrer. Analise as
afirmativas sobre o processo.
I.
II.
III.
pode emitir uma solicitação de I/O e então ser inserido em uma fila de I/O.
pode criar um novo subprocesso e esperá-lo terminar.
pode ser removido forçosamente da CPU, como resultado de uma interrupção, e ser devolvido à fila de prontos.
Está correto o que se afirma em
a)
b)
c)
d)
e)
I, apenas.
II, apenas.
III, apenas.
I e II, apenas.
I, II e III.
141
FIFO ou FCFS (Não-Preemptivo)
•
No escalonamento FIFO (first in, first out) também conhecido como FCFS (first
come, first served), o processo que chegar primeiro ao estado de pronto é
selecionado para execução.
•
Sempre que chegar um processo no estado de pronto, ele é colocado no final
da fila.
•
Se um processo for para o estado de espera, o próximo da fila é escalonado.
•
Quando um processo do estado de espera volta para o estado de pronto, este
vai para o final da fila.
142
FIFO ou FCFS (Não-Preemptivo)
Término
Fila dos processos no estado de Pronto
Execução
Criação
Espera
143
SJF (Não-Preemptivo)
•
No escalonamento SJF (Shortest Job First – Processo mais Curto Primeiro), o
algoritmo de escalonamento seleciona o processo que tiver o menor tempo de
processador (burst) ainda por executar.
•
Dessa forma, o processo em estado de pronto que necessitar de menos tempo de
CPU para terminar seu processamento é selecionado para execução.
•
Uma implementação do escalonamento SJF com preempção é conhecida como
escalonamento SRT (Shortest Remaining Time – Menor Tempo Restante
Primeiro).
•
Nesta política, toda vez que um processo no estado de pronto tem um tempo de
processador estimado menor do que o processo em execução, o sistema
operacional realiza uma preempção substituindo-o pelo novo processo.
144
SJF (Não-Preemptivo)
•
De modo semelhante ao SJF, o sistema operacional deve ser o responsável por
estimar os tempos de processador dos processos, e o risco de starvation continua
presente.
Starvation  Adiamento indefinido, isto é, a possibilidade do processo ser adiado
indefinidamente, correndo o risco de nunca ser executado.
145
Cooperativo (Não-Preemptivo)
•
O escalonamento cooperativo é uma implementação que busca aumentar o grau de
multiprogramação em políticas de escalonamento que não possuam mecanismos de
preempção.
•
Neste caso, um processo em execução pode voluntariamente liberar o processador,
retornando à fila de pronto e possibilitando que um novo processo seja escalonado,
permitindo, assim, uma melhor distribuição no uso da CPU.
•
A principal característica do escalonamento cooperativo está no fato de a liberação
do processador ser uma tarefa realizada exclusivamente pelo processo em
execução, que de uma maneira cooperativa libera a CPU.
146
Fila Circular ou Round Robin (Preemptivo)
•
O escalonamento circular (round robin scheduling), é um escalonamento do tipo
preemptivo, projetado especialmente para sistemas de tempo compartilhado.
•
Esse algoritmo é bastante semelhante ao FIFO, porém quando um processo passa
para o estado de execução existe um tempo limite para o uso contínuo do
processador denominado fatia de tempo (time slice) ou quantum.
•
No escalonamento circular, toda vez que um processo é escalonado para execução
uma nova fatia de tempo é concedida.
•
Caso a fatia de tempo expire, o sistema operacional interrompe o processo em
execução, salva seu contexto e direciona-o para o final da fila de pronto.
•
Este mecanismo é conhecido como preempção por tempo.
147
Fila Circular ou Round Robin (Preemptivo)
Término
Fila dos processos no estado de Pronto
Q
Q
Q
Criação
Execução
Preempção por tempo
Espera
148
Fila Circular ou Round Robin (Preemptivo)
•
A figura anterior ilustra o escalonamento circular, onde a fila de processos em estado
de pronto é tratada como uma fila circular.
•
O escalonamento é realizado alocando a CPU ao primeiro processo da fila de pronto.
•
O processo permanecerá no estado de execução até que termine seu
processamento, voluntariamente passe para o estado de espera ou que sua fatia de
tempo expire, sofrendo, neste caso, uma preempção pelo sistema operacional.
•
Após isso, um novo processo é escalonado com base na política de FIFO.
•
O valor da fatia de tempo depende da arquitetura de cada sistema operacional e, em
geral, varia entre 10 e 100 milissegundos.
•
Este valor afeta diretamente o desempenho da política de escalonamento circular.
149
Fila Circular ou Round Robin (Preemptivo)
•
Caso o quantum tenha um valor muito alto, este escalonamento tenderá a ter o
mesmo comportamento do escalonamento FIFO.
•
Caso o valor do quantum seja pequeno, a tendência é que haja um grande número
de preempções, o que ocasionaria excessivas mudanças de contexto, prejudicando
o desempenho do sistema e afetando o tempo de turnaround dos processos.
•
A principal vantagem do escalonamento circular é não permitir que um processo
monopolize a CPU, sendo o tempo máximo alocado continuamente igual ao quantum
definido no sistema.
•
No caso de sistemas de tempo compartilhado, onde existem diversos processos
interativos concorrendo pelo uso do processador, o escalonamento circular é
adequado.
150
Fila Circular ou Round Robin (Preemptivo)
•
Um problema presente nesta política é que processos CPU-bound são beneficiados
no uso do processador em relação aos processos I/O-bound.
•
Devido às suas características, os processos CPU-bound tendem a utilizar por
completo a fatia de tempo, enquanto os processos I/O-bound têm mais chances de
passar para o estado de espera antes de sofrerem preempção por tempo.
•
Estas características distintas ocasionam um balanceamento desigual no uso do
processador entre os processos.
151
Fila Circular Virtual (Preemptivo)
•
Um refinamento do escalonamento circular, que busca reduzir este problema, é
conhecido como escalonamento circular virtual.
•
Neste esquema, processos que saem do estado de espera vão para uma fila de
pronto auxiliar.
•
Os processos da fila auxiliar possuem preferência no escalonamento em relação à
fila de pronto, e o escalonador só seleciona processos na fila de pronto quando a fila
auxiliar estiver vazia.
•
Quando um processo é escalonado a partir da fila auxiliar, sua fatia de tempo é
calculada como sendo o valor da fatia de tempo do sistema menos o tempo de
processador que o processo utilizou na última vez em que foi escalonado a partir da
fila de pronto. Isto é, o quantum restante.
•
Estudos comprovam que, apesar da maior complexidade na implementação, o
balanceamento do uso do processador neste escalonamento é mais equilibrado.
152
Fila Circular Virtual (Preemptivo)
Término
Fila dos processos no estado de Pronto
Q
Q
Q
Criação
Execução
Preempção por tempo
QR  Quantum Restante
Fila auxiliar
QR
QR
QR
Espera
153
Escalonamento por Prioridades (Preemptivo)
•
O escalonamento por prioridades é um escalonamento do tipo preemptivo realizado
com base em um valor associado a cada processo denominado prioridade de
execução.
•
O processo com maior prioridade no estado de pronto é sempre o escolhido para
execução, e processos com valores iguais são escalonados seguindo o critério de
FIFO.
•
Neste escalonamento, o conceito de fatia de tempo não existe, consequentemente
um processo em execução não pode sofrer preempção por tempo.
•
No escalonamento por prioridades, a perda do uso do processador só ocorrerá no
caso de uma mudança voluntária para o estado de espera ou quando um processo
de prioridade maior passa para o estado de pronto.
154
Escalonamento por Prioridades (Preemptivo)
•
Neste caso, o sistema operacional deverá interromper o processo corrente, salvar
seu contexto e colocá-Io no estado de pronto.
•
Esse mecanismo é conhecido como preempção por prioridade.
•
Após isso, o processo de maior prioridade é escalonado.
•
Um dos principais problemas no escalonamento por prioridades é o starvation.
•
Processos de baixa prioridade podem não ser escalonados, permanecendo
indefinidamente na fila de pronto.
•
Uma solução para este problema, possível em sistemas que implementam prioridade
dinâmica, é a técnica de aging.
•
Este mecanismo incrementa gradualmente a prioridade de processos que
permanecem por muito tempo na fila de pronto.
155
Escalonamento por Prioridades (Preemptivo)
Fila dos processos no estado de Pronto
Maior
Prioridade
Prioridade P1
Término
Prioridade P2
Criação
Execução
Prioridade Pn
Preempção por Prioridade
Menor
Prioridade
Espera
156
Escalonamento Circular com Prioridades (Preemptivo)
•
O escalonamento circular com prioridades implementa o conceito de quantum e de
prioridade de execução associada a cada processo.
•
Neste tipo de escalonamento, um processo permanece no estado de execução até
que termine seu processamento, voluntariamente passe para o estado de espera ou
sofra uma preempção por tempo ou prioridade.
•
A principal vantagem deste escalonamento é permitir o melhor balanceamento no
uso do processador em sistemas de tempo compartilhado.
•
Processos com o perfil I/O-bound devem receber do administrador do sistema
prioridades com valores maiores que as dos processos CPU-bound.
157
Escalonamento Circular com Prioridades (Preemptivo)
•
Isso permite ao sistema operacional praticar uma política compensatória entre
processos de perfis distintos, compartilhando o processador de forma mais
igualitária.
•
Este tipo de escalonamento é amplamente utilizado em sistemas de tempo
compartilhado, como o Windows e o Unix.
158
Escalonamento Circular com Prioridades (Preemptivo)
Fila dos processos no estado de Pronto
Prioridade P1
Maior
Prioridade
Q
Q
Q
Q
Q
Q
Q
Término
Prioridade P2
Criação
Q
Execução
Prioridade Pn
Q
Preempção por Tempo ou Prioridade
Menor
Prioridade
Espera
159
Escalonamento por Múltiplas Filas com Realimentação
(Preemptivo)
•
Um mecanismo FIFO adaptado com quantum é implementado para escalonamento
em todas as filas, com exceção da fila de menor prioridade, que utiliza o
escalonamento circular.
•
O escalonamento de um processo em uma fila ocorre apenas quando todas as
outras filas de prioridades mais altas estiverem vazias.
•
O quantum em cada fila varia em função da sua prioridade, ou seja, quanto maior a
prioridade da fila, menor o seu quantum.
•
Sendo assim, o quantum concedido aos processos varia em função da fila de pronto
na qual ele se encontra.
160
Escalonamento por Múltiplas Filas com Realimentação
(Preemptivo)
•
Um processo, quando criado, entra no final da fila de maior prioridade, porém,
durante sua execução, a cada preempção por tempo, o processo é redirecionado
para uma fila de menor prioridade.
•
O escalonamento por múltiplas filas com realimentação (multilevel feedback queues
scheduling) os processos podem trocar de filas durante seu processamento.
•
Sua grande vantagem é permitir ao sistema operacional identificar dinamicamente o
comportamento de cada processo, direcionando-o para filas com prioridades de
execução mais adequados ao longo de seu processamento.
•
Esse esquema permite que os processos sejam redirecionados entre as diversas
filas, fazendo com que o sistema operacional implemente um mecanismo adaptativo.
161
Escalonamento por Múltiplas Filas com Realimentação
(Preemptivo)
•
Os processos não são previamente associados às filas de pronto, e, sim,
direcionados pelo sistema para as filas existentes com base no seu comportamento.
•
Esse escalonamento atende às necessidades dos diversos tipos de processos.
•
No caso de processos I/O-bound, um tempo de resposta adequado é obtido, já que
esses processos têm prioridades mais altas por permanecerem a maior parte do
tempo nas filas de maior prioridade, pois dificilmente sofrerão preempção por tempo.
•
Por outro lado, em processos CPU-bound a tendência é de que, ao entrar na fila de
mais alta prioridade, o processo ganhe o processador, gaste seu quantum e seja
direcionado para uma fila de menor prioridade.
162
Escalonamento por Múltiplas Filas com Realimentação
(Preemptivo)
•
Dessa forma, quanto mais tempo do processador um processo utiliza, mais ele vai
caindo para filas de menor prioridade.
•
O escalonamento por múltiplas filas com realimentação é um algoritmo de
escalonamento generalista, podendo ser implementado em qualquer tipo de sistema
operacional.
•
Um dos problemas encontrados nesta política é que a mudança de comportamento
de um processo CPU-bound para I/O-bound pode comprometer seu tempo de
resposta.
•
Outro aspecto a ser considerado é sua complexidade de implementação,
ocasionando um grande overhead (sobrecarga) ao sistema.
163
Escalonamento por Múltiplas Filas com Realimentação
(Preemptivo)
Criação
Maior
Prioridade
Fila dos processos no estado de Pronto
Execução  Espera Pronto
Prioridade P1
Quantum
Menor
Quantum
Execução  Pronto
Prioridade P2
Execução  Espera Pronto
Execução  Pronto
Prioridade P3
Execução  Espera Pronto
Execução  Pronto
Menor
Prioridade
Fila Circular ou Round robin
Prioridade Pn
Maior
Quantum
164
Escalonamento em Sistema de Tempo Real
(Preemptivo)
•
Diferentemente dos sistemas de tempo compartilhado, nos quais a aplicação não é
prejudicada pela variação no tempo de resposta, algumas aplicações específicas
exigem respostas imediatas para a execução de determinadas tarefas.
•
Neste caso, a aplicação deve ser executada em sistemas operacionais de tempo
real, onde é garantida a execução de processos dentro de limites rígidos de tempo,
sem o risco de a aplicação ficar comprometida.
•
Aplicações de controle de processos, como sistemas de controle de produção de
bens industriais e controle de tráfego aéreo, são exemplos de aplicação de tempo
real.
165
Escalonamento em Sistema de Tempo Real
(Preemptivo)
•
O escalonamento em sistemas de tempo real deve levar em consideração a
importância relativa de cada tarefa na aplicação.
•
Em função disso, o escalonamento por prioridades é o mais adequado, já que para
cada processo uma prioridade é associada em função da importância do processo
dentro da aplicação.
•
No escalonamento para sistemas de tempo real não deve existir o conceito de
quantum, e a prioridade de cada processo deve ser estática e uma das mais
elevadas.
166
Exercícios
5- (Questão 66 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2011 – Cesgranrio)
Os sistemas operacionais modernos utilizam o conceito de fila circular no escalonamento de processos. O processo que está no
início da fila de processos prontos é selecionado, executado por algum tempo e, ao término da fatia de tempo, retorna para o final
da fila.
O mecanismo apresentado permite que as aplicações sejam:
a)
b)
c)
d)
e)
executadas de forma aleatória dentro da fila de processos prontos.
executadas apenas uma vez, pois o esquema de filas não permite que processos já selecionados possam retornar para a
mesma fila.
executadas conforme são criadas ou esgotem as suas fatias de tempo.
selecionadas conforme a sua prioridade dentro do sistema.
selecionadas no meio da fila, por terem mais prioridade que os demais processos.
167
Exercícios
6- (Questão 33 – BNDES – Analista de Sistemas Júnior – Desenvolvimento – ano 2011 – Cesgranrio)
A gerência do processador é uma das atividades mais importantes em um sistema multiprogramável. Uma política de escalonamento deve
ser estabelecida para determinar qual processo será escolhido para fazer uso do processador.
Com relação a essa política, considere as afirmações abaixo.
I.
II.
III.
IV.
O escalonamento preemptivo é caracterizado pela possibilidade de o sistema operacional interromper um processo em
execução e passá-lo para o estado de espera, com o objetivo de colocar outro processo em execução.
Com o uso da preempção, é possível ao sistema priorizar a execução de processos, como no caso de aplicações de tempo real
onde o fator tempo é crítico.
No escalonamento não preemptivo, quando um processo está em execução nenhum evento externo pode ocasionar a perda do
uso do processador.
O escalonamento FIFO (First-In First-Out) é um exemplo de escalonamento não preemptivo no qual o processo que chega
primeiro ao estado de pronto é colocado em execução e só perde o uso do processador quando termina seu processamento ou
quando executa instruções do próprio código que ocasionam uma mudança para o estado de pronto.
É correto APENAS o que se afirma em
a)
b)
c)
d)
e)
I e II
II e III
III e IV
I, II, III
II, III e IV
168
Exercícios
7- (Questão 48 – CAPES – Analista em Ciência e Tecnologia Junior I – Analista de Sistemas – ano 2008 – Cesgranrio)
Considere o seguinte conjunto de processos e a duração de surto de CPU expressa em milissegundos:
Processo
X
Y
Z
Duração de Surto
28
4
7
Se os processos chegam na ordem X, Y e Z, onde X chega no instante 0, qual o tempo de espera médio se os processos forem
atendidos segundo o escalonamento FCFS (first-come, first-served)?
a)
b)
c)
d)
e)
10,6
12
13
14
20
169
Exercícios
8- (Questão 46 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2010 – Cesgranrio)
O escalonamento de CPU trata do problema de decidir qual dos processos na fila de prontos deve ser entregue à CPU. Considere
que o algoritmo de escalonamento Round-Robin esteja sendo utilizado e que o conjunto de processos abaixo chegue no momento
0, com a extensão do tempo de burst de CPU indicada em milissegundos. Dado: P1 é o primeiro processo na fila de prontos, P2 é
o segundo e P3 é o terceiro
Processo
P1
P2
P3
Tempo de burst
10
3
4
Se for utilizado um quantum de 4 milissegundos, o tempo de espera médio será de
a)
b)
c)
d)
e)
2
3
4
5
6
170
Exercícios
9- (Questão 54 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2008 – Cesgranrio)
Considere os quatro processos a seguir com período de burst de CPU indicado em milissegundos.
Processo
P1
P2
P3
P4
Tempo de Chegada
0
1
2
3
Tempo de burst
8
4
9
5
Se os processos chegarem na fila de prontos nos momentos indicados e precisarem dos tempos de burst indicados, então, se for
utilizado o escalonamento de CPU SJF (Shortest Job First) preemptivo, o tempo de espera médio será
a)
b)
c)
d)
e)
5,5
6,0
6,5
7,0
7,5
171
Exercícios
10- (Questão 55 – Transpetro – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
Em um computador que possui um único processador, estão sendo executados os jobs J1, J2, J3, J4 e J5, segundo os dados da
tabela a seguir:
Job Tempo de Execução (ms) Prioridade
J1
13
4
J2
14
0
J3
1
1
J4
5
3
J5
7
2
Tabela de jobs, tempo de execução e prioridade
O algoritmo de alocação da CPU que está sendo executado é o de prioridade não preemptiva. Para esse caso, a prioridade quatro
é a mais alta, e zero é a mais baixa.
Como ficará, em ms, o tempo de turnaround de cada job?
a)
b)
c)
d)
e)
J1
13
13
13
40
40
J2
14
27
40
13
27
J3
1
28
26
18
13
J4
5
33
18
18
12
J5
7
40
25
25
7
172
Exercícios
11- (Questão 64 – Liquigás – Profissional Junior – Tecnologia da Informação – Desenvolvimento – ano 2011 – Cesgranrio)
Em um Sistema Operacional (SO) utiliza-se um mecanismo de escalonamento de processos baseado em Round Robin (RR) com
um quantum igual a duas unidades de tempo. Quatro processos (W, X, Y e Z) são submetidos para execução simultaneamente.
Porém, cada um demanda um tempo diferente de execução total do processador, catalogado na tabela a seguir.
Tempo de execução total
W
4
X
5
Y
4
Z
6
Define-se o Turnaround Time (TAT) como sendo o tempo total que um processo passa em execução no processador mais o tempo
em que ele espera na fila, enquanto o processador está ocupado com outros processos.
Considerando que nenhum outro processo é submetido ao sistema e que a ordem na fila escolhida pelo SO é W, X, Y e Z, o TAT
do processo X, em unidades de tempo, é
a)
b)
c)
d)
e)
10
14
17
19
21
173
Exercícios
12- (Questão 57 – Liquigás – Profissional Junior – Tecnologia da Informação – Análise de Sistemas – ano 2012 –
Cesgranrio)
Sistemas Operacionais (SOs) têm, dentre as suas responsabilidades, a incumbência de gerenciar processos e efetuar o seu
escalonamento no processador. O SO mantém uma fila de processos prontos para serem executados, e o escalonamento está
relacionado à forma com que um SO faz a escolha de qual dos processos da fila ocupará o processador a cada instante. Há
diversas técnicas para o escalonamento.
Em uma dessas técnicas, conhecida como Round Robin (RR), o processo a ser executado será o
a)
b)
c)
d)
e)
de maior prioridade entre todos os da fila.
primeiro da fila, que será executado até terminar.
primeiro da fila, que será executado por um determinado intervalo (chamado de quantum) após o qual voltará ao final da
fila.
processo que consumirá menos tempo da CPU.
processo que consumirá mais tempo da CPU.
174
Exercícios
13- (Questão 46 – Petrobrás – Analista de Sistemas Junior – Infraestrutura – ano 2011 – Cesgranrio)
Cinco processos deverão ser executados em um computador. Os tempos de execução previstos para cada um dos processos são 9,
5, 3, 7 e X, medidos em alguma unidade de tempo. O responsável pela administração do sistema operacional desse computador
decide organizar a ordem de execução desses processos, objetivando minimizar o tempo médio de resposta. Sabe-se que o
processo com tempo X será o segundo processo a ser executado.
Nessas condições, um valor possível para X é
a)
b)
c)
d)
e)
10
8
6
4
2
175
Exercícios
14- (Questão 42 – BNDES – Profissional Básico – Análise de Sistemas - Suporte – ano 2008 – Cesgranrio)
Considerando-se o algoritmo de escalonamento por alternância circular (round-robin) aplicado a sistemas interativos, que
problema pode ocorrer quando um quantum muito longo é adotado?
a)
b)
c)
d)
e)
Aumento do número médio de preempções.
Aumento do número de alternância de processos.
Aumento do número de timeouts de processos ociosos.
Redução na eficiência da CPU.
Degradação no tempo de resposta às requisições interativas curtas.
176
Exercícios
15- (Questão 62 – Liquigás – Profissional Junior – Tecnologia da Informação – Desenvolvimento – ano 2012 – Cesgranrio)
Alguns esquemas de escalonamento de processos podem ter efeitos negativos em determinadas situações.
A situação de starvation é alcançada quando:
a)
b)
c)
d)
e)
um esquema de escalonamento no qual todos os processos obtêm uma fatia proporcional do tempo de processamento
acontece.
um processo qualquer é capaz de interromper a execução de outro por decisão do sistema operacional.
um processo é executado sempre até o fim antes que o escalonamento de algum outro processo seja efetuado, como por
exemplo, na disciplina FCFS sem preempção.
alguns processos ou classes de processos permanecem sempre à espera do processador devido ao fato de que o
escalonamento acaba sempre por privilegiar a escolha de outros processos.
o sistema operacional (SO) utilizado é voltado para aplicações de tempo real, impedindo que o usuário submeta processos
de naturezas diferentes daquelas características esperadas e para as quais o SO está preparado.
177
Gerência de Memória
178
Funções Básicas
•
•
•
•
Historicamente, a memória principal sempre foi vista como um recurso escasso
e caro.
Uma das maiores preocupações dos projetistas foi desenvolver sistemas
operacionais que não ocupassem muito espaço de memória e, ao mesmo
tempo, otimizassem a utilização dos recursos computacionais.
Mesmo atualmente, com a redução de custo e consequente aumento da
capacidade da memória principal, seu gerenciamento é um dos fatores mais
importantes no projeto de sistemas operacionais.
Enquanto nos sistemas monoprogramáveis a gerência da memória não é muito
complexa, nos sistemas multiprogramáveis ela se torna crítica, devido à
necessidade de se maximizar o número de usuários e aplicações utilizando
eficientemente o espaço da memória principal.
179
Funções Básicas
•
•
•
Em geral, programas são armazenados em memórias secundárias, como
discos e fitas, por serem um meio não-volátil, abundante e de baixo custo.
Como o processador somente executa instruções localizadas na memória
principal, o sistema operacional deve sempre transferir programas da memória
secundária para a memória principal antes de serem executados.
Como o tempo de acesso à memória secundária é muito superior ao tempo de
acesso à memória principal, o sistema operacional deve buscar reduzir o
número de operações de E/S à memória secundária, caso contrário podem ser
ocasionados sérios problemas no desempenho do sistema.
180
Funções Básicas
•
•
•
•
A gerência de memória deve tentar manter na memória principal o maior
número possível de processos, permitindo maximizar o compartilhamento do
processador e demais recursos computacionais.
Mesmo na ausência de espaço livre, o sistema deve permitir que novos
processos sejam aceitos e executados.
Isso é possível através da transferência temporária de processos residentes na
memória principal para a memória secundária, liberando espaço para novos
processos.
Esse mecanismo é conhecido como swapping, e será detalhado
posteriormente.
181
Funções Básicas
•
•
Em um ambiente de multiprogramação, o sistema operacional deve proteger as
áreas de memória ocupadas por cada processo, além da área onde reside o
próprio sistema.
Caso um programa tente realizar algum acesso indevido à memória, o sistema,
de alguma forma, deve impedi-lo.
182
Alocação Contígua Simples
•
•
•
•
A alocação contígua simples foi implementada nos primeiros sistemas
operacionais, porém ainda está presente em alguns sistemas
monoprogramáveis.
Nesse tipo de organização, a memória principal é subdividida em duas áreas:
uma para o sistema operacional e outra para o programa do usuário.
Dessa forma, o programador deve desenvolver suas aplicações preocupado,
apenas, em não ultrapassar o espaço de memória disponível, ou seja, a
diferença entre o tamanho total da memória principal e a área ocupada pelo
sistema operacional.
Nesse esquema, o usuário tem controle sobre toda a memória principal,
podendo ter acesso a qualquer posição de memória, inclusive à área do
sistema operacional.
183
Alocação Contígua Simples
•
•
•
•
•
Para proteger o sistema desse tipo de acesso, que pode ser intencional ou não,
alguns sistemas implementam proteção através de um registrador que delimita
as áreas do sistema operacional e do usuário.
Dessa forma, sempre que um programa faz referência a um endereço na
memória, o sistema verifica se o endereço está dentro dos limites permitidos.
Caso não esteja, o programa é cancelado e uma mensagem de erro é gerada,
indicando que houve uma violação no acesso à memória principal.
Apesar da fácil implementação e do código reduzido, a alocação contígua
simples não permite a utilização eficiente dos recursos computacionais, pois
apenas um usuário pode dispor desses recursos.
Em relação à memória principal, caso o programa do usuário não a preencha
totalmente existirá um espaço de memória livre sem utilização.
184
Alocação Contígua Simples
Memória Principal
Área Livre
RL
0
SO
Se (Endereço do Programa >= RL) Então
Acesso Normal;
Caso contrário
Exceção;
185
Alocação Contígua Simples
Subutilização da Memória
Memória Principal
Área Livre
Memória
sendo
subutilizada
Programa do
Usuário
0
SO
186
Alocação Particionada
•
•
•
Os sistemas operacionais evoluíram no sentido de proporcionar melhor
aproveitamento dos recursos disponíveis.
Nos sistemas monoprogramáveis, o processador permanece grande parte do
seu tempo de funcionamento ocioso, e com isso, a memória principal acaba
sendo subutilizada.
Os sistemas multiprogramáveis já são muito mais eficientes no uso do
processador, necessitando assim, que diversos programas estejam na memória
principal ao mesmo tempo e que novas formas de gerência de memória sejam
implementadas.
187
Alocação Particionada Estática
•
•
•
•
Nos primeiros sistemas multiprogramáveis, a memória era dividida em pedaços
de tamanho fixo, chamados partições.
O tamanho das partições, estabelecido na fase de inicialização do sistema, era
definido em função do tamanho dos programas que executariam no ambiente.
Sempre que fosse necessária a alteração do tamanho de uma partição, o
sistema deveria ser desativado e reinicializado com uma nova configuração.
Esse tipo de gerência de memória é conhecido como alocação particionada
estática ou fixa.
188
Alocação Particionada Estática
Tabela de Partições
Memória Principal
Partição
Tamanho
Livre
1
2 KB
Sim/Não
2
5 KB
Sim/Não
3
11 KB
Sim/Não
Programas a serem executados
E
D
C
B
A
3 KB
6 KB
1 KB
4 KB
2 KB
0
Partição 3
11 KB
Partição 2
5 KB
Partição 1
2 KB
SO
189
Alocação Particionada Estática Absoluta
•
•
•
•
•
Inicialmente, os programas só podiam ser carregados e executados em apenas
uma partição específica, mesmo se outras estivessem disponíveis.
Essa limitação se devia aos compiladores e montadores que geravam apenas
código absoluto.
No código absoluto todas as referências a endereços no programa são
posições físicas na memória principal, ou seja, o programa só poderia ser
carregado a partir do endereço de memória especificado no seu próprio código.
Como mostra a figura a seguir, se, por exemplo, os programas A e B
estivessem sendo executados e a terceira partição estivesse livre, os
programas C e E não poderiam ser processados.
A esse tipo de gerência de memória chamou-se alocação particionada estática
absoluta
190
Alocação Particionada Estática Absoluta
Memória Principal
D
Partição 3
11 KB
Partição 2
5 KB
Partição 1
2 KB
6 KB
E
B
3 KB
4 KB
C
A
1 KB
2 KB
0
SO
191
Alocação Particionada Estática Relocável
•
•
•
•
•
Com a evolução dos compiladores, montadores, linkers e loaders, o código
gerado deixou de ser absoluto e passou a ser relocável.
No código relocável, todas as referências a endereços no programa são
relativas ao início do código, e não a endereços físicos de memória.
Desta forma, os programas puderam ser executados a partir de qualquer
partição.
Quando o programa é carregado, o loader calcula todos os endereços a partir
da posição inicial onde o programa foi alocado.
Esse tipo de gerência de memória é denominado alocação particionada estática
relocável.
192
Alocação Particionada Estática Relocável
Memória Principal
E
D
C
B
A
3 KB
6 KB
1 KB
4 KB
2 KB
0
Partição 3
11 KB
Partição 2
5 KB
Partição 1
2 KB
SO
193
Alocação Particionada Estática Relocável
•
•
•
•
Para manter o controle sobre quais partições estão alocadas, a gerência de
memória mantém uma tabela com o endereço inicial de cada partição, seu
tamanho e se está em uso.
Sempre que um programa é carregado para a memória, o sistema percorre a
tabela, na tentativa de localizar uma partição livre onde o programa possa ser
carregado.
Nesse esquema de alocação de memória a proteção baseia-se em dois
registradores, que indicam os limites inferior e superior da partição onde o
programa está sendo executado.
Caso o programa tente acessar uma posição de memória fora dos limites
definidos pelos registradores, ele é interrompido e uma mensagem de violação
de acesso é gerada pelo sistema operacional.
194
Alocação Particionada
Proteção de Memória
Memória Principal
Partição 3
Se (Endereço do Programa < RLS) .E. (Endereço do Programa >= RLI) Então
Acesso Normal;
Caso contrário
Exceção;
RLS
Partição 2
RLI
Partição 1
0
SO
195
Alocação Particionada Estática
•
•
•
Tanto nos sistemas de alocação absoluta quanto nos de alocação relocável os
programas, normalmente, não preenchem totalmente as partições onde são
carregados.
Por exemplo, os programas A, C e E não ocupam integralmente o espaço das
partições onde estão alocados, deixando 3 Kb, 1 Kb e 5 Kb de áreas livres,
respectivamente.
Esse tipo de problema, decorrente da alocação fixa das partições, é conhecido
como fragmentação interna.
196
Alocação Particionada Estática
Memória Principal
Área Livre
Partição 3
Processo E
Área Livre
Fragmentação Interna
Partição 2
Processo A
Área Livre
Partição 1
Processo C
0
SO
197
Alocação Particionada Dinâmica
•
•
•
•
A alocação particionada estática, analisada anteriormente, deixou evidente a
necessidade de uma nova forma de gerência de memória principal, em que o
problema da fragmentação interna fosse reduzido e, consequentemente, o grau
de compartilhamento da memória aumentado.
Na alocação particionada dinâmica, ou variável, foi eliminado o conceito de
partições de tamanho fixo.
Nesse esquema, cada programa utilizaria o espaço necessário, tornando essa
área a sua partição.
Como os programas utilizam apenas o espaço de que necessitam, no esquema
de alocação particionada dinâmica o problema da fragmentação interna não
ocorre.
198
Alocação Particionada Dinâmica
Memória Principal
Área Livre
Memória Principal
Área Livre
2 KB
Processo E
3 KB
Processo D
6 KB
Processo C
1 KB
Processo B
4 KB
Processo A
2 KB
18 KB
SO
0
0
SO
199
Alocação Particionada Dinâmica
•
•
•
•
A princípio, o problema da fragmentação interna está resolvido, porém nesse
caso existe um problema que não é tão óbvio quanto no esquema anterior.
Um diferente tipo de fragmentação começará a ocorrer, quando os programas
forem terminando e deixando espaços cada vez menores na memória, não
permitindo o ingresso de novos programas.
Isto acontece porque os programas necessitam de endereços contíguos na
memória principal.
A este tipo de problema dá-se o nome de fragmentação externa.
200
Alocação Particionada Dinâmica
Memória Principal
F
x
3 KB
0
Área Livre
2 KB
Processo E
3 KB
Processo D
6 KB
Área LivreC
Processo
1 KB
Processo B
4 KB
Processo
Área LivreA
2 KB
SO
Fragmentação Externa
201
Alocação Particionada Dinâmica
•
•
•
•
Os sistemas operacionais implementam, basicamente, quatro estratégias para
determinar em qual área livre um programa será carregado para execução.
Essas estratégias tentam evitar ou diminuir o problema da fragmentação
externa.
A melhor estratégia a ser adotada por um sistema depende de uma série de
fatores, sendo o mais importante o tamanho dos programas processados no
ambiente.
Independentemente do algoritmo utilizado, o sistema possui uma lista de áreas
livres, com o endereço e tamanho de cada área.
202
Alocação Particionada Dinâmica - Desfragmentação
Memória Principal
Memória Principal
Área Livre
2 KB
Área Livre
5
2 KB
Processo E
3 KB
Processo E
Processo F
3 KB
3 KB
Processo D
6 KB
Processo B
4 KB
Desfragmentando
F
x
3 KB
0
Processo D
6 KB
Área LivreC
Processo
1 KB
Processo B
4 KB
Área LivreA
Processo
2 KB
SO
0
SO
203
Endereçamento Relativo
Endereço Absoluto ou Físico
Endereço Relativo
Memória Principal
799
399
Partição 3
400
399
0
249
Partição 2
150
149
100
99
0
Partição 1
SO
0
49
0
99
0
204
Endereçamento Relativo
•
Como converter um Endereço Relativo em um Endereço Físico.
Endereço Inicial de Partição
Endereço Solicitado (Relativo)
+
Endereço Físico de Memória
205
Estratégias de Alocação de Partição
Memória Principal
G
Onde?
Área Livre
4 KB
Processo F
3 KB
Área Livre
2 KB
Processo D
6 KB
Área Livre
3 KB
1 KB
0
SO
206
Estratégias de Alocação de Partição
•
•
•
•
Os sistemas operacionais implementam, basicamente, quatro estratégias para
determinar em qual área livre um programa será carregado para execução.
Essas estratégias tentam evitar ou diminuir o problema da fragmentação
externa.
A melhor estratégia a ser adotada por um sistema depende de uma série de
fatores, sendo o mais importante o tamanho dos programas processados no
ambiente.
Independentemente do algoritmo utilizado, o sistema possui uma lista de áreas
livres, com o endereço e tamanho de cada área.
207
Estratégias de Alocação de Partição
•
Best-fit
Na estratégia best-fit é escolhida a partição onde o programa deixa o
menor espaço sem utilização.
Nesse algoritmo, a lista de áreas livres está ordenada por tamanho,
diminuindo o tempo de busca por uma área desocupada.
Uma grande desvantagem desse método é consequência do próprio
algoritmo. Como é alocada a partição que deixa a menor área livre, a
tendência é que cada vez mais a memória fique com pequenas áreas nãocontíguas, aumentando o problema da fragmentação.
208
Estratégias de Alocação de Partição
•
G
Best-fit
Memória Principal
Onde?
Memória Principal
Área Livre
4 KB
Área Livre
4 KB
Processo F
3 KB
Processo F
3 KB
2 KB
Área Livre
Área Livre
1 KB
1 KB
Processo G
1 KB
0
Processo D
6 KB
Processo D
6 KB
Área Livre
3 KB
Área Livre
3 KB
SO
0
SO
209
Estratégias de Alocação de Partição
•
Worst-fit
Na estratégia worst-fit é escolhida a partição onde o programa deixa o
maior espaço sem utilização.
Apesar de utilizar as maiores partições, a técnica worst-fit deixa espaços
livres maiores que permitem a um maior número de programas utilizar a
memória, diminuindo o problema da fragmentação.
210
Estratégias de Alocação de Partição
•
Memória Principal
Worst-fit
Área Livre
G
Onde?
Memória Principal
4 KB
Área Livre
3 KB
Processo G
1 KB
Processo F
3 KB
Processo F
3 KB
Área Livre
2 KB
Área Livre
2 KB
Processo D
6 KB
Processo D
6 KB
Área Livre
3 KB
Área Livre
3 KB
1 KB
0
SO
0
SO
211
Estratégias de Alocação de Partição
•
First-fit
Na estratégia first-fit, a primeira partição livre de tamanho suficiente para
carregar o programa é escolhida.
Nesse algoritmo, a lista de áreas livres está ordenada por endereços
crescentemente.
Como o método tenta primeiro utilizar as áreas livres de endereços mais
baixos, existe uma grande chance de se obter uma grande partição livre
nos endereços de memória mais altos.
212
Estratégias de Alocação de Partição
•
G
Memória Principal
First-fit
Onde?
Memória Principal
Área Livre
4 KB
Área Livre
4 KB
Processo F
3 KB
Processo F
3 KB
Área Livre
2 KB
Área Livre
2 KB
Processo D
6 KB
Processo D
6 KB
Área Livre
2 KB
Processo G
1 KB
1 KB
Área Livre
0
SO
3 KB
0
SO
213
Estratégias de Alocação de Partição
•
Next-fit
Na estratégia next-fit, é escolhida a primeira partição livre de tamanho
suficiente para carregar o programa a partir da última alocação realizada.
Este algoritmo visa realizar uma distribuição mais homogênea na memória.
214
Estratégias de Alocação de Partição
•
Memória Principal
Next-fit
Onde?
G
Memória Principal
Área Livre
4 KB
Área Livre
4 KB
Processo F
3 KB
Processo F
3 KB
Área Livre
2 KB
Área Livre
1 KB
1 KB
Processo G
1 KB
Processo D
6 KB
Processo D
6 KB
Área Livre
3 KB
Área Livre
3 KB
Última Alocação
0
SO
0
SO
215
Swapping
•
•
•
•
Mesmo com o aumento da eficiência da multiprogramação e, particularmente,
da gerência de memória, muitas vezes um programa não podia ser executado
por falta de uma partição livre disponível.
A técnica de swapping foi introduzida para contornar o problema da
insuficiência de memória principal.
Em todos os esquemas apresentados anteriormente, um processo permanecia
na memória principal até o final da sua execução, inclusive nos momentos em
que esperava por um evento, como uma operação de leitura ou gravação.
O swapping é uma técnica aplicada à gerência de memória para programas que
esperam por memória livre para serem executados.
216
Swapping
•
•
Nesta situação, o sistema escolhe um processo residente, que é transferido da
memória principal para a memória secundária (swap out), geralmente o disco.
Posteriormente, o processo é carregado de volta da memória secundária para a
memória principal (swap in) e pode continuar sua execução como se nada
tivesse ocorrido.
217
Swapping
Memória Principal
G
x
Memória Principal
Área Livre
2 KB
Área Livre
2 KB
Processo F
3 KB
Processo F
3 KB
Processo E
3 KB
Processo E
3 KB
Processo D
6 KB
Processo D
6 KB
Área Livre
1 KB
Processo G
3 KB
3 KB
Processo B
Swap out
4 KB
Disco
0
SO
0
SO
218
Swapping
Memória Principal
0
Área Livre
1 KB
Processo B
4 KB
Processo E
3 KB
Processo D
6 KB
Área Livre
1 KB
Processo G
3 KB
Swap in
Disco
SO
219
Swapping
•
•
•
O algoritmo de escolha do processo a ser retirado da memória principal deve
priorizar aquele com menores chances de ser escalonado para evitar o
swapping desnecessário de um processo que será executado logo em seguida.
Os processos retirados da memória estão geralmente no estado de espera,
mas ainda existe a possibilidade de um processo no estado de pronto também
ser selecionado para swapping.
Os processos no estado de espera ou pronto quando fora da memória são ditos
não-residentes (outswapped).
220
Exercícios
1- (Questão 64 – Petrobrás – Profissional Junior – Analista de Sistemas – Infraestrutura – ano 2011 – Cesgranrio)
Considere um sistema cuja gerência de memória é feita através de partições variáveis. Em um dado instante, existem as seguintes
lacunas (áreas livres), identificadas por um número segundo a tabela abaixo:
Identificação da área livre
Tamanho disponível
1
4 MB
2
2 MB
3
4
17 MB 21 MB
5
1 MB
6
4 MB
Usando-se o algoritmo de alocação de memória Best-Fit, quais áreas serão ocupadas quando ocorrerem, nessa ordem, as
solicitações de 9MB, 6MB, 3MB e 5MB?
a)
b)
c)
d)
e)
3, 4, 1, 3
3, 3, 1, 4
4, 3, 6, 3
4, 4, 3, 3
4, 4, 6, 4
221
Exercícios
2- (Questão 50 – Petrobrás – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
Quando os programas esperam por memória livre para serem executados devido à insuficiência de memória principal, o sistema
operacional pode solucionar esse problema com a aplicação da técnica de
a)
b)
c)
d)
e)
falha de página
segmentação
swapping
trashing
partição
222
Exercícios
3- (Questão 52 – Transpetro – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
Considere um sistema de partições de tamanho variável e os seguintes processos na fila para alocação: w1 (110K), w2 (150K),
w3 (300K) e w4 (200K). A sequência de alocação é de w1 para w4, as áreas escuras são blocos já alocados, as áreas claras são
livres e contêm o tamanho dos blocos. O bloco S foi o último a ser alocado. A ordem de busca nos blocos é PQRST.
Bloco P
200K
Bloco Q
Bloco R
500K
Bloco S
Bloco T
300K
Quanto resta de memória livre em cada bloco, em K, depois da alocação realizada com os algoritmos best-fit e next-fit?
a)
b)
c)
d)
e)
P
90
90
90
90
200
Best-Fit
R
50
50
0
0
0
T
100
100
150
150
40
P
90
200
200
90
90
Next-Fit
R
T
0
150
0
40
0
40
50 100
0
150
223
Exercícios
4- (Questão 62 – Liquigás – Profissional Junior – Tecnologia da Informação – Desenvolvimento – ano 2012 – Cesgranrio)
Alguns esquemas de escalonamento de processos podem ter efeitos negativos em determinadas situações.
A situação de starvation é alcançada quando:
a)
b)
c)
d)
e)
um esquema de escalonamento no qual todos os processos obtêm uma fatia proporcional do tempo de processamento
acontece.
um processo qualquer é capaz de interromper a execução de outro por decisão do sistema operacional.
um processo é executado sempre até o fim antes que o escalonamento de algum outro processo seja efetuado, como por
exemplo, na disciplina FCFS sem preempção.
alguns processos ou classes de processos permanecem sempre à espera do processador devido ao fato de que o
escalonamento acaba sempre por privilegiar a escolha de outros processos.
o sistema operacional (SO) utilizado é voltado para aplicações de tempo real, impedindo que o usuário submeta processos
de naturezas diferentes daquelas características esperadas e para as quais o SO está preparado.
224
Exercícios
5- (Questão 03 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2010 – Cesgranrio)
A fragmentação interna é uma anomalia observada quando o gerenciador de memória usa um esquema de particionamento
dinâmico de memória.
PORQUE
No particionamento dinâmico de memória, tanto o número de partições quanto o tamanho das partições podem variar de acordo
com a demanda dos processos.
Analisando as afirmações acima, conclui-se que:
a)
b)
c)
d)
e)
As duas afirmações são verdadeiras e a segunda justifica a primeira.
As duas afirmações são verdadeiras e a segunda não justifica a primeira.
A primeira afirmação é verdadeira e a segunda é falsa.
A primeira afirmação é falsa e a segunda é verdadeira.
As duas afirmações são falsas.
225
Exercícios
6- (Questão 45 – Defensoria Pública de SP – Engenheiro de Redes – ano 2013 – FCC)
O sistema operacional, no esquema de partição variável, mantém uma tabela indicando que partes da memória estão disponíveis e
quais estão ocupadas. Para realizar a alocação dinâmica de memória, ou seja, atender a uma solicitação de alocação de tamanho n,
a partir de uma lista de intervalos livres, existem algumas estratégias, das quais as mais comuns são:
I.
II.
III.
aloca o primeiro intervalo que seja suficientemente grande. A busca pode começar tanto pelo início da tabela como
por onde a busca anterior terminou.
aloca o menor intervalo que seja suficientemente grande. Percorre-se a tabela inteira (a menos que esteja ordenada
por tamanho) para se encontrar o menor intervalo.
aloca o maior intervalo. Percorre-se a tabela inteira (a menos que esteja ordenada por tamanho) para se encontrar o
maior intervalo.
Pode-se afirmar corretamente que:
a)
b)
c)
d)
e)
a estratégia II é denominada menos apto (worst-first).
a estratégia III é a mais eficiente de todas em termos de redução de tempo.
quando um processo termina, ele libera seu bloco de memória. Mesmo que o intervalo liberado seja adjacente a outro
intervalo, estes são mantidos separados na tabela para dar mais flexibilidade à alocação de memória.
a estratégia I é denominada maior e melhor (best-first).
a estratégia II é denominada mais apto (best-fit).
226
Exercícios
7- (Questão 51 – BNDES – Profissional Básico – Análise de Sistemas – Desenvolvimento – ano 2008 – Cesgranrio)
Um sistema operacional que usa segmentação de memória tem a seguinte configuração:
Segmento 1: 100 KB
Segmento 2: 50 KB
Segmento 3: 200 KB
Segmento 4: 50 KB
A memória é preenchida com segmentos de diversos tamanhos, colocados na ordem abaixo:
20 KB, 50 KB, 10 KB, 50 KB, 20 KB, 20 KB, 40 KB
Qual o espaço livre de cada segmento, respectivamente, para as estratégias abaixo?
I.
II.
III.
best-fit
first-fit
worst-fit
a)
I: 1=30 KB, 2=0 KB, 3=160 KB, 4=0 KB
II: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB
III: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB
d)
I: 1=0 KB, 2=0 KB, 3=160 KB, 4=30 KB
II: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB
III: 1=20 KB, 2=0 KB, 3=120 KB, 4=50 KB
b)
I: 1=0 KB, 2=0 KB, 3=160 KB, 4=30 KB
II: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB
III: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB
e)
I: 1=20 KB, 2=0 KB, 3=120 KB, 4=50 KB
II: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB
III: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB
c)
I: 1=30 KB, 2=0 KB, 3=160 KB, 4=0 KB
II: 1=60 KB, 2=50 KB, 3=30 KB, 4=50 KB
III: 1=0 KB, 2=0 KB, 3=140 KB, 4=50 KB
227
Exercícios
8- (Questão 28 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2008 – Cesgranrio)
Um sistema encontra-se com a seguinte lista de segmentos de memória disponíveis, em sequência: 13KB, 21KB, 9KB, 17KB,
40KB. Neste instante, recebe pedido de alocação de memória para quatro novos processos, nesta ordem: 15KB, 24KB, 20KB,
11KB.
Considere os algoritmos a seguir, para alocação de memória.
I.
II.
III.
First fit
Best fit
Worst fit
Qual(is) o(s) algoritmo(s) que consegue(m) alocar memória para todos os quatro novos processos?
a)
b)
c)
d)
e)
I, apenas.
II, apenas.
I e II, apenas.
II e III, apenas.
I, II e III.
228
Memória Virtual
229
Motivadores
•
Custo com a desfragmentação na Alocação Particionada Dinâmica.
•
Processo necessita de um espaço de endereçamento contíguo.
•
O código do programa não é utilizado na íntegra o tempo todo.
•
Grande capacidade de armazenamento da Memória Secundária (discos).
230
Tabela de Mapeamento
do Processo A
Virtual
Real
0
3
1
7
2
2
3
6
Espaço Virtual
Mapeamento
Memória Virtual
do Processo A
4
3
2
1
0
Memória Virtual
do Processo B
75
39
68
17
25
50
30
45
4
3
2
1
0
Tabela de Mapeamento
do Processo B
Virtual
Real
0
4
1
5
2
1
3
0
Mapeamento
Espaço Real
Memória Real
7
6
5
4
3
2
1
0
30
25
68
17
45
50
39
75
231
Mapeamento
•
O processador apenas executa instruções e referencia dados residentes no
espaço de endereçamento real, portanto, deve existir um mecanismo que
transforme os endereços virtuais em endereços reais.
•
Esse mecanismo, conhecido por mapeamento, permite traduzir um endereço
localizado no espaço virtual para um associado no espaço real.
•
Como consequência do mapeamento, um programa não mais precisa estar
necessariamente em endereços contíguos na memória principal para ser
executado.
•
Nos sistemas modernos, a tarefa de tradução de endereços virtuais é realizada
por hardware juntamente com o sistema operacional, de forma a não
comprometer seu desempenho e torná-lo transparente a usuários e suas
aplicações.
232
Mapeamento
•
O dispositivo de hardware responsável por esta tradução é conhecido como
Unidade de Gerência de Memória (Memory Management Unit - MMU), sendo
acionado sempre que se faz referência a um endereço virtual.
•
Depois de traduzido, o endereço real pode ser utilizado pelo processador para
o acesso à memória principal.
•
Cada processo tem o seu espaço de endereçamento virtual como se possuísse
sua própria memória.
•
O mecanismo de tradução se encarrega, então, de manter tabelas de
mapeamento exclusivas para cada processo, relacionando os endereços
virtuais do processo às suas posições na memória real.
233
Mapeamento
•
A tabela de mapeamento é uma estrutura de dados existente para cada
processo.
•
Quando um determinado processo está sendo executado, o sistema utiliza a
tabela de mapeamento do processo em execução para realizar a tradução de
seus endereços virtuais.
•
Se um outro processo vai ser executado, o sistema deve passar a referenciar a
tabela de mapeamento do novo processo.
•
A troca de tabelas de mapeamento é realizada através de um registrador, que
indica a posição inicial da tabela corrente, onde, toda vez que há mudança de
contexto, o registrador é atualizado com o endereço da nova tabela.
234
Mapeamento
•
Caso o mapeamento fosse realizado para cada célula na memória principal, o espaço
ocupado pelas tabelas seria tão grande quanto o espaço de endereçamento virtual de
cada processo, o que inviabilizaria a implementação do mecanismo de memória virtual.
•
Em função disso, as tabelas mapeiam blocos de dados, cujo tamanho determina o número
de entradas existentes nas tabelas de mapeamento.
•
Quanto maior o bloco, menos entradas existem nas tabelas de mapeamento e,
consequentemente, teremos tabelas de mapeamento que ocupam menos espaço de
memória.
•
Existem sistemas operacionais que trabalham apenas com blocos de tamanho fixo
(Páginas), enquanto outros utilizam blocos de tamanho variável (Segmentos).
•
Existe ainda um terceiro tipo de sistema que implementa ambas as técnicas (segmentação
com paginação).
235
Mapeamento
Exemplo do Tamanho da Tabela de Mapeamento
•
•
•
•
•
•
Células com 1 byte
Ocupação do Programa: 1M bytes
Tamanho da Tabela: 1M entradas
Tamanho do Endereço: 32 bits ou 4 bytes
Tamanho de uma entrada: 8 bytes (Virtual
+ Real)
Tamanho total da Tabela: 8M bytes
•
Dividindo a Memória em Blocos
•
•
•
Blocos de 1K bytes
Total de Blocos: 1K Blocos
Total de entradas: 1K entradas
•
•
Tamanho total da Tabela: 8K bytes
Redução de 99,9%
236
Mapeamento
Espaço de
Endereçamento
Virtual
Tamanho do
Bloco
Número de
Blocos
Número de
Entradas na
Tabela de
Mapeamento
232 Endereços
512 endereços
223
223
232 Endereços
4K endereços
220
220
264 Endereços
4K endereços
252
252
264 Endereços
64K endereços
248
248
237
Mapeamento
•
Os blocos podem ser criados de duas maneira, sendo definidos como:
– Páginas: os blocos são todos de tamanho fixo, definidos na inicialização do sistema e
são todos do mesmo tamanho.
– Segmentos: os blocos tem tamanhos variáveis, definidos dinamicamente e podem ter
tamanhos diferentes. Apenas os pares virtual/real devem ter o mesmo tamanho.
238
Memória Virtual por Paginação
•
A memória virtual por paginação é a técnica de gerência de memória em que o
espaço de endereçamento virtual e o espaço de endereçamento real são
divididos em blocos de mesmo tamanho chamados páginas.
•
As páginas no espaço virtual são denominadas páginas virtuais, enquanto as
páginas no espaço real são chamadas de páginas reais, frames ou quadros.
•
Todo o mapeamento de endereço virtual em real é realizado através de tabelas
de páginas.
•
Cada processo possui sua própria tabela de páginas, e cada página virtual do
processo possui uma entrada na tabela (entrada na tabela de páginas - ETP),
com informações de mapeamento que permitem ao sistema localizar a página
real correspondente.
239
Memória Virtual por Paginação
Memória Real
Página 0
Memória Virtual
Página 0
Página 1
Tabela de Páginas
Página 2
Página 1
Página 2
ETP
Página R
Página V
Memória Secundária
240
Memória Virtual por Paginação
•
Além da informação sobre a localização da página virtual, a ETP possui outras
informações, como o bit de validade (valid bit), que indica se uma página está
ou não na memória principal.
•
Se o bit tem o valor 0, isto indica que a página virtual não está na memória
principal, mas se é igual a 1, a página está localizada na memória.
•
Sempre que o processo referencia um endereço virtual, a unidade de gerência
de memória verifica, através do bit de validade, se a página que contém o
endereço referenciado está ou não na memória principal.
•
Caso a página não esteja na memória, dizemos que ocorreu um page fault.
241
Memória Virtual por Paginação
•
Neste caso, o sistema transfere a página da memória secundária para a
memória principal, realizando uma operação de E/S conhecida como page in,
ou paginação.
•
O número de page faults gerado por um processo depende de como o
programa foi desenvolvido, além da política de gerência de memória
implementada pelo sistema operacional.
•
O número de page faults gerados por cada processo em um determinado
intervalo de tempo é definido como taxa de paginação do processo.
•
O overhead (sobrecarga) gerado pelo mecanismo de paginação é inerente à
gerência de memória virtual, porém se a taxa de paginação dos processos
atingir valores elevados, o excesso de operações de E/S poderá comprometer o
desempenho do sistema.
242
Memória Virtual por Paginação
•
Quando um processo referencia um endereço e ocorre um page fault, o
processo em questão passa do estado de execução para o estado de espera,
até que a página seja transferida do disco para a memória principal.
•
Na troca de contexto, as informações sobre a tabela de mapeamento são
salvas e as informações do novo processo escalonado são restauradas.
•
Após a transferência da página para a memória principal, o processo é
recolocado na fila de processos no estado de pronto, e quando for
reescalonado poderá continuar sua execução.
243
Memória Virtual por Paginação
Memória Principal
Endereço Virtual
Tabela de Páginas
V
0
Page in
Memória Secundária
Memória Principal
Tabela de Páginas
V
1
Memória Secundária
244
Memória Virtual por Paginação
•
Quando um programa é executado, as páginas virtuais são transferidas da memória
secundária para a memória principal e colocadas nos frames.
•
Sempre que um programa fizer referência a um endereço virtual, o mecanismo de
mapeamento localizará na ETP da tabela do processo o endereço físico do frame.
•
Nessa técnica, o endereço virtual é formado pelo número da página virtual (NPV) e por um
deslocamento.
•
O NPV identifica unicamente a página virtual que contém o endereço, funcionando como
um índice na tabela de páginas.
•
O deslocamento indica a posição do endereço virtual em relação ao início da página na
qual se encontra.
•
O endereço físico é obtido, então, combinando-se o endereço do frame, localizado na
tabela de páginas, com o deslocamento, contido no endereço virtual.
245
Memória Virtual por Paginação
Página Virtual
0
Deslocamento
Endereço Virtual
NPV
Deslocamento
Tabela de Páginas
ETP
Frame
Frame
Frame
Deslocamento
0
Deslocamento
Endereço Real
246
Política de Busca de Páginas
•
O mecanismo de memória virtual permite a execução de um programa sem que seu
código esteja completamente residente na memória principal.
•
A política de busca de páginas determina quando uma página deve ser carregada
para a memória.
•
Basicamente, existem duas estratégias para este propósito: paginação por
demanda e paginação antecipada.
•
Na paginação por demanda (demand paging), as páginas dos processos são
transferidas da memória secundária para a principal apenas quando são
referenciadas.
•
Este mecanismo é conveniente, na medida em que leva para a memória principal
apenas as páginas realmente necessárias à execução do programa.
•
Desse modo, é possível que partes não executadas do programa, como rotinas de
tratamento de erros, nunca sejam carregadas para a memória.
247
Política de Busca de Páginas
•
Na paginação antecipada (antecipatory paging ou prepaging), o sistema
carrega para a memória principal, além da página referenciada, outras páginas
que podem ou não serem necessárias ao processo ao longo do seu
processamento.
•
Se imaginarmos que o programa está armazenado sequencialmente no disco,
existe uma grande economia de tempo em levar um conjunto de páginas da
memória secundária, ao contrário de carregar uma de cada vez.
•
Por outro lado, caso o processo não precise das páginas carregadas
antecipadamente, o sistema terá perdido tempo e ocupado memória principal
desnecessariamente.
•
A técnica de paginação antecipada pode ser empregada no momento da criação de
um processo ou na ocorrência de um page fault.
248
Política de Busca de Páginas
•
Quando um processo é criado, diversas páginas do programa na memória
secundária devem ser carregadas para a memória principal, gerando um
elevado número de page faults e várias operações de leitura em disco.
•
Na medida em que as páginas são carregadas para a memória, a taxa de
paginação tende a diminuir.
•
Se o sistema carregar não apenas uma, mas um conjunto de páginas, a taxa de
paginação do processo deverá cair imediatamente e estabilizar-se durante um
certo período de tempo.
•
Seguindo o mesmo raciocínio, sempre que houver um page fault, o sistema
poderá carregar para a memória, além da página referenciada, páginas
adicionais, na tentativa de evitar novos page faults e sucessivas operações de
leitura em disco.
249
Política de Alocação de Páginas
•
A política de alocação de páginas determina quantos frames cada processo pode
manter na memória principal.
•
Existem, basicamente, duas alternativas: alocação fixa e alocação variável.
•
Na política de alocação fixa, cada processo tem um número máximo de frames que
pode ser utilizado durante a execução do programa.
•
Caso o número de páginas reais seja insuficiente, uma página do processo deve ser
descartada para que uma nova seja carregada.
•
O limite de páginas reais pode ser igual para todos os processos ou definido
individualmente.
•
Apesar de parecer justo, alocar o mesmo número de páginas para todos os
processos pode não ser uma boa opção, pois a necessidade de memória de cada
processo raramente é a mesma.
250
Política de Alocação de Páginas
•
O limite de páginas deve ser definido no momento da criação do processo, com
base no tipo de aplicação que será executada.
•
Essa informação faz parte do contexto de software do processo.
•
Apesar de sua simplicidade, a política de alocação fixa de páginas apresenta
dois problemas.
•
Se o número máximo de páginas alocadas for muito pequeno, o processo
tenderá a ter um elevado número de page faults, o que pode impactar no
desempenho de todo o sistema.
•
Por outro lado, caso o número de páginas seja muito grande, cada processo irá
ocupar na memória principal um espaço maior do que o necessário, reduzindo
o número de processos residentes e o grau de multiprogramação.
251
Política de Alocação de Páginas
•
Nesse caso, o sistema pode implementar a técnica de swapping, retirando e
carregando processos da/para a memória principal.
•
Na política de alocação variável, o número máximo de páginas alocadas ao
processo pode variar durante sua execução em função de sua taxa de
paginação e da ocupação da memória principal.
•
Nesse modelo, processos com elevadas taxas de paginação podem ampliar o
limite máximo de frames, a fim de reduzir o número de page faults.
•
Da mesma forma, processos com baixas taxas de paginação podem ter
páginas realocadas para outros processos.
•
Este mecanismo, apesar de mais flexível, exige que o sistema operacional
monitore constantemente o comportamento dos processos, gerando maior
overhead.
252
Política de Substituição de Páginas
•
Em algumas situações, quando um processo atinge o seu limite de alocação de
frames e necessita alocar novas páginas na memória principal, o sistema
operacional deve selecionar, dentre as diversas páginas alocadas, qual deverá
ser liberada.
•
Este mecanismo é chamado de política de substituição de páginas.
•
Uma página real, quando liberada por um processo, está livre para ser utilizada
por qualquer outro processo.
•
A partir dessa situação, qualquer estratégia de substituição de páginas deve
considerar se uma página foi ou não modificada antes de liberá-la, caso
contrário, os dados armazenados na página podem ser perdidos.
253
Política de Substituição de Páginas
•
No caso de páginas contendo código executável, que não sofrem alterações,
não existe essa preocupação, pois existe uma cópia do código no arquivo
executável em disco.
•
As páginas modificáveis, que armazenam variáveis e estruturas de dados,
podem sofrer alterações.
•
Neste caso, o sistema deverá gravá-la na memória secundária antes do
descarte, preservando seu conteúdo para uso em futuras referências.
•
Este mecanismo é conhecido como page out.
254
Política de Substituição de Páginas
•
Com este propósito, o sistema mantém um arquivo de paginação (page file),
onde todas as páginas modificadas e descartadas são armazenadas.
•
Sempre que uma página modificada for novamente referenciada ocorrerá um
page in, carregando-a para a memória principal a partir do arquivo de
paginação.
255
Política de Substituição de Páginas
Memória Principal
Page out
Arquivo de Paginação
Page in
256
Política de Substituição de Páginas
•
O sistema operacional consegue identificar as páginas modificadas através de
um bit que existe em cada entrada da tabela de páginas, chamado bit de
modificação (dirty bit ou modify bit).
•
Sempre que uma página sofre uma alteração, o valor do bit de modificação é
alterado, indicando que a página foi modificada.
•
A política de substituição de páginas pode ser classificada conforme seu
escopo, ou seja, dentre os processos residentes na memória principal quais são
candidatos a ter páginas realocadas.
•
Em função desse escopo, a política de substituição pode ser definida como
local ou global.
•
Na política de substituição local, apenas as páginas do processo que gerou o
page fault são candidatas a realocação.
257
Política de Substituição de Páginas
•
Nesse modelo, sempre que um processo precisar de uma nova página o
sistema deverá selecionar, dentre os frames alocados pelo processo, a página
a ser substituída.
•
Os frames dos demais processos não são avaliados para substituição.
•
Já na política de substituição global, todas as páginas alocadas na memória
principal são candidatas à substituição, independente do processo que gerou o
page fault.
•
Como qualquer processo pode ser escolhido, é possível que o processo
selecionado sofra um aumento na sua taxa de paginação, em função da
redução do número de páginas alocadas na memória.
258
Política de Substituição de Páginas
•
Na verdade, nem todas as páginas podem ser candidatas à substituição.
•
Algumas páginas, como as do núcleo do sistema, são marcadas como
bloqueadas e não podem ser realocadas.
•
Existe uma relação entre o escopo da política de substituição e a política de
alocação de páginas, apresentada anteriormente.
•
A política de alocação fixa permite apenas a utilização de uma política de
substituição local.
•
Nesse caso, sempre que um processo necessita de uma nova página, o
sistema deverá selecionar um frame do próprio processo para ser realocado,
mantendo assim o seu limite de páginas.
259
Política de Substituição de Páginas
•
A política de alocação variável permite uma política de substituição tanto
local quanto global.
•
Na política de alocação variável com substituição global, quando um processo
necessita de uma nova página o sistema poderá selecionar um frame dentre
todas as páginas na memória principal, independente do processo.
•
Nesse caso, o processo escolhido perde uma de suas páginas, reduzindo
assim o número de frames alocados na memória pelo processo.
•
Por outro lado, o processo que gerou o page fault recebe um novo frame e tem
seu número de páginas aumentado.
260
Política de Substituição de Páginas
•
Na política de alocação variável com substituição local, quando um processo
necessita de nova página o sistema deverá selecionar uma página do próprio
processo para substituição.
•
Em função do comportamento do processo e do nível de utilização do sistema,
o número de páginas alocadas ao processo pode ser aumentado ou diminuído,
a fim de melhorar o desempenho do sistema.
261
Working Set
•
Apesar de suas diversas vantagens, o mecanismo de memória virtual introduz
um sério problema.
•
Como cada processo possui na memória principal apenas algumas páginas
alocadas, o sistema deve manter um conjunto mínimo de frames buscando uma
baixa taxa de paginação.
•
Ao mesmo tempo, o sistema operacional deve impedir que os processos
tenham um número excessivo de páginas na memória, de forma a aumentar o
grau de compartilhamento da memória principal.
•
Caso os processos tenham na memória principal um número insuficiente de
páginas para a execução do programa, é provável que diversos frames
referenciados ao longo do seu processamento não estejam na memória.
262
Working Set
•
Esta situação provoca a ocorrência de um número elevado de page faults e,
consequentemente, inúmeras operações de E/S.
•
Neste caso, ocorre um problema conhecido como thrashing, provocando
sérias consequências ao desempenho do sistema.
•
O conceito de working set surgiu com o objetivo de reduzir o problema do
thrashing e está relacionado ao princípio da localidade.
•
Existem dois tipos de localidade que são observados durante a execução da
maioria dos programas.
263
Working Set
•
A localidade espacial é a tendência de que após uma referência a uma posição
de memória sejam realizadas novas referências a endereços próximos.
•
A localidade temporal é a tendência de que após a referência a uma posição de
memória esta mesma posição seja novamente referenciada em um curto
intervalo de tempo.
•
O princípio da localidade significa, na prática, que o processador tenderá a
concentrar suas referências a um conjunto de páginas do processo durante um
determinado período de tempo.
•
Imaginando um loop, cujo código ocupe três páginas, a tendência de essas três
páginas serem referenciadas diversas vezes é muito alta.
264
Working Set
Página 0
Inicialização
Página 1
WHILE ( ) DO
Página 2
Página 3
END
Página 4
Finalização
265
Working Set
•
No início da execução de um programa observa-se um elevado número de
page faults, pois não existe nenhum frame do processo na memória principal.
•
Com o decorrer da sua execução, as páginas são carregadas para a memória e
o número de page faults diminui.
•
Após um período de estabilidade, o programa gera novamente uma elevada
taxa de paginação, que depois de algum tempo volta a se estabilizar.
•
Esse fenômeno pode repetir-se inúmeras vezes durante a execução de um
processo e está relacionado com a forma com que a aplicação foi escrita.
•
Normalmente, se um programa foi desenvolvido utilizando
estruturadas, o conceito da localidade quase sempre é válido.
técnicas
266
Working Set
•
Nesse caso, a localidade será percebida, por exemplo, durante a execução de
repetições e sub-rotinas.
•
O princípio da localidade é indispensável para que a gerência de memória
virtual funcione eficientemente.
•
Como as referências aos endereços de um processo concentram--se em um
determinado conjunto de páginas, é possível manter apenas parte do código de
cada um dos diversos programas na memória principal, sem prejudicar a
execução dos processos.
•
Caso contrário, o sistema teria que manter integralmente o código de todos os
programas na memória para evitar o problema do thrashing.
267
Working Set
•
Considerando um programa com rotinas de inicialização, um loop principal e
rotinas de finalização, manter o programa inteiro na memória principal seria
ineficiente.
•
A má utilização da memória fica mais clara quando o programa possui rotinas
de tratamento de erros na memória que, muitas vezes, nunca serão
executadas.
•
A partir da observação do princípio da localidade, Peter Denning formulou o
modelo de working set.
•
O conceito de working set é definido como o conjunto das páginas
referenciadas por um processo durante determinado intervalo de tempo.
268
Working Set
•
A Figura a seguir ilustra que no instante t2 o working set do processo, W(t2, Dt)
consiste nas páginas referenciadas no intervalo Dt (t2 - t1), isto é, as páginas P2,
P3 e P8.
•
O intervalo de tempo Dt é denominado janela do working set.
•
Podemos observar então, que o working set de um processo é uma função do
tempo e do tamanho da janela do working set.
Janela do Working Set (Dt)
P2 P3 P2 P8
t1
t2
tempo
W(t2, Dt)
269
Working Set
•
Dentro da janela do working set, o número de páginas distintas referenciadas é
conhecido como tamanho do working set.
•
Na Figura abaixo são apresentadas as referências às páginas de um processo
nas janelas Dta (t2 - t1) e Dtb (t3 – t2).
•
O working set do processo no instante t2, com a janela Dta corresponde às
páginas P2, P3, P4 e P5, e o tamanho do working set é igual a quatro páginas.
•
No instante t3, com a janela Dtb, o working set corresponde às páginas P5 e P6,
e o tamanho do working set é igual a duas páginas.
Dta
Dtb
P2 P3 P4 P5 P2 P5 P5 P5 P5 P6
t1
t2
t3
tempo
270
Working Set
•
O modelo de working set proposto por Denning possibilita prever quais páginas
são necessárias à execução de um programa de forma eficiente.
•
Caso a janela do working set seja apropriadamente selecionada, em função da
localidade do programa, o sistema operacional deverá manter as páginas do
working set de cada processo residentes na memória principal.
•
Considerando que a localidade de um programa varia ao longo da sua
execução, o tamanho do working set do processo também varia, ou seja, o seu
limite de páginas reais deve acompanhar esta variação.
•
O working set refletirá a localidade do programa, reduzindo a taxa de paginação
dos processos e evitando, consequentemente, o thrashing.
271
Working Set
•
Caso o limite de páginas reais de um processo seja maior do que o tamanho do
working set, menor será a chance de ocorrer uma referência a uma página que
não esteja na memória principal.
•
Por outro lado, as páginas dos processos ocuparão espaço excessivo,
reduzindo o grau de compartilhamento da memória.
•
No caso de o limite de páginas reais ser menor, a taxa de paginação será alta,
pois parte do working set não estará residente na memória principal.
•
Outro fato que pode ser observado é a existência de um ponto onde o aumento
do limite de páginas reais do processo não implica a diminuição significativa da
taxa de paginação, sendo este ponto alcançado muito antes do programa ser
totalmente carregado para a memória.
272
Working Set
Taxa de Page Fault
DPFa
DPFb
DLPa
Limite de Páginas Reais
DLPb
273
Working Set
•
Apesar de o conceito de working set ser bastante intuitivo, sua implementação
não é simples por questões de desempenho.
•
Para implementar esse modelo, o sistema operacional deve garantir que o
working set de cada processo permaneça na memória principal, determinando
quais páginas devem ser mantidas e retiradas em função da última janela de
tempo.
•
Em função disso, o modelo de working set deve ser implementado somente em
sistemas que utilizam a política de alocação de páginas variável, onde o limite
de páginas reais não é fixo.
274
Working Set
•
Uma maneira de implementar o modelo de working set é analisar a taxa de
paginação de cada processo, conhecida como estratégia de frequência de page
fault.
•
Caso um processo tenha uma taxa de paginação acima de um limite definido
pelo sistema, o processo deverá aumentar o seu limite de páginas reais na
tentativa de alcançar o seu working set.
•
Por outro lado, se o processo tem uma taxa de paginação abaixo de um certo
limite, o sistema poderá reduzir o limite de páginas sem comprometer seu
desempenho.
275
Algoritmos de Substituição de Páginas
•
O maior problema na gerência de memória virtual por paginação não é decidir quais
páginas carregar para a memória principal, mas quais liberar.
•
Quando um processo necessita de uma nova página e não existem frames
disponíveis, o sistema deverá selecionar, dentre as diversas páginas alocadas na
memória, qual deverá ser liberada pelo processo.
•
Os algoritmos de substituição de páginas têm o objetivo de selecionar os frames que
tenham as menores chances de serem referenciados em um futuro próximo, caso
contrário, o frame poderia retornar diversas vezes para a memória principal, gerando
vários page faults e acessos à memória secundária.
•
A partir do princípio da localidade, a maioria dos algoritmos tenta prever o
comportamento futuro das aplicações em função do comportamento passado,
avaliando o número de vezes que uma página foi referenciada, o momento em que
foi carregada para a memória principal e o intervalo de tempo da última referência.
276
Algoritmos de Substituição de Páginas
•
A melhor estratégia de substituição de páginas seria aquela que escolhesse um
frame que não fosse mais utilizado no futuro ou levasse mais tempo para ser
novamente referenciado.
•
Porém, quanto mais sofisticado o algoritmo de substituição, maior o overhead
para o sistema operacional implementá-lo.
•
O algoritmo de substituição deve tentar manter o working set dos processos na
memória principal e, ao mesmo tempo, não comprometer o desempenho do
sistema.
•
A seguir, analisaremos os principais algoritmos existentes para a substituição
de páginas.
277
Algoritmos de Substituição de Páginas
•
Ótimo
O algoritmo ótimo seleciona para substituição uma página que não será mais
referenciada no futuro ou aquela que levará o maior intervalo de tempo para ser
novamente utilizada.
Apesar de este algoritmo garantir as menores taxas de paginação para os processos,
na prática é impossível de ser implementado, pois o sistema operacional não tem
como conhecer o comportamento futuro das aplicações.
Essa estratégia é utilizada apenas como modelo comparativo na análise de outros
algoritmos de substituição.
278
Algoritmos de Substituição de Páginas
•
Aleatório
O algoritmo aleatório, como o nome já sugere, faz uma escolha casual, não havendo
previsibilidade na sua escolha.
Todas as páginas alocadas na memória principal têm a mesma chance de serem
selecionadas, inclusive os frames que são frequentemente referenciados.
Apesar de ser uma estratégia que consome poucos recursos do sistema, é raramente
implementada, em função de sua baixa eficiência.
279
Algoritmos de Substituição de Páginas
•
FIFO (First in, First Out)
No algoritmo FIFO, a página que primeiro foi utilizada será a primeira a ser escolhida,
ou seja, o algoritmo seleciona a página que está há mais tempo na memória principal.
O algoritmo pode ser implementado associando-se a cada página o momento em que
foi carregada para a memória ou utilizando-se uma estrutura de fila, onde as páginas
mais antigas estão no início e as mais recentes no final.
Entrada
Página mais
Recente
Saída
Página mais
Antiga
280
Algoritmos de Substituição de Páginas
•
FIFO (continuação)
Parece razoável pensar que uma página que esteja há mais tempo na memória seja
justamente aquela que deva ser selecionada, porém isto nem sempre é verdadeiro.
No caso de uma página que seja constantemente referenciada, como é o caso de
páginas que contêm dados, o fator tempo torna-se irrelevante e o sistema tem que
referenciar a mesma página diversas vezes ao longo do processamento.
O algoritmo FIFO é raramente implementado sem algum outro mecanismo que
minimize o problema da seleção de páginas antigas que são constantemente
referenciadas.
281
Algoritmos de Substituição de Páginas
•
FIFO com Buffer de Páginas
O algoritmo FIFO, anteriormente apresentado, é de fácil implementação e baixo
overhead, porém apresenta uma séria limitação quando páginas antigas são
constantemente referenciadas.
Uma maneira de torná-Io uma política de substituição eficiente é implementar
variações no algoritmo.
O algoritmo FIFO com Buffer de Páginas combina uma lista de páginas alocadas
(LPA) com uma lista de páginas livres (LPL).
A LPA organiza todas as páginas que estão sendo utilizadas na memória principal,
podendo ser implementada como uma lista única para todos os processos ou uma
lista individual para cada processo.
282
Algoritmos de Substituição de Páginas
•
FIFO com Buffer de Páginas (Continuação)
Independente da política utilizada, a LPA organiza as páginas alocadas há mais
tempo na memória no início da lista, enquanto as páginas mais recentes ficam no seu
final.
Da mesma forma, a LPL organiza todos os frames livres da memória principal, sendo
que as páginas livres há mais tempo estão no início e as mais recentes no final.
Sempre que um processo necessita alocar uma nova página, o sistema utiliza a
primeira página da LPL, colocando-a no final da LPA.
Caso o processo tenha que liberar uma página, o mecanismo de substituição
seleciona o frame em uso há mais tempo na memória, isto é, o primeiro da LPA,
colocando-o no final da LPL.
283
Algoritmos de Substituição de Páginas
•
FIFO com Buffer de Páginas (Continuação)
Saída
Lista de Páginas Livres
Entrada
Entrada
Saída
Lista de Páginas Alocadas
Página mais
Recente
Página mais
Antiga
284
Algoritmos de Substituição de Páginas
•
FIFO com Buffer de Páginas (Continuação)
É importante notar que a página selecionada e que entrou na LPL continua disponível
na memória principal por um determinado intervalo de tempo.
Caso esta página seja novamente referenciada e ainda não tenha sido alocada, basta
retirá-la da LPL e devolvê-la ao processo.
Nesse caso, a LPL funciona como um buffer de páginas, evitando o acesso à
memória secundária.
Por outro lado, se a página não for mais referenciada, com o passar do tempo irá
chegar ao início da LPL, quando será utilizada para um outro processo.
Caso a página seja posteriormente referenciada, o sistema terá que carregá-la
novamente da memória secundária.
285
Algoritmos de Substituição de Páginas
– Anomalia de Belady
Pode parecer, intuitivamente, que, quanto mais frames estiverem alocados
ao processo, menos page faults ocorrerão.
É bastante Surpreendente constatar que isso nem sempre é verdadeiro.
Belady descobriu um contra exemplo, no qual o algoritmo de substituição
de páginas FIFO causava mais page faults com quatro frames do que com
três.
Essa estranha situação tornou-se conhecida como anomalia de Belady.
286
Algoritmos de Substituição de Páginas
•
LFU (Least-Frequently-Used)
O algoritmo LFU seleciona a página menos referenciada, ou seja, o frame menos
utilizado.
Para isso, é mantido um contador com o número de referências para cada página na
memória principal.
A página que possuir o contador com o menor número de referências será escolhida,
ou seja, o algoritmo evita selecionar páginas que são bastante utilizadas.
Inicialmente, esta parece ser uma boa estratégia, porém as páginas que estão há
pouco tempo na memória principal podem ser justamente aquelas selecionadas, pois
seus contadores estarão com o menor número de referências.
287
Algoritmos de Substituição de Páginas
•
LFU (Continuação)
É possível também que uma página muito utilizada no passado não seja mais
referenciada no futuro.
Nesse caso, como o contador possuiria um número elevado de referências, a página
não seria selecionada para substituição.
Este esquema, como apresentado, é raramente implementado, servindo apenas de
base para outros algoritmos de substituição.
288
Algoritmos de Substituição de Páginas
•
LRU (Least-Recently-Used)
O algoritmo LRU seleciona a página na memória principal que está há mais tempo
sem ser referenciada.
Se considerarmos o princípio da localidade, é provável que uma página que não foi
utilizada recentemente não seja referenciada novamente em um futuro próximo.
Para implementar esse algoritmo, é necessário que cada página tenha associado o
momento do último acesso, que deve ser atualizado a cada referência a um frame.
Quando for necessário substituir uma página, o sistema fará uma busca por um frame
que esteja há mais tempo sem ser referenciado.
289
Algoritmos de Substituição de Páginas
•
LRU (Continuação)
Outra maneira de implementar o LRU seria através de uma lista encadeada, onde
todas as páginas estariam ordenadas pelo momento da última referência.
Neste caso, cada acesso à memória exigiria um acesso à lista.
Apesar de ser uma estratégia com uma eficiência comparável ao algoritmo ótimo, é
pouco empregada na prática devido ao seu elevado custo de implementação.
290
Algoritmos de Substituição de Páginas
•
NRU (Not-Recently-Used)
O algoritmo NRU é bastante semelhante ao LRU, porém com menor sofisticação.
Para a implementação deste algoritmo é necessário um bit adicional, conhecido como
bit de referência (BR).
O bit indica se a página foi utilizada recentemente e está presente em cada entrada
da tabela de páginas.
Quando uma página é carregada para a memória principal, o bit de referência é
alterado pelo hardware, indicando que a página foi referenciada (BR = 1).
Periodicamente, o sistema altera o valor do bit de referência (BR = 0), e à medida que
as páginas são utilizadas, o bit associado a cada frame retorna para 1.
291
Algoritmos de Substituição de Páginas
•
NRU (Continuação)
Desta forma, é possível distinguir quais frames foram recentemente referenciados.
No momento da substituição de uma página, o sistema seleciona um dos frames que
não tenha sido utilizado recentemente, ou seja, com o bit de referência igual a zero.
O algoritmo NRU torna-se mais eficiente se o bit de modificação for utilizado em
conjunto com o bit de referência.
Neste caso, é possível classificar as páginas em quatro categorias.
O algoritmo, inicialmente, seleciona as páginas que não foram utilizadas
recentemente e não foram modificadas, evitando assim um page out.
292
Algoritmos de Substituição de Páginas
•
NRU (Continuação)
O próximo passo é substituir as páginas que não tenham sido referenciadas
recentemente, porém modificadas.
Neste caso, apesar de existir um acesso à memória secundária para a gravação da
página modificada, seguindo o princípio da localidade, há pouca chance de essa
página ser novamente referenciada.
Final da Janela de Tempo
Novas Referências
Página Selecionada
BR=0
BR=1
BR=0
BR=1
BR=0
BR=0
BR=0
BR=0
BR=1
BR=0
BR=0
BR=1
P1
P2
P3
P4
P1
P2
P3
P4
P1
P2
P3
P4
BM=0
BM=1
BM=0
BM=0
BM=0
BM=1
BM=0
BM=0
BM=0
BM=1
BM=0
BM=0
293
Algoritmos de Substituição de Páginas
•
FIFO Circular ou Relógio ou Segunda Chance
O algoritmo FIFO circular utiliza como base o FIFO, porém as páginas alocadas na
memória estão em uma estrutura de lista circular, semelhante a um relógio.
Este algoritmo é implementado, com pequenas variações, na maioria dos sistemas
Unix.
Para a implementação do algoritmo existe um ponteiro que guarda a posição da
página mais antiga na lista.
Cada página possui associado um bit de referência, indicando se a página foi
recentemente referenciada.
294
Algoritmos de Substituição de Páginas
•
FIFO Circular ou Relógio ou Segunda Chance (Continuação)
Quando é necessário substituir uma página, o sistema verifica se o frame apontado
tem o bit de referência desligado (BR = O).
Nesse caso, a página é selecionada para descarte, pois, além de ser a mais antiga,
não foi utilizada recentemente.
Por outro lado, se a página apontada tem o bit de referência ligado (BR = 1), o bit é
desligado e o ponteiro incrementado, pois, apesar de ser a página mais antiga, foi
utilizada recentemente.
O processo se repete até ser encontrada uma página com bit de referência igual a
zero.
295
Algoritmos de Substituição de Páginas
•
FIFO Circular ou Relógio ou Segunda Chance (Continuação)
BR=1
BR=0
P1
Pn
P1
BR=1
P2
P2
Pn
Página
mais
antiga
P3 BR=0
Página
selecionada
P4
P5
BR=0
P3 BR=0
P4
P5
296
Algoritmos de Substituição de Páginas
•
FIFO Circular ou Relógio ou Segunda Chance (Continuação)
Neste algoritmo, existe a possibilidade de todos os frames possuírem o bit de
referência ligado.
Nesse caso, o ponteiro percorrerá toda a lista, desligando o bit de referência de cada
página.
Ao final, a página mais antiga é selecionada.
A utilização do bit de referência permite conceder a cada página uma segunda
chance antes de ser substituída.
297
Exercícios
1- (Questão 64 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2011 – Cesgranrio)
Uma empresa adquiriu o sistema operacional HAL de 32 bits que divide o espaço de endereçamento virtual em duas partes iguais:
uma para processos de usuários, e outra, para o próprio sistema operacional.
Sendo assim, as aplicações desenvolvidas para essa empresa podem endereçar, em gigabytes, no máximo,
a)
b)
c)
d)
e)
2
4
8
16
32
298
Exercícios
2- (Questão 48 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2011 – Cesgranrio)
Um processo referencia 5 páginas identificadas por p1, p2, p3, p4 e p5, na seguinte ordem:
p1, p2, p3, p4, p1, p2, p5, p1, p2, p3, p4, p5
Considerando que o algoritmo de substituição de página seja fila e que a memória principal encontra-se inicialmente vazia, o
número de transferências de páginas, em um sistema com 3 quadros em memória principal, é
a)
b)
c)
d)
e)
6
7
8
9
10
299
Exercícios
3- (Questão 24 – Transpetro – Analista de Sistemas Júnior – ano 2011 – Cesgranrio)
Um processo referencia 5 páginas identificadas por p1, p2, p3, p4 e p5, na seguinte ordem:
p1, p2, p3, p1, p4, p2, p5, p1, p2, p5, p2, p1
Considerando-se que o algoritmo de substituição de página seja LRU e que a memória principal encontra-se inicialmente vazia,
qual é o número de transferências de páginas em um sistema com 3 quadros em memória principal?
a)
b)
c)
d)
e)
6
7
8
9
10
300
Exercícios
4- (Questão 49 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2011 – Cesgranrio)
Um sistema operacional possui espaço para 5 quadros de memória. A tabela abaixo contém informações sobre cada um desses 5
quadros, incluindo sua identificação, o momento em que o quadro foi carregado, o momento em que o quadro foi acessado e os
bits R e M, indicando, respectivamente, leitura recente e modificação.
Página
0
1
2
3
4
Carregada em
125
240
150
110
134
Última Referência
280
260
270
290
300
R
1
0
0
1
1
M
0
1
0
1
0
Considerando-se essas informações, qual página deve ser substituída caso o método de substituição, implementado pelo sistema
operacional, seja o NRU?
a)
b)
c)
d)
e)
0
1
2
3
4
301
Exercícios
5- (Questão 43 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2010 – Cesgranrio)
Um computador apresenta quatro molduras de página. O instante da última referência, o tempo de carregamento da página na
memória e os bits R (referenciada) e M (modificada) para cada página são apresentados na tabela abaixo, sendo que os tempos
estão em tiques de relógio.
Página
1
2
3
4
Última Referência
100
350
180
80
Carregamento
34
21
30
42
R
1
0
0
1
M
0
1
0
0
Se ocorrer uma falta de página, qual página será trocada se forem utilizados os métodos NUR (não usada recentemente) e SC
(segunda chance), respectivamente?
a)
b)
c)
d)
e)
2e1
2e3
3e1
3e2
3e4
302
Exercícios
6- (Questão 56 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2008 – Cesgranrio)
Quando uma falta de página ocorre, o sistema operacional precisa escolher uma página a ser removida da memória, a fim de
liberar espaço para uma nova página a ser trazida para a memória. Em relação aos algoritmos que podem ser utilizados, para
executar a substituição de páginas, pode-se afirmar que:
a)
b)
c)
d)
e)
Anomalia de Belady indica que se há menos páginas em memória, pode ocorrer menos falta de páginas do que se houvesse
mais páginas em memória.
Na paginação sob demanda, inicialmente são carregadas páginas que podem não ser suficientes para executar o programa.
No algoritmo FIFO com segunda chance, a página mais antiga é a primeira a sair da memória.
No algoritmo LRU, ao ocorrer uma falta de página, é retirada da memória a página menos referenciada.
Em sistemas que executam vários processos, o compartilhamento de páginas piora o problema da falta de páginas.
303
Exercícios
7- (Questão 40 – BNDES – Profissional Básico – Análise de Sistemas – Desenvolvimento – ano 2009 – Cesgranrio)
Se uma máquina possui endereçamento virtual de 48 bits e tamanho de página igual a 4 KB, quantas entradas são necessárias para
a tabela de páginas?
a)
b)
c)
d)
e)
212
232
236
244
260
304
Exercícios
8- (Questão 66 – CAPES – Analista em Ciência e Tecnologia Junior I – Analista de Sistemas – ano 2008 – Cesgranrio)
No âmbito de sistemas operacionais, a Anomalia de Belady é um conceito relacionado à gerência de:
a)
b)
c)
d)
e)
threads.
deadlocks.
memória.
processos.
coordenação distribuída.
305
Exercícios
9- (Questão 58 – Petrobrás – Analista de Sistemas Junior – Engenharia de Software – ano 2012 – Cesgranrio)
Seja o seguinte algoritmo de substituição de página:
•
•
Todas as páginas são mantidas em uma lista circular, e um ponteiro (H) referencia a página mais antiga.
Quando uma falta de página ocorre, a página apontada por H é inspecionada:
–
–
–
Caso o seu bit de referência seja igual a 0, a página é retirada da lista e uma nova é inserida no seu lugar. O ponteiro H
passa a apontar para a próxima página da lista.
Caso o seu bit de referência seja igual a 1, ele será zerado, e H passará a apontar para a próxima página da lista.
O processo é repetido até que uma página onde R=0 seja encontrada.
Qual é o nome desse algoritmo de substituição de página?
a)
b)
c)
d)
e)
Ótimo
Relógio
(FIFO) Primeira a Entrar, Primeira a Sair
(NUR) Não Usada Recentemente
(MRU) Menos Recentemente Usada
306
Tamanho da Página
•
A definição do tamanho de página é um fator importante no projeto de sistemas
que implementam memória virtual por paginação.
•
O tamanho da página está associado à arquitetura do hardware e varia de
acordo com o processador, mas normalmente está entre 512 e 16M endereços.
•
Algumas arquiteturas permitem a configuração do tamanho de página,
oferecendo assim maior flexibilidade.
•
O tamanho da página tem impacto direto sobre o número de entradas na tabela
de páginas e, consequentemente, no tamanho da tabela e no espaço ocupado
na memória principal.
•
Por exemplo, em uma arquitetura de 32 bits para endereçamento e páginas de
4K endereços, teríamos tabelas de páginas de até 220 entradas.
307
Tamanho da Página
•
Se cada entrada ocupasse 4 bytes, poderíamos ter tabelas de páginas de 4
Mbytes por processo.
•
Logo, páginas pequenas necessitam de tabelas de mapeamento maiores,
provocando maior taxa de paginação e aumentando o número de acessos à
memória secundária.
•
Apesar de páginas grandes tornarem menor o tamanho das tabelas de páginas,
ocorre o problema da fragmentação interna.
•
Como podemos observar na figura a seguir, o programa ocupa quase que
integralmente todas as páginas.
•
A fragmentação só é encontrada, realmente, na última página, quando o código
não ocupa o frame por completo.
308
Tamanho da Página
Página 0
Página 1
Página 2
Processo
Página 3
Página 4
Fragmentação Interna
309
Tamanho da Página
•
O principal argumento a favor do uso de páginas pequenas é a melhor
utilização da memória principal.
•
A partir do princípio da localidade, com páginas pequenas teríamos na memória
apenas as partes dos programas com maiores chances de serem executadas.
•
Quanto maior o tamanho da página, maiores as chances de ter na memória
código pouco referenciado, ocupando espaço desnecessariamente.
•
Além disso, páginas pequenas reduzem o problema da fragmentação interna.
310
Tamanho da Página
•
Desperdício com páginas grandes:
Páginas
Página
Informação útil
Informação útil
311
Tamanho da Página
•
Outra preocupação quanto ao tamanho da página é a relacionada aos tempos
de leitura e gravação na memória secundária.
•
Devido ao modo de funcionamento dos discos, o tempo de operações de E/S
com duas páginas de 512 bytes é muito maior do que em uma página de 1.024
bytes.
•
Com o aumento do espaço de endereçamento e da velocidade de acesso à
memória principal, a tendência no projeto de sistemas operacionais com
memória virtual por paginação é a adoção de páginas maiores, apesar dos
problemas citados.
312
Paginação em Múltiplos Níveis
•
Em sistemas que implementam apenas um nível de paginação, o tamanho das
tabelas de páginas pode ser um problema.
•
Como já visto, em uma arquitetura de 32 bits para endereçamento e páginas
com 4K endereços por processo, onde cada entrada na tabela de páginas
ocupe 4 bytes, a tabela de páginas poderia ter mais de um milhão de entradas
e ocuparia 4 Mbytes de espaço, como mostra a figura a seguir.
•
Imaginando vários processos residentes na memória principal, manter tabelas
desse tamanho para cada processo certamente seria de difícil gerenciamento.
313
Paginação em Múltiplos Níveis
Tabela de Páginas
0
1
Endereço Virtual
NPV
20 bits
Deslocamento
2
3
4 Mbytes
12 bits
220-1
32 bits ou 4 bytes
314
Paginação em Múltiplos Níveis
•
Uma boa solução para contornar o problema apresentado é a utilização de tabelas de
páginas em múltiplos níveis.
•
A idéia é que o princípio da localidade seja aplicado também às tabelas de mapeamento.
•
Apenas as informações sobre páginas realmente necessárias aos processos estariam
residentes na memória principal.
•
No esquema de paginação em dois níveis existe uma tabela-diretório, onde cada entrada
aponta para uma tabela de página.
315
Paginação em Múltiplos Níveis
Tabela de Páginas 0
0
1
2
3
1023
Tabela Diretório
0
1
2
3
1023
Memória Principal
Tabela de Páginas 1
0
1
2
3
1023
Tabela de Páginas 1023
0
1
2
3
1023
316
Paginação em Múltiplos Níveis
•
A partir do exemplo anterior, podemos dividir o campo NPV em duas partes: número da
página virtual de nível 1 (NPV1) e número da página virtual de nível 2 (NPV2), cada um
com 10 bits.
•
O NPV1 permite localizar a tabela de páginas na tabela-diretório, por sua vez, o NPV2
permite localizar o frame desejado na tabela de páginas.
317
Paginação em Múltiplos Níveis
Endereço Virtual
NPV 1
NPV 2
Deslocamento
10 bits
10 bits
12 bits
Tabela Diretório
Tabela de Páginas
Frame
318
Paginação em Múltiplos Níveis
•
Utilizando-se o exemplo anterior, é possível que existam 1024 tabelas de
página para cada processo.
•
A grande vantagem da paginação em múltiplo níveis é que apenas estarão
residentes na memória principal as tabelas realmente necessárias aos
processos, reduzindo, dessa forma, o espaço ocupado na memória.
•
Em uma arquitetura de 64 bits, a estrutura em dois níveis já não é mais
adequada devido ao espaço de endereçamento de 264.
•
Considerando páginas de 4K endereços, NPV2 com 10 bits e NPV1 com 42
bits, teríamos tabelas com 242 entradas.
319
Paginação em Múltiplos Níveis
•
Novamente a solução passa por dividir a tabela-diretório, criando uma estrutura
em três níveis.
•
Por exemplo, NPV1 com 32 bits, NPV2 com 10 bits e NPV3 com 10 bits.
•
A técnica de paginação em múltiplos níveis pode ser estendida para quatro
níveis, cinco ou mais níveis.
•
A cada nível introduzido há, pelo menos, mais um acesso à memória principal,
o que sem dúvida gera problemas de desempenho.
•
Tais problemas podem ser contornados utilizando-se caches.
320
Translation Lookaside Buffer
•
A gerência de memória virtual utiliza a técnica de mapeamento para traduzir
endereços virtuais em endereços reais, porém o mapeamento implica em pelo
menos dois acessos à memória principal: o primeiro à tabela de páginas e o
outro à própria página.
•
Sempre que um endereço virtual precisa ser traduzido, a tabela de
mapeamento deve ser consultada para se obter o endereço do frame e,
posteriormente, acessar o dado na memória principal.
•
Como a maioria das aplicações referencia um número reduzido de frames na
memória principal, seguindo o princípio da localidade, somente uma pequena
fração da tabela de mapeamento é realmente necessária.
321
Translation Lookaside Buffer
•
Com base neste princípio, foi introduzida uma memória especial chamada
Translation Lookaside Buffer (TLB), com o intuito de mapear endereços virtuais
em endereços físicos sem a necessidade do acesso à tabela de páginas.
•
O TLB funciona como uma memória cache, mantendo apenas as traduções dos
endereços virtuais das páginas mais recentemente referenciadas.
•
Em geral, o TLB utiliza o esquema de mapeamento associativo, que permite
verificar simultaneamente em todas as suas entradas a presença do endereço
virtual.
•
Dessa forma, para localizar uma entrada não é necessário realizar uma
pesquisa em todo o TLB.
•
Além disso, as traduções dos endereços virtuais podem ser armazenadas em
qualquer posição da cache.
322
Translation Lookaside Buffer
Endereço Virtual
NPV
Memória Principal
Deslocamento
Translation Lookaside Buffer (TLB)
BV
1
1
1
0
1
0
1
1
0
1
TAG
Endereço Físico
Tabela de Mapeamento
BV
1
1
1
0
1
0
1
Endereço Físico
Memória Secundária
323
Translation Lookaside Buffer
•
Na tradução de um endereço virtual, o sistema verifica primeiro o TLB.
•
Caso o endereço virtual (tag) esteja na cache, o endereço físico é utilizado,
eliminando o acesso à tabela de mapeamento (TLB hit).
•
Caso o endereço não esteja na cache, a tabela de mapeamento deve ser
consultada (TLB miss).
•
Se a página estiver na memória principal, a tradução do endereço virtual é
colocada no TLB e o endereço é traduzido.
•
Caso contrário, ocorre um page fault, a página é carregada para a memória, a
tabela de mapeamento é atualizada e a informação é carregada para a TLB.
324
Translation Lookaside Buffer
•
Como a TLB pode eliminar o acesso à tabela de mapeamento, as informações
de um endereço virtual contidas na entrada da tabela de páginas devem
também estar na cache.
•
A TLB é essencial para reduzir o número de operações de acesso à memória
principal em sistemas que implementam memória virtual.
•
Devido ao conceito de localidade, a TLB pode ser implementada com poucas
entradas, mapeando de 8 a 2.048 endereços.
•
Mesmo pequena, a taxa de TLB hits é muito alta, reduzindo significativamente o
impacto da gerência de memória virtual no desempenho do sistema.
325
Compartilhamento de Memória
•
Em sistemas que implementam memória virtual, é bastante simples a
implementação da reentrância, possibilitando compartilhamento de código entre
os diversos processos.
•
Para isso, basta que as entradas das tabelas de mapeamento dos processos
apontem para os mesmos frames na memória principal, evitando, assim, várias
cópias de um mesmo programa na memória.
•
Apesar de os processos compartilharem as mesmas páginas de código, cada
um possui sua própria área de dados em páginas independentes.
•
O compartilhamento de memória também é extremamente importante em
aplicações que precisam compartilhar dados na memória principal.
326
Compartilhamento de Memória
•
Similar ao compartilhamento de código, o mecanismo de paginação permite
que processos façam o mapeamento de uma mesma área na memória e,
consequentemente, tenham acesso compartilhado de leitura e gravação.
•
A única preocupação da aplicação é garantir o sincronismo no acesso à região
compartilhada, evitando problemas de inconsistência.
327
Compartilhamento de Memória
Memória
Virtual de A
Tabela de
Mapeamento de A
End. Virtual 1
Memória Principal
Processo A
Memória
Virtual de B
Página
Tabela de
Mapeamento de B
End. Virtual 1
Processo B
328
Memória Virtual por Segmentação
•
•
•
•
Memória virtual por segmentação é a técnica de gerência de memória onde o
espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes
chamados segmentos.
Na técnica de segmentação, um programa é dividido logicamente em
sub-rotinas e estruturas de dados, que são alocadas em segmentos na
memória principal.
Enquanto na técnica de paginação o programa é dividido em páginas de
tamanho fixo, sem qualquer ligação com sua estrutura, na segmentação existe
uma relação entre a lógica do programa e sua alocação na memória principal.
Normalmente, a definição dos segmentos é realizada pelo compilador, a partir
do código-fonte do programa, e cada segmento pode representar um
procedimento, função, vetor ou pilha.
329
Memória Virtual por Segmentação
Memória Principal
Procedimento X
Programa Principal
Função Y
Array A
330
Memória Virtual por Segmentação
•
O espaço de endereçamento virtual de um processo possui um número máximo
de segmentos que podem existir, onde cada segmento pode variar de tamanho
dentro de um limite.
•
O tamanho do segmento pode ser alterado durante a execução do programa,
facilitando a implementação de estruturas de dados dinâmicas.
•
Espaços de endereçamento independentes permitem que uma sub-rotina seja
alterada sem a necessidade de o programa principal e todas as suas subrotinas serem recompiladas e religadas.
•
Em sistemas que implementam paginação, a alteração de uma sub-rotina do
programa implica recompilar e religar a aplicação por completo.
•
O mecanismo de mapeamento é muito semelhante ao de paginação.
331
Memória Virtual por Segmentação
•
Os segmentos são mapeados através de tabelas de mapeamento de
segmentos (TMS), e os endereços são compostos pelo número do segmento
virtual (NSV) e por um deslocamento.
•
O NSV identifica unicamente o segmento virtual que contém o endereço,
funcionando como um índice na TMS.
•
O deslocamento indica a posição do endereço virtual em relação ao início do
segmento no qual se encontra.
•
O endereço físico é obtido, então, combinando-se o endereço do segmento,
localizado na TMS, com o deslocamento, contido no endereço virtual.
332
Memória Virtual por Segmentação
Segmento Virtual
0
Deslocamento
Endereço Virtual
Número do Seg.
Deslocamento
Tabela de Segmentos
ETS
Segmento Real
Segmento Real
Deslocamento
Segmento na
Memória Principal
0
Deslocamento
Endereço Real
333
Memória Virtual por Segmentação
•
Uma grande vantagem da segmentação em relação à paginação é a sua
facilidade em lidar com estruturas de dados dinâmicas.
•
Como o tamanho do segmento pode ser facilmente alterado na ETS, estruturas
de dados, como pilhas e listas encadeadas, podem aumentar e diminuir
dinamicamente, oferecendo grande flexibilidade ao desenvolvedor.
•
Enquanto na paginação a expansão de um vetor implica a alocação de novas
páginas e, consequentemente, o ajuste da tabela de paginação, na
segmentação deve ser alterado apenas o tamanho do segmento.
•
Na técnica de segmentação, apenas os segmentos referenciados são
transferidos da memória secundária para a memória principal.
334
Memória Virtual por Segmentação
•
Se as aplicações não forem desenvolvidas em módulos, grandes segmentos
estarão na memória desnecessariamente, reduzindo o compartilhamento da
memória e o grau de multiprogramação.
•
Logo, para que a segmentação funcione de forma eficiente, os programas
devem estar bem modularizados.
•
Para alocar os segmentos na memória principal, o sistema operacional mantém
uma tabela com as áreas livres e ocupadas da memória.
•
Quando um novo segmento é referenciado, o sistema seleciona um espaço
livre suficiente para que o segmento seja carregado na memória.
•
A política de alocação de segmentos pode ser a mesma utilizada na alocação
particionada dinâmica (best-fit, worst-fit ou first-fit).
335
Memória Virtual por Segmentação
•
Enquanto na paginação existe o problema da fragmentação interna, na
segmentação surge o problema da fragmentação externa.
•
Este problema ocorre sempre que há diversas áreas livres na memória
principal, mas nenhuma é grande o suficiente para alocar um novo segmento.
•
Neste caso, é necessário que os segmentos sejam realocados na memória de
forma que os espaços livres sejam agrupados em uma única área maior.
•
Em sistemas com segmentação, a proteção de memória é mais simples de ser
implementada do que em sistemas com paginação.
•
Como cada segmento possui um conteúdo bem definido, ou seja, instruções ou
dados, basta especificar a proteção do segmento na ETS, onde alguns bits
podem especificar os tipos de acesso ao segmento.
336
Memória Virtual por Segmentação
•
Na segmentação é mais simples o compartilhamento de memória do que na
paginação, pois a tabela de segmentos mapeia estruturas lógicas e não
páginas.
•
Para compartilhar um segmento, basta que as ETS dos diversos processos
apontem para o mesmo segmento na memória principal.
•
Por exemplo, enquanto o mapeamento de um vetor pode necessitar de várias
entradas na tabela de páginas, na tabela de segmentos é necessária apenas
uma única entrada.
337
Memória Virtual por Segmentação com Paginação
•
Memória virtual por segmentação com paginação é a técnica de gerência de
memória na qual o espaço de endereçamento é dividido em segmentos e, por
sua vez, cada segmento dividido em páginas.
•
Esse esquema de gerência de memória tem o objetivo de oferecer as
vantagens tanto da técnica de paginação quanto da técnica de segmentação.
•
Nessa técnica, um endereço virtual é formado pelo número do segmento virtual
(NSV), um número de página virtual (NPV) e um deslocamento.
•
Através do NSV, obtém-se uma entrada na tabela de segmentos, que contém
informações da tabela de páginas do segmento.
338
Memória Virtual por Segmentação com Paginação
•
O NPV identifica unicamente a página virtual que contém o endereço,
funcionando como um índice na tabela de páginas.
•
O deslocamento indica a posição do endereço virtual em relação ao início da
página na qual se encontra.
•
O endereço físico é obtido, então, combinando-se o endereço do frame,
localizado na tabela de páginas, com o deslocamento, contido no endereço
virtual.
339
Memória Virtual por Segmentação com Paginação
Endereço Virtual
NSV
NPV
Deslocamento
Memória Virtual
Tabela de Páginas
Página
Seg. 0
Seg. 1
Seg. 2
Seg. 3
Memória Principal
Frame
0
1
2
3
Tabela de Segmentos
0
1
2
3
4
Tabela de Páginas
0
1
2
3
4
5
Tabela de Páginas
Seg. 4
0
1
Frame
Deslocamento
Endereço Físico
340
Memória Virtual por Segmentação com Paginação
•
Na visão do programador, sua aplicação continua sendo mapeada em
segmentos de tamanhos diferentes, em função das sub-rotinas e estruturas de
dados definidas no programa.
•
Por outro lado, o sistema trata cada segmento como um conjunto de páginas de
mesmo tamanho, mapeadas por uma tabela de páginas associada ao
segmento.
•
Dessa forma, um segmento não precisa estar contíguo na memória principal,
eliminando o problema da fragmentação externa encontrado na segmentação
pura.
341
Swapping em Memória Virtual
•
A técnica de swapping também pode ser aplicada em sistemas com memória
virtual, permitindo aumentar o número de processos que compartilham a
memória principal e, consequentemente, o grau de multiprogramação do
sistema.
•
Quando existem novos processos para serem executados e não há memória
principal livre suficiente para alocação, o sistema utiliza o swapping,
selecionando um ou mais processos para saírem da memória e oferecer
espaço para novos processos.
•
Depois de escolhidos, o sistema retira os processos da memória principal para
a memória secundária (swap out), onde as páginas ou segmentos são gravados
em um arquivo de swap (swap file).
342
Swapping em Memória Virtual
•
Com os processos salvos na memória secundária, os frames ou segmentos
alocados são liberados para novos processos.
•
Posteriormente, os processos que foram retirados da memória devem retornar
para a memória principal (swap in) para serem novamente executados.
343
Swapping em Memória Virtual
Memória Principal
Memória Principal
Processo A
Processo A
Processo B
Swap out
Processo F
?
Processo F
Processo C
Processo C
Processo D
Processo D
Processo E
Processo E
Processo B
Disco
344
Swapping em Memória Virtual
Memória Principal
Memória Principal
Processo A
Processo A
Processo F
Processo C
Processo F
Swap in
Processo C
Processo D
Processo D
Processo E
Processo B
Processo B
Disco
345
Swapping em Memória Virtual
•
Há várias políticas que podem ser aplicadas na escolha dos processos que
devem ser retirados da memória principal.
•
Independente do algoritmo utilizado, o sistema tenta selecionar os processos
com as menores chances de serem executados em um futuro próximo.
•
Na maioria das políticas, o critério de escolha considera o estado do processo e
sua prioridade.
•
o swapping com base no estado dos processos seleciona, inicialmente, os
processos que estão no estado de espera.
•
A seleção pode ser refinada em função do tipo de espera de cada processo.
346
Swapping em Memória Virtual
•
É possível que não existam processos suficientes no estado de espera para
atender às necessidades de memória do sistema.
•
Nesse caso, os processos no estado de pronto com menor prioridade deverão
ser selecionados.
•
O arquivo de swap é compartilhado por todos os processos que estão sendo
executados no ambiente.
•
Quando um processo é criado, o sistema reserva um espaço no arquivo de
swap para o processo.
•
Da mesma forma, quando um processo é eliminado o sistema libera a área
alocada.
347
Swapping em Memória Virtual
•
Alguns sistemas operacionais utilizam um único arquivo para uso como arquivo
de paginação e de swap.
•
Em alguns sistemas operacionais, o arquivo de swap é, na verdade, uma área
em disco reservada exclusivamente para esta função.
•
Independentemente da implementação, o arquivo de swap deve oferecer o
melhor desempenho possível para as operações de swapping.
348
Thrashing
•
Thrashing pode ser definido como sendo a excessiva transferência de
páginas/segmentos entre a memória principal e a memória secundária.
•
Esse problema está presente em sistemas que implementam tanto paginação
como segmentação.
•
Na memória virtual por paginação, o thrashing ocorre em dois níveis: no do
próprio processo e no do sistema.
•
No nível do processo, a excessiva paginação ocorre devido ao elevado número
de page faults gerado pelo programa em execução.
•
Esse problema faz com que o processo passe mais tempo esperando por
páginas do que realmente sendo executado.
349
Thrashing
•
Existem dois motivos que levam um processo a sofrer esse tipo de thrashing.
•
O primeiro é o dimensionamento incorreto do limite máximo de páginas do
processo, pequeno demais para acomodar seu working set.
•
O segundo é a ausência do princípio da localidade.
•
O thrashing no sistema ocorre quando existem mais processos competindo por
memória principal que espaço disponível.
•
Nesse caso, o primeiro passo é a redução do número de páginas de cada
processo na memória, porém, como já analisamos, esse mecanismo leva ao
thrashing do processo.
350
Thrashing
•
Caso a redução não seja suficiente, o sistema inicia o swapping, retirando
processos da memória principal para a memória secundária.
•
Se esse mecanismo for levado ao extremo, o sistema passará mais tempo
realizando swapping que atendendo aos processos.
•
O thrashing em sistemas que implementam segmentação também ocorre em
dois níveis.
•
No nível do processo, a transferência excessiva de segmentos é devida à
modularização extrema do programa.
•
O thrashing no sistema é semelhante ao da paginação, com a ocorrência de
swapping de processos para liberar memória para os demais.
351
Thrashing
•
Independentemente das soluções apresentadas, se existirem mais processos
para serem executados que memória real disponível a única solução é a
expansão da memória principal.
•
É importante ressaltar que este problema não ocorre apenas em sistemas que
implementam memória virtual, mas também em sistemas com outros
mecanismos de gerência de memória.
352
Exercícios
10- (Questão 32 – BNDES – Analista de Sistemas Júnior – Desenvolvimento – ano 2011 – Cesgranrio)
Na memória virtual por paginação, o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos
do mesmo tamanho chamados páginas. Na memória virtual por segmentação, o espaço de endereçamento é dividido em blocos de
tamanhos diferentes chamados segmentos. Na memória virtual por segmentação com paginação, o espaço de endereçamento é
dividido em:
a)
b)
c)
d)
e)
segmentos e, por sua vez, cada segmento dividido em páginas, o que elimina o problema da fragmentação externa
encontrado na segmentação pura.
segmentos e, por sua vez, cada segmento dividido em páginas, o que elimina o problema da fragmentação interna
encontrado na segmentação pura.
segmentos e, por sua vez, cada segmento dividido em páginas, o que elimina o problema da fragmentação interna
encontrado na paginação pura.
páginas e, por sua vez, cada página dividida em segmentos, o que elimina o problema da fragmentação externa encontrado
na segmentação pura.
páginas e, por sua vez, cada página dividida em segmentos, o que elimina o problema da fragmentação interna encontrado na
segmentação pura.
353
Exercícios
11- (Questão 56 – Liquigás – Profissional Junior – Tecnologia da Informação – Desenvolvimento – ano 2012 – Cesgranrio)
Registrador da base da
tabela de páginas
A800
Memória
Endereços
AA
08
1A
F0
09
1D
1B
FE
A8
A7
FA
F4
F3
D5
DC
A6
...
A7FD
A7FE
A7FF
A800
A801
A802
A803
A804
A805
A806
A807
A808
A809
A80A
A80B
A80C
Memória
00
34
45
FF
...
18
FE
88
E7
0A
...
12
45
99
AD
...
FD
FF
67
A1
A0
...
Endereços
B800
B801
B802
B803
B80A
B80B
B80C
B80D
B80E
C800
C801
C802
C803
C80A
C80B
C80C
C80D
C80E
Em um determinado sistema que utiliza paginação de memória, endereços
lógicos foram projetados com 16 bits, dos quais os 4 mais significativos
indicam uma entrada na tabela de páginas. Nesse sistema existe um registrador
especial que contém o endereço do início da tabela de páginas, que está
armazenada na memória e contém 16 entradas, cada uma com 8 bits. Em cada
entrada dessa tabela de páginas, os quatro bits mais significativos (os da
esquerda) são bits de controle e os quatro restantes correspondem aos 4 bits
mais significativos do endereço da página física de memória. Considere que o
conteúdo da memória e do registrador do início (base) da tabela de páginas é o
da figura, na qual todos os valores encontram-se representados em
hexadecimal.
Um acesso de leitura ao endereço lógico B80A retornará, em hexadecimal, o
valor
a)
b)
c)
d)
e)
D5
FD
FE
18
45
354
Exercícios
12- (Questão 46 – Defensoria Pública de SP – Engenheiro de Redes – ano 2013 – FCC)
A memória virtual é uma técnica que permite mapear um grande espaço de endereçamento lógico em uma memória física menor,
possibilitando elevar o grau de multiprogramação e aumentar a utilização da CPU. A memória virtual é comumente implementada
pela paginação por demanda. Considere uma instrução de 3 endereços como ADD A, B, C (some o conteúdo de A e B e coloque o
resultado em C). Estes são os passos para executar esta instrução:
1.
2.
3.
4.
5.
carregue e decodifique a instrução ADD
carregue A
carregue B
some A e B
armazene a soma em C
Está correto afirmar que:
a)
b)
c)
d)
e)
quando um processo é interrompido por um erro de página, seu estado
(registradores, código de condição, contador de instruções) não é salvo, por
isso ele não consegue ser reiniciado exatamente no mesmo local e estado.
um erro de página pode ocorrer em qualquer referência à memória. Se o
erro ocorrer na carga da instrução, no entanto, este gera um erro fatal,
cancelando a execução do processo e, consequentemente, da aplicação.
a paginação deve ser completamente transparente para o processo do
usuário e permite que processos sejam executados mesmo que seus
requisitos de memória excedam a memória física.
se houver falha ao se tentar armazenar em C (porque C está em uma página
que não se encontra correntemente na memória) a instrução é recarregada e
reiniciada automaticamente, e o sistema operacional emite a mensagem
“page fault”.
se um erro de página ocorrer enquanto um operando estiver sendo
carregado, a instrução pode ser executada sem sua decodificação, pois seu
mnemônico está registrado na memória.
355
Sistema de Arquivos
356
Métodos de Acesso
•
Em função de como o arquivo está organizado, o sistema de arquivos pode
recuperar registros de diferentes maneiras.
•
Inicialmente os primeiros sistemas operacionais só armazenavam arquivos em
fitas magnéticas.
•
Com isso, o acesso era restrito à leitura dos registros na ordem em que eram
gravados, e a gravação de novos registros só era possível no final do arquivo.
•
Este tipo de acesso, chamado de acesso sequencial, era próprio da fita
magnética, que como meio de armazenamento, possuía esta limitação.
•
Com o advento dos discos magnéticos, foi possível a introdução de métodos de
acesso mais eficientes.
357
Métodos de Acesso
•
O primeiro a surgir foi o acesso direto, que permite a leitura/gravação de um
registro diretamente na sua posição.
•
Este método é realizado através do número do registro, que é a sua posição
relativa ao início do arquivo.
•
No acesso direto não existe restrição à ordem em que os registros são lidos ou
gravados, sendo sempre necessária a especificação do número do registro.
•
É importante notar que o acesso direto somente é possível quando o arquivo é
definido com registros de tamanho fixo.
•
O acesso direto pode ser combinado com o acesso sequencial.
358
Métodos de Acesso
•
Com isso é possível acessar diretamente um registro qualquer de um arquivo e,
a partir deste, acessar sequencialmente os demais.
•
Um método de acesso mais sofisticado, que tem como base o acesso direto, é
o chamado acesso indexado ou acesso por chave.
•
Para este acesso, o arquivo deve possuir uma área de índice onde existam
ponteiros para os diversos registros.
•
Sempre que a aplicação desejar acessar um registro, deverá ser especificada
uma chave através da qual o sistema pesquisará na área de índice o ponteiro
correspondente.
•
A partir desta informação é realizado um acesso direto ao registro desejado.
359
Diretórios
•
A estrutura de diretórios é como o sistema organiza logicamente os diversos
arquivos contidos em um disco.
•
O diretório é uma estrutura de dados que contém entradas associadas aos
arquivos onde cada entrada armazena informações como localização física,
nome, etc.
•
Quando um arquivo é aberto, o sistema operacional procura a sua entrada na
estrutura de diretório, armazenando as informações sobre atributo e localização
do arquivo em uma tabela mantida na memória principal.
•
Esta tabela contém todos os arquivos abertos, sendo fundamental para
aumentar o desempenho das operações com arquivos.
360
Diretórios
•
É importante que ao término do uso de arquivos, estes sejam fechados, ou
seja, que se libere o espaço na tabela de arquivos abertos.
•
Um das formas mais comuns é a estrutura em árvore.
•
Nesta estrutura, cada usuário pode criar diversos níveis de diretórios, também
chamados subdiretórios.
•
Cada diretório pode conter arquivos ou outros diretórios.
•
O número de níveis de uma estrutura em árvore depende do sistema de
arquivos de cada sistema operacional.
361
Diretórios
•
Um arquivo nesta estrutura em árvore pode ser especificado unicamente
através de um path absoluto, descrevendo todos os diretórios percorridos a
partir da raiz até o diretório no qual o arquivo está ligado.
•
É possível fazer referencias relativas. Normalmente os sistemas oferecem
duas referencias relativas. Uma delas faz referência ao próprio diretório sendo
sinalizada por “.”. A outra faz referência ao diretório pai sendo sinalizada por
“..”. Desta forma é possível percorrer diretórios sem precisar informar o
caminho completo.
362
Diretórios
Disco C:\
Carlos
Ivan
Dados
Teste
Paulo
Pessoal
Programas
Dados
Aula.ppt
C:\Carlos\Dados
Dados
Resumo
C:\Ivan\Pessoal\Dados
363
Gerência de Espaço Livre em Disco
•
A criação de arquivos em disco exige que o sistema operacional tenha o
controle de quais áreas ou blocos no disco estão livres.
•
Este controle é realizado utilizando-se alguma estrutura de dados que
armazena informações que possibilitam o sistema de arquivo gerenciar o
espaço livre do disco.
•
Nesta estrutura, geralmente uma lista ou tabela, é possível identificar blocos
livres que poderão ser alocados a um novo arquivo.
•
Neste caso, o espaço é removido da estrutura para que não seja reutilizado.
•
No momento em que um arquivo é eliminado, todos os seus blocos são
liberados para a lista de espaços livres.
364
Gerência de Espaço Livre em Disco
•
A forma mais simples de implementar uma estrutura de espaços livres é através
de uma tabela denominada mapa de bits (bit map).
•
Cada entrada na tabela é associada a um bloco do disco representado por um
bit. Podendo assumir valor igual a 0 (bloco livre) ou 1 (bloco alocado).
•
O principal problema desta implementação é o excessivo gasto de memória, já
que para cada bloco do disco deve existir uma entrada na tabela.
365
Gerência de Espaço Livre em Disco
•
Uma segunda maneira de realizar este controle é com uma estrutura de lista
encadeada de todos os blocos livres do disco.
•
Para que isso seja possível, cada bloco possui uma área reservada para o
armazenamento do endereço do próximo bloco.
•
A partir do primeiro bloco livre, é possível o acesso sequencial aos demais de
forma encadeada.
•
O lado ruim é que o algoritmo de busca de espaço livre deve realizar uma
pesquisa sequencial na lista.
366
Gerência de Espaço Livre em Disco
•
Uma outra solução leva em consideração que blocos contíguos são geralmente
alocados ou liberados simultaneamente.
•
Podemos, desta forma, enxergar o disco como um conjunto de segmentos de
blocos livres.
•
Com base neste conceito, é possível manter uma tabela com o endereço do
primeiro bloco de cada segmento e o número de blocos livres contíguos que se
seguem.
•
Esta técnica de gerência de espaço livre é conhecida como tabela de blocos
livres.
367
Gerência de Espaço Livre em Disco
Lista Encadeada
Início
Mapa de Bits
11001101
10000111
01110100
.
.
.
11100000
Tabela de Blocos Livres
Bloco
4
10
13
25
50
Contador
2
1
7
20
5
368
Alocação Contígua
•
Da mesma forma que o sistema operacional gerencia os espaços livres no
disco, a gerencia dos espaços alocados aos arquivos é de fundamental
importância em um sistema de arquivos.
•
A alocação contígua consiste em armazenar um arquivo em blocos
sequencialmente dispostos no disco.
•
Neste tipo de alocação o sistema localiza um arquivo através do endereço do
primeiro bloco e da sua extensão em blocos.
•
O acesso a arquivos dispostos contiguamente no disco é bastante simples,
tanto para forma sequencial quanto para a direta.
369
Alocação Contígua
•
Seu principal problema é a alocação de espaço livre para novos arquivos.
•
Caso um arquivo deva ser criado com determinado tamanho, é necessário
existir uma quantidade suficiente de blocos contíguos no disco para realizar a
alocação.
•
Neste tipo de alocação podemos enxergar o disco como um grande vetor, onde
os elementos podem ser considerados segmentos com tamanhos diferentes de
blocos contíguos.
•
Estes segmentos estão dispostos alternadamente entre segmentos ocupados e
segmentos livres.
370
Alocação Contígua
•
No momento em que o sistema operacional deseja alocar espaço para
armazenar um novo arquivo, pode existir mais de um segmento livre disponível
com o tamanho exigido.
•
Neste caso, é necessário que alguma estratégia de alocação seja adotada para
selecionar qual o segmento na lista de blocos livres deve ser escolhido.
•
A seguir analisaremos as 3 principais estratégias.
371
Alocação Contígua
– First-fit
Neste caso, o primeiro segmento livre com tamanho suficiente para alocar o arquivo é
selecionado.
A busca na lista é sequencial, sendo interrompida tão logo se localize um segmento com
tamanho adequado.
– Best-fit
A alocação best-fit seleciona o menor segmento livre disponível com tamanho suficiente
para armazenar o arquivo.
A busca em toda a lista se faz necessária para a seleção do segmento, a não ser que a
lista esteja ordenada por tamanho.
– Worst-fit
Neste caso, o maior segmento é alocado. Mais uma vez a busca em toda a lista se faz
necessária, a menos que exista uma ordenação por tamanho.
372
Alocação Contígua
•
Independente da estratégia utilizada, a alocação contígua apresenta um problema
chamado fragmentação dos espaços livres.
•
Como os arquivos são criados e eliminados frequentemente, os segmentos livres
vão se fragmentando em pequenos pedaços por todo o disco.
•
O problema pode tornar-se crítico quando um disco possui blocos livres disponíveis,
porém não existe um segmento contíguo em que o arquivo possa ser alocado.
•
O problema da fragmentação pode ser contornado através de rotinas que
reorganizem todos os arquivos no disco de maneira que só exista um único
segmento de blocos livres.
373
Alocação Contígua
•
Este procedimento, denominado desfragmentação, geralmente utiliza uma área de
trabalho no próprio disco.
•
Existe um grande consumo de tempo neste tipo de operação.
•
É importante também ressaltar que a desfragmentação é um procedimento com
efeito temporário e deve, portanto, ser realizado periodicamente.
374
Alocação Contígua
Tabela de Alocação
0
1
2
Arquivo
Bloco
Contador
3
4
5
A.txt
4
3
6
7
8
B.txt
10
1
C.txt
13
2
9
10
11
12
13
14
375
Alocação Encadeada
•
Na alocação encadeada, um arquivo pode ser organizado como um conjunto de
blocos ligados logicamente no disco, independente da sua localização física.
•
Cada bloco deve possuir um ponteiro para o bloco seguinte do arquivo e assim
sucessivamente.
•
A fragmentação dos espaços livres apresentada no método anterior, não ocasiona
nenhum problema na alocação encadeada, pois os blocos livres alocados para um
arquivo não precisam necessariamente estar contíguos.
•
O que ocorre neste método é a fragmentação de arquivos, que é a quebra do
arquivo em diversos pedaços.
376
Alocação Encadeada
•
A fragmentação resulta no aumento do tempo de acesso aos arquivos, pois o
mecanismo de leitura/gravação do disco deve se deslocar diversas vezes sobre sua
superfície para acessar cada pedaço.
•
Para otimizar o tempo das operações de E/S neste tipo de sistema, é importante
que o disco seja periodicamente desfragmentado.
•
Apesar de ter propósitos diferentes, o procedimento de desfragmentação é idêntico
ao já apresentado na alocação contígua.
•
A alocação encadeada só permite que se realize acesso sequencial aos blocos dos
arquivos.
•
Isso constitui uma das principais desvantagens desta técnica, já que não é possível
o acesso direto aos blocos.
377
Alocação Encadeada
Tabela de Alocação
Início
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Arquivo
Bloco
A.txt
...
6
...
...
...
378
Alocação Indexada
•
A alocação indexada soluciona uma das principais limitações da alocação
encadeada, que é a impossibilidade do acesso direto aos blocos dos arquivos.
•
O princípio desta técnica é manter os ponteiro de todos os blocos do arquivo em
uma única estrutura denominada bloco de índice.
379
Alocação Indexada
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3
10
11
7
Bloco de
Índice
380
Exercícios
1- (Questão 35 – BNDES – Analista de Sistemas Júnior – Desenvolvimento – ano 2011 – Cesgranrio)
A organização de um arquivo com a técnica de alocação encadeada é feita como um conjunto de blocos ligados logicamente no
disco, independente da sua localização física.
Nesse tipo de alocação, a fragmentação dos
a)
b)
c)
d)
e)
arquivos ocorre, mas seu efeito é minimizado pelo fato de os blocos alocados para um arquivo poderem ser acessados
diretamente.
arquivos não ocorre, pois os blocos alocados para um arquivo podem ser acessados diretamente.
espaços livres ocasiona um problema, pois os blocos livres alocados para um arquivo precisam necessariamente estar
contíguos.
espaços livres não ocasiona nenhum problema, pois os blocos livres alocados para um arquivo não precisam
necessariamente estar contíguos.
arquivos e a fragmentação dos espaços livres nunca ocorrem.
381
Exercícios
2- (Questão 48 – Petrobrás – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
O sistema operacional utiliza técnicas de alocação de espaço em disco para armazenar os arquivos.
A técnica de alocação encadeada que não usa FAT (File Allocation Table) tem uma grande desvantagem quando comparada à
alocação indexada, que é a:
a)
b)
c)
d)
e)
fragmentação dos espaços livres, apenas
fragmentação dos arquivos, apenas
fragmentação dos espaços livres e dos arquivos
impossibilidade do acesso contíguo aos blocos dos arquivos
impossibilidade do acesso direto aos blocos dos arquivos
382
Exercícios
3- (Questão 26 – Petrobrás – Tecnologia da Informação – Análise de Infraestrutura – ano 2012 – Cesgranrio)
O sistema operacional deve adotar um método de alocação de arquivos, de modo que o espaço em disco seja utilizado com
eficácia, e os arquivos sejam acessados rapidamente.
A alocação encadeada cria uma lista encadeada de blocos de disco para cada arquivo, e esses blocos:
a)
b)
c)
d)
e)
podem estar dispersos em qualquer parte do disco.
podem estar dispersos, desde que estejam em partes predeterminadas do disco.
podem estar contíguos, desde que estejam em partes predeterminadas do disco.
devem estar contíguos em qualquer parte do disco.
devem estar contíguos, mas apenas em partes específicas do disco.
383
Exercícios
4- (Questão 22 – Transpetro – Analista de Sistemas Pleno – ano 2006 – Cesgranrio)
O sistema operacional gerencia os espaços no disco, através de técnicas que associam os blocos de dados aos arquivos. Dentre os
vários métodos existentes, o de alocação encadeada:
a)
b)
c)
d)
e)
Permite o acesso direto aos blocos do arquivo, não utilizando as informações de controle nos blocos, porém mantém os
ponteiros de todos os blocos do arquivo em uma única estrutura denominada índice.
Consiste em associar a cada arquivo uma pequena tabela denominada nó-i, que lista os atributos e os endereços em disco
dos blocos de dados do arquivo.
Consiste em manter o espaço em disco alocado ao arquivo com uma lista de blocos ligada logicamente, independente de sua
localização física, sendo que cada bloco deve possuir um ponteiro para o bloco seguinte do arquivo e assim sucessivamente.
Consiste em enxergar o disco como um grande vetor, onde os elementos podem ser considerados segmentos com tamanhos
diferentes de blocos contíguos.
É o método mais simples de todos os esquemas de alocação, no qual o arquivo é armazenado no disco como um bloco
contínuo de dados.
384
Exercícios
5- (Questão 71 – Petrobrás – Analista de Sistemas Júnior – Suporte de Infraestrutura – ano 2005 – Cesgranrio)
Um diretório contém tipicamente um conjunto de entradas, uma por arquivo. Por sua vez, o sistema operacional se encarrega de
gerenciar o espaço em disco, identificando diferentes formas de armazenamento de arquivos e diretórios. Quanto às
implementações do gerenciamento de arquivos no disco, pode-se dizer que a alocação:
a)
b)
c)
d)
e)
Indexada é simples e fácil de implementar, porém seu principal problema é alocação de espaço livre para aumentar um
arquivo.
Indexada mantém os ponteiros de todos os blocos do arquivo em uma única estrutura chamada tabela de índices, porém essa
tabela deve permanecer o tempo todo na memória principal, o que é sua maior desvantagem.
Contígua mantém o espaço em disco alocado ao arquivo com uma lista ligada de blocos, onde a primeira palavra do bloco é
um ponteiro para o próximo bloco, e o restante do bloco é usado para armazenar as informações do arquivo.
Contígua só permite que se realize acesso sequencial aos blocos de arquivos.
Encadeada é o mais simples de todos os esquemas de alocação, onde cada arquivo é armazenado no disco como um bloco
contínuo de dados.
385
Exercícios
6- (Questão 47 – Transpetro – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
Duas das principais formas de indicar que blocos de disco pertencem a qual arquivo e em que ordem estão são o uso de FAT (File
Allocation Table) ou de i-node.
Uma das diferenças entre eles é que a(o):
a)
b)
c)
d)
e)
FAT exige a alocação contígua de blocos, o i-node permite blocos espalhados pelo disco.
espaço da FAT, quando acaba, deve ser estendido por encadeamento, enquanto o i-node contém todos os links para os
blocos de todos os arquivos.
espaço ocupado pela FAT cresce com o tamanho do disco, o espaço ocupado pelo i-node cresce com a quantidade de
arquivos.
i-node deve ficar sempre em memória, enquanto a FAT pode ser colocada em memória apenas quando o arquivo é aberto.
i-node mantém uma lista encadeada de blocos, a FAT mantém um vetor de endereços de blocos.
386
Exercícios
7- (Questão 29 – Petrobrás – Técnico de Informática Junior – ano 2012 – Cesgranrio
O sistema de arquivos implementado em um sistema operacional utiliza uma tabela de alocação de
arquivo (File Allocation Table – FAT) como método de alocação de espaço em disco. Nessa
implementação, os valores 0 e −1 foram usados para registrar blocos não utilizados e blocos de fim de
arquivo, respectivamente. A figura a seguir apresenta partes da tabela FAT que são relevantes nesse
caso. Nessa figura, os números à esquerda de cada posição correspondem aos índices dessas posições,
começando do zero, e os números em cada célula da tabela correspondem aos identificadores de blocos
ou indicadores de fim de arquivo.
Suponha que a entrada de diretório para um determinado arquivo registre o bloco cujo índice de entrada
na tabela é 217. Suponha, também, que a notação N → P representa a operação de atualizar a posição de
índice P da tabela com o bloco de número N.
Qual é a sequência de operações necessária para alocação de um novo bloco para esse arquivo?
a)
b)
c)
d)
e)
2 → 217 e −1 → 618
2 → 217 e −1 → 1024
2 → 339 e −1 → 2
339 → 1024 e −1 → 2
1024 → 2 e −1 → 2
0
1
2
3
23
76
0
217
.
.
.
217
618
339
−1
618
339
1024
0
.
.
.
.
.
.
.
.
.
.
.
.
387
Exercícios
8- (Questão 45 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2010 – Cesgranrio)
Uma das questões importantes na implementação de armazenamento de arquivos é a manutenção do controle de blocos de discos
relacionados a arquivos. Para isso, são utilizados vários métodos em diferentes sistemas operacionais, sobre os quais é
INCORRETA a seguinte afirmação:
a)
b)
c)
d)
e)
A alocação indexada utiliza uma estrutura de dados chamada i-node que ocupa normalmente um espaço menor do que a
FAT (File Allocation Table) na memória principal.
A alocação de espaço contínuo apresenta alto desempenho e, com o tempo de utilização, reduz o nível de fragmentação do
disco.
A alocação por lista encadeada usando uma tabela na memória principal (FAT - File Allocation Table) é utilizada pelo
sistema operacional MS-DOS.
Na alocação por lista encadeada, o sistema operacional, para chegar ao bloco n, a partir do início do arquivo, deve ler os n 1 blocos antes dele, prejudicando o acesso aleatório ao arquivo.
Na alocação de espaço contínuo de disco, o controle sobre onde os blocos de um arquivo estão resume-se a saber apenas o
endereço em disco do primeiro bloco e o número de blocos do arquivo.
388
Exercícios
9- (Questão 59 – Petrobrás – Analista de Sistemas Junior – Engenharia de Software – ano 2012 – Cesgranrio)
Sobre o uso de Tabelas de Alocação de Arquivos (FAT) na implementação de sistemas de arquivos, considere as afirmativas a
seguir:
I.
II.
III.
O diretório precisa armazenar apenas a posição do primeiro bloco de um arquivo para acessar os demais.
A memória principal é usada de modo eficiente, pois apenas as tabelas relativas aos arquivos que estão sendo
manipulados são mantidas em memória.
O acesso direto aos blocos dos arquivos é bastante eficiente, pois são empregados algoritmos de randomização para
tal.
É correto o que se afirma em:
a)
b)
c)
d)
e)
I, apenas.
II, apenas.
I e II, apenas.
II e III, apenas.
I, II e III.
389
Gerência de Dispositivos
390
Características do Armazenamento em Disco de Cabeçote Móvel
•
Diferentemente da memória principal, que fornece velocidade de acesso
(quase) uniforme a todos os seus conteúdos, o armazenamento em disco de
cabeçote móvel exibe velocidade de acesso variável que depende das posições
relativas entre o cabeçote de leitura-escrita e o dado requisitado.
•
Dados são gravados em uma série de discos magnéticos, ou pratos (platters),
conectados a uma haste (spindle) que gira em alta velocidade (comumente,
milhares de rotações por minuto).
•
Os dados de cada superfície do disco são acessados por um cabeçote de
leitura-escrita que paira a uma pequena distância da superfície do disco (muito
menor do que uma partícula de fumaça).
391
Características do Armazenamento em Disco de Cabeçote Móvel
•
Por exemplo, o disco da figura a seguir contém dois pratos, cada um com duas
superfícies (superior e inferior) e quatro cabeçotes de leitura-escrita, um para
cada superfície.
•
Um cabeçote de leitura-escrita pode acessar dados imediatamente abaixo (ou
acima) dele.
•
Portanto, antes que os dados possam ser acessados, a porção da superfície do
disco na qual eles devem ser lidos (ou escritos) deve girar até ficar
imediatamente abaixo (ou acima) do cabeçote de leitura-escrita.
•
O tempo que leva para o dado girar da posição em que está até a extremidade
do cabeçote de leitura-escrita é denominado tempo de latência rotacional.
392
Características do Armazenamento em Disco de Cabeçote Móvel
•
A latência rotacional média de um disco é simplesmente a metade do tempo
que ele leva para completar uma rotação.
•
A maioria dos discos rígidos exibe latência rotacional média da ordem de vários
milissegundos.
393
Características do Armazenamento em Disco de Cabeçote Móvel
Cilindro
Cabeçotes de
Leitura-Escrita
Trilha
Atuador (lança)
Prato
Superfície
Direção do Movimento
do Braço
Braço do Disco
Haste
394
Estratégias de Escalonamento de Disco
•
A estratégia de escalonamento de disco de um sistema depende dos objetivos
do sistema, mas a maioria das estratégias é avaliada pelos seguintes critérios:
– Rendimento: o número de requisições atendidas por unidade de tempo.
– tempo médio de resposta: o tempo médio gasto à espera de que uma
requisição seja atendida.
– variância dos tempos de resposta: uma medida da previsibilidade dos
tempos de resposta. Cada requisição do disco deve ser atendida dentro de
um período de tempo aceitável (ou seja, a estratégia deve impedir
adiamento indefinido conhecido como starvation).
395
Estratégias de Escalonamento de Disco
•
É claro que uma política de escalonamento deve tentar maximizar o rendimento
e minimizar o tempo médio de resposta.
•
Muitas políticas de escalonamento tentam atingir esses objetivos minimizando o
tempo gasto na execução de buscas demoradas.
•
Quando o rendimento e o tempo médio de resposta são otimizados, o
desempenho médio do sistema melhora, mas requisições individuais podem
sofrer atrasos.
•
A variância mede como as requisições individuais são atendidas em relação ao
desempenho médio do sistema.
•
Quanto menor a variância, mais provável será que a maioria das requisições do
disco seja atendida após esperar durante um período de tempo semelhante.
396
Estratégias de Escalonamento de Disco
•
Portanto, a variância pode ser vista como uma medida de justiça e de
previsibilidade.
•
Desejamos uma política de escalonamento que minimize a variância (ou que
pelo menos a mantenha em níveis razoáveis) para evitar tempos de serviço
imprevisíveis.
•
Em um sistema importante de negócios, como um servidor Web, a alta
variância nos tempos de resposta poderá resultar em perdas de vendas se, por
exemplo, as requisições dos usuários na compra de produtos forem adiadas
indefinidamente ou sofrerem atrasos longos.
•
Em sistemas de missão crítica, o resultado de tal atraso poderá ser catastrófico.
397
Estratégias de Escalonamento de Disco
•
As transparências seguintes descrevem diversas políticas comuns de
escalonamento.
•
Usaremos o conjunto de requisições do disco ilustrada na figura a seguir para
demonstrar o resultado de cada política sobre uma série arbitrária de
requisições.
•
O intuito da série arbitrária de requisições é demonstrar como cada política
ordena as requisições do disco, e não indicar necessariamente o desempenho
relativo de cada política em um sistema real.
398
Estratégias de Escalonamento de Disco
•
Nos exemplos apresentados a seguir consideramos que o disco contém 100
cilindros numerados de 0 a 99 e que o cabeçote de leitura-escrita está
localizado inicialmente no cilindro 63, a menos que se afirme outra coisa.
•
Por questão de simplicidade, consideramos também que o escalonador de
disco determinou o número do cilindro correspondente a cada requisição.
399
Estratégias de Escalonamento de Disco
Cilindro 0 8
33
47 52
63
72
74
75
Cilindro 99
Braço do Disco
Prato
400
Estratégias de Escalonamento de Disco
FIFO ou FCFS
•
O escalonamento FCFS usa uma fila FIFO, de modo que as requisições são
atendidas na ordem em que chegam.
•
O FCFS é justo pois a posição de uma requisição na fila não é afetada por
requisições que chegam.
•
Isso garante que nenhuma requisição pode ser adiada indefinidamente, mas
também significa que o FCFS poderia realizar uma longa operação de busca
para atender à requisição seguinte à espera, mesmo que uma outra requisição
da fila estivesse mais próxima e pudesse ser atendida mais rapidamente.
•
Embora essa técnica incorra em baixa sobrecarga de tempo de execução, pode
resultar em baixo rendimento devido às longas operações de busca.
401
Estratégias de Escalonamento de Disco
FIFO ou FCFS
•
Quando as requisições estão uniformemente distribuídas sobre as superfícies
do disco, o escalonamento FCFS resulta em um padrão de busca aleatório,
porque ignora as relações posicionais entre as requisições pendentes.
•
Isso é aceitável quando a carga de um disco for leve.
•
Todavia, à medida que a carga cresce, o FCFS tende a saturar (ou seja,
sobrecarregar) o dispositivo e os tempos de resposta ficam maiores.
•
O padrão de busca aleatório do FCFS resulta em baixa variância (as
requisições que chegam não podem passar à frente das requisições à espera),
mas isso não serve de muito consolo para a requisição que está atrás na fila
enquanto o braço do disco vagueia executando uma tórrida “dança”.
402
Estratégias de Escalonamento de Disco
FIFO ou FCFS
•
•
•
FIFO ou FCFS (Primeiro a chegar, primeiro a ser atendido).
Sequência: 33, 72, 47, 8, 99, 74, 52, 75
Posição inicial do cabeçote do disco: 63
0
8
33
47 52
63
72
74
75
99
403
Estratégias de Escalonamento de Disco
SSTF
•
O escalonamento do tipo “tempo de busca mais curto primeiro” (Shortest-SeekTime-First – SSTF) atende à requisição seguinte que estiver mais próxima do
cilindro em que o cabeçote de leitura-escrita estiver no momento (assim, incorre
em tempo de busca mais curto), mesmo que ela não seja a primeira da fila.
•
O SSTF não garante justiça e pode causar adiamento indefinido, porque seu
padrão de busca tende a ser altamente localizado, o que pode levar a tempos
de resposta insatisfatórios para requisições que estejam nas trilhas mais
internas e mais externas.
•
Reduzindo os tempos médios de busca, o SSTF consegue taxas mais altas de
rendimento do que o FCFS, e os tempos médios de resposta tendem a ser mais
baixos para cargas moderadas.
404
Estratégias de Escalonamento de Disco
SSTF
•
Uma desvantagem significativa é que ele resulta em variâncias mais altas dos
tempos de resposta por causa da discriminação contra as trilhas mais externas
e mais internas, no limite, poderia ocorrer a inanição de requisições que
estivessem longe do cabeçote de leitura-escrita se as novas requisições que
chegassem tendessem a se aglomerar perto dos cilindros do meio.
•
A variância alta é aceitável em sistemas de processamento em lote, nos quais o
rendimento e os tempos médios de resposta são metas mais importante.
•
Contudo, o SSTF é inadequado para sistemas interativos, nos quais o sistema
deve garantir que cada usuário tenha tempos de resposta imediatos,
previsíveis.
405
Estratégias de Escalonamento de Disco
SSTF
•
•
•
SSTF (Tempo de Busca mais Curto Primeiro).
Sequência: 33, 72, 47, 8, 99, 74, 52, 75
Posição inicial do cabeçote do disco: 63
0
8
33
47 52
63
72
74
75
99
406
Estratégias de Escalonamento de Disco
SCAN
•
Denning desenvolveu a estratégia de escalonamento de disco SCAN para
reduzir a injustiça e a variância de tempos de resposta exibidas pelo SSTF.
•
O SCAN escolhe a requisição que requer a menor distância de busca em uma
direção preferida.
•
Assim, se a direção preferida no momento for para fora, a estratégia SCAN
escolherá a distância de busca mais curta na direção para fora.
•
O SCAN não muda sua direção preferida até chegar ao cilindro mais externo ou
mais interno.
•
Nesse sentido, ela é denominada algoritmo do elevador, pois um elevador
continua atendendo a requisições em uma só direção antes de revertê-la.
•
O SCAN comporta-se de modo muito semelhante à SSTF em termos de alto
rendimento e bons tempos médios de resposta.
407
Estratégias de Escalonamento de Disco
SCAN
•
Entretanto, pelo fato dessa estratégia garantir que todas as requisições em uma
dada direção serão atendidas antes das requisições da direção oposta, ela
oferece uma variância de tempos de resposta menor do que a SSTF.
•
O SCAN, assim como a SSTF, é uma estratégia dirigida a cilindros.
•
Pelo fato de na estratégia SCAN os cabeçotes de leitura-escrita oscilarem entre
extremidades opostas de cada prato, as trilhas mais externas são visitadas com
menos frequência do que as da faixa do meio, mas, em geral, mais
frequentemente do que seriam usando SSTF.
•
Em decorrência de as requisições que chegam poderem ser atendidas antes
das que estão à espera, ambas, SSTF e SCAN, podem sofrer adiamento
indefinido.
408
Estratégias de Escalonamento de Disco
SCAN
•
•
•
•
SCAN
Sequência: 33, 72, 47, 8, 99, 74, 52, 75
Posição inicial do cabeçote do disco: 63
Sentido de descida.
0
8
33
47 52
63
72
74
75
99
409
Estratégias de Escalonamento de Disco
C–SCAN
•
Na modificação SCAN Circular (C-SCAN) da estratégia de escalonamento de
disco SCAN, o braço movimenta--se do cilindro mais externo para o cilindro
mais interno atendendo primeiro a requisições segundo a estratégia de busca
mais curta.
•
Quando o braço tiver concluído sua varredura para dentro, ele pulará (sem
atender a requisições) para o cilindro mais externo e retomará sua varredura
para dentro processando requisições.
•
O C-SCAN mantém altos níveis de rendimento e, ao mesmo tempo, limita ainda
mais a variância de tempos de resposta impedindo a discriminação contra os
cilindros mais internos e mais externos.
410
Estratégias de Escalonamento de Disco
C–SCAN
•
Como acontece com a SCAN, as requisições na C-SCAN podem ser adiadas
indefinidamente se chegarem requisições ao mesmo cilindro continuamente
(embora tal coisa seja menos provável do que com SCAN ou SSTF).
•
Resultados de simulações apresentados na literatura indicam que a melhor
política de escalonamento de disco poderia funcionar em dois estágios.
•
Sob uma carga leve, a política SCAN é melhor.
•
Sob cargas de médias a pesadas, o C-SCAN e outras adaptações da política
SCAN dão melhores resultados.
•
O C-SCAN com otimização rotacional trata condições pesadas efetivamente.
411
Estratégias de Escalonamento de Disco
C–SCAN
•
•
•
C-SCAN (SCAN Circular)
Sequência: 33, 72, 47, 8, 99, 74, 52, 75
Posição inicial do cabeçote do disco: 63
0
8
33
47 52
63
72
74
75
99
412
Estratégias de Escalonamento de Disco
FSCAN
•
As modificações FSCAN e SCAN de n-fases da estratégia SCAN eliminam a
possibilidade de requisições adiadas indefinidamente.
•
O FSCAN usa a estratégia SCAN para atender somente às requisições que
estão à espera quando começa uma varredura particular (o 'F', de 'freezing'
quer dizer 'congelar', ou melhor, paralisar a fila de requisições em determinado
instante).
•
Requisições que chegam durante uma varredura são agrupadas e ordenadas
para serviço ótimo durante o retorno da varredura.
413
Estratégias de Escalonamento de Disco
FSCAN
•
•
•
•
•
FSCAN (Freezing SCAN)
Sequência: 33, 72 , 47, 8, 99 , 74, 52, 75 , 37, 80
Posição inicial do cabeçote do disco: 63
Requisição para 37 chega enquanto 47 é processada.
Requisição para 80 chega enquanto 72 é processada.
0
8
33 37
47 52
63
72
74
75
80
99
414
Estratégias de Escalonamento de Disco
SCAN de n-fases
•
O SCAN de n-fases atende às primeiras n requisições da fila usando a
estratégia SCAN.
•
Quando a varredura estiver concluída, as n requisições seguintes serão
atendidas.
•
Requisições que chegam são colocadas no final da fila de requisições.
•
O SCAN de n-fases pode ser ajustado variando o valor de n.
•
Quando n = 1, ela degenera para FCFS.
•
Quando n tender ao infinito, a SCAN de n-fases degenera para SCAN.
415
Estratégias de Escalonamento de Disco
SCAN de n-fases
•
FSCAN e SCAN de n-fases proporcionam bom desempenho devido ao alto
rendimento e aos baixos tempos médio de resposta.
•
Por impedirem o adiamento indefinido, a característica que as distingue é uma
menor variância de tempos de resposta do que as da SSTF e da SCAN,
especialmente quando as requisições são adiadas indefinidamente sob essas
duas últimas estratégias.
416
Estratégias de Escalonamento de Disco
SCAN de n-fases
•
•
•
•
•
SCAN de n-fases (neste exemplo n = 3)
)
Sequência:(33, 72, 47,) (8, 99, 74,)(52, 75 , 37,)(80
Posição inicial do cabeçote do disco: 63
Requisição para 37 chega enquanto 47 é processada.
Requisição para 80 chega enquanto 72 é processada.
0
8
33 37
47 52
63
72
74
75
80
99
417
Estratégias de Escalonamento de Disco
LOOK
•
A variação LOOK da estratégia SCAN examina antecipadamente (look ahead) o
final da varredura em curso para determinar a próxima requisição a atender.
•
Se não houver mais nenhuma requisição na direção em curso, a LOOK muda a
direção preferida e inicia a próxima varredura.
•
Nesse sentido, é adequado denominar essa estratégia de algoritmo do
elevador, pois um elevador continua em uma direção até chegar à última
requisição naquela direção e, então, inverte a direção.
•
Essa estratégia elimina operações de buscas desnecessárias exibidas por
outras variações da estratégia SCAN.
418
Estratégias de Escalonamento de Disco
LOOK
•
A variação LOOK circular (C-LOOK) da estratégia LOOK usa a mesma técnica
da C-SCAN para reduzir a tendência contra requisições localizadas nas
extremidades dos pratos.
•
Quando não houver mais nenhuma requisição em uma varredura para dentro
em curso, o cabeçote de leitura-escrita passará para a requisição que estiver
mais próxima do cilindro mais externo (sem atender a requisições entre as duas
posições) e iniciará a varredura seguinte.
•
A política C-LOOK é caracterizada por uma variância de tempos de resposta
potencialmente mais baixa em comparação com a LOOK e por alto rendimento
(embora geralmente mais baixo do que o da LOOK).
419
Estratégias de Escalonamento de Disco
LOOK
•
•
•
LOOK
Sequência: 33, 72, 47, 8, 99, 74, 52, 75
Posição inicial do cabeçote do disco: 63
0
8
33
47 52
63
72
74
75
99
420
Exercícios
1- (Questão 48 – Transpetro – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
Qual a sequência esperada de leitura de blocos de um disco, usando o algoritmo do elevador, quando, após serem lidos primeiro o
bloco 8 e depois o bloco 10, se encontram na fila de espera os blocos 12, 3, 54, 25, 49, 6 e 15?
a)
b)
c)
d)
e)
6, 3, 12, 15, 25, 49 e 54
12, 3, 54, 25, 49, 6 e 15
12, 15, 6, 3, 25, 49 e 54
12, 15, 25, 49, 54, 6 e 3
54, 49, 25, 15, 12, 6 e 3
421
Exercícios
2- (Questão 32 – Petrobrás – Profissional Junior – Analista de Sistemas – Infraestrutura – ano 2011 – Cesgranrio)
No contexto de sistemas operacionais, o algoritmo circular do elevador (C-SCAN) é usado no escalonamento de acessos a discos.
Considere que a lista de requisições de acesso pendentes às trilhas de um disco seja composta pelos seguintes números de trilhas:
90, 40, 0, 10, 65. Considere também que o número da trilha sobre a qual a cabeça de leitura está posicionada seja 25, e que o
movimento do braço aconteça em direção às trilhas de números maiores.
Nesse contexto, qual é a sequência de números de trilhas servidas?
a)
b)
c)
d)
e)
e)
0, 10, 40, 65, 90
10, 65, 90, 40, 0
40, 65, 90, 0, 10
65, 90, 40, 0, 10
40, 65, 90, 10, 0
90, 40, 0, 10, 65 original da questão
422
Exercícios
3- (Questão 34 – BNDES – Analista de Sistemas Júnior – Desenvolvimento – ano 2011 – Cesgranrio)
Uma das responsabilidades do sistema operacional é usar o hardware com eficiência. Para as unidades de disco magnético, isso
significa ter um rápido tempo de acesso e largura de banda de disco. Técnicas de escalonamento de disco podem ser utilizadas
para melhorar o tempo de busca, que é o tempo utilizado pelo braço do disco para mover as cabeças para o cilindro que contém o
setor desejado.
Qual a técnica de escalonamento na qual o braço do disco percorre continuamente todo o disco, iniciando em uma ponta e indo
em direção à outra ponta, atendendo os pedidos ao longo do percurso assim que chega em cada cilindro, e que inverte a direção
do percurso de atendimento quando atinge uma das pontas?
a)
b)
c)
d)
e)
SSTF
SCAN
C-SCAN
C-LOOK
FCFS
423
Exercícios
4- (Questão 33 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2008 – Cesgranrio)
Suponha que determinada unidade de disco tenha 4.000 cilindros numerados de 0 a 3999. A unidade atualmente está atendendo a
uma requisição no cilindro 53 e a requisição anterior foi no cilindro 55. Sabe-se que a unidade de disco utiliza o escalonamento
SCAN e que a fila de requisições pendentes é:
98, 183, 37, 122, 11, 124, 60 e 67
Qual das requisições pendentes será a segunda a ser atendida?
a)
b)
c)
d)
e)
11
37
60
67
98
424
RAID
425
RAID
•
Redundant Array of Independent Drives (RAID) é um meio de se criar um subsistema de armazenamento composta por vários discos individuais, com a
finalidade de ganhar segurança e desempenho.
•
O sistema RAID consiste em um conjunto de dois ou mais discos rígidos com
dois objetivos básicos:
1. Tornar o sistema de disco mais rápido (isto é, acelerar o carregamento de
dados do disco), através de uma técnica chamada divisão de dados (data
striping ou RAID 0);
2. Tornar o sistema de disco mais seguro, através de uma técnica chamada
espelhamento (mirroring ou RAID 1).
Essas duas técnicas podem ser usadas isoladamente ou em conjunto.
426
RAID 0 – Striping ou Distribuição
•
No striping, ou distribuição, os dados são subdivididos em segmentos
consecutivos (stripes, ou faixas) que são escritos seqüencialmente através de
cada um dos discos de um array, ou conjunto.
•
Cada segmento tem um tamanho definido em blocos. A distribuição, ou
striping, oferece melhor desempenho comparado a discos individuais, se o
tamanho de cada segmento for ajustado de acordo com a aplicação que
utilizará o conjunto, ou array.
•
No caso da aplicação armazenar pequenos registros de dados, preferem-se
segmentos grandes.
•
Se o tamanho de segmento para um disco é grande o suficiente para conter
um registro inteiro, os discos do array podem responder independentemente
para as requisições simultâneas de dados.
427
RAID 0 – Striping ou Distribuição
•
Caso contrário, se a aplicação armazenar grandes registros de dados, os
segmentos de pequeno tamanho são os mais apropriados.
•
Se um determinado registro de dados está armazenado em vários discos do
array, o conteúdo do registro pode ser lido em paralelo, aumentando o
desempenho total do sistema.
•
Uma vantagem em ter dois (ou mais) HD’s ligados em RAID 0, é a questão
de espaço de armazenamento, que ao contrário do RAID 1 (veremos mais
adiante), o RAID 0 “soma” o espaço dos HD’s.
•
Por exemplo, se tivermos ligado numa máquina 2 HD’s de 80GB, a
capacidade total que poderemos usar será de 160GB.
428
RAID 0 – Striping ou Distribuição
•
•
Vantagens:
–
Acesso rápido as informações (até 50% mais rápido).
–
Custo baixo para expansão de memória.
Desvantagens:
–
Caso algum dos setores de algum dos HD’s venha a apresentar perda de
informações, o mesmo arquivo que está dividido entre os mesmos setores
dos demais HD’s não terão mais sentido existir, pois uma parte do arquivo
foi corrompida, ou seja, caso algum disco falhe, não tem como recuperar.
–
Não é usado paridade.
429
RAID 0 – Striping ou Distribuição
RAID 0
A1
A2
A3
A4
A5
A6
A7
A8
430
RAID 1 – Mirroring ou Espelhamento
•
RAID 1 é o nível de RAID que implementa o espelhamento de disco, também
conhecido como mirror.
•
Para esta implementação são necessários no mínimo dois discos.
•
O funcionamento deste nível é simples: todos os dados são gravados em dois
discos diferentes; se um disco falhar ou for removido, os dados preservados no
outro disco permitem a não descontinuidade da operação do sistema.
•
Apesar de muitas implementações de RAID 1 envolverem dois grupos de
dados (daí o termo espelho ou mirror), três ou mais grupos podem ser criados
se a alta confiabilidade for desejada.
•
O RAID 1 é o que oferece maior segurança, pois toda informação é guardada
simultaneamente em dois ou mais discos.
431
RAID 1 – Mirroring ou Espelhamento
•
Se ocorrer uma falha num dos discos do array, o sistema pode continuar a
trabalhar sem interrupções, utilizando o disco que ficou operacional.
•
Os dados então são reconstruídos num disco de reposição (spare disk) usando
dados do(s) disco(s) sobrevivente(s).
•
O processo de reconstrução do espelho tem algum impacto sobre o
desempenho de I/O do array, pois todos os dados terão de ser lidos e copiados
do(s) disco(s) intacto(s) para o disco de reposição.
•
Com o RAID 1 consegue-se duplicar o desempenho na leitura de informação,
pois as operações de leitura podem ser repartidas pelos dois discos.
•
RAID 1 oferece alta disponibilidade de dados, porque no mínimo dois grupos
completos são armazenados.
432
RAID 1 – Mirroring ou Espelhamento
•
Conectando os discos primários e os discos espelhados em controladoras
separadas, pode-se aumentar a tolerância a falhas pela eliminação da
controladora como ponto único de falha.
•
Entre os não-híbridos, este nível tem o maior custo de armazenamento pois
estaremos utilizando dois ou mais discos para a mesma informação.
•
Este nível adapta-se melhor em pequenas bases de dados ou sistemas de
pequena escala que necessitem de confiabilidade.
433
RAID 1 – Mirroring ou Espelhamento
•
•
Vantagens:
–
Caso algum setor de um dos discos venha a falhar, basta recuperar o setor
defeituoso copiando os arquivos contidos do segundo disco.
–
Segurança nos dados (com relação a possíveis defeitos que possam
ocorrer no HD).
Desvantagens:
–
Custo relativamente alto se comparado ao RAID 0.
–
Ocorre aumento no tempo de escrita.
–
Não é usado paridade.
434
RAID 1 – Mirroring ou Espelhamento
RAID 1
A1
A1
A2
A2
A3
A3
A4
A4
435
RAID 2
•
RAID 2 é similar ao RAID 4, mas armazena informação ECC, que é a
informação de controle de erros, no lugar da paridade.
•
Este fato possibilita uma pequena proteção adicional, porém o RAID 2 ficou
obsoleto pelas novas tecnologias de disco que já possuem este tipo de
correção internamente.
•
O RAID 2 oferece uma maior consistência dos dados se houver queda de
energia durante a escrita
•
Baterias de segurança e um encerramento correto podem oferecer os mesmos
benefícios
436
RAID 2
•
Vantagem:
–
•
Usa ECC;
Desvantagem:
–
Hoje em dia há tecnologias melhores para o mesmo fim;
437
RAID 2
RAID 2
A1
A2
A3
EccA
B1
B2
B3
EccB
C1
C2
C3
EccC
D1
D2
D3
EccD
438
RAID 4
•
Funciona com três ou mais discos iguais.
•
Um dos discos guarda a paridade (uma forma de soma de segurança) da informação contida nos
discos.
•
Se algum dos discos avariar, a paridade pode ser imediatamente utilizada para reconstituir o seu
conteúdo.
•
Os discos restantes, usados para armazenar dados, são configurados para usarem segmentos
suficientemente grandes (tamanho medido em blocos) para acomodar um registro inteiro.
•
Isto permite leituras independentes da informação armazenada, fazendo do RAID 4 um array
perfeitamente ajustado para ambientes transacionais que requerem muitas leituras pequenas e
simultâneas.
•
O RAID 4 assim como outros RAID's, cuja característica é utilizarem paridade, usam um
processo de recuperação de dados mais envolvente que arrays espelhados, como RAID 1.
439
RAID 4
•
Este nível também é útil para criar discos virtuais de grande dimensão, pois
consegue somar o espaço total oferecido por todos os discos, exceto o disco de
paridade.
•
O desempenho oferecido é razoável nas operações de leitura, pois podem ser
utilizados todos os discos simultaneamente.
•
Sempre que os dados são escritos no array, as informações são lidas do disco de
paridade e um novo dado sobre paridade deve ser escrito para o respectivo disco
antes da próxima requisição de escrita ser realizada.
•
Por causa dessas duas operações de I/O, o disco de paridade é o fator limitante do
desempenho total do array.
•
Devido ao fato do disco requerer somente um disco adicional para proteção de
dados, este RAID é mais acessível em termos monetários que a implementação do
RAID 1.
440
RAID 4
•
•
Vantagens:
–
Taxa de leitura rápida;
–
Possibilidade do aumento de área de discos físicos.
Desvantagens:
–
Taxa de gravação lenta.
–
Em comparação com o RAID 1, em caso de falha do disco, a reconstrução
é difícil, pois o RAID 1 já tem o dado pronto no disco espelhado.
–
Tecnologia não mais usada por haver melhores para o mesmo fim.
441
RAID 4
RAID 4
A1
A2
A3
Ap
B1
B2
B3
Bp
C1
C2
C3
Cp
D1
D2
D3
Dp
442
RAID 5
•
O RAID 5 é frequentemente usado e funciona similarmente ao RAID 4, mas
supera alguns dos problemas mais comuns sofridos por esse tipo.
•
As informações sobre paridade para os dados do array são distribuídas ao
longo de todos os discos do array, ao invés de serem armazenadas num disco
dedicado, oferecendo assim mais desempenho que o RAID 4, e,
simultaneamente, tolerância a falhas.
•
O desempenho geral de um array RAID 5 é equivalente ao de um RAID 4,
exceto no caso de leituras sequenciais, que reduzem a eficiência dos
algoritmos de leitura por causa da distribuição das informações sobre paridade.
•
A informação sobre paridade é distribuída por todos os discos; perdendo-se
um, reduz-se a disponibilidade de ambos os dados e a paridade, até à
recuperação do disco que falhou.
443
RAID 5
•
Isto causa degradação do desempenho de leitura e de escrita.
•
Vantagem:
–
•
Leitura rápida (porém escrita não tão rápida).
Desvantagem:
–
Sistema complexo de controle dos HD's.
444
RAID 5
RAID 5
A1
A2
A3
Ap
B1
B2
Bp
B3
C1
Cp
C2
C3
Dp
D1
D2
D3
445
RAID 6
•
É um padrão relativamente novo, suportado por apenas algumas controladoras.
•
É semelhante ao RAID 5, porém usa o dobro de bits de paridade, garantindo a
integridade dos dados caso até 2 dos HDs falhem ao mesmo tempo.
•
Ao usar 8 HDs de 20 GB cada um em RAID 6, teremos 120 GB de dados e 40 GB
de paridade.
•
Vantagem:
–
•
Podem falhar 2 HD's ao mesmo tempo.
Desvantagens:
–
Precisa de N+2 HD's para implementar por causa dos discos de paridade.
–
Escrita lenta.
–
Sistema complexo de controle dos HD's.
446
RAID 0 + 1
•
O RAID 0 + 1 é uma combinação dos níveis 0 (Striping) e 1 (Mirroring), onde os
dados são divididos entre os discos para melhorar o rendimento, mas também
utilizam outros discos para duplicar as informações.
•
Assim, é possível utilizar o bom rendimento do nível 0 com a redundância do
nível 1.
•
No entanto, é necessário pelo menos 4 discos para montar um RAID desse
tipo.
•
Tais características fazem do RAID 0 + 1 o mais rápido e seguro, porém o mais
caro de ser implantado.
•
No RAID 0+1, se um dos discos vier a falhar, o sistema vira um RAID 0.
447
RAID 0 + 1
•
•
Vantagens:
–
Segurança contra perda de dados.
–
Pode falhar metade dos HD's ao mesmo tempo, porém deixando de ser
RAID 0 + 1.
Desvantagens:
–
Alto custo de expansão de hardware (custo mínimo = 2N HD's).
–
Os drivers devem ficar em sincronismo de velocidade para obter a máxima
performance.
448
RAID 0 + 1
RAID 1
RAID 0
RAID 0
A1
A2
A1
A2
A3
A4
A3
A4
A5
A6
A5
A6
A7
A8
A7
A8
449
RAID 1 + 0
•
O RAID 1+0, ou 10, exige ao menos 4 discos rígidos.
•
Cada par será espelhado, garantindo redundância, e os pares serão
distribuídos, melhorando desempenho.
•
Até metade dos discos pode falhar simultaneamente, sem colocar o conjunto a
perder, desde que não falhem os dois discos de um espelho qualquer — razão
pela qual usam-se discos de lotes diferentes de cada ‘lado’ do espelho.
•
É o nível recomendado para bases de dados, por ser o mais seguro e dos mais
velozes, assim como qualquer outro uso onde a necessidade de economia não
se sobreponha à segurança e desempenho.
450
RAID 1 + 0
•
•
Vantagens:
–
Segurança contra perda de dados.
–
Pode falhar metade dos HD's ao mesmo tempo.
Desvantagens:
–
Alto custo de expansão de hardware (custo mínimo = 2N HD's).
–
Os drivers devem ficar em sincronismo de velocidade para obter a máxima
performance.
451
RAID 1 + 0 ou RAID 10
RAID 0
RAID 1
RAID 1
A1
A1
A2
A2
A3
A3
A4
A4
A5
A5
A6
A6
A7
A7
A8
A8
452
Exercícios
1- (Questão 41 – BNDES – Profissional Básico – Análise de Sistemas – Suporte – ano 2013 – Cesgranrio)
RAID (Redundant Array of Inexpensive Disks) é uma tecnologia de armazenamento que permite combinar vários discos
individuais com o objetivo de fornecer maior segurança e/ou desempenho. Considere um sistema de armazenamento formado por
6 discos iguais (com capacidade total de 12TB) e que utilize a tecnologia RAID. Qual será a capacidade total disponível estimada
para armazenamento de dados significativos de acordo com a tecnologia especificada?
(Dado: No desenvolvimento da resolução do problema considere os bits de paridade como dados não significativos.)
a)
b)
c)
d)
e)
RAID 6 – 10TB
RAID 6 – 8TB
RAID 6 – 6TB
RAID 5 – 8TB
RAID 5 – 6TB
453
Exercícios
2- (Questão 27 – Petrobrás – Tecnologia da Informação – Análise de Infraestrutura – ano 2012 – Cesgranrio)
O RAID 5 é organizado de forma semelhante ao RAID 4, ou seja, com a intercalação de dados em tiras.
A diferença entre eles é que o RAID 5:
a)
b)
c)
d)
e)
armazena as tiras de paridade no disco de paridade.
armazena as tiras de paridade no disco de paridade e as distribui por todos os discos.
armazena as tiras de paridade no disco de paridade ou as distribui por todos os discos.
distribui as tiras de paridade por todos os discos.
distribui as tiras de paridade por todos os discos e, opcionalmente, armazena-as no disco de paridade.
454
Exercícios
3- (Questão 63 – Liquigás – Profissional Junior – Tecnologia da Informação – Desenvolvimento – ano 2012 – Cesgranrio)
A principal diferença entre os sistemas RAID 4 e RAID 5 é que no RAID 4
a)
b)
c)
d)
e)
os bits de paridade são armazenados em um disco separado, enquanto que no RAID 5 os bits de paridade são espalhados
pelos vários discos.
os bits de paridade são desprezados, enquanto que no RAID 5 eles são utilizados.
o número máximo de discos utilizados é 4, enquanto que no RAID 5 o número máximo de discos é 5.
a intercalação dos bits nos vários discos é realizada bit a bit, enquanto que no RAID 5 é realizada por blocos de bits.
utiliza-se apenas a técnica de espelhamento sem intercalação e sem paridade, enquanto que no RAID 5 utiliza-se apenas a
intercalação sem paridade.
455
Exercícios
4- (Questão 68 – Liquigás – Profissional Junior – Tecnologia da Informação – Análise de Sistemas – ano 2012 –
Cesgranrio)
Discos rígidos de armazenamento têm continuamente aumentado de capacidade, ao mesmo tempo que diminuem o tamanho e os
custos. Tornou-se economicamente viável colocar diversos discos em paralelo em um mesmo sistema, seja para aumentar a
velocidade do acesso aos dados pelo paralelismo, seja para aumentar a confiabilidade devido à possibilidade de replicação dos
dados ou, ainda, para alguma combinação das duas coisas.
Nesse contexto, sistemas baseados em RAID oferecem uma série de possibilidades, dentre as quais o RAID nível 1, cuja principal
característica é o(a)
a)
b)
c)
d)
e)
armazenamento de blocos consecutivos dos arquivos em discos diferentes, permitindo a recuperação em paralelo das
informações.
uso de um disco extra com informações de paridade, o que aumenta a confiabilidade dos dados gravados.
espelhamento, que faz com que o conteúdo de um disco rígido seja inteiramente copiado para outro.
uso de códigos corretores de erros, como os códigos de Reed-Solomon.
possibilidade de correção de erros nos dados a partir de uma série de bits de paridade e informações duplicadas presentes em
vários discos.
456
Exercícios
5- (Questão 21 – Casa da Moeda – Suporte em TI – ano 2012 – Cesgranrio)
Um administrador deseja montar um arranjo RAID com 4 discos de 500GB. Analisando as configurações possíveis, concluiu que
a capacidade disponível proporcionada por esse arranjo será de
a)
b)
c)
d)
e)
500 GB, usando RAID 1
1 TB, usando RAID 5
1 TB, usando RAID 10
1,5 TB, usando RAID 0
2 TB, usando RAID 1
457
Exercícios
6- (Questão 61 – Petrobrás – Profissional Junior – Analista de Sistemas – Infraestrutura – ano 2011 – Cesgranrio)
Um computador possui 20 discos rígidos de 3TB.
Quanto espaço do total será usado para paridade, no caso de se usar RAID5 ou RAID6, respectivamente?
a)
b)
c)
d)
e)
1TB e 3TB
3TB e 3TB
3TB e 6TB
6TB e 6TB
6TB e 9TB
458
Exercícios
7- (Questão 44 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2010 – Cesgranrio)
Victor está configurando o RAID-5 em um servidor utilizando 5 discos rígidos, que possuem 50 GB cada um. Qual porcentagem
de redundância Victor prevê para essa configuração?
a)
b)
c)
d)
e)
20%
32%
43%
50%
67%
459
Exercícios
8- (Questão 38 – BNDES – Profissional Básico – Análise de Sistemas – Suporte – ano 2008 – Cesgranrio)
Oito discos rígidos, cada um com 1 TB de capacidade, formam um arranjo do tipo RAID 5. A esse respeito, considere as
afirmativas a seguir.
I.
II.
III.
Caso dois discos falhem simultaneamente, o desempenho de leitura, em média, será 25% menor, mas não haverá
perda de dados.
Nesse arranjo, 1 TB é utilizado para dados de redundância e, portanto, o espaço em disco útil é de 7 TB.
O disco destinado à paridade efetua muitas operações de escrita e, por isso, é recomendável que possua, pelo menos,
1 GB de cache de escrita.
Está(ão) correta(s) somente a(s) afirmativa(s)
a)
b)
c)
d)
e)
I
II
III
I e II
I e III
460
Exercícios
9- (Questão 48 – Petrobrás – Analista de Sistemas Júnior – Infraestrutura – ano 2008 – Cesgranrio)
Suponha um servidor S conectado diretamente a um storage com 10 discos de 200 GB cada, configurados em um arranjo RAID 5.
Qual o espaço, em GB, disponível para o sistema operacional de S?
a)
b)
c)
d)
e)
200
500
1.000
1.800
2.000
461
Exercícios
10- (Questão 61 – TCE-RO – Analista de Informática – ano 2007 – Cesgranrio)
Quatro discos rígidos, cada um com 100 GB de capacidade, formam um arranjo RAID 0 em um computador. A quantidade de
espaço em disco disponível, em GB, para o sistema operacional é de:
a)
b)
c)
d)
e)
200
250
300
350
400
462
Exercícios
11- (Questão 43 – TRT 9ª Região – Analista Judiciário – Tecnologia da Informação – ano 2013 – FCC)
Este é um dos modos mais utilizados em servidores com um grande número de HDs. Ele usa um sistema de paridade para manter a
integridade dos dados. Os arquivos são divididos em fragmentos e, para cada grupo de fragmentos, é gerado um fragmento
adicional, contendo códigos de paridade. Os códigos de correção são espalhados entre os discos. Dessa forma, é possível gravar
dados simultaneamente em todos os HDs, melhorando o desempenho. Para sua utilização são necessários ao menos 3 discos. Esta
descrição se refere ao modo de armazenamento conhecido por RAID
a)
b)
c)
d)
e)
0.
1.
5.
2.
10.
463
Exercícios
12- (Questão 52 – TRT 2ª Região – Analista Judiciário – Tecnologia da Informação – ano 2014 – FCC)
A fórmula para calcular a capacidade de armazenamento disponível numa configuração RAID nível 3, considerando C como a
capacidade disponível, n como o número de discos e d como a capacidade do disco, é
a)
b)
c)
d)
e)
C = n*d
C = (n-3)*d
C = n*d/2
C = (n-1)*d
C = (n+1)*d
464
Exercícios
13- (Questão 55 – TRT 5ª Região – Analista Judiciário – Tecnologia da Informação – ano 2013 – FCC)
A tecnologia RAID divide ou duplica a tarefa de um disco rígido por mais discos, de forma a melhorar o desempenho ou a criar
redundância de dados, em caso de uma avaria na unidade. A seguir estão descritos dois níveis de RAID:
I.
II.
É uma boa opção se a segurança for mais importante do que a velocidade. Os discos devem ter a mesma capacidade. A
capacidade de armazenamento é calculada através da multiplicação do número de unidades pela capacidade do disco
dividido por 2.
É ideal para os usuários que necessitam o máximo de velocidade e capacidade. Todos os discos devem ter a mesma
capacidade. A capacidade de armazenamento é calculada através da multiplicação do número de unidades pela
capacidade do disco. Se um disco físico no conjunto falhar, os dados de todos os discos tornam-se inacessíveis.
Os níveis de RAID descritos em I e II são, respectivamente,
a)
b)
c)
d)
e)
RAID 10 e RAID 5.
RAID 1 e RAID 3.
RAID 3 e RAID 5.
RAID 3 e RAID 0.
RAID 1 e RAID 0.
465
Exercícios
14- (Questão 53 – Defensoria Pública de SP – Engenheiro de Redes – ano 2013 – FCC)
Considere as afirmativas sobre RAID (Redundant Array of Independent Disks).
I.
II.
III.
IV.
É um sistema de armazenamento composto por vários discos rígidos, interligados entre si de várias formas distintas,
com o objetivo final de aumentar a segurança dos dados, através de técnicas de tolerância a falhas, e de melhorar o
desempenho, porém nem todas as implementações de RAID oferecem tolerância a falhas e melhoram o desempenho.
A implementação de um RAID pode ser efetuada por software ou por hardware. A implementação baseada em
hardware é menos indicada quando se deseja obter, além da tolerância a falhas, melhoria no desempenho das
operações de leitura e escrita em disco.
Existem vários níveis de RAID, com diferenças entre eles. Algumas diferenças são: a distribuição dos dados nos
discos, a quantidade de discos necessários para a implementação da solução e maior ou menor tolerância a falhas.
Em RAIDs com redundância, a segurança aumenta consideravelmente, protegendo os discos contra todo tipo de falhas,
como cortes de energia e erros de sistemas operacionais. Este tipo de tecnologia é uma das melhores formas para
garantir a segurança e disponibilidade dos dados.
Está correto o que se afirma em
a)
b)
c)
d)
e)
I e II, apenas.
I e III, apenas.
I, II e III, apenas.
I, III e IV, apenas.
I, II, III e IV.
466
Sistemas Distribuídos
467
Sistemas Distribuídos
•
Um sistema distribuído é um conjunto de sistemas autônomos, interconectados por uma
rede de comunicação e que funciona como se fosse um sistema fortemente acoplado.
•
Cada componente de um sistema distribuído possui seus próprios recursos, como
processadores, memória principal, dispositivos de E/S, sistema operacional e espaço de
endereçamento.
•
Os tipos de sistemas operacionais que compõem um sistema distribuído não precisam
ser necessariamente homogêneos.
•
O que diferencia um sistema distribuído dos demais sistemas fracamente acoplados é a
existência de um relacionamento mais forte entre os seus componentes.
468
Sistemas Distribuídos
•
Podemos definir um sistema distribuído como sendo um sistema fracamente acoplado
pelo aspecto de hardware e fortemente acoplado pelo aspecto de software.
•
Para o usuário e suas aplicações, é como se não existisse uma rede de computadores
independente, mas sim um único sistema fortemente acoplado.
•
Este conceito é chamado de imagem única do sistema (single system image).
469
Sistemas Distribuídos
•
Podemos definir um sistema distribuído como sendo um sistema fracamente acoplado
pelo aspecto de hardware e fortemente acoplado pelo aspecto de software.
•
Para o usuário e suas aplicações, é como se não existisse uma rede de computadores
independente, mas sim um único sistema fortemente acoplado.
•
Este conceito é chamado de imagem única do sistema (single system image).
470
Sistemas Distribuídos
Imagem Única
do Sistema
Usuário
471
Sistemas Distribuídos
•
Os componentes de um sistema distribuído podem estar conectados em um ambiente de
uma rede local ou através de uma rede distribuída.
•
Na verdade, a localização de um componente não deve constituir um fator a ser levado
em consideração, bem como as características físicas da rede.
•
A escalabilidade dos sistemas distribuídos é, a princípio, ilimitada, pois basta
acrescentar novos componentes à rede em função da necessidade.
•
Os sistemas distribuídos permitem que uma aplicação seja dividida em diferentes partes,
que se comunicam através de linhas de comunicação, podendo cada parte ser executada
em qualquer processador de qualquer sistema (aplicações distribuídas).
•
Para que isto seja possível, o sistema deve oferecer transparência e tolerância à falhas
em vários níveis, a fim de criar a ideia de imagem única do sistema.
472
Sistemas Distribuídos
•
Alguns benefícios obtidos com a utilização de sistemas distribuídos são listados a seguir:
– Escalabilidade Absoluta: há a possibilidade de criar sistemas de grandes proporções, cuja
capacidade de computação ultrapassa, várias vezes, a capacidade individual de alguns
supercomputadores;
– Escalabilidade Incremental: um sistema é configurado de maneira que seja possível adicionar
novos sistemas, expandindo-o de forma incremental. Com isso, um usuário pode começar com
um sistema mais simples e expandi-lo na proporção que aumentam suas necessidades, sem ter
que efetuar uma expansão mais radical, no qual todo sistema é completamente substituído por
um sistema de maior porte;
473
Sistemas Distribuídos
– Alta Disponibilidade: devido à independência de recursos físicos que compõem o sistema,
como exemplo o nó, uma provável falha não significa perda total de serviço. Em algumas
configurações, a tolerância à falhas é tratada de maneira automática;
– Melhor relação custo/desempenho: devido à relativa facilidade em construir o sistema a partir
de elementos ou nós comercialmente disponíveis, é possível obter um sistema com poder de
computação igual ou superior a um supercomputador, por exemplo, com custo muito menor.
474
Sistemas Distribuídos
Transparência
•
Em sistemas distribuídos, o conceito de transparência torna-se fator-chave, pois, a partir
dele, um conjunto de sistemas independentes parece ser um sistema único, criando a
ideia da imagem única do sistema.
•
A seguir, são apresentados os vários aspectos relativos à transparência em sistemas
distribuídos:
–
Transparência de acesso: é a possibilidade de acesso a objetos locais ou remotos de maneira
uniforme;
–
Transparência de localização: significa que o usuário não deve se preocupar com a
localização dos recursos de que necessita. Os recursos são acessados por nomes lógicos e não
por nomes físicos, criando assim a independência da localização dos recursos;
–
Transparência de migração: permite que os recursos sejam fisicamente movidos para outro
sistema, sem que os usuários e suas aplicações sejam afetados;
475
Sistemas Distribuídos
Transparência
–
Transparência de replicação: permite a duplicação de informações, com o objetivo de aumentar
a disponibilidade e o desempenho do sistema, de forma sincronizada e consistente;
–
Transparência de concorrência: permite que vários processos sejam executados paralelamente e
os recursos sejam compartilhados de forma sincronizada e consistente;
–
Transparência de paralelismo: possibilita que uma aplicação paralela seja executada em
qualquer processador de qualquer sistema, como em um sistema fortemente acoplado;
–
Transparência no desempenho: oferece aos usuários tempos de resposta independentes de
alterações na estrutura do sistema ou na sua carga. Além disso, operações realizadas remotamente
não devem apresentar resultados piores do que as realizadas localmente;
–
Transparência de escalabilidade: permite que o sistema cresça sem a necessidade de alterar as
aplicações e seus algoritmos;
–
Transparência a falhas: garante que, em caso de falha de um sistema, as aplicações continuem
disponíveis sem interrupção.
476
Sistemas Distribuídos
Transparência
•
Em um sistema distribuído, quando um usuário se conecta ao sistema não há
necessidade de especificar o nome do componente a que estará conectado.
•
Independentemente da localização física dos objetos, o usuário terá acesso a todos os
seus arquivos, diretórios e demais recursos de forma transparente.
•
Ao executar uma aplicação, o usuário não saberá em quais ou quantos componentes a
sua aplicação foi dividida.
•
Caso um erro ocorra em um desses componentes, o usuário não terá conhecimento,
ficando como responsabilidade do sistema operacional a resolução de todos os
problemas.
477
Sistemas Distribuídos
Tolerância à Falhas
•
Para que um sistema distribuído possa oferecer transparência é preciso que o sistema
implemente tolerância à falhas de hardware e, principalmente, de software.
•
Neste caso, o sistema deve garantir que, em caso de problema em um de seus
componentes, as aplicações continuem sendo processadas sem qualquer interrupção ou
intervenção do usuário, de forma totalmente transparente.
•
A tolerância à falhas de hardware é facilmente oferecida utilizando-se componentes
redundantes, como fontes duplicadas, vários processadores, memória com detecção e
correção de erro e técnicas de RAID.
•
Em sistemas distribuídos, a tolerância à falhas de hardware passa pela redundância dos
meios de conexão entre os sistemas, como placas de rede, linhas de comunicação e
dispositivos de rede.
478
Sistemas Distribuídos
Tolerância à Falhas
•
A tolerância à falhas de software é bem mais complexa de implementar.
•
Quando uma falha deste tipo ocorre, como uma falha no sistema operacional, a
aplicação deve continuar sem que o usuário perceba qualquer problema.
•
Enquanto em uma rede de computadores o usuário deverá se reconectar a um outro
sistema em funcionamento e reiniciar sua tarefa, em um sistema distribuído o problema
deve ser resolvido de forma transparente, mantendo a integridade e consistência dos
dados.
•
Com a tolerância à falhas, é possível também oferecer alta disponibilidade e
confiabilidade.
479
Sistemas Distribuídos
Tolerância à Falhas
•
Como existem sistemas autônomos, em caso de falha de um dos componentes um outro
sistema poderá assumir suas funções, sem a interrupção do processamento.
•
Como as aplicações estão distribuídas por diversos sistemas, caso ocorra algum
problema com um dos componentes é possível que um deles assuma de forma
transparente o papel do sistema defeituoso.
480
Sistemas Distribuídos
Imagem Única do Sistema
•
A maior dificuldade em implementar um sistema distribuído é a complexidade em criar
para os usuários e suas aplicações uma imagem única do sistema a partir de um conjunto
de sistemas autônomos.
•
Para conseguir criar um ambiente fisicamente distribuído e logicamente centralizado é
necessário um sistema operacional capaz de lidar com os diversos problemas de
comunicação existentes em um ambiente fracamente acoplado.
•
O sistema precisa oferecer tolerância à falhas de forma transparente, independente do
tipo da rede de comunicação.
•
Um problema encontrado em sistemas fortemente acoplados é o compartilhamento de
recursos de forma segura.
•
Em sistemas distribuídos, a utilização de recursos concorrentemente exige mecanismos
mais complexos e lentos para manter a integridade e a segurança dos dados.
481
Sistemas Distribuídos
Imagem Única do Sistema
•
Um dos grandes desafios para a adoção de sistemas distribuídos é a dificuldade no
desenvolvimento de aplicações paralelas.
•
Enquanto a programação em sistemas fortemente acoplados é relativamente
transparente, em sistemas distribuídos o desenvolvimento não é tão simples.
•
Apesar de algumas aplicações serem naturalmente paralelas, como ordenações e
processamento de imagens, desenvolver aplicações distribuídas exige uma grande
interação do programador com detalhes de codificação e escalonamento da aplicação.
482
Exercícios
1- (Questão 44 – Petrobrás – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
A organização de clusters constitui uma alternativa para os multiprocessadores simétricos.
Dois principais objetivos ou requisitos de projeto desse tipo de organização são a escalabilidade
a)
b)
c)
d)
e)
parcial e a média disponibilidade
parcial e a alta disponibilidade
incremental e a média disponibilidade
incremental e a alta disponibilidade
absoluta e a média disponibilidade
483
Exercícios
2- (Questão 54 – Transpetro – Analista de Sistemas Junior – Infraestrutura – ano 2012 – Cesgranrio)
A respeito de conceitos básicos de computação em aglomerados (Cluster) e de computação em grades (Grids), considere as
afirmações a seguir.
I.
II.
III.
Computação em grade (Grid Computing) é um modelo computacional capaz de alcançar uma alta taxa de
processamento dividindo as tarefas entre diversas máquinas que formam uma máquina virtual.
Computadores de baixo custo podem ser agrupados em clusters, gerando maior poder computacional.
É adequado construir um cluster de forma distribuída com seus nós situados em várias e diferentes localidades.
Está correto APENAS o que se afirma em
a)
b)
c)
d)
e)
I
II
III
I e II
II e III
484