Sei sulla pagina 1di 40

Sistemas Operacionais: Conceitos e Mecanismos

VII - Gerncia de Entrada/Sada


Prof. Carlos Alberto Maziero
DAInf UTFPR
http://dainf.ct.utfpr.edu.br/maziero
8 de agosto de 2014

Este texto est licenciado sob a Licena Attribution-NonCommercial-ShareAlike 3.0 Unported da Creative
Commons (CC). Em resumo, voc deve creditar a obra da forma especificada pelo autor ou licenciante (mas
no de maneira que sugira que estes concedem qualquer aval a voc ou ao seu uso da obra). Voc no
pode usar esta obra para fins comerciais. Se voc alterar, transformar ou criar com base nesta obra, voc
poder distribuir a obra resultante apenas sob a mesma licena, ou sob uma licena similar presente.
Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/3.0/.
Este texto foi produzido usando exclusivamente software livre: Sistema Operacional GNU/Linux (distribuies Fedora e Ubuntu), compilador de texto LATEX 2 , gerenciador de referncias BibTeX, editor grfico
Inkscape, criadores de grficos GNUPlot e GraphViz e processador PS/PDF GhostScript, entre outros.

c Carlos Maziero

: SUMRIO

Sumrio
1

Introduo

Dispositivos de entrada/sada
2.1 Componentes de um dispositivo
2.2 Barramentos . . . . . . . . . . . .
2.3 Interface de acesso . . . . . . . .
2.4 Endereamento . . . . . . . . . .
2.5 Interrupes . . . . . . . . . . . .

3
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

4
4
6
7
10
11

Software de entrada/sada
3.1 Classes de dispositivos . . . . . . . . . . . .
3.2 Estratgias de interao . . . . . . . . . . .
3.2.1 Interao controlada por programa .
3.2.2 Interao controlada por eventos . .
3.2.3 Acesso direto memria . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

15
17
19
19
21
24

.
.
.
.
.

27
28
28
29
33
33

Discos rgidos
4.1 Estrutura fsica . . . . . .
4.2 Interface de hardware . .
4.3 Escalonamento de acessos
4.4 Caching de blocos . . . . .
4.5 Sistemas RAID . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Interfaces de rede

39

Dispositivos USB

39

Interfaces de udio

39

Interface grfica

39

Mouse e teclado

39

10 Outros tpicos

39

c Carlos Maziero

: Introduo

Resumo
Este contedo est em elaborao. Ainda h muito o que escrever aqui...

Introduo

Um computador constitudo basicamente de um ou mais processadores, memria


RAM e dispositivos de entrada e sada, tambm chamados de perifricos. Os dispositivos de entrada/sada permitem a interao do computador com o mundo exterior de
vrias formas, como por exemplo:
interao com os usurios atravs de mouse, teclado, tela grfica, tela de toque e
joystick;
escrita e leitura de dados em discos rgidos, SSDs, CD-ROMs, DVD-ROMs e
pen-drives;
impresso de informaes atravs de impressoras e plotadoras;
captura e reproduo de udio e vdeo, como cmeras, microfones e alto-falantes;
comunicao com outros computadores, atravs de redes LAN, WLAN, Bluetooth
e de telefonia celular.
Esses exemplos so tpicos de computadores pessoais e de computadores menores,
como os smartphones. J em ambientes industriais, comum encontrar dispositivos de
entrada/sada especficos para a monitorao e controle de mquinas e processos de
produo, como tornos de comando numrico, braos robotizados e processos qumicos.
Por sua vez, o computador embarcado em um carro conta com dispositivos de entrada
para coletar dados do combustvel e do funcionamento do motor e dispositivos de
sada para controlar a injeo eletrnica e a trao dos pneus, por exemplo. bastante
bvio que um computador no tem muita utilidade sem dispositivos perifricos, pois o
objetivo bsico da imensa maioria dos computadores receber dados, process-los e
devolver resultados aos seus usurios, sejam eles seres humanos, outros computadores
ou processos fsicos/qumicos externos.
Os primeiros sistemas de computao, construdos nos anos 1940, eram destinados a
clculos matemticos e por isso possuam dispositivos de entrada/sada rudimentares,
que apenas permitiam carregar/descarregar programas e dados diretamente na memria
principal. Em seguida surgiram os terminais compostos de teclado e monitor de texto,
para facilitar a leitura e escrita de dados, e os discos rgidos, como meio de armazenamento persistente de dados e programas. Hoje, dispositivos de entrada/sada dos mais
diversos tipos podem estar conectados a um computador. A grande diversidade de
dispositivos perifricos um dos maiores desafios presentes na construo e manuteno
de um sistema operacional, pois cada um deles tem especificidades e exige mecanismos
de acesso especficos.
Este captulo apresenta uma viso geral da operao dos dispositivos de entrada/sada sob a tica do sistema operacional. Inicialmente sero discutidas as principais
3

c Carlos Maziero

: Dispositivos de entrada/sada

Figura 1: Dispositivos de entrada/sada.


caractersticas dos dispositivos de entrada/sada usualmente presentes nos computadores convencionais para a interao com o usurio, armazenamento de dados e
comunicao. A seguir, a arquitetura de hardware e software responsvel pela operao dos dispositivos de entrada/sada ser detalhada. Na sequncia, as principais
estratgias de interao entre o software e o hardware sero apresentadas. Os drivers,
componentes de software responsveis pela interao do sistema operacional com o
hardware de entrada/sada, tero sua estrutura e princpio de funcionamento abordados
em seguida. Por fim, alguns sub-sistemas de entrada/sada especficos, considerados os
mais relevantes nos computadores de uso geral atualmente em uso, sero estudados
com maior profundidade.

Dispositivos de entrada/sada

Um dispositivo de entrada/sada realiza a interao entre os sistemas internos de um


computador (processadores e memria) e o mundo exterior.

2.1

Componentes de um dispositivo

Conceitualmente, a entrada de dados em um computador inicia com um sensor


capaz de converter uma informao externa (fsica ou qumica) em um sinal eltrico
analgico. Como exemplos de sensores temos o microfone, as chaves internas das
teclas de um teclado ou o foto-diodo de um leitor de DVDs. O sinal eltrico analgico
fornecido pelo sensor ento aplicado a um conversor analgico-digital (CAD), que
o transforma em informao digital (sequncias de bits). Essa informao digital

c Carlos Maziero

: Componentes de um dispositivo

Tabela 1: Velocidades tpicas de alguns dispositivos de entrada/sada.


Dispositivo
velocidade
Teclado
10 B/s
Mouse tico
100 B/s
14 KB/s
Interface infravermelho (IrDA-SIR)
125 KB/s
Interface paralela padro
Interface de udio digital S/PDIF
384 KB/s
11.6 MB/s
Interface de rede Fast Ethernet
Chave ou disco USB 2.0
60 MB/s
116 MB/s
Interface de rede Gigabit Ethernet
Disco rgido SATA 2
300 MB/s
4.2 GB/s
Interface grfica high-end

armazenada em um buffer que pode ser acessado pelo processador atravs de um


controlador de entrada.
Uma sada de dados inicia com o envio de dados do processador a um controlador
de sada, atravs do barramento. Os dados enviados pelo processador so armazenados
em um buffer interno do controlador e a seguir convertidos em um sinal eltrico
analgico, atravs de um conversor digital-analgico (CDA). Esse sinal ser aplicado a
um atuador1 que ir convert-lo em efeitos fsicos perceptveis ao usurio. Exemplos
simples de atuadores so a cabea de impresso e os motores de uma impressora, um
alto-falante, uma tela grfica, etc.
Vrios dispositivos combinam funcionalidades tanto de entrada quanto de sada,
como os discos rgidos: o processador pode ler dados gravados no disco rgido (entrada),
mas para isso precisa ativar o motor que faz girar o disco e posicionar adequadamente
a cabea de leitura (sada). O mesmo ocorre com uma placa de udio de um PC
convencional, que pode tanto capturar quanto reproduzir sons. A Figura 2 mostra a
estrutura bsica de captura e reproduo de udio em um computador pessoal, que
um bom exemplo de dispositivo de entrada/sada.
Como existem muitas possibilidades de interao do computador com o mundo
exterior, tambm existem muitos tipos de dispositivos de entrada/sada, com caractersticas diversas de velocidade de transferncia, forma de transferncia dos dados e
mtodo de acesso. A velocidade de transferncia de dados de um dispositivo pode ir
de alguns bytes por segundo, no caso de dispositivos simples como teclados e mouses, a
gigabytes por segundo, para algumas placas de interface grfica ou de acesso a discos
de alto desempenho. A Tabela 1 traz alguns exemplos de dispositivos de entrada/sada
com suas velocidades tpicas de transferncia de dados.
1

Sensores e atuadores so denominados genericamente dispositivos transdutores, pois transformam


energia externa (como luz, calor, som ou movimento) em sinais eltricos, ou vice-versa.

c Carlos Maziero

: Barramentos

CPU
dados

controlador de barramento
01001010

01001010

dados

01101010

buer

01101010

buer
sinal digital

conversor
digitalanalgico

conversor
analgicodigital
sinal analgico

sensor

amplicador

atuador

amplicador

controlador de dispositivo

Figura 2: Estrutura bsica da entrada e sada de udio.

2.2

Barramentos

Historicamente, o acoplamento dos dispositivos de entrada/sada ao computador


feito atravs de barramentos, seguindo o padro estabelecido pela arquitetura de Von
Neumann. Enquanto o barramento dos primeiros sistemas era um simples agrupamento
de fios, os barramentos dos sistemas atuais so estruturas de hardware bastante
complexas, com circuitos especficos para seu controle. Alm disso, a diversidade de
velocidades e volumes de dados suportados pelos dispositivos fez com que o barramento
nico dos primeiros sistemas fosse gradativamente estruturado em um conjunto de
barramentos com caractersticas distintas de velocidade e largura de dados.
O controle dos barramentos em um sistema desktop moderno est a cargo de dois
controladores de hardware que fazem parte do chipset2 da placa-me: a north bridge e a
2

O chipset de um computador um conjunto de controladores e circuitos auxiliares de hardware


integrados placa-me, que provem servios fundamentais ao funcionamento do computador, como
o controle dos barramentos, acesso BIOS, controle de interrupes, temporizadores programveis
e controladores on-board para alguns perifricos, como discos rgidos, portas paralelas e seriais e
entrada/sada de udio.

c Carlos Maziero

: Interface de acesso

south bridge. A north bridge, diretamente conectada ao processador, responsvel pelo


