Você está na página 1de 71

Universidade Federal de Santa Catarina

Bacharelado em Tecnologias da Informação e


Comunicação

CIT 7243 - Introdução às TIC


Unidade 5: Componentes de um computador

Parte 5.6.: Entrada e Saída

Prof. Juarez Bento da Silva, Dr. Eng.


Março - 2019
UNIDADE 5: Componentes de um computador.
5.1. Estrutura e Funcionamento do computador.
5.2. Unidade Central de Processamento.
5.3. Memória.
5.4. Sistema de Interconexão.
5.5. Entrada/Saída

12/25/2020 Parte 2.5. 2


Periféricos
Computador

CPU Memória
Principal
Computador Sistema de
Interconexão

Entrada/
Saída

Linhas de
Comunicação

12/25/2020 Parte 2.5. 3


Dispositivos de entrada e saída e sua comunicação com a
CPU

12/25/2020 Parte 2.5. 4


Dispositivos e Controladores de
Entrada/Saída
– Neste Módulo, revisamos a estrutura e os princípios de
funcionamento de vários dispositivos de entrada/saída comuns,
tanto em dispositivos que oferecem ou mostram dados durante a
execução, como aqueles que capturam dados para arquivamento
ou processamento adicional.

12/25/2020 Parte 2.5. 5


Conceito de periférico

– Periférico:
– Todo aquele
dispositivo externo Periféricos
que se conecta a uma
CPU através das
unidades ou módulos
de entrada/saída
(E/S).
– Permitem armazenar
informações ou
comunicação do
computador com o
mundo externo.
12/25/2020 Parte 2.5. 6
Classificação dos periféricos
– Comunicação:
– Homem-máquina
– (Terminal) teclado, mouse, …
– (Impressão) plotter, scanner, …
– Máquina-máquina
– Modem, adaptador de rede...
– Meio físico
– (Leitura/acionamento) x
– (analógico/digital)
– Armazenamento:
– Acesso “direto” (Discos, DVD, …)
– Acesso seqüencial (Fitas)

7
Dispositivos e Controladores de
Entrada/Saída
Arquitetura de um computador incluindo o sub-
sistema de e/s

12/25/2020 Parte 2.5. 8


Dispositivos e Controladores de
Entrada/Saída
CPU Registradores

PC ALU
Bus Sistema Bus de Memória

Bridge Memória
Bus interface Principal
E/S

Bus E/S
slots de expansão para
outros dispositivos, tais
Controlador Interface Controlador
como adaptadores de rede
USB Gráfica de Disco

Mouse Teclado Display


Disk

12/25/2020 Parte 2.5. 9


Dispositivos e Controladores de
Entrada/Saída
Registradores O interpretador de comandos lê os caracteres
CPU ASCII “./hello” cr do teclado
PC ALU
Bus Sistema Bus de Memória

Bridge Memória "hello"


Bus interface
E/S Principal

Bus E/S
slots de expansão para
Controlador Interface Controlador outros dispositivos, tais
USB Gráfica de Disco como adaptadores de rede

Mouse Teclado Display


Disk
Usuário digita "hello"

12/25/2020 Parte 2.5. 10


Dispositivos e Controladores de
Entrada/Saída
Execução do programa hello
CPU Registradores
"hello,world\n"
PC ALU
Bus Sistema Bus de Memória

Bridge Memória Código de


Bus interface hello
E/S Principal

Bus E/S slots de expansão para outros


dispositivos, tais como
Controlador Interface Controlador adaptadores de rede
USB Gráfica de Disco

Mouse Teclado Display


hello executável
"hello,world\n" Disk
Armazenado em disco.

12/25/2020 Parte 2.5. 11


Dispositivos e Controladores de
Entrada/Saída
O arquivo executável “hello” é carregado em
Register file
CPU memória central
PC ALU
Bus Sistema Bus de Memória

Bridge Memória Código


Bus interface de
E/S Principal
hello

Bus E/S
slots de expansão para
outros dispositivos, tais
Controlador Interface Controlador
como adaptadores de rede
USB Gráfica de Disco

Mouse Teclado Display


hello executável
Disk
Armazenado em disco.

12/25/2020 Parte 2.5. 12


