Você está na página 1de 7

Notas da Aula 16 - Fundamentos de Sistemas Operacionais

1. Disco Rgido: Viso Geral


H inmeros dispositivos de E/S em um sistema computacional moderno. Por esta razo,
invivel do ponto de vista de uma disciplina sobre Sistemas Operacionais cobrir o
funcionamento de todos eles. Assim, para ilustrar alguns dos mecanismos de entrada e sada
estudados neste captulo foi escolhido um nico representante: o disco rgido.
O disco rgido (ou HD, da sigla em ingls) um dos dispositivos de E/S mais interessantes
de um sistema computacional moderno. Em primeiro lugar, ele utilizado para vrias tarefas
diferentes dentro de um sistema. A tarefa mais comum o armazenamento no-voltil de
arquivos do sistema, que ser estudada em mais detalhes no Captulo 8. Outra utilidade do
HD a utilizao de espao de armazenamento para uma operao chamada de Swap. Nesta
operao, informaes que deveriam ser armazenadas em memria principal so copiadas
para memria secundria (em geral, um HD) para liberar espao (para novos processos, por
exemplo). A operao de Swap ser estudada em mais detalhes no Captulo 7.
Outra caracterstica que torna o estudo dos HDs interessante o fato destes serem um dos
poucos dispositivos nos computadores mais recentes que fazem uso de operaes mecnicas.
Este fato tem duas consequncias. Primeiro, por envolver operaes mecnicas, o tempo de
acesso de um HD muito mais alto que o da maior parte dos demais componentes de um
computador. Em segundo lugar, componentes mecnicos em geral so menos confiveis que
dispositivos puramente eletrnicos, tanto em termos de falhas permanentes, quanto em termos
de falhas transientes. Logo, a gerncia de um HD tende a ser mais complexa que a de outros
tipos de dispositivos de E/S.
Hoje existem outros dispositivos de armazenamento de massa que tm se popularizado. Alm
das mdias removveis, como pendrives, cartes de memria CDs, DVDs e discos Blu-Ray, so
comuns hoje os chamados SSDs (Solid-State Drive), que so utilizados como HDs, porm tem
funcionamento completamente eletrnico (no h operaes mecnicas envolvidas). A grande
maioria dos SSDs so baseados em memria flash (como pendrives ou cartes de memria).
H, no entanto, os chamados HyperDrives, que so SSDs baseados em memria RAM. Como
a memria RAM voltil (necessita de atualizaes do contedo peridicas), este tipo de
SSD conta com baterias auxiliares para garantir a persistncia dos dados mesmo em caso
de desligamento da mquina. Os HyperDrives, no entanto, ainda so muito caros e utilizados
apenas em aplicaes muito especficas, como em grandes servidores de bases de dados.
Embora estas novas tecnologias comecem a ganhar destaque (principalmente em laptops), os
HDs convencionais ainda dominam o mercado. Um dos motivos a sua grande capacidade de
armazenamento e baixo custo de produo. Hoje, possvel encontrar HDs com capacidade
de armazenamento de Terabytes em computadores pessoais.
Fisicamente, um HD composto por um ou mais discos metlicos, chamados de pratos, que

giram em torno de um eixo comum. No caso de mltiplos pratos, estes so dispostos em


