Você está na página 1de 138

www.cliqueapostilas.com.

br

www.cliqueapostilas.com.br

PRESIDENTE DA REPBLICA
Luiz Incio Lula da Silva
MINISTRO DA EDUCAO
Fernando Haddad
GOVERNADOR DO ESTADO DO PIAU
Wellington Dias
UNIVERSIDADE FEDERAL DO PIAU
Luiz de Sousa Santos Jnior
SECRETRIO DE EDUCAO A DISTNCIA DO MEC
Carlos Eduardo Bielschowsky
COORDENADORIA GERAL DA UNIVERSIDADE ABERTA DO BRASIL
Celso Costa
SECRETRIO DE EDUCAO DO ESTADO DO PIAU
Antnio Jos Medeiros
COORDENADOR GERAL DO CENTRO DE EDUCAO ABERTA A DISTNCIA DA UFPI
Gildsio Guedes Fernandes
SUPERINTENDENTE DE EDUCAO SUPERIOR DO ESTADO
Eliane Mendona
CENTRO DE CINCIAS DA NATUREZA
Helder Nunes da Cunha
COORDENADOR DO CURSO DE SISTEMA DE INFORMAO NA
MODALIDADE EAD
Carlos Andr Batista de Carvalho
COORDENADORA DE MATERIAL DIDTICO DO CEAD/UFPI
Cleidinalva Maria Barbosa Oliveira
DIAGRAMAO
Joaquim Carvalho de Aguiar Neto

www.cliqueapostilas.com.br

APRESENTAO

Sistemas Operacionais (SO) uma disciplina essencial e


obrigatria em praticamente todos os cursos universitrios de
Computao. De fato, um Sistema Operacional uma parte
essencial de qualquer Sistema de Computao. Trata-se, ento, de
uma rea de pesquisa bastante interessante, que evolui a todo o
momento, posto que os Sistemas de Computao esto em
constante evoluo.

Um Sistema Operacional um conjunto de rotinas executado


pelo processador (CPU), de forma anloga aos programas de
usurios.

principal

funo

dessas

rotinas

controlar o

funcionamento do Sistema Computacional, gerenciando de forma


otimizada os recursos disponveis, como processadores, memria e
dispositivos de entrada e sada, alm de, na medida do possvel,
fazer a interface entre o hardware e o usurio final, procurando
esconder sua complexidade e mostrando um ambiente agradvel e
de fcil utilizao.

Se no existisse o Sistema Operacional, o usurio, para poder


manipular o computador, deveria conhecer os diversos detalhes de
hardware, o que tornaria o seu trabalho mais cansativo, lento e
imprprio, com uma grande perspectiva de erros.

O objetivo desta apostila proporcionar ao leitor um bom


entendimento sobre o fantstico mundo dos Sistemas Operacionais.
Ao longo dos captulos iremos abordar os conceitos bsicos que
envolvem toda a rea, alm de detalhar cada estrutura formadora de
um Sistema Operacional. Cada captulo acompanhado de
embasamento terico sobre cada parte de um Sistema Operacional,

www.cliqueapostilas.com.br

alm de exerccios para praticar o assunto. A bibliografia e a


webliografia ao fim das notas so mais do que suficiente para que o
leitor se aprofunde na teoria apresentada em cada unidade.

Esta apostila completamente baseada em notas de aula do


autor da disciplina de Sistemas Operacionais, ministrada no curso de
Bacharelado em Cincia da Computao da Universidade Federal
do Piau, alm de livros clssicos de Sistemas Operacionais, como
Sistemas
(referncia

Operacionais
bsica

Modernos,
principal),

de

Andrew

Fundamentos

Tanenbaum
de

Sistemas

Operacionais, de Abraham Silberschatz e Operating Systems (J.


Bacon). Outro livro que foi levado em considerao como base
dessa apostila o de Sistemas Operacionais do professor Rmulo
Oliveira da Universidade Federal de Santa Catarina, livro este
bastante didtico e utilizado como referncia na maioria dos cursos
de Sistemas Operacionais no pas.

Contedo desta Apostila


Na Unidade I apresentaremos o conceito de Sistemas
Operacionais,

que

eles

fazem

como

so

projetados.

Abordaremos o conceito de um Sistema Operacional partindo da


viso de uma mquina estendida, que procura esconder a
complexidade de hardware para o usurio e da viso de um
gerenciador de recursos, que procura gerenciar todos os recursos
disponveis

pelo

Sistema

Computacional.

Nesta

unidade,

mostraremos tambm um histrico dos Sistemas Operacionais,


mostrando sua evoluo durante os anos, sempre acompanhado da
evoluo dos Sistemas Computacionais. Alm disso, trataremos de
classificar os Sistemas Operacionais e apresentar como um Sistema
Operacional estruturado. Ao fim de cada unidade teremos
exerccios a fim de que o aluno possa praticar os conhecimentos
adquiridos.

www.cliqueapostilas.com.br

Na Unidade II comearemos a descrever a primeira parte de


um projeto de Sistemas Operacionais que trata do gerenciamento de
processos. Nesta unidade mostraremos como projeto o modelo de
processos, abordando os conceitos bsicos, comunicao interprocessos (CIP), mtodos de excluso mtua, problemas clssicos
de CIP e o gerenciamento do processador, abordando os algoritmos
clssicos de escalonamento de processos, que a partir de uma lista
de processos escolhe qual utilizar a CPU para executar suas
atividades.

Na Unidade III est destinada ao gerenciamento dos


dispositivos de entrada e sada. Atravs dos dispositivos de entrada
e sada feito a ligao entre o sistema e o mundo exterior. Na
unidade mostraremos os princpios de hardware e de software dos
dispositivos de entrada e sada. Comumente a quantidade desses
dispositivos muito menor que a quantidade de processos que
necessitam deles. Dessa forma, o Sistema Operacional deve
gerenci-los a fim de se evitar problemas. Veremos tambm nesta
unidade as situaes de impasses (deadlocks) entre os processos.

Na Unidade IV, por sua vez, trataremos do gerenciamento de


um recurso altamente importante para qualquer sistema: a memria.
O ideal seria que o usurio tivesse uma quantidade infinita de
memria, rpida, no-voltil e com um preo acessvel. Porm,
essas caractersticas so contraditrias e, assim, o sistema deve
gerenciar a memria disponvel no Sistema Computacional que,
comumente, limitada. Veremos tambm nesta unidade o mtodo
de gerenciamento conhecido como memria virtual.

Por fim, na Unidade V mostraremos a parte do Sistema


Operacional mais visvel pelo usurio: o Sistema de Arquivo. As
informaes necessitam ser gravadas de forma permanente e isso
acontece

atravs

da

abstrao

arquivos.

Nesta

unidade

www.cliqueapostilas.com.br

mostraremos as caractersticas gerais de arquivos e diretrios e


como eles podem ser implementados.

Boa Leitura!!
Erico Meneses Leo

www.cliqueapostilas.com.br

SUMRIO GERAL

UNIDADE I VISO GERAL

1. INTRODUO
1.1. Definio de Sistemas Operacionais
1.2.Objetivos de um Sistema Operacional
1.3. Histria dos Sistemas Operacionais
1.3.1. Incio
1.3.2. Primeira Gerao (1945-1955)
1.3.3. Segunda Gerao (1956-1965)
1.3.4. Terceira Gerao (1966-1980)
1.3.5. Quarta Gerao (1981-Atual)
1.4. Classificao dos Sistemas Operacionais
1.4.1. Sistemas Monoprogramveis ou Monotarefas
1.4.2. Sistemas Multiprogramveis ou Multitarefas
1.4.3. Sistemas Multiprocessadores
1.5. Estrutura do Sistema Operacional
1.5.1. Chamadas de Sistemas
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

UNIDADE II GERENCIAMENTO DE PROCESSOS

1. INTRODUO AO MODELO DE PROCESSOS


1.1. Conceito de Processos
1.2. Criao de Processos
1.3. Estados de um Processo
1.4. Tabelas de Processos

www.cliqueapostilas.com.br

1.5. Threads
2. COMUNICAO INTERPROCESSO
2.1. Condies de Corrida
2.2. Sees Crticas
2.3. Excluso Mtua com Espera Ativa
2.3.1. Desativando Interrupes
2.3.2. Variveis de Bloqueio
2.3.3. Alternncia Estrita
2.3.4. A Soluo de Peterson
2.4. Problema dos Produtores e Consumidores
2.5. Semforos
3. PROBLEMAS CLSSICOS DE CIP
3.1. Problema do Jantar dos Filsofos
3.2. Problema do Barbeiro Adormecido
4. ESCALONAMENTO DE PROCESSOS
4.1. Algoritmo de Escalonamento FIFO (First in First out)
4.2. Algoritmo de Escalonamento Menor Tarefa Primeiro
4.3. Algoritmo de Escalonamento Round Robin
4.4. Algoritmo de Escalonamento por Prioridades
4.5. Algoritmo de Escalonamento Mltiplas Filas
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

UNIDADE III GERENCIAMENTO DE ENTRADA E SADA

1. INTRODUO
2. PRINCPIOS DE HARDWARE DE E/S
2.1. Dispositivos de Entrada e Sada
2.2. Controladoras de Dispositivos
2.2.1. Controladoras que suportam Acesso Direto Memria
3. PRINCPIOS DE SOFTWARE DE E/S

www.cliqueapostilas.com.br

3.1. Manipuladores de Interrupes


3.2. Drivers de Dispositivos
3.3. Software de E/S Independente de Dispositivo
3.4. Software de E/S de Nvel de Usurio
4. DEADLOCKS
4.1. Condies para um Impasse
4.2. Modelagem de Impasses atravs de Grafos
4.3. Mtodos de Lidar com Deadlocks
4.3.1. Algoritmo do Avestruz
4.3.2. Deteco e Recuperao
4.3.3. Preveno de Impasses
4.3.4. Impedimento de Impasses
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

UNIDADE IV GERENCIAMENTO DE MEMRIA

1. INTRODUO
2. GERENCIAMENTO BSICO DE MEMRIA
3. GERENCIA DE MEMRIA PARA MULTIPROGRAMAO

3.1. Alocao com Parties Variveis


3.1.1. Gerenciamento de Memria com Mapa de Bits
3.1.2. Gerenciamento de Memria com Listas Encadeadas
4. MEMRIA VIRTUAL
4.1. Paginao
4.2. TLB Translation Lookside Buffers
5. ALGORITMOS DE SUBSTITUIO DE PGINAS
5.1. Algoritmo de Substituio de Pgina timo
5.2. Algoritmo de Substituio de Pgina No Recentemente
Utilizada
5.3. Algoritmo de Substituio de Pgina FIFO

www.cliqueapostilas.com.br

5.4. Algoritmo de Substituio de Pgina de Segunda Chance


5.5. Algoritmo de Substituio de Pgina do Relgio
5.6. Algoritmo de Substituio de Pgina menos

Recentemente Utilizada
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

UNIDADE V SISTEMAS DE ARQUIVOS

1. INTRODUO AOS SISTEMAS DE ARQUIVOS


1.1. Arquivos
1.1.1. Nomeao de Arquivos
1.1.2. Estruturas de Arquivos
1.1.3. Tipos de Arquivos
1.1.4. Acesso aos Arquivos
1.1.5. Atributos de Arquivos
1.1.6. Operaes com Arquivos
1.2. Implementao de Arquivos
1.2.1. Alocao Contgua
1.2.2. Alocao por Lista Encadeada
1.2.3. Alocao por Lista Encadeada Usando ndice
1.3. Diretrios
1.3.1. Organizao de Sistemas de Diretrios
1.3.2. Nomes de Caminhos
1.3.3. Operaes com Diretrios
1.4. Implementao de Diretrios
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

www.cliqueapostilas.com.br

Para iniciarmos nosso curso de Sistemas Operacionais (SO)


devemos compreender as definies bsicas que envolvem a rea.
A partir desse momento, a fim de evitar muitas repeties, iremos
tratar Sistemas Operacionais pelo termo SO. Nossa primeira
unidade dedicada viso geral sobre SO. Nela trataremos de
definir o que um Sistema Operacional, tomando por base duas
vises: a viso de SO como uma mquina estendida e o SO como
gerenciador dos recursos (Andrew Tanenbaum).
A definio de Sistemas Operacionais do ponto de vista de
uma mquina estendida procura esconder a complexidade do
hardware computacional. J a definio de Sistemas Operacionais
do ponto de vista gerenciador de recursos trata de organizar os
recursos computacionais disponveis, evitando assim possveis
problemas, como inconsistncias e disputas entre os programas.
Continuando na unidade, traremos um breve histrico dos
Sistemas Operacionais, que vem junto da evoluo dos Sistemas
Computacionais, alm da classificao dos SOs.
Ao fim da unidade, o leitor dever ter a capacidade de
entender como e por qu surgiram os Sistemas Operacionais, alm
de conhecer os tipos de Sistemas Operacionais. Ao fim da Unidade,

www.cliqueapostilas.com.br

o leitor ter disponveis exerccios e bibliografia clssica, o qual ele


poder

futuramente se

aprofundar no estudo

de

Sistemas

Operacionais, e quem sabe, ingressar nesta grande rea de estudo


e pesquisas.

www.cliqueapostilas.com.br

SUMRIO

SUMRIO

UNIDADE I VISO GERAL

1. INTRODUO
1.1. Definio de Sistemas Operacionais
1.2.Objetivos de um Sistema Operacional
1.3. Histria dos Sistemas Operacionais
1.3.1. Incio
1.3.2. Primeira Gerao (1945-1955)
1.3.3. Segunda Gerao (1956-1965)
1.3.4. Terceira Gerao (1966-1980)
1.3.5. Quarta Gerao (1981-Atual)
1.4. Classificao dos Sistemas Operacionais
1.4.1. Sistemas Monoprogramveis ou Monotarefas
1.4.2. Sistemas Multiprogramveis ou Multitarefas
1.4.3. Sistemas Multiprocessadores
1.5. Estrutura do Sistema Operacional
1.5.1. Chamadas de Sistemas
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

www.cliqueapostilas.com.br

UNIDADE I
VISO GERAL

1. INTRODUO

Antes de comearmos a detalhar os principais componentes


formadores

de

um

Sistema

Operacional

(SO),

devemos

primeiramente entender alguns conceitos e funcionalidades bsicas.


Devemos compreender que, se no existisse o Sistema Operacional,
at seria possvel utilizar os Sistemas Computacionais disponveis
atualmente,

porm,

complexidade

dificuldade

na

sua

manipulao os tornariam bem pouco atraentes.


Se no existisse o Sistema Operacional, o usurio, para
poder manipular o computador ou qualquer Sistema Computacional,
deveria conhecer os diversos detalhes de hardware (tarefa rdua), o
que tornaria o seu trabalho mais cansativo, lento e imprprio, sem
considerar a grande quantidade de problemas e erros nos resultados
obtidos.
Como explicitado por Rmulo (2008) em seu livro de
Sistemas Operacionais, em torno de um computador, existem
usurios com problemas a serem resolvidos, problemas esses que
podem se estender de simples entretenimento, at edio de textos,
figuras e atividades mais complexas, como uma anlise estatstica
ou um gerenciamento de uma empresa por completo. O software, de
um modo geral, utilizado para solucionar os problemas do usurio,
enquanto que o hardware do computador o dispositivo fsico capaz
de executar esses softwares. Esses softwares, responsveis por
realizar as atividades dos usurios, comumente so chamados de
programas aplicativos.
Com base no que j foi dito, surge a seguinte pergunta: mas
onde entra o Sistema Operacional? Assim, o Sistema Operacional

www.cliqueapostilas.com.br

pode ser caracterizado como uma camada de software localizado


entre o hardware e os programas aplicativos que executam as
atividades dos usurios, como esboado na Figura 1.

Figura 1: Sistema Computacional composto pelo hardware,


programas de sistemas e programa aplicativos.

Como pode ser visto na Figura 1, levando em considerao


que temos uma camada intermediria, o SO entre os programas
aplicativos e o hardware em si, o usurio no necessita conhecer
toda a complexidade de implementao do hardware do Sistema
Computacional para, assim, poder utiliz-lo. O Sistema Operacional,
de fato, opera como uma interface entre o usurio e o dispositivo
fsico em si, no qual o usurio, quando necessita acessa-lo, faz essa
solicitao diretamente ao Sistema Operacional.

1.1. Definio de Sistemas Operacionais


Segundo

Tanenbaum,

podemos

definir

um

Operacional levando em considerao dois pontos de vistas:

Sistema

www.cliqueapostilas.com.br

O Sistema Operacional como uma Mquina estendida;

O Sistema Operacional como gerenciador de recursos.

De fato, unindo e entendendo os dois pontos de vista, o aluno


ter total condio de definir um bom conceito de Sistemas
Operacionais. Examinaremos com detalhes esses dois pontos de
vista.

O Sistema Operacional como uma Mquina estendida


O usurio (que pode ser um programador ou um usurio
final), comumente, no est interessado em saber os detalhes
funcionais dos dispositivos. Como exemplo, o usurio no quer
saber o que preciso, a nvel de hardware, para que seja lido uma
determinada informao de um disquete ou de um disco rgido
(tarefa bem complexa, que exige o conhecimento de registradores,
motores, cilindros e outros dispositivos fsicos). O usurio deseja ter
uma interface mais palpvel e mais simples de lidar. No caso dos
discos, por exemplo, uma abstrao tpica seria que o disco
contenha um conjunto de nomes de arquivos. A partir desses
nomes, possvel realizar as operaes bsicas (abrir, ler, escrever
e fechar), sem se importar qual a velocidade e estado atual do
motor, por exemplo.
Assim, o Sistema Operacional aparece como o programa que
esconde do usurio a complexidade do hardware e apresenta uma
viso fcil e simples para as operaes sobre os dispositivos. Essa
viso equivalente a uma mquina estendida ou mquina virtual,
mais fcil de lidar.

O Sistema Operacional como gerenciador de recursos


Por outro lado, o Sistema Computacional composto de uma
srie de recursos, no qual podemos enumerar: processadores,

www.cliqueapostilas.com.br

memrias, discos, mouses, teclados, impressoras, placas de rede e


uma infinidade de dispositivos em geral. Dessa forma, o Sistema
Operacional aparece como sendo o responsvel por organizar e
alocar de forma ordenada todos esses recursos disponveis.
Essa tarefa, em uma primeira vista, pode parecer simples.
Porm, quando se tem vrios programas disputando os recursos,
que so limitados, necessrio utilizar tcnicas de alocao dos
dispositivos, a fim de se evitar inconsistncias e, at mesmo,
situaes que resultem numa parada do sistema de uma forma
geral.

1.2. Objetivos de um Sistema Operacional


Para o desenvolvimento de um Sistema Operacional devemos
ento ter como metas atingir os seguintes objetivos:

Tornar a utilizao do computador eficiente e conveniente,


a fim de ter um ganho de produtividade e, dessa forma,
utilizar

Sistema

Computacional

para

agilizar

as

atividades do dia-a-dia;

Garantir

integridade

segurana

dos

dados

armazenados e processados pelos programas e dos


recursos fsicos disponveis.

1.3. Histria dos Sistemas Operacionais


Os Sistemas Operacionais, ao longo dos anos, vm se
desenvolvendo e ganhando novas caractersticas, sendo necessrio
partimos ao seu histrico para que possamos compreender como se
deu essa evoluo. Partindo do pressuposto que a histria dos
Sistemas Operacionais sempre esteve intimamente vinculado
histria das arquiteturas de computadores, iremos fazer um breve
resumo dos principais eventos relacionados evoluo dos
Sistemas Operacionais.

www.cliqueapostilas.com.br

1.3.1. Incio
O primeiro computador digital, de fato, foi projetado por volta
da dcada de 1820 pelo matemtico Charles Babbage e intitulada
como motor analtico. Esta mquina, por se tratar de um
equipamento puramente mecnico e a tecnologia da poca no
permitir a construo de engrenagens de alta preciso o qual
Babbage necessitava, nunca funcionou adequadamente. Assim, o
Mquina Analtica de
Babbage.

motor analtico de Babbage no possua Sistema Operacional.


Um dado interessante est no fato de que Babbage sabia que
era preciso de um software para o seu motor analtico e, assim,
contratou uma jovem chamada Ada Lovelace como primeiro
programador do mundo. O nome da linguagem de programao Ada
foi criado em homenagem a esta jovem.

1.3.2. Primeira Gerao (1945-1955)


Impulsionado pela Segunda Guerra Mundial, surgiram os
grandes computadores digitais, formados por milhares de vlvulas e
que ocupavam salas inteiras. Estes computadores, desenvolvidos
por Howard Aiken e John von Neumann, eram extremamente lentos.
Para trabalhar nesta mquina era necessrio o conhecimento
do funcionamento do seu hardware, onde a programao era feita
Computador de
Primeira Gerao.

atravs de linguagem de mquina, frequentemente ligando painis


de conectores com fios para o controle das funes bsicas. Nessa
poca, ainda no existia o conceito de Sistema Operacional. Por
esse fato, esta gerao ficou conhecida como a gerao das
vlvulas e painis de conectores.

1.3.3. Segunda Gerao (1956-1965)


Com o desenvolvimento dos transistores, os computadores
sofreram um enorme avano, tornando-se mais confiveis a fim de
serem comercializados.
Transistor

Nesta poca, com o surgimento das primeiras linguagens de


programao, os programas deixaram de ser feitos diretamente no

www.cliqueapostilas.com.br

hardware, facilitando assim o processo de desenvolvimento de