Dispositivos de Entrada e Saída
– Um sistema de entrada/saída requer tanto dos componentes de
hardware necessários, como de uma estrutura de programas
que manejem de forma adequada e eficiente os dispositivos.
– O Sistema Operacional (SO) estabelece uma interface entre os
dispositivos e o resto do sistema.
– Uma das mais importantes funções do SO é controlar os
dispositivos periféricos:
– Enviar comandos aos dispositivos
– Receber / enviar dados
– Aperceber-se das interrupções
– Tratar erros

12/25/2020 Parte 2.5. 13


Dispositivos de Entrada e Saída
– Tipos e características de periféricos I/O:
– Existem diversos periféricos I/O que podem ligar-se a um
computador.
– São 3 as características que permitem organizá-los:
– Comportamento: entrada (uma leitura), saída (uma escrita, sem
leitura), ou armazenamento (leituras e escritas).
– Utilizador: humano ou máquina.
– Taxa de dados: taxa à qual a informação pode ser transferida
entre o periférico e a memória principal ou o processador.
– Por exemplo, um TECLADO é um periférico de entrada, usado por
humanos e com taxa de dados de 10 bytes por segundo.

12/25/2020 Parte 2.5. 14


Dispositivos de Entrada e Saída
– Esquema interno de um teclado

12/25/2020 Parte 2.5. 15


Dispositivos de Entrada e Saída
– Exemplo:
Memória Secundária

Dispositivos de Entrada Dispositivos de Saída


ALU UC

Unidade Central de Processamento

Memória

12/25/2020 Parte 2.5. 16


Dispositivos de Entrada e Saída

– Taxa de transferência de dados:


– Taxa máxima (ou de pico) em que os dados podem ser transferidos
entre o dispositivo de E/S e a memória principal ou o processador.

Dispositivo Taxa (bytes/segundo)


Teclado 10 B/s
Mouse 100 B/s
Modem 56K 7 KB/s
Impressora laser 100 KB/s
Disco IDE 5 MB/s
Disco EIDE (ATA) 16.7 MB/s
Monitor XGA (1024x768) 60 MB/s
Tape 320 MB/s
Sun Gigaplane XB 20 GB/s

12/25/2020 Parte 2.5. 17


Dispositivos de Entrada e Saída

– Os dispositivos de E/S se comunicam com a CPU e a memória


através dos barramentos do sistema que já conhecemos.
– Estes dispositivos são heterogêneos e de características muito
variadas, pelo que resultaria muito complicado para que a CPU
se encarregasse de manejá-los, tanto os dispositivos eletrônicos
(monitores de vídeo ou sensores), como os que dispõem de
muita mecânica em seu funcionamento (discos ou fitas
magnéticas).

12/25/2020 Parte 2.5. 18


Dispositivos de Entrada e Saída
– Exemplo:

12/25/2020 Parte 2.5. 19


Dispositivos de Entrada e Saída

– Por isso, normalmente, cada dispositivo ou grupo de


dispositivos periféricos conta com um controlador de dispositivo,
cuja eletrônica inclui controladores e chips especializados no
manejo deste tipo de dispositivos.
– Estes controladores de dispositivos admitem ordens ou
comandos muito abstratos que lhes podem ser enviados pela
CPU, e que uma vez recebidos se encarregam de realizá-los,
liberando assim o processador principal para realizar todas as
tarefas de baixo nível e com qualquer tipo de dispositivo.

12/25/2020 Parte 2.5. 20


Periféricos e unidades de E/S

– Periférico:
– Dispositivo que interatua Periférico

com o entorno.
– Unidade ou Módulo de
Módulo de
Entrada/Saída: E/S
– Também denominado
controlador.
– Interface entre dispositivo e o
processador, que oculta as
particularidades dos
dispositivos.

12/25/2020 Parte 2.5. 21


Controlador de dispositivo
– As unidades ou módulos de E/S realizam a conexão dos
dispositivos periféricos com o processador ou a
memória.
Bus
Memória

Módulo de E/S

Dispositivo

12/25/2020 Parte 2.5. 22


Exemplo: Disco Rígido

Periféricos

Dispositivos

Módulo de
E/S

12/25/2020 Parte 2.5. 23


Controlador de dispositivo