alturas diferentes no eixo de rotao. Cada prato tem sua superfcie recoberta por uma pelcula
magntica. Acoplado ao conjunto de pratos, encontra-se um brao mecnico com um ou mais
cabeotes de leitura e escrita (um para cada superfcie de cada prato). Este brao mecnico
capaz de girar em um outro eixo, fazendo com que os cabeotes de leitura possam alcanar
qualquer ponto, da borda at o centro de cada prato. Como os pratos giram, os cabeotes
conseguem cobrir toda a sua superfcie.
Logicamente, cada prato de um HD dividido em trilhas. Uma trilha uma circunferncia
concntrica ao eixo de rotao do prato. Por sua vez, uma trilha dividida em vrios setores.
Um setor um segmento da circunferncia da trilha que armazena uma quantidade fixa de
bytes (em geral, algo entre 512 e 4096 bytes). Cada bit de um setor representado atravs
da polarizao magntica da pelcula naquele determinado ponto. Podem ser utilizadas
modulaes mais complexas para a representao dos dados, mas a maneira mais simples
definir uma determinada polarizao como 0 e a polarizao oposta como 1. Durante a
gravao, os cabeotes geram um campo eletromagntico que tem sua polaridade controlada
eletronicamente. Este campo faz com que a parte da pelcula que representa um determinado
bit tenha sua polaridade alinhada com a do cabeote. Durante a leitura, o cabeote passa a ser
um elemento passivo, tendo uma tenso induzida de acordo com as linhas de fora do campo
resultante da polarizao da pelcula.
Olhando para os pratos de um HD de cima para baixo, define-se um cilindro como o conjunto
de trilhas de todos os pratos que esto a um mesmo raio do eixo de rotao. Estas trs
divises lgicas, cilindro, trilha e setor, permitem o endereamento dos dados em um HD.
interessante notar que os setores so divises radiais das trilhas. Em outras palavras, toda
trilha de um HD tem o mesmo nmero de setores. Como trilhas mais prximas do centro do
prato tem uma circunferncia menor, o comprimento fsico dos seus setores tambm menor
que os das trilhas mais externas. Por outro lado, todo setor armazena a mesma quantidade de
bytes. Logo, nos setores das trilhas mais internas, a densidade de bytes por rea fsica maior.
Historicamente, este fato trouxe duas consequncias. Em primeiro lugar, em HDs mais antigos,
era comum que determinados setores do disco apresentassem defeitos fsicos com o passar
do tempo (eles ficavam simplesmente inutilizados). Em geral, os setores mais defeituosos
eram aqueles localizados nas trilhas mais internas (por causa da alta densidade de gravao).
Hoje, os HDs so mais confiveis e este tipo de problema bem mais raro. Por outro lado,
alguns fabricantes decidiram aumentar a capacidade de armazenamento dos seus HDs criando
setores de capacidade de armazenamento varivel. A ideia manter constante a densidade de
gravao. Logo, as trilhas mais externas passam a ter mais setores. Nos equipamentos em que
isso ocorre, no entanto, esta alterao realizada sempre por hardware. Do ponto de vista do
software, considera-se sempre a geometria de disco tradicional.
A capacidade de um HD pode ser calculada com base na quantidade de cilindros, setores,
bytes por setor e superfcies de gravao. Os fabricantes geralmente informam o nmero de
superfcies de gravao atravs do nmero de cabeotes do HD. Por exemplo, um disco com