acesso memria RAM e aos dispositivos de alta velocidade, atravs de barramentos
dedicados como AGP (Accelerated Graphics Port) e PCI-Express (Peripheral Component
Interconnect).
Por outro lado, a south bridge o controlador responsvel pelos barramentos e portas
de baixa ou mdia velocidade do computador, como as portas seriais e paralelas, e pelos
barramentos dedicados como o PCI padro, o USB e o SATA. Alm disso, a south bridge
costuma integrar outros componentes importantes do computador, como controladores
de udio e rede on-board, controlador de interrupes, controlador DMA (Direct Memory
Access), relgio de tempo real (responsvel pelas interrupes de tempo usadas pelo
escalonador de processos), controle de energia e acesso memria BIOS. O processador
se comunica com a south bridge indiretamente, atravs da north bridge.
A Figura 3 traz uma viso da arquitetura tpica de um computador pessoal moderno. A estrutura detalhada e o funcionamento dos barramentos e seus respectivos
controladores esto fora do escopo deste texto; informaes mais detalhadas podem ser
encontradas em [Patterson and Henessy, 2005].
processor

PCI Express bus

North bridge
(memory
controller hub)

AGP port

LPC bus

mouse keyboard serial parallel oppy


standard PC ports

RAM

onboard ethernet

BIOS

Super I/O controller

RAM

South bridge
(I/O controller
hub)

onboard audio
power management
real-time clock

SATA

PCI

USB

standard buses

Figura 3: Arquitetura tpica de um PC atual.

2.3

Interface de acesso

Para o sistema operacional, o aspecto mais relevante de um dispositivo de entrada/sada sua interface de acesso, ou seja, a abordagem a ser usada para acessar o
dispositivo, configur-lo e enviar dados para ele (ou receber dados dele). Normalmente,
cada dispositivo oferece um conjunto de registradores acessveis atravs do barramento,
7

c Carlos Maziero

: Interface de acesso

tambm denominados portas de entrada/sada, que so usados para a comunicao


entre o dispositivo e o processador. As portas oferecidas para acesso a cada dispositivo
de entrada/sada podem ser divididas nos seguintes grupos (conforme ilustrado na
Figura 4):
Portas de entrada (data-in ports): usadas pelo processador para receber dados
provindos do dispositivo; so escritas pelo dispositivo e lidas pelo processador;
Portas de sada (data-out ports): usadas pelo processador para enviar dados ao
dispositivo; essas portas so escritas pelo processador e lidas pelo dispositivo;
Portas de status (status ports): usadas pelo processador para consultar o estado
interno do dispositivo ou verificar se uma operao solicitada ocorreu sem erro;
essas portas so escritas pelo dispositivo e lidas pelo processador;
Portas de controle (control ports): usadas pelo processador para enviar comandos
ao dispositivo ou modificar parmetros de sua configurao; essas portas so
escritas pelo processador e lidas pelo dispositivo.

CPU

data-in

data-out

status

control

device controller

s demais partes do hardware do dispositivo

Figura 4: Portas de interface de um dispositivo de entrada/sada.


O nmero exato de portas e o significado especfico de cada uma dependem do tipo
de dispositivo considerado. Um exemplo simples de interface de acesso a dispositivo
a interface paralela, geralmente usada para acessar impressoras mais antigas. As portas
de uma interface paralela operando no modo padro (SPP - Standard Parallel Port) esto
descritas a seguir [Patterson and Henessy, 2005]:
P0 (data port): porta de sada, usada para enviar bytes impressora; pode ser
usada tambm como porta de entrada, se a interface estiver operando em modo
bidirecional;
8

c Carlos Maziero

: Interface de acesso

P1 (status port): porta de status, permite ao processador consultar vrios indicadores


de status da interface paralela ou do dispositivo ligado a ela. O significado de
cada um de seus 8 bits :
0. reservado;
1. reservado;
2. nIRQ: se 0, indica que o controlador gerou uma interrupo (Seo 2.5);
3. error: h um erro interno na impressora;
4. select: a impressora est pronta (online);
5. paper_out: falta papel na impressora;
6. ack: se 0, indica que um dado foi recebido (gera um pulso em 0 com durao
de ao menos 1s);
7. busy: indica que o controlador est ocupado processando um comando.
P2 (control port): porta de controle, usada para configurar a interface paralela e
para solicitar operaes de sada (ou entrada) de dados atravs da mesma. Seus 8
bits tm o seguinte significado:
0. strobe: informa a interface que h um dado em P0 (deve ser gerado um pulso
em 0, com durao de ao menos 1s);
1. auto_lf : a impressora deve inserir um line feed a cada carriage return recebido;
2. reset: a impressora deve ser reiniciada;
3. select: a impressora est selecionada para uso;
4. enable_IRQ: permite ao controlador gerar interrupes (Seo 2.5);
5. bidirectional: informa que a interface ser usada para entrada e para sada de
dados;
6. reservado;
7. reservado.
P3 a P7 : estas portas so usadas nos modos estendidos de operao da interface
paralela, como EPP (Enhanced Paralel Port) e ECP (Extended Capabilities Port).
O algoritmo bsico implementado pelo hardware interno do controlador da interface
paralela para coordenar suas interaes com o processador est ilustrado no fluxograma
da Figura 5. Considera-se que os valores iniciais dos flags de status da porta P1 so
nIRQ = 1, error = 0, select = 1, paper_out = 0, ack = 1 e busy = 0.

c Carlos Maziero

: Endereamento

aguarda um
novo dado

P2.strobe?

informa que
o controlador
est ocupado

P1.busy = 1

l e trata o
dado recebido

l P0

informa que
o dado foi
processado

gera pulso
em P1.ack

gera
interrupo?

P2.enable_IRQ?

ack

gera IRQ

0
informa que
o controlador
est livre

P1.busy = 0

Figura 5: Comportamento bsico do controlador da porta paralela.

2.4

Endereamento

A forma de acesso aos registradores que compem a interface de um dispositivo varia


de acordo com a arquitetura do computador. Alguns sistemas utilizam entrada/sada
mapeada em portas (port-mapped I/O), onde as portas que compem a interface so
acessadas pelo processador atravs de instrues especficas para operaes de entrada/sada. Por exemplo, os processadores da famlia Intel usam a instruo IN reg port
para ler o valor presente na porta port do dispositivo e deposit-lo no registrador
reg do processador, enquanto a instruo OUT port reg usada para escrever na porta
port o valor contido no registrador reg.
Na entrada/sada mapeada em portas, definido um espao de endereos de entrada/sada (I/O address space) separado da memria principal e normalmente compreendido
entre 0 e 64K. Para distinguir entre endereos de memria e de portas de entrada/sada,
10

c Carlos Maziero

: Interrupes

o barramento de controle do processador possui uma linha IO/M, que indica se o


endereo presente no barramento de endereos se refere a uma posio de memria
(se IO/M = 0) ou a uma porta de entrada/sada (se IO/M = 1). A Tabela 2 apresenta os
endereos tpicos de algumas portas de entrada/sada de dispositivos em computadores
pessoais que seguem o padro IBM-PC.
Dispositivo
Endereos das portas
teclado e mouse PS/2
0060h e 0064h
barramento IDE primrio
0170h a 0177h
barramento IDE secundrio
01F0h a 01F7h
relgio de tempo real
0070h e 0071h
porta serial COM1
02F8h a 02FFh
porta serial COM2
03F8h a 03FFh
porta paralela LPT1
0378h a 037Fh
Tabela 2: Endereos de portas de E/S de alguns dispositivos.
Uma outra forma de acesso aos dispositivos de entrada/sada, usada frequentemente
em interfaces grficas e de rede, a entrada/sada mapeada em memria (memory-mapped
I/O). Nesta abordagem, uma parte no-ocupada do espao de endereos de memria
reservado para mapear as portas de acesso aos dispositivos. Dessa forma, as portas so
vistas como se fossem parte da memria principal e podem ser lidas e escritas atravs
das mesmas instrues usadas para acessar o restante da memria, sem a necessidade
de instrues especiais como IN e OUT. Algumas arquiteturas de computadores, como
caso do IBM-PC padro, usam uma abordagem hbrida para certos dispositivos como
interfaces de rede e de udio: as portas de controle e status so mapeadas no espao de
endereos de entrada/sada, sendo acessadas atravs de instrues especficas, enquanto
as portas de entrada e sada de dados so mapeadas em memria (normalmente na
faixa de endereos entre 640 KB e 1MB) [Patterson and Henessy, 2005].
Finalmente, uma abordagem mais sofisticada para o controle de dispositivos de
entrada/sada o uso de um hardware independente, com processador dedicado,
que comunica com o processador principal atravs de algum tipo de barramento.
Em sistemas de grande porte (mainframes) essa abordagem denominada canais de
entrada/sada (IO channels); em computadores pessoais, essa abordagem costuma ser
usada em interfaces para vdeo ou udio de alto desempenho, como o caso das
placas grficas com acelerao, nas quais um processador grfico (GPU Graphics
Processing Unit) realiza a parte mais pesada do processamento da sada de vdeo, como a
renderizao de imagens em 3 dimenses e texturas, deixando o processador principal
livre para outras tarefas.

2.5

Interrupes

O acesso aos controladores de dispositivos atravs de seus registradores conveniente


para a comunicao no sentido processador controlador, ou seja, para as interaes
iniciadas pelo processador. Entretanto, pode ser problemtica no sentido controlador
11

c Carlos Maziero

: Interrupes

processador, caso o controlador precise informar algo ao processador de forma assncrona,


