400 likes | 476 Views
Entrada e Saída. Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani. Princípios básicos de hardware. Periférico é um dispositivo conectado a um computador de forma a possibilitar sua interação com o mundo externo
E N D
Entrada e Saída Ambientes OperacionaisProf. Simão Sirineo Toscanistoscani@inf.pucrs.brwww.inf.pucrs.br/~stoscani
Princípios básicos de hardware • Periférico é um dispositivo conectado a um computador de forma a possibilitar sua interação com o mundo externo • Os periféricos são conectados ao computador através de um componente denominado interface • As interfaces são interconectadas aos barramentos internos do computador • As interfaces possuem registradores internos, através dos quais são acionadas • Interfaces possuem um microprocessador (controlador ou controladora) dedicado a realização e controle das operações de entrada e saída
Arquitetura de Entrada e Saída • Dispositivo de E/S possui uma parte mecânica e outra eletrônica
Dispositivos de Entrada e Saída • Classificados como: • Orientados a caractere • Unidade de transferência é o caractere • E.g. Teclado, interface serial (mouse) • Orientados a bloco • Unidade de transferência de dados é um bloco de caracteres (tamanho fixo) • E.g. disco • Nem todos dispositivos se enquadram: • E.g. relógio
Dispositivos de Entrada e Saida • Apresentam características próprias • Taxa de transferência de dados • Complexidade de controle • Unidade de transferência • Representação de dados • Tratamento de erros
Tipos de conexão e transferência de dados • Dois tipos de intefaces • Interface Serial • Apenas uma linha p/ transferência (bit) • Interface Paralela • Mais de uma linha (8 linhas - byte)
Como controladores e SO interagem? • Controladora é programada via registradores da interface (registradores de configuração) • Registradores podem ser vistos de duas maneiras (definido pela arquitetura) • E/S mapeada em espaço de E/S • E/S mapeada em espaço de memória
Espaço de endereçamento • Conjunto de endereços de memória que o processador consegue acessar diretamente • A forma de acessar os registradores (das interfaces) dos periféricos é definida no projeto do processador: • Espaço único • Dois espaços, um deles dedicado à E/S • No caso de haver 2 espaços, existem instruções específicas para acessar um ou outro espaço de endereçamento
Mapeamento em espaço de E/S • Processador possui duas áreas distintas de endereçamento • O espaço de E/S é acessado com instruções especiais, diferentes das outras que acessam memória principal
Mapeamento em espaço de memória • Um único espaço de endereçamento • Parte da memória fica reservada para E/S • Os periféricos são acionados através das instruções normais de acesso à memória
Técnicas para realizar E/S • E/S programada • E/S orientada à interrupções • Acesso direto à memória
E/S programada • Toda interação entre o processador e o controlador é de responsabilidade do programador • Ciclo de funcionamento • Envia comando ao controlador • Espera término do comando • Processador espera o término da operação
Desvantagem • Desperdício de tempo de CPU para verificar estado da operação de E/S • CPU é muito mais rápida • Solução é inserir operações entre sucessivas consultas sobre o estado da operação • Polling • Qual freqüência do polling?
E/S orientada à interrupção • Processador inicia a operação de E/S • CPU é interrompida quando termina a operação de E/S • Enquanto interrupção não ocorre, a CPU pode executar outras tarefas (portanto, evita desperdício de tempo de CPU)
Desvantagem • CPU é intermediária • Toda palavra lida do (ou escrita no) periférico passa pela CPU
DMA – Acesso direto à memória • Transfere diretamente um bloco de dados entre o dispositivo E/S e a memória • Interrupção só quando acaba a transferência de todo o bloco • Processador só se envolve com E/S no início e no fim da transferência
Objetivos da gerência de E/S • Eficiência • Uniformidade é desejável: • Todos dispositivos enxergados da forma mais uniforme possível • Esconder os detalhes (estes são tratados pelas camadas de mais baixo nível) • Fornecer abstrações genéricas: read, write, open e close
Princípios básicos de sw de E/S • Subsistema de E/S é complexo dada a diversidade de periféricos • Padronizar ao máximo para reduzir número de rotinas • Novos dispositivos não alteram a visão do usuário em relação ao SO • Organizado em camadas
Visão Geral do software de E/S • Tratador de interrupção • É acionado ao final da operação de transferência • Aciona driver • Driver de dispositivo • Recebe requisições • Configura (aciona) o controlador • E/S independente de dispositivo • Nomes e proteção • bufferização • E/S a nível de usuário • Chamadas de E/S
Driver de Dispositivo • Conjunto de estruturas de dados e funções que controlam um ou mais dispositivos com interface bem definida • Fornecido pelo fabricante do periférico • Vantagens: • Isola código especifico do dispositivo • Facilita adicionar novos drivers • O kernel fica isolado de modificações dos drivers • O sistema tem uma visão uniforme dos dispositivos
E/S Independente de dispositivo • Escalonamento • Determina melhor ordem para atendimento à requisições de E/S • Divide de forma justa o acesso a periféricos • Manipulação de buffers • Área de armazenamento temporária • Cache • Permitir o acesso rápido aos dados • Spooling • Controlar acesso a dispositivos que atendem apenas uma requisição por vez • Direitos de acesso • Controlar acesso à dispositivos de acordo com as suas permissões • Tratamento de erros • Informar à camada superior que houve erro
E/S a nível de usuário • Implementação, em nível de linguagem de programação, de rotinas que permitem programas fazer acesso à dispositivos • Estas rotinas estão em bibliotecas da linguagem • Interagem com as funções da API do SO (chamada de sistema)
Dispositivos Periféricos Típicos • Existem vários tipos de dispositivos • Vamos discutir alguns, mais típicos
Disco • Dispostos em alturas diferentes com auxílio de um eixo central (spindle). • A tecnologia atual permite superpor até 8 discos. • As duas superfícies de cada disco são recobertas por uma película magnética na qual os dados são gravados. • O eixo gira a uma rotação constante (e.g. 5400 rpm) • Os cabeçotes de leitura/gravação (um para cada superfície de disco) realizam movimentos de vai-e-vem (seek)
Disco • A definição de trilhas (tracks) e setores (sectors) é chamada formatação • Acesso antigamente feito por número do cilindro, trilha e setor. • Hoje, o controlador do disco tem um endereço linear LBA (linear block address)
Disco • Partes do disco podem ser separadas em unidades lógicas • partições
Disco • Tempo de acesso • Onde • taccessé o tempo de acesso total • tseeké o tempo de movimentação do cabeçote • tlatencyé o tempo de atraso rotacional • ttransferé o tempo para transferir os dados
Disco • Entrelaçamento • Evita latência rotacional em setores adjacentes • Numerar setores de forma não contígua
Disco • Escalonamento • Que fazer quando várias requisições chegam? • Chegam mais rápido que seu atendimento • O controlador pode escolher diferentes estratégias para melhorar performace • FCFS (First Come First Served) • SSTF (Shortest Seek Time First) • SCAN (Variação do SSTF) • C-SCAN (SCAN unidirecional)
Vídeo • Nos PCs antigos eram mapeados em memória • Podia-se escrever no vídeo através de uma posição de memória específica • Hoje, são bem mais sofisticados • Possuem capacidade de processamento • Recebem diretivas mais complexas (e.g.: desenha um retângulo com preenchimento da cor tal) • Alguns sistemas permitem mais de um monitor por CPU! Pode-se visualizar duas telas (distintas) ao mesmo tempo
Teclado • Pode ser visto como uma matriz de i linhas e j colunas, que entram em contato quando uma tecla é pressionada • Cada elemento i,j da matriz corresponde a um caractere (tecla).
Teclado • Quando uma tecla é pressionada, o teclado gera um scan code (código de varredura) e gera uma interrupção. • O tratador de interrupção obtém o scan code e armazena o código ASCII correspondente numa região especial da memória (buffer de teclado) • Os caracteres digitados são lidos do buffer de teclado através de chamadas do SO • Para o usuário final, são disponibilizadas rotinas de biblioteca, como por exemplo, getc() na linguagem C • Os usuários querem visualizar os caracteres digitados na tela: ecoamento. • No caso de várias janelas abertas, os caracteres digitados devem ser direcionados à janela correta. O direcionamento é feito através do conceito de “janela ativa”.
Rede • Uma rede é um conjunto de computadores interconectados de forma a compartilhar recursos comuns: discos, impressoras, arquivos, etc. • A interconexão envolve o emprego de um hardware especial: a interface de rede • A tecnologia usada na interface, determina como fisicamente os dados serão transmitidos, a velocidade de transmissão, a capacidade de transmitir e receber ao mesmo tempo (full duplex), etc.
Hardware da placa de rede • A placa de rede transforma os sinais digitais em sinais analógicos, usados na transmissão. • Possui um processador dedicado (o contro-lador de rede) e uma capacidade de memória (buffers), onde os dados a serem transmitidos ou recebidos são armazenados. • Trabalha orientada a eventos: • Final da transmissão (este evento é interpretado como disponibilidade para nova transmissão) • Recepção de uma mensagem (significa que uma mensagem deve ser lida).
Software de rede • Independentemente da tecnologia e dos aspectos físicos do hardware, o software de gerenciamento de rede deve tratar de problemas similares. • Como esse software é complexo e envolve muitas abstrações, ele é organizado em camadas (e.g., modelo OSI/ISO).
Software envolvido na transmissão de uma msg • Um processo A quer enviar uma mensagem para um processo B, executado em uma máquina remota • Primeiro problema: a quantidade de bytes da msg pode ser maior que a quantidade máxima fisicamente permitida. Solução: dividir a mensagem em pacotes menores (fragmentação) • Para cada pacote transmitido, a placa de rede gera uma interrupção para sinalizar que ela está pronta para enviar outro pacote. • No outro extremo, a máquina do processo B, deve receber os pacotes e remontar a msg. Para cada pacote recebido é gerada uma interrupção (e o pacote transferido para um buffer maior) (continua)
Software envolvido na transmissão de uma msg • Como o driver de rede identifica que estes dados são para o processo B e não para outro processo? Como ele não mistura os pacotes recebidos? Solução: criar canais lógicos entre os processos (estabelecidos antes de começar o envio/recepção de dados) • Outro problema: pacotes podem ser perdidos (por erros no meio físico ou por falta de espaço no buffer do destinatário). Solução: o destinatário deve contar os pacotes e sinalizar as perdas ao remetente • Outro problema: o pacote i+1 chega antes do pacote i. Isto ocorre quando, devido a um erro, o pacote i é retransmitido, enquanto o i+1 é recebido corretamente, ou quando o pacote i+1 utiliza um caminho mais curto que o pacote i (roteamento). Solução: o software deve ser capaz de ordenar os pacotes recebidos e descartar os pacotes repetidos
Protocolo de comunicação • Todos os problemas e procedimentos vistos nos dois slides anteriores (e muitos outros) são gerenciados pelo que se denomina protocolo de rede. • Um exemplo bem conhecido de protocolo é a familia TCP/IP, pois toda a Internet está baseada nessa família. • Os protocolos são implementados em camadas: no nível mais baixo estão as placas de redes, no mais alto está a aplicação do usuário.