• Nenhum resultado encontrado

Entradas e Saídas: Sumário

N/A
N/A
Protected

Academic year: 2021

Share "Entradas e Saídas: Sumário"

Copied!
17
0
0

Texto

(1)

Entradas e Sa´ıdas: Sum ´ario

• Dispositivos de E/S e seus Controladores.

• Modos de E/S.

Programada.

Por interrupc¸ ˜ao.

Com DMA.

• Camadas do Subsistema de E/S.

1

Dispositivos de Entrada/Sa´ıda

• Grande variedade de dispositivos de E/S:

Dispositivo Taxa de transmiss ˜ao

Teclado 10 byte/s

Rato 100 byte/s

Modem 56 kbit/s

Linha ISDN 128 kbit/s

Impressora Laser 100 kbyte/s

Ethernet 10 Mbit/s

USB 12 Mbit/s

40

×

CD-ROM 6 Mbyte/s

Fast Ethernet 100 Mbit/s

EIDE (ATA-2) 16.7 Mbyte/s

XGA Monitor 60 Mbyte/s

Gigabit Ethernet 1 Gbit/s

PCI bus 528 Mbyte/s

Sun Gigaplane XB backplane 20 Gbyte/s

2

(2)

Classes de Dispositivos de E/S (1/2)

block devices: armazenam a informac¸ ˜ao em blocos de tamanho fixo (tpiciamente, entre 512B e 32 KB)

• Cada bloco tem o seu enderec¸o

• E poss´ıvel ler/escrever um bloco independentemente dos ´ restantes

• Exemplo: Disco.

character devices: aceitam ou entregam uma sequ ˆencia de car ´acteres:

• N ˜ao s ˜ao enderec¸ ´aveis individualmente: n ˜ao suportam operac¸ ˜ao seek

• Exemplo: impressora, rato, teclado, porta s ´erie, interface de rede

3

Classes de Dispositivos de E/S (2/2)

A diferenc¸a entre um block device e um character device nem sempre ´e clara. P.ex.:

Uma fita magn ´etica (tape) a que classe pertence?

• Alguns perif ´ericos n ˜ao se encaixam bem nesta taxonomia.

P. ex.

Rel ´ogio (clock )

Cartas gr ´aficas: tipicamente usam mem ´oria-mapeada

• Mas ´e especialmente ´util para conceber SW independente do dispositivo:

E.g. o sistema de ficheiros usa apenas block devices abstractos.

4

(3)

Controladores de Dispositivos de E/S (1/3)

• Componente electr ´onico que:

controla as operac¸ ˜oes do dispositivo;

faz a interface com o computador.

• Exemplos:

controlador da porta-s ´erie (UART);

controlador do disco;

NIC (Network Interface Controller);

VGA (Video Graphics Adapter).

5

Controladores de Dispositivos de E/S (2/3)

Monitor

Keyboard Floppy disk drive

Hard disk drive

Hard disk controller Floppy

disk controller Keyboard

controller Video

controller Memory

CPU

Bus

• Controladores t ˆem 2 conjuntos de registos para comunicar com o CPU:

registos de controlo usados para configurar, dar comandos ou l ˆer o estado do dispositivo;

registos de dados (data buffers) usados para transferir dados.

6

(4)

Controladores de Dispositivos de E/S (3/3)

• O acesso a estes registos pode ser feito via:

memory-mapped I/O: caching das posic¸ ˜oes correspondentes deve ser inibida;

instruc¸ ˜ oes IN/OUT: a mem ´oria e os dispositivos de E/S usam espac¸os de enderec¸amento distintos.

Two address One address space Two address spaces

Memory

I/O ports 0xFFFF…

0

(a) (b) (c)

7

Barramentos de E/S (1/2)