sem que o processador esteja esperando. Nesse caso, o controlador pode utilizar
uma requisio de interrupo (IRQ - Interrupt Request) para notificar o processador
sobre algum evento importante, como a concluso de uma operao solicitada, a
disponibilidade de um novo dado ou a ocorrncia de algum problema no dispositivo.
As requisies de interrupo so sinais eltricos veiculados atravs do barramento
de controle do computador. Cada interrupo est associada a um nmero inteiro,
geralmente na faixa 031 ou 063, o que permite identificar o dispositivo que a solicitou. A
Tabela 3 informa os nmeros de interrupo associados a alguns dispositivos perifricos
tpicos.
Dispositivo
Interrupo
teclado
1
mouse PS/2
12
barramento IDE primrio
14
barramento IDE secundrio
15
relgio de tempo real
8
porta serial COM1
4
porta serial COM2
3
porta paralela LPT1
7
Tabela 3: Interrupes geradas por alguns dispositivos.
Ao receber uma requisio de interrupo, o processador suspende seu fluxo de
instrues corrente e desvia a execuo para um endereo pr-definido, onde se encontra
uma rotina de tratamento de interrupo (interrupt handler). Essa rotina responsvel
por tratar a interrupo, ou seja, executar as aes necessrias para identificar e atender
o dispositivo que gerou a requisio. Ao final da rotina de tratamento da interrupo,
o processador retoma o cdigo que estava executando quando foi interrompido. A
Figura 6 representa os principais passos associados ao tratamento de uma interrupo
envolvendo o controlador de teclado, detalhados a seguir:
1. O processador est executando um programa qualquer;
2. O usurio pressiona uma tecla no teclado;
3. O controlador do teclado identifica a tecla pressionada, armazena seu cdigo em
um buffer interno e envia uma solicitao de interrupo (IRQ) ao processador;
4. O processador recebe a interrupo, salva na pilha seu estado atual (o contedo
de seus registradores) e desvia sua execuo para uma rotina de tratamento da
interrupo;
5. Ao executar, essa rotina acessa os registradores do controlador de teclado para
transferir o contedo de seu buffer para uma rea de memria do ncleo. Depois
disso, ela pode executar outras aes, como acordar algum processo ou thread que
esteja esperando por entradas do teclado;
12

c Carlos Maziero

: Interrupes
1: excuo
normal

4: a execuo desviada

rotina de
tratamento de
interrupo
6: retorno ao
fluxo anterior

programa
em
execuo

buer

CPU
3: o controlador gera
uma interrupo

5: dados do controlador
transferidos para a memria
registers

keyboard controller

buer

2: uma tecla pressionada

Figura 6: Roteiro tpico de um tratamento de interrupo


6. Ao concluir a execuo da rotina de tratamento da interrupo, o processador
retorna execuo do fluxo de instrues que havia sido interrompido, usando a
informao de estado salva no passo 4.
Essa sequncia de aes ocorre a cada requisio de interrupo recebida pelo
processador. Como cada interrupo corresponde a um evento ocorrido em um
dispositivo perifrico (chegada de um pacote de rede, movimento do mouse, concluso
de operao do disco, etc.), podem ocorrer centenas ou milhares de interrupes por
segundo, dependendo da carga de trabalho e da configurao do sistema (nmero e
natureza dos perifricos). Por isso, as rotinas de tratamento de interrupo devem
realizar suas tarefas rapidamente, para no prejudicar o funcionamento do restante do
sistema.
Como cada tipo de interrupo pode exigir um tipo de tratamento diferente (pois os
dispositivos so diferentes), cada requisio de interrupo deve disparar uma rotina de
tratamento especfica. A maioria das arquiteturas atuais define um vetor de endereos
de funes denominado Vetor de Interrupes (IV - Interrupt Vector); cada entrada desse
vetor aponta para a rotina de tratamento da interrupo correspondente. Por exemplo,
se a entrada 5 do vetor contm o valor 3C20h, ento a rotina de tratamento da IRQ
5 iniciar na posio 3C20h da memria RAM. Dependendo do hardware, o vetor
de interrupes pode residir em uma posio fixa da memria RAM, definida pelo
13

c Carlos Maziero

: Interrupes

fabricante do processador, ou ter sua posio indicada pelo contedo de um registrador


da CPU especfico para esse fim.
As interrupes recebidas pelo processador tm como origem eventos externos a ele,
ocorridos nos dispositivos perifricos e reportados por seus controladores. Entretanto,
eventos gerados pelo prprio processador podem ocasionar o desvio da execuo
usando o mesmo mecanismo de interrupo: so as excees. Eventos como instrues
ilegais (inexistentes ou com operandos invlidos), diviso por zero ou outros erros
de software disparam excees internas no processador, que resultam na ativao
de rotinas de tratamento de exceo registradas no vetor de interrupes. A Tabela
4 apresenta algumas excees previstas pelo processador Intel Pentium (extrada de
[Patterson and Henessy, 2005]).
Tabela 4: Algumas excees do processador Pentium.
Exceo
0
3
5
6
9
11
12
13
14
16

Descrio
divide error
breakpoint
bound range exception
invalid opcode
coprocessor segment overrun
segment not present
stack fault
general protection
page fault
floating point error

Nas arquiteturas de hardware atuais, as interrupes geradas pelos dispositivos de


entrada/sada no so transmitidas diretamente ao processador, mas a um controlador de
interrupes programvel (PIC - Programmable Interrupt Controller, ou APIC - Advanced
Programmable Interrupt Controller), que faz parte do chipset do computador. As linhas de
interrupo dos controladores de perifricos so conectadas aos pinos desse controlador
de interrupes, enquanto suas sadas so conectadas s entradas de interrupo do
processador.
O controlador de interrupes recebe as interrupes dos dispositivos e as encaminha
ao processador em sequncia, uma a uma. Ao receber uma interrupo, o processador
deve acessar a interface do PIC para identificar a origem da interrupo e depois
reconhec-la, ou seja, indicar ao PIC que aquela interrupo foi tratada e pode ser
descartada pelo controlador. Interrupes j ocorridas mas ainda no reconhecidas pelo
processador so chamadas de interrupes pendentes.
O PIC pode ser programado para bloquear ou ignorar algumas das interrupes
recebidas, impedindo que cheguem ao processador. Alm disso, ele permite definir
prioridades entre as interrupes. A Figura 7 mostra a operao bsica de um controlador
de interrupes; essa representao simplificada, pois as arquiteturas de computadores
mais recentes podem contar com vrios controladores de interrupes interligados.
14

c Carlos Maziero

: Software de entrada/sada

CPU
IRQ
registers

registers

interrupt
controller

IRQ

disk
controller

control
status
data

registers

IRQ

...

network
controller
registers

USB
controller

IRQ

registers

touchscreen
controller

IRQ

Figura 7: Uso de um controlador de interrupes.


O mecanismo de interrupo torna eficiente a interao do processador com os
dispositivos perifricos. Se no existissem interrupes, o processador perderia muito
tempo consultando todos os dispositivos do sistema para verificar se h eventos a serem
tratados. Alm disso, as interrupes permitem construir funes de entrada/sada
assncronas: o processador no precisa esperar a concluso de cada operao solicitada,
pois o dispositivo emitir uma interrupo para avisar o processador quando a
operao for concluda.

Software de entrada/sada

O sistema operacional responsvel por oferecer acesso aos dispositivos de entrada/sada s aplicaes e, em ltima instncia, aos usurios do sistema. Prover acesso
eficiente, rpido e confivel a um conjunto de perifricos com caractersticas diversas de
comportamento, velocidade de transferncia, volume de dados produzidos/consumidos
e diferentes interfaces de hardware um imenso desafio. Alm disso, como cada
dispositivo define sua prpria interface e modo de operao, o ncleo do sistema
operacional deve implementar cdigo de baixo nvel para interagir com milhares de
tipos de dispositivos distintos. Como exemplo, cerca de 60% das 12 milhes de linhas
de cdigo do ncleo Linux 2.6.31 pertencem a cdigo de drivers de dispositivos de
entrada/sada.
Para simplificar o acesso e a gerncia dos dispositivos de entrada/sada, o cdigo do
sistema operacional estruturado em camadas, que levam das portas de entrada/sada,
15

c Carlos Maziero

: Software de entrada/sada

interrupes de operaes de DMA a interfaces de acesso abstratas, como arquivos e


sockets de rede. Uma viso conceitual dessa estrutura em camadas pode ser vista na
Figura 8. Nessa figura, a camada inferior corresponde aos dispositivos perifricos propriamente ditos, como discos rgidos, teclados, etc. A camada logo acima, implementada
em hardware, corresponde ao controlador especfico de cada dispositivo (controlador
IDE, SCSI, SATA, etc.) e aos controladores de DMA e de interrupes, pertencentes ao
chipset do computador.
processos de aplicao
nvel de usurio

data
control

nvel de ncleo

Input/output API
data
control

device-independent I/O functions


data
control

IRQ

interrupt
handler

device driver

software
hardware

control
IRQ

interrupt
controller

data/control

IRQ

device
controller

DMA
controller
IRQ

data/control

I/O device

Figura 8: Estrutura em camadas do software de entrada/sada.


A primeira camada de software corresponde s rotinas de tratamento de interrupes
(interrupt handles)e aos drivers de entrada/sada. As rotinas de tratamento de interrupo
so acionadas pelo mecanismo de interrupo do processador a cada interrupo
provinda do controlador de interrupes e servem basicamente para registrar sua
ocorrncia. A execuo dessas rotinas deve ser muito breve, pois durante o tratamento
de uma interrupo o processador desabilita a ocorrncia de novas interrupes,
conforme discutido na Seo 2.5. Assim, quando uma rotina acionada, ela apenas
reconhece a interrupo ocorrida junto ao controlador, cria um descritor de evento
(event handler) contendo os dados da interrupo, o insere em uma fila de eventos
pendentes mantida pelo driver do dispositivo, notifica o driver e conclui.
16

c Carlos Maziero

: Classes de dispositivos

Os eventos da fila de eventos pendentes mantida por cada driver so tratados


posterior, quando o processador estiver livre. A separao do tratamento de interrupes
em dois nveis de urgncia levar a estruturar o cdigo de tratamento de cada interrupo
tambm em dois nveis: o bottom-half, que compreende as aes imediatas a executar
quando a interrupo ocorre, e o o top-half, que compreende o restante das aes de
tratamento da interrupo.

3.1

Classes de dispositivos

Para simplificar a construo de aplicaes (e do prprio sistema operacional), os


dispositivos de entrada/sada so agrupados em classes ...
Os dispositivos orientados a blocos so aqueles em que as operaes de entrada ou
sada de dados so feitas usando blocos de bytes e nunca bytes isolados. Discos rgidos,
fitas magnticas e outros dispositivos de armazenamento so exemplos tpicos desta
categoria.
Os dispositivos orientados a caracteres so aqueles cujas transferncias de dados
so sempre feitas byte por byte, ou usando blocos de bytes de tamanho varivel, cujo
tamanho mnimo seja um byte. Dispositivos ligados s interfaces paralelas e seriais
do computador, como mouse e teclado, so os exemplos mais clssicos deste tipo de
dispositivo. Os terminais de texto e modems de transmisso de dados por linhas seriais
(como as linhas telefnicas) tambm so vistos como dispositivos orientados a caracteres.
As interfaces de rede so colocadas em uma classe particular, pois so vistos como
dispositivos orientados a blocos (os pacotes de rede so blocos), esses blocos so
endereveis (os endereos dos destinos dos pacotes), mas a sada feita de forma
sequencial, bloco aps bloco, e normalmente no possvel resgatar ou apagar um bloco
enviado ao dispositivo.