– São necessários devido a:


– Grande variedade de periféricos.
– Os periféricos são muito heterogêneos.
– A velocidade de transferência de dados dos periféricos
é muito menor que a da memória ou do processador.
– Os periféricos são ‘muito lentos’.
– Formatos e tamanhos de palavra dos diferentes
periféricos aos do computador ao qual se conectam.

12/25/2020 Parte 2.5. 24


Funções dos controlador de
dispositivo
– Controle e temporização.
– Comunicação com o processador ou da memória.
– Comunicação com o periférico.
– Buffering ou armazenamento intermediário.
– Detecção de erros.

12/25/2020 Parte 2.5. 25


Dispositivos de Entrada e Saída

– Assim! Temos que o controlador de dispositivos atua de


interface entre a CPU e o dispositivo de E/S, permitindo a
realização de operações mais ou menos complexas com
relativa facilidade.
– Cada controlador pode se ocupar de um ou vários dispositivos
do mesmo tipo.
– Vamos nos ocupar nesta seção de como trabalham os
controladores de dispositivos que tem interface direita com o
processador principal.
– Para abreviar, quando falamos aqui de um dispositivo nos
referiremos a algo formado pelo próprio dispositivo mais o
controlador correspondente.
12/25/2020 Parte 2.5. 26
Dispositivos de Entrada e Saída

– A forma que habitualmente os controladores de dispositivos


oferecem para receber instruções de um processador, ou de
oferecer informação de seu estado mediante registradores ou
portas.
– Um controlador dispõe de algumas portas (entre 2 e 30) que
podem ser de leitura, de escrita ou de leitura-escrita.
– As de escrita são as que são utilizadas para enviar dados e
ordens ou comandos das operações que tem que realizar,
enquanto que os de leitura servem para ler dados e informar o
estado interno.

12/25/2020 Parte 2.5. 27


Dispositivos de Entrada e Saída

Controlador

Comandos

CPU Estados

Dados

12/25/2020 Parte 2.5. 28


Dispositivos de Entrada e Saída
– Propósito:
– Um controlador de E/S é a entidade responsável do controle
de um ou mais dispositivos do mesmo tipo, e do intercambio
de dados entre tais dispositivos e a memória principal ou os
registradores da CPU.
– Um controlador tem duas interfaces: uma interface interna
ao computador, com a qual se comunica com a memória e a
CPU, e outra externa ao computador, com a qual se
comunica com o dispositivo periférico.

12/25/2020 Parte 2.5. 29


Dispositivos de Entrada e Saída

– As principais funções de um controlador de entrada/saída são estas:


– Controle e Temporização, para coordenar o fluxo de tráfego entre a
CPU ou memória e o dispositivo periférico.
– Comunicação com a CPU, que implica as seguintes tarefas:
1. Decodificação dos comandos que vêm da CPU (LER SETOR,
ESCREVER SETOR, POSICIONAR-SE NA TRILHA n, ...)
2. Intercambio de dados com a CPU.
3. Informar o estado do dispositivo (OCUPADO, PREPARADO, ...).
4. Reconhecimento do endereço dos dispositivo, ou seja, identificar
que os dados que vem dos barramentos são endereçados a um
dispositivo e não a outro.

12/25/2020 Parte 2.5. 30


Dispositivos e Controladores de
Entrada/Saída
– Organização de Entrada/Saída para alta performance.
Interrupções
UCP Memória
Principal
Cache
Barramento de Memória

Adaptador de Adaptador de
Proprietário
Barramento Barramento
Barramentos e
AGP Padrão
Portas Barramento PCI
Intermediárias Adaptador de
Barramento
Controlador de E/S Barramento de E/S

Controlador de E/S Controlador de E/S Controlador de E/S


Mostrador Gráfico
(Display)
Rede Disco Disco CD/DVD

– Entrada e saída por meio de barramentos de E/S intermediários e secundários.

12/25/2020 Parte 2.5. 31