programas.
As mquinas de transistores eram armazenadas em salas e
operadas por equipes especiais. Para executar uma atividade, o
programador escrevia o seu programa, inicialmente, em um papel
(em FORTRAN ou ASSEMBLY), e transformava este em cartes
perfurados. O seu conjunto de cartes era levado para a sala onde
se encontrava a mquina e era entregue diretamente aos
operadores.
Os cartes eram carregados em fitas magnticas, que eram
Computador de
Segunda Gerao

lidas pelo computador, que executava um programa de cada vez,


gravando o resultado do processamento em uma fita de sada. Esse
tipo de processamento, onde um lote de programas era submetido
ao computador, deu-se o nome de processamento em lotes ou
processamento em batch. A Figura 2 visualiza este procedimento.

Figura 2: Sistema de processamento em lote.

1.3.4. Terceira Gerao (1966-1980)


A terceira gerao conhecida com gerao dos circuitos
integrados

(CIs)

da

multiprogramao,

diminuindo

consideravelmente o preo do computador, possibilitando assim sua


aquisio por empresas. Esta poca se caracteriza pelo grande
aumento do poder de processamento e, tambm, a diminuio dos
equipamentos.
Nesta poca, a IBM lanou o System/360, que era uma srie
de computadores pequena, poderosa e, sobre tudo, compatvel. O
360 foi projetado para manipular clculos tanto cientficos como

www.cliqueapostilas.com.br

comerciais, ou seja, em uma nica famlia de mquinas era possvel


satisfazer as necessidades de praticamente todos os clientes.
Porm, para atender todas as aplicaes e perifricos
disponveis por essa famlia de mquinas, a IBM teve que
desenvolver um Sistema Operacional (OS/360) extremamente
grande

complexo,

posto

que

as

aplicaes

disponveis,

comumente, eram contraditrias. Este Sistema Operacional consistia


de milhes de linhas de linguagem assembler escrita por milhares de
programadores e muitos bugs, que exigiam verses e mais verses
a fim de corrigi-los.
Apesar de todos os problemas, o OS/360 e os Sistemas
Operacionais semelhantes atenderam a maioria dos seus clientes
razoavelmente bem. Alm disso, eles lanaram vrias tcnicas
utilizadas at hoje, como exemplo a multiprogramao. A
multiprogramao consistia em dividir a memria em vrias parties
a fim de permitir que vrias tarefas sejam carregadas em cada
partio. Enquanto uma tarefa esperava alguma operao de
Entrada ou Sada, outra tarefa poderia usar o processador (CPU).
Outro recurso disponvel nos Sistemas Operacionais da
terceira gerao era a capacidade de ler jobs (tarefas) de cartes
para o disco. Assim, sempre que um job acabava sua execuo, o
Sistema Operacional podia carregar um novo job do disco para a
partio e executa-lo. Esta tcnica conhecida como spooling.
Entretanto,

os

Sistemas

Operacionais

ainda

eram

basicamente sistemas em lote e que no exigiam comunicao com


o usurio. Assim, muitos programadores sentiam falta das mquinas
de primeira gerao, que eram disponibilizadas por completa para
eles e, assim, podiam depurar seus programas.
Assim, a multiprogramao evoluiu preocupada em oferecer
aos usurios tempos de respostas razoveis e uma interface cada
vez mais amigvel. Para tal, cada programa na memria utilizaria o
processador em pequenos intervalos de tempo. Esse sistema de
diviso de tempo ficou conhecido como compartilhamento de Tempo
(time-sharing).

www.cliqueapostilas.com.br

A terceira gerao tambm marcada pelo surgimento do


Sistema Operacional UNIX, escrito em linguagem de programao
de alto nvel, que se tornou popular no mundo acadmico, entre
rgos do governo e entre muitas empresas.

1.3.5. Quarta Gerao (1981-Atual)


De fato, a dcada de 1980 caracterizada pelo surgimento
dos computadores pessoais. Os computadores pessoais se
tornaram possveis devido ao advento de novas tecnologias,
impulsionados pelo avano da indstria de hardware, com a
introduo de novos circuitos integrados. Os computadores pessoais
permitiram que as pessoas pudessem ter seu prprio computador.
Os equipamentos desta gerao se tornaram cada vez
menores, mais velozes e, principalmente, mais baratos. Esses novos
equipamentos, com alta disponibilidade de poder de computao,
especialmente a computao altamente interativa, normalmente com
Computador Pessoal
Moderno

excelentes grficos, levaram ao crescimento de uma importante


indstria, a indstria de softwares para computadores pessoais.
Dois Sistemas Operacionais inicialmente dominaram o
cenrio dos computadores pessoais: o MS-DOS (Microsoft) e o
UNIX. O MS-DOS foi amplamente utilizado no IBM PC e em
computadores com a tecnologia Intel. Esse Sistema Operacional
evolui para o sistema conhecido como Windows.
Outra evoluo que surgiu nesta gerao foi o crescimento de
redes

de

computadores

pessoais

executando

Sistemas

Operacionais de rede e Sistemas Operacionais distribudos. Em um


Sistema Operacional de rede, os usurios podem conectar-se a
mquinas remotas e copiar arquivos de uma mquina para a outra.
Em um Sistema Operacional distribudo os programas dos usurios
podem ser executados em vrios computadores, porm, estes vem
o sistema como nico.
Alguns autores ainda apontam uma quinta gerao, que
engloba o desenvolvimento cada vez maior da indstria do hardware
e do software, alm do desenvolvimento das telecomunicaes,

www.cliqueapostilas.com.br

permitindo o funcionamento de sistemas e aplicaes distribudas,


que figuram nossa realidade.

1.4. Classificao dos Sistemas Operacionais


Os Sistemas Operacionais evoluram juntamente com a
evoluo do hardware e das aplicaes por ele suportada. Muitos
termos inicialmente introduzidos para definir conceitos e tcnicas
foram substitudos por outros.
Abordaremos neste tpico, os diversos tipos de Sistemas
Operacionais classificados quanto ao seu tipo de processamento
(Figura 3), apontando suas principais caractersticas.

Figura 3: Tipos de Sistemas Operacionais.

1.4.1. Sistemas Monoprogramveis ou Monotarefas


Os

Sistemas

monoprogramveis

ou

monotarefas

so

caracterizados por alocar o Sistema Computacional disponvel


exclusivamente para um nico programa, ou seja, um programa tem
todos os dispositivos, incluindo perifricos, memria e processador
disponvel durante todo o tempo em que ele est ativo, mesmo se
no estiver usando.
Nesse caso, se o programa estivesse executando uma
operao de entrada e sada, o processador continuaria disponvel e

www.cliqueapostilas.com.br

alocado a ele, mesmo ele no estando utilizando (o processador


ficaria ocioso).
Os

primeiros

sistemas

operacionais

eram

tipicamente

voltados para a execuo de um nico programa. Os sistemas


monoprogramveis esto tipicamente relacionados ao surgimento
dos primeiros computadores na dcada de 1960 e se caracterizam
por

permitir

que

todos

os

recursos

do

sistema

fiquem

exclusivamente dedicados a uma nica tarefa, como ilustrado na


Figura 4.

Figura 4: Sistemas Monoprogramveis.

Os

Sistemas

monoprogramveis

so

de

simples

implementao, comparado com sistemas multiprogramveis e


multiprocessadores, posto que no necessite muita preocupao
com compartilhamento e concorrncia.

1.4.2. Sistemas Multiprogramveis ou Multitarefas


Os Sistemas multiprogramveis j so bem mais complexos
que os Sistemas monoprogramveis. Neste tipo de sistema, os
diversos recursos do Sistema Computacional so divididos pelas
vrias tarefas ou programas que necessitam utiliza-los, como
visualizado na Figura 5.

www.cliqueapostilas.com.br

Figura 5: Sistemas Multiprogramveis.

A grande vantagem dos Sistemas multiprogramveis est no


fato dos recursos poderem ser divididos entre os vrios programas,
ganhando tempo e, naturalmente, aumentando a produtividade do
usurio. Assim, por exemplo, em um caso onde um programa
necessite fazer uma operao de E/S e no esteja utilizando a CPU,
esta poder ser disponibilizada para outro programa.
Os Sistemas multiprogramveis podem ser classificados pelo
nmero de usurios que interagem com o sistema e pela forma com
que suas aplicaes so gerenciadas.
Os Sistemas multiprogramveis, quanto ao nmero de
usurios que interagem com o Sistema, podem ser classificados a
seguir:

Sistemas monousurios: sistemas multiprogramveis onde


apenas um usurio interage com o sistema, podendo
realizar vrias atividades ao mesmo tempo, como edio
de texto, impresso e acesso a Internet, por exemplo.

Sistemas multiusurios: sistemas multiprogramveis onde


vrios usurios podem estar conectados e interagindo com
o sistema.

Os Sistemas multiprogramveis, quanto forma que suas


aplicaes so gerenciadas, podem ser classificados como:
sistemas batch, de tempo compartilhado ou de tempo real.

www.cliqueapostilas.com.br

Sistemas Batch
Os sistemas batch foram os primeiros Sistemas Operacionais
multiprogramveis. Este tipo de sistema no necessitava da
interao do usurio, o qual o programa era carregado no
computador a partir de algum tipo de memria secundria e eram
executados sequencialmente.

Sistemas de Tempo Compartilhado


Os Sistemas de tempo compartilhado (time-sharing) permitem
que diversos programas sejam executados a partir da diviso do
tempo do processador. Cada programa utiliza o processador por
uma fatia de tempo e pode ser interrompido caso o seu tempo
termine. O sistema cria um ambiente de trabalho prprio, dando a
impresso para o usurio que o sistema est todo disponvel a ele.

Sistemas de Tempo Real


Os sistemas de tempo real tm caractersticas semelhantes
aos sistemas de tempo compartilhado, porm, suas aplicaes
possuem requisitos temporais, ou seja, possuem um tempo mximo
para serem executados.
Em sistemas de tempo real, uma tarefa utiliza o processador
o tempo que for necessrio ou at que uma outra tarefa mais
prioritria aparea.

1.4.3. Sistemas Multiprocessadores


Os sistemas multiprocessadores so caracterizados por
possuir dois ou mais processadores interligados e trabalhando em
conjunto. Esta caracterstica traz com principal vantagem a
possibilidade de vrios programas serem executados ao mesmo
tempo, de fato.
Os conceitos aplicados ao projeto de sistemas com mltiplos
processadores

incorporam

os

mesmos

princpios

bsicos

www.cliqueapostilas.com.br

benefcios apresentados na multiprogramao, alm de outras


caractersticas

vantagens

especficas

como

escalabilidade,

disponibilidade e balanceamento de carga.


Escalabilidade
computacional

do

capacidade

sistema

apenas

de

ampliar

adicionando

poder
novos

processadores. Disponibilidade a capacidade de manter o sistema


em operao mesmo em casos de falhas. Balanceamento de carga
a possibilidade de distribuir o processamento entre os diversos
processadores da configurao a partir da carga de trabalho de cada
processador, melhorando, assim, o desempenho do sistema como
um todo.

1.5. Estrutura do Sistema Operacional


O Sistema Operacional proporciona o ambiente pelo qual os
programas so executados e composto por um conjunto de
rotinas, conhecido como o ncleo, que so disponibilizadas para as
aplicaes dos usurios e para o prprio sistema. A interface entre o
Sistema Operacional e os programas dos usurios definida por um
conjunto de instrues que o SO proporciona. Esse conjunto de
instrues tradicionalmente chamado de chamadas de sistema
(system calls).
O Sistema Operacional no funciona como aplicaes
comuns, formados de incio, meio e fim. Os procedimentos do
sistema so executados concorrentemente sem seguir uma ordem,
com base em eventos assncronos.
Projetar um Sistema Operacional uma tarefa rdua e
altamente importante, onde, em fase de projeto, devem-se definir
todos os objetivos do sistema como um todo. As principais funes
de um Sistema Operacional, presentes praticamente em todos os
SO, podem ser visualizadas a seguir:

Gerenciamento de Processos e Processador

Gerenciamento da Memria

www.cliqueapostilas.com.br

Gerenciamento dos dispositivos de entrada e sada

Gerenciamento de Arquivos

Cada parte citada pode ser uma poro bem delineada do


sistema, com entradas, sadas e funes bem definidas, o que
facilita o seu estudo e detalhamento. Ao longo desta apostila, nas
unidades seguintes, estudaremos cada poro citada.

1.5.1. Chamadas de Sistemas


As chamadas de sistemas (system calls) constituem a
interface entre um programa do usurio e o Sistema Operacional.
Elas podem ser entendidas como uma porta de entrada para acesso
ao ncleo do sistema, que contm suas funes. Sempre que o
usurio necessitar de algum servio, o solicita atravs de uma
chamada de sistema definida e especfica.
Cada servio disponvel por um determinado Sistema
Operacional possui uma chamada de sistema associada e cada SO
possui seu prprio conjunto de chamadas (nomes, parmetros e
formas de ativao especfica).
As chamadas de sistemas, de fato, servem tambm para
proteger o ncleo do Sistema Operacional, tentando impedir que um
determinado programa realize alguma operao que altere a
integridade do sistema.

www.cliqueapostilas.com.br

EXERCCIOS DA UNIDADE

1. Como seria utilizar um computador sem um sistema operacional?


2. Defina Sistemas Operacionais, procurando abordar os dois pontos
de vista.
3. De forma sistemtica descreva o histrico dos Sistemas
Operacionais, abordando termos como sistemas em lotes,
multiprogramao e multiusurios.
4. Quais os tipos de sistemas operacionais existentes?
5.

Diferencie

os

sistemas

monoprogramveis

dos

sistemas

multiprogramveis.
6. Qual a grande vantagem dos sistemas multiprogramveis?
7. Qual a diferena entre sistemas monousurios e multiusurios?
8. Quais as principais caractersticas dos sistemas em batch?
9. Qual a diferena entre os sistemas de tempo compartilhado e os
sistemas de tempo real?
10. O que so sistemas multiprocessados e quais as vantagens em
utiliz-Ios?
11. Aponte as principais funcionalidades de um projeto de Sistema
Operacional.
12. O que so chamadas de sistemas?

www.cliqueapostilas.com.br

WEBLIOGRAFIA

Universidade Aberta do Piau UAPI


www.ufpi.br/uapi

Universidade Aberta do Brasil UAB


www.uab.gov.br

Secretaria de Educao Distncia do MEC - SEED


www.seed.mec.gov.br

Associao Brasileira de Educao Distncia ABED


www.abed.org.br

Curso de Sistemas Operacionais DCA/UFRN


Prof. Dr. Luiz Affonso Henderson Guedes de Oliveira
http://www.dca.ufrn.br/~affonso/DCA0108/curso.html

Home Page do Prof. Dr. Rmulo Silva de Oliveira


http://www.das.ufsc.br/~romulo/

Home Page do Autor Andrew S. Tanenbaum


http://www.cs.vu.nl/~ast/

Simulador de Ensino para Sistemas Operacionais


http://www.training.com.br/sosim/

www.cliqueapostilas.com.br

REFERNCIAS BIBLIOGRFICAS

BACON, J. e HARRIS, T. Operating Systems: Concurrent and


Distributed Software Design. Addison Wesley, 2003.

DEITELL, H. M. & DEITEL, P. J. & CHOFFNES, D. R. Sistemas


Operacionais. So Paulo, Ed. Prentice Hall, 2005.

MACHADO, F. e MAIA, L. Arquitetura de Sistemas Operacionais.


4 Edio, LTC, 2007

OLIVEIRA, R. S. e CARISSIMI, A. S. e TOSCANI, S. S. Sistemas


Operacionais. 3 ed, volume 11, Ed. Bookman, 2008.

SHAW, A. C. Sistemas e software de tempo real. Porto Alegre, Ed.


Bookman, 2003.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos


de Sistemas Operacionais. 6 Edio, Ed. LTC.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Sistemas


Operacionais com Java. 7 Edio, Rio de Janeiro, Ed. Elsevier,
2008.

TANENBAUM, A. S. & WOODHULL, A. S. Sistemas Operacionais:


Projeto e Implementao. 3 Edio, Porto Alegre, Ed. Bookman,
2008.

TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio,


So Paulo, Ed. Prentice Hall, 2003.

www.cliqueapostilas.com.br

O conceito bsico da maioria dos Sistemas Operacionais o


conceito de processos. Os processos computacionais constituem a
base de administrao de um sistema e, juntamente com eles,
surgem vrios problemas, que devem ser tratados dentro do Sistema
Operacional.
Uma das principais funes de um Sistema Operacional
gerenciar os processos ativos e todos os problemas correlacionados.
Dentre esses problemas correlacionados podemos destacar a
concorrncia entre os processos dos diversos dispositivos do
sistema computacional, inclusive o processador (CPU).
Nesta unidade trataremos da parte do Sistema Operacional
conhecido como gerenciador de processos. Abordaremos o conceito
de processos e a estrutura do modelo de processos. Mais adiante,
trataremos da comunicao entre os processos, abordando os
possveis problemas e alternativas para lidar com essa concorrncia.
Por fim, trataremos do gerenciamento do processador, que a partir
de uma lista de processos prontos para serem executados, qual
deles escolhido para utilizar o processador.

www.cliqueapostilas.com.br

SUMRIO

SUMRIO
UNIDADE II GERENCIAMENTO DE PROCESSOS

1. INTRODUO AO MODELO DE PROCESSOS


1.1. Conceito de Processos
1.2. Criao de Processos
1.3. Estados de um Processo
1.4. Tabelas de Processos
1.5. Threads
2. COMUNICAO INTERPROCESSO
2.1. Condies de Corrida
2.2. Sees Crticas
2.3. Excluso Mtua com Espera Ativa
2.3.1. Desativando Interrupes
2.3.2. Variveis de Bloqueio
2.3.3. Alternncia Estrita
2.3.4. A Soluo de Peterson
2.4. Problema dos Produtores e Consumidores
2.5. Semforos
3. PROBLEMAS CLSSICOS DE CIP
3.1. Problema do Jantar dos Filsofos
3.2. Problema do Barbeiro Adormecido
4. ESCALONAMENTO DE PROCESSOS
4.1. Algoritmo de Escalonamento FIFO (First in First out)
4.2. Algoritmo de Escalonamento Menor Tarefa Primeiro
4.3. Algoritmo de Escalonamento Round Robin
4.4. Algoritmo de Escalonamento por Prioridades
4.5. Algoritmo de Escalonamento Mltiplas Filas
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

www.cliqueapostilas.com.br

UNIDADE II
GERENCIAMENTO DE PROCESSOS

1. INTRODUO AO MODELO DE PROCESSOS

Os

primeiros

Sistemas

Operacionais

eram

caracterizados por apenas um programa poder ser executado de


cada vez. Os computadores mais modernos so constitudos de
Sistemas Operacionais com capacidade de executar vrias tarefas
ao mesmo tempo.
De fato, o processador pode ser alternado de um programa
para o outro, executando cada um por um determinado tempo
(comumente em milissegundos). Em outras palavras, para um
determinado intervalo de tempo, vrios programas utilizam uma fatia
desse tempo para realizar suas atividades, passando, assim, para o
usurio a falsa impresso de que todos eles esto sendo executados
ao mesmo tempo.
Essa falsa impresso passada ao usurio de que vrios
programas esto sendo executados ao mesmo tempo comumente
conhecido por pseudoparalelismo. Para que isso seja possvel
necessrio um monitoramento das mltiplas atividades entre os
vrios programas, que trata-se de uma tarefa difcil e bastante
complexa.
Segundo

Tanenbaum,

os

projetistas

de

Sistemas

Operacionais desenvolveram um modelo que torna o paralelismo


mais fcil de tratar, conhecido como modelo de processos, assunto
deste captulo.

1.1. Conceito de Processos


No modelo de processo, todo programa executvel
organizado em um nmero de processos seqenciais. Podemos
definir processos como sendo a abstrao do programa, ou seja, um

www.cliqueapostilas.com.br

programa em execuo, incluindo os valores do contador de


programa atual, registradores e variveis.
Em cada instante, o processador estar executando apenas
um nico processo, porm, como ele alterna rapidamente entre
vrios processos, para um determinado perodo de tempo, vrios
processos tero progredido em sua execuo, passando assim a
falsa impresso para o usurio que todos eles executaram em
paralelo.
A diferena entre processo e programa um ponto
fundamental para o entendimento do modelo de processos. Alguns
autores costumam utilizar uma analogia para facilitar esse
entendimento: a receita de um bolo. Para se fazer um bolo, alm da
receita contendo os passos a seguir, o confeiteiro ter sua
disposio os ingredientes necessrios para o preparo. Dessa
forma, a receita do bolo o programa, o confeiteiro o processador
(CPU) e os ingredientes so os dados de entrada. O processo
consiste de toda a atividade de preparao do bolo, ou seja, a leitura
da receita, a busca e mistura dos ingredientes, levar a massa ao
forno e todas as atividades necessrias para que o bolo seja
fabricado.
Agora, continuando com a analogia, imaginemos que o filho
do confeiteiro aparea chorando por ter se cortado, por exemplo. O
confeiteiro, no papel de um pai dedicado, deve guardar em que
ponto da receita do bolo ele estava, procurar um kit de primeiros
socorros e comear a seguir as orientaes nele. Neste ponto,
podemos verificar o processador (confeiteiro) alternando de um
processo (preparo do bolo) para outro processo (cuidar do corte do
filho), no qual cada um tem o seu programa prprio (receita do bolo
e o livro de primeiros socorros). Quando o filho estiver tratado e
medicado, o confeiteiro poder continuar seu bolo do ponto onde
parou.

