Transcript
Page 1: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

1

Silberschatz, Galvin and Gagne 2002 10.1 Operating System Concepts

Capítulo 10: Sistemas I/O

Hardware de I/O

Interface de I/O para aplicações

Subsistema I/O do kernel do sistema operativo

Transformação de pedidos de I/O em operações de

hardware

Streams

Desempenho

Sumário:

Silberschatz, Galvin and Gagne 2002 10.2 Operating System Concepts

Hardware I/O

Grande variedade de dispositivos I/O:

Dispositivos de memória (discos e tapes)

Dispositivos de transmissão (placas de rede e modems)

Dipositivos de interface com seres humanos (ecrã, teclado, rato)

Outros dispositivos mais especializados

Conceitos comuns de comunicação entre um dispositivo I/O e o computador:

Porto (port)

Barramento (bus)

Controlador (para porto, barramento ou dispositivo)

Estrutura típica dum PCI bus

Page 2: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

2

Silberschatz, Galvin and Gagne 2002 10.3 Operating System Concepts

Hardware I/O (cont.):

“Every transfer is an output from one device and an input into another.”

Localizações de alguns portos I/O

de dispositivos de PCs

Como é que a CPU pode

fornecer comandos e dados a

um controlador para efectuar

uma transferência I/O?

O controlador tem um ou mais

registos para dados (registo

data-in, registo data-out) e

sinais de controlo (registo

status e registo control)

A CPU comunica com o

controlador através da leitura

e escrita de “padrões de bits”

nestes registos

Duas formas de comunicação

CPU-controlador:

Instruções I/O directas

(1 byte + endereço de porto

I/O)

Instruções I/O mapeadas em

memória

Silberschatz, Galvin and Gagne 2002 10.4 Operating System Concepts

Hardware I/O:

Comunicação CPU-Dispositivo I/O

via Polling Espera Ocupada da CPU

A interacção entre a CPU e um controlador faz-se por aperto de mão

(handshaking). Assuma que são usados 2 bits (busy bit do registo status e

ready bit do registo command do controlador) para coordenar a relação

produtor-consumidor entre o controlador e a CPU:

Determines state of device

command-ready

busy

Error

Busy-wait cycle to wait for I/O from device

Page 3: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

3

Silberschatz, Galvin and Gagne 2002 10.5 Operating System Concepts

Busy Wait

A CPU lê repetidamente o bit busy até que seja 0 (busy-wait cycle).

A CPU activa o bit write a 1 no registo command e escreve um byte

no registo data-out.

A CPU activa o bit ready a 1 no registo command.

Quando o controlador nota que o bit ready está a 1, it escreve o bit

busy a 1.

O controlador lê o registo command e vê o comando write. Lê o

registo data-out para obter o byte, fazendo de seguida a I/O para o

dispositivo.

O controlador desactiva o bit ready a 0, assim como o bit error no

registo status, para indicar que a transferência foi bem sucedida,

colocando depois o bit busy a 0 para indicar que a transferência

terminou.

Silberschatz, Galvin and Gagne 2002 10.6 Operating System Concepts

Hardware I/O: Comunicação CPU-Dispositivo

I/O via Interrupções Durante I/O, interrupções são

feitas por vários dispositivos quando eles ficam prontos para serviço.

Estas interrupções significam que a saída de dados terminou, ou que a entrada de dados está disponível, ou que uma falha foi detectada.

O controlador interrompe a CPU através da emissão dum sinal na linha de pedido de interrupção;

A CPU detecta a interrupção e despacha-a para o interrupt handler, que é uma rotina

A interrupt handler determina a causa da interrupção, faz o processamento necessário (rotina de serviço à interrupção) e termina; ao terminar, a CPU volta ao estado anterior à interrupção

Ciclo I/O alimentado por interrupções

Page 4: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

4

Silberschatz, Galvin and Gagne 2002 10.7 Operating System Concepts

Hardware I/O: Tabela de eventos do

processador Intel Pentium

Mecanismo de interrupções também usado para excepções

(p.ex. divisão por 0, acesso a endereço de memória protegida ou inexistente)

A maior parte das CPUs tem agora duas linhas de interrupção:

Linha de interrupção não-mascarável, que é reservada para eventos tais como erros de memória irrecuperáveis

Linha de interrupção mascarável, que pode ser desligada pela CPU antes da execução duma sequência de instruções críticas que não podem serem interrompidas.

Vector de interrupções para despachar cada interrupção para o handler correcto

Baseado em prioridades

Algumas não são mascaráveis (os primeiros 32 eventos do Intel Pentium não são mascaráveis e são usadas para sinalização de erros)

Silberschatz, Galvin and Gagne 2002 10.8 Operating System Concepts

Hardware I/O:

Acesso Directo à Memória (DMA) Transferência directa de dados entre dispositivos I/O e a memória sem

participação da CPU

Requer controlador DMA

Page 5: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

5

Silberschatz, Galvin and Gagne 2002 10.9 Operating System Concepts

Interface de I/O

Interface I/O do kernel: conjunto de funções I/O independentes do hardware (p.ex. read, write, etc.)

Device drivers: módulos do kernel dependentes do hardware, cada um dos quais encapsula o funcionamento específico de cada dispositivo (p.ex. rato, teclado, etc.).

Vantagem: um novo periférico pode ser ligado a um computador sem que a empresa vendedora do sistema operativo tenha que fornecer o código de suporte do periférico.

Estrutura I/O do kernel

Silberschatz, Galvin and Gagne 2002 10.10 Operating System Concepts

Interface de I/O:

Características dos dispositivos de I/O Dispositivos diferenciam-se de

várias maneiras:

Character-stream ou block.

Um dispositivo de caracteres

transfere bytes um-a-um, ao

passo que um dispositivo de

blocos transfere um bloco de

bytes como se fosse uma

unidade.

Sequenciais ou de acesso

aleatório

Síncronos ou assíncronos.

Transferência de dados é feita

com tempos de resposta

previsíveis ou não.

Partilháveis ou dedicados.

Há partilha concorrente por

vários processos ou não.

Velocidade de operação

read-write, read only, ou

write only

Page 6: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

6

Silberschatz, Galvin and Gagne 2002 10.11 Operating System Concepts

Interface de I/O:

dispositivos de blocos e de caracteres Os dispositivos de blocos incluem

os discos rígidos Interface básica: read, write, seek

Modos de acesso:

Acesso de alto-nível através de interface de sistema de ficheiros

Acesso de baixo-nível através array linear de blocos (raw I/O)

Acesso a memory-mapped files colocadas no topo de block-device drivers é possível. Uma memory-mapped interface fornece acesso ao disco através dum array de bytes em memória principal.

Os dispositivos de caracteres (stream character) incluem teclados, ratos e portos série Interface básica: get, put

No topo da interface, é possível construir bibliotecas para edição de linhas (p.ex. Eliminar um carácter do input stream através de backspace).

Silberschatz, Galvin and Gagne 2002 10.12 Operating System Concepts

Interface de I/O:

Dispositivos de rede Têm uma interface bastante

diferente da interface read-

write-seek usada pelos discos

rígidos.

Unix e Windows NT/9i/2000

usam uma interface de sockets

Há a separação entre o

protocolo de rede e o

funcionamento da rede

Inclui a funcionalidade select

para manipular conjuntos de

sockets

Abordagens muito variadas

(pipes, FIFOs, streams, queues,

mailboxes)

PCMCIA compatible Fax/Modem cards

Ethernet Adapter Cards

External Fax/Modems

Page 7: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

7

Silberschatz, Galvin and Gagne 2002 10.13 Operating System Concepts

Interface de I/O:

Relógios (clocks) e temporizadores (timers)

Fornecem três funções básicas para:

Determinar tempo corrente

Determinar tempo decorrido

Activar um temporizador para despoletar uma operação numa dada altura

Um programmable interval timer é usado para suportar a segunda e terceira funções anteriores. Este mecanismo é usado pelo escalonador para gerar uma interrupção que preempciona um processo no fim de esgotar o seu time-slice (algoritmo Round-Robin)

A função ioctl (UNIX) aborda aspectos de I/O tais como relógios e temporizadores.

Silberschatz, Galvin and Gagne 2002 10.14 Operating System Concepts

Interface de I/O:

I/O bloqueante e I/O não-bloqueante

Chamada bloqueante ao sistema - processo suspenso até que a operação I/O esteja completa

Fácil de usar e compreender

Insuficiente para algumas necessidades (p.ex. Interface gráfica que recebe entrada de dados do teclado e do rato, e ao mesmo tempo processa e visualiza dados no ecrã)

Chamada não-bloqueante – chamada I/O retorna o mais rapidamente possível com um valor de retorno que indica o número de bytes transferidos (quer seja a totalidade dos dados pedidos, ou menos, ou mesmo menhuns)

Interface com o utilizador, cópia de dados (buffered I/O)

Implementada via multi-threading

Chamada assíncrona – processo continua a correr enquanto I/O decorre

Difícil de usar

Subsistema I/O sinaliza processo quando a operação I/O está completa

Page 8: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

8

Silberschatz, Galvin and Gagne 2002 10.15 Operating System Concepts

Subsistema I/O do kernel: serviços

Escalonamento I/O

O escalonamento dum conjunto de pedidos I/O requer a sua ordenação adequada por cada fila de espera dum dispositivo