Dispositivos e Controladores de
Entrada/Saída
– Os controladores de E/S apresentados nos “slide” anterior atendem
às seguintes regras:
1. Isolar a UCP e memória dos detalhes de operações do
dispositivo de E/S e dos requisitos específicos da Interface.
2. Facilitar a expansão nas capacidades e inovações na tecnologia
dos dispositivos de E/S sem prejudicar o projeto e operação da
UCP.
3. Gerenciar a (potencialmente grande) diferença de velocidade
entre processador/memória de um lado e dispositivos de E/S
do outro lado, por meio de armazenamento temporário.
4. Converter formatos de dados ou codificações e garantir
protocolos de transferência de dados.

12/25/2020 Parte 2.5. 32


Interface com Periféricos
– Sistema computacional típico ( “modelo Von Neumann”)

12/25/2020 Parte 2.5. 33


Interface com Periféricos
– Todos os componentes do sistema têm influência no
desempenhos das tarefas necessárias à realização da E/S:
– Dispositivos de E/S
– O processador
– O software básico
– A hierarquia de memória
– Na época atual todas as máquinas (de grande porte, desktops e
até portáteis) usam processadores integrados feitos com a
mesma tecnologia :
– O diferencial das máquinas é o sistema de E/S.

12/25/2020 Parte 2.5. 34


Programação de Entrada/Saída

• O Papel do Sistema Operacional


– O Sistema operacional é o principal responsável pelo
tratamento da E/S.
• Garante que o programa do usuário somente acesse os
dispositivos de E/S para os quais o programa de usuário
tenha permissão.
• Fornece rotinas de manipulação das operações de baixo
nível dos dispositivos de E/S.
• Trata as interrupções geradas pelos dispositivos (da
mesma maneira que trata as exceções geradas por um
programa).

12/25/2020 Parte 2.5. 35


Programação de Entrada/Saída
• Métodos de Comunicação.
• Módulo de E/S

12/25/2020 Parte 2.5. 36


Programação de Entrada/Saída

• Comandos de Entrada/Saída:
– Tipos de comandos que podem ser enviados do processador
para um dispositivo de E/S:
• Controle: ativar um periférico e indicar uma ação a ser
executada.
• Teste: testar várias condições de estado.
• Leitura: fazer com que o dispositivo de E/S obtenha um item
de dado do periférico, armazenando-o no registrador de
dado.
• Gravação: faz com que o dispositivo de E/S obtenha um item
de dado (byte ou palavra) do barramento de dados,
transmitindo-o para o periférico.
12/25/2020 Parte 2.5. 37
Endereçamento de E/S
– Hardware para endereçamento de E/S.
Controle
Control Barramento
Memory
Endereços
Address debus
Memória
Dados
Data

Endereço EstadoDevice status


do Dispositivo
Device do
Dispositivo
address

DadoDevice
do Dispositivo
data
Compare
Comparação

= Control
Lógica de
logic
Controle Device do
Controlador
controller
Dispositivo

– Endereçamento lógico para um controlador de dispositivos de E/S.

12/25/2020 Parte 2.5. 38


Programação de Entrada/Saída

• Métodos de Endereçamento:
– E/S mapeada em memória (em inglês, memory-mapped
I/O) ou E/S mapeada em portas (em inglês, port-mapped
I/O ou port I/O) são dois métodos complementares de
executar entrada/saída entre a CPU e os dispositivos
periféricos no computador.
– Outro método, não discutido nesta apresentação, é usar
um processador dedicado de E/S (comumente
conhecido como canal em computadores mainframe)
que executa suas próprias instruções.

12/25/2020 Parte 2.5. 39


Programação de Entrada/Saída

• Métodos de Endereçamento:
– Entrada/Saída Independente
• Barramento possui linhas de comandos de entrada e
saída
• Uma linha de comando especifica se um endereço
corresponde a uma posição de memória ou a um
dispositivo de E/S

12/25/2020 Parte 2.5. 40


Dispositivos de Entrada e Saída
– Acesso aos dispositivos:
– Portas de E/S
– A cada registrador dos diversos controladores é atribuído um
número designado Porta I/O.
– O acesso é feito utilizando instruções em linguagem de baixo
nível (habitualmente assembly).
– in registrador, porta.
– copia o conteúdo do registrador do controlador de
periférico para um registrador da CPU.
– out porta, registrador.
– copia o conteúdo de um registrador da CPU para um
registrador do controlador

12/25/2020 Parte 2.5. 41


Programação de Entrada/Saída

