Entrada e saida cap 05 (iii unidade)

42
Sistemas operacionais modernos Terceira edição ANDREW S. TANENBAUM Capítulo 5 Entrada/Saída 1 Prof. Rodrigo Ronner

Transcript of Entrada e saida cap 05 (iii unidade)

Page 1: Entrada e saida  cap 05 (iii unidade)

Sistemas operacionais

modernos

Terceira edição

ANDREW S. TANENBAUM

Capítulo 5

Entrada/Saída

1

Prof. Rodrigo Ronner

Page 2: Entrada e saida  cap 05 (iii unidade)

Visão Geral Principais objetivos:

• Estabelecer uma interface que seja a mais simples possível para que as aplicações possam controlar as distintas características dos dispositivos de entrada/saída.

• otimizar a entrada/saída para obtenção de um maior paralelismo, tendo em vista que tais dispositivos são em geral componentes críticos para o desempenho.

Enfim,

Controlar todos os dispositivos de entrada/saída (E/S) do computador, emitindo comandos para os dispositivos, atendendo interrupções e manipulando erros.

Page 3: Entrada e saida  cap 05 (iii unidade)

Visão Geral

• Estruturação em camadas de HW e SW, a fim de prover uma interface simples e confiável para o usuário e suas aplicações.

• Desta forma, as camadas inferiores escondem das superiores os diversos detalhes (características) de cada periférico e suas diferenças (velocidade de operação, unidade de transferência, representação de dados, tipos de operação etc).

Page 4: Entrada e saida  cap 05 (iii unidade)

Visão Geral

Fonte: Eduardo Nicola F. Zagari

Page 5: Entrada e saida  cap 05 (iii unidade)

Princípios de Hardware

Page 6: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Dispositivos de E/S Dispositivos podem variar de diversas maneiras:

Transf. por caractere (terminal) ou por bloco deles (disco);

Dispositivos de Blocos Um dispositivo de blocos é aquele que armazena informação em blocos de tamanho

fixo, cada um com seu próprio endereço. Os tamanhos de blocos comuns variam de 512 bytes a 32.768 bytes.

A Propriedade Essencial de um dispositivo de blocos é que cada bloco pode ser lido ou escrito independentemente de todos ou outros. Discos rígidos, CD-ROMs e pen drivers são dispositivos de blocos mais comuns.

Dispositivos de Caracteres Envia ou recebe um fluxo de caracteres, sem considerar qualquer estrutura de

blocos. Ele não é endereçável e não dispõe de qualquer operação de posicionamento.

Impressoras, interfaces de redes, mouses e a maior parte de outros dispositivos que são diferentes do disco podem ser considerados dispositivos de caractere.

Page 7: Entrada e saida  cap 05 (iii unidade)

Exemplo Dispositivos de Bloco e Caracteres

[ronner@localhost Documents]$ cat /proc/devices

Character devices:

1 mem (Acesso Memória Física)

2 /dev/vc/0 (Console Virtual)