Alguns sistemas operativos tentam ser justos por forma a que nenhum processo seja mal servido.

Buffering – um buffer é uma zona de memória que guarda dados enquanto estes são transferidos entre dois dispositivos ou entre um dispositivo e uma aplicação. Serve três propósitos:

Suportar dispositivos com diferentes velocidades de transferência de dados

Suportar dispositivos com diferentes tamanhos de transferência de dados.

Manter a “semântica de cópia”

Caching – memória rápida que guarda cópia de dados para impedir demasiados acessos ao dispositivo I/O

Spooling

Um spool é um buffer que guarda o

output para um dispositivo (ex. uma

impressora) que não pode aceitar data

streams entrelaçados.

Spooling é a forma dum sistema

operativo coordenar o output concorrente

para um dispositivo.

O output de cada aplicação é spooled

para um ficheiro separado em disco.

Quando uma aplicação termina a

impressão, o sistema de spooling coloca

o ficheiro correspondente na fila de

spooling para output para a impressora.

Tratamento de erros

O sistema operativo pode recuperar de

falhas de leitura e de escrita transitória, e

até mesmo de dispositivo indisponível.

Quando um pedido I/O falha, um

mensagem de erro é devolvida.

Os logs de erros do sistema relatam os

problemas.

Silberschatz, Galvin and Gagne 2002 10.16 Operating System Concepts

Taxas de transferência de dados:

Sun Enterprise 6000

Page 9: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

9

Silberschatz, Galvin and Gagne 2002 10.17 Operating System Concepts

Subsistema I/O do kernel:

estruturas de dados do kernel O kernel guarda

informação de estado

das componentes de

I/O, incluindo as

tabelas de ficheiros

abertos, ligações à

rede, comunicações

com dispositivos de

caracteres,etc.

Alguns sistemas

operativos usam

métodos orientados

por objectos e

passagem de

mensagens para

implementar I/O. Estrutura I/O do UNIX kernel

Silberschatz, Galvin and Gagne 2002 10.18 Operating System Concepts

Transformação de pedidos I/O em

operações de hardware Por exemplo, na leitura dum ficheiro

em disco por um processo há que:

Determinar o dispositivo que guarda

o ficheiro

Traduzir o nome do ficheiro na sua

representação em disco (p.ex., em

UNIX, o nome é mapeado para o

número dum i-node, o qual contém a

informação do ficheiro em disco)

Ler fisicamente dados do disco e

colocá-los num buffer.

Disponibilizar os dados ao processo

Devolver o controlo ao processo

Ciclo de vida dum pedido leitura bloqueante

Page 10: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

10

Silberschatz, Galvin and Gagne 2002 10.19 Operating System Concepts

STREAMS

STREAM – canal de comunicação

full-duplex entre um processo do

utilizador e um dispositivo

Um STREAM consiste em:

- uma STREAM head que faz a

interface com o processo do

utlizador

- uma driver end que faz a interface

com o dispositivo

- zero ou mais módulos STREAM

entre eles.

Cada módulo contém uma read

queue e uma write queue

Passagem de mensagens é usada

para a comunicação entre queues

No System V, o mecanismo de

sockets é implementado por streams Estrutura de um stream

Silberschatz, Galvin and Gagne 2002 10.20 Operating System Concepts

Desempenho I/O (performance)

I/O é um factor fundamental no desempenho do sistema

Exige à CPU a execução de código de device driver e a escalonar processos justa e eficientemente quando eles bloqueiam ou desbloqueiam.

As comutações de contexto resultantes sobrecarregam a CPU e as suas caches por causa das interrupções

Face a isto, a cópia harmoniosa de dados é uma das principais preocupações dum arquitecto de computadores.

Tráfico de rede também pode provocar uma taxa elevada de comutações de contexto.

Exemplo: num login remoto, um carácter escrito numa máquina local tem de ser transportado para a máquina remota Comunicação dum carácter entre computadores

Page 11: Capítulo 10: Sistemas I/O - di.ubi.ptoperativos/teoricos/capitulo10.pdf · Operating System Concepts 10.1 Silberschatz, Galvin and Gagne 2002 Capítulo 10: Sistemas I/O ... write-seek

11

Silberschatz, Galvin and Gagne 2002 10.21 Operating System Concepts

Desempenho I/O: optimização

Reduzir o número de comutações de contexto

Reduzir o número de cópias de dados do dispositivo para a memória

Reduzir a frequência de interrupções através do uso de transferências

de grandes quantidades de dados, controladores inteligentes e polling(se

a espera-ocupada puder ser minimizada)

Usar DMA

Calibrar o desempenho da CPU, memória, bus e I/O para o maior débito

de dados por unidade de tempo (i.e. uma sobrecarga numa zona não

deve provocar a descongestão noutras)

Fim de Capítulo