16 cabeas de gravao, 1016 cilindros, 51 setores por cilindro e 512 bytes por setor tem uma
capacidade total de 16 x 1016 x 51 x 512 = 424476672 bytes (aproximadamente 420 MBytes).
Para enderear um determinado setor de um HD, podem ser usados dois esquemas distintos.
O esquema mais tradicional o chamado CHS (Cylinder, Head, Sector). Neste esquema, o
processador especifica explicitamente um cilindro, um cabeote e um setor. H ainda o modo
LBA (Linear Block Addressing), no qual o HD visto como uma grande sequncia linear de
setores, numerados de 0 at o nmero mximo de setores menos 1. Obviamente, para realizar
a converso entre os dois modos de endereamento, necessrio conhecer o nmero de
setores por trilha e o nmero mximo de cabeotes por cilindro.
2. Tempo de Acesso de um Disco Rgido
Para acessar um byte ou um conjunto de bytes em um disco rgido, uma srie de operaes
so necessrias. Basicamente, preciso posicionar o cabeote sobre o setor da trilha desejada
e, em seguida, realizar a leitura. Esta operao dividida em duas etapas:
Seek time: tempo necessrio para posicionar o cabeote at o cilindro correspondente
trilha que se deseja acessar.
Latency time: tempo necessrio para a rotao do prato at que o setor desejado se
encontre sob o cabeote.
Transfer time: tempo necessrio para a rotao do prato at que todos os bytes do setor
tenham passado sob o cabeote.
O tempo total de acesso a um dado no HD igual a soma de todos estes tempos. O tempo de
seek depende da velocidade de movimentao do cabeote e do raio dos pratos do HD. Os
tempos de latncia e de transferncia dependem da velocidade de rotao do disco (em geral,
entre 3600 e 15000 RPM). Os trs tempos dependem tambm da posio atual do disco e do
cabeote de leitura. Em geral, a componente que domina o tempo de acesso o tempo de
seek, sendo, na mdia, da ordem de alguns milissegundos.
Uma tcnica interessante para melhorar o tempo de acesso aos HDs o chamado
Entrelaamento (ou interleaving). A ideia que processos geralmente requisitam a leitura ou
escrita de vrios setores consecutivos. Suponha por exemplo que um processo deseje ler
os setores 14 e 15 de uma dada trilha. Inicialmente, o HD vai realizar o acesso ao setor 14,
tendo que esperar os tempos de seek, latncia e transferncia. Quando a leitura tiver sido
concluda, o bloco ser enviado para o processador (ou para o DMA), que demorar um tempo
para realizar a prxima parte do pedido (leitura do setor 15). Se os setores so organizados
fisicamente no disco de maneira sequencial, imediatamente aps o final do setor 14, comear
o setor 15. Por causa do atraso entre os dois pedidos, provvel que no seja possvel
comear a leitura do setor 15 na mesma revoluo do prato. Neste caso, ser necessrio que o
HD aguarde uma nova rotao completa at que o setor 15 volte a estar sob o cabeote.
Para evitar isso, o mtodo de entrelaamento prope que entre dois setores com endereos
consecutivos (por exemplo, o 14 e o 15) sejam colocados n outros setores. O valor de n
chamado de fator de entrelaamento. Quando maior o fator de entrelaamento, maior o

atraso permitido entre duas requisies de setores consecutivos. Por outro lado, se o fator de
entrelaamento for muito alto, o benefcio acaba sendo perdido, pois a nova requisio chegar
ao HD antes que o setor fique sob o cabeote. A escolha do fator de entrelaamento, portanto,
precisa ser definido de acordo com a velocidade do processador, do barramento de dados, da
controladora de disco e da rotao dos pratos do disco.
3. Algoritmos de Escalonamento
Assim como um processador, um HD um recurso compartilhado entre vrios processos.
Mltiplos processos podem realizar requisies simultneas de leituras ou escritas em disco.
Logo, preciso que o SO determine em que ordem estas requisies sero atendidas.
Como discutido na seo anterior, os tempos de acesso a dados em um HD so relativamente
altos. A ordem do tempo de acesso de um HD comum chega a dezenas de milissegundos.
Apenas como comparao, um processador de 2GHz executa 20 milhes de ciclos em 10 ms.
Alm disso, como tambm discutido, o tempo de acesso depende da posio dos pratos e dos
cabeotes de leitura do HD. Logo, polticas diferentes de escalonamento podem resultar em
grandes diferenas no desempenho deste dispositivo.
O objetivo do escalonamento de requisies de acesso a disco sempre o de garantir a maior
vazo de dados possvel. Uma vez que o cabeote tenha sido posicionado no local correto,
a velocidade de escrita ou leitura de um HD constante. Logo, deseja-se reduzir ao mximo
o tempo de acesso. Como citado anteriormente, a componente dominante neste tempo o
tempo de seek, que corresponde ao tempo de movimentao do cabeote. Logo, deseja-se um
algoritmo de escalonamento que minimize a quantidade de movimentos do cabeote.
O algoritmo mais simples o FIFO (tambm chamado de FCFS, First Come First Served).
Neste caso, o escalonador apenas atende os pedidos na ordem em que eles chegam, sem
considerar qualquer outro critrio de desempenho.
Um algoritmo melhor o SSTF (Shortest Seek Time First), que avalia, dentre todas as
requisies disponveis, qual aquela que requer a menor movimentao do cabeote.
Dependendo da ordem de chegada das requisies, este algoritmo pode resultar em um
desempenho muito bom. Por outro lado, existem casos em que as ordens de chegada no
favorecem o desempenho do SSTF, fazendo com que seu desempenho seja ruim. Alm
disso, como este algoritmo estabelece prioridades de atendimento, ele pode levar algumas
requisies a starvation.
O SCAN um algoritmo de escalonamento que opera de forma bastante simples. Ele
estabelece um sentido de varredura do cabeote. Por exemplo, em um dado momento o
SCAN pode determinar que o cabeote se movimentar da parte interna dos pratos para a
parte externa. Neste caso, as requisies sero atendidas de acordo com qual cilindro desejase acessar: os mais internos sero atendidos primeiro. Quando o cabeote chega parte
mais externa dos pratos, o sentido de varredura invertido. Desta forma, a prioridade dos