• Métodos de Endereçamento:
– Entrada/Saída Mapeada na Memória:
• Parte do espaço de endereçamento é reservado aos
dispositivos de entrada/saída.
• Leituras e escritas envolvendo estes endereços são
interpretadas como comandos.
• Uma operação de escrita na memória é usada para enviar
dados para um dispositivo de E/S.
• Barramento não precisa ter linhas especiais para
comandos (somente para leitura e escrita)

12/25/2020 Parte 2.5. 42


Programação de Entrada/Saída
• Memory-mapped I/O:
• Deste modo o acesso aos dispositivos é feito como se
tratasse de um acesso à memória.
• Cada registrador controlador é mapeado para uma posição de
memória.
• Uma escrita ou leitura nessa posição de memória corresponde
na realidade a uma escrita/leitura no registrador do
controlador.
• Pode-se também ter acesso híbrido:
– Acesso a alguns dispositivos por memory-mapped I/O.
– A outros dispositivos acesso por portas.
– Ou mesmo acesso dos dois modos ao mesmo dispositivo.
12/25/2020 Parte 2.5. 43
Programação de Entrada/Saída

• Memory-mapped I/O vs Portas I/O

Memória Memória Memória

Portas I/O Portas I/O

Acesso por portas Memory-mapped I/O Acesso híbrido

12/25/2020 Parte 2.5. 44


Programação de Entrada/Saída

• Existem basicamente três formas diferentes de efetuar


operações de E/S:
– Programada (Polling).
– Por interrupções.
– Por DMA (Acesso Direto a Memória).

12/25/2020 Parte 2.5. 45


I/O Programada

– A CPU efetua todo o trabalho de E/S.


– Dispositivo de E/S:
• Executa a operação requisitada.
• sinaliza o término da operação carregando um valor
apropriado no registrador de estado de E/S.
– O Processador:
• Não é alertado sobre o término da operação.
• Após despachar cada dado (byte ou bloco), verifica se o
periférico está pronto para continuar.
• Precisa ficar verificando periodicamente o estado do
dispositivo de E/S.
• O processador passa maior parte do tempo em espera ativa.
12/25/2020 Parte 2.5. 46
I/O Programada

• Processador + rápido que


dispositivos de E/S.
• Processador gasta uma grande
quantidade do tempo.
• Porém, se um dispositivo pode
iniciar operações de entrada e
saída de maneira
independente…
– Polling precisa ser usado!
– Exemplo: mouse

12/25/2020 Parte 2.5. 47


I/O Programada

• Exemplo de impressão de uma string utilizando E/S


programada.
4. CPU envia caracteres sempre que
1. String a 2. String copiada 3. CPU envia 1º a impressora está pronta a
imprimir para o núcleo caracter receber
Página a
Utilizador imprimir

Viva
V Viv
Núcleo Viva Viva Viva

– Enquanto a impressora imprime um caractere, a CPU permanece em espera


ativa, até poder enviar o próximo.
12/25/2020 Parte 2.5. 48
I/O Programada

• O processador inicializa a E/S verificando se o dispositivo está


pronto para enviar/receber dados.
– Em cada interação, uma única unidade de dados é
transferida.
• Se o dispositivo não estiver pronto, o processador não precisa
esperar, ao contrário, ele pode fazer outras tarefas e verificar
novamente, mais tarde, o estado do dispositivo.
• Nenhum problema surge desde que o processador verifique o
dispositivo de E/S suficientemente rápido para assegurar que
nenhum dado é perdido.

12/25/2020 Parte 2.5. 49


I/O Programada
• Exemplos:
• Que fração de tempo de uma CPU de 1 GHz será gasta na interrogação periódica
dos seguintes dispositivos se cada ação de pesquisa gasta 800 ciclos de clock?
a. Teclado deve ser interrogada pelo menos 10x por segundo.
b. Floppy envia 4 bytes de cada vez, a uma taxa de 50 KB/s.
c. Disco rígido envia 4 bytes de cada vez, a uma taxa de 3 MB/s.
─ Solução:
a. Teclado, dividimos o número total de ciclos necessários para 10 interrogações
pelo número total de ciclos disponíveis em 1s:
─ (10  800)/109  0.001%
b. O floppy disk pode ser interrogado 50K/4 = 12,5K vezes por seg.:
─ (12.5K  800)/109  1%
c. O hard disk pode ser interrogado 3M/4 = 750K vezes por seg.:
─ (750K  800)/109  60%