www.cliqueapostilas.com.br

1.2. Criao de Processos


Outro ponto que podemos considerar sobre a criao de
novos processos. O Sistema Operacional deve fornecer alguma
maneira dos processos serem criados.
Um processo pode dar origem a diversos novos processos
durante sua execuo, atravs de uma chamada de sistema para
criar um processo. Os processos criados so denominados
processos filhos. O processo criador denominado de processo pai.
Cada um dos novos processos tambm pode criar outros processos,
formando uma rvore de processos, como visualizado na Figura 6.

Figura 6: rvore de Processos.

1.3. Estados de um Processo


Um processo comumente muda de estado durante sua
execuo. Dessa forma, um estado ativo pode estar no SO em trs
estados diferentes:

Executando: um processo est no estado executando


quando ele, de fato, est sendo processado pela CPU. Em
sistemas monoprocessados (nico processador), somente
um processo por vez pode estar de posse da CPU em um

www.cliqueapostilas.com.br

dado instante. Os processos se alternam na utilizao do


processador.

Pronto: um processo est no estado de pronto quando ele


possui todas as condies necessrias para a sua
execuo, porm, no est de posse do processador. Em
geral, existem vrios processos no sistema prontos para
serem executados e o Sistema Operacional responsvel
por, dessa lista de processos, selecionar qual utilizar o
processador em um determinado instante de tempo.

Bloqueado: um processo est no estado de bloqueado


quando ele aguarda por algum evento externo ou por
algum recurso do sistema indisponvel no momento. Por
exemplo, se um processo necessita de uma informao de
algum dispositivo de E/S, enquanto essa informao no
se torna disponvel, o processo entra no estado de
bloqueado.

Os trs estados de um processo em um Sistema Operacional


tornam possvel algumas transies, como ser observado na Figura
7.

Figura 7: Transies possveis entre os estados de um processo.

A transio 1 (Executando - Bloqueado) ocorre quando um


processo que estava utilizando o processador precisou de algum

www.cliqueapostilas.com.br

evento externo (operao de Entrada/Sada, por exemplo), no


podendo continuar executando, passando, assim, para o estado de
bloqueado.
A transio 2 (Bloqueado - Pronto) ocorre quando o evento
externo, no qual o processo bloqueado aguardava, acontece. Nesse
caso, o processo passa para o estado de pronto e volta para a fila
para poder concorrer novamente ao processador. Se no existir
nenhum processo na fila de prontos, naturalmente, o processo
desbloqueado utilizar a CPU.
J as transies 3 (Pronto - Executando) e 4 (Executando Pronto) so realizados pelo escalonador de processos. Comumente,
existem vrios processos prontos e esperando para serem
executados. Cabe ento ao Sistema Operacional (escalonador)
escolher, entre os processos prontos, qual utilizar o processador e
poder

executar

suas

atividades.

Sistema

Operacional

(dependendo da poltica do escalonador) pode, tambm, retirar o


processador de um determinado processo e disponibiliza-lo para
outro processo. Este assunto, escalonamento de processos, ser
tratado um pouco mais a frente, no captulo 4 desta unidade.

1.4. Tabelas de Processos


Para ser possvel a implementao do modelo de processos,
o Sistema Operacional mantm uma tabela conhecida como tabela
de processos. Essa tabela contm informaes relevantes sobre os
processos, como seu contador de programa, ponteiro da pilha,
alocao de memria, status de arquivos abertos, dentre outros, que
permite que um processo possa ser reiniciado do ponto de onde
parou.

1.5. Threads
Threads so fluxos de execuo (linha de controle) que
rodam dentro de um processo. Em processos tradicionais, h uma
nica linha de controle e um nico contador de programa. Porm,

www.cliqueapostilas.com.br

alguns Sistemas Operacionais fornecem suporte para mltiplas


linhas de controle dentro de um processo (sistemas multithread).
Ter mltiplas linhas de controle ou threads executando em
paralelo em um processo equivale a ter mltiplos processos
executando em paralelo em um nico computador. Um exemplo
tradicional do uso de mltiplas thread seria um navegador web, no
qual pode ter uma thread para exigir imagens ou texto enquanto
outro thread recupera dados de uma rede. importante destacar
que as threads existem no interior de um processo e compartilham
entre elas os recursos do processo, como o espao de
endereamento (cdigo e dados).

2. COMUNICAO INTERPROCESSOS

Em um Sistema Operacional, frequentemente, os processos


podem precisar trocar informaes entre eles ou podem solicitar a
utilizao de um mesmo recurso simultaneamente, como arquivos,
registros, dispositivos de E/S e memria. O compartilhamento de
recursos entre vrios processos pode causar situaes indesejveis
e, dependendo do caso, gerar o comprometimento da aplicao.
O Sistema Operacional tem a funo de gerenciar e
sincronizar processos concorrentes, com o objetivo de manter o bom
funcionamento do sistema.

2.1. Condies de Corrida


Podemos definir uma condio de corrida quando dois ou
mais processos podem compartilhar algum espao de memria
compartilhado no qual, o resultado da informao deste espao de
armazenamento depende de quem executa e precisamente quando.
Um exemplo tpico de condio de corrida, apontado por vrios
autores, o spool de impresso.

www.cliqueapostilas.com.br

Quando um processo deseja imprimir alguma informao, ele


insere o nome de arquivo em um espao denominado diretrio de
spooler. Existe outro processo, o servidor de impresso, que verifica
periodicamente se h qualquer arquivo a ser impresso e, caso haja,
ele os imprime e remove a informao do diretrio.
Consideremos a seguinte situao: o diretrio de spooler
contm um nmero de entradas numeradas e um processo, quando
deseja imprimir alguma informao, consulta uma varivel (entrada)
a fim de saber em qual posio inserir o nome de arquivo no
diretrio. O diretrio de impresso est ilustrado na Figura 8.

Figura 8: Diretrio de spooler (impresso).

Podemos imaginar agora a seguinte situao: um processo A


l a varivel entrada e armazena o valor dela (valor 0) em uma
varivel local. Porm, o tempo de execuo do processo A termina e
o Sistema Operacional o retira do processador, disponibilizando-o a
um outro processo B. O processo B, por sua vez, tambm deseja
imprimir um arquivo, acessa a rea do diretrio de impresso,
verifica o valor da varivel entrada (valor 0), armazena este valor em
uma varivel local e, por fim, insere o nome de seu arquivo a ser
impresso na posio 0 do diretrio de impresso, mudando o valor
da varivel entrada para 1. A Figura 9 visualiza esta situao atual.

www.cliqueapostilas.com.br

Figura 9: Situao do Diretrio de impresso aps insero do


nome de arquivo do processo B.

Por fim, o processo A retoma o processador, iniciando


novamente de onde parou. Ao examinar em sua varivel local o
valor da varivel entrada (esta informao ele guardou em sua
tabela, momento em que ele parou a execuo), o processo observa
o valor 0 e escreve seu nome de arquivo nessa posio, apagando o
nome de arquivo do processo B. Em seguida, incrementa o valor da
varivel entrada para 1. A Figura 10 mostra a nova situao do
servidor de impresso.

Figura 10: Situao do Diretrio de impresso aps insero do


nome de arquivo do processo A.

www.cliqueapostilas.com.br

Internamente, o servidor de impresso continua consistente,


porm

arquivo

do

processo

jamais

ser

impresso.

Caracterizamos este tipo de situao como uma condio de corrida.

2.2. Sees Crticas


Para se evitar uma condio de corrida preciso definir
mtodos que proba que mais de um processo acesse uma
determinada rea de memria compartilhada ao mesmo tempo.
Esses mtodos so conhecidos como excluso mtua. Um
processo, durante seu tempo de execuo, pode realizar uma srie
de computaes internas que no geram condies de corrida ou
pode estar acessando memria compartilhada, que levam
condio de corrida.
A parte do programa no qual o processo acessa memria
compartilhada chamada seo crtica ou regio crtica. Dessa
forma, a soluo para se evitar uma condio de corrida seria
organizar os problemas de tal forma que nenhum de dois ou mais
processos estivessem em suas regies crticas ao mesmo tempo.
Para se ter uma boa soluo de excluso mtua, precisamos
evitar algumas situaes indesejveis, como:

Nenhum processo que esteja fora de sua regio crtica


pode bloquear a execuo de outro processo;

Nenhum processo deve esperar indefinidamente para


poder entrar em sua regio crtica.

Nos prximos tpicos, mostraremos algumas das diversas


solues propostas para se evitar condies de corrida.

2.3. Excluso Mtua com Espera Ativa


Mostraremos neste tpico algumas propostas de excluso
mtua no qual, um processo quando est acessando sua regio
crtica, outro processo que deseja entrar tambm em regio crtica
fica aguardando.

www.cliqueapostilas.com.br

2.3.1. Desativando Interrupes


Uma simples soluo de excluso mtua seria desativar todas
as interrupes do sistema quando um processo fosse acessar sua
regio crtica, ativando-as imediatamente aps sair dela. Com as
interrupes desativas, nenhuma interrupo de relgio pode ocorrer
e, naturalmente, o processador no poder alternar entre processos,
garantindo que nenhum outro processo ir executar sua regio
crtica.
Esta abordagem funcional, porm, pouco atraente, pois
compromete o nvel de segurana do sistema. Caso as interrupes,
por algum motivo, no sejam novamente ativadas, todo o sistema
estar comprometido.
Outro problema deste mtodo est em torno de sistemas com
mais de um processador, pois, desativar as interrupes ir afetar
apenas um processador. Com outros processadores livres, outros
processos podero executar e, ocasionalmente, acessar suas
regies crticas, tornando este mtodo ineficaz.

2.3.2. Variveis de Bloqueio


Outra soluo de excluso mtua seria utilizar variveis de
bloqueio (soluo de software). A soluo de varivel de bloqueio
consiste de uma nica varivel compartilhada (bloqueio). Quando
um processo desejar acessar sua regio crtica, ele inspeciona a
varivel de bloqueio. Caso a varivel esteja definido com valor 0
(bloqueio livre), o processo define seu valor para 1 e acessa
livremente sua regio crtica. Se a varivel estiver definida com valor
1, o processo deve esperar at ela se tornar 0.
Essa idia gera o mesmo problema visto no diretrio de
impresso. Suponha que o processo A testa o bloqueio e verifica
que ele tem o valor 0. Porm, antes de definir o seu valor para 1,
outro processo selecionado para utilizar o processador. Este novo
processo testar o bloqueio, verifica que o seu valor 0, modifica
para 1 e acessa sua regio crtica. O processo A, quando retomar o

www.cliqueapostilas.com.br

processador, ele tambm definir a varivel de bloqueio para 1 (no


momento que ele parou, ele j tinha verificado o seu valor, no
momento, definido como 0) e acessa sua regio crtica. Sendo
assim, teremos dois processos acessando suas regies crticas
simultaneamente.

2.3.3. Alternncia Estrita


Uma outra abordagem de excluso mtua a alternncia
estrita. Esta abordagem utiliza uma varivel de bloqueio, que serve
para indicar qual processo ir entrar em sua regio crtica. Vamos
analisar este mtodo atravs do trecho em pseudo-linguagem
apresentado a seguir:

Processo A

