Você está na página 1de 38

Cap. 1 - Introduo aos Sistemas Operativos (resumo na pg.

94)
Um Sistema Operativo software que gere o hardware e providencia um ambiente que
permite correr programas aplicacionais. um intermedirio entre o utilizador e o
hardware.
Arquitecturas:
Processador nico;
Multiprocessador - 2 ou mais processadores partilham memria fsica e
dispositivos perifricos. O design mais comum nesta arquitectura o
multiprocessamento simtrico (SMP), onde todos so considerados pares (peers)
e so independentes uns dos outros.
O multiprocessamento permite que vrios jobs estejam na memria ao mesmo tempo,
organizando-os de modo a que o CPU tenha sempre um para executar. Sempre que o job
que est em execuo tiver de esperar por algo colocado em espera.
No timesharing (multi-tarefa), o CPU muda de job frequentemente e bastante depressa,
dando a ideia que cada job est sempre a correr correctamente.
Para evitar que os processos interfiram com o funcionamento correcto do sistema, o
hardware tem dois modos: o utilizador e o ncleo. Certas instrues so privilegiadas e
podem apenas ser executadas no ncleo.
Um sistema distribudo um conjunto de computadores independentes que aparecem
aos utilizadores como um s e que tm o objectivo de partilhar tarefas. Os sistemas
distribudos permitem aos utilizadores partilhar recursos em hosts dispersos via rede.
Pode ser feito atravs do modelo cliente-servidor ou do modelo peer-to-peer.
Os dois tipos bsicos de rede so LAN e WAN. As LAN permitem que processadores
prximos geograficamente comuniquem entre si, enquanto que a WAN o faz para uma
rea maior. As LAN costumam ser mais rpidas.

Cap. 2 - Estruturas do Sistema Operativo (resumo na pg.


132)
Os Sistemas Operativos providenciam vrios servios. Num nvel mais baixo, as
chamadas ao sistema permitem que um programa a correr faa pedidos directamente ao
Sistema Operativo. Num nvel mais elevado, o shell fornece um mecanismo ao
utilizador para que este possa fazer um pedido sem ter que escrever um programa. Os
comandos podem vir de ficheiros executados em batch ou directamente a partir do
terminal.
Os tipos de pedidos variam de acordo com o nvel. O nvel das chamadas ao sistema
tem de fornecer as funes bsicas, como o controlo de processos e manipulao de
ficheiros. Pedidos a nveis mais elevados so convertidos numa sequncia de chamadas
ao sistema. Os servios do Sistema Operativo podem ser divididos em vrias
categorias: controlo de programas, pedidos de estado e pedidos de E/S.
Uma vez definidos os servios do sistema, pode ser desenvolvida a sua estrutura. O
desenho de um Sistema Operativo importante, boas tcnicas para tal so fazer uma
sequncia de chamadas ou usar um microkernel. Ao longo de todo o desenho de um
Sistema Operativo, deve-se ter cuidado em separar as polticas (decises) dos
mecanismos (detalhes de implementao), o que permite flexibilidade caso mais tarde
se pretenda alterar as polticas.
O conceito de mquina virtual pega na aproximao por camadas e trata o ncleo do
Sistema Operativo e o hardware como se fossem ambos hardware. At outros Sistemas
Operativos podem ser carregados em cima desta mquina virtual.
Os Sistemas Operativos so quase sempre escritos em linguagens de implementao de
sistemas (Assembly) ou em linguagens de alto nvel (C, C++, ...). As vantagens e
desvantagens em usar linguagens de alto nvel so:
Mais rpido de desenvolver;
Compacto;
Mais fcil para os outros entenderem;
Mais fcil de adaptar para outro hardware;
Desempenho;
Espao Ocupado;
Atenuados por compiladores actuais;
Identificao de rotinas mais usadas.
Para se inicializar o sistema, o CPU tem de inicializar e comear a executar o bootstrap
program em firmware. O bootstrap pode executar o sistema Operativo caso o Sistema
Operativo esteja tambm no firmware ou pode fazer uma sequncia na qual carrega
progressivamente programas mais inteligentes do firmware ou do disco at o prprio
Sistema Operativo ser carregado.

Cap. 3 - Processos (resumo na pg. 175)


Um processo um programa em execuo. medida que o processo executado, ele
muda de estado. O estado de um processo definido pela actividade corrente desse
processo. Os estados possveis de um processo so:
New - Processo a ser criado;
Running - Processo com instrues a serem executadas;
Waiting - O processo est espera de um evento (concluso de uma operao de
E/S ou de um nvel);
Ready - O processo est espera que lhe seja atribudo processador;
Terminated - O processo terminou a sua execuo.
Quando um processo no est a ser executado, colocado numa das duas filas de
espera: a dos pedidos E/S ou a ready. Cada processo representado por um PCB
(process control block) que podem ser ligados para formar uma fila ready.
Ciclo de vida de um processo:
Novos processos so colocados na fila ready;
Esperam l at lhes ser atribudo processador;
Podem sair do estado de execuo porque:
- Faz um pedido de E/S;
- Escalonamento;
- Cria um processo filho e fica espera que execute;
- Fica espera de uma interrupo.
Existem 3 tipos de escalonadores: curto prazo (escalonador do processador), mdio
prazo (swaping) e longo prazo (escalonador de jobs).
O Sistema Operativo deve providenciar um mecanismo para que os processos possam
criar filhos. O pai pode esperar que o filho termine ou podem correr concorrentemente
(partilha de informao, desempenho, modularidade). Estes ltimos comunicam atravs
de memria partilhada ou por troca de mensagens.
Na memria partilhada, os processos partilham zona de memria e so responsveis
por garantir que no escrevem na mesma zona de memria simultaneamente. O mtodo
da troca de mensagens permite que os processos troquem mensagens. Estes dois
mtodos no so exclusivos e podem ser usados em simultneo no mesmo Sistema
Operativo.
A comunicao em sistemas cliente-servidor pode usar:
Sockets - So os pontos extremos na comunicao. A ligao entre um par de
aplicaes consiste num par de sockets, um em cada ponta do canal de
comunicao.
Remote Procedure Calls (RPC) - Ocorrem quando um processo (ou uma thread)
chama um procedimento numa aplicao remota.
Java's Remote Method Invocation (RMI) - A verso do Java das RPC's. Permite
que a thread invoque um mtodo num objecto remoto como o faria num objecto
local.

Cap. 4 - Threads (resumo na pg. 206)


Uma thread uma forma de um processo se dividir em duas ou mais tarefas que podem
ser executadas concorrentemente. o fluxo de controlo dentro de um processo. Um
processo multithread contm vrios fluxos de controlo diferentes dentro do mesmo
endereo.
Vantagens:
Maior resposta do utilizador;
Pode usufruir das arquitecturas multiprocessador;
Partilhas de recursos;
Economia (memria e tempo-criao).
As threads utilizador so threads que so visveis ao programador e desconhecidas ao
ncleo. So mais rpidas de criar e gerir que as threads do ncleo, visto no ser
necessrio interveno do ncleo.
H 3 tipos de modelos para relacionar threads utilizador com threads do ncleo:
Many-to-one - Associa vrias threads do nvel utilizador a uma do nvel ncleo;
One-to-one - Associa cada thread do nvel utilizador a uma do nvel ncleo;
Many-to-Many - Associa vrias threads utilizador a um nmero igual ou menor
de threads do ncleo.
As bibliotecas do threads fornecem ao utilizador uma API para criar e gerir threads.

Cap. 5 - Escalonamento (resumo na pg. 245)