atendimentos tambm. O SCAN continua neste ciclo at que todas as requisies sejam
atendidas.
Uma maneira de visualizar o funcionamento do SCAN pensando no elevador de um prdio
comercial. Inicialmente, o elevador encontra-se no andar trreo. Quando h uma passageiros,
o elevador comea a subir, parando sequencialmente em cada um dos andares desejados,
deixando passageiros. Quando o elevador chega ao ltimo andar, ele comea a descer,
parando naqueles andares nos quais h novos passageiros a serem atendidos. O elevador,
portanto, atende aos passageiros sempre em um dos dois modos: sempre subindo ou sempre
descendo. Por esta semelhana com o funcionamento do elevador de um prdio, o SCAN
conhecido popularmente como Algoritmo do Elevador.
Uma pequena variao do algoritmo SCAN o C-SCAN. A diferena entre eles simples:
ao invs de inverter a ordem de atendimento uma vez que o cabeote chegue a um dos
extremos dos pratos, o C-SCAN faz o cabeote se reposicionar no extremo inicial e recomear
o processo de atendimento. Em outras palavras, o sentido de movimentao do cabeote para
atendimento dos clientes sempre o mesmo. Na abstrao do elevador, isso equivalente
a um elevador que s para nos andares para pegar novos passageiros quando est subindo.
Ao chegar ao topo do prdio, o elevador comea uma descida direta (sem parada em outros
andares) at o trreo. A motivao para esta variao prover uma maior justia. No algoritmo
SCAN tradicional requisies feitas para cilindros nos extremos dos pratos so prejudicadas,
porque o intervalo entre duas passagens do cabeote por tais cilindros muito alto (o cabeote
tem que percorrer todo o prato duas vezes, ida e volta, at chegar novamente nestes cilindros).
Por outro lado, os cilindros do meio do prato esperam apenas por um percorrimento do prato
(meia ida mais meia volta) para serem novamente atendidos. H ainda outras pequenas
variaes do algoritmo do elevador, como os algoritmos FSCAN e LOOK.
A vantagem do algoritmo FIFO, como sempre, a sua simplicidade. Por outro lado, em quase
todos os aspectos, o algoritmo do elevador (e suas variaes) tem desempenho superior aos
demais.
4. RAID (Redundant Array of Independent Disks)
Os HDs so dispositivos com partes mecnicas. Como discutido anteriormente, isso faz com
que, em geral, eles sejam mais lentos e menos confiveis que os demais componentes de
um computador. Para computadores pessoais, estes problemas geralmente no so to
relevantes. Os nveis atuais de desempenho e confiabilidade e desempenho dos HDs so
satisfatrios para a maior parte dos usurios.
No entanto, em grandes servidores estes problemas acabam se potencializando. Servidores,
em geral, tem um grande nmero de acessos simultneos a disco, evidenciando o
desempenho dos HDs como gargalos do sistema. Alm disso, os dados armazenados em
servidores so geralmente sensveis, o que significa que defeitos que levem a perda de dados
tem consequncias srias. Alm disso, quando maior o servidor, maior a quantidade de HDs