12/25/2020 Parte 2.5. 50


Transferência por Interrupção

• Com este modelo, o processador envia/recebe dados do


periférico, mas depois pode-se dedicar a outro processo.
• Entretanto quando o periférico está pronto para continuar,
interrompe o processador.
• Após a interrupção o processador envia/recebe mais dados e
assim sucessivamente até a operação de E/S estar concluída.
• Vantagem:
– Maior rendimento – o processador pode-se ocupar de outros
processos, enquanto não chega uma interrupção.
• Desvantagem:
– As interrupções ocorrem com demasiada freqüência.

12/25/2020 Parte 2.5. 51


I/O por Interrupções

• Interrupções de hardware (vetorizadas)


2. Controlador ativa linha
de interrupções 11 12 1
10 2
9
8 4
3 Relógio
7 6 5

Teclado
Controlador
CPU de
Interrupções Disco

Impressora

3. CPU envia Acknowledge

1. Dispositivo termina I/O


4. Controlador coloca interrupt vetor no BUS IRQ é ativada

12/25/2020 Parte 2.5. 52


Transferência por Interrupção

• Do lado do processador:
1. Envia um comando READ
2. Prossegue a execução de outras instruções
3. No final de cada ciclo, verifica se existe alguma instrução
pendente
4. Ao detectar uma interrupção, salva o contexto e processa a
interrupção (lendo a palavra e armazenando-a na memória)
• Do lado do dispositivo de E/S:
1. Recebe comando READ
2. Lê o dado requerido do periférico
3. Quando o dado estiver em seu registrador de dados,
interrompe o processador.

12/25/2020 Parte 2.5. 53


Transferência por Interrupção
• Mas onde está o ganho em relação ao
Polling?
– Está na relação de velocidades
CPU/periféricos!
• E se houver mais de uma interrupção a ser
atendida?
– Usar interrupções com prioridades
– E para interrupções de mesma
prioridade? Fazer polling entre elas…
• OBS: nas transferências por polling e por
interrupção
– o processador controla totalmente a
transferência
– Os dados passam por dentro do
processador (usando seus
registradores!)
12/25/2020 Parte 2.5. 54
Transferência por Interrupção

• Um grande quantidade de tempo de UCP é perdido em interrogações


periódicas quando o dispositivo está inativo ou não está pronto para
transmitir dados.
– Mesmo dispositivos lentos podem causar sobrecargas inaceitáveis quando
existem diversos desses dispositivos que devem ser continuamente
interrogados.
• Um sensor de temperatura, por exemplo, não precisa enviar dados para o computador,
a menos que exista uma variação que exceda a um limiar pré-estabelecido.
• Em E/S acionada por interrupção, é o dispositivo que inicia a E/S
enviando um sinal de interrupção para a UCP.
– Quando um sinal de interrupção é recebido pela UCP, ele transfere o controle
para uma rotina de interrupção especial que determina a causa da interrupção
e inicia a ação apropriada.

12/25/2020 Parte 2.5. 55


Transferência por Interrupção
• Considere uma unidade de disco rígido que transfere blocos de 4 bytes de
dados a 3MB/s quando está ativo e que permanece ativa 5% do tempo.
• A sobrecarga (overhead) de interromper a UCP e fazer a transferência é de
cerca de 1.200 ciclos de clock de um processador de 1GHz.
• Qual fração de tempo de UCP é gasta no atendimento a unidade de disco?
• Solução:
– 3MB/4 = 750 K vezes por segundo...então quando ativo o disco rígido
produz 750K interrupções por segundo.
– 0,05 x (750K x 1.200)/109 = 4,5% (comparando com os 60% do polling)
• Mesmo que a sobrecarga (overhead) de E/S acionada por interrupção seja
maior quando o disco está ativo, o tempo total gasto da E/S é muito menor.

12/25/2020 Parte 2.5. 56