Enquanto(VERDADEIRO){

Processo B

Enquanto(VERDADEIRO){

Enquanto(bloqueio 0);

Enquanto(bloqueio 1);

//espera

//espera

Regio_crtica_A;

Regio_crtica_B;

Bloqueio = 1;

Bloqueio = 0;

Regio_no_crtica_A;

Regio_no_crtica_B;
}

Note atravs dos algoritmos, que quando o processo A


desejar entrar em sua regio crtica, primeiramente, ele testa o
bloqueio. Caso o bloqueio esteja com valor 0, o processo A passa o
loop (enquanto), acessando sua regio crtica. Caso o processo B
desejar entrar em sua regio crtica e testar o bloqueio, ir verificar
que o valor consta como 0 e ficar preso no lao enquanto, no
podendo entrar em sua regio crtica.
O processo A, ao sair da sua regio crtica, ir definir o valor 1
para a varivel de bloqueio, passando a executar sua regio no-

www.cliqueapostilas.com.br

crtica. Nesse ponto, o processo B ter caminho livre para acessar


sua regio crtica.
Agora vamos supor a seguinte situao: o processo A deseja
acessar sua regio crtica, testa o bloqueio e verifica que tem
permisso (valor 0). O processo, assim, acessa sua regio crtica,
executa sua atividade, sai da regio crtica, define o valor do
bloqueio para 1 e comea a acessar sua regio no-crtica. Nesse
momento, o processo B testa o bloqueio, verifica que tem permisso,
acessa sua regio crtica, executa suas atividades crticas, sai da
regio crtica, define o bloqueio para 1 e comea a acessar sua
regio no-crtica. Porm, o processo B executa em sua regio nocrtica rapidamente e, novamente, precisa entrar em sua regio nocrtica. Porm, ele no ter acesso, pois a varivel de bloqueio est
com valor 0, mesmo o processo A no estando executando em sua
regio crtica.
Essa situao viola uma das condies para se ter uma boa
soluo de excluso mtua, que define que nenhum processo que
no esteja em sua regio crtica pode bloquear outro processo. No
caso apresentado, o processo A, mesmo no executando em sua
regio crtica, bloqueia o processo B, que deseja entrar em sua
regio crtica.

2.3.4. A Soluo de Peterson


Outra maneira de se implementar excluso mtua seria
atravs da utilizao de um algoritmo, proposto em 1981 por G. L.
Peterson, conhecido como a soluo de Peterson. Este algoritmo
apresenta uma soluo para dois processos que pode ser facilmente
generalizada para o caso de N processos.
Este algoritmo se baseia na definio de duas primitivas,
utilizadas pelos processos que desejam utilizar sua regio crtica.
Essas primitivas, como podem ser visualizadas no trecho de cdigo
a

seguir (linguagem de programao C),

so

as funes

entrar_regiao() e sair_regiao(), que so utilizadas pelos processos

www.cliqueapostilas.com.br

para, respectivamente, entrarem em sua regio crtica e sair de sua


regio crtica.

#define FALSO 0
#define VERDADE 1
#define N 2
int bloqueio;
int interesse[N];

void entrar_regiao(int processo){


int outro = 1 processo;
interesse[processo] = VERDADE;
bloqueio = processo;
while(bloqueio == processo && interesse[outro] == VERDADE);
//espera
}

void sair_regiao(int processo){


interesse[processo] = FALSO;
}

Note atravs do cdigo apresentado, que quando o processo


A desejar entrar em sua regio crtica, ele chamar a funo
entrar_regiao() passando seu identificar (int processo, com valor 0)
para a funo. Nesta funo, a varivel outro ser definido com valor
1, o vetor de interesse, posio 0 (do processo), ter valor
VERDADE e a varivel bloqueio ser definido para o valor do
identificador do processo, no caso, valor 0. Ao chegar no loop while
(enquanto), ser testado se o bloqueio (valor 0) igual ao
identificador do processo e se o vetor de interesse, na posio do
outro, tem valor VERDADE. No caso apresentado, o valor do vetor
interesse, posio outro, no ser valor VERDADE e o processo 0
no ficar preso ao loop, saindo da funo e, naturalmente, podendo
entrar em sua regio crtica.

www.cliqueapostilas.com.br

Agora vamos supor que o processo B tambm tem interesse


de entrar em sua regio crtica, chamando a funo entrar_regiao() e
passando seu identificador para a funo (int processo, com valor 1).
Nesse caso, ele definir que a sua varivel outro ter valor 0, que o
vetor interesse, posio 1, ter valor VERDADE e a varivel bloqueio
ser definido com o valor 1. Ao chegar no lao while, o processo 1
ir verificar que o vetor de interesse, na posio outro (valor 0), ser
VERDADE (processo 0), ficando, assim, preso no lao. Dessa forma,
o processo 1 no poder acessar sua regio crtica.
O processo 0, quando sair de sua seo crtica ir chamar a
funo sair_regiao(), passando seu identificador como parmetro
para a funo (int processo, com valor 0). Nesta funo, o vetor de
interesse, na posio do processo, receber valor FALSO. Assim, o
processo 1, que estava preso no loop pois o valor do vetor interesse,
posio 0, tinha valor VERDADEIRO, agora poder sair do lao e
acessar sua regio crtica.

2.4. Problema dos Produtores e Consumidores


O problema dos produtores e consumidores muito comum
em programas concorrentes, no qual exista um processo que produz
continuamente informaes que sero usadas por outro processo.
Esta informao produzida e consumida pode ser um nmero, string,
registro ou qualquer outro tipo. Entre o processo que produz a
informao (produtor) e o processo que consome a informao
(consumidor) existe um espao de memria (buffer) que serve para
armazenar temporariamente as informaes que ainda no foram
consumidas.
O problema surge quando o produtor deseja inserir um novo
item, porm o buffer est cheio. De forma anloga, caso o
consumidor deseje consumir alguma informao e o buffer estiver
vazio. A soluo para este problema pode ser atravs de duas
primitivas, conhecidas como sleep (dormir) e wakeup (acordar). Para
o problema dos produtores e consumidores, caso o buffer esteja

www.cliqueapostilas.com.br

vazio, o consumidor pode ser colocado para dormir, atravs da


primitiva sleep e, de forma anloga, o produtor pode ser colocado
para dormir, caso o buffer esteja cheio. Quando uma informao for
produzida, o consumidor poder ser acordado pelo produtor atravs
da primitiva wakeup. De forma anloga, o produtor pode ser
acordado pelo consumidor caso uma informao seja retirado do
buffer cheio.
Esta situao conduz condio de corrida do servidor de
impresso vista anteriormente. Supondo que utilizada uma varivel
N para poder monitor a quantidade de informaes no buffer. Assim,
quando o valor de N for a quantidade mxima do buffer, o produtor
colocado para dormir. Da mesma forma, quando o valor de N for
zero, o consumidor colocado para dormir.
Agora imaginemos a seguinte situao: o buffer encontra-se
vazio e o consumidor acabou de ler a varivel N para ver se ele
zero. Nesse momento, o processador tomado do consumidor e
passado para o produtor. O produtor realiza sua atividade,
produzindo uma informao e incrementa o valor de N para 1.
Considerando que o valor de N era zero, o produtor chama a
primitiva wakeup para acordar o consumidor (presumindo que ele
estava dormindo).
Contudo, o consumidor no estava dormindo e o sinal de
wakeup perdido. Quando o consumidor volta a utilizar a CPU, ele
testar o valor de N anteriormente lido, verificando que trata-se de
valor zero e, por fim, passa a dormir. O produtor, cedo ou tarde, ir
encher o buffer com informaes produzidas e tambm ir dormir.
Ambos dormiro para sempre.

2.5. Semforos
O problema dos produtores e consumidores, alm dos vrios
problemas de sincronizao entre processos, pode ser resolvido
atravs de uma soluo conhecida por semforos. Ele foi proposto
por E. W. Dijkstra em 1965. O semforo um tipo abstrato de dado
composto por um valor inteiro e uma fila de processos. Dijkstra

www.cliqueapostilas.com.br

props existir duas operaes bsicas sobre semforos: operao


de testar e a operao de incrementar. Vrios autores utilizam
nomenclaturas diferentes para representar essas operaes: DOWN
e UP (Tanenbaum), wait e signal (Silberschatz) e P e V,
originalmente designadas, que vem do holands proberen (testar) e
verhogen (incrementar).
Quando um processo executa a operao P sobre um
semforo, o seu valor inteiro decrementado. Se o valor do
semforo for negativo, o processo bloqueado e inserido no fim da
fila desse semforo. Quando um processo executa a operao V
sobre um semforo, o seu valor inteiro incrementado. Caso exista
algum processo bloqueado na fila, o primeiro processo liberado.
Para

que

soluo

atravs

de

semforos

funcione

corretamente suas operaes so feitas como uma nica e


indivisvel ao atmica, ou seja, uma vez que uma operao sobre
semforos comece, ela no pode ser interrompida no meio e
nenhuma outra operao sobre o semforo deve ser comeada.
Dessa forma, para utilizar a soluo em uma aplicao que
gere uma condio de corrida basta que, para cada estrutura de
dados compartilhada, seja utilizado um semforo. Todo processo
antes de acessar essa estrutura deve realizar uma operao de
teste do semforo (P). Ao sair da seo crtica, o processo deve
realizar uma operao V sobre o semforo.

3. PROBLEMAS CLSSICOS DE CIP

A literatura de Sistemas Operacionais est repleta de


problemas que servem como ambiente de aplicao de novos
mtodos de comunicao interprocessos. Segundo Tanenbaum,
todo mundo que resolvia inventar algum mtodo para solucionar
problemas de sincronizao entre processos sentia-se obrigado a

www.cliqueapostilas.com.br

demonstrar o quo maravilhoso o seu mtodo era, aplicando sobre


um desses problemas clssicos e mostrando o quo elegantemente
seu mtodo resolvia. Neste tpico, examinaremos dois problemas
clssicos

de

comunicao

interprocessos

conhecidos

como:

Problema do jantar dos filsofos e o problema do barbeiro


adormecido.

Diverso

3.1. Problema do Jantar dos Filsofos


O problema do Jantar dos Filsofos foi proposto e resolvido
por Dijkstra em 1965. O problema foi modelado da seguinte forma:

Cinco filsofos sentados ao redor de uma mesa circular,


que contm cinco pratos de espaguete e cinco garfos.

Entre cada prato de espaguete encontra-se um garfo.

Para comer, um filsofo precisa de dois garfos.

O problema do jantar dos filsofos pode ser ilustrado atravs


da Figura 11.

Figura 11: O problema clssico de comunicao interprocessos do Jantar


dos Filsofos.

www.cliqueapostilas.com.br

Segundo o problema, cada filsofo alterna perodos de comer


e pensar. Assim, quando um filsofo fica com fome, ele tentar pegar
os garfos da sua esquerda e direita, um de cada vez, para poder
comer o espaguete. Se conseguir pegar os dois garfos, ele come por
um tempo, liberando os garfos ao final e voltando sua atividade de
pensar.
O problema consiste em modelar uma situao que no gere
o bloqueio dos filsofos. Vamos imaginar, por exemplo, a seguinte
situao: suponha que todos os filsofos resolvem comer ao mesmo
tempo e pegam seus garfos da direita. Nessa situao, nenhum ter
condies de pegar o garfo da esquerda (indisponvel) e entraram
em uma situao de impasse.
Uma outra situao que poderamos imaginar para resolver o
problema seria fazer com que o filsofo depois que pegasse o garfo
da direita, verificar se o garfo da esquerda est disponvel. Se estiver
disponvel, o filsofo poderia pegar e comer. Caso no estivesse
disponvel, o filsofo colocaria o garfo da direita e esperaria algum
tempo para, ento, tentar comer novamente. Esta proposta tambm
geraria uma situao de impasse entre os filsofos. Imagine se
todos resolvessem comer ao mesmo tempo, pegassem seus garfos
da direita e, aps verificar que os garfos da esquerda no estavam
disponveis, baixar o garfo da direita, esperar um tempo qualquer e
todos, mais uma vez, resolvessem comer novamente.
Poderamos pensar em uma soluo onde o tempo que o
filsofo esperaria para comer novamente fosse aleatrio. Em geral,
poderia funcionar, mas teramos, ainda, uma probabilidade de que o
tempo aleatrio de cada um fosse o mesmo, gerando, assim, a
situao de impasse. Uma provvel soluo para este problema
pode ser pensada utilizando semforos.

3.2. Problema do Barbeiro Adormecido


Outro problema clssico de CIP conhecido como o
problema do barbeiro adormecido. Trata-se de uma barbearia que

www.cliqueapostilas.com.br

contm um barbeiro, uma cadeira de barbeiro e n cadeiras de


espera. O problema pode ser visualizado atravs da Figura 12.

Figura 12: O problema do Barbeiro Adormecido.

Para este problema, se no houver nenhum cliente na


barbearia, o barbeiro senta-se e comea a dormir (o barbeiro,
provavelmente, no dormiu direito durante a noite). Quando um
cliente chega barbearia, ele acorda o barbeiro para poder cortar
seu cabelo. Se outros clientes chegarem enquanto o barbeiro estiver
cortando o cabelo de algum, o novo cliente observa se existe
cadeira de espera livre. Caso exista, ele se senta e aguarda sua vez.
Caso contrrio, ele obrigado a ir embora.
Note que neste problema temos vrias reas compartilhadas
e qualquer mtodo que tente resolver este problema dever
considerar esses pontos.

www.cliqueapostilas.com.br

4. ESCALONAMENTO DE PROCESSOS

Um ponto crucial no desenvolvimento de um Sistema


Operacional como alocar de forma eficiente o processador (CPU)
para os vrios processos prontos para serem executados. O
escalonamento
processadores

de

processos

disponveis

(um

a
ou

forma
vrios)

com
no

que

os

Sistema

Computacional so distribudos ou alocados para os vrios


processos prontos.
Segundo Silberschatz, o objetivo da multiprogramao
contar sempre com algum processo em execuo para maximizar a
utilizao da CPU. Em um sistema com um nico processador,
somente um processo pode ser executado de cada vez; quaisquer
outros processos devem esperar at que a CPU esteja livre e possa
ser redistribuda.
A parte do Sistema Operacional responsvel por selecionar
qual ser o processo que executar no processador chamado de
escalonador ou agendador. Dessa forma, a ordem com que os
processos sero executados pelo processador definida por um
determinado algoritmo ou poltica de escalonamento de processos.
O projeto de um algoritmo de escalonamento deve levar em
conta uma srie de necessidades, no qual alguns so apontados a
seguir:

Utilizao da CPU: o intuito manter a CPU ocupada o


tempo mximo possvel.

Maximizar a produtividade (throughput): se a CPU estiver


ocupada executando processos, ento o trabalho estar
sendo realizado. Deve-se procurar maximizar o nmero de
processos processados por unidade de tempo.

Justia: o algoritmo de escalonamento deve ser justo com


todos os processos, onde cada um deve ter uma chance
de usar o processador.

www.cliqueapostilas.com.br

Minimizar o tempo de resposta: intervalo de tempo entre a


submisso de uma solicitao e o momento em que a
primeira resposta produzida.

Outras necessidades podem ser apontadas, como tempo de


espera, balanceamento do uso dos recursos, previsibilidade, dentre
outros. Se observarmos, alguns desses objetivos de um algoritmo de
escalonamento de processos so conflitantes. Alm disso, os
processos so nicos e imprevisveis. Dessa forma, o grande
desafio de se desenvolver algum algoritmo de escalonamento
conseguir balancear todos esses objetivos conflitantes. Porm,
segundo

pesquisadores

da

rea,

qualquer

algoritmo

de

escalonamento que tenta favorecer alguma classe de trabalho


(sistemas interativos, por exemplo) acaba prejudicando outra classe
de trabalho, ou seja, para dar mais a um usurio, voc tem que dar
menos a outro, como dito por Tanenbaum.
Os algoritmos de escalonamentos podem ser classificados
em preemptveis e no-preemptveis. O algoritmo de escalonamento
no-preemptvel quando o processador alocado para um
determinado processo no pode ser retirado deste at que o
processo seja finalizado. J o algoritmo de escalonamento dito
preemptvel quando o processador alocado para um determinado
processo pode ser retirado deste em favor de um outro processo.
Este procedimento de tirar o processador de um processo e atribulo outro chamado por vrios autores da rea por troca de
contexto.
Nos tpicos a seguir, veremos com detalhes alguns
algoritmos de escalonamento de processos.

4.1. Algoritmo de Escalonamento FIFO (First in First out)


Trata-se do algoritmo de escalonamento de implementao
mais simples. Com este algoritmo de escalonamento, o primeiro
processo que solicita a CPU o primeiro a ser alocado. Dessa
forma, os processos que esto prontos para serem executados pela

www.cliqueapostilas.com.br

CPU so organizados numa fila, que funciona baseado na poltica


FIFO (First in First out Primeiro a entrar o primeiro a sair).
Vejamos um exemplo. Considere o seguinte conjunto de
processos:
Processo

Durao de Execuo

12

15

Supondo que a ordem de chegada dos processos seja: A B


C D. Dessa forma, baseado na poltica FIFO, a ordem de
execuo dos processos mostrado atravs da Figura 13 (diagrama
de tempo).

Figura 13: Diagrama de tempo usando a poltica FIFO.

Para este conjunto de tarefas o tempo de espera do processo


A de 0 (zero) unidades de tempo; para o processo B de 12
unidades de tempo; para o processo C de 20 unidades de tempo; e
para o processo D de 35 unidades de tempo. O tempo mdio de
espera na fila de prontos de (0+12+20+35)/4, que equivale a 16,75
unidades de tempo.
Nesta poltica de escalonamento o tempo mdio de espera ,
com frequncia, um tanto longo. Outro ponto que processos
importantes podem ser obrigados a esperar devido execuo de
outros processos menos importantes dado que o escalonamento

www.cliqueapostilas.com.br

FIFO no considera qualquer mecanismo de distino entre


processos.

4.2. Algoritmo de Escalonamento Menor Tarefa Primeiro


Outra poltica de escalonamento de tarefas conhecido como
algoritmo de escalonamento de Menor Tarefa Primeiro (SJF
shortest job first), no qual o processo que tem o menor ciclo de
processamento (tempo de execuo) ser selecionado para usar o
processador.
Considerando o mesmo conjunto de tarefas apresentados,
teramos o diagrama de tempo apresentado na Figura 14.

Figura 14: Diagrama de tempo usando a poltica Menor Tarefa Primeiro.

Nesta poltica de escalonamento, o tempo de espera do


processo A de 13 unidades de tempo; para o processo B de 5
unidades de tempo; para o processo C de 25 unidades de tempo; e
para o processo D de 0 unidades de tempo. O tempo mdio de
espera na fila de prontos de (13+5+25+0)/4, que equivale a 10,75
unidades de tempo. Em mdia, nessa poltica de escalonamento, os
processos tiveram que esperar menos para serem executados pelo
processador.
Segundo Silberschatz, a dificuldade real com o algoritmo de
Menor Tarefa Primeiro saber o tempo de durao da prxima
solicitao de CPU. Assim, trata-se de um algoritmo timo porm,
no pode ser implementado, pois no h modo de saber o tempo de
durao do prximo pico de CPU. Uma abordagem possvel tentar
aproximar-se do algoritmo de Menor Tarefa Primeiro.

www.cliqueapostilas.com.br

4.3. Algoritmo de Escalonamento Round Robin


O algoritmo Round Robin, conhecido tambm como algoritmo
de escalonamento circular, tambm organiza a lista de processos
prontos como uma fila simples, semelhante ao algoritmo FIFO. No
entanto, cada processo recebe uma fatia de tempo do processador,
comumente chamado de quantum.
Assim, um processo executa durante um quantum especfico.
Se o quantum for suficiente para este processo finalizar, outro
processo do incio da fila selecionado para executar. Se durante
sua execuo o processo se bloquear (antes do trmino do
quantum), outro processo da fila de prontos tambm selecionado.
Se terminar a fatia de tempo do processo em execuo, ele
retirado do processador, que disponvel para outro processo. Note
ento, que trata-se de um algoritmo de escalonamento preemptvel.
Vamos considerar o mesmo conjunto de tarefas apresentado
nesta

apostila

na

seo

correspondente

ao

algoritmo

de

escalonamento FIFO. Para escalonar este conjunto de tarefas


utilizando o algoritmo de escalonamento Round Robin, com quantum
de 4 unidades de tempo, teramos o diagrama de tempo
representado atravs da Figura 15.

Figura 15: Diagrama de tempo usando a poltica Round Robin


(quantum 4 unidades de tempo).

Uma grande questo relacionada poltica de escalonamento


Round Robin a definio do quantum. A troca de contexto (alternar
entre um processo e outro) requer certa quantidade de tempo para

www.cliqueapostilas.com.br

ser realizada. Sendo assim, se o quantum definido for muito


pequeno, ocasiona uma grande quantidade de trocas de processos
e a eficincia da CPU reduzida; de forma anloga, a definio do
quantum muito grande pode tornar a poltica Round Robin numa
FIFO comum.

4.4. Algoritmo de Escalonamento por Prioridades


Outra poltica de escalonamento bem interessante a poltica
por prioridades. Nesta poltica, os processos so organizados na fila
de prontos baseado em prioridades. Quem tiver maior prioridade vai
para o incio da fila. Quem tiver menor prioridade vai se encaixando
no final da fila. Esta prioridade pode ser uma atribuio externa ao
sistema.
Vejamos um exemplo. Considere o seguinte conjunto de
processos:
Processo

Prioridade

Durao de Execuo

10

Dessa forma, baseado na poltica de escalonamento por


prioridades (quanto menor o nmero, maior a prioridade), a ordem
de execuo dos processos mostrado atravs da Figura 16
(diagrama de tempo).

Figura 16: Diagrama de tempo usando a poltica por prioridades.

www.cliqueapostilas.com.br

Alguns aspectos devem ser considerados na poltica de


escalonamento por prioridades. Primeiro, se no sistema existir uma
quantidade grande e interativa de processos de alta prioridade,
podemos chegar a uma situao onde processos de baixa prioridade
nunca executaro.
Uma possvel soluo para este problema a utilizao de
prioridades dinmicas. Dessa forma, os processos de baixa
prioridade podem ter suas prioridades lentamente aumentadas,
tendo, assim, chances de utilizar o processador.
Segundo Oliveira, tipicamente, solues baseadas em
prioridades utilizam preempo, pois o mecanismo de preempo
permite implementar o conceito de prioridades de uma maneira mais
completa no sistema, posto que no faz sentido fazer todo um
esforo para executar antes processos com prioridades alta e, ao
mesmo tempo, permitir que um processo de baixa prioridade ocupe
o processador indefinidamente (caso no haja preempo).

4.5. Algoritmo de Escalonamento Mltiplas Filas


Comumente, em um Sistema Operacional, existem vrios
processos de mesmo tipo (mesma categoria, baseado na prioridade
e consumo de recursos). Dessa forma, ao invs de termos apenas
uma nica fila de prontos, poderamos construir vrias filas de
prontos e agrupar os processos de mesma categoria nessas filas.
Para cada fila poderamos definir prioridades diferentes e polticas
de

escalonamentos

especficas.

Este

tipo

de

algoritmo

de

escalonamento conhecido como algoritmo de Mltiplas Filas.


Um exemplo deste algoritmo seria considerar duas filas de
prontos, uma com maior prioridade e outra de menor prioridade, as
duas funcionando segunda a poltica Round Robin. Dessa forma, se
a fila mais prioritria tiver processos, estes tero prioridade sobre o
processador. Caso a fila mais prioritria estiver vazia, os processos
prontos da fila menos prioritria iro concorrer ao processador.

www.cliqueapostilas.com.br

Note que a partir dos vrios algoritmos apresentados,


possvel desenvolver vrios outras combinaes e estratgias de
escalonamento. Segundo Oliveira, tipicamente, a maioria dos
sistemas trabalham com fatia de tempo, sendo muito comum utilizar
prioridades para favorecer determinados processos que realizam
tarefas para o prprio Sistema Operacional.

www.cliqueapostilas.com.br

EXERCCIOS DA UNIDADE

1. O que seria o modelo de processos


2. Defina processos e descrevas os estados que um processo pode
ocupar em um sistema baseado no modelo de processos.
3. Comente as possveis transies que podem ocorrer entre os
estados de um processo.
4. Qual a funo da tabela de processos.
5. O que so Threads. Caracterize os sistemas multithreads.
6. O que so condies de corrida?
7. O que uma regio crtica e excluso mtua?
8. Aponte as condies para se ter uma boa soluo que evite
condies de corrida.
9. Mostre como o acesso a um diretrio de impresso pode gerar
uma condio de corrida.
10. Descreva de forma sucinta o mtodo de excluso mtua ativa
desativando interrupes e o porqu desse mtodo ser pouco
atraente.
11. Mostre como o mtodo da alternncia estrita viola uma das
condies para se ter uma soluo de excluso mtua.
12. Qual a grande desvantagem da Soluo de Peterson.
13. Descreva do que se trata o problema dos produtores e
consumidores.
14. Defina o que um semforo.
15. Descreva de forma sucinta os principais problemas clssicos de
comunicao interprocessos.
16. O que gerncia de processador.

www.cliqueapostilas.com.br

17. Escalone os seguintes processos utilizando poltica FIFO,


supondo que os processos chegam nas seguintes ordens e
calcule os tempos de espera de cada processo e o tempo de
espera mdio.

Processos Tempo de utilizao da CPU


P1

24

P2

P3

a) Ordem de chegada: P1 P2 P3
b) Ordem de chegada: P2 P3 P1
18. Suponha que os processos a seguir fiquem prontos para
execuo com a seguinte configurao de tempo:
Processo

Tempo de Utilizao

Tempo de chegada a fila

da CPU

dos prontos

P1

P2

P3

P4

Escalone os seguintes processos utilizando as seguintes


polticas de escalonamento, calculando o tempo de espera de cada
processo e o tempo mdio de espera.
a) FIFO
b)

Menor

Job

Primeiro,

utilizando

uma

poltica

de

uma

poltica

de

escalonamento no-preemptvel.
c)

Menor

Job

Primeiro,

escalonamento preemptvel.

utilizando

www.cliqueapostilas.com.br

d) Round Robin (Quantum = 2)


e) Round Robin (Quantum = 3)
19. Escalone os seguintes processos utilizando a poltica de
escalonamento por prioridades.

Processos Tempo de Utilizao da CPU

Prioridade

P1

10

P2

P3

P4

P5

Supor que os processos chegam ao computador ao mesmo


tempo. Calcule o tempo de espera de cada processo e o tempo
mdio de espera.

www.cliqueapostilas.com.br

WEBLIOGRAFIA

Universidade Aberta do Piau UAPI


www.ufpi.br/uapi

Universidade Aberta do Brasil UAB


www.uab.gov.br

Secretaria de Educao Distncia do MEC - SEED


www.seed.mec.gov.br

Associao Brasileira de Educao Distncia ABED


www.abed.org.br

Curso de Sistemas Operacionais DCA/UFRN


Prof. Dr. Luiz Affonso Henderson Guedes de Oliveira
http://www.dca.ufrn.br/~affonso/DCA0108/curso.html

Home Page do Prof. Dr. Rmulo Silva de Oliveira


http://www.das.ufsc.br/~romulo/

Home Page do Autor Andrew S. Tanenbaum


http://www.cs.vu.nl/~ast/

Simulador de Ensino para Sistemas Operacionais


http://www.training.com.br/sosim/

www.cliqueapostilas.com.br

REFERNCIAS BIBLIOGRFICAS

BACON, J. e HARRIS, T. Operating Systems: Concurrent and


Distributed Software Design. Addison Wesley, 2003.

DEITELL, H. M. & DEITEL, P. J. & CHOFFNES, D. R. Sistemas


Operacionais. So Paulo, Ed. Prentice Hall, 2005.

MACHADO, F. e MAIA, L. Arquitetura de Sistemas Operacionais.


4 Edio, LTC, 2007

OLIVEIRA, R. S. e CARISSIMI, A. S. e TOSCANI, S. S. Sistemas


Operacionais. 3 ed, volume 11, Ed. Bookman, 2008.

SHAW, A. C. Sistemas e software de tempo real. Porto Alegre, Ed.


Bookman, 2003.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos


de Sistemas Operacionais. 6 Edio, Ed. LTC.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Sistemas


Operacionais com Java. 7 Edio, Rio de Janeiro, Ed. Elsevier,
2008.

TANENBAUM, A. S. & WOODHULL, A. S. Sistemas Operacionais:


Projeto e Implementao. 3 Edio, Porto Alegre, Ed. Bookman,
2008.

TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio,


So Paulo, Ed. Prentice Hall, 2003.

www.cliqueapostilas.com.br

Uma das principais funes de um Sistema Operacional


controlar e gerenciar todos os dispositivos de entrada e sada
disponveis no Sistema de Computao. Os dispositivos de entrada
e sada so responsveis por fazer a comunicao do sistema em si
com o usurio ou meio externo. O Sistema Operacional deve ser
responsvel por fazer a interface entre os dispositivos em si e o
resto do Sistema Computacional, enviando comandos para os
dispositivos, capturando interrupes e tratando possveis erros.
Alm disso, o Sistema Operacional deve apresentar uma
interface amigvel para o usurio, escondendo toda complexidade
de hardware, tpico dos dispositivos de entrada e sada.
Nessa unidade trataremos da parte do Sistema Operacional
responsvel por fazer toda essa tarefa descrita, que chamada de
gerenciamento

de

dispositivos

de

entrada

sada

ou,

simplesmente, gerenciamento de entrada e sada. Trataremos


tambm na unidade os impasses causados por tentativas de acesso
concorrente

aos

Computacional.

vrios

dispositivos

disponveis

no

Sistema

www.cliqueapostilas.com.br

SUMRIO

SUMRIO

UNIDADE III GERENCIAMENTO DE ENTRADA E SADA

1. INTRODUO
2. PRINCPIOS DE HARDWARE DE E/S
2.1. Dispositivos de Entrada e Sada
2.2. Controladoras de Dispositivos
2.2.1. Controladoras que suportam Acesso Direto Memria
3. PRINCPIOS DE SOFTWARE DE E/S
3.1. Manipuladores de Interrupes
3.2. Drivers de Dispositivos
3.3. Software de E/S Independente de Dispositivo
3.4. Software de E/S de Nvel de Usurio
4. DEADLOCKS
4.1. Condies para um Impasse
4.2. Modelagem de Impasses atravs de Grafos
4.3. Mtodos de Lidar com Deadlocks
4.3.1. Algoritmo do Avestruz
4.3.2. Deteco e Recuperao
4.3.3. Preveno de Impasses
4.3.4. Impedimento de Impasses
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

www.cliqueapostilas.com.br

UNIDADE III
GERENCIAMENTO DE ENTRADA E SADA

1. INTRODUO

Uma das principais funes de um Sistema Operacional, sem


sombra de dvida, gerenciar e controlar todos os dispositivos de
entrada e sada disponveis. Esta tarefa no nada simples, posto
que o Sistema Operacional deve, para realizar esta atividade, enviar
comandos para os dispositivos, capturar e enviar interrupes, alm
de tratar possveis erros.
O computador, de fato, se tornaria um equipamento intil se
no existisse alguma forma do meio externo se comunicar com ele.
Os dispositivos de entrada e sada (E/S) so responsveis por fazer
essa comunicao entre o sistema, de modo geral, e o meio externo.
Nesta unidade comearemos abordando os princpios de
hardware de E/S. Logo em seguida, trataremos dos princpios de
software de E/S, ou seja, como o software que controla e faz a
comunicao com um dispositivo organizado. Esta organizao
mostrada na Figura 17.
Mais adiante, trataremos da concorrncia entre os processos
para alocar os dispositivos em geral e como esse acesso pode gerar
uma situao de impasse.

www.cliqueapostilas.com.br