3 tty (Dispositivos do Tipo Terminais Estilo BSD (TTY)

4 /dev/ptmx (Multiplexador para dispositivos do tipo estilo AT&T )

5 vcs (Dispositivos de captura de console virtual)

6 misc (Mouses não seriais)

7 input (Núcleo de entrada – Normalmente contém um mouse)

8 sound (Dispositivo de Áudio)

9 usb (Dispositivo USB)

10 alsa (Advanced Linux Sound Driver (Driver Avançado de som linux)

Block devices:

1 fd Unidade de disco flexível

2 ide0 Canal IDE Primário

3 ide0 Canal IDE Secundário

4 sda1 Canal Sata

Page 8: Entrada e saida  cap 05 (iii unidade)

• A comunicação de um dispositivo com o sistema computacional é feita através do

envio de sinais (cabo ou ar) num ponto de conexão chamado de porta.

• O meio usado por um ou mais dispositivos para conexão com o computador é chamado de barramento.

• Para cada barramento, é definido um protocolo que especifica um conjunto de mensagens que podem ser enviadas pelos fios.

Princípios de hardware: Dispositivos de E/S

Page 9: Entrada e saida  cap 05 (iii unidade)

Dispositivos de E/S

• Dispositivos podem variar de diversas maneiras:

O acesso aos dados armazenados pode ser sequencial (modem) ou aleatório (CD-ROM);

Os dados podem ser transferidos de forma síncrona (fita) ou assíncrona (teclado);

Os dispositivos podem ser restritos a um único processo (fita) ou compartilhados simultaneamente por vários (teclado);

O acesso pode ser apenas para leitura (CD-ROM), apenas para escrita (CRT) ou para leitura e escrita (disco);

A velocidade de acesso pode variar muito (frequentemente, estes dispositivos são os mais lentos de um sistema computacional).

Page 10: Entrada e saida  cap 05 (iii unidade)

Dispositivos de E/S

Responsáveis pela comunicação entre o computador e o mundo externo.

Muitos tipos de dispositivos são usados em computadores, como:

• dispositivos de armazenamento (discos, fitas)

• dispositivos de transmissão (placas de rede, modems)

• dispositivos de interface com usuários (tela, teclado, mouse)

A transferência de dados, realizada por intermédio dos controladores, pode ser através de blocos de informações ou palavra a palavra.

Page 11: Entrada e saida  cap 05 (iii unidade)

6

ARQUITETURA PC

Page 12: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Controladores de Dispositivos

Unidades de E/S consistem tipicamente de:

Componentes mecânicos (o dispositivo propriamente dito)

Componentes eletrônicos (o controlador)

Tal diferença deve ser ressaltada, uma vez que o SO vê o controlador e não o dispositivo.

Normalmente, mini e microcomputadores usam um barramento único para comunicação entre CPU e os controladores (através de device drivers)

Mainframes frequentemente usam um modelo diferente, no qual múltiplos barramentos e computadores especializados de E/S (canais de E/S) aliviam parte da carga da CPU.

Page 13: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Controladores de Dispositivos

Como o processador envia comandos e dados a um controlador para que seja feita uma transf. de dados?

O controlador possui memória e registradores próprios para armazenar

dados e sinais de controle, de forma a executar instruções enviadas pelo device driver

O SO realiza E/S, escrevendo comandos e seus parâmetros nestes registradores dos controladores.

o As instruções de E/S especiais podem ser usadas para especificar a transferência de um byte ou palavra para uma porta de E/S, que tem um determinado endereço.

o A instrução de E/S faz com que o dispositivo apropriado seja

selecionado de acordo com o sinal transmitido no barramento e que os bits sejam então transferidos para um registrador ou a partir de um registrador do disp.

Page 14: Entrada e saida  cap 05 (iii unidade)

E/S Mapeamento de Memória

• Cada controlador tem alguns registradores usados para a comunicação com a CPU.

• Por meio da escrita nesses registradores, o sistema operacional pode comandar o dispositivo para entregar ou aceitar dados, alternar por si mesmo entre ligar e desligar ou executar alguma outra tarefa.

• A partir da leitura desses registradores, o sistema operacional pode descobrir o estado do dispositivo, se ele está preparado para aceitar um novo comando e assim por diante.

Page 15: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

• Não importa se a CPU tem ou não E/S mapeada na memória: ela precisa endereçar os controladores dos dispositivos para poder trocar dados com eles.

• A CPU pode requisitar dados de um controlador de E/S, um byte de cada vez, mas, fazendo isso desperdiça muito tempo de CPU, de modo que um esquema diferente chamado de acesso direto à memória (direct memory access - DMA) é muitas vezes usado.

• O sistema operacional somente pode usar DMA se o hardware tem o controlador de DMA, existente na maioria dos sistemas.

• Algumas vezes, esse controlador é integrado nos controladores de disco e em outros controladores, mas esse projeto requer um controlador de DMA separado para cada dispositivo.

• Normalmente, um único controlador de DMA se encontra disponível (por exemplo, na placa-mãe) para controlar as transferências para vários dispositivos, as quais podem ocorrer, muitas vezes simultaneamente.

Page 16: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

• O DMA visa melhorar a performance geral do micro, permitindo que os periféricos transmitam dados diretamente para a memória, poupando o processador de mais esta tarefa.

• Existem 8 portas de DMA e, como acontece com os pedidos de interrupção, dois dispositivos não podem compartilhar o mesmo canal DMA, caso contrário haverá um conflito. Os 8 canais DMA são numerados de 0 a 7, sendo nos canais de 0 a 3 a transferência de dados feita a 8 bits e nos demais a 16 bits. O uso de palavras binárias de 8 bits pelos primeiros 4 canais de DMA visa manter compatibilidade com periféricos mais antigos.

Page 17: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

• Justamente por serem muito lentos, os canais de DMA são utilizados apenas por periféricos lentos, como drives de disquete, placas de som e portas paralelas padrão ECP. Periféricos mais rápidos, como discos rígidos, utilizam o Bus Mastering, uma espécie de DMA melhorado.

• O Canal 2 de DMA é nativamente usado pela controladora de disquetes. Uma placa de som geralmente precisa de dois canais de DMA, um de 8 e outro de 16 bits, usando geralmente o DMA 1 e 5. O DMA 4 é reservado à placa mãe. Ficamos então com os canais 3, 6 e 7 livres. Caso a porta paralela do micro seja configurada no Setup para operar em modo ECP, precisará também de um DMA, podemos então configurá-la para usar o canal 3.

Page 18: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à

Memória

Page 19: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Interrupções Revisitadas

Em hardware, as interrupções trabalham da seguinte maneira:

• quando um dispositivo de E/S finaliza seu trabalho, ele gera uma interrupção (presumindo que as interrupções tenham sido habilitadas pelo sistema operacional).

• Ele faz isso enviando um sinal pela linha do barramento à qual está associado. O sinal é detectado pelo chip controlador de interrupção localizado na placa-mãe, o qual então decide o que fazer.

Como ocorre uma interrupção. As conexões entre os dispositivos e o

controlador de interrupção atualmente utilizam linhas de interrupção no

barramento em vez de fios dedicados.

Page 20: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

Operação de leitura em disco sem suporte à DMA:

• A Principio o controlador lê um bloco (um ou mais setores) do dispositivo serialmente, bit a bit, até que todo o bloco esteja no buffer interno do controlador;

• Em seguida, ele calcula a soma de verificação para conferir se não ocorreu nenhum erro de leitura;

• Então, o controlador causa uma interrupção;

• Quando o SO inicializa o atendimento, ele pode ler o bloco do disco a partir do buffer no controlador, um byte ou uma palavra cada vez, em um laço, onde cada interação lê um byte ou palavra do registrador do controlador e armazena na memória principal.

Isto consome um tempo apreciável da CPU;

Solução: Usar DMA (Direct Memory Access).

Page 21: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

Operação de leitura em disco com suporte à DMA:

• Primeiramente, a CPU programa o controlador de DMA inserindo valores em

seus registradores de modo que ele saiba o que transferir e para onde transferir (passo 1 na Figura);

• Ele também emite um comando para o controlador de disco ordenando carregar os dados do disco para seu buffer interno e verificar a soma da verificação. Quando os dados que estão no buffer do controlador são válidos o DMA pode começar.

• O controlador de DMA inicia a transferência emitindo, pelo barramento, uma requisição de leitura para o controlador de disco (passo 2).

• Normalmente, o endereço de memória para onde escrever está nas linhas de endereços do barramento, de modo que quando o controlador de disco busca a próxima palavra de seu buffer interno ele sabe onde escrevê-la. A escrita na memória é outro ciclo de barramento-padrão (passo 3).

Page 22: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

Operação de leitura em disco com suporte à DMA:

• Quando a escrita está completa, o controlador de disco envia um sinal de confirmação para o controlador de DMA, também por meio do barramento (passo 4),

• O controlador de DMA então incrementa o endereço de memória e diminui o contador de bytes. Se o contador de bytes ainda é maior do que 0, os passos de 2 a 4 são repetidos até que o contador seja 0.

• Nesse momento, o controlador de DMA interrompe a CPU para deixá-la ciente de que a transferência está completa. Quando sistema operacional inicia o atendimento da interrupção, ele não precisa copiar o bloco do disco para a memória: ele já está lá.

Page 23: Entrada e saida  cap 05 (iii unidade)

Princípios de hardware: Acesso direto à Memória

Page 24: Entrada e saida  cap 05 (iii unidade)

Princípios de Software

Page 25: Entrada e saida  cap 05 (iii unidade)

Princípios de Software: Device Drivers

• Device driver é o comando de um dispositivo ou programa. É a forma a partir da qual uma unidade periférica cria uma interface com o sistema operacional para se conectar com o dispositivo do hardware.

• Vejamos um exemplo prático: quando se conecta uma impressora a um computador, esta impressora requer a instalação do "driver" (que é instalado a partir de um CD ou de um disquete que vem junto com o equipamento), sem o qual ela não conseguirá fazer a interface com o Computador. O "driver" é o elemento que faz esse comando. É, literalmente, o dirigente.

• Foi a solução encontrada para que os Sistemas Operacionais sejam compatíveis com diferentes tipos de equipamentos. Cada impressora, por exemplo, tem suas peculiaridades de hardware, logo torna-se inviável que o Sistema Operacional tenha conhecimento sobre todos os equipamentos disponíveis. O Sistema Operacional disponibiliza bibliotecas de programação, para que o fabricante possa criar uma interface entre seu equipamento e o software.

Page 26: Entrada e saida  cap 05 (iii unidade)

Tratadores de interrupção 1. Salva quaisquer registradores que não foram salvos pelo software de

interrupção.

2. Estabelece um contexto para a rotina de tratamento da interrupção.

3. Estabelece uma pilha para a rotina de tratamento da interrupção.

4. Sinaliza o controlador de interrupção. Se não há um controlador de interrupção centralizado, reabilita a interrupção.

5. Copia os registradores de onde foram salvos para a tabela de processos.

6. Executa a rotina de tratamento da interrupção.

7. Escolhe o próximo processo a ser executado.

8. Estabelece o contexto da MMU para o próximo processo a ser executado.

9. Carrega os registradores do novo processo, incluindo sua PSW.

10. Inicializa a execução do novo processo.

Page 27: Entrada e saida  cap 05 (iii unidade)

PRINCÍPIOS DE SOFTWARE: DEVICE

DRIVERS Posicionamento lógico dos drivers dos dispositivos. Na

realidade toda comunicação entre os drivers e os controladores é

feita por meio do barramento.

Page 28: Entrada e saida  cap 05 (iii unidade)

Camadas de software E/S

Page 29: Entrada e saida  cap 05 (iii unidade)

Software E/S independente de dispositivo

Page 30: Entrada e saida  cap 05 (iii unidade)

Interface uniforme para os drivers de dispositivo

Page 31: Entrada e saida  cap 05 (iii unidade)

RAID

O sistema RAID consiste em um conjunto de dois ou mais discos rígidos com dois objetivos básicos:

tornar o sistema de disco mais rápido (isto é, acelerar o carregamento de dados do disco), através de uma técnica chamada divisão de dados (data stripping ou RAID 0) e/ou tornar o sistema de disco mais seguro, através de uma técnica chamada espelhamento (mirroring ou RAID 1). Essas duas técnicas podem ser usadas isoladamente ou em conjunto.

Page 32: Entrada e saida  cap 05 (iii unidade)

RAID - Implementação Via software • Na implementação via software, o sistema operacional gerencia

o RAID através da controladora de discos, sem a necessidade de um controlador de RAIDs, tornando-a mais barata.

• Nesse tipo de implementação, todo o processamento necessário para o gerenciamento do RAID é feito pela CPU. Toda movimentação de dados(leitura e escrita) é feita por uma camada de software que faz a abstração entre a operação lógica (RAID) e os discos físicos, e é controlada pelo sistema operacional.

• A configuração do RAID via software é feita pelo sistema operacional, que precisa ter implementado no próprio núcleo a utilização de RAIDs via software. É possível criar RAIDs via software no Mac OS X, Linux, FreeBSD, OpenBSD e no Windows (versão server). Alternativamente, podem ser criados com algum software especialmente dedicado a manutenção de discos rígidos do fabricante da placa mãe (quando há suporte para RAID, é claro).

Page 33: Entrada e saida  cap 05 (iii unidade)

RAID - Implementação Via Hardware • Controladoras RAID em hardware usam layouts de disco

proprietários (e diferentes). Por isso, normalmente não é possível misturar controladoras de fabricantes diferentes. Eles não utilizam recursos do processador. O BIOS - Basic Input/Output System - pode iniciar (dar boot) por ela, e uma integração maior com o driver de dispositivo pode oferecer um melhor tratamento de erros.

• Uma implementação de RAID em hardware requer pelo menos uma controladora especialmente dedicada para isso. Em uma estação de trabalho (PC comum) isso pode ser uma placa de expansão PCI, PCI-e ou uma placa integrada à placa-mãe. Controladoras utilizando a maioria dos tipos de drive podem ser usadas - IDE/ATA, Serial ATA, SCSI, SSA, Fibre Channel, e às vezes uma combinação.

• A controladora e os discos utilizados devem estar isolados. Podem estar conectados diretamente ao computador, ou conectados via SAN. A controladora gerencia os drives e faz os cálculos de paridade necessários pelo nível de RAID escolhido.

Page 34: Entrada e saida  cap 05 (iii unidade)

RAID - Implementação Via Hardware • A maioria das implementações em hardware proveem

cache de leitura e escrita, o que (dependendo da carga de I/O) melhora a performance. Na maioria dos casos, o cache de escrita é não-volátil (protegido por bateria), e portanto, escritas pendentes não são perdidas no caso de uma falha no suprimento de energia.

• Implementações em hardware promovem performance garantida, não sobrecarregam o processador e podem suportar vários sistemas operacionais, já que a controladora apresentará ao sistema operacional um disco simples.

• A maioria das implementações em hardware também suporta o "hot-swapping", permitindo que discos com falha sejam substituídos enquanto o sistema está sendo executado.

Page 35: Entrada e saida  cap 05 (iii unidade)

RAID 0 RAID 0 – DATA STRIPPING

• No nível RAID 0, a informação é segmentada e, cada segmento, armazenado em cada unidade do arranjo. Neste nível, não há redundância, pois há somente uma divisão (stripping) da informação. A única vantagem do RAID 0 é o ganho de velocidade no acesso a informação.

Fonte: Internet??

Page 36: Entrada e saida  cap 05 (iii unidade)

RAID - 0 • Dois ou mais discos rígidos são agrupados. Os dados são gravados

distribuindo-se a carga entre os discos que fazem parte da matriz (geralmente em blocos de 32kb ou 64Kb de dados). Este método não é muito seguro, já que se um participante da matriz falhar, todos os dados serão perdidos. No entanto, é o mais rápido, pois a leitura e gravação são distribuídas.

Fonte: http://technet.microsoft.com/pt-br/library/cc716445.aspx

Page 37: Entrada e saida  cap 05 (iii unidade)

RAID 1 RAID 1 – DATA MIRRORING

• No RAID nível 1, a informação é gravada igualmente em todas as unidades (mirror – espelho). À partir deste nível, hà redundância de dados, pois com a duplicidade da informação, quando uma unidade falha, o seu espelho (mirror) assume.

Fonte: http://pt.wikipedia.org/wiki/RAID

Page 38: Entrada e saida  cap 05 (iii unidade)

RAID - 1 Também chamado de espelhamento: um dos discos serve de espelho para o outro. Tudo que é gravado em um dos discos é gravado no outro. Isso faz com que a performance de gravação seja um pouco prejudicada, no entanto, a leitura dos dados é acelerada, já que temos dois discos lendo o mesmo arquivo. É uma forma bem segura, mas também a mais cara, sendo que apenas 50% do espaço disponível é aproveitado.

Fonte: http://technet.microsoft.com/pt-br/library/cc716445.aspx

Page 39: Entrada e saida  cap 05 (iii unidade)

RAID - (zero) + 1 • O RAID 0 + 1 é uma combinação dos níveis 0 (Striping) e 1 (Mirroring), onde os

dados são divididos entre os discos para melhorar o rendimento, mas também utilizam outros discos para duplicar as informações. Assim, é possível utilizar o bom rendimento do nível 0 com a redundância do nível 1.

• No entanto, é necessário pelo menos 4 discos para montar um RAID desse tipo. Tais características fazem do RAID 0 + 1 o mais rápido e seguro, porém o mais caro de ser implantado. No RAID 0+1, se um dos discos vier a falhar, o sistema vira um RAID 0.

• Ex: se os dois discos que possuam a sequencia A1, A3, A5 falharem ao mesmo tempo, haverá perda de dados. Se apenas uma das controladoras falhar, o sistema continua funcionando, mas sem outra tolerância a falha e sem o ganho de velocidade.

• Vantagens:

• segurança contra perda de dados;

• pode falhar 1 dos HD's, ou os dois HD's do mesmo DiskGroup,

porém deixando de ser RAID 0 + 1.

• Desvantagens:

• alto custo de expansão de hardware (custo mínimo = 4N HDs);

• os drives devem ficar em sincronismo de velocidade para obter a

máxima performance.

Fonte: http://pt.wikipedia.org/wiki/RAID

Page 40: Entrada e saida  cap 05 (iii unidade)

RAID 5 • Melhor relação custo x performance x segurança. Para esse tipo de RAID, há necessidade de

no mínimo 3 discos.

• As informações de paridade são gravadas em cada disco de tal forma que se um dos integrantes da matriz falhar, as informações nele contidas podem ser reconstruídas.

• Sua performance de gravação é menor do que a do RAID 0 e maior que a do RAID 1. A performance de leitura é a melhor entre as aqui citadas, já que as informações estão distribuídas entre três ou mais discos.

• O algoritmo utilizado para a paridade utiliza cerca de 30% de espaço em disco para armazenar a paridade.

Fonte: Internet

Page 41: Entrada e saida  cap 05 (iii unidade)

RAID 5

• Melhor relação custo x performance x segurança. Para esse tipo de RAID, há necessidade de no mínimo 3 discos. As informações de paridade são gravadas em cada disco de tal forma que se um dos integrantes da matriz falhar, as informações nele contidas podem ser reconstruídas. Sua performance de gravação é menor do que a do RAID 0 e maior que a do RAID 1. A performance de leitura é a melhor entre as aqui citadas, já que as informações estão distribuídas entre três ou mais discos.

Fonte: http://technet.microsoft.com/pt-br/library/cc716445.aspx

Page 42: Entrada e saida  cap 05 (iii unidade)

RAID - RAID 1+0 • O RAID 1+0, ou 10, exige ao menos 4 discos rígidos. Cada par será espelhado,

garantindo redundância, e os pares serão distribuídos, melhorando desempenho. Até metade dos discos pode falhar simultaneamente, sem colocar o conjunto a perder, desde que não falhem os dois discos de um espelho qualquer — razão pela qual usam-se discos de lotes diferentes de cada ‘lado’ do espelho.

• É o nível recomendado para bases de dados, por ser o mais seguro e dos mais velozes, assim como qualquer outro uso onde a necessidade de economia não se sobreponha à segurança e desempenho.

• Vantagens:

• segurança contra perda de dados;

• pode falhar um ou dois dos HDs ao mesmo tempo, dependendo de qual avaria.

• Desvantagens:

• alto custo de expansão de hardware (custo mínimo = 4N HDs);

• os drivers devem ficar em sincronismo de velocidade para

obter a máxima performance.

Fonte: http://pt.wikipedia.org/wiki/RAID