Sd02 (si) gerenciamento de entrada e saída

Post on 13-Jan-2015

267 views 1 download

description

 

Transcript of Sd02 (si) gerenciamento de entrada e saída

Sistemas DistribuídosSistemas Distribuídos

Parte 2Gerenciamento de Entrada e Saída

Professor Eduardo Xavier

Objetivos do controle de E/S Objetivos do controle de E/S

• Emitir comandos para os dispositivos– Na maioria das vezes, os programas e o próprio SO

enxergam os dispositivos de uma forma que não é a sua real interface. Por exemplo:

– Discos são vistos como blocos de bytes, em vez de trilhas e cilindros.

– Partições lógicas em um mesmo disco são vistas como discos fisicamente diferentes

• Atender interrupções– Sempre que uma operação de I/O (Input/Output)

termina, é preciso informar ao SO que o processo que solicitou a operação já pode ser desbloqueado. Isso é feito por meio de uma “interrupção”.

Professor Eduardo Xavier

Objetivos do controle de E/S (cont.)Objetivos do controle de E/S (cont.)

• Manipular erros– Se ocorre algum problema em uma operação de I/O, é

preciso que o erro seja tratado. O tratamento do erro geralmente se processa de duas formas:

– Definir um curso de ação para fazer com que a operação de I/O seja processada corretamente (exemplo: repetir a operação)

– Gerar uma mensagem de erro que será encaminhada para o SO (ou para quem solicitou o I/O)

Professor Eduardo Xavier

Diversas formas de “ver” o hardwareDiversas formas de “ver” o hardware

• Dependendo do ponto de vista de cada indivíduo, o hardware pode ser encarado de uma maneira diferente– Programadores de aplicações enxergam cada dispositivo

da forma como suas aplicações devem manipular os dados– Projetistas de SO visualizam a forma como cada dispositivo

vai interagir com o sistema operacional– Projetistas de hardware focalizam sua atenção em

consumo de energia e trocas de sinais elétricos entre cada dispositivo e o restante do hardware do computador

• Nesta parte da disciplina vamos concentra nossa atenção em como o HW é programado e manipulado pelo sistema operacional, sem se preocupar com funciona interno.

Professor Eduardo Xavier

Dispositivos de Entrada/SaídaDispositivos de Entrada/Saída

• Podemos classificar os dispositivos de I/O em três categorias:

1. Dispositivos organizados em BLOCOS

2. Dispositivos organizados em CARACTERES

3. Dispositivos organizados de outra forma

Professor Eduardo Xavier

Dispositivos de Entrada/SaídaDispositivos de Entrada/Saída• Categoria 1: Dispositivos de BLOCO

• Neste tipo de dispositivo as informações são armazenadas e transmitidas em blocos de tamanho fixo e cada bloco tem um endereço próprio que permite sua localização.

• Normalmente, o tamanho do bloco varia entre 128 e 4096 bytes (mas não se trata de uma restrição e sim de um padrão normalmente adotado pela indústria)

• É possível ler ou escrever cada bloco independentemente do outro a qualquer instante

• Exemplo de dispositivo organizado em blocos: – Discos magnéticos

Professor Eduardo Xavier

Dispositivos de Entrada/SaídaDispositivos de Entrada/Saída

• Categoria 2: Dispositivos de CARACTERE• Este tipo de dispositivo libera ou aceita filas de

caracteres sem levar em conta a padronização da estrutura de armazenamento

• As informações enviadas/obtidas por este tipo de dispositivo não são endereçáveis nem aceitam operações de busca aleatória

• Exemplos de dispositivo organizados em caracteres: – Impressoras– Leitoras ópticas

Professor Eduardo Xavier

Dispositivos de Entrada/SaídaDispositivos de Entrada/Saída

• Categoria 3: Outros dispositivos• As duas categorias anteriores abrangem a maioria dos

dispositivos hoje fabricados, porém existem alguns que trabalham de formas diferentes, que não se enquadram nem na transmissão de dados em blocos nem em filas de caracteres

• Exemplo de dispositivo cuja organização não se dá nem em blocos nem em caracteres:

– Relógios - não usam blocos endereçáveis ou filas de caracteres, apenas geram interrupções em intervalos regulares

Professor Eduardo Xavier