Transferência por Interrupção
• Habilitação de Interrupção:
– Quando um sinal de interrupção é detectado, desde que a interrupção ou a classe
de interrupções não esteja mascarada, a UCP reconhece a interrupção e inicia a
execução de uma rotina de serviço de interrupção.
– Os passos a seguir são cumpridos para atender a uma requisição de interrupção:
1. Salvar o estado da UCP e chamar a rotina de serviço de interrupção.
2. Desabilitar todas as interrupções.
3. Salva um mínimo de informações sobre a interrupção na pilha.
4. Habilitar interrupções (pelo mais as de maior prioridade).
5. Identificar a causa da interrupção e atender a requisição.
6. Restaurar o estado da UCP que existia antes da última interrupção.
7. Retornar da rotina de serviço da interrupção.

─ A capacidade de manusear interrupções aninhadas é importante para se lidar com


múltiplos dispositivos de E/S.
12/25/2020 Parte 2.5. 57
Acesso Direto à Memória (DMA)

• Semelhante a E/S programada, mas o controlador DMA


substitui o processador.
• O processador limita-se a dar as instruções necessárias ao
controlador de DMA para iniciar a transferência de dados.
• Quando o controlador termina a transferência de dados, notifica
o processador através de uma interrupção.
• Vantagem:
– Uma só interrupção após toda a operação de E/S terminar.
• Desvantagem (só em alguns casos):
– Este esquema pode não funcionar se o periférico for
demasiado rápido em relação ao controlador de DMA.

12/25/2020 Parte 2.5. 58


Acesso Direto à Memória (DMA)

• Liberta o processador em transferências de dados que


envolvem a memória e periféricos

BUS 4. Transferência de dados

1. CPU programa o
controlador DMA 2. DMA REQ

Endereço
buffer
Contador
Controle
3. DMA ACK

5. Interrupção Controlador Controlador


CPU Memória RAM
de DMA de Disco

12/25/2020 Parte 2.5. 59


Acesso Direto à Memória (DMA)
• Desvantagens das transferências por polling e por interrupção:
– 1. Taxa de transferência limitada pela velocidade que o
processador pode testar e servir o dispositivo.
– 2. O processador se ocupa de gerenciar a transferência de
dados de E/S, tendo que executar várias instruções a cada
transferência.
• Um controlador de DMA pode ter mais de um canal:
– Neste caso, cada canal possui.
• um par de sinais de requisição e confirmação
• Um conjunto de registradores.
– Em caso de conflitos, é seguida uma ordem de prioridades.

12/25/2020 Parte 2.5. 60


Acesso Direto à Memória (DMA)
• Estrutura de um Controlador de DMA.

12/25/2020 Parte 2.5. 61


Acesso Direto à Memória (DMA)
• Um controlador de DMA é, essencialmente, um processador simples que pode
ganhar da UCP o controle do barramento de memória e, então, atuar como a
UCP faria no controle das transferências de dados entre dispositivos de E/S e
memória.
• A UCP interage com o controlador de DMA do modo como ela faz com os
dispositivos de E/S, exceto que apenas dados de controle são trocados.
• Durante uma transferência de DMA, a UCP pode continuar a executar instruções
desde que não envolvam transferência de dados pelo barramento de memória.
– Por exemplo, nas UCP modernas, dada a alta taxa de acerto na cache
(caches L1 e L2 combinados) tipicamente integrada na mesma pastilha da
UCP.
– Por outro lado, se a UCP precisar usar o barramento de memória, por conta
de falhas de acesso a cache ou outro evento, ela deverá esperar até que o
controlador de DMA libere o barramento.

12/25/2020 Parte 2.5. 62


Níveis de E/S

• O modelo de I/O para um sistema operacional, pode ser


descrito por várias camadas funcionais.
Pedido de I/O I/O concluído

Utilizador Chamadas ao sistema, spooling

Uniformidade de nomes, bloqueio,


Device independent software protecção, buffering
Programação, escrita e leitura dos
Device drivers registradores dos controladores
Desbloquear o driver quando a
Tratamento de interrupções
operação de I/O está concluída

Hardware

12/25/2020 Parte 2.5. 63


