Escolar Documentos
Profissional Documentos
Cultura Documentos
sistemas
operacionais
Sistemas
Operacionais
COORDENADORES DE CURSOS
ADMINISTRAO Antonella Maria das Chagas Sousa
CINCIAS BIOLGICAS Maria da Conceio Prado de Oliveira
FILOSOFIA Zoraida Maria Lopes Feitosa
FSICA Miguel Arcanjo Costa
MATEMTICA Joo Bencio de Melo Neto
PEDAGOGIA Vera Lcia Costa Oliveira
QUMICA Rosa Lima Gomes do Nascimento Pereira da Silva
SISTEMAS DE INFORMAO Luiz Cludio Demes da Mata Sousa
A responsabilidade pelo contedo e imagens desta obra da autora. O contedo desta obra foi licenciado temporria e
gratuitamente para utilizao no mbito do Sistema Universidade Aberta do Brasil, atravs da UFPI. O leitor se compromete
a utilizar o contedo desta obra para aprendizado pessoal, sendo que a reproduo e distribuio ficaro limitadas ao mbito
interno dos cursos. A citao desta obra em trabalhos acadmicos e/ou profissionais poder ser feita com indicao da fonte.
A cpia desta obra sem autorizao expressa ou com intuito de lucro constitui crime contra a propriedade intelectual, com
sanses previstas no Cdigo Penal.
proibida a venda ou distribuio deste material.
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,
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.
A 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 principal deste estudo 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, alm de exerccios para praticar o assunto. A referncia
e a referncia na web ao fim das notas so importantes para que o leitor se
aprofunde na teoria apresentada em cada unidade.
Este material procura basear-se em anotaes do autor da disciplina
de Sistemas Operacionais, em aulas ministradas no curso de Bacharelado
em Cincia da Computao da Universidade Federal do Piau, alm de livros
clssicos de Sistemas Operacionais, como Sistemas Operacionais Modernos,
de Andrew Tanenbaum (referncia bsica e principal), Fundamentos de
Sistemas Operacionais, de Abraham Silberschatz e Operating Systems (J.
Bacon). Outra obra influente neste estudo o Sistemas Operacionais
do professor Rmulo Oliveira da Universidade Federal de Santa Catarina,
livro bastante didtico e utilizado como referncia na maioria dos cursos de
Sistemas Operacionais no pas.
Introduo..................................................................................13
UNIDADE 2
27 GERENCIAMENTO DE PROCESSOS
UNIDADE 3
55 GERENCIAMENTO DE ENTRADA E SADA
Introduo...................................................................................57
Princpios de hardware de E/S....................................................58
Princpios de software de E/S.....................................................61
Deadloks.....................................................................................63
UNIDADE 4
77 GERENCIAMENTO DE MEMRIA
Introduo..................................................................................79
Gerenciamento bsico de memria...........................................80
Gerenciamento de memria para multiprogramao................81
Memria virtual..........................................................................86
Algoritmos de substituio de pginas.......................................92
UNIDADE 5
101 SISTEMAS DE ARQUIVOS
REFERNCIAS
115
UNIDADE 01
Viso Geral
Resumindo
Para iniciarmos o curso de Sistemas Operacionais (SO) devemos compreender as definies
bsicas que envolvem a rea. A fim de evitar muitas repeties, trataremos Sistemas Operacionais
pelo termo SO. A primeira unidade dedicada viso geral sobre SO. Iremos 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). Apresentaremos um breve
histrico dos Sistemas Operacionais, que vm junto da evoluo dos Sistemas Computacionais,
alm da classificao dos SOs. O leitor dever ter a capacidade de entender como e por que
surgiram os Sistemas Operacionais, alm de conhecer os tipos de Sistemas Operacionais. O leitor
ter disponveis exerccios e referncias clssicas para se aprofundar nos estudos e, quem sabe,
ingressar nesta grande rea de estudo e pesquisas.
SISTEMAS OPERACIONAIS 11
viso geral
INTRODUO
SISTEMAS OPERACIONAIS 13
Figura 1: Sistema Computacional composto pelo hardware, programas de sistemas e
programas aplicativos.
14 UNIDADE 01
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.
SISTEMAS OPERACIONAIS 15
Objetivos de um Sistema Operacional
Incio
16 UNIDADE 01
Figura 2: Mquina analtica de Babbage.
SISTEMAS OPERACIONAIS 17
Nesta poca, com o surgimento das primeiras linguagens de
programao, os programas deixaram de ser feitos diretamente no hardware,
facilitando assim o processo de desenvolvimento de programas.
Figura 4: Transistor
18 UNIDADE 01
Figura 6: Sistema de processamento em lote.
SISTEMAS OPERACIONAIS 19
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 execut-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 completo 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).
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.
20 UNIDADE 01
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 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, permitindo o funcionamento
de sistemas e aplicaes distribudas, que figuram nossa realidade.
22 UNIDADE 01
Os Sistemas monoprogramveis so de simples implementao,
comparado com sistemas multiprogramveis e multiprocessadores, posto que
no necessrio muita preocupao com compartilhamento e concorrncia.
SISTEMAS OPERACIONAIS 23
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 em que 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.
Sistemas Batch
Sistemas multiprocessadores
24 UNIDADE 01
caracterstica traz como 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 e benefcios
apresentados na multiprogramao, alm de outras caractersticas e
vantagens especficas como escalabilidade, disponibilidade e balanceamento
de carga.
Escalabilidade a capacidade de ampliar o poder computacional
do sistema apenas adicionando 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.
SISTEMAS OPERACIONAIS 25
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 deste material, nas unidades seguintes, estudaremos
cada poro citada.
Chamadas de sistemas
EXERCCIOS
26 UNIDADE 01
UNIDADE 02
Gerenciamento de Processos
Resumindo
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, tratamos da parte do Sistema Operacional conhecido como gerenciador de
processos. Abordamos o conceito de processos e a estrutura do modelo de processos. Tratamos
da comunicao entre os processos, abordando os possveis problemas e alternativas para lidar
com essa concorrncia. Abordamos sobre o gerenciamento do processador, que a partir de uma
lista de processos prontos para serem executados, mostrar qual deles escolhido para utilizar o
processador.
SISTEMAS OPERACIONAIS 27
gerenciamento de processos
Conceito de processos
SISTEMAS OPERACIONAIS 29
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 de 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.
Criao de processos
30 UNIDADE 02
Figura 11: rvore de processos.
Estados de um processo
SISTEMAS OPERACIONAIS 31
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 bloqueado.
32 UNIDADE 02
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.
Tabelas de processos
Threads
COMUNICAO INTERPROCESSOS
SISTEMAS OPERACIONAIS 33
O Sistema Operacional tem a funo de gerenciar e sincronizar
processos concorrentes, com o objetivo de manter o bom funcionamento do
sistema.
Condies de corrida
34 UNIDADE 02
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 14 visualiza esta situao atual.
SISTEMAS OPERACIONAIS 35
Figura 15: Situao do Diretrio de impresso aps insero do nome de arquivo do
processo A.
Sees crticas
36 UNIDADE 02
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.
Desativando interrupes
Variveis de bloqueio
SISTEMAS OPERACIONAIS 37
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 ideia 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 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.
Alternncia estrita
Processo A Processo B
Enquanto(Verdadeiro){ Enquanto(Verdadeiro){
Enquanto(bloqueio 0); Enquanto(bloqueio 0);
//espera //espera
Regio_crtica_A; Regio_crtica_B;
Bloqueio = 1; Bloqueio = 0;
Regio_no_crtica_A; Regio_no_crtica_B;
} }
38 UNIDADE 02
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-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 no-crtica rapidamente
e, novamente, precisa entrar em sua regio no-crtica. 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.
Soluo de Peterson
SISTEMAS OPERACIONAIS 39
#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
}
40 UNIDADE 02
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.
SISTEMAS OPERACIONAIS 41
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 se trata= 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.
Semforos
42 UNIDADE 02
PROBLEMAS CLSSICOS DE CIP
Figura 16
SISTEMAS OPERACIONAIS 43
Figura 17: O problema clssico de comunicao interprocessos do Jantar dos
Filsofos.
44 UNIDADE 02
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.
SISTEMAS OPERACIONAIS 45
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 o 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.
ESCALONAMENTO DE PROCESSOS
46 UNIDADE 02
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 atribu-lo outro
chamado por vrios autores da rea por troca de contexto.
Nos tpicos a seguir, veremos com detalhes alguns algoritmos de
escalonamento de processos.
SISTEMAS OPERACIONAIS 47
Processo Durao de Execuo
A 12
B 8
C 15
D 5
48 UNIDADE 02
Algoritmo de escalonamento menor tarefa primeiro
SISTEMAS OPERACIONAIS 49
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 se trata 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 21.
Figura 21: Diagrama de tempo usando a poltica Round Robin (quantum 4 unidades
de tempo).
50 UNIDADE 02
Algoritmo de escalonamento por prioridades
SISTEMAS OPERACIONAIS 51
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).
EXERCCIOS
52 UNIDADE 02
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?
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.
P1 24
P2 3
P3 3
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:
P1 7 0
P2 4 2
P3 1 4
P4 4 5
SISTEMAS OPERACIONAIS 53
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 escalonamento no-
preemptvel.
c) Menor Job Primeiro, utilizando uma poltica de escalonamento preemptvel.
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 Prioridade
CPU
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2
Suponha que os processos chegam ao computador ao mesmo tempo.
Calcule o tempo de espera de cada processo e o tempo mdio de espera.
54 UNIDADE 02
UNIDADE 03
Gerenciamento de Entrada e Sada
Resumindo
Uma das principais funes de um Sistema Operacional controlar e gerenciar todos os dispositivos
de entrada e sada disponveis no Sistema de Computao que 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. 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, tratamos da
parte do Sistema Operacional responsvel por fazer toda essa tarefa descrita, que chamada de
gerenciamento de dispositivos de entrada e sada ou, simplesmente, gerenciamento de entrada e
sada. Tratamos tambm na unidade os impasses causados por tentativas de acesso concorrente
aos vrios dispositivos disponveis no Sistema Computacional.
SISTEMAS OPERACIONAIS 55
gerenciamento de
entrada e sada
INTRODUO
SISTEMAS OPERACIONAIS 57
PRINCPIOS DE HARDWARE DE E/S
58 UNIDADE 03
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.
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.
Controladoras de dispositivos
SISTEMAS OPERACIONAIS 59
computador. O dispositivo em si 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.
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
verificar erros, pode ser copiado para a memria principal. A maioria dos
Sistemas Operacionais quase sempre lida com a controladora, no com o
dispositivo.
As controladoras so formadas de um conjunto de registradores que
so enxergados 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.
60 UNIDADE 03
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.
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.
SISTEMAS OPERACIONAIS 61
Manipuladores de interrupes
Drivers de dispositivos
62 UNIDADE 03
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.
DEADLOCKS
SISTEMAS OPERACIONAIS 63
Uma ilustrao de deadlock bem interessante, trazida no livro de
Silberschatz, seria a 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 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.
64 UNIDADE 03
Figura 25: Ns de processos e recursos na modelagem de deadlocks.
SISTEMAS OPERACIONAIS 65
impasse. Porm, se o ciclo fechado for formado, poderemos ter um deadlock.
A Figura 27 (a) mostra um grafo sem deadlock e a Figura 27 (b) mostra uma
situao de impasse.
Figura 27: Modelagem atravs de grafos. (a) Situao onde no est caracterizado
deadlock. (b) situao onde se caracteriza um deadlock.
Algoritmo do Avestruz
66 UNIDADE 03
Esta soluo utilizada em muitos Sistemas Operacionais, inclusive o
UNIX. Assim, quando acontece uma situao de impasse, o SO simplesmente
ignora o problema, passando a responsabilidade do usurio para tomada de
decises.
Deteco e recuperao
Preveno de impasses
SISTEMAS OPERACIONAIS 67
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 no preempo
68 UNIDADE 03
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 29 ilustra essa soluo.
Impedimento de impasses
SISTEMAS OPERACIONAIS 69
Algoritmo do banqueiro para um nico recurso
70 UNIDADE 03
solicitarem seus recursos mximos.
Figura 31: Estado considerado seguro no algoritmo do banqueiro para nico recurso.
SISTEMAS OPERACIONAIS 71
Figura 32: Estado considerado no seguro no Algoritmo do Banqueiro para nico
Recurso.
72 UNIDADE 03
Note a partir da Figura 33, 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:
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 processo execute e se finalize, os recursos por ele alocados
sero disponibilizados e podero ser utilizados por outro processo.
SISTEMAS OPERACIONAIS 73
que o vetor de recursos livre. Analise atravs da Figura 35 esta situao
impasse.
EXERCCIOS
74 UNIDADE 03
processos usado mximo
P1 2 7
P2 2 6
P3 3 5
P4 5 8
Disponvel: 2
Proc./Rec. R1 R2 R3 R4
P1 3 0 1 1
P2 0 1 0 0
P3 1 1 1 0
P4 1 1 0 1
P5 0 0 0 0
Recursos atribudos
Proc./Rec. R1 R2 R3 R4
P1 1 1 0 0
P2 0 1 1 2
P3 3 1 0 0
P4 0 0 1 0
P5 2 1 1 0
Recursos ainda necessrios
Vetores Existentes = (6342)
Vetores Possudos = (5322)
Vetores Disponveis = (1020)
SISTEMAS OPERACIONAIS 75
UNIDADE 04
Gerenciamento de Memria
Resumindo
Vimos na Unidade 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 a alternncia entre os processos para usar o processador seja rpida, 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 mais 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 tratamos 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.
SISTEMAS OPERACIONAIS 77
gerenciamento de memria
INTRODUO
SISTEMAS OPERACIONAIS 79
Figura 36: Hierarquia de Memria
80 UNIDADE 04
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 37 ilustra esse esquema de
gerenciamento de memria principal.
SISTEMAS OPERACIONAIS 81
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 38 mostra esse esquema de
gerenciamento de memria.
82 UNIDADE 04
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 39.
SISTEMAS OPERACIONAIS 83
O mtodo bem simples. Observe atravs da Figura 40, que um
processo A ao chegar carregado na memria e o seu tamanho define
o tamanho da sua partio. Os processos 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.
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, de mtodo de Troca. A troca
consiste em trazer um processo inteiro, execut-lo temporariamente e, ento,
devolv-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
84 UNIDADE 04
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 mapa de bits e listas encadeadas. Veremos essas duas estratgias
nos sub-tpicos a seguir:
SISTEMAS OPERACIONAIS 85
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.
MEMRIA VIRTUAL
86 UNIDADE 04
tempo do programador. O ideal seria que a diviso do programa fosse feito
pelo sistema.
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 43
mostra um desenho ilustrativo desta tcnica.
SISTEMAS OPERACIONAIS 87
Paginao
88 UNIDADE 04
Figura 44: Tcnica de paginao
SISTEMAS OPERACIONAIS 89
Com esse mapeamento, o endereo virtual 0, que se encontra
na pgina 0 (0k-4k) mapeado pela MMU para a moldura 2 (8k-12k). 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 quatro 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.
A Figura 46 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
90 UNIDADE 04
moldura a ser retirada escolhida baseada em algoritmos de escalonamento,
chamados de algoritmos de substituio de pginas, que veremos mais a
seguir.
SISTEMAS OPERACIONAIS 91
ALGORITMOS DE SUBSTITUIO DE PGINAS
92 UNIDADE 04
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.
SISTEMAS OPERACIONAIS 93
Algoritmo de Substituio de Pgina FIFO
94 UNIDADE 04
Algoritmo de substituio de pgina de segunda chance
SISTEMAS OPERACIONAIS 95
Observe na Figura 49 que os bits das pginas 15, 16, 1 e 2 foram
zeradas e a pgina 17 entrou no lugar da pgina 3.
96 UNIDADE 04
Figura 50: Algoritmo de substituio de pgina menos recentemente utilizada
EXERCCIOS
SISTEMAS OPERACIONAIS 97
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?
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.
98 UNIDADE 04
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 todas as
molduras esto inicialmente vazias, de modo que todas as suas primeiras
pginas alocadas custaro uma falha cada.
a) Substituio FIFO
b) Substituio LRU
SISTEMAS OPERACIONAIS 99
UNIDADE 05
Sistemas de Arquivos
Resumindo
O Sistema de Arquivos, 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 Arquivos tem uma grande responsabilidade e desafio: apresentar uma
interface fcil. A maioria dos programas manipula informaes e necessitam grav-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
Sistema de Arquivos e ser o assunto tratado nesta Unidade.
Nomeao de arquivos
104 UNIDADE 05
Estruturas de arquivos
106 UNIDADE 05
Atributos de Arquivos
Implementao de arquivos
Alocao contgua
108 UNIDADE 05
bloco ter que guardar o endereo do bloco seguinte, existe um gasto de
memria adicional. A alocao por lista encadeada representada atravs
da Figura 53.
Diretrios
110 UNIDADE 05
Figura 55: Projeto de Sistema de Arquivos com um nvel.
Nomes de caminhos
112 UNIDADE 05
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).
EXERCCIOS
Referncias na Web
114 UNIDADE 05
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.mspx
Ext2fs Home Page
http://e2fsprogs.sourceforge.net/ext2.html
Referncias
CV. http://lattes.cnpq.br/1117954290627743
116 UNIDADE 05
118 UNIDADE 04