Controladores de DispositivosControladores de Dispositivos• Unidades de E/S são o resultado da combinação de

componentes mecânicos e componentes eletrônicos– O componente eletrônico é chamado de controlador de

dispositivo (é comum também ser chamado de device controler ou adapter em literatura técnica)

• Geralmente, é um circuito impresso que pode ser inserido no computador

• Exemplos: controlador de vídeo, controladora de discos

– O componente mecânico é o dispositivo propriamente dito

• Exemplo: vídeo, discos, impressora

Professor Eduardo Xavier

Controladores de DispositivosControladores de Dispositivos

• IMPORTANTE– O SO vê o controlador e não o dispositivo

• O SO usa o(s) barramento(s) para se comunicar com os dispositivos

• Nos mainframes, estes barramentos são chamados de “canais de E/S” e servem para aliviar a carga da CPU

• Entre um controlador e cada dispositivo existe uma interface de baixo nível, responsável por converter a forma como o dispositivo manipula os dados em uma forma padronizada de comunicação– Por exemplo: Discos são formatados em setores, trilhas e

cilindros, mas o driver envia uma lista serial de bits e cabe ao controlador converter esta lista em um grupo de blocos

Professor Eduardo Xavier

Controladores de DispositivosControladores de Dispositivos

Professor Eduardo Xavier

Barramento

MemóriaPrincipal

CPU

Interfaces de baixo nível

Controladorde Discos

Controladorde Vídeo

ControladorUSB

Controladorde

Impressora

OutrosControladores

? ? ?

Controladores de DispositivosControladores de Dispositivos• Registradores internos de cada controlador

– Cada controlador tem uns poucos registradores que são usados para comunicação com a CPU

– Em algumas máquinas estes registradores fazem parte do espaço de endereçamento regular, ou seja, podem ser endereçados diretamente

– O SO realiza operações de E/S escrevendo comandos e parâmetros (que os comandos utilizam) nestes registradores

– Quando o comando é completado, o controlador causa uma interrupção para permitir que a CPU assuma o comando novamente e teste o resultado da operação

– As informações a respeito do andamento da operação também são armazenadas nestes registradores

Professor Eduardo Xavier

Software de Entrada/SaídaSoftware de Entrada/Saída

• O gerenciamento de I/O é organizado como uma série de camadas sobrepostas

– As camadas mais baixas se preocupam com o hardware

– As camadas mais altas se destinam a manter uma interface simples para o usuário

Professor Eduardo Xavier

Software de Entrada/SaídaSoftware de Entrada/Saída

• Conceitos importantes:– Independência do dispositivo físico

• Exemplo: qualquer software que acessa discos deve conseguir funcionar para vários tipos de disco sem necessitar ser recompilado a cada mudança de hardware

– Uniformidade de nome• O nome de um dispositivo deve ser uma cadeia de

caracteres ou um inteiro. A formação deste nome não deve depender do dispositivo

– Manipulação de erros: • Erros devem ser tratados o mais próximo possível do

hardware e só são repassados para as camadas superiores caso não possam ser resolvidos

Professor Eduardo Xavier

Software de Entrada/SaídaSoftware de Entrada/Saída

• Tipos de Transferências de Dados– Transferências Síncronas

• Transferências de dados síncronas são realizadas em blocos

– Transferências Assíncronas• Transferências de dados assíncronas são controladas

por interrupções• Muitos dispositivos de E/S são assíncronos

– A CPU inicia a transferência e vai cuidar de outra coisa enquanto esta é processada até que ocorra uma interrupção

• Para o usuário geralmente isso se apresenta de forma síncrona (blocos), pois facilita a programação

Professor Eduardo Xavier

Software de Entrada/SaídaSoftware de Entrada/Saída

• Existem dispositivos dedicados ou compartilhados por vários usuários– IMPORTANTE: Dispositivos dedicados também podem

gerar DEADLOCK

• O software de E/S pode ser estruturado em 4 camadas:– Software de manipulação de interrupções– Drivers de dispositivos– Software do sistema operacional independente do

dispositivo– Software em nível de usuário

Professor Eduardo Xavier

Camada 1: Software de Manipulação de InterrupçõesCamada 1: Software de Manipulação de Interrupções

• O que são “Interrupções”?– Interrupções são eventos complexos, que