• Em qualquer caso, pode usar-se barramentos distintos para aceder `a mem ´oria e aos dispositivos de E/S:

CPU Memory I/O

All addresses (memory Bus and I/O) go here

CPU Memory I/O

CPU reads and writes of memory go over this high-bandwidth bus

This memory port is to allow I/O devices access to memory

(a) (b)

No caso de se usar memory-mapped I/O, h ´a que passar os enderec¸os tamb ´em para o barramento de E/S

8

(5)

Barramentos de E/S (2/2)

• No caso do PC, h ´a tipicamente 3 barramentos:

ISA bridge

Modem Mouse

PCI bridge

CPU Main

memory

SCSI USB

Local bus

Sound

card Printer Available

ISA slot ISA bus

IDE disk

Available PCI slot

Key- board

Mon- itor Graphics

adaptor Level 2

cache

Cache bus Memory bus

PCI bus

As pontes PCI (bridges) filtram os enderec¸os.

9

E/S Programada

• O SO transfere os dados entre a mem ´oria e o dispositivo de E/S:

String to be printed User

space

Kernel space

ABCD EFGH

Printed page

(a)

ABCD EFGH

ABCD EFGH Printed

page

(b) Next A

(c) Next AB

copy_from_user(buffer, p, count); /* copy data to kernel */

for( i = 0; i < count; i++ ) { /* for all characters */

while(*printer_status_reg != READY); /* wait for printer */

*printer_data_reg = p[i]; /* output next character */

}

Busy waiting do CPU pelo dispositivo de E/S.

10

(6)

E/S baseada em Interrupc¸ ˜ oes (1/4)

CPU Interrupt controller

Disk controller Disk drive

Current instruction Next instruction

1. Interrupt

3. Return

2. Dispatch to handler Interrupt handler

(b) (a)

1

3

4 2

• Usa o mecanismo de interrupc¸ ˜oes em HW

• Quando o dispositivo completa o comando, gera uma interrupc¸ ˜ao.

11

E/S baseada em Interrupc¸ ˜ oes (2/4)

CPU

Interrupt controller 3. CPU acks

interrupt

2. Controller issues interrupt

1. Device is finished Disk

Keyboard

Printer Clock

Bus

12

6

9 3

4 8

5 7

1 11

2 10

Com interrupc¸ ˜oes vectorizadas, o CPU e o controlador de interrupc¸ ˜oes executam um protocolo de handshake em HW :

CPU invoca depois o interrupt handler apropriado.

12

(7)

E/S baseada em Interrupc¸ ˜ oes (3/4)

Antes de iniciar a execuc¸ ˜ao do interrupt handler, o CPU pode guardar automaticamente algum do seu estado na stack.

Qual stack ? A do utilizador?

O SP pode ter um valor que n ˜ao ´e v ´alido.

Pode apontar para o fim duma p ´agina, originando uma page-fault.

Outro problema diz respeito `a precis ˜ao das interrupc¸ ˜oes:

Nas arquitecturas actuais n ˜ao h ´a uma mas v ´arias instruc¸ ˜oes em execuc¸ ˜ao simultaneamente.

Fetch unit

Fetch unit Fetch

unit

Decode unit

Decode unit

Execute unit

Execute unit

Execute unit Execute

unit

Decode unit

Holding buffer

(a) (b)

13

E/S baseada em Interrupc¸ ˜ oes (4/4)

• O processador programa o dispositivo de E/S para executar uma operac¸ ˜ao:

copy_from_user(buffer, p, count); /* copy data to kernel */

while(*printer_status_reg != READY); /* wait for printer */

*printer_data_reg = p[0]; /* output first character */

scheduler(); /* wait for I/O */

• O dispositivo de E/S gera uma interrupc¸ ˜ao quando terminar a operac¸ ˜ao.

O interrupt handler processa esse pedido de interrupc¸ ˜ao:

if( count == 0 ) { unblock_process();

} else {

*printer_data_register = p[i];

count--;

i++;

}

acknowledge_interrupt();

return_from_interrupt();

14

(8)

E/S com Direct Memory Acess (DMA) (1/3)

• Para evitar a intervenc¸ ˜ao do CPU em cada transfer ˆencia entre um dispositivo de E/S e a mem ´oria pode usar-se o mecanismo de DMA.

• Essencialmente, E/S com DMA ´e E/S programada excepto a transfer ˆencia dos dados entre os dispositivos e a mem ´oria ´e realizada sob controlo do DMA e n ˜ao do CPU.

• Alguns controladores de E/S podem solicitar ao controlador de DMA a transfer ˆencia dos dados:

Neste caso, DMA assemelha-se a E/S baseada em interrupc¸ ˜oes, mas . . . sem interrupc¸ ˜oes.

15

E/S com Direct Memory Acess (DMA) (2/3)

CPU

DMA controller

Disk controller

Main memory Buffer

1. CPU programs the DMA controller

Interrupt when done

2. DMA requests

transfer to memory 3. Data transferred

Bus 4. Ack

Address Count Control

Drive

• O CPU tem que programar o controlador de DMA com:

O enderec¸o da mem ´oria com o buffer de dados.