Tratamento de Interrupção
– Quando ocorre uma interrupção, o SO tem diversas tarefas a
efectuar:
– Salvaguardar o conteúdo dos registos do processador
– Estabelecer um contexto para a rotina de tratamento da
interrupção (que no fundo é um processo).
– Enviar sinal de ACK ao controlador de interrupções (ou
reactivá-las, se não existir controlador).
– Executar a rotina de tratamento da interrupção.
– Escolher um novo processo para correr.
– Entretanto pode ter desbloqueado um processo
prioritário, por isso o processo que vai correr não é
necessariamente aquele que perdeu o processador
devido à interrupção.

12/25/2020 Parte 2.5. 64


Device Drivers

• Código que permite o controlo de um dado dispositivo (contém o


código para programação do controlador do dispositivo
correspondente).
• Geralmente o fabricante do dispositivo fornece também o device
driver do mesmo.
• Seria desejável que os device drivers corressem em modo
utilizador.
– Evitava-se que bugs no código dos device drivers pudessem
interferir com o núcleo do SO.
• Este não é habitualmente o caso – o mais comum é os device
drivers correrem em modo núcleo (modelo mais fácil de
implementar).

12/25/2020 Parte 2.5. 65


Device Drivers

• Em tempos idos, o código de específico para controlo de cada


periférico era compilado juntamente com o núcleo do SO.
– Isto acontecia porque nos antigos sistemas era rara a ligação
de novos periféricos.
• Atualmente os sistemas operativos suportam o carregamento
dinâmico de device drivers.
– Por exemplo os loadable modules do Linux
• (comandos modprob, lsmod, insmod, etc.)
– Plug and play no Windows
• Ligar o dispositivo e carregar o driver, de uma forma
amigável

12/25/2020 Parte 2.5. 66


Device Independent I/O

• Apresentar ao programador (utilizador) uma interface de acesso


aos dispositivos sempre da mesma forma, independentemente do
dispositivo.
– Exemplo: escrever num disco, disquete ou CD-RW sempre da mesma
forma.
• Uniformizar os nomes pelos quais os dispositivos são
referenciados pelo sistema.
• Tratamento de erros
– Efetuar o tratamento dos erros originados pelos dispositivos.
– Exemplos:
• Enviar documento para uma impressora desligada
• Leitura de um setor do disco que está danificado
• Um utilizador tentar enviar dados para o teclado (!)
12/25/2020 Parte 2.5. 67
Nível do utilizador

• Chamadas ao sistema que iniciam as operações de I/O


• Normalmente organizadas em bibliotecas acessíveis ao
utilizador (programador).
– Bibliotecas na directoria lib no Unix/Linux.
– APIs no Windows.
• Exemplo no Unix/Linux:
– Chamada ao sistema read.
• Leitura de dados de um dispositivo, identificado por um
dado descritor.
– Chamada ao sistema write:
• Escrita de dados num dispositivo, identificado por um
dado descritor.

12/25/2020 Parte 2.5. 68


Nível do utilizador

• Spooling:
– Técnica para controlar o acesso a periféricos dedicados.
– Utilizadores diferentes podem utilizar o mesmo periférico
dedicado, mas tem que ser à vez.
– Exemplo – impressora:
• Existe um diretório especial (spooling directory) para onde os
utilizadores enviam os documentos que pretendem imprimir.
• Um processo (daemon) do SO encarrega-se de ir
despachando os documentos para a impressora, mas de uma
forma ordenada (eventualmente com prioridades).

12/25/2020 Parte 2.5. 69


Níveis de E/S

• Transferências síncronas e assíncronas


– Suporte para:
• transferências de dados síncronas, bloqueantes
• transferências de dados assíncronas, com base em interrupções
(o tipo de transferência mais vulgar)
– Um dos objetivos do SO é tentar fazer com que uma transferência
assíncrona pareça síncrona para o utilizador (mais fácil de programar).
• Proteção e bloqueio:
– Alguns periféricos (e.g., gravador de CDs) apenas permitem
a sua utilização a um só processo de cada vez.
– Se outro processo tentar aceder, duas opções são possíveis:
• Devolver erro na chamada ao sistema correspondente.
• Bloquear o processo até que o periférico esteja livre.

12/25/2020 Parte 2.5. 70


Dados da Disciplina

Final do Tópico 2.6 da


Unidade 2.

12/25/2020 Parte 2.5. 71

Você também pode gostar