devem ser isolados de modo que apenas uma pequena parte do sistema operacional os manipule• O isolamento pode ser feito através do

bloqueio de processos envolvidos com a operação de I/O solicitada

– Quando a operação de I/O se encerra, uma interrupção é gerada para informar o fato ao sistema operacional

Professor Eduardo Xavier

Camada 1: Software de Manipulação de InterrupçõesCamada 1: Software de Manipulação de Interrupções

• Como funciona o software de manipulação de interrupções?– Ao captar uma interrupção, a rotina de

tratamento da mesma desbloqueia o processo que dependia da operação de I/O• OBS: O bloqueio aconteceu no momento em

que este processo solicitou a execução da operação de entrada/saída, conforme foi visto nas aulas de gerenciamento de processos

Professor Eduardo Xavier

Camada 2: Drivers de DispositivosCamada 2: Drivers de Dispositivos

• O que é um “Driver de Dispositivo”?– Parte do SO que conhece intimamente o

controlador de dispositivo

– Cada driver manipula um dispositivo ou uma classe de dispositivos

– O trabalho do driver é aceitar requisições de software de alto nível e atendê-las

Professor Eduardo Xavier

Camada 2: Drivers de DispositivosCamada 2: Drivers de Dispositivos

• Funcionamento dos Drivers– Os drivers organizam as requisições pendentes em filas– Passos do funcionamento dos drivers:

1. Traduz a requisição em comandos de baixo nível que o controlador de dispositivo entenda

2. Escreve os comandos nos registradores do controlador3. Aguarda a execução ou bloqueia-se (se as operações

forem lentas)4. Verifica erros (quando a operação é completada)5. Repassa o resultado (dados e/ou status) para o

solicitante6. Atende a próxima requisição da fila (volta ao passo 1)

ou aguarda nova requisição (se a fila estiver vazia)Professor Eduardo Xavier

Camada 3: Software Independente de DispositivoCamada 3: Software Independente de Dispositivo

• Este tipo de software realiza operações de E/S que são comuns a todos os dispositivos usando uma interface uniforme para o SW do usuário

• É sua função:– Encarregar-se do mapeamento entre nomes simbólicos de

dispositivos e drivers– Proteger os dispositivos (garante apenas acessos autorizados)– Manipular blocos lógicos de informação de forma padronizada,

independente do dispositivo físico• Exemplo: o SW se encarrega de mostrar ao usuário um tamanho de bloco

lógico único, independente da formatação de cada disco– Executar “bufferrização” para tornar transparente o fluxo de dados– Coordenar a alocação de espaço em dispositivos do tipo BLOCO– Controlar a alocação e liberação de dispositivos dedicados– Gerenciar erros

Professor Eduardo Xavier

Camada 4: Software em Nível de UsuárioCamada 4: Software em Nível de Usuário

• O que é?– É uma pequena porção de software formada por

bibliotecas ligadas (linkadas) juntamente com programas de usuário• Grande parte das “system calls” partem deste

nível• Geralmente, a formatação de uma entrada ou

saída de dados é feita por um procedimento de biblioteca

Professor Eduardo Xavier

Camada 4: Software em Nível de UsuárioCamada 4: Software em Nível de Usuário

• Spooling– Nem todo o software de E/S utilizado pelo usuário

consiste de procedimentos da biblioteca. Outra importante categoria é o spooling.

• Spooling é um modo de negociação com dispositivos dedicados de E/S em sistemas multiprogramados

• Exemplo: Spooling de impresão– Durante as aulas de gerenciamento de processos o

funcionamento do spooling de impressão (fila de impressão) foi usado para exemplificar o problema de condições de corrida

Professor Eduardo Xavier

DISPOSITIVODISPOSITIVO

Resumo da Arquiteturade Entrada/SaídaResumo da Arquiteturade Entrada/Saída

Professor Eduardo Xavier

Gerenciadores de Interrupção

Drivers de Dispositivo

Software Independente do Dispositivo

Processos do Usuário

Camadas

Requisição de E/S Resposta da Requisição de E/S

Funcionalidades

Executa operação de E/S

Identificação, proteção, bloqueio e “bufferização”

Inicializa registradores do dispositivo

Verifica Status da operaçao

Desbloqueia o driver quando a operação de E/S se completa

Executa fisicamente a operação de E/S