Figura 17: Princpios de hardware e de software de E/S.

2. PRINCPIOS DE HARDWARE DE E/S

Segundo Tanenbaum, o hardware de entrada e sada pode


ser visto sob dois pontos de vista:

Viso do Engenheiro Eltrico: v o hardware sob o ponto


de vista de chips, fios, fontes de alimentao, de motores
e de todos os componentes fsicos que o constituem.

Viso do Programador: j o programador v a interface


apresentada para o software (comandos que o hardware
aceita, as funes que ele executa e os erros que podem
ser retornados).

Nesta apostila, como no estudo de Sistemas Operacionais


baseado no livro clssico de Sistemas Operacionais Modernos de
Andrew Tanenbaum, abordaremos a programao de dispositivos de

www.cliqueapostilas.com.br

E/S e no o seu funcionamento interno (assunto de maior interesse


dos engenheiros eltricos).

2.1. Dispositivos de Entrada e Sada


Como j dito anteriormente, o dispositivo de entrada e sada
o mecanismo utilizado para fazer a interface entre o mundo exterior
e o sistema e sem ele o computador no teria muita funcionalidade.
possvel encontrar uma grande diversidade de dispositivos de
entrada e sada, como: teclados, mouses, monitor de vdeo,
impressora, scanners, dentre outros.
Os dispositivos de entrada e sada, dependendo do sentido
do fluxo de informaes entre o sistema e o dispositivo, podem ser
divididos, grosso modo, em dispositivos de entrada, dispositivos de
sada ou dispositivos de entrada e sada. Os dispositivos de entrada
so caracterizados por conter um fluxo de informaes do dispositivo
para o sistema, ou seja, so responsveis por inserir no sistema
informao do mundo externo. J os dispositivos de sada so
caracterizados pelo fluxo de informaes do sistema para o mundo
externo, ou seja, responsveis por disponibilizar respostas ao mundo
externo. J os dispositivos e entrada e sada contemplam os dois
fluxos.
Segundo Tanenbaum, os dispositivos tambm podem ser
divididos, grosso modo, em duas categorias: dispositivos de bloco
e dispositivos de caractere. Os dispositivos de bloco so
caracterizados por armazenar informaes em blocos de tamanhos
fixos, cada um com seu endereo prprio. A propriedade essencial
desse tipo de dispositivos que possvel ler ou gravar blocos
independentemente um do outro. O disco um bom exemplo deste
tipo de dispositivo.
J os dispositivos de caractere so caracterizados por aceitar
ou entregar um fluxo de caracteres, sem considerar qualquer
estrutura de bloco, sem endereamento ou qualquer operao de
busca.

www.cliqueapostilas.com.br

Embora esta classificao seja, de forma geral, muito


utilizada, segundo o autor Tanenbaum, existem dispositivos que no
so classificveis em nenhum desses tipos. Como exemplo,
tomemos por base os relgios. Os relgios so dispositivos que
geram interrupes em intervalos definidos de tempo. Este
dispositivo no se encaixa nos dispositivos de bloco, pois no
possuem estrutura de blocos e, tambm, no se encaixam como
dispositivos de caractere, pois no gera nenhum fluxo de caracteres.

2.2. Controladoras de Dispositivos


Para que os dispositivos se comuniquem com o sistema, eles
so ligados ao computador atravs de um componente de hardware
chamado de interface. Assim, os dispositivos no esto ligados
diretamente aos barramentos do computador. Devido a diversidade
de tipos de dispositivos, que abstrai diferentes formas de operaes
e complexidade, as interfaces empregam no seu projeto um outro
componente de hardware conhecido como controladora de
dispositivo.
A

controladora

de

dispositivo

(chamada

tambm

de

adaptador de dispositivo) trata-se de um componente eletrnico,


comumente na forma de uma placa de circuito impresso, que pode
ser inserido na placa me do computador. O dispositivo em si tratase de um componente mecnico. Uma controladora pode manipular
mais de um dispositivo e, quando padronizadas, podem ser
fabricadas por diversas empresas. Como exemplo de controladoras,
temos as controladoras de disco IDE ou SCSI.
Exemplo de um disco com
interface IDE e SCSI,
respectivamente

Cada controladora deve saber especificamente como o


dispositivo a ela relacionado funciona, a fim de que possa enviar
comandos a serem realizados. Basicamente, uma controladora tem
a funo de converter um fluxo serial de bits em um bloco de bytes e
executar uma correo de erros. Este bloco de bytes, montado em
um buffer interno da controladora, aps verificado erros, pode ser
copiado para a memria principal. A maioria dos Sistemas

www.cliqueapostilas.com.br

Operacionais quase sempre lidam com a controladora, no com o


dispositivo.
As

controladoras

registradores

que

so

formadas

so enxergados

de

um

conjunto

de

pelo processador. Esses

registradores recebem ordens do processador, fornecem o estado


de uma operao ou permitem a leitura ou escrita de dados do
dispositivo. O Sistema Operacional quando deseja dar algum
comando controladora acessam esses registradores (cada
registrador possui um endereo). Os endereos dos registradores
podem fazer parte do espao normal de endereamento de
memria. Esse esquema conhecido como mapeamento de
entrada e sada em memria.

2.2.1. Controladoras que suportam Acesso Direto Memria


As controladoras comuns (sem acesso direto memria)
recebem um fluxo de caracteres, converte para um bloco,
armazenado em seu buffer, depois verifica possveis erros. Por
seguinte, a controladora gera uma interrupo no Sistema
Operacional, que por sua vez, comea a ler o bloco do buffer da
controladora, cada byte por vez, e armazena-os na memria
principal. Esta operao, naturalmente, exige desperdcio de CPU.
O Acesso Direto Memria (DMA Direct Memory
Access) um mecanismo criado para liberar a CPU do trabalho de
cpia dos dados da controladora para a memria. O controlador
DMA conectado diretamente ao barramento de dados e de
endereos do computador, para ter a capacidade de acessar
diretamente endereos de memria.
Com a controladora DMA, aps o bloco ter sido lido do
dispositivo completamente e verificado possveis erros, ela copia o
primeiro byte para o endereo de memria principal especificado
pelo endereo de memria DMA. Aps terminar a transferncias dos
dados para a memria principal, a controladora DMA gera uma
interrupo para o Sistema Operacional, que ao ser iniciado j
encontra o dado em memria principal.

www.cliqueapostilas.com.br

Segundo Oliveira, a tcnica de DMA mais eficiente quando


a operao de entrada e sada envolve a leitura ou escrita de muitos
dados, como exemplo, uma leitura de disco. Nem todos os
computadores utilizam a tcnica de DMA. A justificativa disso o
fato de que a CPU, comumente, bem mais rpida que a
controladora DMA e pode fazer o trabalho de cpia de dados para a
memria muito mais rpida.

3. PRINCPIOS DE SOFTWARE DE E/S

O software de entrada e sada, comumente, organizado em


uma estrutura de camadas, no qual as camadas mais baixas tm
como principal funo esconder das camadas mais altas as
peculiaridades do hardware. J as camadas mais altas tm como
principal funo apresentar uma interface amigvel e simples para o
usurio final.
Algumas metas de software de entrada e sada podem ser
apontadas:

Independncia de dispositivo: deve ser possvel escrever


programas que podem, por exemplo, l arquivos de
qualquer dispositivo.

Atribuio uniforme de nomes: o nome de um arquivo ou


de um dispositivo no pode depender do dispositivo.

Tratamento de erros: os erros devem ser tratados o mais


perto possvel do hardware.

Transferncias sncronas ou assncronas: a maior parte


dos dispositivos de E/S so assncronos e os programas
dos usurios so mais fceis de implementar atravs de
bloqueios. Assim o Sistema Operacional deve fazer com
que as operaes paream, de fato, com bloqueios para
os programas do usurio.

www.cliqueapostilas.com.br

Dispositivos compartilhveis ou dedicados: O Sistema


Operacional deve ser capaz de tratar dispositivos tanto
dedicados como compartilhados de uma maneira que no
gere problemas.

Trataremos neste tpico quatro camadas de software de


entrada e sada: manipuladores de interrupes, os drivers de
dispositivos, software de E/S independente de dispositivo e software
de E/S de nvel de usurio.

3.1. Manipuladores de Interrupes


As interrupes devem ser escondidas do sistema. O ideal
bloquear um processo que inicia uma operao de E/S e mant-lo
bloqueado at que a operao de E/S complete e a interrupo
tenha ocorrido. O importante a se saber que quando uma
interrupo gerada, o processo desbloqueado, passando para
um estado capaz de ser executado.

3.2. Drivers de Dispositivos


O driver de dispositivo (device driver) composto de um
conjunto de mdulos de software cada um implementado para
fornecer mecanismos de acesso a um dispositivo de entrada e sada
especfico. Assim, cada driver de dispositivo trata de um tipo de
dispositivo ou de uma classe de dispositivos correlacionados.
De modo geral, um driver responsvel por aceitar uma
solicitao abstrata (por exemplo, ler alguma informao) e cuidar
para que esta solicitao seja atendida. Assim o driver de um
dispositivo tem o conhecimento de como funciona a controladora
funciona.

3.3. Software de E/S Independente de Dispositivo


A principal funo do software de E/S independente de
dispositivo executar funes que so comuns para vrios

www.cliqueapostilas.com.br

dispositivos e oferecer uma interface uniforme para o software de


nvel de usurio.
Segundo Oliveira, podemos enumerar alguns servios sob
responsabilidade dessa camada:

Nomeao de Dispositivo: cada dispositivo deve receber


um nome lgico e ser identificado a partir dele.

Buferizao: buffer uma zona de memria temporria


utilizada para armazenar dados enquanto eles esto
sendo transferidos entre as diferentes camadas do
software de E/S.

Cache de Dados: armazenar na memria um conjunto de


dados que esto sendo frequentemente utilizados.

Alocao e Liberao: devido a alguns dispositivos


admitirem, no mximo, um usurio por vez, o software de
E/S deve gerenciar a alocao, liberao e uso destes
dispositivos.

Tratamento de Erros: o software de E/S deve fornecer


mecanismos de manipulao de erros, informando
camada superior o sucesso ou fracasso de uma operao.

3.4. Software de E/S de Nvel de Usurio


A viso dos dispositivos de E/S para o usurio consiste de
bibliotecas vinculadas em programas de usurios. Essas bibliotecas
so fornecidas pelas linguagens de programao e podem ser
utilizadas pelos usurios e ligadas com seus programas para compor
o arquivo executvel.
As funes de entrada e sada so dependentes e especficas
de cada linguagem de programao. Por exemplo, na linguagem C
as funes printf e scanf so utilizadas para impresso formatada e
leitura, respectivamente. As bibliotecas de entrada e sada no
fazem parte do ncleo do Sistema Operacional. Elas so associadas
s vrias linguagens de programao.

www.cliqueapostilas.com.br

4. DEADLOCKS

O Sistema Computacional est repleto de recursos, que


podem ser utilizados pelos processos. Comumente, a quantidade de
recursos disponveis muito menor que a quantidade de processos
solicitando esse recurso. Dependendo do recurso, este fato pode
gerar uma situao de bloqueio eterno do processo, o que muito
ruim para os sistemas.
Podemos, assim, definir que um conjunto de processos est
em deadlock ou impasse quando cada um desses processos est
bloqueado esperando um evento que s pode ser gerado por um
outro processo desse conjunto. Como todos os processos esto
bloqueados, nenhum deles poder gerar um evento e, naturalmente,
todos continuaro nessa situao.
Um bom exemplo apontado por Tanenbaum trata-se de dois
processos querendo ler dados de um CD e imprimindo em uma
impressora. Suponha que o processo A solicite a impressora, que
disponibilizada. De forma anloga, o processo B solicita o CD-ROM,
que lhe disponibilizado. Agora o processo A solicita o CD-ROM,
enquanto que o processo B solicita a impressora. Como ambos os
recursos j esto alocados, o processo A e B sero bloqueados.
Nessa situao eles continuaro indefinidamente, pois nenhum
processo ter como se finalizar e, por fim, liberar o recurso j
alocado. Esses processos geram um deadlock.
Uma ilustrao de deadlock bem interessante, trazida no livro
de

Silberschatz,

seria

seguinte:

Quando

dois

trens

se

aproximarem um do outro em um cruzamento, ambos devero parar


completamente e nenhum deles partir novamente at que o outro o
tenha feito.
importante destacar, que os impasses podem ser gerados
tanto por recursos de hardware quanto por recursos de software. Um
recurso de software seria um impasse gerado no acesso a registros

www.cliqueapostilas.com.br

de um banco de dados. Sendo assim, trataremos o termo recurso de


uma forma geral.
Os recursos podem ser divididos em dois tipos:

Recursos preemptveis: trata-se de recursos que podem


ser retirados de um determinado processo sem gerar
problema algum. Por exemplo, a memria.

Recursos no-preemptveis: trata-se de recursos que


no podem ser retirados de um determinado processo
sem causar problemas. Por exemplo, invivel retirar a
impressora de um determinado processo que comeou a
imprimir sua sada.

4.1. Condies para um Impasse


Coffman demonstrou em 1971 que existe quatro condies
para que haja um impasse:

Condio de excluso mtua: somente um processo de


cada vez pode acessar um recurso. Caso contrrio, o
recurso estar disponvel.

Condio de posse e espera: um processo deve estar


de posse de um recurso e solicitando novos recursos.

Condio de no preempo: os recursos concedidos


aos processos no podem ser retirados deles.

Condio de espera circular: deve haver uma cadeia


circular de dois ou mais processos, cada um dos quais
est esperando um recurso j segurado pelo prximo
membro da cadeia e, assim por diante.

4.2. Modelagem de Impasse atravs de Grafos


Os deadlocks ou impasses podem ser modelados atravs de
grafos dirigidos ou grafos de alocao de recursos. Esses grafos
podem ter dois tipos de ns: processos e recursos. Os ns de
processos so representados atravs de crculos e os ns de
recursos atravs de quadrados, como mostrado na Figura 18.

www.cliqueapostilas.com.br

Figura 18: Ns de processos e recursos na modelagem de deadlocks.

Adiante, um arco de um processo apontando para um recurso


significa que o processo est bloqueado esperando esse recurso. J
um arco de um recurso para um processo significa que este recurso
est alocado para o processo. A Figura 19 ilustra estes dois arcos,
respectivamente.

Figura 19: Arco de Processo para Recurso e de Recurso para Processo.

Definido a modelagem do grafo, podemos mostrar que se o


grfico no contiver um ciclo fechado, nenhum processo estar em
uma situao de impasse. Porm, se o ciclo fechado for formado,
poderemos ter um deadlock. A Figura 20(a) mostra um grafo sem
deadlock e a Figura 20(b) mostra uma situao de impasse.

www.cliqueapostilas.com.br

Figura 20: Modelagem atravs de Grafos. (a) Situao onde no est


caracterizado deadlock. (b) situao onde se caracteriza um deadlock.

4.3. Mtodos de Lidar com Deadlocks


Existem vrias formas de lidar com deadlocks. Em geral,
temos quatro mtodos:

Ignorar completamente o problema.

Detectar e recuperar uma situao de deadlock.

Prevenir um deadlock atravs da negao das quatros


condies de Coffman.

Impedimento de um deadlock atravs de uma alocao


dinmica cuidadosa de recursos.

Trataremos esses mtodos nos sub-tpicos a seguir.

4.3.1. Algoritmo do Avestruz


A forma mais simples de lidar com deadlock chamada de
Algoritmo do Avestruz. Reza a lenda, que o avestruz, em um
problema qualquer, enfia sua cabea na areia e nem se preocupa
com o que est acontecendo, ou seja, finge que no h nenhum
O avestruz enfiar a cabea
na areia no passa de uma
lenda. Confesso que eu
mesmo nunca vi um
avestruz com a cabea na
areia.

problema.
Esta soluo utilizada em muitos Sistemas Operacionais,
inclusivo UNIX. Assim, quando acontece uma situao de impasse,
o SO simplesmente ignora o problema, passando a responsabilidade
do usurio para tomada de decises.

www.cliqueapostilas.com.br

4.3.2. Deteco e Recuperao


Uma outra tcnica para lidar com uma situao de impasse
a tcnica de deteco e recuperao. Nessa tcnica, o Sistema
Operacional no se preocupa em prevenir um deadlock. Ao invs
disso, o sistema fica monitorando as solicitaes e liberaes de
recursos.
Caso um recurso seja solicitado e a nova situao gere um
impasse, o Sistema Operacional tentar eliminar um processo do
ciclo. Se o ciclo ainda existir, outro processo ser eliminado at que
o ciclo seja quebrado.

4.3.3. Preveno de Impasses


Outra estratgia impor situaes para os processos de tal
forma que um impasse seja impossvel de acontecer. Essas
situaes seria negar pelo menos uma das condies para que
ocorra um deadlock, modeladas por Coffman.
Abordaremos

ento

cada

condio

de

Coffman

separadamente.

Condio de excluso mtua


Caso nenhum recurso fosse atribudo de forma exclusiva a
um nico processo, negaramos essa condio e no teramos um
impasse. S que existe recursos impossveis de serem atribudos a
mais de um processo, como a impressora.
Uma soluo seria utilizar tcnicas de spool, onde os
processos, ao invs de acessar o recurso diretamente, acessariam
um espao de memria e gravariam suas informaes. A partir
desse espao de memria, um nico processo iria ler as
informaes e enviar para o recurso especfico. Porm, nem todo
recurso possvel se utilizar tcnicas de spool.

Condio de posse e espera

www.cliqueapostilas.com.br

Na segunda condio, se for possvel fazer que um processo,


que

segure

algum

recurso,

no

solicite

outros

recursos,

eliminaramos esta condio e, naturalmente, uma possvel situao


de impasse.
Uma soluo seria fazer que, um processo solicite todos os
seus recursos antes de iniciar a execuo. Caso os recursos
estejam disponveis, ele executa. Caso contrrio, ele precisa
esperar. O problema para esta alternativa que, na maioria dos
casos, os processos no sabem a priori quais recursos ir precisar.

Condio de no preempo
Atacar a terceira condio de Coffman, sem sombra de
dvidas, uma das solues menos promissora, pois certos
recursos so, intimamente, no preemptveis. Mais uma vez,
tomemos como exemplo a impressora. Tomar a impressora de um
processo no meio da impresso uma atitude um tanto sem lgica.

Condio de espera circular


A ltima condio diz que, para se ter um deadlock,
formado uma cadeia circular de dois ou mais processos, cada um
dos quais est esperando um recurso j segurado pelo prximo
membro da cadeia e, assim por diante.
Consideraremos uma possibilidade: enumerar globalmente
todos os recursos disponveis. Assim, a regra seria que processos
podem solicitar recursos sempre que desejarem, mas todas as
solicitaes devem ser feitas em ordem numrica.
Com essa regra, nunca seria formado uma situao circular.
Considere a situao de um processo 1, com um recurso 1 alocado
e um processo 2 com um recurso 2 alocado. Se o processo 1
solicitar o recurso 2 e o processo 2 solicitar o recurso 1 formaramos
um ciclo e teramos uma situao de impasse. Porm, com essa
regra, o processo 2 (com recurso 2 alocado) no tem permisso
para solicitar o recurso 1. Assim, o impasse impossvel. A Figura
21 ilustra essa soluo.

www.cliqueapostilas.com.br

Figura 21: Recursos ordenados numericamente

4.3.4. Impedimento de Impasses


O sistema pode evitar que um impasse ocorra mediante a
alocao cuidadosa dos recursos disponveis. Para que isso ocorra,
o sistema precisar de informaes adicionais a priori de quais
recursos um processo ir requisitar e usar durante sua execuo.
Analisaremos o algoritmo do banqueiro para um recurso e
para mltiplos recursos, que so utilizados para avaliar se uma
alocao de recursos considerada segura ou no.

Algoritmo do Banqueiro para um nico Recurso


O algoritmo do banqueiro foi proposto por Dijkstra (1965).
Este algoritmo baseado na mesma idia de um banqueiro de uma
pequena cidade para garantir ou no crdito a seus clientes. A idia
que um banco jamais possa alocar todo seu dinheiro disponvel em
caixa de tal modo que no possa mais atender s necessidades de
todos os seus clientes.
Esta analogia pode ser utilizada pelo Sistema Operacional,
considerando que os clientes so os processos, os recursos so as
linhas de crdito e o banqueiro trata-se do Sistema Operacional em

www.cliqueapostilas.com.br

si. Um processo ao entrar no sistema, declara a quantidade mxima


de recursos que ele necessitar para executar. Esta quantidade no
pode extrapolar a quantidade deste recurso disponvel no sistema.
A Figura 22 ilustra quatro processos no sistema, com a
quantidade de recursos alocados e a quantidade mxima que cada
um necessita para poder executar, alm da disponibilidade desse
recurso no sistema. Essa listagem apresentada na Figura 22
chamada de um estado.

Figura 22: Estado inicial contendo quatro processos e a quantidade


mxima de recursos necessrios.

Quando um determinado processo solicitar uma quantidade


dos recursos disponveis, o sistema dever determinar se esta
alocao deixar o sistema em um estado seguro. Assim,
considera-se um estado seguro se existir uma sequncia de outros
estados que leva todos os processos a solicitarem seus recursos
mximos.

Nesse caso, o estado representado pela Figura 23


considerado um estado seguro, pois o processo C ainda ter
condio de alocar a sua quantidade de recursos mxima e,
naturalmente, executar suas atividades, finalizar e liberar os

www.cliqueapostilas.com.br

recursos para serem utilizados pelos outros processos. Dessa forma,