Escalonamento o nome dado tarefa de seleccionar um processo em espera da fila
ready e atribuir-lhe processador.
Algoritmos de escalonamento:
1 - First-come, first-served (FCFS)
2 - Shortest-Job-First (SJF)
Associa a cada processo a dimenso do seu prximo CPU burst e selecciona o
processo com menos CPU burst para escalonamento;
Em caso de empate usa FCFS;
Pode ser no preemptivo (apenas liberta o CPU quando o processo termina o
seu CPU burst) ou preemptivo (se um novo processo colocado na fila ready
com menor CPU burst que o actual, substitui-os e termina-o mais tarde.
3 - Com prioridades
Processos com menores prioridades podem nunca chegar a ser executados se no
se aumentar a prioridade dos processos ao longo do tempo (Starvation).
4 - Round Robin (RR)
Cada processo usa o CPU durante um determinado tempo, ao fim do qual
preemptivo e colocado no final da fila ready.
5 - Filas multi-nvel
A fila ready dividida em vrias filas consoante a classificao de processos;
Cada fila tem o seu prprio algoritmo de escalonamento;
Existe ainda escalonamento entre as filas (ex: prioridades).
6 - Filas multi-nvel com retorno
Os processos devem mudar de fila de acordo com o CPU burst (se o processo
utiliza muito CPU mudado para uma fila de menor prioridade).
O escalonamento em mltiplos processadores pode ser assimtrico ou simtrico
(efectuado apenas por um ou por vrios processadores, respectivamente).

Cap. 6 - Sincronizao de Processos (resumo na pg. 290)


A sincronizao de processos permite gerir o acesso concorrente a recursos do Sistema
Operativo de forma controlada por parte dos processos, de modo a que um recurso no
seja modificado em simultneo ou que os processos no fiquem espera que o recurso
seja libertado.
Uma soluo assegurar que a seco crtica do cdigo seja usada apenas por um
processo ou thread de cada vez. No entanto, isto requer espera activa. Os semforos
ultrapassam esta situao.

Semforos

Excluso Mtua (evitar que dois processos estejam a ter acesso a um


determinado recurso em simultneo)
Semaphore S; //inicializado a 1
sem_wait(S);
Seco Crtica
sem_post(S);

Controlo de acesso a um recurso por um nmero limitado de instncias (ex: 7)


Semaphore S = 7;
sem_wait(S);
Acesso ao recurso
sem_post(S):

Sincronizao entre processos (ex: S2 executado depois de S1)


Semaphore S; //inicializado a 0
processo 1
...
...
S1;
sem_post(S);
...

processo 2
...
sem_wait(S);
S2;
...
...

Cap. 7 - Deadlock (resumo na pg. 327)


Um deadlock ocorre quando dois ou mais processos esto indefinidamente espera
dum evento que s pode ser causado por um dos processos em espera.
Mtodos para gerir deadlocks:
Garantir que o sistema nunca entra em deadlock;
Permitir que o sistema entre em deadlock, detecta-lo e recuperar;
Ignorar o problema e fingir que os deadlocks nunca ocorrem no sistema.
Os deadlock podem ocorrer se 4 condies se verificarem simultaneamente no sistema.
As condies e como as evitar:
1 - Excluso mtua
Pode ser evitada se todos os recursos forem partilhveis (sem problemas de
concorrncia).
2 - Hold and wait
Tem de se garantir que sempre que um processo faz um pedido de reserva de um
recurso, no possui outros recursos;
Requer que um processo reserve todos os recursos de que vai necessitar antes de
ter incio a sua execuo.
3 - Sem preempo
Se um processo faz um pedido de reserva de um recurso que no pode ser
imediatamente satisfeito, ento todos os recursos que possui so libertados.
4 - Espera circular
Define uma ordem total para todos os recursos e requer que os pedidos de
reserva sejam efectuados de acordo com esta ordem.
O Algoritmo do Banqueiro (Banker's Algorithm) define que:
Existem mltiplas instncias;
Cada processo deve definir o mximo que vai usar;
Quando um processo requer um recurso tem de esperar;
Quando um processo obtiver o seu mximo de recursos deve retorn-los num
tempo finito.

Cap. 8 - Gesto de Memria (resumo na pg. 369)


Os algoritmos de gesto de memria usados nos Sistemas Operativos vo desde uma
aproximao de um sistema single-user a paginao segmentada. O mais importante na
escolha do algoritmo a utilizar o hardware providenciado. Cada endereo de memria
gerado pelo CPU tem de ser verificado para ver a sua legalidade e se pode ser mapeado
para um endereo fsico. A verificao tem de ser feita no hardware.
Estes algoritmos de gesto de memria so:

1 - Reserva contgua de memria


A memria normalmente dividida em duas partes: uma para o Sistema Operativo
residente e outra para os processos do utilizador. Normalmente queremos que estes
processos residam na memria ao mesmo tempo. Precisamos ento de alocar memria
para os processos que esto espera na fila. Na reserva contgua de memria cada
processo est contido numa seco contgua de memria.
A alocao de memria pode ser feita atravs de 3 estratgias:
First-fit - Aloca-se para o primeiro buraco que seja suficientemente grande. A
pesquisa pode comear no incio do conjunto de buracos ou no stio onde
terminou a ltima pesquisa first-fit. A pesquisa interrompida assim que se
encontra um buraco suficientemente grande.
Best-fit - Aloca-se para o buraco mais pequeno que seja suficientemente grande.
A pesquisa tem de correr a lista inteira, a no ser que esta esteja ordenada por
tamanho.
Worst-fit - Aloca-se para o maior buraco. A pesquisa tem de correr a lista
inteira, a no ser que esta esteja ordenada por tamanho.
As estratgias first-fit e best-fit so as melhores em termos de reduo de tempo e
espao ocupado. No se pode dizer ao certo que uma melhor que a outra em relao ao
espao, mas a first-fit mais rpida.

2 - Paginao
Permite que o espao do endereo fsico de um processo no seja contnuo. A paginao
evita o problema de se ter de encaixar pedaos de memria de diferentes tamanhos na
Cache.
A paginao consiste em dividir a memria fsica em blocos de dimenso fixa (frames)
e a memria lgica em blocos da mesma dimenso (pginas). Quando um processo est
para ser executado, as suas pginas so carregadas para quaisquer frames disponveis na
cache. A tabela de pginas usada para traduzir os endereos. O nmero da pgina
usado como ndice na tabela de pginas.

O tamanho das pginas definido pelo hardware e normalmente uma potncia de 2,


variando entre os 512 bytes e os 16MB, dependendo da arquitectura do computador.
Visto que o Sistema Operativo est a gerir a memria fsica, tem de estar ao corrente
dos seus detalhes de alocao (que frames so alocadas, quais esto livres, etc.). Esta
informao guardada numa estrutura chamada reserva de frames, que tem uma
entrada para cada frame, indicando se o seguinte est livre ou alocado e, no caso de
estar alocado, para que pgina de cada processo ou processos.
O translation took-aside buffer (TLB) um dispositivo de hardware destinado a
facilitar a traduo de endereos lineares em endereos fsicos, evitando a consulta
tabela de pginas localizada na memria. Tal como uma cache de memria mantm uma
cpia dos dados acedidos mais recentemente, um TLB mantm uma cpia dos
endereos fsicos das frames de memria acedidas mais recentemente.
Quando um endereo solicitado, o processador verifica se o endereo da frame
respectiva existe no TLB. Se este for encontrado, utilizado para gerar o endereo
fsico pretendido e o acesso memria iniciado. Em caso de falha, a tabela de pginas
ser consultada.
A proteco de memria na paginao feita atravs de um valid-invalid bit ligado a
cada entrada na tabela de pginas. Se o bit estiver definido como "valid", a pgina
associada pertence ao espao de endereamento do processo.

Page-table base register (PTBR) - aponta para a tabela de pginas.


Page-table length register (PRLR) - define a dimenso da tabela de pginas.

3 - Segmentao
O espao de endereamento lgico constitudo por um conjunto de segmentos, que
podem ter tamanhos diferentes. Cada segmento tem um identificador e um tamanho,
ambos definidos pelo utilizador. Os segmentos so referidos pelo seu identificador e o
seu deslocamento. Assim sendo, o seu endereo lgico representado por: <segmento,
deslocamento>.
Apesar do utilizador agora se conseguir referir aos objectos no programa atravs de um
endereo bidimensional, a memria fsica continua a ser uma sequncia de bytes
unidimensional. A tabela de segmentos ir ser usada para contornar este problema.
Cada entrada na tabela de segmentos tem uma base (que contm o endereo de incio da
memria fsica ligada ao endereo) e um limit (que define a dimenso do segmento).

Cap. 9 - Memria Virtual (resumo na pg. 425)


A memria virtual uma tcnica que permite a execuo de processos que no esto
completamente em memria. Isto permite que os programas na memria fsica sejam
maiores, contornando o problema da falta de memria RAM num computador
utilizando a memria interna do disco rgido. A memria virtual feita deixando um
espao do disco rgido reservado para que seja possvel a sua utilizao como memria
virtual.
A memria virtual normalmente implementada atravs de demand paging. Num
sistema que use pure demand paging, o Sistema Operativo apenas copia uma pgina
do disco para a memria fsica caso tenha havido uma tentativa de a aceder. Esta
abordagem permite correr um processo mesmo que toda a sua memria no esteja
contida na memria principal em simultneo. Desde que a probabilidade de ocorrer uma
falta de pgina seja baixa, a performance aceitvel.
Falta de pgina uma excepo disparada pelo hardware quando um programa acessa
uma pgina mapeada no endereo de memria mas que no foi carregada na memria
fsica do computador. Caso ocorra uma falta de pgina, ter de ser determinada uma
frame livre para que o contedo da pgina seja l colocado em memria de modo a
haver a actualizao das tabelas.
Caso no existam frames livres, ou seja, toda a memria estiver em uso, o Sistema
Operativo faz uma substituio de pginas. A substituio de pginas consiste em:
Procurar uma frame livre;
Caso estejam todas em utilizao, usar um algoritmo de substituio de pginas
para escolher uma victim frame;
A victim frame escrita no disco e as tabelas de pgina e de frame so mudadas
correspondentemente;
Ler a pgina desejada para a frame libertada, alterando as tabelas de pgina e de
frame;
Reiniciar o processo.
Algoritmos de substituio de pginas:
1 - First-in, first-out (FIFO)
o algoritmo de substituio de pginas mais simples. O sistema Operativa toma nota
de todas as pginas em memria numa fila ordenada (as mais recentes atrs e as mais
antigas frente). Quando uma pgina precisa de ser substituda, escolhida a pgina
mais antiga.

O problema deste algoritmo que um processo com trs frames ter mais faltas de
pgina (10) que um de 4 frames (9). Este estranho resultado conhecido como a
anomalia de Belady.

2 - Algoritmo ptimo
Consiste em substituir a pgina que no vier a ser usada durante mais tempo. No papel
o mais eficiente de todos os algoritmos (com o menor nmero de faltas de pgina), mas
no pode ser implementado pois impossvel um computador saber determinar com
confiana quanto tempo demorar uma pgina a ser usada. portanto utilizado
principalmente em estudos comparativos.

3 - Least Recently Used (LRU)


Esta abordagem substitui a pgina que no tiver sido usada h mais tempo.

dos algoritmos mais fiveis, mas bastante difcil de implementar. So possveis duas
implementaes:
Counter (relgio lgico) - O mtodo mais simples, que incrementado em cada
acesso memria.
Pilha de nmero de pginas - Sempre que uma pgina referenciada, removida
da pilha e colocada no topo. Deste modo a pilha est sempre ordenada, com a
pgina usada mais recentemente no topo.

3 - Variantes do LRU
3.1 - Reference bit
Cada pgina tem um reference bit que inicializado a 0. Esse reference bit passa a 1
sempre que a pgina for referenciada. A pgina a substituir a que tiver o reference bit a
0. No entanto, podem haver vrias pginas a 0. Nesse caso ou so todas substitudas
ou utilizado o algoritmo FIFO.
3.2 - Second-chance
uma variante do FIFO, que, tal como ele, ir comear por olhar para a frente da lista.
Caso o reference bit seja 0 imediatamente substitudo, caso seja 1 -lhe dada uma
segunda chance (alterado para 0 e passa-se ao seguinte). Uma pgina a que seja dada
uma segunda chance s ser substituda quando todas as outras tiverem sido substitudas
ou tiverem tido segundas chances.

3.3 - Enhanced Second-chance


uma evoluo do Second-chance, que consiste em ter, para alm do reference bit, um
modify bit, e trat-los como um par. Com estes 2 bits temos as seguintes possibilidades:
(0, 0) - No foi usado nem modificado recentemente (melhor pgina a ser
substituda);
(0, 1) - No foi usado recentemente, mas foi modificado (a pgina precisa de ser
escrita para o disco antes de poder ser substituda);

(1, 0) - Usado recentemente, mas sem modificaes (provavelmente vai ser


usado em breve);
(1, 1) - Recentemente usado e modificado (provavelmente ser usado em breve e
a pgina precisa de ser escrita para o disco antes de poder ser substituda).
As possibilidades esto ordenadas por ordem de preferncia de substituio.

Atribuio de frames
H algumas restries no que diz respeito ao nmero de frames a ser atribudo como a
de no se poder atribuir mais que o nmero total de frames existentes (a no ser que
haja substituio de pginas) e a de se ter de atribuir sempre um nmero mnimo de
frames.
Nmero mnimo de frames
A razo para ser obrigatrio atribuir-se um nmero mnimo de frames tem a ver com a
performance. medida que o nmero de frames atribudo a cada processo decresce,
aumentam as faltas de pgina, atrasando a execuo do processo. O nmero mnimo de
frames definido pela arquitectura do computador.
Algoritmos de atribuio de frames
1 - Atribuio fixa
O mais simples e lgico de todos, dividir f frames por p processos. Todos os processos
tero o mesmo nmero de frames, que ser proporcional dimenso do projecto. S que
isto poder levar a desperdcio de frames caso, por exemplo, estejam 2 processos em
execuo e um seja bastante maior que o outro. Ambos tero o mesmo nmero de
frames atribudas, o que no faz sentido.
2 - Atribuio por prioridades
Para solucionar esse problema temos a atribuio por prioridades (proportional
allocation), em que se atribu memria disponvel consoante o tamanho dos processos.
Substituio global vs local
Com vrios processos a disputar as frames, podemos classificar os algoritmos de
substituio de pginas em duas categorias: substituio global e substituio local. A
substituio global permite que um processo seleccione uma frame substituta do
conjunto de todas as frames, at aquelas que esto atribudas a outro processo. A
substituio local permite que cada processo escolha apenas do conjunto de frames a
ele atribudas.

Trashing
Caso um processo tenha um nmero insuficiente de frames ocorrem vrios problemas,
como elevado nmero de faltas de pginas, baixa utilizao do CPU e o processo passar
mais tempo a resolver as faltas de pgina que a executar-se. Tal s resolvido com a
suspenso da execuo do processo
medida que a utilizao do CPU vai baixando, o nvel de multiprogramao
aumentado introduzindo novos processos, que iro de precisar de mais frames, causando
mais faltas de pginas e baixando ainda mais a utilizao do CPU.

Os efeitos do trashing podem ser reduzidos usando algoritmos de substituio de


pginas locais, pois assim os processos no podem roubar as frames uns aos outros. No
entanto, isto no resolve o problema, apenas evita que ele se propague. Para se evitar o
trashing tem de se atribuir ao processo o nmero de frames de que ele precisa.
Como evitar o trashing:
1 - Modelo working-set
Defende que um processo apenas pode estar em RAM se e s se todas as suas pginas
puderem estar em RAM. Previne o trashing mantendo o nvel de multiprogramao o
mais alto possvel e optimizando a utilizao do CPU.
Define uma working-set window (), que contm todas as pginas em uso. O Sistema
Operativo monitoriza o working-set (nmero de pginas referenciadas na window mais
recente) e atribui frames aos processos de acordo com a working-set corrente. Se no
tiver frames para todo o processo, suspende um processo, libertando todas as suas
frames.
A dificuldade deste modelo prende-se com o manter o registo da working-set, visto a
working-set window ser uma janela mvel.

2 - Frequncia de faltas de pginas


Tem uma abordagem mais directa, tentando controlar a frequncia de faltas de pginas.
Se estiverem a haver demasiadas faltas de pginas sinal que o processo necessita de
mais frames. Liberta-se, ento, uma frame. Se for o inverso, significa que o processo
pode ter demasiadas frames. Vai retirar-lhe uma frame. Podem ser estabelecidos limites
mnimo e mximo de faltas de pginas desejadas.
Caso no haja frames disponveis, suspende-se um processo e liberta-se as suas frames,
de modo a poderem ser usadas pelos outros.

Memory Mapping
Permite que parte da memria virtual esteja logicamente associada ao ficheiro, onde
vrios processos podem partilhar o mesmo ficheiro em memria. As escritas podem ser
feitas imediatamente para o disco ou actualizando a memria fsica quando o Sistema
Operativo verificar se houve modificaes s pginas, e, quando o ficheiro for fechado,
todos os dados so escritos no disco e apagados da memria virtual.
Os factores que influenciam o tamanho das pginas so:
Fragmentao;
Dimenso da tabela de pginas;
Tempo de I/O;
Locality.
Desempenho da TLB
Hit ratio - Percentagem de endereos traduzidos usando a TLB.
TLB reach - Quantidade de memria via TLB (TLB size x Page Size).

Cap. 10 - Interface do Sistema de Ficheiros (Resumo na pg. 467)


Um ficheiro um tipo de dados abstracto definidos e implementados pelo Sistema
Operativo que contm dados sobre uma rea especfica. No geral, um ficheiro uma
sequncia de bits, bytes, linhas ou registos.
Atributos do ficheiro
Nome - Nome pelo qual identificado pelos humanos;
Identificador - Identificador do ficheiro dentro do sistema (normalmente um
nmero);
Tipo - Necessrio para os sistemas que suportam diferentes tipos de ficheiros;
Localizao - Apontador para a localizao do ficheiro num dispositivo;
Dimenso - Tamanho actual do ficheiro (em bytes, palavras ou blocos);
Proteco - Determina quem pode ler, escrever e executar;
Data e ID do utilizador - Pode ser guardada relativamente data de criao,
ltima modificao e ltima vez que foi usado. til para proteco, segurana e
monitorizao.
A informao mantida na estrutura dos directrios apenas o nome e o ID do ficheiro.
O ID depois ir buscar todos os restantes atributos relativos ao ficheiro.
Operaes
O Sistema Operativo pode fornecer vrios tipos de chamadas ao sistema, como:
Create - necessrio haver espao no sistema e tem de ser criada uma entrada
na directoria;
Write;
Read;
Reposition within a file;
Delete;
Truncate - Apagar os contedos sem apagar o ficheiro, mantendo todos os
atributos menos a dimenso.
Visto grande parte destas chamadas envolvem pesquisa na directoria pela entrada
associada ao nome do ficheiro. Para evitar uma pesquisa constante, muitos sistemas
pedem que uma chamada ao sistema open() seja feita antes dum ficheiro ser usado
activamente pela primeira vez. Open(file) ir procurar a entrada de "file" na estrutura de
directrios em disco e coloca-a em memria. Por sua vez, haver tambm uma chama
close(). Close(file) vai guardar a entrada de "file" em memria para a estrutura de
directrios em disco.
A informao relativamente aos ficheiros abertos guardada em duas tabelas:
Tabela por processo
File pointer - Apontador para o ltimo local onde foi lido ou escrito;
Permisses (modo de acesso);
Apontador para a tabela global.
Tabela global
Localizao do ficheiro em disco;
Dimenso do ficheiro;
Contador - conta o nmero de vezes que esse ficheiro est aberto (aumenta a
cada open() e reduz a cada close()).
Locks de Ficheiros

Os locks de ficheiros gerem acesso a ficheiros partilhados por processos. Permitem um


processo bloquear um ficheiro, prevenindo que outros lhe tenham acesso. Um shared
lock idntico a um reader lock, em que vrios processos podem conseguir o lock
concorrentemente. Um exclusive lock semelhante a um writer lock, onde apenas um
processo de cada vez o consegue adquirir.
Os Sistemas Operativos podem fornecer mecanismos de 2 tipos: Mandatory e Advisory.
Se um lock for Mandatory (Windows), sempre que um processo adquirir um exclusive
lock, o Sistema Operativo no deixa que outros processos o acessem. Se um lock for
Advisory (Unix), o Sistema Operativo no probe outros processos de acederem, ter de
ser o programador a especific-lo.
Tipos de Ficheiros
A tcnica mais comum para implementar tipos de ficheiros incluir esse tipo como
parte do nome do ficheiro (extenso). Os programas aplicacionais usam as extenses
para indicar os tipos de ficheiros em que esto interessados.
Mtodos de acesso
1 - Acesso sequencial
A informao no ficheiro processada ordenadamente. Uma operao read l a seguinte
poro do ficheiro e avana o file pointer e uma operao write escreve coisas aps o
final do ficheiro e define o novo final.

2 - Acesso directo
O ficheiro constitudo por registos lgicos de tamanho fixo. O ficheiro visto como
blocos sequencialmente numerados. Este tipo de acesso bom para grandes quantidades
de informao. As operaes aos ficheiro so modificadas para inclurem o nmero do
bloco como um parmetro. Os nmeros de blocos fornecidos pelo utilizador ao Sistema
Operativo so identificador em relao ao incio do ficheiro.
Estrutura de Directrios
A directoria pode ser vista como uma tabela que traduz o nome do ficheiro para as sua
entrada de directoria. Nela podem ser feitas as seguintes operaes:
Search for a file;
Create a file;
Delete a file;
List a directory;
Rename a file;
Transverse the file system - Providencia uma cpia de backup em caso de falha
do sistema.
Esquemas comuns para se definir a estrutura lgica de uma directoria
1 - Directorias de nvel nico
Uma nica directoria para todos os ficheiros. fcil de suportar e entender, mas tem
limitaes, como se houverem 2 utilizadores a querer dar o mesmo nome ao seu
ficheiro, ou o utilizador lembrar-se dos nomes caso comecem a haver muitos ficheiros.

2 - Directorias de 2 nveis
Divide as directorias pelos utilizador, cada um tendo direito sua directoria. Soluciona
o choque entre 2 utilizadores quererem dar o mesmo nome ao seu ficheiro, mas continua
a ter desvantagens, caso os utilizadores queiram cooperar e partilhar ficheiros. Certos
sistemas no permitem que ficheiros locais sejam acedidos por outros utilizadores.

3 - Estrutura em rvore
Permite que cada utilizador crie as suas directorias e que organize os ficheiros sua
vontade. A rvore tem uma directoria raiz e cada ficheiro tem o seu prprio caminho. H
um bit em cada directoria que define se a entrada um ficheiro (0) ou uma subdirectoria
(1).
A directoria corrente deve conter a maior parte dos ficheiros que interessam ao
processo. Quando feita uma referncia a um ficheiro ele procurado na directoria
corrente. Se ele no se encontrar l, o utilizador deve especificar um caminho ou alterar
a directoria corrente para aquela que contm o ficheiro.
Os caminhos podem ser de dois tipos: absolutos ou relativos. Um caminho absoluto
comea na raiz e segue o caminho at ao ficheiro especificado. Um caminho relativo
define o caminho a partir da directoria corrente.
Tem o defeito de quando se apaga uma directoria, todas as subdirectorias e ficheiros
nelas contidos tambm serem apagados, o que pode ser perigoso e d algum trabalho
quando no se quer que isso acontea.

4 - Grafos Acclicos
Neste mtodo existe partilha de subdirectorias e ficheiros. importante notar que
nenhuma directoria ou ficheiro existe em 2 lugares ao mesmo tempo, elas apenas so
partilhadas. Quando algo modificado numa pasta partilhada, todos o conseguem ver
imediatamente. Tal como o nome indica, um grafo sem ciclos.
mais flexvel que a estrutura em rvore, mas tambm mais complexo. Um ficheiro
pode ter mltiplos caminhos absolutos, logo vrios nomes de ficheiros podem referir-se
ao mesmo ficheiro. Outro problema envolve apagar ficheiros. Quando pode o espao
atribudo ser libertado e reutilizado?

5 - Grafos Genricos
Semelhante ao mtodo dos Grafos Acclicos, mas suporta ciclos. Tem as suas
desvantagens, como a possibilidade de entrar em ciclo infinito aquando da busca de um
ficheiro, por exemplo. Uma soluo para isto pr-definir o nmero de directorias que
vo ser acedidas durante a pesquisa.
Outro problema semelhante pode ocorrer quando se tenta apagar um ficheiro. Garbage
collection ajuda a libertar a memria atribuda no tempo devido, mas consome bastante
tempo.

Mounting de sistemas de ficheiros


Para ser acedido, um sistema de ficheiros tem de ser mounted antes. algo bastante
simples de se fazer, dado ao Sistema Operativo o nome do dispositivo e o mount
point (localizao na estrutura de ficheiros onde o sistema de ficheiros ir ser montado).
De seguida, o Sistema Operativo verifica se o dispositivo contm um ficheiro de sistema

vlido. Finalmente, o Sistema Operativo toma nota na sua estrutura de directorias que
um sistema de ficheiros est montado naquele mount point especfico.

Partilha de ficheiros
Apesar de j terem havido vrios mtodos, a maior parte dos sistemas evoluram de
modo a usar os conceitos de dono do ficheiro e grupo. O dono o utilizador que tem
permisses para mudar atributos, garantir acesso e quem tem mais controlo sobre o
ficheiro.
Partilha de ficheiros remotos
Ao longo dos tempos, vrios mtodos foram adoptados. O primeiro envolvia
transferncia de ficheiros manualmente entre mquinas via programas estilo ftp
(manualmente). O segundo usava sistemas de ficheiros distribudos (DFS)
(automtico), em que as directorias remotas so visveis a partir de uma mquina local.
O terceiro mtodo, a World Wide Web (WWW) (semi) uma reverso do primeiro:
necessrio um browser para se ter acesso aos ficheiros remotos e so usadas opes
separadas para se transferir os ficheiros.
O modelo Cliente-Servidor
A mquina que contem os ficheiros o servidor, e a mquina que procura os ficheiros
o servidor. Um servidor pode ter vrios clientes e h a possibilidade dum cliente pode
estar em vrios servidores, dependendo de como est feita a implementao. As
chamadas ao Sistema Operativo so traduzidas para chamadas remotas.
Falhas
Os sistemas de ficheiros locais podem falhar por motivos como falha do disco contendo
o sistema de ficheiros, corrupo da estrutura de directorias, falha nos cabos, etc. A
maior parte das falhas resulta em crash do servidor.
Os sistemas de ficheiros remotos ainda tm mais possibilidades de falhas, como, em
caso de ligao em rede, a rede ser interrompida por falhas de hardware ou de
implementao da rede.

Proteco
O dono/criador do ficheiro define o que pode ser executado e por quem. necessrio
haver acesso controlado. Existem mecanismos de proteco que limitam os tipos de
acesso a ficheiros que podem ser feitos. Vrios tipos de acesso podem ser controlados,
como:
Read;
Write;
Execute;
Append;
Delete;
List.
Controlo de Acesso
A abordagem mais comum ao problema da proteco dar acesso dependendo da
identidade do utilizador. O mtodo mais geral para tal ser implementado associando a
cada ficheiro e directoria uma lista de controlo de acesso (ACL), especificando os
nomes de utilizador e tipos de acesso permitido para cada utilizador.

Cap. 11 - Implementao de Sistemas de Ficheiros (resumo na pg.


506)
Sistema de ficheiro um mtodo de guardar e organizar ficheiros e os seus dados em
bases de dados de modo a serem facilmente manipulados e retirados pelo Sistema
Operativo.

Estrutura
Para fornecer acessos convenientes ao disco, o Sistema Operativo impe um ou mais
sistemas de ficheiros de modo a permitir que os dados sejam guardados, deslocados e
retirados facilmente. Um sistema de ficheiros est definido de forma diferente para o
utilizador e para o sistema.
Perspectiva do utilizador: Definio de ficheiros e dos seus atributos, das operaes
permitidas sobre os ficheiros e da estrutura dos directrios.
Perspectiva do sistema: Criar algoritmos e estruturas de dados para associar o sistema
de ficheiros lgico aos dispositivos de memria secundria.
O sistema de ficheiros composto por diferentes camadas. Cada camadas usa
caractersticas da camada imediatamente abaixo para criar novas caractersticas para
serem usadas pelas camadas acima.

Controlo de E/S - Consiste em utilizar device controls e interrupt handlers para


transferir informao entre a memria e o disco;
Sistema de ficheiros bsico - Leitura e escrita de blocos fsicos no disco,
identificados pelo seu nmero de endereo ao disco;
Mdulo de organizao de ficheiros - Tendo conhecimento do ficheiro e dos seus
blocos faz a gesto do espao livre;
Sistema de ficheiros lgico - Gere a informao metadata (toda a estrutura de
ficheiros e de sistema excepto os dados em si). Mantm a estrutura dos ficheiros
via file-control blocks.
Um file-control block (FCB) contm informaes sobre o ficheiro, incluindo quem o
dono, permisses, datas, dimenso e localizao dos seus contedos.
Operaes sobre ficheiros e estruturas de dados
1 - Create
O programa aplicacional chama o sistema de ficheiros lgico, que sabe o formato das
estruturas das directorias. O sistema de ficheiros lgico vai reservar um novo FCB e
actualizar a directoria com o novo FCB e o nome de ficheiro.
2 - Open
A funo open() passa o nome do ficheiro ao sistema de ficheiros atravs do
argumento . No entanto, verifica primeiro se ele j est aberto por outro processo. Se
estiver, cria uma entrada em per-process open-file table (tabela do processo) a apontar

para o system-wide open-file table (tabela geral) existente. Se no estiver, o ficheiro


pesquisado na estrutura de directrios. Quando for encontrado, o FCB copiado para a
tabela geral na memria, que regista tambm o nmero de processos que tem o ficheiro
aberto.

3 - Read/Write
feita uma entrada na tabela do processo com um apontador para a tabela geral e outros
campos. Estes outros campos incluem apontadores para a localizao actual do ficheiro,
sendo as operaes efectuadas atravs desse apontador.

4 - Close
A entrada na tabela do ficheiro removida e o contador na tabela geral decrementado.
Quando j nenhum processo estiver a utilizar o ficheiro, a metadata copiada para a
estrutura de directorias e a entrada na tabela geral fechada.
Sistema de ficheiros virtual
A maior parte dos Sistemas Operativos usam abordagens orientadas a objectos para
simplificar e organizar a implementao. Permite que sistemas de ficheiros bastante
diferentes sejam implementados na mesma interface (API).

Implementao de Directorias
Existem dois algoritmos para a implementao de directorias:
1 - Array de nomes de ficheiros + apontadores para blocos de dados (Linear List)
Usa-se um array de nomes de ficheiros com apontadores para blocos de dados. o mais
simples de implementar, mas consome mais tempo a executar. Para se criar um ficheiro
faz-se uma procura pelo nome desejado, de modo a no se repetirem nomes, e no fim
(caso no haja outro ficheiro com esse nome) acrescenta-se. Para se apagar um ficheiro
tambm se faz uma procura lista at se encontrar o ficheiro a apagar e liberta-se o
espao a ele atribudo.
A maior desvantagem deste mtodo mesmo a pesquisa ser feita de forma linear, o que
leva demasiado tempo.
2 - Tabela de hash (disperso)
Neste mtodo utiliza-se no s um array com entradas da directoria, mas tambm uma
estrutura de dados hash. A hash table recebe um valor computado a partir do nome do
ficheiro e devolve um apontador para o nome do ficheiro no array, o que reduz bastante
os tempos de pesquisa. Adicionar e remover ficheiros tambm se torna simples, no
entanto deve ter-se cuidado com colises (situaes em que dois nomes de ficheiros
dispersam para a mesma localizao).
As maiores dificuldades com a hash table prendem-se com o seu tamanho fixo e a
dependncia da funo hash relativamente a esse mesmo tamanho. De modo a contornar
este problema, podemos usar uma tabela de hash com lista ligada, em vez de ser com
valores individuais.

Mtodos de reserva
Existem 3 mtodos principais para reservar blocos de disco para ficheiros.
1 - Reserva contgua
Requer que cada ficheiro ocupe um conjunto de blocos contguos. bastante simples e
fornece fcil acesso aos ficheiros, mas encontra problemas aquando da procura de
espao para um novo ficheiro. First fit e Best fit so as melhores estratgias a usar aqui
(ver captulo 8), no entanto, ambos os algoritmos sofrem de fragmentao externa:
medida que os ficheiros so alocados e apagados, o espao livre no disco fica
fragmentado em pequenas pores. Isto ser um problema quando se quiser alocar um
ficheiro maior que cada um desses pequenos fragmentos. Pode-se compactar os
fragmentos num bloco contnuo, resolvendo o problema da fragmentao, mas gasta
bastante tempo.
Outro problema deste algoritmo determinar o livre que um ficheiro necessita. E
mesmo que se saiba esse tamanho, a pr-alocao pode ser ineficiente, pois um ficheiro
pode aumentar o seu tamanho ao longo do tempo.
Para minimizar os problemas, alguns Sistemas Operativos acrescentam outro bloco
vazio ao inicialmente atribudo, caso este se prove insuficiente. A esta operao d-se o
nome de extent.

2 - Reserva "lista ligada"


Resolve todos os problemas da reserva contgua. Cada ficheiro ocupa uma lista ligada
de blocos de tamanho fixo dispersos no disco. A directoria contm um apontador para o
primeiro e ltimo blocos do ficheiro, e cada bloco tem o apontador para o bloco
seguinte.
Para criar um ficheiro, basta criar uma nova entrada na directoria, onde inicializado
tudo a 0 e nulos. Ao escrever no ficheiro, o sistema vai procurar blocos livres onde se
possa escrever. Aps isto, iro ser ligados ao final do ficheiro. Para se ler um ficheiro,
basta ler os blocos seguindo os apontadores de bloco em bloco.
Mas a reserva "lista ligada" tambm tem as suas desvantagens. Apenas tem um bom
desempenho caso os ficheiros estejam ordenados. Para se procurar um ficheiro do meio
tem de se saltar de apontador em apontador at ao ficheiro desejado. Outro problema
tem a ver com a confiana. O que aconteceria se um apontador fosse danificado? Ainda
outra desvantagem o espao ocupado pelos apontadores. Uma soluo usual para este
problema unir todos os blocos em mltiplos, chamados clusters, e alocar clusters em
vez de blocos.

Uma variante deste algoritmo o uso de uma file-allocation table (FAT). Esta tabela
tem uma entrada para cada bloco do disco e est indexada por nmero do bloco. usada
de forma semelhante a uma lista ligada: a entrada da directoria aponta para o primeiro
bloco do ficheiro, a entrada na tabela correspondente ao nmero desse bloco contm o

nmero do bloco seguinte, e assim sucessivamente. Todos os blocos livres ficam com o
valor a 0 na tabela.

3 - Reserva indexada
Resolve o problema do acesso directo da reserva "lista ligada" sem FAT, juntando todos
os apontadores num bloco de ndices. Cada ficheiro tem o seu bloco de ndices. Para se
procurar, por exemplo, o 3 bloco, segue-se o 3 apontador do bloco de ndices, o que
torna a pesquisa bastante rpida.
Quando um ficheiro criado, todos os blocos so inicializados a null. Quando o nsimo bloco for escrito pela primeira vez, o seu endereo ser guardado na n-sima
entrada do bloco de ndices. A reserva indicada no tem, portanto, problemas de
fragmentao nem de acesso directo.

Tem, no entanto, a desvantagem do espao em disco ocupado pelos apontadores, pois


tem de ser atribudo espao ao bloco, mesmo que apenas um ou dois apontadores sejam
no-nulos. Isto leva questo de qual dever ser o tamanho de cada bloco. Se for
demasiado pequeno no conseguir suportar todos os apontadores para um ficheiro
grande. Alguns mecanismos para contornar esta situao so:
3.1 - Esquema "lista ligada"
Consiste numa lista ligada de blocos de ndice. Ao chegar ao fim ou tem valor nulo
(caso tenha terminado) ou aponta para outro bloco de ndices.
3.2 - ndices multi-nvel

Divide-se os blocos de ndices em vrios nveis, um bloco no primeiro, que apontar


para os de segundo, que apontaro para os de terceiro, etc. O do ltimo nvel apontaro
para o bloco de dados desejado.
3.3 - Esquema combinado
Alguns apontadores ficam no inode do ficheiro, onde todos menos os 3 ltimos apontam
para blocos que contm dados do ficheiro. Os 3 restantes apontam para blocos
indirectos. O primeiro ser indirecto simples (liga para um bloco que liga a um bloco de
dados), o segundo indirecto duplo (igual ao simples mas com mais um bloco l no
meio) e o ltimo indirecto triplo (igual ao duplo mas com mais um bloco l no meio).

Gesto de Espao Livre


Como o espao no disco limitado, o espao tem de ser reutilizado quando os ficheiros
so apagados, portanto os blocos livres tm de estar listados. H vrias maneiras de o
fazer:
1 - Vector de bits
Cada bloco representado por um bit. Se estiver livre representado por um 1, seno
por um 0. Tem a vantagem de ser simples e de facilitar a busca pelo primeiro bloco
livre, ou n blocos livres consecutivos. Infelizmente apenas so eficientes caso todo o
vector esteja guardado na memria principal
2 - Lista ligada
Tem um apontador para o primeiro bloco livre, que por sua vez tem um apontador para
o seguinte e assim sucessivamente.

3 - Variante de lista ligada (Grouping)


O primeiro bloco livre tem os endereos dos n blocos livres seguintes. Desses n
seguintes, n -1 estaro livres e o n-simo bloco vai ter os endereos dos n blocos livres
seguintes, e assim sucessivamente.
4 - Variante com contador (Counting)
Cada elemento da lista ter o endereo do prximo bloco livre e o nmero de blocos
livres contguos.

Recuperao
Coerncia
No caso de ocorrerem falhas nos sistemas podem ocorrer perdas de dados e incoerncias
na informao em memria e no disco. O consistency checker vai comparar os dados
na estrutura das directorias os dos blocos no disco, tentando corrigir qualquer

inconsistncia que exista. Os problemas que o consistency checker vai encontrar e a sua
eficincia a corrigi-los est dependente dos algoritmos de reserva e de gesto do espao
livre.
Tcnicas de sistemas transaccionais
Solucionam os problemas da verificao da coerncia. A soluo passa por registar em
log todas as alteraes feitas.
Backup e Restore
Os backups previnem que, em caso de falha do disco, a informao no seja perdida
para sempre. Programas podem fazer backup (cpia de segurana) de um disco para
outro dispositivo de armazenamento. Recuperar das perdas de ficheiros individuais ou
de discos por completo j um assunto de restore (restaurar) os dados do backup.
Para se minimizar o nmero de cpias a fazer aquando do backup, pode-se fazer uma
verificao dos ficheiros que foram alterados desde o ltimo backup. O primeiro backup
seria um backup completo, onde se copiaria toda a informao desejada, e da em
diante apenas se copiariam os ficheiros que tivessem sido criados ou alterados, fazendose assim um backup incremental.

Cap. 12 - Armazenamento de Massa (Resumo na pg. 547)


Existem vrios tipos de estruturas de armazenamento. Entre eles esto os discos
magnticos e as tapes magnticas.
1 - Discos magnticos
Usam diferentes padres de magnetizao em material magnetizvel para armazenar
massa. uma forma de memria no voltil. Cada placa do disco tem a forma de um
CD, l que so guardados os dados.
A velocidade dos discos est dividida em duas seces: a taxa de transferncia e o
tempo de posicionamento. A taxa de transferncia est relacionada com que dados
passam entre a drive e o computador. O tempo de posicionamento (ou random acess
time) o tempo que demora a colocar o brao do disco na zona desejada (seek time) e o
tempo que o sector desejado demora a posicionar-se em relao ao brao do disco
(rotational latency).
Aos discos magnticos esto afectos dois controlados: o host controler e o disk
controler. O host controler envia os comandos via mensagem para o disk controler,
que ir operar o hardware do disco para cumprir os pedidos do comando.

2 - Tapes magnticas
Tem tempos de posicionamento mais lentos, quando comparados com os da memria
principal e dos discos magnticos, sendo portanto maioritariamente usadas para backups
de informao usada no muito frequentemente e para passar dados de uma mquina
para outra.

Estrutura de discos
A maior parte dos discos so constitudos por vectores unidimensionais de blocos
lgicos, onde o bloco lgico a unidade mais pequena de transferncia. Este vector
mapeado sequencialmente nos sectores do disco. O sector 0 equivale ao primeiro sector
da primeira pista do cilindro mais distante do disco, o sector 1 ao segundo sector da
primeira pista do cilindro mais distante do disco, e por a adiante.

Ligao de discos a computadores


H duas formas dos computadores acederem ao disco. Uma via portas de E/S locais
(ligao de mquina local), a outra via host num sistema distribudo (ligao atravs
da rede de dados).
1 - Ligao de mquina local
mais comum nos sistemas pequenos, feita atravs das postas E/S locais. Existem
vrias arquitecturas de barramentos (conjunto de linhas de comunicao que permitem a

ligao entre dispositivos, como a CPU, a memria e outros perifricos), como IDE,
ATA, SATA ou SCSI.
2 - Ligao atravs da rede de dados (NAS)
Feita remotamente a partir de uma rede de dados via remote procedure calls.
Providencia uma forma segura de todos os computadores numa LAN partilharem dados
entre si, mas no muito eficiente e tende a ter performances mais baixas que outras
opes de ligao directa.

3 - Ligao atravs de rede especfica (SAN)


Soluciona o problema que tm as ligaes que as NAS relativamente ao consumo de
largura de banda na rede devido ao armazenamento de operaes de E/S. uma rede
privada que liga servidores e unidades de armazenamento, e o seu poder assenta na sua
flexibilidade. Mltiplos hosts e mltiplas unidades conseguem estar ligados mesma
SAN e o armazenamento pode ser dinamicamente alocado para os hosts.

Escalonamento de disco
A largura de banda do disco corresponde diviso entre o nmero de bytes
transferido pelo tempo entre o primeiro pedido e a ltima transferncia. Existem vrios
algoritmos para optimizar o escalonamento dos pedidos em fila de espera, ou seja,
escolher a qual pedido se deve atender a seguir:
1 - Algoritmo FCFS (First-come, first-served)
O algoritmo mais simples de todos, atende aos pedidos pela ordem de chegada. No
providencia um servio rpido.

2 - Algoritmo SSTF (Shortest-seek-time-first)


Ordena os pedidos pela distncia em relao posio corrente da cabea, minimizando
assim os seus movimentos. bastante semelhante ao Shortest-Job-First (SJF) abordado
no escalonamento de processos (ver Cap. 5) e, tal como ele, tambm sofre de starvation
(certos pedidos nunca virem a ser atendidos).

3 - Algoritmo SCAN
O disco percorrido cilindro a cilindro de ponta a ponta, atendendo a todos os pedidos
encontrados. Ao chegar ao fim, faz o caminho inverso. Por essa razo tambm
conhecido como o algoritmo elevador. No entanto, este algoritmo consegue deixar
alguns pedidos demasiado tempo espera.

4 - Algoritmo C-SCAN
Igual ao SCAN, com a ligeira diferena de quando chega a uma ponta, no caminho de
regresso no atende a nenhum pedido. Trata os cilindros como se fossem uma lista
circular.

5 - Algoritmo LOOK e C-LOOK

So optimizaes dos algoritmos SCAN e C-SCAN, respectivamente, pois no chegam


obrigatoriamente ao final do disco, verificam sempre se ainda existe algum naquela
direco. Se no existir, voltam logo para trs.

Escolha de um algoritmo
A performance de cada algoritmo ir sempre depender do nmero e do tipo de pedidos.
O SCAN e o C-SCAN so algoritmos que obtm melhores resultados em sistemas
pesados. Os algoritmos com melhor desempenho so mesmo o SSTF, o LOOK e o CLOOK.

Gesto do disco
Formatao
Antes de um disco poder armazenar dados, tem de ser dividido em sectores para que o
controlador possa ler e escrever. A estrutura de um sector consiste num header e numa
zona de dados (contm o nmero do sector e um cdigo de correco de erros) e num
trailer.
De seguida, o Sistema Operativo tem de guardar as suas estruturas de dados no disco, o
que feito atravs de dois passos (parties + formatao lgica). Primeiro parte-se
um disco em um ou mais grupos de cilindros, onde cada partio pode ser tratada como
um disco. Depois, o Sistema Operativo armazena as suas estruturas de dados no disco.
Para aumentar a eficincia, a maior parte dos sistemas agrupa os blocos em blocos
maiores, chamados clusters. As E/S do disco sero feitas atravs dos blocos e as E/S
dos sistemas de ficheiros atravs de clusters.
Alguns Sistemas Operativos do a certos programas a capacidade de usar uma partio
de um disco sem estruturas de dados do sistema de ficheiros, chamado raw disk. Isto
usado para as bases de dados, por exemplo.
Master boot record e bloco de boot
Para solucionar o problema de cdigo e dados do sistema estarem no sistema de
ficheiros mas este ainda no ter sido carregado, utiliza-se a boot ROM (que apenas de
leitura) que indica ao controlador de disco para ler o bloco de boot, onde est contido o
programa de bootstrap completo ou para o master boot record (inserida na 1 partio
do disco rgido, que utilizada para o boot. Contm o cdigo de boot e uma tabela de
parties), para carregar o sistema.
Blocos estragados
Os discos so propcios a falhar. A maior parte at vem da fbrica com blocos
estragados, que podem ser manuseados de vrias maneiras diferentes. Nos discos mais
sofisticados, os blocos estragados podem ser substitudos por sectores de sobra, num
esquema conhecido como sector sparing.

Gesto de swap-space
Com o swap space, a memria virtual usa espao do disco como uma extenso da
memria principal, o que reduz bastante o desempenho do sistema. O objectivo
principal disto providenciar a melhor taxa de transferncia para o sistema de memria
virtual.
Utilizao
A quantidade de swap space necessrio num sistema varia conforme a quantidade de
memria fsica, a quantidade de memria virtual que est a ser suportada e como
utilizada. Pode-se fazer swap a pginas (swap de pginas) em vez de processos (swap
de processos). Os sistemas mais recentes costumam utilizar swaps de pginas.
Localizao
O swap space pode estar em dois locais: num ficheiro do sistema de ficheiros ou numa
partio de disco aparte. Implementar no sistema de ficheiros bastante mais fcil, mas
tambm menos eficaz.

Estrutura RAID
Com a possibilidade de haverem vrios discos numa mquina, h a capacidade de haver
melhoria na performance e maior segurana dos dados e a possibilidade de serem
organizados de vrias formas. Redundant arrays of inexpensive discs (RAIDs) so
tcnicas de organizao de discos usadas relativamente sua fiabilidade e desempenho.
Os problemas de fiabilidade nos grandes arrays de discos relacionados com o
encurtamento do seu tempo de vida podem ser solucionados atravs de redundncia. A
redundncia feita guardando informao extra que no seja utilizada frequentemente,
mas que possa ser usada no caso de um disco falhar de modo a reconstruir a informao
perdida. A tcnica mais simples, mas tambm a mais cara, para o fazer o mirroring,
que consiste em duplicar cada disco.
A performance pode ser melhorada via paralelismo. Atravs do mirroring, os pedidos
de leitura podem ser tratados ao dobro da velocidade, visto poderem ser enviados para
um dos dois discos. A taxa de transferncia entre cada leitura mantm-se, mas o nmero
de leituras por unidade de tempo duplica.

Armazenamento estvel
A informao nunca se perde. A sua implementao consiste em escrever dois blocos
fsicos para cada bloco lgico. O objectivo ambos os blocos ficarem iguais e sem
erros. Caso um bloco tenha erros, substitudo com a informao do outro bloco. Se o
contedo dos 2 blocos for diferente e no tiver erros, por definio o contedo do
segundo bloco copiado para o primeiro.

Armazenamento tercirio
construdo atravs de componentes removveis, o que baixa bastante o custo. Algumas
componentes removveis envolvem o uso de disquetes, CD-RW, DVD-RW e tapes,
todas elas reutilizveis.
No que toca ao suporte do Sistema Operativo, as estruturas de dados e algoritmos
implementados nos sistemas de ficheiros de uma tape so bem diferentes daqueles
utilizados para discos, pois as tapes apenas permitem fazer append (acrescentar
informao ao fim).
Uma robotic jukebox permite que um cartuxo removvel seja mudado sem assistncia
humana. O seu uso nos backups simples, quando um cartuxo est cheio, o computador

d instrues jukebox para mudar para o seguinte. A incorporao do armazenamento


tercirio consiste em estender o sistema de ficheiros: ficheiros pequenos e usados
frequentemente permanecem no disco magntico, enquanto que ficheiros grandes e
raramente usados so arquivados na jukebox. Est tcnica conhecida como gesto de
armazenamento hierrquico.
menos fivel no que toca a falhas do disco/tape a comparar com discos fixos, mas
caso essas falhas ocorram praticamente garantido que o cartuxo dos dados se mantm
intacto (ao contrrio dos discos fixos, onde as perdas seriam bem maiores). Com a
reduo drstica do preo dos discos fixos, o armazenamento tercirio tornou-se
praticamente obsoleto.

Cap. 13 - Entradas e Sadas (resumo na pg. 585)


Hardware
Um dispositivo comunica com um sistema a partir de cabos (barramentos) ou pelo ar.
Uma transferncia E/S conseguida pois o controlador (dispositivo de hardware que faz
de interface entre um dispositivo e o seu funcionamento interno) tem um ou mais
registos para dados e controlo de sinais e o processador comunica com ele lendo e
escrevendo padres de bits nesses registos.
Uma porta E/S consiste de 4 registos:
Estado - Contm bits lidos pelos host que indicam se o comando j foi
completamente executado.
Controlo - Escrito pelo host para iniciar um comando ou alterar o modo de um
dispositivo.
Data-in - Lido pelo host para ter input.
Data-out - Escrito pelo host para enviar output.
Polling
Refere-se ao acto de simplificar activamente o estado de um dispositivo externo por um
programa do utilizador como uma actividade sincronizada. Enquanto o host l registo
estado de um ficheiro repetidamente at este deixar de estar ocupado, ele est em
espera activa, o que pode levar a longas esperas por parte dos outros ficheiros.
Chama-se interruptor ao mecanismo de hardware que permite notificar o CPU quando
o dispositivo est pronto, e so eles que vo prevenir esta espera activa.
Interrupes
Uma interrupo um sinal de um dispositivo que faz com que o CPU guarde o que
est a fazer num save state para atender a esse pedido. A figura na pgina seguinte
demonstra resumidamente o funcionamento das interrupes.
As interrupes tambm tm outras funcionalidades, como o atrasar o tratamento de
interrupes (quando esto a ser executadas operaes que no podem ser
interrompidas), suporte a prioridades e tratamento de excepes.

Direct Memory Access (DMA)


Permite que certos dispositivos de hardware, como discos rgidos, num computador
acedam memria do sistema para leitura e escrita independentemente do CPU, o que
aumenta o desempenho na transferncia de grande quantidade de dados. Uma
transferncia por DMA essencialmente copia um bloco de memria de um dispositivo
para outro, recorrendo ao controlador de DMA (um processador utilizado apenas com
esse propsito).

Device drivers
So os comandos dos dispositivos. a forma a partir da qual a unidade perifrica cria
uma interface com o Sistema Operativo para se ligar ao dispositivo de hardware,
ocultando as diferenas entre os vrios controladores.

Fazer o subsistema E/S independente do hardware simplifica o trabalho da pessoa que


desenvolve o Sistema Operativo e dos fabricantes de hardware, que ou desenham os
dispositivos de modo a serem compatveis com uma interface controladora do host
existente ou fazem novos device drivers para Sistemas Operativos populares.

E/S bloqueantes e no bloqueantes


Quando a aplicao envia uma chamada ao sistema bloqueante, a execuo dessa
aplicao suspensa e esta movida para uma lista de espera. Aps a chamada ao
sistema estar completa, a aplicao pode voltar a ser executada. As aces fsicas
levadas a cabo pelos dispositivos E/S so geralmente assncronas, o que as torna mais
lentas, mas mais fceis de implementar.
No entanto, alguns processos necessitam de chamadas ao sistema no bloqueantes, que
no interrompem a execuo da aplicao por demasiado tempo. Em vez disso, retorna
rapidamente um valor que indica quantos bytes j foram transferidos. Uma forma de se
sincronizar execuo com E/S escrevendo uma aplicao multithread. Algumas
threads podem fazer chamadas ao sistema bloqueantes enquanto as outras continuam a
ser executadas.
Uma alternativa s chamadas ao sistema no bloqueantes so as chamadas ao sistema
assncronas, que retornam imediatamente, sem esperar que a operao E/S termine. A
aplicao continua a executar o seu cdigo e o processo avisado quando a operao
E/S terminar: ou atravs de uma varivel em memria, ou atravs de sinal, ou atravs de
uma interrupo por software, ou atravs de uma rotina invocada assincronamente.

Subsistema de E/S do ncleo


O ncleo providencia vrios servios relacionados com E/S, alguns deles
providenciados pelo subsistema E/S do ncleo e construdos no hardware e na infraestrutura dos device drivers. esses servios so:
1 - Escalonamento
Determinao da ordem pela qual vo ser executadas as operaes E/S. Normalmente
implementado atravs de uma fila de espera de pedidos por dispositivos. Quando uma
aplicao faz uma chamada ao sistema E/S bloqueante, o pedido metido na fila desse
dispositivo. O escalonador ir reorganizar a ordem da fila para melhorar a eficincia.
Quando o ncleo suposta chamadas assncronas, tem de conseguir lidar com vrios
pedidos ao mesmo tempo, podendo o sistema Operativo acrescentar uma tabela de
estado do dispositivo fila de espera. Caso o dispositivo esteja ocupado, o tipo do
pedido e outros parmetros sero l guardados.
2 - Buffering
Um buffer a memria usada temporariamente na transferncia de dados entre dois
dispositivos ou entre um dispositivo e uma aplicao. Pode ser utilizado por trs razes:
Velocidades diferentes entre o produtor e o consumidor;
Adaptao entre dispositivos com dimenses de transferncias diferentes;
Suportar semntica da cpia para aplicaes E/S (para prever alteraes que
possam ser efectuadas entretanto).
3 - Caching
A cache uma regio da memria rpida que armazena cpias de dados. Aceder a cpia
na cache mais eficiente que aceder ao original. A diferena entre a cache e o buffer
que o buffer pode conter a nica cpia dum pedao de dados, enquanto que a cache
contm apenas mais uma cpia.
4 - Spooling e reserva de dispositivos

Um spool um buffer que guarda dados de sada para um dispositivo que no pode
aceitar dados de sada "misturados". O output de cada aplicao colocado num
ficheiro em disco separado, e so tratados em forma de fila (um de cada vez). O
spooling uma forma dos Sistemas Operativos conseguirem coordenas outputs
concorrentes.
Outra forma fornecendo meios para coordenao. Alguns Sistemas Operativos
fornecem suporte a acesso exclusivo a dispositivos, utilizando chamadas ao sistema para
efectuar essa reserva.
5 - Tratamento de erros
Um sistema Operativo pode estar prevenido contra vrios tipos de falhas de hardware e
aplicaes. Por exemplo, se um envio em rede falhar, tentar reenviar logo de seguida,
caso o protocolo assim o especifique. Geralmente, uma chamada ao sistema E/S retorna
um bit de informao sobre o estado da chamada (significando sucesso ou falha).
6 - Proteco
Evita a realizao de operaes E/S ilegais, definindo todas as instrues E/S como
sendo instrues prioritrias, o que as obriga a terem de ser invocadas atravs de
chamadas ao Sistema Operativo, que ir verificar a sua validade. Qualquer memorymapped, tal como as portas E/S, devem tambm ser protegidas.
7 - Estruturas de dados do ncleo
Para guardar informaes do estado sobre o uso dos componentes E/S, o ncleo utiliza
uma variedade de estruturas de dados do ncleo, como tabelas de ficheiros abertos (ver
captulo 11). O ncleo usa bastantes estruturas similares para procurar ligaes rede.

Decidi no fazer mais resumos porque em todos


os exames que vi nunca tinha sado nada daqui
para a frente.