Atualizado em 28/05/98

Prof. Rui Mano
E-mail:
rmano@tpd.puc-rio.br

ENTRADAS E SAIDAS - CONTINUAÇÃO

MÉTODOS DE EXECUÇÃO DE E/S


E/S POR PROGRAMA
Inicialmente a comunicação entre UCP e periféricos era controlada por um conjunto especial de instruções de E/S executadas pela própria UCP. Com as controladoras (ou interfaces), a UCP podia solicitar o início da transferência de dados à controladora e depois a UCP ficava testando o estado do dispositivo para verificar se a operação de E/S terminara. Assim, a UCP ficava num loop de espera e teste ("busy wait").

Outra forma foi liberar a UCP para outras tarefas e, a intervalos regulares, testar o dispositivo ("polling"). Este esquema viabilizou os primeiros sistemas multiprogramáveis, pois no intervalo de tempo entre duas varreduras consecutivas do dispositivo (entre dois pollings) a UCP ficava livre para executar outras tarefas. O polling ainda hoje é usado, por exemplo, em linhas de comunicação serial.

CONSIDERAÇÕES:

São 2 tempos de espera:

Podemos imaginar a situação, fazendo uma analogia com um telefone que não tivesse campainha. Seria necessário tirar o fone do gancho periodicamente, para ver se alguma comunicação está em curso. No entanto, tal como o telefone, há outro meio de resolver esse problema: usar um "sinal de chamada", o que equivale a solicitar ao dispositivo que execute uma tarefa e que avise quando tiver terminado; enquanto isto, o processador poderia fazer outras coisas.

E/S COM INTERRUPÇÃO


Neste esquema, a UCP emite a instrução de E/S para a interface e desvia sua atenção para executar outra tarefa. A interface verifica o estado do dispositivo e, quando este estiver pronto para iniciar a transferência de dados com a UCP, a interface envia um "aviso" (interrupção) para a UCP, informando que o periféricos está "pronto para transmitir".

Neste caso, a UCP só ficará ociosa durante o tempo de transferência dos dados. No entanto se o programa depender dessa transferência para, por exemplo, executar a próxima instrução, a UCP terá que esperar tal como no item 1.

INTERRUPÇÕES:
Inicialmente, quando começou-se a usar sistemas operacionais, um programa que estivesse sendo executado tomava o controle da máquina e só quando o programa encerrava é que o controle era devolvido para o sistema operacional. Quando ocorria algum problema (por exemplo, um erro no programa) não havia meios do sistema operacional retomar o controle da máquina, exceto com o usuário derrubando o sistema e recarregando o sistema operacional. Ficou então evidente a necessidade de haver um meio do sistema operacional poder retomar o controle da máquina, em situações de exceção.

Também ocorreu que as UCP's ficaram mais rápidas e mais eficientes, porém os dispositivos periféricos de E/S compatíveis progrediram menos em velocidade (ou seja, ficaram comparativamente mais lentos).

A resposta a estes problemas foi a utilização do mecanismo de INTERRUPÇÕES. Interrupções são modificações no fluxo de controle causadas por uma ação externa, geralmente relacionada a Entrada ou Saída. Uma interrupção é um sinal de controle enviado por um agente externo (um dispositivo) ao microprocessador, quando um determinado evento é detectado. A interrupção é um sinal de hardware.

Este mecanismo força o processador a tratar o evento externo. A detecção de uma interrupção faz com que o processador transfira o controle para uma rotina de tratamento de interrupção ("interrupt handler"). A rotina de tratamento de interrupções faz o processador executar as seguintes ações:

INTERRUPÇÕES DE SOFTWARE ("TRAPS"OU "EXCEPTIONS")
Interrupções de software são devidas a:

PRIORIDADES E MASCARAMENTO DAS INTERRUPÇÕES
Pode ocorrer que um ou mais dispositivos enviem sinal de interrupção simultaneamente ao processador. Neste caso, o processador atenderá primeiramente ao dispositivo de mais alta PRIORIDADE. São prioritárias para atendimento as interrupções devidas a:

Durante o atendimento a uma interrupção, o processador não poderá simultaneamente atender a outra interrupção. Para evitar essa situação, existe o recurso de habilitar / desabilitar as interrupções, de forma que o processador, ao iniciar o atendimento a uma interrupção, DESABILITA as demais interrupções e, ao terminar o atendimento, volta a habilitar todas as interrupções. Algumas interrupções não são MASCARÁVEIS (isto é, não podem ser desabilitadas), tais como os erros de hardware e reset.

PROCESSAMENTO DA INTERRUPÇÃO
O processamento de uma interrupção inclui os seguintes passos: salvamento do contexto do programa, execução da rotina de E/S e restauração do contexto original (volta ao programa principal). A seguir, é apresentado um fluxograma mostrando os passos para o tratamento de uma interrupção.

O processamento de interrupções tem como uma de suas principais características a transparência. Isso significa que o programa interrompido não é afetado, sendo que a interrupção pode ocorrer e ser atendida a qualquer momento (na realidade, o instante de ocorrência de uma interrupção é totalmente imprevisível) sem causar problemas à execução do programa que estiver sendo executado (exceto, é claro, perder um pouco de tempo devido ao processamento da interrupção).

A seguir é apresentado um diagrama mostrando o circuito que controla as interrupções num IBM PC XT, utilizando o circuito integrado Controlador de Interrupções 8259A

A seguir são descritos os passos no atendimento de uma interrupção com o 8259A:

DMA ou Acesso Direto à Memória (implementada na controladora)


Nesse estágio da tecnologia, um problema permanecia insolúvel: toda transferência de dados entre memória e periféricos exigia a intervenção da UCP. A técnica de DMA (Acesso Direto à Memória ou, em inglês, Direct Memory Access) permite que dados sejam transferidos entre a memória e periféricos, ocorrendo intervenção da UCP apenas no início e ao final da transferência.

CONSIDERAÇÕES
Quando a UCP deseja ler ou gravar algum bloco de dados em um dispositivo de E/S, a UCP envia um comando específico para o controlador DMA. Este comando contém:

Durante uma transferência DMA, a UCP fica liberada para efetuar outras tarefas. Ao completar a operação de transferência, o controlador DMA envia um sinal para a UCP (uma interrupção) avisando que a transferência foi completada e os dados estão disponíveis. A área de memória utilizada pelo controlador na técnica de DMA é chamada 'buffer'.

O controlador DMA pode assumir temporariamente o controle do barramento do sistema. Para isso, será necessário que a UCP suspenda o acesso ao barramento. O barramento de dados do sistema é usado para transferir instruções e dados, tanto pela UCP quanto pelos controladores de E/S. Desta forma, quando em um determinado instante existir concorrência entre um dispositivo DMA e a UCP pela utilização do barramento, será necessário que um controlador (chamado arbitrador ou árbitro de barramento) controle o acesso ao barramento, determinando qual dispositivo terá prioridade para acessar o barramento. Ao contrário do que poderia parecer óbvio, a prioridade geralmente é para dispositivos como a unidade de disco magnético, porque sendo um dispositivo com partes móveis que não podem ser paradas, submetê-los a espera poderia em alguns casos causar perda de dados. Se a UCP em um dado instante não tem concorrência pelo acesso ao barramento, todos os ciclos do barramento podem ser usados pela UCP para acesso à memória. No entanto, quando algum dispositivo estiver requerendo acesso ao barramento, ocorrerá roubo de ciclos do barramento para possibilitar a transferência dos dados do dispositivo, o que ocasiona perda de desempenho do computador.

 

[P15] [Índice] [Home-page] [Início da Página] [Seção Anterior] [Próxima Seção]

[Sistemas de Numeração] [Representação de Dados] [Componentes do Computador] [Representação de Instruções] [Circuitos Lógicos] [Entrada e Saída] [Tópicos Avançados de Arquitetura] [Sistemas de Arquivos] [Glossário]