O enderec¸o do dispositivo de E/S.

O n ´umero de bytes/palavras as transferir.

Outros par ˆametros para controlar a transfer ˆencia, p.ex.:

∗ o sentido da transfer ˆencia;

cycle stealing vs. burst mode;

16

(9)

E/S com Direct Memory Acess (DMA) (3/3)

• O c ´odigo a executar para iniciar uma operac¸ ˜ao de DMA, vem:

copy_from_user(buffer, p, count); /* copy data to kernel*/

set_up_DMA_io(); /* set up for DMA operation */

scheduler(); /* wait for I/O */

• O controlador de DMA gera uma interrupc¸ ˜ao quando a transfer ˆencia terminar – para evitar busy-waiting.

O interrupt handler processa esse pedido de interrupc¸ ˜ao:

acknowledge_interrupt();

unblock_process();

return_from_interrupt();

17

Camadas de SW de E/S

User-level I/O SW Device-independent OS SW

Device drivers

Interrupt handlers HW

18

(10)

Camadas Dependentes do Dispositivo de E/S

Device driver

SW contendo todo o conhecimento sobre o dispositivo de E/S;

Realiza o grosso da interacc¸ ˜ao com o controlador do dispositivo.

Interrupt handler :

executa hand-shaking exigido pelo HW (interrupt acknowledgement);

“desbloqueia ” o driver na origem da interrupc¸ ˜ao.

• Ver Secc¸ ˜ao 2.9, Network Adaptors, do livro:

Larry L. Peterson and Bruce S. Davie, Computer Networks: A System’s Approach, 2nd. Edition, Morgan Kaufmann Publishers (2000)

19

Device Drivers

• Parte do SO que comunica com os controladores dos dispositivos de E/S.

• Diferentes tipos de dispositivos usam diferentes

controladores e consequentemente os seus drivers s ˜ao muito diferentes:

cada device driver processa um ´unico tipo de dispositivo, quando muito uma classe de dispositivos.

Com as arquitecturas actuais, os device drivers t ˆem que fazer parte do kernel.

Tipicamente os device drivers s ˜ao fornecidos pelos pr ´oprios fabricantes de dispositivos de E/S:

device drivers s ˜ao ligados dinamicamente ao kernel;

SOs incluem um conjunto de func¸ ˜oes que podem ser invocadas por device drivers

20

(11)

Interrupt Handler: Passos T´ıpicos

Guardar registos que n ˜ao tenham sido guardados pelo HW.

• Inicializar um contexto para execuc¸ ˜ao da subrotina de processamento da interrupc¸ ˜ao (pode envolver, MMU).

• ACK controlador de interrupc¸ ˜oes.

• Executar a subrotina de processamento de interrupc¸ ˜ao propriamente dita:

Dever ´a ser t ˜ao curta quanto poss´ıvel.

Desbloquear o driver (processo) que originou a interrupc¸ ˜ao:

Solicitar execuc¸ ˜ao do escalonador (o qual poder ´a desencadear uma comutac¸ ˜ao de processos).

• Permitir interrupc¸ ˜oes.

A lic¸ ˜ao ´e: o processamento de interrupc¸ ˜oes pode ter um custo elevado (dependendo da arquitectura do sistema).

21

Camada Independente do Dispositivo de E/S

Garante uniformidade nos nomes:

Em Unix/Linux, a maioria dos dispositivos de E/S podem ser designados por uma string, nome dum ficheiro de /dev

Func¸ ˜oes:

protege o acesso aos dispositivos;

fornece uma interface uniforme para acesso aos device

drivers;

realiza buffering;

processa e reporta erros;

arbitra o acesso a dispositivos que exigem acesso em exclus ˜ao m ´utua.

Obs.- Estas s ˜ao func¸ ˜oes t´ıpicas. Por vezes, os device drivers

realizam algumas destas func¸ ˜oes.

22

(12)

Uniformidade na Interface

Facilita a adic¸ ˜ao de drivers para novos dispositivos:

as func¸ ˜oes que devem ser suportadas s ˜ao bem definidas;

as func¸ ˜oes do kernel que podem usar tamb ´em.

Operating system Operating system

Disk driver Printer driver Keyboard driver Disk driver Printer driver Keyboard driver

(a) (b)

• Em Unix, a generalidade dos dispositivos pode ser acedida atrav ´es dum ficheiro no direct ´orio /dev:

O SO usa os mesmos mecanismos de controlo de acesso para ficheiros e para dispositivos de E/S.