utilizados, o que, por sua vez, aumenta a probabilidade de falha de ao menos um deles.
Para solucionar ou pelo menos mitigar estes problemas nestes ambientes de grande porte foi
criada a tecnologia RAID. A ideia do RAID combinar vrios HDs fisicamente separados em
uma nica unidade lgica de armazenamento, de forma a obter ganhos de desempenho e/
ou de confiabilidade. Como o prprio nome sugere, na maior parte das configuraes RAID
h algum tipo de informao redundante sendo armazenada, o que reduz a probabilidade de
perda de dados.
H diversos modos (ou nveis) de funcionamento do RAID. So 8 nveis bsicos:
RAID 0: todos os discos armazenam apenas dados. Os dados so divididos entre
os HDs, mas no h qualquer mecanismo de correo de erros ou de redundncia.
A vantagem deste modo est no simples fato de escritas ou leituras poderem ser
realizadas em paralelo, j que duas requisies podem ser mapeadas em discos
fsicos separadas. Este esquema conhecido tambm como stripping. Como no
h redundncia, o espao total de armazenamento disponvel igual a soma das
capacidades dos HDs.
RAID 1: neste nvel so usados n HDs de igual capacidade, um principal e outros
secundrios. Este conjunto funciona em um esquema de espelhamento: tudo o que
escrito no HD principal replicado nos secundrios. A grande vantagem deste nvel
o alto grau de redundncia. Se o HD principal sofre uma falha, todo o contedo estar
salvo nos secundrios. Por outro lado, perde-se muito da capacidade nominal de
armazenamento (e.g., com dois discos de 500GB, a capacidade total ser de 500GB).
RAID 2/3/4: nestes 3 nveis so usados n + 1 HDs. Nos n primeiros HDs usado
um esquema de stripping, como no RAID 0. O ltimo HD, usado para armazenar
informaes de redundncia (paridade) dos dados armazenados nos demais. Todos os
trs nveis (2, 3 e 4) funcionam desta forma: a diferena est em como a redundncia
armazenada: o RAID 2 usa paridade de bit, o RAID 3 usa paridade de byte e o RAID 4
usa paridade de bloco. De toda forma, em caso de falha em um dos n primeiros HDs
possvel recuperar os dados perdidos atravs das informaes dos outros n - 1, alm do
HD de prioridade.
RAID 5: funciona como o RAID 4, porm as informaes de paridade so distribudas
entre todos os HDs. Isto , no existe um HD especfico para paridade.
RAID 6: similar ao RAID 5, porm com um esquema de paridade dupla que permite
falha de at dois HDs dentro do conjunto.
RAID 10: combina os nveis 0 e 1, utilizando vrios pares de HDs de igual capacidade.
O esquema de stripping feito nos HDs principais de cada par. Alm disso, cada um
destes HDs principais tem seu contedo espelhado no seu respectivo HD secundrio.
Os nveis de RAID podem ser implementados tanto em hardware (pela controladora de
disco), quanto em software (pelo SO). Quando implementado em hardware, todo o processo
transparente para o SO. De fato, neste caso, o SO simplesmente v o conjunto de HDs em
RAID como um nico disco.

As primeiras implementaes em software do RAID eram consideravelmente mais lentas que


as implementaes em hardware. Hoje, esta diferena no mais to grande, porm, ela ainda
existe.

Você também pode gostar