com esse estado no teremos uma situao de deadlock.

Figura 23: Estado considerado seguro no Algoritmo do


Banqueiro para nico Recurso.

Porm, se o sistema, ao invs de disponibilizar os dois


recursos livres no sistema para o processo C, disponibilizasse um
recurso para o processo B, o estado gerado seria um estado no
seguro, pois com apenas um recurso disponvel, nenhum dos
processos do conjunto iria conseguir finalizar e, consequentemente,
teramos uma situao de impasse. A Figura 24 representa este
estado no seguro.

Figura 24: Estado considerado no seguro no Algoritmo do


Banqueiro para nico Recurso.

www.cliqueapostilas.com.br

Algoritmo do Banqueiro para Mltiplos Recursos


O algoritmo do banqueiro pode ser generalizado para vrios
processos e vrias classes de recursos, cada um com uma
quantidade diversificada.
A modelagem desse algoritmo feito atravs de duas
matrizes: a primeira contendo os recursos alocados aos processos e
a segunda contendo a quantidade ainda necessria de cada recurso
por processo. Temos, tambm, trs vetores: um vetor E que mostra
a quantidade de recursos existentes no sistema, um vetor A que
mostra a quantidade de recursos j alocados e um vetor L que
mostra a quantidade de recursos livres. A Figura 26 mostra esta
modelagem

Figura 25: Modelagem do Algoritmo do Banqueiro


para Mltiplos Recursos.

Note a partir da Figura 25, que, por exemplo, o processo A


necessita de 4 recursos R1, 1 recurso R2, 1 recurso R3 e 1 recurso
R4 para executar. Note tambm que o sistema contm 6 recursos
R1, 3 recursos R2, 4 recursos R3 e 2 recursos R4.
O algoritmo do banqueiro para Mltiplos recursos funciona da
seguinte forma:

www.cliqueapostilas.com.br

Procurar

uma

linha

da

matriz

de

recursos

ainda

necessrios, no qual todas as posies sejam menores ou


iguais ao vetor de recursos livres. Se no existir essa
linha, nenhum recurso conseguir finalizar e teremos,
enfim, um impasse.

Caso um processe execute e se finalize, os recursos por


ele alocados sero disponibilizados e podero ser
utilizados por outro processo.

No caso de vrios processos (linhas da matriz) tiverem


condies de se finalizarem, independente de qual ser escolhido, o
algoritmo resultar em um estado seguro.
A Figura 26 representa um estado seguro. Note, por exemplo,
que o processo D, que j possui alocado um recurso R1, um recurso
R2 e um recurso R4, precisa apenas de um recurso R3. Se
verificarmos o vetor de recursos livres, podemos verificar que ainda
existem dois recursos R3 livres, ou seja, a linha (0 0 1 0) menor
que o vetor (1 0 2 0). Assim, este estado pode ser considerado
seguro.

Figura 26: Estado considerado seguro no algoritmo do


Banqueiro para Mltiplos Recursos.

www.cliqueapostilas.com.br

Entretanto, se fosse atribudo um recurso R3 para os


processos B e E, o novo estado gerado no seria seguro, pois no
existiria uma linha menor que o vetor de recursos livre. Analise
atravs da Figura 27 esta situao impasse.

Figura 27: Estado considerado no seguro no algoritmo do


Banqueiro para Mltiplos Recursos.

www.cliqueapostilas.com.br

EXERCCIOS DA UNIDADE

1. Qual o papel do Sistema Operacional com relao aos


dispositivos de entrada e sada?
2. Diferencie a viso do engenheiro eltrico e do programador
quanto ao hardware de entrada e sada.
3. Como so caracterizados os dispositivos de E/S de bloco e de
caractere.
4. Aponte a funcionalidade das controladoras de dispositivos.
5. Como funciona as controladoras que suportam DMA.
6. Aponte as metas de software de E/S, explicando cada uma.
7. Quais as camadas no qual o software de E/S podem ser
estruturadas.
8. O que so impasses. D exemplo de uma situao de impasse.
9. Diferencie recursos preemptveis dos no-preemptveis.
10. Aponte as condies segundo Coffman para que ocorra um
impasse.
11. Como se caracteriza a estratgia de lidar com impasse do
algoritmo do avestruz.
12. Como se caracteriza as estratgia de preveno de impasses.
13. Segundo o algoritmo do banqueiro para nico recurso:
processos

usado

mximo

P1

P2

P3

P4

Disponvel: 2

www.cliqueapostilas.com.br

a) O que acontece se for atribudo 1 recurso para o processo 4.


b) Se for atribudo 1 recurso para o processo 3.

14. Baseado na tcnica de impedimentos de impasses do algoritmo


do banqueiro para mltiplos recursos (R1, R2, R3 e R4),
responda as questes a seguir
Proc./Rec.
P1
P2
P3
P4
P5

R1
3
0
1
1
0

R2
0
1
1
1
0

R3
1
0
1
0
0

R4
1
0
0
1
0

Recursos Atribudos
Proc./Rec.
P1
P2
P3
P4
P5

R1
1
0
3
0
2

R2
1
1
1
0
1

R3
0
1
0
1
1

R4
0
2
0
0
0

Recursos ainda necessrios


Vetor Existentes = (6342)
Vetor Possudos = (5322)
Vetor Disponveis = (1020)

a) O estado atual considerado um estado seguro? Justifique


sua resposta.
b) Se um recurso R3 for solicitado pelo processo P2 e P4, o
prximo estado ser seguro? Justifique sua resposta.
c) A partir do estado inicial, defina uma seqncia de alocao de
recursos, gerando sempre estados seguros, at que todos os
processos se finalizem.

www.cliqueapostilas.com.br

WEBLIOGRAFIA

Universidade Aberta do Piau UAPI


www.ufpi.br/uapi

Universidade Aberta do Brasil UAB


www.uab.gov.br

Secretaria de Educao Distncia do MEC - SEED


www.seed.mec.gov.br

Associao Brasileira de Educao Distncia ABED


www.abed.org.br

Curso de Sistemas Operacionais DCA/UFRN


Prof. Dr. Luiz Affonso Henderson Guedes de Oliveira
http://www.dca.ufrn.br/~affonso/DCA0108/curso.html

Home Page do Prof. Dr. Rmulo Silva de Oliveira


http://www.das.ufsc.br/~romulo/

Home Page do Autor Andrew S. Tanenbaum


http://www.cs.vu.nl/~ast/

Simulador de Ensino para Sistemas Operacionais


http://www.training.com.br/sosim/

www.cliqueapostilas.com.br

REFERNCIAS BIBLIOGRFICAS

BACON, J. e HARRIS, T. Operating Systems: Concurrent and


Distributed Software Design. Addison Wesley, 2003.

DEITELL, H. M. & DEITEL, P. J. & CHOFFNES, D. R. Sistemas


Operacionais. So Paulo, Ed. Prentice Hall, 2005.

MACHADO, F. e MAIA, L. Arquitetura de Sistemas Operacionais.


4 Edio, LTC, 2007

OLIVEIRA, R. S. e CARISSIMI, A. S. e TOSCANI, S. S. Sistemas


Operacionais. 3 ed, volume 11, Ed. Bookman, 2008.

SHAW, A. C. Sistemas e software de tempo real. Porto Alegre, Ed.


Bookman, 2003.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos


de Sistemas Operacionais. 6 Edio, Ed. LTC.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Sistemas


Operacionais com Java. 7 Edio, Rio de Janeiro, Ed. Elsevier,
2008.

TANENBAUM, A. S. & WOODHULL, A. S. Sistemas Operacionais:


Projeto e Implementao. 3 Edio, Porto Alegre, Ed. Bookman,
2008.

TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio,


So Paulo, Ed. Prentice Hall, 2003.

www.cliqueapostilas.com.br

Vimos no Capitulo II que na multiprogramao, os processos


alternam suas execues na CPU, passando a impresso de que
eles esto sendo executados ao mesmo tempo (pseudoparalelismo).
Para que alternncia entre os processos para usar o processador
seja rpido, esses processos precisam estar em memria.
Porm, a memria um recurso escasso e manter uma
quantidade cada vez maior de processos carregados em memria
exige

cada

vez

do

Sistema

Operacional

capacidade

de

gerenciamento correto e eficaz. Sendo assim, o bom mtodo de


gerenciamento de memria influencia diretamente no desempenho
de um Sistema Computacional.
A parte do Sistema Operacional, responsvel por gerenciar a
memria, controlar as partes de memria que esto e que no esto
em uso e alocar e desalocar memria para os processos,
conhecida como gerenciador de memria.
Nesta

unidade

trataremos

dos

principais

mtodos

de

gerenciamento de memria, dos mais simples, atravs de alocao


contgua, at os mais complexos, como exemplo o mtodo de
memria virtual.

www.cliqueapostilas.com.br

SUMRIO

SUMRIO

UNIDADE IV GERENCIAMENTO DE MEMRIA

1. INTRODUO
2. GERENCIAMENTO BSICO DE MEMRIA
3. GERENCIA DE MEMRIA PARA MULTIPROGRAMAO

3.1. Alocao com Parties Variveis


3.1.1. Gerenciamento de Memria com Mapa de Bits
3.1.2. Gerenciamento de Memria com Listas Encadeadas
4. MEMRIA VIRTUAL
4.1. Paginao
4.2. TLB Translation Lookside Buffers
5. ALGORITMOS DE SUBSTITUIO DE PGINAS
5.1. Algoritmo de Substituio de Pgina timo
5.2. Algoritmo de Substituio de Pgina No Recentemente
Utilizada
5.3. Algoritmo de Substituio de Pgina FIFO
5.4. Algoritmo de Substituio de Pgina de Segunda Chance
5.5. Algoritmo de Substituio de Pgina do Relgio
5.6. Algoritmo de Substituio de Pgina menos

Recentemente Utilizada
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

www.cliqueapostilas.com.br

UNIDADE IV
GERENCIAMENTO DE MEMRIA

1. INTRODUO

A memria um recurso fundamental e de extrema


importncia para a operao de qualquer Sistema Computacional,
seja os mais antigos at os mais modernos. De fato a memria tratase de uma grande regio de armazenamento formada por bytes ou
palavras, cada uma contendo seu prprio endereo.
Os Sistemas Computacionais mais antigos possuam uma
quantidade muito escassa de memria. Atualmente, a memria j
um recurso bem mais acessvel e muito mais disponvel que
antigamente. comum, por exemplo, uma pessoa ir at uma loja de
informtica e comprar um computador com uma quantidade de
memria RAM bem razovel (2GB).
Porm, mesmo com o ambiente atual sendo muito mais
favorvel que antigamente, o gerenciamento da memria um dos
fatores mais importantes e complexos de qualquer projeto de
Sistemas Operacionais, pois influencia diretamente no bom ou mau
desempenho de um Sistema Computacional.
Tanenbaum aponta uma situao que seria a mais favorvel:
imagine que todo programador tivesse sua disposio uma
memria muito rpida e infinitamente grande que tambm fosse novoltil (ou seja, no perde seus dados com a ausncia de energia) e,
por aquele preo camarada. Essa situao chega a ser bastante
utpico. De fato, essas caractersticas so, um tanto quanto,
contraditrias. Por exemplo, quanto mais rpido e maior a memria,
com certeza, muito maior o preo.
A maioria dos computadores tem uma hierarquia de
memria, que trata-se de uma pirmide, no qual em direo ao topo

www.cliqueapostilas.com.br

esto as memrias mais rpidas, porm, mais caras. A Figura 28


esboa essa pirmide.

Figura 28: Hierarquia de Memria

O Sistema Operacional tem como principal funo gerenciar a


hierarquia de memria. A parte do SO responsvel por essa funo
chamada de gerenciamento de memria. Entre as funes do
gerenciador de memria est em controlar as partes de memria
utilizada e as partes no utilizadas, alocar (disponibilizar) memria
para os processos, desalocar (retirar) memria de processos e
gerenciar a troca entre memria principal (primria) e memria
secundria.
Segundo

Tanenbaum,

basicamente,

os

mtodos

de

gerenciamento so divididos em duas grandes classes: os mtodos


que fazem troca ou paginao e os que no fazem. Iremos estudar
alguns desses mtodos adiantes.

www.cliqueapostilas.com.br

2. GERENCIAMENTO BSICO DE MEMRIA

O esquema mais simples de gerenciamento de memria foi


implementado nos primeiros Sistemas Operacionais, porm ainda
est presente em alguns sistemas monoprogramveis. Este
esquema chamado por alguns autores como alocao contgua.
Basicamente, a memria principal disponvel dividida entre
o Sistema Operacional e o programa em execuo. Como este
esquema

de

gerenciamento

utilizado

em

sistemas

monoprogramveis, temos apenas um processo em execuo por


vez. A Figura 29 ilustra esse esquema de gerenciamento de
memria principal.

Figura 29: Esquema Bsico de gerenciamento de memria

Neste tipo de gerenciamento, o usurio tem acesso a toda


memria principal, inclusive o espao do Sistema Operacional.
possvel proteger a rea de memria do Sistema Operacional
utilizando registradores delimitadores de rea de usurio e do SO.
Assim, os programas esto limitados ao tamanho de memria
principal disponvel. Uma tcnica conhecida como overlay, permite
que um programa seja dividido em mdulos, de forma que seja
possvel a execuo independente de cada mdulo, utilizando uma
mesma rea de memria.

www.cliqueapostilas.com.br

3. GERENCIA DE MEMRIA PARA MULTIPROGRAMAO

Atualmente, os sistemas multiprogramveis so amplamente


mais utilizados do que os sistemas monoprogramveis, devido a
maior eficincia do uso do processador, pois permitem que mltiplos
processos executem simultaneamente.
A forma mais simples de gerenciar memria em sistemas
multiprogramveis dividindo a memria principal em parties
estticas e com tamanhos definidos, estabelecidas na fase de
inicializao do sistema. Esse tipo de gerncia chamado por
alguns autores por alocao particionada esttica ou alocao
fixa.
Quando um processo chega, ele colocado em uma fila de
entrada da partio menor capaz de armazen-lo. Como o esquema
prev que a partio fixa, se o processo no ocupar o espao total
da sua partio, o resto de espao desperdiado. A Figura 30
mostra esse esquema de gerenciamento de memria.

Figura 30: Esquema de gerencia de memria para multiprogramao


com Parties Fixas.

www.cliqueapostilas.com.br

Assim, os programas eram carregados em uma partio


especfica. Em algumas situaes, possvel que uma determinada
fila exista uma quantidade grande de processos esperando pela
partio enquanto que em outras filas de partio no exista nenhum
processo. Isso era uma grande desvantagem para o sistema. Por
exemplo, na Figura 30 podemos verificar que a partio 4 possui trs
processos em espera, enquanto que na partio 2 no existe
nenhum processo. Essa partio poderia, assim, ser utilizado por um
desses processos na fila.
Dessa forma, uma soluo para tentar contornar esse
problema implementar este mtodo com uma nica fila. Assim,
quando uma determinada partio estivesse livre, o processo mais
prximo do incio da fila que melhor se ajusta essa partio
poderia ser carregado nela. Este mtodo mostrado na Figura 31.

Figura 31: Mtodo de parties fixas com nica fila.

Este mtodo de gerncia de memria baseado em parties


fixas, de uma forma ou de outra, gera um grande desperdcio de
memria, posto que, um processo ao ser carregado em uma
partio, se ele no ocupa todo o seu espao, o restante no poder
ser utilizado por nenhum outro processo.

www.cliqueapostilas.com.br

Para evitar esse desperdcio, foi desenvolvido um esquema


de

gerenciamento

alocao

de

memria

dinamicamente,

dependendo da necessidade do processo. Este esquema


conhecido como alocao com parties variveis. Estudaremos
este mtodo no prximo tpico.

3.1. Alocao com Parties Variveis


Quando o mtodo de alocao de parties variveis
utilizado, o tamanho das parties de memria ajustado
dinamicamente medida que os processos vo chegando.
Nesse tipo de esquema, o processo utilizar um espao de
memria necessrio, tornando esse espao sua partio. Isto
resolve o problema da fragmentao, pois as parties passaro a
ser definidas a partir da alocao dos processos na memria.
O mtodo bem simples. Observe atravs da Figura 32, que
um processo A ao chegar, carregado na memria e o seu tamanho
define do tamanho da sua partio. O processo B e C, de forma
anloga, so carregados no espao livre, ainda disponvel. Ao
chegar o processo D, no existe espao livre contnuo suficiente
para ele ser carregado.

Figura 32: Esquema de Alocao com Parties Variveis.

www.cliqueapostilas.com.br

Note que, para inserir o novo processo D na memria foi


preciso retirar o processo A, a fim de o espao de memria
suficiente seja disponibilizado para o novo processo. Assim, o
processo A atualizado em disco e o processo D carregado em
memria principal, podendo executar suas atividades. Este processo
de retirar um processo de memria, atualizar em disco e colocar
outro no lugar chamado, segundo Tanenbaum, por mtodo de
Troca. A troca consiste em trazer um processo inteiro, executa-lo
temporariamente e, ento, devolve-lo ao disco. Isto acontece quando
a memria principal disponvel insuficiente para manter todos os
nossos processos carregados (situao que seria a tima). Existe
outra estratgia, que permite que apenas parte do programa fique
em memria principal. Esta estratgia, bem mais complexa que a
troca, conhecida como Memria Virtual. Veremos esta estratgia
um pouco mais a frente.
Podemos notar atravs da Figura 32, que aps alocar e
desalocar vrios processos, a memria pode se particionar (espao
entre os processos D e B, por exemplo). Chamamos isso de
fragmentao externa. Veja que essa fragmentao diferente da
gerada na alocao esttica. Na alocao esttica, a fragmentao
gerada pelo no uso total da partio pelo processo (fragmentao
interna).
Assim, quando a troca cria vrias lacunas na memria,
possvel juntar todas essas lacunas em um grande espao,
movimentando todos os processos para baixo o mximo possvel.
Essa tcnica conhecida como compactao de memria e exige
muito tempo de CPU.
O mtodo de alocao dinmica da partio bem mais
flexvel que o mtodo de alocao esttica. Porm, essa flexibilidade
tambm complica mais a tarefa de alocar e desalocar a memria,
assim como a monitorao da memria utilizada. O Sistema
Operacional tem a funo de gerenciar essa memria. De modo
geral, h duas maneiras de monitorar o uso da memria: atravs do

www.cliqueapostilas.com.br

mapa de bits e listas encadeadas. Veremos essas duas estratgias


nos sub-tpicos a seguir:

3.1.1. Gerenciamento de Memria com Mapa de Bits


Com o mapa de bits, a memria dividida em unidades de
alocao e para cada unidade associado um bit no mapa. Se este
bit estiver com valor 0 implica que esta unidade de alocao est
vazia. Se este bit estiver com valor 1 implica que esta unidade de
alocao est preenchida por algum processo.
Atravs da Figura 33 mais fcil compreender como essa
estratgia de gerenciamento funciona. Considere a memria,
particionada em XX unidades de alocao, com processos e
espaos vazios (lacunas). O mapa de bits dessa memria ser
configurado como mostrado na figura.

Figura 33: Memria dividida em unidade de alocao e o Mapa de bits


correspondente.

O ponto crucial do mapa de bits a definio do tamanho da


unidade de alocao. Se ele for muito pequeno, o mapa de bits
poder ser muito grande. Se a unidade for muito grande, o mapa de
bits ser menor, mas uma quantia de memria poder ser
desperdiada na ltima unidade se o tamanho do processo no for
um mltiplo exato da unidade de alocao.

www.cliqueapostilas.com.br

3.1.2. Gerenciamento de Memria com Listas Encadeadas


Outra estratgia manter uma lista encadeada dos
segmentos de memria alocados e livres, onde um segmento pode
ser um processo ou lacuna entre dois processos.
Assim, cada n da lista seria formado por uma entrada
especificando se um processo (P) ou uma lacuna (L), o endereo
de onde se inicia, a quantidade de unidades de alocao e um
ponteiro para a prxima entrada. A Figura 34 ilustra a mesma
memria gerenciada atravs de listas encadeadas.

Figura 34: Memria dividida em unidade de alocao, monitorada


atravs de Lista Encadeada.

4. MEMRIA VIRTUAL

Como foi dito nos tpicos anteriores, os programas esto


limitados ao tamanho de memria principal disponvel. possvel
utilizar a tcnica overlay, que permite que um programa seja dividido
em mdulos, de forma que seja possvel a execuo independente
de cada mdulo, utilizando uma mesma rea de memria.
Trabalhar com overlays joga a responsabilidade para o
programador de dividir o seu programa, o que trata-se de uma tarefa
complexa e que exigia tempo do programador. O ideal seria que a
diviso do programa fosse feito pelo sistema.

www.cliqueapostilas.com.br

De fato, em 1961, Fotheringham desenvolveu um mtodo


conhecido como memria virtual. O principal objetivo desta tcnica
estender a memria principal atravs de memria secundria,
dando impresso ao usurio que ele tem a disposio uma
quantidade de memria maior do que a memria real disponvel. Em
outras palavras, para facilitar o entendimento, a tcnica de memria
virtual disponibiliza para o usurio uma memria de trabalho maior
do que a memria principal (RAM). Esse espao de memria
adicional implementado em disco conhecido como memria de
swap. A Figura 35 mostra um desenho ilustrativo desta tcnica.

Figura 35: Ilustrao do mtodo de memria virtual.

Assim, o Sistema Operacional deve manter parte do


