Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos básicos
“abstração” e “gerência”
SO – Conceitos básicos
Abstração:
Funcionalidades.
Política X mecanismo
SO - Funcionalidades
Arquitetura física
S.O. – Estrutura do sistema
Memórias
S.O. – Estrutura do sistema
teclado 0060h-006Fh 1
barramento IDE primário 0170h-0177h 14
barramento IDE secundário 01F0h-01F7Fh 15
porta serial COM1 02F8h-02FFh 3
porta serial COM2 03F8h-03FFh 5
S.O. – Estrutura do sistema
Interrupções e exceções
H
a
r
Aplicação System Call Núcleo d
w
a
r
e
S.O. – Chamadas do sistema
A ativação de procedimentos do núcleo usando
interrupções de software é denominada chamada de
sistema (system call ou syscall). Os sistemas
operacionais definem chamadas de sistema para todas
as operações envolvendo o acesso a recursos de baixo
nível (periféricos, arquivos, etc) ou abstrações lógicas
(criação e finalização de tarefas, operadores de
sincronização e comunicação, etc). Geralmente as
chamadas de sistema são oferecidas para as aplicações
em modo usuário através de uma biblioteca do sistema
(system library), que prepara os parâmetros, invoca a
interrupção de software e retorna à aplicação os
resultados obtidos.
S.O. – Chamadas do sistema
S.O. – Chamadas do sistema
1. No nível usuário, a aplicação invoca a função read(fd, &buffer,
bytes) da biblioteca de sistema (no Linux é a biblioteca GNU C
Library, ou glibc; no Windows, essas funções são implementadas
pela API Win32).
Desvantagens:
O mal funcionamento de uma aplicação do
kernel pode se alastrar e levar o sistema ao
colapso (travamento ou instabilidade)
Manutenção mais complexa.
Evolução mais complexa.
S.O. - Arquiteturas
Sistemas monolíticos
Administrar
Camada 4 Programas de Usuário
dispositivos de
Gerência dos Dispositivos de E/S
Camada 3 Entrada/Saída
Comunicação operador-
Administra
Camada 2 processo comunicação
entre cada
Camada 1 Gerência de memória processo
Executivo
kernel
S.O. - Arquiteturas
Sistemas em camadas
Inconvenientes:
Vantagens:
Desvantagens:
Tipo I Tipo II
S.O. - Arquiteturas
Máquinas virtuais
Vantagens:
Desvantagens:
A principal desvantagem do uso de máquinas virtuais é o custo
adicional de execu- ção dos processos na máquina virtual em
comparação com a máquina real. Esse custo é muito variável,
podendo passar de 50% em plataformas sem suporte de hardware
à virtualização, como os PCs de plataforma Intel. Todavia,
pesquisas recentes têm obtido a redução desse custo a patamares
abaixo de 20%, graças sobretudo a ajustes no código do sistema
hospedeiro. Esse problema não existe em ambientes cujo
hardware suporta o conceito de virtualização, como é o caso dos
mainframes.
Sistemas Operacionais
Noções de processos
Prof. Diovani Milhorim
S.O. – Noções de processos.
O conceito de processo
Um programa é:
Imagem de um programa
Segmento de código
Conjunto de recursos de HW alocados pelo Sis. Operacional.
Registradores (PC, Stack Pointer…);
Espaço de endereçamento (memória);
Espaço no disco (arquivos de E/S).
Unidade de escalonamento
Estado;
S.O. – Noções de processos.
O processo do ponto de vista do S.O.
Classificação:
Mecanismos locais
Pipes nomeados (FIFO)
Pipes unidireccionais
Filas de mensagens
Memória Compartilhada
Mecanismos cliente/servidor
Sockets
Remote Procedure Calls
S.O. – Noções de processos.
Relacionamento entre processos
Grupo de processos
Compartilhamento de recursos
Baseados em hierarquia de processos:
Em resumo:
Aula 07
Escalonamento de processos
Prof. Diovani Milhorim
Conceito de Escalonamento
Para cada estado, existe uma fila que contém os PCB's
executando pcb3
Do SO
Swapping: para liberar espaço na memória principal
para trazer outro processo da memória secundária
SO pode suspender um processo
em background
utilitário
suspeito de estar causando problemas
Solicitação de usuário interativo
Temporização: determinados processos são executados
periodicamente
Solicitação do processo pai
Conceito de Escalonamento
Longo-Prazo Curto-Prazo
FIM
Fila de Prontos CPU
Fila
I/O
Espera
Conceito de Escalonamento
CPU
fila de processos prontos
requisição de
I/O fila de dispositivo
I/O
término de fatia
de tempo
filho em criação de um
execução processo filho
terminar
fila de processos
CPU
prontos
Mudança de contexto
CPU é chaveada para outro processo SO deve
salvar o estado do processo antigo e carregar o
estado do novo processo
Implica overhead SO não realiza nenhum
trabalho útil durante os chaveamentos
Tempo consumido é dependente do suporte de
hardware fornecido
Chaveamento da CPU
interrupção ou chamada ao sistema
exec.
SO
ocioso
armazenar estado no PCB0
.
.
.
recarregar estado no PCB1
executando
ocioso
Processo P1
Processo P0
.
.
.
ocioso
recarregar estado no PCB0
exec.
Características dos Escalonadores
Considerações
Tipo de processamento
batch
interativo
CPU bound
I/O bound
Tipo de sistema
política de escalonamento
monoprogramado (?)
(scheduling policies)
multiprogramado
time-sharing
tempo-real
multiprocessado
Critérios de Escalonamento
Orientados ao Usuário e Desempenho
Uso do processador mede a porcentagem de
tempo em que a CPU está ocupada
importante em tempo compartilhado
não muito importante em sistemas monousuário e
tempo-real
Tempo de resposta
processos interativos
tempo entre uma requisição e o início da resposta
do ponto de vista do usuário
qual seria o tempo de resposta ideal ?
Critérios de Escalonamento
Orientados ao Sistema
Justiça processos devem ser tratados igualmente,
a menos que especificado o contrário
processos não deveriam sofrer starvation
Prioridades processos mais prioritários devem
efetivamente ser favorecidos
problema da inversão de prioridade
Balanceamento de recursos recursos devem ficar
ocupados o máximo possível
processos que não vão utilizar recursos
sobrecarregados devem ser favorecidos
Escalonamento de Processos
p1 p2 p3 p4
0 6 14 21 24 t
First-Come-First-Served
P1 P2 P3
0 24 27 30
p4 p1 p3 p2
0 3 9 16 24 t
Shortest-Job-First
P1 P2 P3 P4
0 3 7 8 12 16
Shortest-Job-First: preemptivo
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
0 2 ?
4 5 7 11 16
?
n 1 t n 1 n
Shortest-Job-First
=0
n+1 = n História recente não conta
=1
n+1 = tn Somente o último tempo de CPU (rajada) é
condiserado
Se expandirmos a fórmula teremos
n+1 = tn+(1 - ) tn-1 + …
+(1 - ) j tn-1 + …
+(1 - )n+1 tn 0
Uma vez que tanto como (1 - ) são menores ou iguais a 1,
cada termo tem peso menor do que o seu predecessor
Shortest-Job-First Preemptivo
Atribuição de prioridades
estática: o processo tem uma prioridade
fixa durante o seu tempo de vida
dinâmica: prioridade muda ao longo do
tempo de vida do processo, de acordo com
o seu comportamento
Prioridade
Dinâmica
pode ser ajustada
Atribuição de acordo com
de prioridades
tipo de processamento realizado
normalmente é feita pelo SO
a carga do SO
pode ser configurada pelo superusuário
quando o processo passa do estado de
Estáticade usuário recebem uma prioridade
processos
espera para o estado executando ele é
máxima de usuário
é atribuída
penalizado quando o processo é
e sua prioridade é reduzida,
usuário pode diminuir a prioridade de seus
iniciado
processos
processos
Observação
nãoCPU
ex.:
SO
épode
alterada
comando
durante
boundrenice
terão suas
associar àdo
aprioridades
Unix
alta
existência do
prioridade um
processo
reduzidas
númeroaescalar
cada passagem
pequeno para o estado
executando
pode oferecer tempos de resposta
0 significa a maior prioridade
I/O bound ficam em estado de espera
aceitáveis
com freqüência, processos CPU bound não
serão prejudicados
Prioridade
4 8 10 13 16 18 23 26 27 tempo
B solicita A solicita B solicita B solicita
preempção preempção
I/O I/O I/O I/O
por B por B
B solicita
I/O
Vantagens
é possível fazer diferenciação entre processos
adaptabilidade (prioridades dinâmicas)
Desvantagem
starvation: um processo com baixa prioridade
pode nunca ser atribuído ao processador
solução: aumentando, em intervalos regulares, a
prioridade dos processos que estão há muito tempo
esperando
Round-Robin
processo 1 executando
fatia de tempo
esgotada
processo 2 executando
Round-Robin
5 9 11 13 16 21 23 26 27 tempo
termina termina
B solicita B solicita A solicita
quantum quantum
I/O I/O I/O
de A de A
B solicita
A solicita
I/O
I/O
Desempenho
quantum = muito grande
FIFO
quantum = muito pequeno
q deve ser grande comparado a
mudança de contexto, caso contrário, o
overhead é muito elevado
Round-Robin
Processo Tempo de execução
P1 53
P2 17
P3 68
P4 24
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
quantum mudanças
tamanho do processo: 10 u.t. de contexto
12 0
0 10
6 1
0 6 10
1 9
0 1 2 3 4 5 6 7 8 9 10
Múltiplas Filas
p=3
processos interativos
p=2
p=1
processos em batch
p=0
sistema Exemplo
mais prioritário
algoritmo de escalonamento por prioridades
interativo
prioridade intermediária
escalonamento Round-Robin
batch
menor prioridade
usa Round-Robin ou FCFS
Maior Prioridade
Menor Prioridade
Múltiplas Filas com Realimentação
Criação do processo
prioridade mais alta e quantum mais baixo
Cada fila pode implementar uma política de
escalonamento diferente para chegar a CPU:
FIFO com quantum
SJF
RR
Múltiplas Filas com Realimentação:
Funcionamento
Fila m (Round-Robin)
Menor Prioridade Maior quantum
Múltiplas Filas com Realimentação:
Exemplo 2
quantum = 8
quantum = 16
FCFS
Sistemas Operacionais
Escalonamento preemptivo
Round-Robin;
Por prioridades;
Múltiplas filas.
Usa o clock.
Escalonamento Preemptivo
Diagrama de Gant – Escalonamento Round Robin
Espera média:
A: 7
B: 6
C: 5
(7+6+5)/3 = 6.
Escalonamento Preemptivo
Round-Robin: limitações e problemas
Esperam tanto como os outros, mas não chegam a usar seu quantum todo!
Logo que surgir um processo com maior prioridade que o que está executando, ele preempta o
mesmo que volta para a fila dos “prontos”.
Caso haja mais de um processo com uma dada prioridade, se aplica um segundo algoritmo de
desempate.
Tipicamente Round-Robin;
Também pode ser um FIFO ou SJF.
Todos processos ganham novos créditos, mas quem ainda tinha tem
mais!
Sistemas Operacionais
Threads
Escalonamentos preemptivos
Exemplos:
Round-Robin (fatia de tempo/quantum).
Com prioridades para desempatar…
Prioridades / múltiplas filas com realimentação.
Com Round-Robin para desempatar.
Threads
Lembrando…
Listas encadeadas;
A estrutura PCB é usada para tal;
Mantém-se um ponteiro sobre o primeiro e/ou o último PCB.
Threads
Imagem do processo
Threads
A imagem do processo
Um programa em execução
Uma unidade de escalonamento
Um fluxo de execução
Um conjunto de recursos (contexto) gerenciados pelo Sis. Op.
Registradores
Memória
Descritores de arquivos
Etc…
Threads de usuário:
Condições de Corrida
Condições de Corrida
Condições de Corrida
Condições de corrida são situações onde dois ou mais processos
acessam dados compartilhados e o resultado final depende da
ordem em que os processos são executados
Ordem de execução é ditada pelo mecanismo de escalonamento
do S.O.
Torna a depuração difícil.
Condições de corrida são evitadas através da introdução de
mecanismos de exclusão mútua:
A exclusão mútua garante que somente um processo estará
usando os dados compartilhados num dado momento.
Região Crítica: parte do programa (trecho de código) em que os
dados compartilhados são acessados
Objetivo da Exclusão Mútua:
Proibir que mais de um processo entre em sua Região Crítica
5
Exemplo 1
Procedure echo();
var out, in: character;
begin
input (in, keyboard);
out := in;
output (out, display)
end.
Exemplo 2 (1)
Exemplo 2 (2)
Concorrência
Dificuldades:
Compartilhamento de recursos globais.
Gerência de alocação de recursos.
Localização de erros de programação (depuração de
programas).
Ação necessária:
Proteger os dados compartilhados (variáveis, arquivos
e outros recursos globais).
Promover o acesso ordenado (controle de acesso) aos
recursos compartilhados sincronização de
processos.
9
Tipos de Soluções
Soluções de Hardware
Inibição de interrupções
Instrução TSL (apresenta busy wait)
Soluções de software com busy wait
Variável de bloqueio
Alternância estrita
Algoritmo de Decker
Algoritmo de Peterson
Soluções de software com bloqueio
Sleep / Wakeup, Semáforos, Monitores
11
Inibição de Interrupções
Usa um par de instruções do tipo DI / EI.
DI = disable interrupt EI = enable interrupt
O processo desativa todas as interrupções
imediatamente antes de entrar na sua R.C.,
reativando-as imediatamente depois de sair dela.
Com as interrupções desativadas, nenhum
processo que está na sua R.C. pode ser
interrompido, o que garante o acesso exclusivo
aos dados compartilhados.
12
Tipos de Soluções
Soluções de Hardware
Inibição de interrupções
Instrução TSL (apresenta busy wait)
Soluções de software com busy wait
Variável de bloqueio
Alternância estrita
Algoritmo de Decker
Algoritmo de Peterson
Soluções de software com bloqueio
Sleep / Wakeup, Semáforos, Monitores
16
Process Pi:
...
while turn = 1 do {nothing};
turn := 1;
< critical section >
turn := 0;
...
18
Soluções de Hardware
Inibição de interrupções
Instrução TSL (apresenta busy wait)
Soluções de software com busy wait
Variável de bloqueio
Alternância estrita
Algoritmo de Dekker
Algoritmo de Peterson
Soluções de software com bloqueio
Sleep / Wakeup, Semáforos, Monitores
20
P0: P1:
. .
. .
while turn ≠ 0 do {nothing}; while turn ≠ 1 do {nothing};
< critical section > < critical section >
turn := 1; turn := 0;
. .
21
3a. Tentativa
O problema da tentativa anterior é que ela guarda a
identificação do processo que pode entrar na R.C.
Entretanto, o que se precisa, de fato, é de informação
3a. Tentativa
Antes de entrar na sua R.C, o processo examina a
variável de tipo array. Se ninguém mais tiver
manifestado interesse, o processo indica a sua intenção
de ingresso ligando o bit correspondente na variável de
tipo array e prossegue em direção a sua R.C.
var flag: array[0..1] of boolean;
flag[0]:= false; flag[1]:= false;
4a. Tentativa
A idéia agora é que cada processo marque a sua intenção
de entrar antes de testar a intenção do outro, o que
elimina o problema anterior.
É o mesmo algoritmo anterior, porém com uma troca de
linha.
5a. Tentativa
Na tentativa anterior o processo assinalava a sua
intenção de entrar na R.C. sem saber da intenção do
outro, não havendo oportunidade dele mudar de idéia
depois (i.e., mudar o seu estado para “false”).
A 5a. tentativa corrige este problema:
Após testar no loop, se o outro processo também quer entrar na
sua R.C, em caso afirmativo, o processo com a posse da UCP
declina da sua intenção, dando a vez ao parceiro.
28
Solução de Dekker
Trata-se da primeira solução correta para o problema da
exclusão mútua de dois processos (proposta na década
de 60).
O algoritmo combina as idéias de variável de bloqueio e
array de intenção.
É similar ao algoritmo anterior mas usa uma variável
adicional (vez/turn) para realizar o desempate, no caso
dos dois processos entrarem no loop de mútua cortesia.
32
Algoritmo de Dekker
var flag: array[0..1] of boolean;
turn: 0..1; //who has the priority
flag[0] := false
flag[1] := false
turn := 0 // or 1
Quando P0 quer entrar na sua R.C. ele coloca seu flag em true. Ele
então vai checar o flag de P1.
Se o flag de P1 for false, então P0 pode entrar imediatamente na
sua R.C.; do contrário, ele consulta a variável turn.
Se turn = 0 então P0 sabe que é a sua vez de insistir e, deste modo,
fica em busy wait testando o estado de P1.
Em certo ponto, P1 notará que é a sua vez de declinar. Isso permite
ao processo P0 prosseguir.
Após P0 usar a sua R.C. ele coloca o seu flag em false para liberá-la,
e faz turn = 1 para transferir o direito para P1.
34
Solução de Peterson
Proposto em 1981, é uma solução simples e elegante
para o problema da exclusão mútua, sendo facilmente
generalizado para o caso de n processos.
O truque do algoritmo consiste no seguinte:
Ao marcar a sua intenção de entrar, o processo já indica (para o
caso de empate) que a vez é do outro.
Mais simples de ser verificado
36
Algoritmo de Peterson
flag[0] := false
flag[1] := false
turn := 0
Soluções de Hardware
Inibição de interrupções
Instrução TSL (apresenta busy wait)
Soluções de software com busy wait
Variável de bloqueio A alteração do valor p/ “trancado” APÓS o
Alternância estrita teste permite que dois processos executem
a R.C. ao mesmo tempo!
Algoritmo de Dekker O TESTE e a ALTERAÇÃO necessitam ser
Algoritmo de Peterson feitos de forma indivisível...
Soluções de software com bloqueio
Sleep / Wakeup, Semáforos, Monitores
39
LPRM/DI/UFES Sistemas
Operacionais
Referências
• Silberschatz A. G.; Galvin P. B.; Gagne G.; ''Fundamentos
de Sistemas Operacionais'', 6a. Edição, Editora LTC,
2004.
▫ Capítulo 7 (até seção 7.3 inclusa)
• A. S. Tanenbaum, ''Sistemas Operacionais Modernos'',
2a. Edição, Editora Prentice-Hall, 2003.
▫ Seção 2.3 (até 2.3.3 inclusa)
• Deitel H. M.; Deitel P. J.; Choffnes D. R.; “Sistemas
Operacionais”, 3ª. Edição, Editora Prentice-Hall, 2005
Capítulo 5 (até seção 5.4.2 inclusa)
Sistemas operacionais
Aula 11
Comunicação e sincronização de
processos.
Soluções de Hardware
Inibição de interrupções
Instrução TSL (apresenta busy wait)
Soluções de software com busy wait
Variável de bloqueio
Alternância estrita
Algoritmo de Dekker
Algoritmo de Peterson
Soluções de software com bloqueio
Sleep / Wakeup, Semáforos, Monitores
3
1 2 3 N
5
void producer(void) {
while (true){
produce_item(); /* generate next item */
if (count == N) sleep(); /* if buffer is full, go to sleep */
enter_item(); /* put item in buffer */
count = count + 1; /* increment count of items in buffer*/
if (count == 1) wakeup(consumer); /* was buffer empty? */
}
}
void consumer(void){
while (true){
if (count == 0) sleep(); /* if buffer is empty, got to sleep */
remove_item(); /* take item out of buffer */
count = count - 1; /* decrement count of items in buffer*/
if (count == N-1) wakeup(producer); /* was buffer full? */
consume_item(); /* print item */
}
}
6
Soluções de Hardware
Inibição de interrupções
Instrução TSL (apresenta busy wait)
Soluções de software com busy wait
Variável de bloqueio
Alternância estrita
Algoritmo de Dekker
Algoritmo de Peterson
Soluções de software com bloqueio
Sleep / Wakeup, Semáforos, Monitores
8
Semáforos (1)
Semáforos (2)
Semáforos (3)
P(S):
If S > 0
Then S := S – 1
Else bloqueia processo (coloca-o na fila de S)
V(S):
If algum processo dorme na fila de S
Then acorda processo
Else S := S + 1
11
...
Semaphore mutex = 1; /*var.semáforo,
iniciado com 1*/
void producer(void){
Exemplo: Produtor - Consumidor c/ Buffer Limitado
int item;
produce_item(&item); /* generate something to put in buffer */
P(&empty); /* decrement empty count */
P(&mutex); /* enter critical region */
enter_item(item); /* put new item in buffer */
V(&mutex); /* leave critical region */
V(&full); /* increment count of full slots */
}
void consumer(void){
int item;
P(&full); /* decrement full count */
P(&mutex); /* enter critical region */
remove_item(&item); /* take item from buffer */
V(&mutex); /* leave critical region */
V(&empty); /* increment count of empty slots */
consume_item(item); /* do something with the item */
}
13
Inicialização do semáforo
sem_init(&teste, 0, 0);
regiao_critica;
sem_post(&teste);
}
void thread2()
{
sem_wait(&teste);
regiao_critica;
sem_post(&teste);
}
15
Referências
• A. S. Tanenbaum, ''Sistemas Operacionais Modernos'',
2a. Edição, Editora Prentice-Hall, 2003.
▫ Seções 2.3.4 a 2.3.6
• Silberschatz A. G.; Galvin P. B.; Gagne G.; ''Fundamentos
de Sistemas Operacionais'', 6a. Edição, Editora LTC,
2004.
▫ Seção 7.4
• Deitel H. M.; Deitel P. J.; Choffnes D. R.; “Sistemas
Operacionais”, 3ª. Edição, Editora Prentice-Hall, 2005
Seção 5.6
Sistemas Operacionais
- Sincronização de processos
- Monitores e semáforos.
P
while (lock);
x P
while TSL(lock);
lock = true;
Região Crítica;
Região Crítica;
lock = false;
lock = false;
Monitores
Os monitores são construções de linguagens de programação que
fornecem uma funcionalidade equivalente aos semáforos
procedure P1 (…) {
...
}
procedure P2 (…) {
...
}
procedure Pn (…) {
...
}
{
código de inicialização
}
}
Monitores
Para implementar a sincronização é necessário utilizar variáveis de
condição
Variáveis de condição
Monitores: Implementação
synchronized(this) {
}
Troca de Mensagens
Quando é necessário trocar informações entre processos que não
compartilham memória
send(destino, mensagem)
receive(origem, mensagem)
Endereçamento Direto
O processo que envia ou recebe uma mensagem deve
especificar a origem e o destino
Endereçamento Indireto
As mensagens não são endereçadas diretamente entre
processos origem e destino
Produtor/Consumidor
Leitores e Escritores
Barbeiro Dorminhoco
Produtor/Consumidor
Um processo produz informações que são gravadas em
um buffer limitado
Quando está com fome ele tenta pegar dois garfos um de cada vez. Ele
não pode pegar um garfo que já esteja com outro filósofo
Solução 1:
Jantar dos Filósofos
Solução 2:
Jantar dos Filósofos
Atividade em sala:
Gerenciamento de memória
Multitarefa: complexa
Memória lógica
Memória física
Em tempo de compilação
Em tempo de carga
Em tempo de execução .
Gerenciamento de memória
Amarração de endereços (binding)
Gerenciamento de memória
Amarração de endereços (binding)
o Código relocável
o Mapeamento das posições a serem corrigidas é mantida através de
tabelas
• Endereço de carga
• Filosofia:
o Partições alocadas
o Partições livres
o Tamanho das partições
Gerenciamento de memória
Alocação contígua particionada dinâmica
Gerenciamento de memória
Alocação contígua particionada fixa
Fragmentação Interna
Fragmentação Interna
Gerenciamento de memória
Alocação contígua particionada fixa
Se código é relocável:
Fragmentação externa
Best fit
Minimizar tam_processo - tam_bloco o Deixar espaços livres os
menores possíveis
Worst fit
Maximizar tam_processo - tam_bloco o Deixar espaços livres os
maiores possíveis
First fit
tam_bloco > tam_processo
Circular fit
Variação do first-fit
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Paginação de memória
o Tabela de páginas
Código compartilhado
Segmentação X Paginação
Paginação com partes de tamanho fixo e
segmentos com blocos de tamanhos variados
permite uma relação entre a lógica do
programa e sua divisão na memória.
Segmentação de memória
Segmentação
o Frames livres/alocados
o Registradores e Memória
Paginação de memória
Implementação da tabela de páginas via registradores
O algoritmo ideal:
Problema: a página que foi carregada há mais tempo pode estar a ser
utilizada...
Paginação de memória
Algoritmos de substituição de páginas
Bit de referência
Segunda chance
Problema: uma página muito acedida no início, mas que depois deixe de
ser acedida fica com um valor elevado no contador, pelo que poderá
persistir na memória
Paginação de memória
Algoritmos de substituição de páginas
Aging
Gestão de memória
1
Memória Virtual – Segmentação
2
Memória Virtual – Segmentação
• Esquema de administração de memória que suporta a visão do
usuário da memória, leva em consideração a visão de programadores e
compiladores
4
Memória Virtual – Segmentação
5
Memória Virtual – Segmentação
S e g m e n to 4 S e g m e n to 4 S e g m e n to 4
(1 0 K ) (1 0 K ) (1 0 K )
S e g m e n to 3 S e g m e n to 3 S e g m e n to 6
(6 K ) (6 K ) (4 K )
S e g m e n to 2 S e g m e n to 2 S e g m e n to 2
(6 K ) (6 K ) (6 K )
S e g m e n to 1
Fragmentação
S e g m e n to 5 S e g m e n to 5
(8 K )
(6 K ) (6 K )
te m p o
6
Memória Virtual – Segmentação
3 D e s c rito r 3
E n d e r e ç o F ís ic o
Estrutura de um descritor
P Base Limite Protecção Controlo
Bit de presença 7
Memória Virtual – Segmentação
Vantagens:
Fácil implementação de partilha de dados
Divisão de um processo em segmentos diferentes
(e.g., código, heap, stack)
Múltiplos espaços de endereçamento linear por
processo
Desvantagens:
Maior fragmentação da memória
Impossibilidade de se definirem segmentos maiores
do que a memória física (a não ser que se utilize
também paginação ou overlays)
8
Memória Virtual – Misto
Segmentação com paginação.
9
Memória Virtual – Misto
Segmentação com paginação.
10
Memória Virtual – Misto
Segmentação com paginação.
11
Memória Virtual – Misto
Vantagem:
Eliminaas desvantagens de um esquema
puro de segmentação, mas mantém as suas
vantagens
Desvantagens:
Maior complexidade das MMUs
Mais acessos à memória para conversão de
endereços virtuais em físicos
12
Gestão de Memória – UNIX
13
Gestão de Memória – UNIX
14
Gestão de Memória – UNIX
Processo A Processo B
Stack Stack
frames
SO
15
Gestão de Memória – UNIX
Core Map
Estrutura com informações acerca das page frames
Contém uma entrada por frame
Tipicamente cada entrada do Core Map tem as seguintes
informações
Índices do próximo frame livre e do anterior
...
M o ld u ra 2
Sempre carregados
em memória principal M o ld u ra 1
M o ld u ra 0
C o re
M ap
K e rn e l d o S O
17
Gestão de Memória – UNIX
18
Gestão de Memória – Linux
Esquema de paginação por demanda sem conceito de Working Set
Algoritmo de substituição de páginas
Processo kswapd (daemon) – acorda de 1 em 1 segundo para
ver se há suficientes frames livres
O algoritmo de substituição procura diferentes tipos de páginas
a substituir:
Páginas em cache – semelhante ao relógio
Seqüencial ou randômico
Mouse vs. disco
Exemplos:
interface Ethernet para a rede:
Define um endereço IP, um endereço de roteamento (gateway), um
prazo máximo de atendimento...
Independente da placa de rede específica!
Interface do Mouse:
Vai tratar eventos tais como ‘clic’ ou movimentação.
Independente do tipo de mouse!
Dispositivos de entrada e saída
Funções típicas e genéricas da interface
Buffer e Caches
Tratamento de erros
Escalonamento de dispositivo
Compartilhamento e controle de acesso
(Semáforos!)
Mais funções “backdoor”
Dispositivos de entrada e saída
Tratamento de erros
O tipo de erro
Transiente/permanente
SW / HW
Útil para:
Ajustar tamanho de dados - Byte vs. Pacotes
Ajustar velocidades entre dispositivos
Possibilitar o assincronismo
Problemas básicos:
Manutenção da coerência entre o buffer e os dados
originais.
tamanho do buffer;
O que fazer quando estoura o buffer?
Aumentar o buffer...
Usar um outro buffer...
Usar vários outros buffers
Sistema de buffers circulares.
Sistemas operacionais
Organização de disco
Prós e contras:
Meio barato de armazenamento permanente
Se comparado com processador e memória apresenta uma
velocidade de acesso muito lenta
Necessidade:
Otimizar o desempenho do disco visando aumentar a sua largura
de banda, tempo de resposta e variância
ex: Bufferização, caches, configurações RAID
Organização de discos
Disco Magnético:
Organização de discos
Acesso aos dados:
e.x.:
discos rígidos (5400 rpm a 10000 rpm);
unidades de floppy (300 rpm a 600 rpm)
Problema:
Requisições provêem de diferentes processos e são geradas mais
rapidamente do que são atendidas
→ fila de requisições
Objetivos:
Aumentar a taxa de transferência (rendimento)
Reduzir o tempo médio de resposta
Ser justo no atender a requisições dos processos (variância)
Organização de discos
Políticas de escalonamento do disco
Otimização de busca
FIFO ou FCFS
SSTF (Shortest Seek Time First)
Scan (elevador) e suas variações
Otimização rotacional
Prós:
Simples de executar
Justo: requisições são atendidas na ordem
Contras:
Prós:
Redução do tempo de busca (maior rendimento)
Tempo médio tende a ser mais baixo
Contra:
Não garante justiça (”fura” a fila )
Postergação indefinida (starvation)
Variância alta (ruim para sistema interativos, aceitável para sistemas
batch)
Organização de discos
Organização de discos
SCAN (algoritmo do elevador)
Prós
Oferece bons tempos médios de resposta
Bom rendimento
Variância menor que o SSTF
Contra
Não justo
Trilhas das extremidades são “visitadas” menos frequentemente que
as trilhas internas
Organização de discos
SCAN (algoritmo do elevador)
Organização de discos
C-SCAN (1)
Sistemas de arquivos
Melhor: o C-SCAN
Sistemas de arquivos
Escalonamento de disco
Organização típica:
Arquivos
Unidade básica de dados enxergada pelo usuário
Diretórios
Sistema de classificação dos arquivos.
Sistemas de arquivos
Funções básicas
Descrição do arquivos
Gerenciamento do espaço físico
Gerenciar blocos livres/ocupados
Sistemas de arquivos
Funções básicas
Nomear um arquivo
Criar, apagar, mover, ler, escrever arquivos
Controlar seus direitos de acesso
Organizar seus arquivos
Efetuar backups
Sistemas de arquivos
Organização de arquivos
Sistemas de arquivos
Gerência de dispositivos
Problemas a resolver:
Fragmentação
Desempenho
Bom uso do disco.
Sistemas de arquivos
Núcleo básico
FILE* meu_arquivo
meu_arquivo = fopen(“arquivo.txt”,”r”);
Sistemas de arquivos
Gerência de diretórios
Chamadas de sistema:
Informações de accounting:
Data de criação,
Tamanho,
Dono
Grupo
...
Informações de segurança
Direitos de acesso R, w, x
Tipo:
Arquivo, diretório, link
Sistemas de arquivos
Tipos de arquivo
Exemplos:
Executável (binário)
Arquivo de dispositivo (device) no Linux
Diretório
Arquivos randômicos
Fácil quando se usam registros de tamanho fixo
Vide acessos em uma tabela (vetor)
Implementação de arquivos
Problemas:
Fragmentação externa;
Necessidade de conhecer o tamanho (máximo) do arquivo.
Implementação de arquivos
Alocação encadeada
Vantagens:
Sem perda de espaço (não tem ponteiros);
Busca rápida, pois tudo está na memória (acesso randômico simples!).
Desvantagem:
Toda a tabela deve caber na memória...
Objetivos principais:
Confiabilidade e tolerância a falhas.
Garante a manutenção dos metadados.
logging
Eficiência
Links, compressão, arquivos esparsos...
Organiza os discos em volumes (partição lógica);
O cluster (bloco) varia ao formatar o volume
de 1 até 2n setores do disco
512 Bytes, ... Alguns Kbytes.
Implementação de arquivos
NTFS, MFT e metadados
Registros de metadados:
Diretório raiz (\)
Este registro contém a lista dos arquivos / diretórios encontrados
na raiz;
Alocação dos blocos do volume
Bitmap
Blocos danificados
Registro de arquivo:
Seqüência de pares (nome atributo, valor)
Alguns atributos: nome arquivo, informações de acesso, dados...)
Registro residente: para pequenos arquivos, todos os atributos
cabem no registro da MFT (1 KB)
Registro extendido: blocos fora da MFT são usados para armazenar
parte dos “grandes” atributos (e.g. dados).
Implementação de arquivos
I-node
13a entrada:
São 256x256x256 blocos acessíveis pela 13a entrada (16 Milhões).
Implementação de arquivos
Atributos do I-node
Tipo de arquivo
Diretório, link, E/S, ...
Direitos de acesso
Leitura, escrita, execução
Tamanho do arquivo em bytes
Não em blocos!
Hora de acesso / criação
Implementação de arquivos
Arquitetura do sistema de arquivos Unix-like
Conteúdo:
Implementação de diretórios
meta-dados
Setor de boot
Endereço do diretório raiz
Cópia espelhada da FAT (no caso do DOS/NTFS).
Implementação de diretórios
Diretório & Arquivos
Criação
Deve-se acrescentar uma entrada na estrutura de dados “diretório” para
incluir o novo diretório/arquivo.
Possivelmente, deve-se re-organizar as entradas.
Remoção
Deve-se tirar uma entrada;
Obs: problema potencial ao remover um diretório inteiro! Fazer o que se não
está vazio?
Possivelmente, deve-se re-organizar as entradas.
Acesso/listagem
Deve retornar a lista das entradas;
Para tanto, precisa ser “aberto”.
Implementação de diretórios
Diretório de um nível
Caminho relativo:
Diretório corrente (‘.’) = diretório onde o usuário está trabalhando
quando dispara o processo.
O caminho relativo começa a partir do diretório corrente
bin/gcc
../bea/bin/gcc
Implementação de diretórios
Caminho (path)
Soft link:
Implementado através de um ponteiro sobre uma entrada física
Possibilita detectar ciclos, por isso lícito com diretórios (looping)
Hard link
Pesquisa linear...
Cada inserção necessita uma procura para evitar nomes repetidos!
Simples
Uma forma de otimizar ordenar a lista
Sobrecusto à inserção
Tabela de Hash
Lista linear + índice
Deve-se gerenciar as colisões!
Implementação de diretórios
Exemplo de implementação de entrada
Exemplo simples:
Árvore de diretórios!
Cada entrada tem comprimento 32 Bytes
Nome, extensão...
Ponteiro para o primeiro bloco na FAT.
Os outros blocos do arquivo se encontram graças à
FAT.
Se o bloco apontado na FAT contiver a mesma
estrutura, aninham-se os diretórios. A tabela fica
distribuída no disco e não em um mesmo local.
Implementação de diretórios
Implementação no MS-DOS
Implementação de diretórios
Implementação no Unix
Altamente dependendo:
Das características do HD
Da distribuição do tamanho dos arquivos...
Por exemplo:
Implementação eficiente
Instrução de HW específica para retornar o 1o bit valendo 1.
Solução:
Procura-se um byte livre;
Vai-se para trás até o último bit ocupado.
Pre-alocação dos 8 blocos pela frente
Gerenciamento de espaço livre
Lista encadeada
Gerenciamento de espaço livre
Exemplo: ext2fs
Sistema de arquivos “clássico” do Linux
Inspirado pelo UNIX BSD (FFS)
Decompõe uma partição ext2fs em grupos
Dessa forma, agrupa blocos.
Gerenciamento de espaço livre
Descrição dos grupos no ext2fs
Super-bloco:
Contém dados relevantes a toda a partição (duplicado
em cada grupo)
Número mágico da partição,
número de mounts,
tamanho do bloco,
tamanho do grupo (m),
ponteiro para o 1o inode do sistema de arquivos (/),
Número de inodes, de inodes livres, de blocos livres...
Gerenciamento de espaço livre
Descrição dos grupos no ext2fs
Descritor do grupo:
1 entrada por grupo
Cada entrada fornece:
o endereço do bloco onde está o bitmap dos
blocos livres;
o endereço do bloco onde está o 1o inode na
tabela.
o endereço do bloco do bitmap dos inodes
o endereço do bloco do bitmap dos blocos
Gerenciamento de espaço livre
Descrição dos grupos no ext2fs
Sistemas distribuídos
Concorrência
Inexistência de relógio global.
Falhas independentes.
Sistemas distribuídos
Exemplo de sistema distribuído:
A Internet:
A Internet:
Sistemas distribuídos
Exemplo de sistema distribuído:
Intranets:
Notebooks .
Aparelhos portáteis , como PDA´s , telefones móvei s , pagers
câmeras de vídeo e digitais .
Aparelhos acoplados ao corpo, como relógios de pulso
inteligentes, com funcionalidades semelhante à de um PDA .
Dispositivos incorporados em aparelhos, como máquinas de
lavar, aparelho s de som , carros , etc...
Sistemas distribuídos
Exemplo de sistema distribuído:
Computação móvel o ubíqua:
Execução de programas
Operações de entrada/saída (I/O)
Manipulação do sistema de arquivos.
Comunicação entre processos.
Detecção de erros.
Alocação de recursos.
Registro (accounting)
Proteção.
Sistemas distribuídos
Vantagens de Sistemas Distribuídos em relação a Sistemas
Centralizados:
Desempenho
Transparência
Disponibilidade
Evita perda de dados em caso de falha de
uma máquina
Mecanismo mais comum: replicação