17

c Carlos Maziero

sentido dos fluxos:


granularidade

exemplos:

acesso

exemplos:
persistncia:

exemplos:

: Classes de dispositivos

entrada
sada
caractere: os dados so envia- bloco: os dados so enviados/dos ou recebidos byte por byte recebidos em blocos de tamanho fixo
terminais, portas paralelas e discos rgidos, interfaces de
seriais, mouses, teclados
rede (pacotes), fitas magnticas
sequencial: os dados so envi- direto: a cada dado enviado
ados ou recebidos em sequn- ou recebido associado um
cia, um aps o outro
endereo (respectivamente de
destino ou de origem)
porta paralela/serial, mouse, disco rgido, interface de rede
teclado, fita magntica
persistente, se o dado envi- voltil, se o dado enviado
ado pode ser resgatado dire- consumido pelo dispositivo,
tamente (ou, em outras pala- ou se o dado recebido do disvras, se os dados lidos do dis- positivo foi produzido por
positivo foram anteriormente ele e no anteriormente depoescritos nele por aquele com- sitado nele.
putador ou algum outro)
fita magntica, disco rgido
interface de rede, porta serial/paralela

granularidade da informao: byte, bloco, stream


tipos de dispositivos: a blocos, a caracteres, de rede, blocos sequenciais? (fita,
rede)
tipos de interface: bloqueante, no bloqueante, assncrona
arquitetura de E/S do kernel
estrutura de E/S do kernel: de devices genricos a drivers especficos
interfaces, drivers, irq handlers, controllers
Drivers
arquitetura geral
a estrutura de um driver
fluxograma de execuo
top e bottom half
rotinas oferecidas aos processos
acesso via /dev
acesso ao hardware
integrao ao kernel (recompilao ou mdulos dinmicos)
18

c Carlos Maziero

3.2

: Estratgias de interao

Estratgias de interao

O sistema operacional deve interagir com cada dispositivo de entrada/sada para


realizar as operaes desejadas, atravs das portas de seu controlador. Esta seo aborda
as trs estratgias de interao mais frequentemente usadas pelo sistema operacional,
que so a entrada/sada controlada por programa, a controlada por eventos e o acesso
direto memria, detalhados a seguir.
3.2.1

Interao controlada por programa

A estratgia de entrada/sada mais simples, usada com alguns tipos de dispositivos,


a interao controlada por programa, tambm chamada varredura ou polling. Nesta
abordagem, o sistema operacional solicita uma operao ao controlador do dispositivo,
usando as portas control e data-out (ou data-in) de sua interface, e aguarda a concluso da
operao solicitada, monitorando continuamente os bits da respectiva porta de status.
Considerando as portas da interface paralela descrita na Seo 2.3, o comportamento
do processador em uma operao de sada na porta paralela usando essa abordagem
seria descrito pelo seguinte pseudo-cdigo, no qual as leituras e escritas nas portas so
representadas respectivamente pelas funes in(port) e out(port,value)3 :

19

c Carlos Maziero

1
2
3
4

// portas da
#define P0
#define P1
#define P2

: Interao controlada por programa

interface paralela LPT1 (endereo inicial em 0378h)


0x0378
# porta de dados
0x0379
# porta de status
0x037A
# porta de controle

5
6
7
8
9

// mscaras para alguns bits de controle e status


#define BUSY 0x80
# 1000 0000 (bit 7)
#define ACK 0x40
# 0100 0000 (bit 6)
#define STROBE 0x01
# 0000 0001 (bit 0)

10
11
12

// buffer de bytes a enviar


unsigned char buffer[BUFSIZE] ;

13
14
15
16
17
18
19