programa que est em uso na memria principal e parte dele na
memria swap. Na multiprogramao, partes de vrios processos
podem ser mantidas em memria principal e partes em memria
swap.
Existem algumas estratgias para implementar o mtodo de
memria virtual. A estratgia mais conhecida chamada de
paginao. Veremos essa estratgia no tpico a seguir.

www.cliqueapostilas.com.br

4.1. Paginao
Segundo Silberstchaz, a paginao um esquema de
gerenciamento de memria em que o espao de endereamento
fsico (endereos de memria principal) de um processo no
contguo. A paginao, assim, evita o problema da fragmentao
externa gerado pela alocao de memria dinmica.
Os programas so capazes de gerar endereos, chamados
de endereos virtuais. Esse conjunto de endereos forma o que
chamamos de espao de endereamento virtual. Em sistemas que
no utilizam a tcnica de memria virtual, o endereo virtual equivale
ao endereo fsico, especificando exatamente onde o programa ser
armazenado na memria principal.
Em computadores que utilizam a tcnica de memria virtual,
os endereos virtuais no vo diretamente para o barramento de
memria. Primeiramente, ele passa por uma unidade chamada de
Unidade de Gerenciamento de Memria (MMU Memory
Management Unit). A MMU tem como funo mapear um endereo
virtual para um endereo lgico.
Adiante, o espao de endereamento virtual dividido em
unidade chamadas de pginas. A memria principal tambm
dividida em unidades, do mesmo tamanho das pginas, chamadas
de molduras de pgina (quadro). Assim, num sistema que contm
pginas de 4k, as molduras tambm sero de 4k. Considere a Figura
36, com o espao de endereo virtual formado de 64k e o a memria
fsica de 32k, com pginas de molduras de 4k.
Note atravs da figura, que temos 16 pginas virtuais e 8
molduras de pginas. Quando um programa tenta acessar um
endereo virtual, este passado para a MMU, que vai analisar o
mapeamento deste endereo e descobrir a qual moldura pertence. A
MMU mapeia este endereo virtual para o endereo fsico, que, por
fim, colocado no barramento de memria.

www.cliqueapostilas.com.br

Figura 36: Tcnica de Paginao

Vejamos um exemplo. Considere o mapeamento apresentado


na Figura 37.

Figura 37: Mapeamento da memria virtual.

www.cliqueapostilas.com.br

Com esse mapeamento, o endereo virtual 0, que encontrase na pgina 0 (0k-4k) mapeado pela MMU para a moldura 2 (8k12k). De forma anloga, o endereo virtual 8195, pertencente
pgina 2 (8k-12k, correspondente a 8192-12287) mapeado para a
moldura 6 (24576 at 28671), e seu endereo fsico ser 24576
(endereo inicial da moldura) adicionado do deslocamento dele na
pgina (pgina comea com endereo 8192, como seu endereo
8195, ele est deslocado de 3). Assim, o endereo fsico ser 24576
+ 3, que equivale a 24579.
Vejamos atravs desse exemplo, como a MMU faz esse
mapeamento. O endereo virtual 8195 corresponde, em codificao
binria, a 0010000000000011. Este endereo virtual formado de
16 bits, no qual os quatros primeiros bits (0010) so utilizados para
representar o nmero da pgina (0010 corresponde pgina 2) e o
restante (12 bits) utilizado para representar o deslocamento na
pgina. Como temos 4 bits para representar o nmero de pginas,
com essa combinao, podemos gerar nmeros de 0 a 15, ou seja,
as 16 pginas no espao de endereamento virtual. Com os 12 bits
de deslocamento podemos ter endereos de 0 a 4k, ou seja, o
tamanho das pginas.
J no espao de endereamento fsico, como temos 8
molduras no exemplo apresentado, precisamos de 3 bits para
represent-las. Com os 3 bits podemos representar as molduras 0 a
7. Como o tamanho de cada moldura corresponde tambm 4k,
precisamos, assim, de 12 bits para representar endereos de 0 a 4k.
Assim, o endereo fsico representado por 15 bits.
Todo mapeamento realizado pela MMU feito atravs de
uma tabela conhecida como tabela de pginas. Cada processo
possui sua tabela prpria e cada pgina possui uma entrada nesta
tabela. Cada entrada, ou seja, cada pgina na tabela possui um bit
(bit de validade) que informa se a pgina est ou no mapeada na
memria principal.

www.cliqueapostilas.com.br

A Figura 38 mostra o exemplo do mapeamento do endereo


virtual 8195 (0010000000000011) para o endereo fsico 24579
(110000000000011).
Quando um programa tenta utilizar um endereo virtual e a
MMU percebe que a pgina no qual o endereo pertence no possui
mapeamento na memria principal, ela gera uma interrupo no
Sistema Operacional, conhecido como falha de pgina (page fault).
O Sistema Operacional, por sua vez, toma de conta do processador
e seleciona uma das molduras, atualizando seu valor em disco.
Ento, ele busca a pgina no mapeada, carrega ela na moldura,
altera a tabela e reinicia o processo interrompido. A moldura a ser
retirada escolhida baseada em algoritmos de escalonamento,
chamados de algoritmos de substituio de pginas, que
veremos mais a seguir.

Figura 38: Mapeamento de endereo virtual para endereo fsico

www.cliqueapostilas.com.br

4.2. TLB Translation Lookside Buffers


As tabelas de pginas, comumente, so mantidas em
memria, o que influencia diretamente no desempenho, j que as
tabelas so bastante grandes.
Segundo Tanenbaum, um comportamento que foi verificado
que programas tendem a fazer um grande nmero de referncias a
um pequeno nmero de pginas. Assim, somente uma pequena
frao de entradas da tabela de pginas intensamente lida.
Com isso, foi desenvolvido um dispositivo de hardware capaz
de mapear endereos virtuais em endereos fsicos sem passar pela
tabela de pginas. Esse dispositivo conhecido como memria
associativa ou Translation Lookside Buffers (TLB). Comumente,
ele encontrado dentro da MMU.

5. ALGORITMOS DE SUBSTITUIO DE PGINAS

Como dito anteriormente, quando ocorre uma falha de pgina,


o Sistema Operacional deve selecionar uma das molduras para
disponibilizar para a pgina no mapeada. Se a pgina a ser retirada
da moldura tiver sido modificada, ela deve ser atualizada em disco.
Caso contrrio, a pgina pode ser retirada da moldura, ou seja, da
memria principal, sem necessitar de atualizao em memria. A
pgina escolhida , comumente, chamada de pgina vtima.
A escolha aleatria de uma pgina vtima pode influenciar
diretamente o desempenho do sistema. O ideal seria retirar uma
pgina que no utilizada constantemente. Por exemplo, se for
retirado uma pgina que muito utilizada, provavelmente ela seja
logo referenciada e necessite voltar para a memria principal,
gerando novamente uma falha de pgina.
Para a escolha de qual pgina ser retirado da memria,
temos vrios algoritmos de substituio de pginas, que sero
descritos nos tpicos a seguir.

www.cliqueapostilas.com.br

5.1. Algoritmo de Substituio de Pgina timo


O algoritmo de substituio de pgina timo o melhor
algoritmo possvel. A idia bsica deste algoritmo que, quando
ocorrer uma falha de pgina, a pgina a ser substitudo na memria
fsica ser a que for referenciada mais tardiamente. Em outras
palavras, se tivermos uma quantidade x de pginas carregadas na
memria fsicas (nas molduras), algumas pginas podero ser
utilizadas logo em seguida, porm, algumas pginas s iro ser
referenciadas depois de muito tempo.
Dessa forma, se a pgina escolhida for a pgina que ser
referenciada mais tardiamente, o algoritmo estar adiando o mximo
possvel uma nova falha de pgina. Um exemplo mais prtico para
que possamos entender este algoritmo, seria supor que temos 10
pginas na memria. Dessas 10 pginas, a pgina 5, por exemplo,
ser a primeira a ser referenciada, ou seja, a prxima. Da mesma
forma, a pgina 0, por exemplo, ser a ltima a ser referenciada, ou
seja, do conjunto de pginas carregadas, ela ser a ultima. Ento,
baseado no algoritmo de substituio de pgina tima, a pgina 0
ser a melhor escolha, pois estamos adiando o mximo possvel
uma falha de pgina.
visvel que este algoritmo no realizvel na prtica, pois
seria necessrio, quem sabe, uma bola de cristal para podermos
adivinhar qual seria a ltima pgina a ser referenciada. O fato de no
termos como prev o futuro, esse algoritmo se torna no praticvel.
Porm, este algoritmo muito utilizado para ser comparado
com algoritmos realizveis.

5.2. Algoritmo de Substituio de Pgina No Recentemente


Utilizada
Alguns bits so utilizados na tabela de pginas e so
utilizados com o objetivo de facilitar a implementao de algoritmos
de substituio de pginas.

www.cliqueapostilas.com.br

O primeiro bit conhecido como o bit sujeira (dirty bit) e indica


se uma pgina foi alterada ou no durante a execuo do processo.
Toda vez que uma determinada pgina gravada na memria
secundria, o Sistema Operacional zera este bit.
O segundo bit conhecido como o bit de referncia
(reference bit) e serve para indicar se uma pgina foi referenciada
(acessada) por um processo. Quando uma pgina carregada na
memria, este bit zerado.
Dessa forma, o algoritmo de substituio de pgina no
recentemente define que, quando ocorre uma falha de pgina, o
Sistema Operacional inspeciona todas as pginas e agrupa em
quatros conjuntos, como segue:

Conjunto 1: pginas no-referenciadas (bit de referncia


com valor zero) e no-modificadas (bit sujeira com valor
zero).

Conjunto 2: pginas no-referenciadas (bit de referncia


com valor zero) e modificadas (bit sujeira com valor 1).

Conjunto 3: pginas referenciadas (bit de referncia com


valor 1) e no-modificadas (bit sujeira com valor zero).

Conjunto 4: pginas referenciadas (bit de referncia com


valor 1) e modificadas (bit sujeira com valor 1).

O conjunto 4, visivelmente, contm as pginas que so


menos aconselhadas de serem retiradas. O conjunto que contm
pginas modificadas que no foi referenciada uma escolha melhor
do que pginas no-modificadas, mas que so constantemente
referenciadas.

5.3. Algoritmo de Substituio de Pgina FIFO


O algoritmo de substituio de pginas FIFO (first in first out)
define que a pgina que ser retirada a pgina que est mais
tempo na memria. Em suma, trata-se de uma fila, onde o primeiro
que entra sempre o primeiro que sai.
Para exemplificar este algoritmo, consideremos a sequncia
de pginas solicitadas apresentada na Figura 39. Considere tambm

www.cliqueapostilas.com.br

que existe apenas 3 molduras (m1, m2 e m3). Dessa forma, atravs


do algoritmo de substituio de pgina FIFO temos a configurao
de seleo de pginas a serem retiradas apresentadas.
Note atravs da Figura 39, que as primeiras pginas, pelo fato
de no estarem carregadas nas molduras, tambm geram uma falha
de pgina e precisam, assim, serem mapeadas. Note tambm que a
quarta pgina quando referenciada (pgina 3) no est mapeada.
Como a pgina 0 foi a ltima a ser referenciada (mapeada), ela a
pgina escolhida pelo algoritmo.
Podemos verificar facilmente, que o algoritmo de substituio
de pgina FIFO no leva em considerao se uma determinada
pgina muito referenciada, ou seja, caso ela seja a escolhida para
sair, ela ser substituda. Veja ainda na Figura 39, que a pgina 7 foi
escolhida para sair e, logo aps, ela foi novamente referenciada.

Figura 39: Algoritmo de Substituio de Pgina FIFO

www.cliqueapostilas.com.br

5.4. Algoritmo de Substituio de Pgina de Segunda Chance


Como pudemos notar no algoritmo de substituio de pgina
FIFO, este no leva em considerao se uma pgina muito
utilizada. Assim, a fim de se tentar evitar que uma pgina muito
utilizada seja selecionada, podemos inspecionar o bit de referncia
antes de selecionar a pgina em questo.
Este algoritmo comumente chamado de algoritmo de
substituio de pgina de segunda chance. De fato, antes de se
retirar uma pgina, verificado se seu bit de referncia tenha valor
1. Caso ele tenha valor 1, seu valor mudado para 0 e esta pgina
no retirada. Note que este algoritmo uma pequena modificao
do algoritmo FIFO.

5.5. Algoritmo de Substituio de Pgina do Relgio


Outro algoritmo que utiliza os bits de referncia para
selecionar a prxima pgina a ser retirada o algoritmo de
substituio de pgina do relgio. A principal diferena para o
algoritmo apresentado anteriormente est na implementao.
O algoritmo de segunda chance implementado atravs de
uma fila FIFO, utilizando os bits de referncia. J o algoritmo do
relgio implementado a partir de uma fila circular. Assim, a prxima
pgina a ser retirada ser a primeira pgina apontada pelo ponteiro
do relgio que contiver o bit de referncia 0. A Figura 40 ilustra esse
algoritmo.
Note neste algoritmo, que a prxima pgina que ser retirada
no ser nem as pginas 15, 16, 1 e 2, pois seus bits de referncia
tem valores 1. Assim, a prxima vtima ser a pgina 3. A Figura 41
mostra essa configurao.

www.cliqueapostilas.com.br

Figura 40: Algoritmo de Substituio de Pgina do Relgio

Observe na Figura 41 que os bits das pginas 15, 16, 1 e 2


foram zeradas e a pgina 17 entrou no lugar da pgina 3.

Figura 41: Seleo de pgina segundo o algoritmo de


Substituio de Pgina do Relgio

5.6. Algoritmo de Substituio de Pgina menos Recentemente


Utilizada
O algoritmo de substituio de pgina menos recentemente
utilizada (LRU Least Recently Used) trata-se do algoritmo que tem
uma boa aproximao do algoritmo timo. O seu funcionamento
bem simples: como impossvel olhar para o futuro, ou seja, no
possvel saber das pginas carregadas, qual ser a ltima que ser

www.cliqueapostilas.com.br

referenciada, olharemos para o passado. Assim, quando acontecer


uma falha de pgina, o algoritmo selecionar para ser retirada a
pgina que foi a mais tempo referenciada.
A implementao do algoritmo LRU muito custoso, segundo
Tanenbaum, pois preciso manter uma lista encadeada de todas as
pginas na memria, com as pginas mais recentemente utilizadas
na frente as menos recentemente utilizadas no fundo. Essa lista
deve ser atualizada a cada referncia de pgina, o que pode gerar
uma grande modificao na lista. Imagine que, uma pgina do fim da
lista (pouco referenciada) seja referenciada. preciso, ento
deslocar esta pgina para o incio da fila.
Para exemplificar este algoritmo, consideremos a mesma
sequncia de pginas solicitadas apresentada no algoritmo FIFO. A
Figura 42 ilustra essa situao.

Figura 42: Algoritmo de Substituio de Pgina menos


Recentemente Utilizada

www.cliqueapostilas.com.br

Observe, que de forma anloga ao algoritmo FIFO, as


primeiras pginas, pelo fato de no estarem carregadas nas
molduras, tambm geram uma falha de pgina e precisam, assim,
serem mapeadas. Veja que a pgina 3, que no algoritmo FIFO seria
a pgina retirada para ser substituda pela pgina 5, pelo fato dela
ter sido referenciada, o algoritmo LRU j escolheu outra pgina para
ser retirada, no caso a pgina 4, que no momento era a menos
referenciada.

www.cliqueapostilas.com.br

EXERCCIOS DA UNIDADE

1. Qual a funo do gerenciador de memria de um Sistema


Operacional.
2. Como funciona o gerenciamento bsico de memria.
3.

Como

funciona

gerenciamento

de

memria

para

multiprogramao por alocao particionada esttica com mltiplas


filas.
4. Qual o motivo de se utilizar uma nica fila no gerenciamento de
memria

para

multiprogramao

por

alocao

particionada

esttica.
5.

Como

funciona

gerenciamento

de

memria

para

multiprogramao por alocao com parties variveis e qual sua


vantagem com relao s parties fixas.
6. Mostre como o S.O. monitora uma memria dividida em unidades
de alocao para os seguintes mtodos:

a) Mapa de Bits
b) Listas Encadeadas (Utilize ponteiro P para processo e L para
lacuna)
7. Em que consistem as estratgias de alocao first-fit, next-fit,
best-fit e worst-fit.
8. Diferencie as abordagens de gerenciamento de memria baseado
por troca e memria virtual.
9. Qual a diferena entre um endereo fsico e um endereo virtual?
10. O que uma falha de pgina (page fault)? Como o S.O. deve
trat-la?

www.cliqueapostilas.com.br

11. Considerando a tabela de pginas abaixo, com pginas de 500


bytes,

informe

os

endereos

fsicos

correspondentes

aos

endereos lgicos, de um mesmo processo, 414 e 1.995, indicados


em decimal.
Pginas
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Referncia moldura
3
12
6
X
9
X
2
X
0
5
X
4
11
7
X
1

12. Um computador que utiliza memria virtual possui um espao de


endereamento de 16 bits. Os endereos virtuais so divididos em
um campo de 9 bits e o resto de deslocamento. Qual o tamanho
das

pginas

quantas

pginas

existem

no

espao

de

endereamento virtual?
13. O que TLB (Translation lookaside Buffers)? Qual sua utilidade?
14. Considere a seguinte sequncia de referncia de pgina:
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6
Quantas falhas de pgina ocorreriam para os seguintes algoritmos
de substituio, considerando quatro molduras? Lembre-se de que
todos as molduras esto inicialmente vazias, de modo que todas
as suas primeiras pginas alocadas custaro uma falha cada.
a) Substituio FIFO
b) Substituio LRU

www.cliqueapostilas.com.br

WEBLIOGRAFIA

Universidade Aberta do Piau UAPI


www.ufpi.br/uapi

Universidade Aberta do Brasil UAB


www.uab.gov.br

Secretaria de Educao Distncia do MEC - SEED


www.seed.mec.gov.br

Associao Brasileira de Educao Distncia ABED


www.abed.org.br

Curso de Sistemas Operacionais DCA/UFRN


Prof. Dr. Luiz Affonso Henderson Guedes de Oliveira
http://www.dca.ufrn.br/~affonso/DCA0108/curso.html

Home Page do Prof. Dr. Rmulo Silva de Oliveira


http://www.das.ufsc.br/~romulo/

Home Page do Autor Andrew S. Tanenbaum


http://www.cs.vu.nl/~ast/

Simulador de Ensino para Sistemas Operacionais


http://www.training.com.br/sosim/

www.cliqueapostilas.com.br

REFERNCIAS BIBLIOGRFICAS

BACON, J. e HARRIS, T. Operating Systems: Concurrent and


Distributed Software Design. Addison Wesley, 2003.

DEITELL, H. M. & DEITEL, P. J. & CHOFFNES, D. R. Sistemas


Operacionais. So Paulo, Ed. Prentice Hall, 2005.

MACHADO, F. e MAIA, L. Arquitetura de Sistemas Operacionais.


4 Edio, LTC, 2007

OLIVEIRA, R. S. e CARISSIMI, A. S. e TOSCANI, S. S. Sistemas


Operacionais. 3 ed, volume 11, Ed. Bookman, 2008.

SHAW, A. C. Sistemas e software de tempo real. Porto Alegre, Ed.


Bookman, 2003.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos


de Sistemas Operacionais. 6 Edio, Ed. LTC.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Sistemas


Operacionais com Java. 7 Edio, Rio de Janeiro, Ed. Elsevier,
2008.

TANENBAUM, A. S. & WOODHULL, A. S. Sistemas Operacionais:


Projeto e Implementao. 3 Edio, Porto Alegre, Ed. Bookman,
2008.

TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio,


So Paulo, Ed. Prentice Hall, 2003.

www.cliqueapostilas.com.br

O Sistema de Arquivo, sem sombra de dvida, a parte do


Sistema Operacional mais visvel para o usurio. Por se tratar da
parte mais visvel para usurios (alguns bastante experientes,
outros, nem tanto), o sistema de Arquivo tem uma grande
responsabilidade e desafio: apresentar uma interface fcil.
A

maioria

dos

programas

manipulam

informaes

necessitam grava-las de forma permanente (atravs de unidades


chamadas arquivos). Outra questo que deve ser considerada
que, frequentemente, vrios processos acessem as informaes ou
parte delas simultaneamente.
A parte do Sistema Operacional responsvel por gerenciar os
arquivos, o modo como eles so estruturados, nomeados,
acessados, utilizados, protegidos e implementados conhecida
como o Sistema de Arquivos e ser o assunto tratado nesta
Unidade.

www.cliqueapostilas.com.br

SUMRIO

SUMRIO

UNIDADE V SISTEMAS DE ARQUIVOS

1. INTRODUO AOS SISTEMAS DE ARQUIVOS


1.1. Arquivos
1.1.1. Nomeao de Arquivos
1.1.2. Estruturas de Arquivos
1.1.3. Tipos de Arquivos
1.1.4. Acesso aos Arquivos
1.1.5. Atributos de Arquivos
1.1.6. Operaes com Arquivos
1.2. Implementao de Arquivos
1.2.1. Alocao Contgua
1.2.2. Alocao por Lista Encadeada
1.2.3. Alocao por Lista Encadeada Usando ndice
1.3. Diretrios
1.3.1. Organizao de Sistemas de Diretrios
1.3.2. Nomes de Caminhos
1.3.3. Operaes com Diretrios
1.4. Implementao de Diretrios
EXERCCIOS DA UNIDADE
WEBLIOGRAFIA
REFERNCIAS BIBLIOGRFICAS

www.cliqueapostilas.com.br

UNIDADE V
SISTEMAS DE ARQUIVOS

