Entrada e Saída
Sistemas Operacionais
Introdução
Todos os processos dependem de recursos de entrada e saída. Seja para receber dados ou para apresentar resultados.
Há diversos tipos de dispositivos de entrada e saída ligados a um computador, tais como:
●
Mouse, teclado, discos, adaptadores de vídeo, dispositivos USB, conexões de rede, adaptadores de áudio, impressoras, dispositivos de acessibilidade e vários outros...Introdução
A ligação dos dispositivos ao computador pode ser por meio de cabos ou através de comunicação sem fio.
Internamente, as ligações são realizadas através de barramentos (conjuntos de trilhas - conceitualmente semelhantes a pequenos fios elétricos).
Cada barramento utiliza um protocolo de controle, para gerenciar a comunicação e possui diferentes características, tais como largura e banda.
Introdução
Cada dispositivo de E/S ligado ao computador será gerenciado pelo SO. Para que o SO saiba como se comunicar e controlar cada um destes dispositivos, um Device Driver deverá ser fornecido.
Os dispositivos de E/S podem ser classificados grosseiramente entre:
●
Armazenamento;●
Comunicação;●
Interface com usuário;Entrada e Saída
As operações de E/S costumam ser feitas através:
●
E/S em porta●
E/S mapeada em memóriaEntrada e Saída
E/S em porta:
Portas específicas para realizar operações de entrada e saída foram os primeiros recursos computacionais criados para que o processador solicite, ou envie, dados para dispositivos de E/S. O endereço das portas são fixados por hardware.
Estes dispositivos precisam ser associados a um endereço de porta, em nível de BIOS, e estarão disponíveis apenas em Modo Real ou Modo Kernel.
Obs.: processadores trabalhando em modo 64 bits
Entrada e Saída
Exemplos de portas de comunicação de cada dispositivo:
Intervalo de endereço de E/S Dispositivo
000h - 00Fh Controlador DMA
020h - 021h Controlador de Interrupção
040h - 043h Relógio
200h - 20Fh Controlador de jogo 2F8h - 2FFh Porta serial secundária
320h - 32Fh Controlador de disco 378h - 37Fh Porta paralela 3D0h - 3DFh Controlador gráfico
Entrada e Saída
E/S em porta - exemplo em porta paralela:
mov dx,378h
mov al, CARACTERE out dx, al
Link com exemplo:
Entrada e Saída
E/S mapeada em memória:
Uma abordagem um pouco mais nova do que a utilização de portas de E/S é o mapeamento de um determinado endereço de memória física para um dispositivo de E/S.
Desta forma, quando o processador executa um MOV no endereço associado a um dispositivo de E/S, estará lendo, ou gravando, do dispositivo associado a aquele endereço.
Este mapeamento dá origem ao plug & play, que é o processo de escolha de um determinado endereço para um novo dispositivo em tempo de execução.
Entrada e Saída
E/S mapeada em memória:
Esta abordagem ainda é dominante em sistemas embarcados e é utilizada pelos SOs apenas em modos de execução com a permissão adequada, tal como em modo Kernel ou em Drivers.
Nela, intervalos de memória física são reservados para os dispositivos de E/S.
Entrada e Saída
E/S mapeada em memória:
Memória Principal
IOMMU MMU
Dispositivo CPU
endereço físico
Entrada e Saída
E/S mapeada em memória - exemplo LPT:
FFE0: Caractere para imprimir FFE2: Status da impressora Código Assembly: aguarda: mov bx, [FFE2] and bx, 1 cmp bx, 0 je 0000 imprimi: mov [FFE0], ax ...
Entrada e Saída
E/S mapeada em memória - Atividade prática!
Entrada e Saída
DMA - Acesso Direto à Memória:
Para dispositivos que trabalham com grandes volumes de dados (tal como em discos), é um enorme desperdício fazer com que o processador se responsável por solicitar que cada dado lido seja armazenado em memória.
●
Somado a isto, lembramos que todos os dispositivos de E/S costumam ser muito mais lentos do que a memória RAM.Entrada e Saída
DMA - Acesso Direto à Memória:
O DMA também é protegido, por questões de segurança (utilização apenas através de modo Kernel).
Durante transferências DMA, o processador pode operar apenas com seus registradores e memória cache, pois a memória RAM e o barramento estarão ocupados na transferência dos dados.
Entrada e Saída
Método Vantagem Desvantagem
Porta Simples Limitado
Mapeado em memória Plug and Play Utiliza memória
DMA Eficiente Complexo
Interface de E/S da aplicação
Entrada e Saída
Interface de E/S da aplicação
Além do modo básico de acesso aos dispositivos de E/S, outras questões muito importantes devem ser levadas em consideração ao se planejar as interfaces de comunicação: drivers.
Há diferentes dimensões, quando se diferenciam dispositivos de E/S. No próximo slide são apresentados exemplos:
Interface de E/S da aplicação
Dimensão Variação Exemplo
Modo de transferência de dados Caractere Bloco
Terminal Disco Método de acesso Sequencial
Aleatório
Modem SSD Agendamento de transferência Síncrono
Assíncrono HDD Teclado Compartilhamento Dedicado Compartilhável Fita magnética Teclado Velocidade do dispositivo Latência Tempo de busca Taxa de transferência Atraso entre operações
Direção de E/S Apenas leitura Apenas escrita Leitura e escrita CD-ROM Controladora gráfica Disco
Interface de E/S da aplicação
Por questões de segurança, somente os drivers dos dispositivos executam em modo com a permissão necessária para comunicar com os dispositivos.
Entretanto, a maioria dos OS também tem um escape que permite aos aplicativos enviar comandos diretamente para os drivers dos dispositivos, caso necessário. Em Linux, isto é feito através da chamada de sistema ioctl():
#include <sys/ioctl.h>
Interface de E/S da aplicação
Dispositivos de Rede:
Devido às características e ao crescente número de aplicações que precisam trocar dados através de redes:
●
Mecanismos diferenciados foram criados na maior partes dos SOs para comunicação em rede;●
Uma das formas mais comuns é a interfacesocket, que funciona como se fosse um cabo (ou
um encanamento) para troca de dados entre dois computadores;
Interface de E/S da aplicação
Relógios e Temporizadores:
Três tipos de serviços de tempo são geralmente necessários em SOs modernos:
●
Obter a data e hora atuais;●
Obter o tempo decorrido desde um evento prévio;●
Definir um temporizador para disparar um evento X em um momento T.■ Um temporizador de interrupção programável (PIT - programmable interrupt timer) pode ser utilizado como gatilho de operações e para medir o tempo decorrido.
Interface de E/S da aplicação
Bloqueio em E/S:
As operações de E/S podem ser: ● Com Bloqueio (síncrona):
■ o processo é movido para a fila de espera quando a E/S é solicitada. Ao terminar a E/S ele retorna para a fila de prontos.
● Sem Bloqueio (assíncrona):
■ o processo continua sem interrupção, mesmo que a operação E/S não tenha concluído.
■ uma abordagem comum dos programadores (para evitar o bloqueio) é de implementar um programa com múltiplas
threads. Desta forma, apenas as threads responsáveis
Interface de E/S da aplicação
Bloqueio em E/S:
Interface de E/S da aplicação
Buffering (retenção):
Um buffer é uma região de memória que guarda dados temporariamente. O buffering em E/S é realizado por ao menos 3 principais motivos:
1.
Diferença de velocidade entre dois dispositivos;2.
Diferença de tamanho em transferência de dados;Interface de E/S da aplicação
Buffering (retenção):
1.
Diferença de velocidade entre dois dispositivos:■ Um dispositivo lento deve escrever dados em um buffer.
■ Tudo que foi escrito será enviado rapidamente ao dispositivo rápido.
■ É comum a implementação de 2 buffers:
■ Enquanto o dispositivo lento escreve no buffer A,
o dispositivo rápido lê do buffer B. E vice-versa.
■ Isto é conhecido como double buffering e é
muito utilizado em animação gráfica (um buffer é visualizado e outro está em construção)
Interface de E/S da aplicação
Buffering (retenção):
2.
Diferença de tamanho em transferência de dados: ■ É mais utilizado em comunicação de redes;■ As mensagens escritas em sockets costumam ser muito maiores do que os pacotes de transferência podem carregar. Então, cada mensagem é quebrada em partes menores (em um buffer) e enviadas ao destinatário;
■ Ao receber a mensagem fragmentada, o destinatário deverá armazenar os pacotes em um
buffer, até ser capaz de montar a mensagem
Interface de E/S da aplicação
Buffering (retenção):
3.
Para suportar “semântica de cópia”:■ Quando um processo solicita uma escrita em disco, os dados a serem gravados são copiados da memória do usuário para um buffer no kernel.
■ Os dados serão eventualmente gravados pelo
kernel mais tarde:
■ É importante para o SO registrar o tempo correto da solicitação, para fins de registro no arquivo.
■ É utilizado em outros contextos, não apenas para discos.
Interface de E/S da aplicação
Caching:
Um cache é uma cópia de dados em algum local mais ágil do que o original (geralmente armazenado):
●
Caching e Buffering são muito similares, exceto que o buffer detém a única cópia de um determinado dado naquele momento, enquanto o cache supõem a duplicidade em outro local.■ Na prática ambos trabalham em conjunto. Ex.: após um buffer ser escrito no disco, a cópia em memória pode ser usada como cache.
Interface de E/S da aplicação
Spooling (reserva de dispositivo):
Um spool (simultaneos peripheral operations on-line) é um buffer especial para dispositivos que não suportam fluxos de dados intercalados.
Ex.: uma impressora não pode imprimir dois documentos ao mesmo tempo.
●
Nesta caso, cada buffer é um arquivo.●
Ao terminar de escrever o arquivo (fechar), o SO sabe que aquele buffer está pronto para ser enviado ao dispositivo.Conclusões
●
Do ponto de vista do processador, tudo são operações de escrita e leitura (saída e entrada);●
Diferentes recursos de E/S devem ser disponibilizados pelo SO, principalmente para resolver divergências de multiprogramação e de paralelismo.●
Dos níveis mais baixos (driver) até os níveis mais alto (chamadas de sistema) o SO é responsável por controlar e viabilizar operações que executam fundamentalmente sobre o hardware.Exercícios
1.
Geralmente os computadores tem dois gerenciadores DMA, com 4 canais cada.a. Pesquise qual é a utilização mais comum para cada canal.
b. Qual é o comando Linux para verificar a utilização dos canais DMA?
2.
Sobre drivers:a. Busque informações e informe quais são os principais requisitos para desenvolver um driver de dispositivo para o SO Windows.
b. Por que drivers necessitam de privilégios especiais e não podem rodar em modo usuário?
Exercícios
3.
Classifique as dimensões de um socket, no que se refere às seguintes dimensões:a. Modo de transferência de dados; b. Método de acesso;
c. Agendamento de transferência; d. Compartilhamento;
e. Direção de E/S;