23

Buffering

User process

User space

Kernel space

2 2

1 1 3

Modem Modem Modem Modem

(a) (b) (c) (d)

Permite o desacoplamento entre a execuc¸ ˜ao do processo que solicita a operac¸ ˜ao de E/S e a execuc¸ ˜ao desta.

O SO pode suportar um conjunto de buffers, buffer pool:

um dispositivo pode usar mais do que um buffer ; diferentes dispositivos podem partilhar o buffer pool;

evita-se o lock excessivo de p ´aginas.

O uso de double buffering permite a recepc¸ ˜ao de dados ao mesmo tempo que outros s ˜ao passados `a aplicac¸ ˜ao.

24

(13)

Buffering e SW de Rede

Na transmiss ˜ao, buffering permite que uma chamada ao sistema retorne assim que os dados tiverem sido copiados para o kernel.

Na recepc¸ ˜ao, o uso de buffers permite que o processo funcione de modo ass´ıncrono `a comunicac¸ ˜ao.

2

1 5

4

3

User process

Network Network

controller User

space

Kernel space

• O SW de rede pode envolver v ´arias c ´opias:

no processamento de cada protocolo de rede, h ´a que acrescentar/remover os respectivos headers e/ou trailers.

25

User-Space SW para E/S

• Func¸ ˜oes de bibliotecas:

que invocam chamadas ao sistema, p.ex. read();

que formatam a sa´ıda, p.ex. printf().

Spooling:

Processo (daemon) que tem acesso exclusivo ao

“dispositivo” de E/S;

Direct ´orio de spooling.

Exemplos:

impress ˜ao;

email.

• Protocolos de comunicac¸ ˜ao (n ˜ao muito comum).

26

(14)

Resumo do Processamento de E/S

I/O request

Layer

I/O

reply I/O functions Make I/O call; format I/O; spooling

Naming, protection, blocking, buffering, allocation Set up device registers; check status

Wake up driver when I/O completed Perform I/O operation

User processes Device-independent

software Device drivers Interrupt handlers

Hardware

27

Sincronizac¸ ˜ao nas Operac¸ ˜ oes de E/S

• As chamadas ao sistema envolvendo operac¸ ˜oes de E/S podem oferecer 3 mod ˆelos de sincronizac¸ ˜ao:

Com bloqueio o processo bloqueia at ´e a operac¸ ˜ao de E/S terminar:

Para certas operac¸ ˜oes de escrita, o SO apenas copia os dados de user-level para kernel-level e escalona a operac¸ ˜ao.

F ´acil de usar.

Sem bloqueio o processo n ˜ao bloqueia:

o SO passa a informac¸ ˜ao de que disp ˜oe;

Ass´ıncrona a chamada ao sistema inicia a operac¸ ˜ao, e o processo continua a sua execuc¸ ˜ao:

O SO notifica o processo, usando sinais em Unix, posteriormente quando a operac¸ ˜ao terminar.

Dif´ıcil de usar.

Threads permitem usar apenas chamadas ao sistema com possibilidade de bloqueio.

28

(15)

E/S Ass´ıncrona em POSIX

• POSIX define v ´arias func¸ ˜oes para E/S ass´ıncrona:

int aio_read(struct aiocb *racbp);

int aio_write(struct aiocb *racbp);

int aio_cancel(int fd, struct aiocb *acbp);

ssize_t aio_return(const struct aiocb *acbp);

int aio_error(const struct aiocb *acbp);

• struct aiocb ´e a estrutura de dados essencial:

struct aiocb {

int aio_fildes;

off_t aio_offset; /* no file position */

volatile void *aio_buf;

size_t aio_nbytes;

struct sigevent aio_sigevent; /* on completion */

int aio_lio_opcode;

int aio_reqprio; /* AIO priority */

}

29

E/S Ass´ıncrona em POSIX

• Como ´e que se sabe que a operac¸ ˜ao terminou?

Via polling o processo pode usar aio error() para interrogar o SO sobre o resultado da operac¸ ˜ao (retorna EINPROGRESS se a operac¸ ˜ao ainda n ˜ao tiver terminado).

Atrav ´es de notificac¸ ˜ao de eventos ass´ıncronos Sinais

Func¸ ˜oes a executar por um thread, o qual pode ser criado para processar uma ´unica notificac¸ ˜ao quando ocorre ou para processar todas as notificac¸ ˜oes.

• Sinais podem ser usados para comunicac¸ ˜ao:

quer entre processos;

quer entre o kernel e processos.

30

(16)

E/S Ass´ıncrona em POSIX

union sigval { /* Data passed with notification */

int sival_int; /* Integer value */

void *sival_ptr; /* Pointer value */

};

struct sigevent {

int sigev_notify; /* Notification method */

int sigev_signo; /* Notification signal */

union sigval sigev_value; /* Data passed with notification */

void (*sigev_notify_function) (union sigval);

/* Function used for thread

notification (SIGEV_THREAD) */

void *sigev_notify_attributes;

/* Attributes for notification thread (SIGEV_THREAD) */

pid_t sigev_notify_thread_id;

/* ID of thread to signal (SIGEV_THREAD_ID) */

};

31

Sinais POSIX

22222222222222222222222222222222222222222222222222222222222222222

Signal Cause

22222222222222222222222222222222222222222222222222222222222222222 SIGABRT Sent to abort a process and force a core dump

22222222222222222222222222222222222222222222222222222222222222222 SIGALRM The alarm clock has gone off

22222222222222222222222222222222222222222222222222222222222222222 SIGFPE A floating-point error has occurred (e.g., division by 0) 22222222222222222222222222222222222222222222222222222222222222222

SIGHUP The phone line the process was using has been hung up 22222222222222222222222222222222222222222222222222222222222222222

SIGILL The user has hit the DEL key to interrupt the process 22222222222222222222222222222222222222222222222222222222222222222

SIGQUIT The user has hit the key requesting a core dump

22222222222222222222222222222222222222222222222222222222222222222 SIGKILL Sent to kill a process (cannot be caught or ignored)

22222222222222222222222222222222222222222222222222222222222222222 SIGPIPE The process has written to a pipe which has no readers 22222222222222222222222222222222222222222222222222222222222222222

SIGSEGV The process has referenced an invalid memory address 22222222222222222222222222222222222222222222222222222222222222222

SIGTERM Used to request that a process terminate gracefully

22222222222222222222222222222222222222222222222222222222222222222 SIGUSR1 Available for application-defined purposes

22222222222222222222222222222222222222222222222222222222222222222 SIGUSR2 Available for application-defined purposes

22222222222222222222222222222222222222222222222222222222222222222 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

32

(17)

Sinais

• Um processo pode indicar ao SO o que deve acontecer quando da ocorr ˆencia dum sinal:

ignorar, nem todos os sinais podem ser ignorados;

process ´a-lo, n ˜ao ´e v ´alido para todos os sinais;

usar processamento por omiss ˜ao, normalmente terminar o processo.

• Unix oferece 2 chamadas ao sistema:

sigfunc *signal(int signo, sigfunc *handler) para instalar signal handlers:

typedef void sigfunc(int);

int kill(pid t pid, int signo) para sinalizar um evento a um processo.

• POSIX especifica func¸ ˜oes diferentes:

O processamento de sinais ´e complicado porque os eventos s ˜ao ass´ıncronos `a execuc¸ ˜ao dos processos.

33

Referências

Documentos relacionados

Este relatório da actividade do Provedor do Cliente incide sobre o período de Junho a Dezembro de 2009, com início a 2 de Junho, data do lançamento oficial do site do

Os riscos envolvidos nas operações de renda fixa são inferiores aqueles envolvidos nas operações de renda variável, fazendo com que este tipo de aplicação seja procurado por

Cabe resaltar que en el Programa Escuela Nueva las guías de aprendizaje se configuran en una herramienta central, lo que ha llevado a denominar la escuela, bajo esta

Testes com os inseticidas pirimifós metílico e cipermetrina aplicados em combinação com os sinergistas na população de São José do Rio Preto-SP, mostraram que no tratamento

Para memorizar todas as funções do MKP-150/MKP-151 (pode consultar a lista completa no manual de instalador da PowerMax+), entre no menu de instalador da PowerMax+ a partir do

De modo geral, essas metáforas são presentes em obras de outros escritores modernas e contemporâneos japoneses, em maior ou menor grau, muitos inexistentes na

Em 4 de novembro de 1996, por ocasião dos 100 anos do nascimento de Antonin Artaud, a Associação Teat(r)o Oficina Uzyna Uzona realizou uma “leitura dramática”, no Museu de Arte

As informac;oes podem ter origem dentro (sistema ERP) ou fora da empresa (clientes, fornecedores, etc.). 0 sistema utiliza essas informac;oes para executar as func;oes