polling_output ()
{
for (i = 0 ; i < BUFSIZE ; i++)
{
// espera o controlador ficar livre (bit BUSY deve ser zero).
while (in (P1) & BUSY) ;

20

// escreve o byte a enviar na porta P0.


out (P0, buffer[i]) ;

21
22
23

// gera pulso de 1
// para indicar ao
out (P2, in (P2) |
usleep (1) ;
out (P2, in (P2) &

24
25
26
27
28

microssegundo no bit STROBE de P2,


controlador que h um novo dado.
STROBE) ;
! STROBE) ;

29

// espera o byte terminar de ser tratado (pulso "zero" em ACK).


while (in (P1) & ACK) ;

30
31

32
33

Em conjunto, processador e controlador executam aes coordenadas e complementares: o processador espera que o controlador esteja livre antes de enviar um novo dado;
por sua vez, o controlador espera que o processador lhe envie um novo dado para
processar. Essa interao ilustrada na Figura 9. O controlador pode ficar esperando por
novos dados, pois s precisa trabalhar quando h dados a processar, ou seja, quando o bit
strobe de sua porta P2 indicar que h um novo dado em sua porta P0 . Entretanto, manter
o processador esperando at que a operao seja concluda indesejvel, sobretudo
se a operao solicitada for demorada. Alm de constituir uma situao clssica de
desperdcio de recursos por espera ocupada, manter o processador esperando pela
resposta do controlador pode prejudicar o andamento de outras atividades importantes
do sistema, como a interao com o usurio.
O problema da espera ocupada torna a estratgia de entrada/sada por programa
pouco eficiente, sobretudo se o tempo de resposta do dispositivo for longo, sendo por
isso pouco usada em sistemas operacionais de propsito geral. Seu uso se concentra
3
Como o bit BUSY da porta P1 deve retornar ao valor zero (0) aps o pulso no bit ACK, o pseudo-cdigo
poderia ser simplificado, eliminando o lao de espera sobre ACK; contudo, esse lao foi mantido para
maior clareza didtica.

20

c Carlos Maziero

: Interao controlada por eventos

processador
espera
controlador
ficar livre

controlador

wait (!busy)
busy=0
wait (!strobe)

prepara e
envia byte
interface

data=byte

espera
novo byte

strobe=0
busy=1

espera
byte ser
recebido

wait (!ack)

recebe e
processa
novo byte
ack=0
busy=0

Figura 9: Entrada/sada controlada por programa.


sobretudo em sistemas embarcados dedicados, nos quais o processador s tem uma
atividade (ou poucas) a realizar. A estratgia bsica de varredura pode ser modificada,
substituindo o teste contnuo do status do dispositivo por um teste peridico (por
exemplo, a cada 10ms), e permitindo ao processador executar outras tarefas enquanto o
dispositivo estiver ocupado. Todavia, essa abordagem implica em uma menor taxa de
transferncia de dados para o dispositivo e, por essa razo, s usada em dispositivos
com baixa vazo de dados.
3.2.2

Interao controlada por eventos

Uma forma mais eficiente de interagir com dispositivos de entrada/sada consiste


em efetuar a requisio da operao desejada e suspender o fluxo de execuo corrente,
desviando o processador para tratar outro processo ou thread. Quando o dispositivo
tiver terminado de processar a requisio, seu controlador ir gerar uma interrupo
(IRQ) para notificar o processador, que poder ento retomar a execuo daquele fluxo
quando for conveniente. Essa estratgia de ao denominada interao controlada
por eventos ou por interrupes, pois as interrupes tm um papel fundamental em
sua implementao.
Na estratgia de entrada/sada por eventos, uma operao de entrada ou sada
dividida em dois blocos de instrues: um bloco que inicia a operao, ativado pelo
sistema operacional a pedido de um processo ou thread, e uma rotina de tratamento
de interrupo (interrupt handler), ativado a cada interrupo, para prosseguir a transferncia de dados ou para informar sobre sua concluso. Considerando novamente
a sada de um buffer de N bytes em uma interface paralela (descrita na Seo 2.3), o
pseudo-cdigo a seguir representa o lanamento da operao de E/S pelo processador e
21

c Carlos Maziero

: Interao controlada por eventos

a rotina de tratamento de interrupo (subentende-se as constantes e variveis definidas


na listagem anterior):
1
2
3
4

// lanamento da operao de sada de dados


interrupt_driven_output ()
{
i = 0 ;

// espera o controlador ficar livre (bit BUSY de P1 deve ser zero).


while (in (P1) & BUSY) ;

6
7
8

// escreve o byte a enviar na porta P0.


out (P0, buffer[i]) ;

9
10
11

// gera pulso de 1 microssegundo no bit STROBE de P2.


out (P2, in (P2) | STROBE) ;
usleep (1) ;
out (P2, in (P2) & ! STROBE) ;

12
13
14
15
16

// suspende o processo solicitante, liberando o processador.


schedule () ;

17
18
19

20
21
22
23
24
25
26
27
28
29
30
31

// rotina de tratamento de interrupes da interface paralela


interrupt_handle ()
{
i++ ;
if (i >= BUFSIZE)
// a sada terminou, acordar o processo solicitante.
awake_process () ;
else
{
// escreve o byte a enviar na porta P0.
out (P0, buffer[i]) ;

32

// gera pulso de 1 microssegundo no bit STROBE de P2.


out (P2, in (P2) | STROBE) ;
usleep (1) ;
out (P2, in (P2) & ! STROBE) ;

33
34
35
36

37
38

// informa o controlador de interrupes que a IRQ foi tratada.


acknowledge_irq () ;

39
40
41

Nesse pseudo-cdigo, percebe-se que o processador inicia a transferncia de dados


para a interface paralela e suspende o processo solicitante (chamada schedule), liberando o
processador para outras atividades. A cada interrupo, a rotina de tratamento ativada
para enviar um novo byte interface paralela, at que todos os bytes do buffer tenham
sido enviados, quando ento sinaliza ao escalonador que o processo solicitante pode
retomar sua execuo (chamada resume). Conforme visto anteriormente, o controlador
da interface paralela pode ser configurado para gerar uma interrupo atravs do flag
22

c Carlos Maziero

: Interao controlada por eventos

Enable_IRQ de sua porta de controle (porta P2 , Seo 2.3). O diagrama da Figura 10


ilustra de forma simplificada a estratgia de entrada/sada usando interrupes.
processador
espera
controlador
ficar livre

controlador

wait (!busy)
busy=0
wait (!strobe)

prepara e
envia byte
interface

data=byte
strobe=0
schedule()

tratador de
interrupo
raise IRQ
wait (!strobe)
data=byte

espera
novo
byte

recebe e
processa
byte
espera
novo
byte

strobe=0

processo
suspenso
raise IRQ
wait (!strobe)
data=byte

recebe e
processa
byte

espera
novo
byte

strobe=0

raise IRQ

recebe e
processa
byte

resume()
t

Figura 10: Entrada/sada controlada por eventos (interrupes).


Durante a execuo da rotina de tratamento de uma interrupo, usual inibir
novas interrupes, para evitar a execuo aninhada de tratadores de interrupo, o que
tornaria o cdigo dos drivers (e do ncleo) mais complexo e suscetvel a erros. Entretanto,
manter interrupes inibidas durante muito tempo pode ocasionar perdas de dados ou
outros problemas. Por exemplo, uma interface de rede gera uma interrupo quando
recebe um pacote vindo da rede; esse pacote fica em seu buffer interno e deve ser
transferido dali para a memria principal antes que outros pacotes cheguem, pois esse

23

c Carlos Maziero

: Acesso direto memria

buffer tem uma capacidade limitada. Por essa razo, o tratamento das interrupes
deve ser feito de forma muito rpida.
A maioria dos sistemas operacionais implementa o tratamento de interrupes
em dois nveis distintos: um tratador primrio (FLIH - First-Level Interrupt Handler) e
um tratador secundrio (SLIH - Second-Level Interrupt Handler). O tratador primrio,
tambm chamado hard/fast interrupt handler ou ainda top-half handler, lanado quando
a interrupo ocorre e deve executar rapidamente, pois as demais interrupes esto
inibidas. Sua atividade se restringe a aes essenciais, como reconhecer a ocorrncia
da interrupo junto ao controlador e registrar dados sobre a mesma em uma fila de
eventos pendentes, para tratamento posterior.
Por sua vez, o tratador secundrio, tambm conhecido como soft/slow interrupt
handler ou ainda bottom-half handler, tem por objetivo tratar a fila de eventos pendentes
registrados pelo tratador primrio, quando o processador estiver disponvel. Ele
pode ser escalonado e suspenso da mesma forma que um processo ou thread, embora
normalmente execute com maior prioridade. Embora mais complexa, esta estrutura
em dois nvel traz algumas vantagens: ao permitir um tratamento mais rpido de cada
interrupo, minimiza o risco de perder interrupes concomitantes; alm disso, a fila
de eventos pendentes pode ser analisada para remover eventos redundantes (como
atualizaes consecutivas de posio do mouse).
No Linux, cada interrupo possui sua prpria fila de eventos pendentes e seus
prprios top-half e bottom-half. Os tratadores secundrios so lanados pelos respectivos
tratadores primrios, sob a forma de threads de ncleo especiais (denominadas tasklets
ou workqueues) [Bovet and Cesati, 2005]. O ncleo Windows NT e seus sucessores
implementam o tratamento primrio atravs de rotinas de servio de interrupo (ISR Interrupt Service Routine). Ao final de sua execuo, cada ISR agenda o tratamento secundrio da interrupo atravs de um procedimento postergado (DPC - Deferred Procedure
Call) [Russinovich and Solomon, 2004]. O sistema Symbian usa uma abordagem similar
a esta.
Por outro lado, os sistemas Solaris, FreeBSD e MacOS X usam uma abordagem
denominada interrupt threads [Mauro and McDougall, 2006]. Cada interrupo provoca
o lanamento de uma thread de ncleo, que escalonada e compete pelo uso do
processador de acordo com sua prioridade. As interrupes tm prioridades que podem
estar acima da prioridade do escalonador ou abaixo dela. Como o prprio escalonador
tambm uma thread, interrupes de baixa prioridade podem ser interrompidas pelo
escalonador ou por outras interrupes. Por outro lado, interrupes de alta prioridade
no so interrompidas pelo escalonador, por isso devem executar rapidamente.
3.2.3

Acesso direto memria

Na maioria das vezes, o tratamento de operaes de entrada/sada uma operao


lenta, pois os dispositivos so mais lentos que o processador. Alm disso, o uso do
processador principal para intermediar essas operaes ineficiente, pois implica em
transferncias adicionais (e desnecessrias) de dados: por exemplo, para transportar
um byte de um buffer da memria para a interface paralela, esse byte precisa antes
ser carregado em um registrador do processador, para em seguida ser enviado ao

24

c Carlos Maziero

: Acesso direto memria

controlador da interface. Para resolver esse problema, a maioria dos computadores


atuais, com exceo de pequenos sistemas embarcados dedicados, oferece mecanismos
de acesso direto memria (DMA - Direct Memory Access), que permitem transferncias
diretas entre a memria principal e os controladores de entrada/sada.
O funcionamento do mecanismo de acesso direto memria em si relativamente
simples. Como exemplo, a seguinte sequncia de passos seria executada para a escrita
de dados de um buffer em memria RAM para o controlador de um disco rgido:
1. o processador acessa os registradores do canal DMA associado ao dispositivo
desejado, para informar o endereo inicial e o tamanho da rea de memria RAM
contendo os dados a serem escritos no disco. O tamanho da rea de memria deve
ser um mltiplo de 512 bytes, que o tamanho padro dos setores do disco rgido;
2. o controlador de DMA solicita ao controlador do disco a transferncia de dados
da RAM para o disco e aguarda a concluso da operao;
3. o controlador do disco recebe os dados da memria;
4. a operao anterior pode ser repetida mais de uma vez, caso a quantidade de
dados a transferir seja maior que o tamanho mximo de cada transferncia feita
pelo controlador de disco;
5. a final da transferncia de dados, o controlador de DMA notifica o processador
sobre a concluso da operao, atravs de uma interrupo (IRQ).
A dinmica dessas operaes ilustrada de forma simplificada na Figura 11. Uma
vez efetuado o passo 1, o processador fica livre para outras atividades4 , enquanto o
controlador de DMA e o controlador do disco se encarregam da transferncia de dados
propriamente dita. O cdigo a seguir representa uma implementao hipottica de
rotinas para executar uma operao de entrada/sada atravs de DMA.
4

Obviamente pode existir uma conteno (disputa) entre o processador e os controladores no acesso
aos barramentos e memria principal, mas esse problema atenuado pelo fato do processador poder
acessar o contedo das memrias cache enquanto a transferncia DMA executada. Alm disso, circuitos
de arbitragem intermedeiam o acesso memoria para evitar conflitos. Mais detalhes sobre conteno de
acesso memria durante operaes de DMA podem ser obtidos em [Patterson and Henessy, 2005].

25

c Carlos Maziero

: Acesso direto memria

processador

memria RAM

5: interrupt request

barramento
1: DMA request

2: transfer request

3: data transfer

controlador
de disco rgido

controlador
de DMA

hardware do dispositivo

Figura 11: Funcionamento do acesso direto memria.


1
2
3
4
5
6

// requisio da operao de sada atravs de DMA


dma_driven_output ()
{
// solicita uma operao DMA, informando os dados da transferncia
// atravs da estrutura "dma_data".
request_dma (dma_data) ;

// suspende o processo solicitante, liberando o processador.


schedule () ;

8
9
10

11
12
13
14
15
16

// rotina de tratamento da interrupo do controlador de DMA


interrupt_handle ()
{
// informa o controlador de interrupes que a IRQ foi tratada.
acknowledge_irq () ;

17

// sada terminou, acordar o processo solicitante.


resume (...) ;

18
19
20

A implementao dos mecanismos de DMA depende da arquitetura e do barramento


considerado. Computadores mais antigos dispunham de um controlador de DMA
central, que oferecia vrios canais de DMA distintos, permitindo a realizao de
transferncias de dados por DMA simultneas. J os computadores pessoais usando

26

c Carlos Maziero

: Discos rgidos

barramento PCI no possuem um controlador DMA central; ao invs disso, cada


controlador de dispositivo conectado ao barramento pode assumir o controle do mesmo
para efetuar transferncias de dados de/para a memria sem depender do processador
principal [Corbet et al., 2005], gerenciando assim seu prprio canal DMA.
No exemplo anterior, a ativao do mecanismo de DMA dita sncrona, pois
feita explicitamente pelo processador, provavelmente em decorrncia de uma chamada
de sistema. Contudo, a ativao tambm pode ser assncrona, quando ativada por
um dispositivo de entrada/sada que dispe de dados a serem transferidos para a
memria, como ocorre com uma interface de rede ao receber dados provindos de outro
computador atravs da rede.
O mecanismo de DMA utilizado para transferir grandes blocos de dados diretamente entre a memria RAM e as portas dos dispositivos de entrada/sada, liberando o
processador para outras atividades. Todavia, como a configurao de cada operao
de DMA complexa, para pequenas transferncias de dados acaba sendo mais rpido
e simples usar o processador principal [Bovet and Cesati, 2005]. Por essa razo, o
mecanismo de DMA usado preponderantemente nas operaes de entrada/sada
envolvendo dispositivos que produzem ou consomem grandes volumes de dados, como
interfaces de rede, entradas e sadas de udio, interfaces grficas e discos.
Nas prximas sees sero discutidos alguns aspectos relevantes dos dispositivos
de entrada/sada mais usados e da forma como estes so acessados e gerenciados
nos sistemas de computao pessoal. Sempre que possvel, buscar-se- adotar uma
abordagem independente de sistema operacional, concentrando a ateno sobre os
aspectos comuns que devem ser considerados por todos os sistemas.

Discos rgidos

Discos rgidos esto presentes na grande maioria dos computadores pessoais e


servidores. Um disco rgido permite o armazenamento persistente (no-voltil) de
grandes volumes de dados com baixo custo e tempos de acesso razoveis. Alm disso,
a leitura e escrita de dados em um disco rgido mais simples e flexvel que em outros
meios, como fitas magnticas ou discos ticos (CDs, DVDs). Por essas razes, eles so
intensivamente utilizados em computadores para o armazenamento de arquivos do
sistema operacional, das aplicaes e dos dados dos usurios. Os discos rgidos tambm
so frequentemente usados como rea de armazenamento de pginas em sistemas de
memria virtual (Seo ??).
Esta seo inicialmente discute alguns aspectos de hardware relacionados aos discos
rgidos, como sua estrutura fsica e os principais padres de interface entre o disco e sua
controladora no computador. Em seguida, apresenta aspectos de software que esto
sob a responsabilidade direta do sistema operacional, como o caching de blocos e o
escalonamento de operaes de leitura/escrita no disco. Por fim, apresenta as tcnicas
RAID para a composio de discos rgidos, que visam melhorar seu desempenho e/ou
confiabilidade.

27

c Carlos Maziero

4.1

: Estrutura fsica

Estrutura fsica

Um disco rgido composto por um ou mais discos metlicos que giram juntos
em alta velocidade (entre 4.200 e 15.000 RPM), acionados por um motor eltrico. Para
cada face de cada disco h uma cabea de leitura, responsvel por ler e escrever dados
atravs da magnetizao de pequenas reas da superfcie metlica. Cada face dividida
logicamente em trilhas e setores; a interseo de uma trilha e um setor em uma face
define um bloco fsico, que a unidade bsica de armazenamento e transferncia de
dados no disco. Os discos rgidos atuais (at 2010) usam blocos de 512 bytes, mas
o padro da industria est migrando para blocos fsicos de 4.096 bytes. A Figura
12 apresenta os principais elementos que compem a estrutura de um disco rgido.
Um disco tpico comporta milhares de trilhas e centenas de setores por face de disco
[Patterson and Henessy, 2005].

setores

trilhas
blocos

faces

cabeas
Figura 12: Elementos da estrutura de um disco rgido.
Por serem dispositivos eletromecnicos, os discos rgidos so extremamente lentos,
se comparados velocidade da memria ou do processador. Para cada bloco a ser
lido/escrito, a cabea de leitura deve se posicionar na trilha desejada e aguardar o disco
girar at encontrar o setor desejado. Esses dois passos definem o tempo de busca (ts
seek time), que o tempo necessrio para a cabea de leitura se posicionar sobre uma
determinada trilha, e a latncia rotacional (tr rotation latency), que o tempo necessrio
para o disco girar at que o setor desejado esteja sob a cabea de leitura. Valores mdios
tpicos desses atrasos para discos de uso domstico so ts 10ms e tr 5ms. Juntos,
esses dois atrasos podem ter um forte impacto no desempenho do acesso a disco.

4.2

Interface de hardware

Conforme estudado anteriormente (Sees ?? e 2), o acesso do processador ao discos


feito atravs de uma controladora em hardware, ligada ao barramento do computador.
Por sua vez, o disco ligado controladora de disco atravs de um barramento de
interconexo, que pode usar diversas tecnologias. As mais comuns esto descritas a
seguir:
28

c Carlos Maziero

: Escalonamento de acessos

IDE: Integrated Drive Electronics, padro tambm conhecido como PATA (Parallell
ATA - Advanced Technology Attachment); surgiu nos anos 1980 e durante muito
tempo foi o padro de interface de discos mais usado em computadores pessoais.
Suporta velocidades de at 133 MB/s, atravs de cabos paralelos de 40 ou 80
vias. Cada barramento IDE suporta at dois dispositivos, em uma configurao
mestre/escravo.
SATA: Serial ATA, o padro de interface de discos em desktops e notebooks atuais.
A transmisso dos dados entre o disco e a controladora serial, atingindo taxas
entre 150 MB/s e 300 MB/s atravs de cabos com 7 vias.
SCSI: Small Computer System Interface, padro de interface desenvolvida nos anos
1980, foi muito usada em servidores e estaes de trabalho de alto desempenho.
Um barramento SCSI suporta at 16 dispositivos e atinge taxas de transferncia de
at 640 MB/s (divididos entre os dispositivos conectados no mesmo barramento).
SAS: Serial Attached SCSI, uma evoluo do padro SCSI, permitindo atingir taxas
de transferncia de at 600 MB/s em cada dispositivo conectado controladora.
usado em equipamentos de alto desempenho.
importante observar que esses padres de interface no so de uso exclusivo em
discos rgidos, muito pelo contrrio. H vrios tipos de dispositivos que se conectam
ao computador atravs dessas interfaces, como discos de estado slido (SSD), leitores
ticos (CD, DVD), unidades de fita magntica, scanners, etc.

4.3

Escalonamento de acessos

Em um sistema multi-tarefas, vrias aplicaes e processos do sistema podem


solicitar acessos concorrentes ao disco, para escrita e leitura de dados. Por sua estrutura
fsica, um disco rgido s pode atender a uma requisio de acesso por vez, o que
torna necessrio criar uma fila de acessos pendentes. Cada nova requisio de acesso
ao disco colocada nessa fila e o processo solicitante suspenso at seu pedido ser
atendido. Sempre que o disco concluir um acesso, ele informa o sistema operacional,
que deve buscar nessa fila a prxima requisio de acesso a ser atendida. A ordem de
atendimento das requisies pendentes denominada escalonamento de disco e pode
ter um grande impacto no desempenho do sistema operacional.
Na sequncia do texto sero apresentados alguns algoritmos de escalonamento
de disco clssicos. Para exemplificar seu funcionamento, ser considerado um disco
hipottico com 1.024 blocos, cuja cabea de leitura se encontra inicialmente sobre o bloco
500. A fila de pedidos de acesso pendentes contm pedidos de acesso aos seguintes
blocos do disco, em sequncia: {278, 914, 71, 447, 161, 659, 335, 524}. Para simplificar,
considera-se que nenhum novo pedido de acesso chegar fila durante a execuo dos
algoritmos.
FCFS (First Come, First Served): esta abordagem consiste em atender as requisies
de acesso na ordem em que elas foram pedidas pelos processos. a estratgia
mais simples de implementar, mas raramente oferece um bom desempenho. Se os
29

c Carlos Maziero

: Escalonamento de acessos

pedidos de acesso estiverem espalhados ao longo do disco, este ir perder muito


tempo movendo a cabea de leitura de um lado para o outro. A Figura 13 mostra
os deslocamentos da cabea de leitura para atender os pedidos de acesso da fila de
exemplo. Pode-se perceber que a cabea de leitura teve de percorrer 3374 blocos
do disco para atender todos pedidos da fila.

524

189

335
324

659
498

161

286

447

Percurso total = 3374 blocos

376

71

843

914
636

278

bloco

222

500
200

400

600

800

Figura 13: Escalonamento de disco FCFS.


SSTF (Shortest Seek Time First Menor Tempo de Busca Primeiro): esta estratgia de
escalonamento de disco consiste em sempre atender o pedido que est mais
prximo da posio atual da cabea de leitura (que geralmente a posio do
pedido que acabou de ser atendido). Dessa forma, ela busca reduzir os movimentos
da cabea de leitura, e com isso o tempo perdido entre os acessos atendidos. A
estratgia SSTF est ilustrada na fura 14. Pode-se observar uma forte reduo
da movimentao da cabea de leitura em relao estratgia FCFS, que passou
de 3374 para 1320 blocos percorridos. Contudo, essa estratgia no garante um
percurso mnimo. Por exemplo, o percurso 500 524 659 914 447
335 278 161 71 percorreria apenas 1257 blocos.
Apesar de oferecer um bom desempenho, esta estratgia pode levar inanio
(starvation) de requisies de acesso: caso existam muitas requisies em uma
determinada regio do disco, pedidos de acesso a blocos longe dessa regio podem
ficar muito tempo esperando. Para resolver esse problema, torna-se necessrio
implementar uma estratgia de envelhecimento dos pedidos pendentes.
30

c Carlos Maziero

: Escalonamento de acessos

255

914

659
588

Percurso total = 1320 blocos


71

90
117

161

57

278

335

200

112

bloco

77

447

524
500

24

400

600

800

Figura 14: Escalonamento de disco SSTF.


Elevador : este algoritmo reproduz o comportamento dos elevadores em edifcios: a
cabea de leitura se move em uma direo e atende os pedidos que encontra pela
frente; aps o ltimo pedido, ela inverte seu sentido de movimento e atende os
prximos pedidos. Esse movimento tambm anlogo ao dos limpadores de parabrisas de um automvel. A Figura 15 apresenta o comportamento deste algoritmo
para a sequncia de requisies de exemplo, considerando que a cabea de leitura
estava inicialmente se movendo para o comeo do disco. Pode-se observar que o
desempenho deste algoritmo foi melhor que os algoritmos anteriores, mas isso
no ocorre sempre. A grande vantagem do algoritmo do elevador atender os
pedidos de forma mais uniforme ao longo do disco, eliminando a possibilidade
de inanio de pedidos e mantendo um bom desempenho. Ele adequado para
sistemas com muitos pedidos concorrentes de acesso a disco em paralelo, como
servidores de arquivos. Este algoritmo tambm conhecido la literatura como
SCAN ou LOOK [Silberschatz et al., 2001].

255
135

914

659

524
453

71
90

161

117

278

Percurso total = 1272 blocos

57

335

112

200

bloco

53

447

500

400

600

800

Figura 15: Escalonamento de disco com o algoritmo do elevador.


Elevador Circular : esta uma variante do algoritmo do elevador, na qual a cabea
de leitura varre o disco em uma direo, atendendo os pedidos que encontrar.
Ao atender o ltimo pedido em um extremo do disco, ela retorna diretamente
ao primeiro pedido no outro extremo, sem atender os pedidos intermedirios, e
recomea. O nome circular devido ao disco ser visto como uma lista circular
de blocos. A Figura 16 apresenta um exemplo deste algoritmo. Apesar de seu
31

c Carlos Maziero

: Escalonamento de acessos

desempenho ser pior que o do algoritmo do elevador clssico, sua maior vantagem
prover um tempo de espera mais homogneo aos pedidos pendentes, o que
importante em servidores. Este algoritmo tambm conhecido como C-SCAN ou
C-LOOK.

524

135

659

255

914

843

Percurso total = 1662 blocos


71
90

161

117

278

57

335

112

200

bloco

53

447

500

400

600

800

Figura 16: Escalonamento de disco com o algoritmo do elevador circular.


Sistemas reais mais complexos, como Solaris, Windows e Linux, utilizam escalonadores de disco geralmente mais sofisticados. No caso do Linux, os seguintes escalonadores
de disco esto presentes no ncleo, podendo ser selecionados pelo administrador do
sistema [Love, 2004, Bovet and Cesati, 2005]:
Noop (No-Operation): o escalonador mais simples, baseado em FCFS, que no reordena
os pedidos de acesso, apenas agrupa os pedidos direcionados ao mesmo bloco
ou a blocos adjacentes. Este escalonador voltado para discos de estado slido
(baseados em memria flash) ou sistemas de armazenamento que faam seu prprio
escalonamento, como sistemas RAID (vide Seo 4.5).
Deadline : este escalonador baseado no algoritmo do elevador circular, mas associa
um prazo (deadline) a cada requisio, para evitar problemas de inanio. Como os
pedidos de leitura implicam no bloqueio dos processos solicitantes, eles recebem
um prazo de 500 ms; pedidos de escrita podem ser executados de forma assncrona,
por isso recebem um prazo maior, de 5 segundos. O escalonador processa os
pedidos usando o algoritmo do elevador, mas prioriza os pedidos cujo prazo esteja
esgotando.
Anticipatory : este algoritmo baseado no anterior (deadline), mas busca se antecipar s
operaes de leitura de dados feitas pelos processos. Como as operaes de leitura
so geralmente feitas de forma sequencial (em blocos contguos ou prximos), a
cada operao de leitura realizada o escalonador aguarda um certo tempo (por
default 6 ms) por um novo pedido de leitura naquela mesma regio do disco,
que imediatamente atendido. Caso no surja nenhum pedido, o escalonador
volta a tratar a fila de pedidos pendentes normalmente. Essa espera por pedidos
adjacentes melhora o desempenho das operaes de leitura.
32

c Carlos Maziero

: Caching de blocos

CFQ (Completely Fair Queuing): os pedidos dos processos so divididos em vrias filas
(64 filas por default); cada fila recebe uma fatia de tempo para acesso ao disco,
que varia de acordo com a prioridade de entrada/sada dos processos contidos na
mesma. Este o escalonador default do Linux na maioria das distribuies atuais.

4.4

Caching de blocos

Como o disco rgido pode apresentar latncias elevadas, a funcionalidade de caching


muito importante para o bom desempenho dos acessos ao disco. possvel fazer
caching de leitura e de escrita. No caching de leitura (read caching), blocos de dados lidos
do disco so mantidos em memria, para acelerar leituras posteriores dos mesmos. No
caching de escrita (write caching, tambm chamado buffering), dados a escrever no disco
so mantidos em memria para leituras posteriores, ou para concentrar vrias escritas
pequenas em poucas escritas maiores (e mais eficientes). Quatro estratgias de caching
so usuais:
Read-behind: esta a poltica mais simples, na qual somente os dados j lidos em
requisies anteriores so mantidos em cache; outros acessos aos mesmos dados
sero beneficiados pelo cache;
Read-ahead: nesta poltica, ao atender uma requisio de leitura, so trazidos para
o cache mais dados que os solicitados pela requisio; alm disso, leituras de
dados ainda no solicitados podem ser agendadas em momentos de ociosidade
dos discos. Dessa forma, futuras requisies podem ser beneficiadas pela leitura
antecipada dos dados. Essa poltica pode melhorar muito o desempenho de acesso
sequencial a arquivos;
Write-through: nesta poltica, ao atender uma requisio de escrita, uma cpia dos
dados a escrever no disco mantida em cache, para beneficiar possveis leituras
futuras desses dados;
Write-back: nesta poltica, alm de copiar os dados em cache, sua escrita efetiva no
disco adiada; esta estratgia melhora o desempenho de escrita de duas formas:
por liberar mais cedo os processos que solicitam escritas (eles no precisam esperar
pela escrita real no disco) e por concentrar as operaes de escrita, gerando menos
acessos a disco. Todavia, pode ocasionar perda de dados, caso ocorram erros de
hardware ou falta de energia antes que os dados sejam efetivamente escritos no
disco.

4.5

Sistemas RAID

Apesar dos avanos dos sistemas de armazenamento em estado slido (como os


dispositivos baseados em memrias flash), os discos rgidos continuam a ser o principal
meio de armazenamento no-voltil de grandes volumes de dados. Os discos atuais tm
capacidades de armazenamento impressionantes: encontram-se facilmente no mercado
discos rgidos com capacidade da ordem de terabytes para computadores domsticos.
33

c Carlos Maziero

: Sistemas RAID
read-behind
t1

read-ahead
t2

cache

t2

cache

cache

cache

t1

dispositivo

dispositivo

write-through
t1

write-back
t1

t2

cache

cache

cache

cache
t2

dispositivo

dispositivo

Figura 17: Estratgias de caching de blocos (t1 e t2 indicam dois instantes de tempo).
Entretanto, o desempenho dos discos rgidos evolui a uma velocidade muito menor
que que a observada nos demais componentes dos computadores, como processadores,
memrias e barramentos. Com isso, o acesso aos discos constitui um dos maiores
gargalos de desempenhos nos sistemas de computao. Boa parte do baixo desempenho
no acesso aos discos devida aos aspectos mecnicos do disco, como a latncia
rotacional e o tempo de posicionamento da cabea de leitura do disco (vide Seo 4.3)
[Chen et al., 1994].
Outro problema relevante associado aos discos rgidos diz respeito sua confiabilidade. Os componentes internos do disco podem falhar, levando perda de dados. Essas
falhas podem estar localizadas no meio magntico, ficando restritas a alguns setores, ou
podem estar nos componentes mecnicos/eletrnicos do disco, levando corrupo ou
mesmo perda total dos dados armazenados.
Buscando solues eficientes para os problemas de desempenho e confiabilidade dos
discos rgidos, pesquisadores da Universidade de Berkeley, na Califrnia, propuseram
em 1988 a construo de discos virtuais compostos por conjuntos de discos fsicos, que
eles denominaram RAID Redundant Array of Inexpensive Disks5 [Patterson et al., 1988],
que em portugus pode ser traduzido como Conjunto Redundante de Discos Econmicos.
5

Mais recentemente alguns autores adotaram a expresso Redundant Array of Independent Disks para a
sigla RAID, buscando evitar a subjetividade da palavra Inexpensive (econmico).

34

c Carlos Maziero

: Sistemas RAID

Um sistema RAID constitudo de dois ou mais discos rgidos que so vistos


pelo sistema operacional e pelas aplicaes como um nico disco lgico, ou seja, um
grande espao contguo de armazenamento de dados. O objetivo central de um sistema
RAID proporcionar mais desempenho nas operaes de transferncia de dados,
atravs do paralelismo no acesso aos vrios discos, e tambm mais confiabilidade no
armazenamento, usando mecanismos de redundncia dos dados armazenados nos
discos, como cpias de dados ou cdigos corretores de erros.
Um sistema RAID pode ser construdo por hardware, usando uma placa controladora dedicada a esse fim, qual esto conectados os discos rgidos. Essa placa
controladora oferece a viso de um disco lgico nico ao restante do computador.
Tambm pode ser usada uma abordagem por software, na qual so usados drivers
apropriados dentro do sistema operacional para combinar os discos rgidos conectados
ao computador em um nico disco lgico. Obviamente, a soluo por software mais
flexvel e econmica, por no exigir uma placa controladora dedicada, enquanto a
soluo por hardware mais robusta e tem um desempenho melhor. importante
observar que os sistemas RAID operam abaixo dos sistemas de arquivos, ou seja, eles se
preocupam apenas com o armazenamento e recuperao de blocos de dados.
H vrias formas de se organizar um conjunto de discos rgidos em RAID, cada uma
com suas prprias caractersticas de desempenho e confiabilidade. Essas formas de
organizao so usualmente chamadas Nveis RAID. Os nveis RAID padronizados pela
Storage Networking Industry Association so [SNIA, 2009]:
RAID 0 (stripping) : neste nvel os discos fsicos so divididos em reas de tamanhos
fixo chamadas fatias ou faixas (stripes). Cada fatia de disco fsico armazena um
ou mais blocos do disco lgico. As fatias so preenchidas com os blocos usando
uma estratgia round-robin, como mostra a Figura 18. O disco lgico ter como
tamanho a soma dos tamanhos dos discos fsicos.
Esta abordagem oferece um grande ganho de desempenho em operaes de leitura
e escrita: usando N discos fsicos, at N operaes podem ser efetuadas em paralelo.
Entretanto, no h nenhuma estratgia de redundncia de dados, o que torna
este nvel mais suscetvel a erros de disco: caso um disco falhe, todos os blocos
armazenados nele sero perdidos. Como a probabilidade de falhas aumenta com
o nmero de discos, esta abordagem acaba por reduzir a confiabilidade do sistema
de discos.
Suas caractersticas de grande volume de dados e alto desempenho em leitura/escrita tornam esta abordagem adequada para ambientes que geram e precisam
processar grandes volumes de dados temporrios, como os sistemas de computao
cientfica [Chen et al., 1994].
RAID 0 (linear) : Alguns sistemas RAID no dividem os discos fsicos em fatias, mas
apenas concatenam os espaos dos vrios discos em sequncia para construir o
disco lgico. Essa abordagem, ilustrada na Figura 19, denominada por alguns
autores de RAID 0 linear, enquanto outros a denominam JBoD (Just a Bunch of Disks
apenas um punhado de discos). Como os blocos do disco lgico esto menos
uniformemente espalhados sobre os discos fsicos, os acessos se concentram em
um disco a cada instante, levando a um menor desempenho em leituras e escritas.
35

c Carlos Maziero

bloco 0

: Sistemas RAID

bloco 1

bloco 2

bloco 3

bloco 4

bloco 5

bloco 6

bloco 7

bloco 8

bloco 9

bloco 10

bloco 11

bloco 12

bloco 13

bloco 14

bloco 15

bloco 16

bloco 17

Controladora RAID

faixa

bloco 0

bloco 1

bloco 4

bloco 5

bloco 8

bloco 9

bloco 2

bloco 3

bloco 6

bloco 7

bloco 10

bloco 11

bloco 18

bloco 19

bloco 20

bloco 21

bloco 12

bloco 13

bloco 16

bloco 17

bloco 20

bloco 21

bloco 22

bloco 23

bloco 14

bloco 15

bloco 18

bloco 19

bloco 22

bloco 23

disco lgico

disco fsico 0 (dados)

disco fsico 1 (dados)

disco fsico 2 (dados)

Figura 18: RAID nvel 0 (striping).

bloco 0

bloco 1

bloco 2

bloco 3

bloco 4

bloco 5

bloco 6

bloco 7

bloco 8

bloco 9

bloco 10

bloco 11

bloco 12

bloco 13

Controladora RAID

bloco 14

bloco 15

bloco 0

bloco 1

bloco 10

bloco 11

bloco 20

bloco 21

bloco 16

bloco 17

bloco 2

bloco 3

bloco 12

bloco 13

bloco 22

bloco 23

bloco 18

bloco 19

bloco 4

bloco 5

bloco 14

bloco 15

bloco 20

bloco 21

bloco 6

bloco 7

bloco 16

bloco 17

bloco 22

bloco 23

bloco 8

bloco 9

bloco 18

bloco 19

disco lgico

disco fsico 0 (dados)

disco fsico 1 (dados)

disco fsico 2 (dados)

Figura 19: RAID nvel 0 (linear).


RAID 1 : neste nvel, cada disco fsico possui um espelho, ou seja, outro disco com a
cpia de seu contedo, sendo por isso comumente chamado de espelhamento de
discos. A Figura 20 mostra uma configurao simples deste nvel, com dois discos
fsicos. Caso hajam mais de dois discos, devem ser incorporadas tcnicas de RAID
0 para organizar a distribuio dos dados sobre eles (o que leva a configuraes
denominadas RAID 0+1, RAID 1+0 ou RAID 1E).
Esta abordagem oferece uma excelente confiabilidade, pois cada bloco lgico est
escrito em dois discos distintos; caso um deles falhe, o outro continua acessvel. O
desempenho em leituras tambm beneficiado, pois a controladora pode distribuir
as leituras entre as cpias. Contudo, no h ganho de desempenho em escrita,
pois cada operao de escrita deve ser replicada em todos os discos. Alm disso,
seu custo de implantao elevado, pois so necessrios dois discos fsicos para
cada disco lgico.
RAID 2 : este nvel fatia os dados em bits individuais que so escritos nos discos fsicos
em sequncia; discos adicionais so usados para armazenar cdigos corretores de

36

c Carlos Maziero

bloco 0

: Sistemas RAID

bloco 1

bloco 2

bloco 3

bloco 4

bloco 5

bloco 6

bloco 7

bloco 8

bloco 9

Controladora RAID

disco lgico
bloco 0

bloco 1

bloco 0

bloco 1

bloco 2

bloco 3

bloco 2

bloco 3

bloco 4

bloco 5

bloco 4

bloco 5

bloco 6

bloco 7

bloco 6

bloco 7

bloco 8

bloco 9

bloco 8

bloco 9

disco fsico 0 (dados)

disco fsico 1 (dados)

Figura 20: RAID nvel 1 (mirroring).


erros (Hamming Codes), em um arranjo similar ao usado nas memrias RAM. Este
nvel no usado na prtica.
RAID 3 : este nvel fatia os dados em bytes, que so escritos nos discos em sequncia.
Um disco separado contm dados de paridade, usados para a recuperao de erros.
A cada leitura ou escrita, os dados do disco de paridade devem ser atualizados, o
que implica na serializao dos acessos e a consequente queda de desempenho.
Por esta razo, esta abordagem raramente usada.

bloco 0

bloco 1

bloco 2

bloco 3

bloco 4

bloco 5

bloco 6

bloco 7

bloco 8

bloco 9

bloco 10

bloco 11

bloco 12

bloco 13

bloco 14

bloco 15

bloco 16

bloco 17

bloco 18

bloco 19

bloco 20

bloco 21

bloco 22

bloco 23

disco lgico

Controladora RAID

byte 0

byte 3

byte 1

byte 4

byte 2

byte 5

par 0-2

par 3-5

byte 6

byte 9

byte 7

byte 10

byte 8

byte 11

par 6-8

par 9-11

byte 12

byte 15

byte 13

byte 16

byte 14

byte 17

par 12-14 par 15-17

byte 18

byte 21

byte 19

byte 22

byte 20

byte 23

par 18-20 par 21-23

byte 24

byte 27

byte 25

byte 28

byte 26

byte 29

par 24-26 par 27-29

disco fsico 0 (dados)

disco fsico 1 (dados)

disco fsico 2 (dados)

disco fsico 3 (paridade)

Figura 21: RAID nvel 3.


RAID 4 : esta abordagem similar ao RAID 3, com a diferena de que o fatiamento
feito por blocos ao invs de bytes (Figura 22). Ela sofre dos mesmos problemas de
desempenho que o RAID 3, sendo por isso pouco usada. Todavia, ela serve como
base conceitual para o RAID 5.
RAID 5 : assim como a anterior, esta abordagem tambm armazena informaes de
paridade para tolerar falhas em discos. Todavia, essas informaes no ficam
concentradas em um nico disco fsico, mas so distribudas uniformemente entre
37

c Carlos Maziero

bloco 0

: Sistemas RAID

bloco 1

bloco 2

bloco 3

bloco 4

bloco 5

bloco 6

bloco 7

bloco 8

bloco 9

bloco 10

bloco 11

bloco 12

bloco 13

bloco 14

bloco 15

bloco 16

bloco 17

bloco 18

bloco 19

bloco 20

bloco 21

bloco 22

bloco 23

Controladora RAID

disco lgico

bloco 0

bloco 3

bloco 1

bloco 4

bloco 2

bloco 5

par 0-2

par 3-5

bloco 6

bloco 9

bloco 7

bloco 10

bloco 8

bloco 11

par 6-8

par 9-11

bloco 12

bloco 15

bloco 13

bloco 16

bloco 14

bloco 17

par 12-14 par 15-17

bloco 18

bloco 21

bloco 19

bloco 22

bloco 20

bloco 23

par 18-20 par 21-23

disco fsico 0 (dados)

disco fsico 1 (dados)

disco fsico 2 (dados)

disco fsico 3 (paridade)

Figura 22: RAID nvel 4.


todos eles. A Figura 23 ilustra uma possibilidade de distribuio das informaes
de paridade. Essa estratgia elimina o gargalo de desempenho no acesso aos
dados de paridade. Esta sem dvida a abordagem de RAID mais popular, por
oferecer um bom desempenho e redundncia de dados com um custo menor que
o espelhamento (RAID 1).

bloco 0

bloco 1

bloco 2

bloco 3

bloco 4

bloco 5

bloco 6

bloco 7

bloco 8

bloco 9

bloco 10

bloco 11

bloco 12

bloco 13

bloco 14

bloco 15

bloco 16

bloco 17

Controladora RAID

faixa

bloco 0

bloco 1

bloco 4

bloco 5

bloco 8

bloco 9

par (0,4,8)

par (1,5,9)

bloco 2

bloco 3

bloco 6

bloco 7

bloco 10

bloco 11

par (2,6,10)

par (3,7,11)

bloco 18

bloco 19

bloco 20

bloco 21

bloco 12

bloco 13

bloco 16

bloco 17

par (12,16,20) par (13,17,21)

bloco 20

bloco 21

bloco 22

bloco 23

bloco 14

bloco 15

bloco 18

bloco 19

par (14,18,22) par (15,19,23)

bloco 22

bloco 23

bloco 24

bloco 25

bloco 26

bloco 27

bloco 24

bloco 25

par (24,28,32) par (25,29,33)

bloco 28

bloco 29

bloco 32

bloco 33

bloco 28

bloco 29

bloco 26

bloco 27

par (26,30,34) par (27,31,35)

bloco 30

bloco 31

bloco 34

bloco 35

bloco 30

bloco 31

bloco 32

bloco 33

...

disco lgico

par (36,40,44) par (37,41,45)

bloco 36

bloco 37

bloco 40

bloco 41

bloco 44

bloco 45

par (38,42,46) par (39,43,47)

bloco 38

bloco 39

bloco 42

bloco 43

bloco 46

bloco 47

disco fsico 0

disco fsico 1

disco fsico 2

disco fsico 3

Figura 23: RAID nvel 5.


RAID 6 : uma extenso do nvel RAID 5 que utiliza blocos com cdigos corretores de
erros de Reed-Solomon, alm dos blocos de paridade. Esta redundncia adicional
permite tolerar falhas simultneas de at dois discos.
Alm dos nveis padronizados, no mercado podem ser encontrados produtos oferecendo outros nveis RAID, como 1+0, 0+1, 50, 100, etc., que muitas vezes implementam
combinaes dos nveis bsicos ou solues proprietrias. Outra observao importante
38

c Carlos Maziero

: Interfaces de rede

que os vrios nveis de RAID no tm necessariamente uma relao hierrquica entre si,
ou seja, um sistema RAID 3 no necessariamente melhor que um sistema RAID 2. Uma
descrio mais aprofundada dos vrios nveis RAID, de suas variantes e caractersticas
pode ser encontrada em [Chen et al., 1994] e [SNIA, 2009].

Interfaces de rede
network I/O (modelo em camadas)

Dispositivos USB

Interfaces de udio
captulo separado sobre E/S de multimdia (udio e vdeo, codecs)?

Interface grfica

Mouse e teclado
falar de terminal e e/s serial?

10

Outros tpicos

como deve ser tratada a gerncia de energia?


tratar relgio em separado?
ioctl
sistemas de arquivos /dev, /proc e /sys
major/minor numbers
gesto de mdulos: insmod, lsmod, modprobe
acesso a barramentos: lsusb, lspci, ...

Referncias
[Bovet and Cesati, 2005] Bovet, D. and Cesati, M. (2005). Understanding the Linux Kernel,
3rd edition. OReilly Media, Inc.

39

c Carlos Maziero

: REFERNCIAS

[Chen et al., 1994] Chen, P. M., Lee, E. K., Gibson, G. A., Katz, R. H., and Patterson,
D. A. (1994). RAID: high-performance, reliable secondary storage. ACM Computing
Surveys, 26:145185.
[Corbet et al., 2005] Corbet, J., Rubini, A., and Kroah-Hartman, G. (2005). Linux Device
Drivers, 3rd Edition. OReilly Media, Inc.
[Love, 2004] Love, R. (2004). Linux Kernel Development. Sams Publishing Developers
Library.
[Mauro and McDougall, 2006] Mauro, J. and McDougall, R. (2006). Solaris Internals:
Solaris 10 and OpenSolaris Kernel Architecture. Prentice-Hall PTR.
[Patterson and Henessy, 2005] Patterson, D. and Henessy, J. (2005). Organizao e Projeto
de Computadores. Campus.
[Patterson et al., 1988] Patterson, D. A., Gibson, G., and Katz, R. H. (1988). A case
for redundant arrays of inexpensive disks (RAID). In ACM SIGMOD International
Conference on Management of Data, pages 109116. ACM.
[Russinovich and Solomon, 2004] Russinovich, M. and Solomon, D. (2004). Microsoft
Windows Internals, Fourth Edition: Microsoft Windows Server 2003, Windows XP, and
Windows 2000. Microsoft Press.
[Silberschatz et al., 2001] Silberschatz, A., Galvin, P., and Gagne, G. (2001). Sistemas
Operacionais Conceitos e Aplicaes. Campus.
[SNIA, 2009] SNIA (2009). Common RAID Disk Data Format Specification. SNIA Storage
Networking Industry Association. Version 2.0 Revision 19.

40

Potrebbero piacerti anche