Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Gerenciar recursos garantir a utilizao compartilhada do recurso sem que ocorram erros que
possam gerar instabilidade ou falha no sistema.
Na viso do usurio, o sistema operacional fornece:
Acesso ao sistema;
Possibilidade de criar e gerir arquivos e diretrios;
Ambiente para execuo de programas;
Acesso aos dispositivos de E/S;
Acesso ao contedo de arquivos;
Deteco de erros.
Ateno
Estamos falando de gerenciamento, e no de execuo.
Ateno
Todo sistema operacional multiusurio obrigatoriamente multitarefa, pois cada
usurio representa, no mnimo, uma tarefa para ser executada.
Nota
Sistemas com suporte a multiprocessamento podem executar mais de uma
tarefa ao mesmo tempo; uma em cada processador.
Ateno
No se trata de velocidade de processamento, e sim de garantia
de tempo de resposta.
Sistemas Embarcados: Sistemas inseridos em produtos com funes especficas como, por
exemplo, telefones celulares.
Ateno
Nem todo dispositivo eletrnico possui um microcontrolador, e nem todo
aparelho com microcontrolador possui um sistema operacional.
INTRODUO A SISTEMAS OPERACIONAIS 6
A instabilidade evidenciada pela tela azul tem razes histricas. Os primeiros processadores da
linha x86 possuam um nico modo de operao: o modo real. Dessa forma, todas as operaes
poderiam ser executadas diretamente pelas aplicaes que, ao produzir erros, geravam panes no
sistema.
Voltando tela azul: As aplicaes podiam executar diretamente as funes do kernel sem a
proteo da mudana de modo, ou seja, o erro acontecia aps a execuo de uma funo do kernel.
Com a mudana de modo, se a execuo no for segura, a aplicao ser impedida de continuar a
execuo e o sistema permanecer estvel.
Tipos de Estrutura
Os sistemas so classificados em relao s atribuies do kernel e a relao entre seus mdulos em
monolticos, camadas e microkernel.
Os sistemas modernos so divididos em dois grandes grupos: arquitetura monoltica e microkernel. A
diferena entre elas est nas atribuies do ncleo do sistema operacional, denominado KERNEL.
INTRODUO A SISTEMAS OPERACIONAIS 7
Essa caracterstica muito importante no projeto de um Sistema Operacional e foi alvo de discusso
entre dois grandes nomes da computao: Andrew Tanenbaum e Linus Torvalds.
Para mais informaes sobre o motivo da discusso, leia o texto a seguir: Tanenbaum x Torvalds.
De um lado, Torvalds defendia um kernel monoltico por ser mais rpido e, de outro, Tanenbaum
defendia o microkernel pela elegncia e facilidade de adaptao e substituio de mdulos. Quem
ganhou? Os dois.
Arquitetura Monoltica
Todo o kernel compilado e linkado em um nico bloco, tornando o cdigo eficiente, porm de
difcil manuteno. A incluso de um mdulo requer que todo o kernel seja recriado.
Nota
O kernel do Linux incorporou caractersticas modulares.
Arquitetura Microkernel
Somente as funes crticas fazem realmente parte do kernel. Demais funes so tratadas como
tarefas e executam em modo usurio fazendo chamadas ao kernel quando necessrio.
Essa arquitetura simplifica a manuteno, incluso e excluso de mdulos do sistema operacional,
no sendo necessrio gerar um novo kernel a cada modificao e nem mesmo reiniciar o
computador para ativao e desativao do mdulo.
INTRODUO A SISTEMAS OPERACIONAIS 8
Interrupes
So sinais de hardware fundamentais para a existncia de sistemas multitarefa, pois provocam a
suspenso da tarefa em execuo pela ocorrncia de um evento externo permitindo que outras
tarefas compartilhem o tempo de uso do processador.
Ateno
Neste caso, o que est sendo compartilhado o TEMPO DE USO do processador, e
no o processador em si. Cada tarefa utiliza 100% do processador.
Tipos de Interrupes
As interrupes so geradas por dispositivos de hardware e podem ocorrer de forma sncrona ou
assncrona.
Relgio (temporizador) sncrona
Dispositivos de E/S (sinalizao de concluso) assncrona
Falha de hardware (paridade de memria, erro de disco, etc.) assncrona
O termo interrupo muitas vezes para qualquer atividade que suspenda a execuo de uma
tarefa, mesmo que seja solicitada pelo prprio programa. Utilizaremos, para este fim, o termo
estado de exceo.
Estouro aritmtico;
Diviso por zero;
Instruo ilegal;
Acesso no permitido;
Chamadas ao sistema.
Ateno
Mascaramento de interrupes: Capacidade de inibir a ao de uma
interrupo. As interrupes de segurana no podem ser mascaradas.
Conceitos de Concorrncia
Compartilhar recursos significa que diferentes usurios ou programas usam os recursos de forma
concorrente.
Concorrncia:
a capacidade de execuo concorrente de
tarefas permitindo um melhor aproveitamento
de recursos.
INTRODUO A SISTEMAS OPERACIONAIS 11
Uma tarefa pode deixar a CPU por vontade prpria, quando precisa aguardar por um
recurso, ou por uma interrupo.
Em particular, uma interrupo de temporizador provoca a substituio da tarefa em
execuo criando uma alternncia entre as tarefas.
Ateno
A alternncia entre as tarefas pode dar a impresso de execuo
simultnea de tarefas, mas no o que ocorre.
Sntese do Captulo
Voc aprendeu:
Exerccios de Reviso
1) So funes do sistema operacional:
Gerenciar recursos de hardware e fornecer um aplicativo para navegao na internet.
Gerenciar recursos de hardware e interface com o usurio.
Interface com o usurio e correo ortogrfica.
Gerenciar recursos de software e interromper uma tarefa em execuo.
2) Para que uma aplicao execute instrues privilegiadas dever executar um(a):
Arquivo especfico para gerenciamento de hardware.
Interrupo de hardware.
Solicitao ao administrador do sistema.
Chamada ao sistema.
Solues
1) Gerenciar recursos de hardware e interface com o usurio.
2) Chamada ao sistema.
PROCESSOS 12
2. PROCESSOS
Objetivos
Compreender os conceitos de processos;
Identificar os estados de um processo;
Compreender como acontece a mudana de estado.
Conceito
Processo a instncia de um programa em execuo. a unidade de
carga e alocao de uma tarefa.
Componentes
Um processo dividido em partes que so armazenadas na memria em uma estrutura denominada
PCB (Process Control Block).
Identificao Programa
Registrador SP
Registrador PC
Registradores de uso geral
Informaes de escalonamento
Relao de arquivos abertos
Privilgios
Espao de endereamento de memria
Criao
Quando um processo criado?
Execuo
A execuo concorrente de processos leva s seguintes situaes:
Troca de contexto;
Troca de modo de execuo.
Trocas de Contexto
Substituio do processo em execuo.
Causas:
Trmino
Quando acaba o programa que est em execuo.
Quando ocorre um erro.
Quando forado pelo usurio a terminar.
Estados
No que diz respeito aos estados de um processo, o diagrama mais comum possui cinco estados e
suficiente para o entendimento dos demais estados intermedirios. Observe-o abaixo:
Novo: Estado de admisso onde so geradas as estruturas de dados e alocado espao para o
processo. O processo recm-criado configurado como "pronto".
Pronto: Aps a admisso, o processo est pronto para ser executado, mas aguarda sua vez.
Executando: Apenas um processo por vez pode estar nesse estado. Aps ser selecionado, o
processo recupera seu contexto que guardado aps ter sua execuo interrompida.
Bloqueado: Um processo bloqueado quando precisa aguardar um recurso. Esse bloqueio
sncrono, ou seja, sempre que o programa executar um determinado trecho, o bloqueio
acontecer. (Exemplo: acesso a disco)
Fim: Ao terminar a execuo do processo, as estruturas criadas so removidas e a rea
alocada liberada.
Ateno
A substituio do processo em execuo denominada troca de contexto. Quando o
processo interrompido, seu contexto armazenado. Quando o processo retorna
para o estado de execuo, seu contexto recuperado.
Ateno
O sistema operacional no pode provocar troca de contexto, uma vez que um
software e para gerar uma ao precisaria estar em execuo.
PROCESSOS 15
Ateno
No possivel haver mudana de estado entre pronto e bloqueado. Se o processo
est em estado de pronto, no est executando, logo, no poder fazer nenhuma
requisio.
Tipos
Os processos podem ser classificados em funo de caractersticas de execuo:
Processos CPU-Bound: So processos que passam a maior parte do tempo em estado de
execuo ou pronto. Realiza poucas operaes de E/S.
Processos I/O-Bound: So processos que passam a maior parte do tempo em estado de
espera, pois realizam um elevado nmero de operaes de E/S.
Processos em Foreground: Permitem a comunicao direta do processo com o usurio
durante sua execuo. Em geral, o canal de entrada est associado ao teclado/mouse e de
sada a um monitor.
Processos em Background: Processos em que no existe interao direta com o usurio.
A estratgia utilizada para ordenar a execuo de processos pode variar em funo dos tipos de
processo em um sistema.
Sntese do Captulo
Voc aprendeu:
O que um processo.
Quais os componentes de um processo.
Quais so os estados de um processo.
Como ocorre a mudana de estado de um processo.
Exerccios de Reviso
1) Sobre o conceito de processos, marque a afirmao verdadeira.
Processo a mesma coisa que programa.
Processo um programa que est em execuo.
Processo uma caracterstica do processador.
Processo um programa armazenado no disco.
Solues
1) Processo um programa que est em execuo.
2) Interrupo por tempo provocada pelo temporizador.
THREADS 16
3. THREADS
Objetivos
Compreender os conceitos de threads.
Entender as diferenas entre um sistema operacional baseado em threads e outro baseado
em processos.
Diferenciar os tipos de threads.
Identificar as oportunidades para uso de threads.
Conceito
Threads so fluxos de execuo distintos dentro de um mesmo processo, um executvel.
Estrutura
Um processo que contenha threads composto pelo seu PCB (Process Control Block) e pelos blocos
especficos para cada thread que contm uma estrutura de contexto de software e uma estrutura de
contexto de hardware.
Cada thread possui contextos prprios de hardware e software, porm compartilham o mesmo
espao de endereamento alocado ao processo.
THREADS 17
Vamos entender melhor. Pense em funes de um mesmo processo, onde todas as funes so
capazes, por exemplo, de ver e alterar o contedo de variveis globais.
Vamos exemplificar com o seguinte trecho de programa:
Como a varivel x visvel por todas as funes, o valor final da varivel x ser 12. As funes
enxergam a mesma rea de memria.
Nem toda funo uma thread. Quando utilizamos uma funo, o mdulo que fez a chamada deve
aguardar o trmino da funo para continuar. No exemplo, o resultado abaixo somente ser exibido
aps o retorno da funo.
Se fosse uma thread (veremos mais tarde como criar uma), a exibio poderia ocorrer antes que a
funo terminasse.
Ateno
Pode gerar erros? A exibio poderia mostrar o resultado antes da funo terminar.
Esse tipo de problema ser tratado em Comunicao entre Processos e conhecido
como condio de corrida. Calma! Tem soluo.
Uma thread pode ser imaginada como uma funo de um programa que tem "vida prpria" para a
execuo, mas no pode ser criada isoladamente.
Para mais informaes, leia o texto a seguir (Motivao para o uso de threads).
Se o procedimento de pegar o tijolo e lev-lo at o depsito for feito por uma nica pessoa,
provavelmente diversos tijolos caram no cho enquanto essa pessoa leva um dos tijolos para o
depsito.
O que fazer? Se houver uma pessoa que fique na sada da esteira retirando os tijolos e os
entregando para seus assistentes, a chance de que um tijolo caia no cho ser muito reduzida, pois
cada tijolo ser entregue em um perodo de tempo constante ao assistente que o levar ao
THREADS 18
Pensando agora em uma aplicao, como um servidor para transferncias de arquivos. Uma
threadfica a postos para receber requisies que sero entregues a novas threadscriadas sob
demanda para atender a cada uma das requisies. A cada requisio, uma nova thread criada e a
threadprincipal retorna imediatamente para aguardar novas requisies, evitando (ou reduzindo
muito) o descarte de mensagens. Poderemos ter vrias threadssendo executadas concorrentemente,
podendo gerar um tempo de resposta maior, mas as requisies no sero perdidas.
S para registrar: esse tipo de servidor chamado de servidor concorrente.
Tipos
As threads podem ser classificadas em:
Threads de Kernel: As threads de Kernel so criadas e gerenciadas pelo kernel do sistema
operacional, mas no podem ser diretamente utilizadas pelo usurio.
O suporte a mltiplas threads uma caracterstica do sistema operacional.
Threads de Usurio: As threads de usurio facilitam aspectos de portabilidade e so criadas
e gerenciadas por uma biblioteca no nvel do usurio.
O Kernel no enxerga essas threads e, por esse motivo, no podem ser gerenciadas
individualmente.
Ateno
Esta a soluo mais utilizada nos sistemas modernos.
Pois o uso combinado de threads de usurio e de Kernel permite melhor
aproveitamento do tempo de CPU, possibilidade de paralelismo e facilidade de
programao.
Um para um:
Cada thread de usurio mapeada para uma
Kernel thread;
Criar uma user thread requer a criao de uma
thread de Kernel;
Algumas implementaes restringem o nmero
de threads suportada pelo sistema;
utilizada pelo Windows e pelo Linux.
THREADS 20
Sntese do Captulo
Voc aprendeu:
O que uma thread.
Quais os tipos de threads disponveis e suas caractersticas.
As vantagens e desvantagens do uso de threads.
Exerccios de Reviso
1) Uma thread a execuo de um fluxo de processamento, isto significa que um processo pode
ser composto por vrias threads. Neste contexto correto afirmar que:
Uma thread equivalente a um processo filho, pois a execuo de cada thread
independente.
Uma thread pode ser compartilhada por vrios processos, pois o espao de endereamento
compartilhado.
Uma thread pode existir sem estar associada a um processo.
Threads de um mesmo processo podem ter suas execues independentes e compartilham
espao de endereamento de memria.
2) Considere uma aplicao baseada em threads em um sistema operacional com suporte a
threads. Se uma das threads for bloqueada por solicitar uma operao de E/S, as demais threads
do mesmo processo:
Podero continuar executando se no dependerem da thread que foi bloqueada.
Sero bloquedas tambm.
No sero bloqueadas, mas ficaro aguardando o desbloqueio da thread que executou a
operao de E/S.
Sero interrompidas, provocando um erro no processo.
Solues
1) Threads de um mesmo processo podem ter suas execues independentes e compartilham
espao de endereamento de memria.
2) Podero continuar executando se no dependerem da thread que foi bloqueada.
COMUNICAO ENTRE PROCESSOS 21
Motivao
Processos e threads em sistemas multitarefa compartilham recursos.
Aprendemos nos captulos anteriores que processos e threads no executam direto, ou seja, desde o
inicio at ao fim. Durante o tempo de execuo, sofrem interrupes e ficam bloqueados
aguardando recursos.
Entendendo o exemplo
Considere que as variveis A e B, ambas iniciadas com o valor 1, so compartilhadas por duas
threads de um mesmo processo e cada uma delas dever executar:
Thread 1 Thread 2
Caso 1
Thread 1 executa linha 1 e linha 2
Thread 2 executa linha 1 e linha 2
Resultado final: A = 3; B = 3
Caso 2
Thread 2 executa linha 1 e linha 2
Thread 1 executa linha 1 e linha 2
Resultado final: A = 4; B = 3
Caso 3
Thread 1 executa linha 1
Thread 2 executa linha 1 e linha 2
Thread 1 executa linha 2
Resultado final: A = 3; B = 4
Podemos perceber neste exemplo muito simples que obtivemos 3 resultados diferentes em funo
da ordem em que os processos ocorrem. Esse efeito denominado condio de corrida.
Condio de corrida
Conjunto de eventos que geram resultados no determinsticos e deve
ser evitada.
O termo condio de corrida vem do fato da no previsibilidade do
resultado de uma corrida onde a velocidade de execuo de um
processo no pode ser prevista, pois depende das atividades dos outros
processos, da forma como o SO trata as interrupes e das estratgias
de escalonamento adotadas.
H condio de corrida quando existem recursos compartilhados entre duas ou mais threads ou
entre dois ou mais processos sem as devidas precaues.
Regio crtica
Parte do cdigo que trata recursos compartilhados e
deve ser protegida de forma a garantir acesso
exclusivo a um processo ou uma thread.
Repare que, no exemplo, a ordem de execuo das threads, mesmo sem interrupo, j suficiente
para permitir resultados diferentes.
A garantia de ordem de execuo ser alvo da prxima sesso deste captulo.
COMUNICAO ENTRE PROCESSOS 23
Exemplo Prtico
Esse problema aconteceu realmente em um sistema operacional bem conhecido que utiliza uma fila
de impresso para armazenar temporariamente os documentos que seriam impressos. Essa fila
implementada em uma rea de memria do sistema operacional compartilhada entre todos os
processos.
Quando um processo deseja imprimir, dever executar a seguinte rotina (fornecida como uma API
do sistema operacional):
1 2 3
Ler posio livre da Incluir o arquivo na Atualizar prxima
fila posio indicada posio livre
Para o processo 2, est tudo ok. Para o sistema operacional e para o gerenciador de impresso, est
tudo ok, pois a primeira posio livre realmente a posio 2. Para o processo 1, tambm est tudo
ok no houve erro; logo, no haver registro de erro.
Se est tudo certo, onde est o papel impresso do processo 1? "O gato comeu".
Simplesmente sumiu sem deixar registros. Algum j passou por isso? Se sim, agora j sabe que no
foi culpa do usurio. erro no cdigo!
ENTRAR_RC()
Cdigo da regio crtica
SAIR_RC()
ENTRAR_RC()
Ler posio livre da fila
Incluir o arquivo na posio indicada
Atualizar prxima posio livre
SAIR_RC()
Os mecanismos que implementam a excluso mtua podem colocar o processo que no deve ter
acesso ao recurso em espera ocupada (busy wait) ou bloque-lo ao executar a funo
ENTRAR_RC e dever permitir o acesso ou desbloque-lo ao executar a funo SAIR_RC.
Espera Ocupada
O processo em espera ocupada continua no estado de pronto e, a cada
execuo, tenta continuamente o acesso regio crtica. Esse
procedimento consome tempo de CPU desnecessariamente.
Bloqueio
O processo ser bloqueado e, acordado quando
o acesso a regio crtica estiver liberado.
Para que um mecanismo de excluso mtua seja efetivo, deve garantir que:
Deadlock
(Impasse) Situao em que dois ou mais processos entram em um impasse
aguardando um recurso que nunca estar disponvel. Essa situao s
desfeita por um agente externo (Exemplo: interromper um dos processos).
Starvation
Condio em que no h garantia de execuo de um processo.
A execuo pode ser adiada por um tempo indeterminado.
Ateno
Ateno para as condies de
ocorrncia de deadlock
COMUNICAO ENTRE PROCESSOS 26
Condies necessrias:
Excluso mtua;
Posse e espera (hold & wait);
No preempo.
Condio suficiente:
Espera circular:
Os processos P1 e P2 precisam dos recursos R1 e R2 para executar.
P1 est de posse de R1 e aguardando R2. P1 no executar enquanto no obtiver R2; logo,
no liberar R1.
P2 est de posse de R2 e aguardando R1. P2 no executar enquanto no obtiver R1; logo,
no liberar R2.
Sntese do Captulo
Voc aprendeu:
O que concorrncia entre processos.
Quais os efeitos de uma condio de corrida.
Como uma condio de corrida pode ser evitada.
Os conceitos de deadlock e starvation
Exerccios de Reviso
1) A condio de corrida derivada de:
Aplicaes concorrentes que no garantem excluso mtua s regies crticas.
Aplicaes baseadas em threads.
Sistemas operacionais sem suporte mltiplas threads.
Aplicaes em sistemas monotarefa que tentam executar ao mesmo tempo.
COMUNICAO ENTRE PROCESSOS 27
2) Preciso de giz e apagador para a aula. Peguei a caixa de giz, mas parei para conversar. Ao
tentar pegar o apagador fiquei sabendo que outro professor, que s daria aula no segundo
tempo, pegou o apagador e aguardava a caixa de giz que no estava sobre a mesa. No sabia
quem era o outro professor ento fiquei esperando que fosse devolvido. Como iria ter aula no
segundo tempo, resolvi guardar o giz e esperar o apagador. Esta situao retrata:
Uma condio de corrida.
Um deadlock em funo da excluso mtua no acesso aos dois recursos.
Um evento que ser solucionado assim que terminar a aula.
Um deadlock que poder ser solucionado indo em busca do apagador e arrancando-o da mo
do professor.
Solues
1) Aplicaes concorrentes que no garantem excluso mtua s regies crticas.
2) Um deadlock em funo da excluso mtua no acesso aos dois recursos.
SINCRONIZAO ENTRE PROCESSOS 28
Algoritmos;
Caractersticas de hardware;
Primitivas do sistema operacional.
ENTRAR_RC
Acesso ao recurso compartilhado
SAIR_RC
Processo 0 Processo 1
while turn = 0 do { } while turn = 1 do { } ENTRAR_RC
<RC> <RC>
vez = 1 vez = 0 SAIR_RC
Um dos processos permanece em espera ocupada at que o outro saa da regio crtica executando,
altere o valor da varivel vez permitindo que o outro processo saia do loop e execute a regio
crtica.
Se um dos processos falhar (abortar, por exemplo), o outro jamais poder entrar em sua RC
novamente, pois a varivel vez no ser alterada, contrariando uma das regras de
implementao de mecanismos de excluso mtua.
Diversos algoritmos foram propostos, porm, at a quarta verso, esses algoritmos apresentavam
problemas que feriam os princpios de excluso mtua.
A primeira soluo que garantiu a excluso mtua entre dois processos foi proposta por Dekker e
possui uma lgica bastante complexa. Esse algoritmo foi simplificado posteriormente por Peterson
generalizando o cdigo para n processos.
Algoritmo de Peterson
Apresenta uma soluo para dois processos que pode ser generalizada para N processos.
1. Antes de acessar a regio crtica, o processo sinaliza esse desejo atravs de uma varivel
booleana flag.
2. Porm o processo cede o uso do recurso ao outro processo indicado pela varivel vez.
3. Em seguida, o processo executa um loop at a obteno da varivel vez.
Processo 0 Processo 1
flag[0] = true flag[1] = true
vez = 1 vez = 0
while flag[1] and vez = 1 { } while flag[0] and vez = 0 { } ENTRAR_RC
<RC> <RC>
flag[0] = false flag[1] = false SAIR_RC
Inibir Interrupes
a soluo mais simples para o problema de excluso mtua, pois permite que um processo
desligue o recebimento de interrupes antes da execuo de uma regio crtica, impedindo a troca
de contexto. As interrupes so novamente habilitadas aps o trmino da regio crtica.
Nesse exemplo, sero utilizadas as instrues da famlia de processadores x86 para desligar (cli) e
ligar(sti) as interrupes:
CLI ENTRAR_RC
<RC>
STI SAIR_RC
Instrues TSL
So instrues atmicas que executam a leitura de uma varivel utilizada para lock, armazenando
temporariamente seu valor em um registrador.
Sem sofrer interrupo, essa instruo valida o contedo da varivel e faz a alterao se necessrio.
Veja a implementao dessa instruo:
ENTRAR_RC
TSL RX, LOCK
CMP RX, #0
JNE ENTRA_RC
RET
SAIR_RC
MOV LOCK, #0
RET
O valor 0 (zero) significa que a regio crtica est livre, o valor configurado para 1 e o acesso
obtido.
Se, ao tentar o acesso, o valor est em 1, o processo permanece em espera ocupada at que o valor
da varivel seja configurado para 0 (zero) pela execuo de SAIR_RC.
Semforos
Um processo suspenso enquanto no obtm acesso a regio crtica.
O processo bloqueado acordado atravs de um sinal.
Monitores
O monitor composto de vrias rotinas cujas variveis somente so acessadas dentro do
monitor.
Um processo entra no monitor chamando uma das suas rotinas.
Somente um processo entra no monitor de cada vez.
Troca de Mensagens
Utilizado tambm em sistemas distribudos.
Utiliza primitivas send e receive para o envio e recebimento de mensagens.
As primitivas podem ou no bloquear o processo.
Considere um receive bloqueante e um send no bloqueante. O processo deve aguardar
um send para liberar o processo bloqueado na instruo receive.
Os semforos sero alvo de estudo mais detalhado.
SINCRONIZAO ENTRE PROCESSOS 31
Detalhando os Semforos
O conceito de semforo foi proposto por Dijkstra para implementao de excluso mtua e
sincronizao condicional entre processos.
Ateno
Um semforo uma estrutura de dados composta por um
contador e uma fila que registra os processos pendentes em
ordem de solicitao.
O semforo possui regras de acesso.
Considere P0, P1 e P2 trs processos que desejam acesso a uma regio crtica e s o semforo que
controla esse acesso, inicializado com 1.
Wait(s)
Regio Crtica
Signal(s)
P0 P1 P2
Executa wait(s) ento s = 0 Executa wait(s) ento s = -1 Executa wait(s) ento s = -2
Regio Crtica BLOQUEIO BLOQUEIO
Regio Crtica
Executa signal(s) ento s = -1 Regio Crtica
Executa signal(s) ento s = 0
Desbloqueia P1 Executa signal(s) ento s = 1
Desbloqueia P2
Sincronizao Condicional
Um processo precisa de um resultado de outro processo
para que possa continuar sua execuo.
Caso 1
Problema do produtor/consumidor com buffer de armazenamento infinito.
s - excluso mtua
n - controle de consumo
Inicialmente s = 1 e n = 0
Produtor(i) {
while(T) {
produz_item()
wait(s)
adiciona_item()
signal(s)
signal(n)
}
}
Consumidor(i) {
while(T) {
wait(n)
wait(s)
remove_item()
signal(s)
consome_item()
}
}
Execuo
1. Se o consumidor executar primeiro: ao executar wait(n), decrementar o valor de n (que
zero), ficando negativo. O processo ser bloqueado.
SINCRONIZAO ENTRE PROCESSOS 33
2. Quando um produtor executar, obter acesso regio crtica incluindo um item no buffer e
sinalizando que h itens produzidos incrementando o valor de n (signal n). Pelo algoritmo da
funo signal, o processo que est bloqueado ser acordado.
Caso 2
Problema do produtor/consumidor com buffer de armazenamento finito.
Esse problema semelhante ao anterior, porm ser necessrio outro semforo de sincronizao
que controle os espaos vazios no buffer. Tm-se ento trs semforos:
s - excluso mtua
n - controle de consumo
v - controle de espaos vazios
(Regio crtica liberada, no h itens para consumo e todos os espaos esto livres)
Produtor(i) {
while(T) {
produz_item()
wait(v)
wait(s)
adiciona_item()
signal(s)
signal(n)
}
}
Consumidor(i) {
while(T) {
wait(n)
wait(s)
remove_item()
signal(s)
consome_item()
signal(v)
}
}
Execuo
O produtor executar v vezes at que o buffer esteja cheio. Ao tentar executar mais uma vez,
ficar bloqueado.
SINCRONIZAO ENTRE PROCESSOS 34
Quando um consumidor executar, obter acesso a regio crtica removendo um item no buffer e
sinalizando que h espao disponvel incrementando o valor de v (signal v). Pelo algoritmo da
funo signal, o processo que est bloqueado ser acordado.
Suponha que o buffer possua trs posies (v=3):
Sntese do Captulo
Voc aprendeu:
Como funciona uma soluo baseada em algoritmo e os problemas encontrados.
Como caractersticas do processador podem ser utilizadas na implementao de excluso
mtua.
O que so semforos e como utiliz-los para garantir excluso mtua.
Exerccios de Reviso
1) Considere o problema do produtor/consumidor com buffer infinito (caso 1). O que acontece se
trocarmos de posio as linhas wait(n) e wait(s) na rotina consumidor?
Deadlock
Condio de corrida
Starvation do produtor
No faz diferena a ordem em que estas linhas so executadas
SINCRONIZAO ENTRE PROCESSOS 35
2) Considerando o problema do produtor/consumidor com buffer finito (caso 2), o que acontece se
trocarmos de posio as linhas signal(n) e signal(s) na rotina produtor?
Condio de corrida.
Deadlock.
Starvation do consumidor.
No faz diferena a ordem em que estas linhas so executadas.
Solues
1) Deadlock.
2) No faz diferena a ordem em que estas linhas so executadas.
GERNCIA DE TEMPO DE CPU 36
Escalonamento
Escalonar uma funo do Sistema Operacional que consiste em escolher (determinar) dentre os
processos candidatos aquele que:
Estratgias de Escalonamento
A estratgia de escalonamento adotada dever:
Ateno:
importante lembrar que o escalonador s pode
executar quando o processo que estiver
utilizando o processador for interrompido ou
bloqueado.
Escalonador
Processo do sistema operacional responsvel por
indicar o prximo processo que ser executado dos
que estiverem prontos para execuo segundo uma
estratgia pr-definida.
GERNCIA DE TEMPO DE CPU 37
Dispatcher
Processo do sistema operacional responsvel
pela troca de contexto.
Ateno
Pode haver conflito de interesses: Usurio quer
que seu processo termine logo (tempo de
resposta baixo) e sistema quer que vrios
processos sejam atendidos. (throughput alto).
Tipos de Estratgia
As polticas de escalonamento podem ser classificadas segundo a possibilidade do Sistema
Operacional permitir ou no a interrupo de um processo em execuo e substitu-lo por outro.
Critrios de Escalonamento
Existem 5 critrios de escalonamento:
FCFS
Sem preempo
Processos so executados na ordem de chegada
Processos curtos podem esperar em demasia
Favorece processos CPU-bound
Processos I/O-bound esperam processo CPU-bound terminar ou ficar
bloqueado. Quando este fica bloqueado, a CPU fica ociosa.
Prioridade
Cada processo recebe uma prioridade ao ser iniciado.
O escalonador seleciona o processo pronto de maior prioridade.
Existem vrias filas pronto, uma para cada nvel de prioridade.
Processos de baixa prioridade podem sofrer Starvation.
Uma soluo possvel mudar dinamicamente a prioridade de acordo com a idade
ou o histrico de execuo do processo.
SJF
Poltica sem preempo.
Baseado em estimativa do tempo de execuo.
Processo com o tempo esperado de execuo menor selecionado primeiro.
Favorece processos curtos em detrimento dos longos.
Utilizado em sistemas batch.
Round Robin (Circular)
Usa preempo baseado num Quantum(time slice, fatia de tempo).
GERNCIA DE TEMPO DE CPU 38
Critrios de Escalonamento
Critrio de escalonamento: conjunto de regras que indicar qual o prximo processo que ser
executado.
Round Robin
1 5 10 15 20
P1
P2
P3
P4
P5
Atividade Proposta
Calcule o tempo estimado de cada resposta. Para simplificar os clculos sero desconsiderados os
tempos de troca de contexto e a diferena de tempos entre as inseres de cada processo.
Solues
FCFS
SJF
Round Robin
Para esta estratgia ser necessrio definir qual ser a fatia de tempo. Neste exemplo a
fatia de tempo ser de 10 ms.
Para facilitar a visualizao, a tabela ser dividida em ciclos e o tempo de resposta
calculado somente no final.
Execuo: ciclo 1 > ciclo 2 > ciclo 3 > ciclo 4 > ciclo 5 > ... > ciclo 20
A 10 10 10 10 10 10 10 10 10 10 ... 10 > Tempo de resposta = 370ms
B 10 10 10 10 10 10 10 10 10 10 > Tempo de resposta = 270ms
C 10 10 10 10 10 > Tempo de resposta = 170ms
D 10 10 > Tempo de resposta = 80ms
Sntese da Aula
Voc aprendeu:
Exerccios de Fixao
1) Cinco jobs, A, B, C, D e E, em batch, chegam ao computador com 1 segundo de intervalo entre
eles. Seus tempos de processamento so estimados em 10, 7, 3, 4 e 5 segundos de CPU,
respectivamente. Sendo round-robin a poltica de escalonamento utilizada, com um time-slice
de 1 segundo, o tempo mdio de turnaround desses processos (ignorando overheads de troca de
contexto e interrupes e assumindo que um job recm-chegado colocado no incio da fila, ou
seja, na frente dos outros) :
25,5 segundos
13,1 segundos
10,0 segundos
19,6 segundos
2) Throughput :
A taxa de utilizao da CPU
O tempo que um processo leva desde a sua admisso at o seu trmino
O nmero de processos executados em um determinado intervalo de tempo
A frao de tempo de CPU dada a um determinado processo
Solues
1) 19,6 segundos
2) O nmero de processos executados em um determinado intervalo de tempo
3) com preempo, no-preemptivos, temporria, o fim
GERNCIA DE ALOCAO DE MEMRIA 42
Conceito
Alocar memria consiste em subdividir e alocar espaos para acomodar os processos em
execuo. necessrio que haja uma estratgia definida para esta tarefa porque:
Contguo Simples
Esttico
Esttico Relocvel
Dinmico
Paginado
Segmentado
Contguo Simples
Somente uma partio da memria criada para apenas um nico processo. Parte da memria
ocupada pelo sistema operacional e outra parte para o processo em execuo.
Este modelo somente pode ser utilizado em sistema monotarefa que no so mais utilizados.
Esttico
Implementao simples em que cada processo recebe um endereo fixo de uma partio para
executar denominado endereo absoluto.
GERNCIA DE ALOCAO DE MEMRIA 43
Fragmentao interna
Espao na utilizado dentro de uma partio
Esttico Relocvel
Semelhante ao particionamento esttico, porm os processos podem ser alocados em qualquer
partio.
Dinmico
A estratgia de alocao dinmica permite o particionamento sob demanda, ou seja, a partio
criada durante a alocao do processo exatamente do tamanho que ser utilizada.
Essa estratgia evita a fragmentao interna, mas permite a ocorrncia de fragmentao externa,
ou seja, fragmentao entre as parties.
GERNCIA DE ALOCAO DE MEMRIA 44
Fragmentao externa
Ocorre em funo da diferena do espao necessrio para cada
processo, permitindo que, ao reutilizar um espao, parte dele
no seja ocupado formando buracos. Como esse espao pode ser
muito pequeno, ficaria sem utilizao posterior.
Essa fragmentao menos prejudicial, pois os espaos vazios
contguos sero reagrupados.
Paginado
A memria particionada em pedaos de tamanho igual, assim como os processos.
Cada pgina alocada em uma moldura, ento cada pgina precisa estar mapeada para uma
moldura.
O deslocamento o mesmo na pgina e na moldura j que so do mesmo tamanho.
Exemplo: O terceiro endereo da pagina x ser o terceiro endereo da moldura que recebeu a
pgina.
Considere o exemplo de traduo de endereo:
Cada endereo possui 16 bits, sendo 10 para deslocamento e 6 para identificao da pgina.
A quantidade de bits utilizada para o offset a mesma para o endereo lgico e para o
fsico uma vez que pgina e moldura possuem o mesmo tamanho.
Com 10 bits de tamanho de pgina, podemos afirmar que cada pgina possui 210 endereos.
Se cada endereo ocupar 32 bits (4 bytes), podemos afirmar que a pgina ocupa 4 x 210
bytes, ou seja, 4KB.
Como foram utilizados 6 bits para indicao da pgina, podemos afirmar que cada processo
pode ter no mximo 26 pginas, ou seja, 64 pginas.
Como cada processo possui 26 pginas e cada pgina possui 4KB (22 x 210 bytes), o tamanho
mximo de um processo de 26 x 22 x 210 bytes que igual a 28 x 210 bytes ou 256KB.
Segmentado
Cada programa subdividido em blocos de diferentes tamanhos chamados segmentos.
Quando um processo carregado para a memria principal, cada segmento diferente pode ocupar
qualquer lugar.
O S.O. mantm uma tabela de segmentos de cada processo. Cada entrada contm:
O incio do endereo fsico daquele segmento.
O tamanho do segmento (por proteo).
Apresenta fragmentao externa.
GERNCIA DE ALOCAO DE MEMRIA 46
Sntese do Captulo
Voc aprendeu:
Exerccios de Fixao
1) Considere um sistema baseado em memria paginada com endereo lgico de 32 bits sendo 8
bits utilizados para identificao da pgina e os demais para o offset. Quantos endereos cada
pgina possui?
16M
2M
24M
4K
2) Considere um sistema baseado em memria paginada com endereo lgico de 32 bits sendo 8
bits utilizados para identificao da pgina e os demais para o offset. Quantas pginas um
processo pode ter?
8
256
32
1024
3) Considere um sistema baseado em memria paginada com endereo lgico de 32 bits sendo 8
bits utilizados para identificao da pgina e os demais para o offset. Qual o tamanho mximo
de um processo, considerando que cada endereo ocupa 2 bytes?
32GB
32MB
8MB
8GB
Solues
1) 16M
2) 256
3) 8GB
4) A estratgia de memria paginada apresenta fragmentao interna.
MEMRIA VIRTUAL 48
8. MEMRIA VIRTUAL
Objetivos
Entender a necessidade de memria virtual.
Entender os princpios de funcionamento de memria virtual e o impacto do uso em um sistema.
Conhecer os principais mecanismos de substituio de pginas na memria.
Endereamento
Todas as referncias memria so feitas utilizando endereos lgicos virtuais (referncia
utilizada pelo programa) que so traduzidos em endereos fsicos (endereo real na memria
utilizado pela CPU) em tempo de execuo.
Vantagens
Mais processos mantidos na memria principal:
Os processos so carregados parcialmente.
Maior eficincia na utilizao do processador.
Todo programador tem disponvel uma memria de trabalho (virtual) de tamanho igual a
todo espao de endereamento disponvel.
Desvantagens
Maior tempo de resposta para as referncias memria.
Maior complexidade do hardware e do esquema de gerenciamento.
Impossibilidade de estimar, de forma precisa e segura, o tempo a ser gasto em qualquer
referncia memria.
Para utilizao de memria virtual necessrio que haja suporte de hardware e do sistema
operacional.
MEMRIA VIRTUAL 49
Suporte de Hardware
Traduo (mapeamento) eficiente de endereos.
Movimentao eficaz dos trechos de informao entre a memria virtual e a fsica.
Sistema Operacional
O S.O. se encarrega de trazer para a memria fsica as partes necessrias para a execuo
do programa.
Re-alocao eficiente da memria fsica.
Implementao do Princpio da Localidade.
Reduo de Trashing.
Princpio da Localidade
- As referncias de memria tendem a ser agrupadas em termos espaciais
e/ou temporais.
- Em um programa bem construdo, a probabilidade mdia da prxima
instruo a ser executada ser a seguinte ou estar nas redondezas da
instruo corrente mais elevada do que outras hipteses.
- Somente alguns trechos do cdigo so necessrios para a execuo num
curto espao de tempo.
- possvel ter uma razovel noo dos trechos de cdigo que sero
utilizados num futuro prximo, reduzindo os riscos de trashing.
Reduo de Trashing
- Poderia ser traduzido como fazendo lixo
- Ocorre quando o sistema passa a maior parte do tempo removendo e
trazendo partes de processos ao invs de executar instrues dos
mesmos.
- A memria normalmente est toda ocupada com partes de diversos
processos; ento, quando o SO precisa carregar uma nova parte, outra
parte precisar ser removido para abrir espao.
- Se for removida uma parte que seja referenciada logo a seguir, esta
precisar ser carregada novamente.
Caractersticas de Implementao
A organizao lgica da memria se divide em trs tipos:
Paginada
Segmentada
Segmentada com Paginao
Estudaremos a organizao Paginada por ser a implementao mais usual de memria virtual.
Ateno
Algumas molduras podem ser marcadas como no
removveis (locked ou pinned), como:
- cdigo do kernel
- estruturas crticas do S.O.
- buffers de E/S
Sntese do Captulo
Voc aprendeu:
Quais as formas de alocao de memria para os processos ativos.
MEMRIA VIRTUAL 52
Exerccios de Reviso
1) Considerando a sequncia de referncia de pginas abaixo e a utilizao de 6 molduras
(frames). A situao das molduras, imediatamente antes do incio da sequncia, inseridas nesta
ordem (moldura 1, 2,3...6), :
T1
Moldura 1 1
Moldura 2 12
Moldura 3 11
Moldura 4 9
Moldura 5 6
Moldura 6 3
2) Qual a situao final das molduras utilizando a estratgia de substituio das pginas LRU?
4 - 7 - 12 - 5 - 2 - 3
5 - 3 - 7 - 12 - 6 - 2
4 - 7 - 11 - 12 - 2 - 3
5-4-7-9-6-3
Solues
1) 4 - 7 - 12 - 5 - 2 - 3
2) 5 - 3 - 7 - 12 - 6 - 2
3) 5 e 6
DISPOSITIVOS DE ENTRADA E SADA 53
Sistema Operacional
- E/S independente do dispositivo.
- Interface padro (API).
- Driver (mecanismos de acesso ao dispositivo fornecendo uma viso uniforme)
Hardware
Detalhando os Componentes
Componentes de Hardware
Perifrico ou Dispositivo de E/S: Dispositivo conectado a um computador para permitir a
comunicao com o mundo externo.
Interface: Componente que conecta o perifrico aos barramentos do computador.
Controlador: Componente que implementa as operaes (l, escreve...) e faz parte da
interface.
Componentes de Software
Perifrico ou dispositivo de E/S: Endereo de referncia no sistema de E/S. Utiliza um
conjunto de registradores internos ao controlador que recebem ordens do processador e
fornecem o status de uma operao. Os registradores so associados a endereos.
A referncia depende da arquitetura do processador e implementada de duas formas:
Em espao de memria: Na fase de projeto do computador definida uma zona de
endereamento de memria que ser utilizada para dispositivos de E/S. Utilizam a
mesma instruo para acesso a um dispositivo ou para um endereo de memria
(mov).
Em espao de E/S: Instrues especiais para manipulao de dispositivos. No
projeto do processador so definidos dois espaos distintos de endereamento.
Utilizam instrues distintas para acesso a endereos de E/S (in, out) e para acesso
memria (mov).
E/S independente do dispositivo: Funes de gerenciamento de alocao e uso do
dispositivo e no dependem de caractersticas do hardware, tais como:
Escalonamento de E/S: define a ordem de atendimento s requisies.
Denominao: prov associao de um nome a um perifrico.
Buferizao: buffer uma rea de armazenamento temporrio utilizado para
transferncia de dados entre dois elementos. So utilizados para compatibilizar a
DISPOSITIVOS DE ENTRADA E SADA 55
Quanto a Comunicao
Comunicao com o usurio
Comunicao com o equipamento
Comunicao com dispositivos
Forma de Comunicao
Programmed I/O: Tratamento de acesso de responsabilidade do programador, fazendo com
que a aplicao aguarde o trmino da operao de E/S.
Interrupt-driven I/O: O processo que executou a operao permanece bloqueado at que a
operao se complete. O Processador interrompido quando a operao de E/S termina
colocando o processo no estado de pronto.
Direct memory Access (DMA): Transferncia dos dados diretamente para a memria sem
interferncia do processador.
Sntese do Captulo
Voc aprendeu:
O que um subsistema de E/S.
Os tipos de dispositivos e suas caractersticas.
Exerccios de Fixao
1) Quais dos itens abaixo so componentes de software em um sistema de entrada e sada?
Drivers e controladores
Drivers e interface
Drivers e APIs
Controladores e interface
Calcular trilha e setor para uma leitura do disco e verificar as permisses de acesso para um
dispositivo.
Verificar as permisses de acesso para um dispositivo e fornecer APIs.
Fornecer APIs e gerenciar o buffer do dispositivo.
Solues
1) Drivers e APIs
2) Escrever comandos nos registradores do dispositivo e calcular trilha e setor para uma leitura do
disco.
SISTEMA DE ARQUIVOS 57
Caractersticas de um Arquivo
Persistncia: Arquivos so armazenados em discos, ou em outro meio de armazenamento
no voltil, e no desaparecem ao trmino da sesso.
Compartilhamento: Arquivos podem ser compartilhados por processos diferentes.
Estrutura: Possuem uma organizao interna em funo do tipo de informao que
armazena.
Atributos de um Arquivo
Nome: Representao utilizada para o usurio.
Tipo: Necessrio em sistemas que utilizam mais de um tipo de arquivo.
Localizao: Identificao da posio de um arquivo em um dispositivo especfico.
Tamanho: Registro do tamanho atual do arquivo.
Proteo: Informaes de controle de acesso.
Usurio: Identificao do criador do arquivo.
Data e hora: Registro da criao, ltimo acesso e ltima modificao.
Os arquivos podem ser armazenados em diferentes dispositivos fsicos como discos magnticos,
ticos, pen drive, fitas magnticas etc.
A forma como o arquivo nomeado, armazenado e recuperado definida pelo sistema de arquivos
do sistema operacional.
Facilidade de manuteno.
Confiabilidade.
Organizaes
Sem estrutura: No h nenhuma estrutura lgica. A aplicao deve ser uma sequncia de
bytes e fazer as interpretaes necessrias.
Registros: uma estrutura em que cada elemento possui um conjunto de campos. Esses
campos podem ou no ter um tamanho fixo. Ex: Registros de um estudante contendo
campos de tamanho fixo: nome, telefone e CPF.
Mtodos de Alocao
Vamos estudar trs mtodos de alocao. So eles:
Contgua
Encadeada
Indexada
Contgua
Conjunto contguo de blocos alocados na criao.
Tabela de alocao contm uma entrada (inicio e tamanho) para cada arquivo.
Necessrio pr-alocao.
Encadeada
Cada bloco contm um ponteiro para o prximo.
Tabela de alocao contm uma entrada para o primeiro bloco.
Adequada para arquivos de acesso sequencial.
Para ter acesso a um determinado bloco, necessrio percorrer a lista at o bloco desejado.
SISTEMA DE ARQUIVOS 59
Indexada
A tabela de alocao contm um ndice para cada arquivo.
Proteo de Acesso
Motivao
Compartilhamento do meio de armazenamento por diversos usurios.
Implementaes
Senhas de acesso a um arquivo.
Criptografia.
Concesso de direitos de acesso a cada usurio ou a usurios de um mesmo grupo. Esses direitos
podem ser para leitura, escrita ou execuo de um programa.
Sntese do Captulo
Voc aprendeu:
Como os arquivos so armazenados.
Como um determinado tipo de arquivo acessado pelo sistema operacional.
A ltima funo de gerenciamento de um sistema operacional estudada neste curso.
Exerccios de Fixao
1) So funes do sistema de arquivos:
Gerenciar permisses de acesso e a alocao do arquivo em disco.
Gerenciar alocao em disco e verificar a ortografia do contedo dos documentos.
Gerenciar espaos livres e o posicionamento das cabeas de leitura e gravao do disco.
Gerenciar permisses de acesso e ajustar a velocidade de rotao do disco.
Solues
1) Gerenciar permisses de acesso e a alocao do arquivo em disco.
2) I e II esto corretas.