1. INTRODUO AOS SISTEMAS DE ARQUIVOS

Segundo Tanenbaum, existem trs requisitos essenciais para


o armazenamento de informao por longo prazo:

Deve ser possvel armazenar uma grande quantidade de


informao;

A informao deve sobreviver ao trmino do processo que


a usa;

Mltiplos processos tm de ser capazes de acessar a


informao concorrentemente.

A soluo encontrada usualmente para o armazenamento de


informaes utilizar mdias externas e distintas da memria
principal (voltil) em unidades chamadas arquivos, de modo que
essas informaes devem ser armazenadas de forma persistente, ou
seja, no pode ser afetada pela criao e trmino de um processo.
Assim, um arquivo s ir ser destrudo quando seu proprietrio
remov-lo explicitamente.
Os arquivos so recipientes de dados, identificados por um
nome e por uma srie de atributos, mantidos e gerenciados pelo
Sistema Operacional.
J os diretrios so conjuntos de referncias a arquivos. Os
diretrios permitem agrupar arquivos, facilitando manuseio e
localizao.
Do ponto de vista do usurio, o aspecto mais importante do
Sistema de Arquivos como aparece para ele, ou seja, como o
Sistema de Arquivos implementado e quais estruturas so
utilizadas no a questo primordial. O usurio est mais
interessado no que o arquivo constitudo, nomeados e protegidos.

www.cliqueapostilas.com.br

1.1. Arquivos
Neste tpico veremos os arquivos do ponto de vista do
usurio, abordando suas principais propriedades. importante
lembrar que este captulo ir apresentar as caractersticas gerais de
Sistemas de Arquivos, de uma forma geral. Porm, cada Sistema de
Arquivo especfico contm caractersticas prprias. Caso o leitor
tenha interesse em obter mais informaes de um determinado
Sistema de Arquivo especfico, a webliografia desta unidade traz
alguns links que direcionam sites com informaes dos Sistemas
de Arquivos mais conhecidos: FAT32, NTFS e EXT.

1.1.1. Nomeao de Arquivos


Segundo Tanenbaum, o arquivo um mecanismo de
abstrao, no qual oferece meios de armazenar informaes no
disco e l-las posteriormente. A caracterstica mais importante de
qualquer mecanismo de abstrao o modo como os objetos so
gerenciados e nomeados, isto , a nomeao de arquivos.
Um processo ao criar um arquivo, atribui um nome a ele e
quando o processo termina, este arquivo continua existindo,
possibilitando que outros processos possam ter acesso a ele
simplesmente buscando por seu nome.
As regras de nomeao de arquivos variam de sistema para
sistema, porm, como caracterstica comum, todos os Sistemas
Operacionais atuais permitem cadeias de caracteres de um at oito
letras como nomes vlidos de arquivos. Alguns Sistemas de
Arquivos permite a utilizao de caracteres especiais, outros no;
alguns Sistemas de Arquivos permitem nomes com tamanhos at
255 caracteres; alguns Sistemas de Arquivos fazem distino entre
letras maisculas e minsculas (case sensitive), como exemplo o
Sistema de Arquivo do Unix, enquanto que outros no diferenciam,
como exemplo o Sistema de Arquivo do MS-DOS e do Windows.
A maioria dos Sistemas Operacionais (na verdade, o Sistema
de Arquivo do SO) suporta nomes de arquivos de duas partes,
separados por um ponto. A parte que segue o ponto chamada de

www.cliqueapostilas.com.br

extenso do arquivo e indica o tipo do arquivo. Essa extenso, em


alguns Sistemas Operacionais, utilizada para atribuir qual
programa deve abrir aquele arquivo em especfico.

1.1.2. Estruturas de Arquivos

Segundo Tanenbaum, os arquivos podem ser estruturados,


basicamente, atravs de trs maneiras, como visualizados na Figura
43.

Figura 43: Estruturas de Arquivos.

Seqncia de bytes no-estruturada: nessa estrutura o SO


no sabe o que o arquivo contm e tudo que ele enxerga
uma sequncia de bytes. Tal estratgia apresenta uma
mxima flexibilidade, uma vez que os programas dos
usurios podem pr qualquer coisa que queiram em seus
arquivos e cham-los do nome que lhes convier.

Seqncia de registro de comprimento fixo: Um arquivo


uma seqncia de registros de tamanho fixo, cada um com
alguma estrutura interna. A idia central que a operao
de leitura retorna um registro e a operao de escrita
sobrepe ou anexa um registro.

rvore de Registros: um arquivo constitudo de uma


rvore de registros (no necessariamente do mesmo

www.cliqueapostilas.com.br

tamanho), cada um contendo um campo-chave em uma


posio fixa no registro, na qual a rvore ordenada pelo
campo-chave para que se busque mais rapidamente por
uma chave especfica. Alm disso, novos registros podem
ser

adicionados

ao

arquivo,

decidindo

sistema

operacional onde coloc-los. Este tipo de arquivo


amplamente aplicado em computadores de grande porte
usados ainda para alguns processamentos de dados
comerciais.

1.1.3. Tipos de Arquivos


Vrios tipos de arquivos so suportados pelos Sistemas
Operacionais. Podemos enumerar os principais tipos:

Arquivos comuns: arquivos que contm informaes do


usurio.

Diretrios: arquivos do sistema que mantm a estrutura


do sistema de arquivos.

Arquivos especiais de caracteres: arquivos relacionados


entrada e sada e usados para modelar dispositivos de
E/S.

Arquivos especiais de blocos: arquivos usados para


modelar discos.

Os arquivos comuns (informaes do usurio), em geral, so


arquivos ASCII ou arquivos binrios. Os arquivos ASCII so
constitudos de linhas de texto, possuindo como grande vantagem o
fato de que eles podem ser mostrados e impressos como so e
poder ser editados com qualquer editor de textos. Alm disso, facilita
a conexo entre a sada de um programa e a entrada de um outro.
J os arquivos binrios, em geral, possuem alguma estrutura
interna, conhecida pelos programas que os usam. Todo Sistema
Operacional deve reconhecer pelo menos um tipo de arquivo: seu
prprio arquivo executvel.

www.cliqueapostilas.com.br

1.1.4. Acesso aos Arquivos


O acesso a arquivos pode ser realizado, basicamente, atravs
de duas maneiras.

Acesso seqencial: nesse tipo de acesso os arquivos


so lidos em ordem sequencialmente, partindo do incio,
mas nunca saltando e lendo fora de ordem. Esse tipo de
acesso muito utilizado, como exemplo, leitura de mdias
do tipo fita magntica, alm de leitura sequencial de
programas fontes, realizada por vrios compiladores.

Acesso Aleatrio: em alguns tipos de mdias possvel


ler bytes ou registros de um arquivo fora da ordem. Esses
arquivos so chamados de arquivos de acesso aleatrio.

Segundo Tanenbaum, em alguns Sistemas Operacionais


antigos, os arquivos eram classificados por acesso sequencial ou
por acesso aleatrio no momento em que estavam sendo criados.
Entretanto, os Sistemas Operacionais modernos no fazem
distino, ou seja, todos os seus arquivos so, automaticamente, de
acesso aleatrio.

1.1.5. Atributos de Arquivos


A

maioria

dos

Sistemas

Operacionais

associa

vrias

informaes extras a um determinado arquivo. Essas informaes


so, comumente, chamadas de atributos de um arquivo.
Os tipos de atributos variam de sistema para sistema e
nenhum sistema dispe de todos os tipos de atributos possveis.
Podemos enumerar uma srie de atributos, como: pessoas que
podem acessar, senhas, criador, proprietrio, comprimento do
arquivo, tempo de criao, tempo do ltimo acesso, tempo da ltima
atualizao, tamanho mximo, dentre outros.

1.1.6. Operaes com Arquivos


A finalidade dos arquivos armazenar informao e permitir
que ela seja recuperada posteriormente. Assim, os Sistemas de
Arquivos oferecem diferentes operaes para armazenar e recuperar

www.cliqueapostilas.com.br

informaes. Dentre as vrias operaes possveis sobre arquivos,


podemos destacar:

Criar: operao utilizada para criar o arquivo.

Apagar: operao utilizada para excluir um determinado


arquivo, liberando espao de memria.

Abrir: operao utilizada para abrir um arquivo e permitir


escrita ou leitura de informaes.

Fechar: operao utilizada para fechar um arquivo e


manter sua consistncia.

Ler: operao disponibilizada para ler informaes do


arquivo, para poderem ser utilizadas.

Escrever: operao para incluir alguma informao no


arquivo.

1.2. Implementao de Arquivos


Vrios mtodos so utilizados para implementar arquivos e
neste tpicos examinaremos alguns deles.

1.2.1. Alocao Contgua


Trata-se do exemplo mais simples de implementar, no qual
utilizado um bloco de dados contguo (sequencial) no disco para
armazenar um arquivo. Por exemplo, considerando um disco com
blocos de 1k, um arquivo com 20k ocuparia 20 blocos consecutivos.
Este tipo de alocao traz como principal vantagens a
simplicidade de implementao e o fato de ter um bom desempenho
no acesso a um arquivo, pois um arquivo inteiro pode ser lido com
apenas uma operao.
Porm, a alocao contgua possui grandes desvantagens. A
primeira est no fato de que este tipo de alocao s praticvel
caso seja conhecido o tamanho do arquivo no momento de sua
criao. Outra desvantagem que este tipo de alocao gera uma
fragmentao no disco.
A alocao contgua representada atravs da Figura 44.

www.cliqueapostilas.com.br

Figura 44: Implementao de Arquivos por Alocao Contgua.

1.2.2. Alocao por Lista Encadeada


Outro mtodo para armazenar um arquivo utilizando listas
encadeadas de blocos de disco. Cada bloco conter, dessa forma, o
seu dado armazenado e um ponteiro para o bloco seguinte.
A principal vantagem de se utilizar a alocao por lista
encadeada est no fato de evita o grande desperdcio em disco,
comum na alocao contgua. Alm disso, para acessar todo o
arquivo suficiente armazenar apenas o endereo de disco do
primeiro bloco.
Porm, a principal desvantagem da utilizao desse mtodo
que o acesso aleatrio extremamente lento. Alm disso,
considerando que cada bloco ter que guardar o endereo do bloco
seguinte, existe um gasto de memria adiciona. A alocao por lista
encadeada representada atravs da Figura 45.

www.cliqueapostilas.com.br

Figura 45: Implementao de Arquivos por Alocao


por Lista Encadeada.

1.2.3. Alocao por Lista Encadeada Usando ndice


Uma maneira de tentar driblar as duas desvantagens de se
utilizar alocao por lista encadeada seria utilizar a palavra ponteiro
de cada bloco de disco de um arquivo e colocar em uma tabela ou
em um ndice na memria.
Dessa forma, o bloco inteiro no disco estar disponvel para
armazenamento de dados (no necessrio armazenar mais o
ponteiro para o prximo bloco). Alm disso, o acesso aleatrio
muito mais fcil, pois a cadeia de blocos est toda em memria, no
sendo necessrio qualquer referncia ao disco. A Figura 46 ilustra a
tabela utilizada neste mtodo de alocao para armazenar a
sequncia dos blocos do arquivo representado pela lista encadeada
da Figura 45.

www.cliqueapostilas.com.br

Figura 46: Implementao de Arquivos por Alocao


por Lista Encadeada, utilizando ndice.

1.3. Diretrios
Os sistemas de arquivos tm, em geral, diretrios ou pastas
para controlar os arquivos, que, em muitos sistemas, tambm so
considerados arquivos.

1.3.1. Organizao de Sistemas de Diretrios


A maneira mais simples de se projetar um Sistema de
Arquivos ter um diretrio contendo todos os arquivos, comumente
chamado de diretrio-raiz.
Esse sistema era muito comum, em parte, nos primeiros
computadores pessoais, pois havia somente um usurio. Porm, em
um sistema com vrios usurios o problema de haver somente um
diretrio que diferentes usurios podem usar acidentalmente os
mesmos nomes para seus arquivos. Em conseqncia disso, esse
esquema no mais empregado em sistemas multiusurio, mas,

www.cliqueapostilas.com.br

comumente empregado em sistemas embarcados (embedded


Systems). Esse esquema demonstrado na Figura 47.

Figura 47: Projeto de Sistemas de Arquivos com um nvel.

Com a finalidade de evitar conflitos causados por diferentes


usurios escolhendo o mesmo nome para seus arquivos, a soluo
oferecer um diretrio privado para cada usurio. Dessa forma, os
nomes escolhidos por um usurio no interferiria nos nomes
escolhidos por outro usurio, podendo ocorrer de arquivos com o
mesmo nome em dois ou mais diretrios sem causar nenhum
problema. Este esquema est ilustrado na Figura 48.

Figura 48: Projeto de Sistemas de Arquivos com dois nveis.

www.cliqueapostilas.com.br

Os conflitos de nomes entre os usurios so eliminados na


hierarquia em dois nveis, mas tal hierarquia no satisfatria para
os usurios com um nmero muito grande de arquivos ou que
desejam agrupar seus arquivos de maneira lgica. Dessa forma,
podemos utilizar uma hierarquia geral, ou seja, uma rvore de
diretrios, no qual cada usurio pode ter tantos diretrios quanto
necessrios para agrupar os seus arquivos de uma maneira natural.
Assim, essa capacidade dos usurios criarem um nmero arbitrrio
de subdiretrios constitui uma poderosa ferramenta de estruturao
para organizar seus trabalhos. Por esse motivo, quase todos os
modernos sistemas de arquivos so organizados dessa forma. A
Figura 49 ilustra este tipo de projeto hierrquico.

Figura 49: Projeto de Sistemas de Arquivos hierrquico.

1.3.2. Nomes de Caminhos


Quando organizamos um Sistema de arquivos baseado em
uma rvore de diretrios, torna-se necessrio uma forma de
especificar o nome dos arquivos, e para isso so usados,
comumente, dois mtodos: nome de caminho absoluto e nome de
caminho relativo.

www.cliqueapostilas.com.br

Um nome de caminho absoluto formado pelo caminho entre


o diretrio-raiz e o arquivo especfico. Os nomes de caminhos
absolutos sempre iniciam no diretrio-raiz e so nicos. Em
Sistemas de Arquivos do Windows os componentes do caminho so
separados por \. J em Sistemas de Arquivos do Unix so separados
por /.
J o nome de caminho relativo utilizado em conjunto com o
conceito de diretrio de trabalho (tambm chamado diretrio atual).
Assim, um usurio pode designar um diretrio de trabalho especfico
e quaisquer nomes de caminhos que no comecem a partir do
diretrio-raiz so interpretados em relao ao diretrio do trabalho.
Como exemplo, imagine que o diretrio de trabalho de um usurio
UNIX seja /home/usurio, ento o arquivo, cujo nome de caminho
absoluto seja /home/usurio/arquivo.txt pode, simplesmente, ser
interpretado como arquivo.txt.
Cada processo possui seu prprio diretrio de trabalho.
Dessa forma, quando um processo altera seu diretrio de trabalho e
depois sai, nenhum outro processo afetado e nenhum vestgio da
mudana deixado no sistema de arquivos. Por outro lado,
procedimentos de bibliotecas raramente alteram o diretrio de
trabalho e, quando precisam faz-lo, eles sempre voltam para onde
estavam, se no o resto do programa poder no funcionar.
A maioria dos Sistemas Operacionais que suportam um
sistema de diretrio hierrquico tem duas entradas especiais em
cada diretrio: ponto (.) e o ponto-ponto (..). O ponto refere-se ao
diretrio atual, enquanto que o ponto-ponto refere-se ao diretrio pai
(diretrio anterior). Como exemplo, se um usurio tiver trabalhando
no diretrio /home/usurio, caso utilize o ponto-ponto, ele estar
subindo na rvore de diretrios, ou seja, referenciando o diretrio
/home. Se ele utilizar o ponto, estar referenciando o prprio
diretrio (/home/usurio).

www.cliqueapostilas.com.br

1.3.3. Operaes com Diretrios


Como os arquivos, existem diversas chamadas ao sistema
para gerenciar diretrios, que, tambm, variam de sistema para
sistema. As operaes mais importantes so:

Criar: utilizado para criar um determinado diretrio.


Inicialmente criado um diretrio vazio, contendo apenas
o ponto e o ponto-ponto.

Apagar: operao utilizada para apagar um determinado


diretrio. Normalmente, s possvel excluir um diretrio
vazio.

Abrir diretrio: a partir desta operao possvel abrir um


diretrio. Antes de ler um diretrio preciso, inicialmente,
abri-lo.

Fechar diretrio: operao utilizada para fechar um


diretrio.

Ler: esta chamada utilizada para ler o contedo de um


diretrio.

Renomear: fornece a possibilidade de alterar o nome do


diretrio.

1.4. Implementao de Diretrios


O Sistema Operacional utiliza o nome de caminho fornecido
pelo usurio para poder localizar a entrada de diretrio. A entrada de
diretrio contm informaes necessrias para a localizao dos
blocos de disco. Essas informaes podem ser o endereo do
arquivo inteiro ou o nmero do primeiro bloco, por exemplo. Assim, a
principal funo do sistema de diretrio mapear o nome ASCII do
arquivo para as informaes necessrias para localizar os dados em
disco (Tanenbaum).

www.cliqueapostilas.com.br

EXERCCIOS DA UNIDADE

1. Qual a funo de um sistema de gerenciamento de arquivos em


um Sistema Operacional.
2. O que so arquivos e diretrios.
3. Aponte as principais caractersticas de nomeao de arquivos.
4. Como os arquivos podem ser estruturados.
5. Enumere os principais atributos de um arquivo.
6. Enumere as principais operaes com arquivos, explicando-as.
7. Como caracterizado a implementao de um arquivo a partir de
alocao contgua.
8. Como caracterizado a implementao de um arquivo a partir de
listas encadeadas.
9. O que muda na implementao de arquivos a partir de listas
encadeadas com ndice.
10. Aponte as principais formas de organizao de sistemas de
diretrios.
11. Qual a diferena de nomes de caminhos absolutos e relativos.
12. Enumere as principais operaes com diretrios, explicando-as.

www.cliqueapostilas.com.br

WEBLIOGRAFIA

Universidade Aberta do Piau UAPI


www.ufpi.br/uapi

Universidade Aberta do Brasil UAB


www.uab.gov.br

Secretaria de Educao Distncia do MEC - SEED


www.seed.mec.gov.br

Associao Brasileira de Educao Distncia ABED


www.abed.org.br

Curso de Sistemas Operacionais DCA/UFRN


Prof. Dr. Luiz Affonso Henderson Guedes de Oliveira
http://www.dca.ufrn.br/~affonso/DCA0108/curso.html

Home Page do Prof. Dr. Rmulo Silva de Oliveira


http://www.das.ufsc.br/~romulo/

Home Page do Autor Andrew S. Tanenbaum


http://www.cs.vu.nl/~ast/

Simulador de Ensino para Sistemas Operacionais


http://www.training.com.br/sosim/

NTFS New Technology File System


http://www.ntfs.com/

FAT32 File System Specification


http://www.microsoft.com/whdc/system/platform/firmware/fatgen.msp
x

www.cliqueapostilas.com.br

Ext2fs Home Page


http://e2fsprogs.sourceforge.net/ext2.html

www.cliqueapostilas.com.br

REFERNCIAS BIBLIOGRFICAS

BACON, J. e HARRIS, T. Operating Systems: Concurrent and


Distributed Software Design. Addison Wesley, 2003.

DEITELL, H. M. & DEITEL, P. J. & CHOFFNES, D. R. Sistemas


Operacionais. So Paulo, Ed. Prentice Hall, 2005.

MACHADO, F. e MAIA, L. Arquitetura de Sistemas Operacionais.


4 Edio, LTC, 2007

OLIVEIRA, R. S. e CARISSIMI, A. S. e TOSCANI, S. S. Sistemas


Operacionais. 3 ed, volume 11, Ed. Bookman, 2008.

SHAW, A. C. Sistemas e software de tempo real. Porto Alegre, Ed.


Bookman, 2003.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos


de Sistemas Operacionais. 6 Edio, Ed. LTC.

SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Sistemas


Operacionais com Java. 7 Edio, Rio de Janeiro, Ed. Elsevier,
2008.

TANENBAUM, A. S. & WOODHULL, A. S. Sistemas Operacionais:


Projeto e Implementao. 3 Edio, Porto Alegre, Ed. Bookman,
2008.

TANENBAUM, A. S. Sistemas Operacionais Modernos. 2 Edio,


So Paulo, Ed. Prentice Hall, 2003.

www.cliqueapostilas.com.br

Erico Meneses Leo


CV. http://lattes.cnpq.br/1117954290627743

Possui graduao em Bacharelado em Cincia da Computao pela


Universidade Federal do Piau, Brasil, em 2005, e Mestre em
Cincias pelo Programa de Ps-Graduao em Engenharia Eltrica,
com nfase em Engenharia de Computao, da Universidade
Federal do Rio Grande do Norte, Brasil, em 2007. Foi professor do
curso de Cincia da Computao do Centro de Ensino Unificado de
Teresina - CEUT e do curso de Sistema de Informao da
Faculdade de Atividades Empresariais de Teresina - FAETE. Desde
2008, ele professor do quadro efetivo Assistente do Departamento
de Informtica e Estatstica - DIE da Universidade Federal do Piau UFPI. Seus principais interesses de pesquisa e atuao incluem
arquitetura de sistemas distribudos de tempo real, sistemas
operacionais, redes de computadores e sistemas de comunicao
de tempo real para redes industriais.

Você também pode gostar