Upload
lydang
View
214
Download
0
Embed Size (px)
Citation preview
fig/logo-ifmg
Bacharelado em Ciência da ComputaçãoSistemas Operacionais
Prof. Diego Mello da Silva
Instituto Federal de Minas Gerais - Campus Formiga
27 de março de 2014
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 1 / 33
fig/logo-ifmg
Sumário
1 Visão Geral de I/O
2 Hardware de I/O
3 Interfaces de I/O
4 Ciclo de Vida de Solicitação de I/O
5 Referências Bibliográficas
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 2 / 33
fig/logo-ifmg
Visão Geral de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 3 / 33
fig/logo-ifmg
Visão GeralPrincipais tarefas de um sistema computacional são I/O e processamento
Gerência de I/O: controle de operações e dispositivos de I/O
Dispositivos de I/O variam em função e velocidade
Dispositivos de Armazenamento
Dispositivos de Comunicação
Dispositivos de Interação Humana
São necessários diferentes métodos para controlá-los
Tais métodos foram o subsistema de I/O
Subsistema separa o Kernel dos dispositivos de I/O
Hardware de I/O: portas, barramentos e controladores de dispositivos
Tais elementos suportam grande variedade de dispositivos de I/O
Drivers de dispositivo : módulos que apresentam uma interface uniforme deacesso dos dispositivos ao subsistema de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 4 / 33
fig/logo-ifmg
Hardware de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 5 / 33
fig/logo-ifmg
Hardware de I/ODispositivo comunica-se com sistema enviando sinais através de cabos ou ar
Comunicação com a máquina: portas ou barramentos
Barramentos: Conjunto de fios em comum + protocolo de mensagens
Exemplo de Barramento: PCI (Peripheral Component Interconnect) Bus
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 6 / 33
fig/logo-ifmg
Controladores ou AdaptadoresControlador de Dispositivo: componentes eletrônicos que operam porta ou bus
Composto normalmente por
Processador ou microcontrolador
Microcódigo
Memória
É comum ser encontrado na forma de uma placa de circuito impresso que éinserida em slots de expansão ou embutidos em seus dispositivos de I/O
Processador principal deve enviar comandos e dados a um controlador para quea transferência de I/O se realize
Controlador possui registradores para dados e sinais de controle
Processador lê/escreve padrões de bits nestes registradores
Formas de realizar comunicação (i.e., como processador ‘enxerga’ controlador)
(PMIO) Instruções especiais de I/O para mover byte/palavra para end. de I/O
(MMIO) Mapeando registradores no espaço de endereço do Processador
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 7 / 33
fig/logo-ifmg
Controladores: Registradores da Porta de I/ORegistrador de Dados possuem geralmente de 1 a 4 bytes de tamanho
Alguns controladores possuem buffer FIFO para entrada e saída
Registrador UsoReg. Entrada de Dados Lido pelo processador para obter entradaReg. Saída de Dados Gravado pelo processador para enviar saídaReg. Estado Bits lidos pelo processador que indicam estado: co-
mando corrente foi completado, byte está disponível paraser lido no reg. de entrada, ocorrência de erros no dis-positivo
Reg. Controle Gravado pelo processador para iniciar comando ou mu-dar modalidade do dispositivo (configuração)
Através deste registradores SO pode comandar o dispositivo para entregar ouaceitar dados, ligar/desligar dispositivo, ou executar tarefas.
Tais registradores são usados nas duas modalidades de comunicação
(PMIO) Instruções especiais de I/O para mover byte/palavra para end. de I/O
(MMIO) Mapeando registradores no espaço de endereço do Processador
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 8 / 33
fig/logo-ifmg
Controladores: I/O Mapeada em Porta (PMIO)Instruções especiais de I/O especificam transferência de byte/palavra para umendereço ou porta de I/O (instruções in, inb, inw, inl e out, outb,outw, outl do assembly1)
in _Registrador, _Porta ou out _Porta, _Registrador
Instrução aciona linhas do barramento para selecionar dispositivo
Instruções movimentam dados para dentro e para fora dos registradores
Exemplo em ASM:
; Escreve 0x10 porta paralelaMOV DX,0378HMOV AL,10HOUT DX,AL
Exemplo em C (apenas MS-DOS)
#include <dos.h>
outportb(0x378,0x10);1Ver listagem de portas em http://wiki.osdev.org/I/O_Ports
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 9 / 33
fig/logo-ifmg
Controladores: I/O Mapeada em Memória (MMIO)Registradores do controlador são mapeados no espaço de endereçamento doprocessador
CPU executa solicitação de I/O usando instruções padrão de transferência paraler e gravar nos registradores do controlador. Exemplo:
mov _Endereco, _Valor
onde _Endereco guarda o endereço associado à porta de I/O
Registradores de controle são apenas ‘variáveis’ na memória
Vantagens:
Podem ser endereçados em C da mesma maneira que qualquer variável
Driver de dispositivo de I/O poderia ser escrito totalmente em C
Desvantagem:
Registrador de dispositivo mapeado em memória é vulnerável à umamodificação acidental
Risco é reduzido com uso de memória protegida
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 10 / 33
fig/logo-ifmg
Controladores: PMIO e MMIO juntosAlguns sistemas usam tanto PMIO quanto MMIO
Exemplo: Personal Computers (PCs) controlando vídeo
Usa portas de I/O para operações básicas de controle
Possui grande região mapeada em memória para armazenar conteúdodas telas (memória de vídeo / frame buffer)
Processo grava dados nesta região mapeada em memória
Controlador gera imagem na tela de acordo com conteúdo desta memória
Vantagem
Técnica simples de usar
Gravar milhões de bytes na memória de vídeo é mais rápido que emitirmilhões de instruções de I/O
Outros dispositivos podem tirar vantagem deste mapeamento, como porexemplo dispositivos geradores de som desde que tenham seus buffersmapeados na memória
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 11 / 33
fig/logo-ifmg
Mecanismos de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 12 / 33
fig/logo-ifmg
Mecanismo: PoolingInteração entre processador e controlador é de responsabilidade doprogramador
Também conhecido como inquirição ou I/O programada
Ciclo de funcionamento:
(1) Envio de comando ao controlador
(2) Espera operação ser realizada
Usa registrador de estado para verificar operação pendente
Desvantagem
Ocorrência de busy waiting (espera ociosa)
Segura a CPU o tempo todo até a operação de I/O ser realizada
Frequência de pooling alta ∼ desperdício de tempo
Frequência de pooling baixa ∼ esperas desnecessárias/perda de dados
Ineficiente devido à ocorrência de busy waiting enquanto ocorre operação de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 13 / 33
fig/logo-ifmg
Mecanismo: Pooling (Exemplo 01)Processador grava string de bytes no dispositivo via controlador usando pooling
Registradores: entrada, saída, estado, comandos
Registrador de EstadoBit SignificadoOcupado Dispositivo ocupado atendendo requisição de I/OComando-Pronto Comando e argumentos definidos para operarErro Sinaliza ocorrência de erro no I/O
Handshaking (repetido para cada byte da string)
(1) Processador lê bit ocupado repetidamente até estar desligado (pooling )
(2) Processador seta bit gravar no registrador de comandos e escreve byte noregistrador de saída
(3) Processador seta bit comando-pronto
(4) Controlador lê bit comando-pronto ligado e seta bit ocupado
(5) Controlador lê registrador de comandos e lê gravar ; lê registrador de saídapara obter byte; executa I/O no dispositivo
(6) Controlador desliga bit comando-pronto ; desliga bit erro no registradorde estados e desliga bit ocupado
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 14 / 33
fig/logo-ifmg
Mecanismo: Pooling (Exemplo 02)Processo de usuário deseja gravar ‘ABCDEFGHI’ na impressora
Pooling
(1) Processo solicita impressora usando chamada de sistemas. Se estiverlivre, processo toma impressora; caso contrário fica bloqueado;
(2) SO copia buffer ‘ABCDEFGHI’ do espaço do usuário para espaço dokernel (pDados)
(3) Processo espera impressora ficar disponível (MMIO)
(4) SO copia i-ésimo caracter de pDados para registrador de dados daimpressora (MMIO)
(5) Processo repete etapa (3) até terminar todos os caracteres
Implementação alto-nível
copy_from_user(buffer, pDados, qtdade);for(i = 0; i < qtdade; i++){
while(*printer_status_reg != READY) { /* Busy Waiting */ }
*printer_data_register[i] = pDados[i];}return_to_user();
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 15 / 33
fig/logo-ifmg
Mecanismo: InterrupçõesPooling é uma técnica ineficiente em virtude da ocorrência de busy waiting
Interrupção : controlador notificar a CPU quando está disponível para serviço
Funcionamento básico
(1) CPU examina linha de solicitação de interrupções da CPU em busca desinal de interrupção do controlador
(2) Quando detectar que algum controlador gerou sinal, CPU salva estado esalta para rotina de tratamento de interrupções em endereço conhecido
(3) Manipulador de interrupções determina causa e executa processamentonecessário
(4) Manipulador de interrupções restaura o estado da CPU e retorna paraexecução antes da interrupção
Controlador provoca a interrupção
CPU captura interrupção
CPU despacha interrupção para manipulador de interrupções
Manipulador de interrupções desliga interrupção ao atender dispositivo
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 16 / 33
fig/logo-ifmg
Mecanismo: InterrupçõesCiclo de I/O dirigido por interrupções
Mecanismo básico habilita CPU a responder a eventos assíncronos
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 17 / 33
fig/logo-ifmg
Mecanismo: InterrupçõesComputadores Modernos: Hardware controlador de interrupções
(1) Retardar manipulação de interrupções em processamento crítico
(2) Despachar manipulador de interrupções eficientemente
(3) Distinguir interrupções de prioridade alta e baixa
(1) Retardar manipulação de interrupções durante processamento crítico
Interrupções mascaráveis e não-mascaráveis
Mascaráveis: desligadas pela CPU durante processamento crítico
Não-Mascaráveis: reservadas para erros irrecuperáveis
Arquitetura Intel x86: registrador de flags e comandos para habilitar oudesabilitar interrupções mascaráveis (ex: seção crítica)
IF (interrupt flag)
CLI (clear interrupt bit)
STI (set interrupt bit)
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 18 / 33
fig/logo-ifmg
Mecanismo: Interrupções(2) Despacho eficiente (sem inquirir dispositivo)
Endereço associado com interrupção
Vetor de interrupções : ponteiro para manipuladores de interrupção
Exemplo: tabela de vetores de interrupção do Intel Pentium
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 19 / 33
fig/logo-ifmg
Mecanismo: Interrupções(3) Distinguir interrupções por prioridade
Implementa níveis de prioridade de interrupções
CPU autoriza manipulação de interrupções de baixa prioridade semdesmascarar todas as interrupções
Interrupção de alta prioridade pode interceptar execução de interrupção debaixa prioridade
Resumo : como funcionam as interrupções
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 20 / 33
fig/logo-ifmg
Mecanismo: DMA (Direct Memory Access)Mecanismo usado para grandes transferências de dados (disco, por exemplo)
Libera CPU de verificar estado e alimentar dados nos reg. do controlador
Funcionamento
(1) CPU grava bloco de comando DMA na memória (ponteiro para origem edestino, e contador de bytes a transferir)
(2) CPU informa endereço do bloco para o controlador de DMA, e prosseguecom outra tarefa
(3) Controlador DMA opera no bus de memória sem ajuda da CPU
(4) No término da transferência controlador DMA interrompe CPU
Handshaking DMA - Controlador de dispositivo
Linha DMA-Request : sinaliza palavra disponível para transferência
Linha DMA-Acknowledge : sinaliza que linha de endereço está preenchida
Roubo de ciclos : impedimento momentâneo para acessar memória principaldurante uso do barramento de memória
No entanto, CPU ainda pode acessar itens em cache
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 21 / 33
fig/logo-ifmg
Mecanismo: DMA (Direct Memory Access)Transferência DMA passo a passo
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 22 / 33
fig/logo-ifmg
Exercícios (Para Casa)1 Ler as seções 13.2, 13.2.1, 13.2.2 e 13.2.3 de [Silberschatz]
2 Ler as seções 5.1, 5.1.1, 5.1.2, 5.1.3, 5.1.4 e 5.1.5 de [Tanembaum]
3 Ler a seção 5.1 de [Oliveira]
4 Faça uma breve pesquisa sobre
(a) PCI Bus (Peripheral Component Interconnect)
(b) ISA Bus (Industry Standard Architecture)
(c) Tecnologia Plug and Play
(d) interface SCSI (Small Computer System Interface)
5 Explique os seguintes mecanismos de I/O:
Pooling
Interrupções
Direct Memory Access (DMA)
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 23 / 33
fig/logo-ifmg
Interfaces de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 24 / 33
fig/logo-ifmg
Interface de I/O da AplicaçãoEstrutura de I/O do kernel
Bloco ou caractere
Aleatório ou sequencial
Síncrono ou assíncrono
Compartilhado oudedicado
Velocidade de operação
R, W, R/W
Dispositivos de I/O devem ser tratados de modo padrão e uniforme (interfaces )
Drivers encapsulam diferenças, mas exportam interfaces padrão
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 25 / 33
fig/logo-ifmg
Dispositivos de BlocosTransferem blocos de bytes em uma única operação
Exemplos: discos magnéticos, ópticos, pen drives, floppy (armazenamento)
Aplicações normalmente acessam estes dispositivos através de uma interfacede sistema de arquivos. No Linux, são dispositivos de bloco comuns (/dev)
Arquivo Dispositivofd0 Primeira unidade de disqueteshda Disco rígido IDE / CD-ROM na primeira porta IDEhda3 Terceira partição do primeiro disco rígido IDEsda Disco rígido SCSIsda1 Primeira partição do primeiro disco rígido SCSIsr0 Unidade de CD-ROM SCSI
Chamadas de Sistema (além de open() e close())
read(): leitura de bloco
write(): escrita de bloco
seek(): posiciona em bloco específico
Driver é responsável por mapear chamada em operações no dispositivo físico
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 26 / 33
fig/logo-ifmg
Dispositivos de CaracteresTransferem bytes um a um, em sequência (orientados a fluxo)
Exemplos: teclados (terminal), impressora, modems, mouses, placas de áudio,portas seriais e paralelas
Aplicações normalmente acessam estes dispositivos através de uma interfacede sistema de arquivos. No Linux, são dispositivos de caracter comuns (/dev)
Arquivo DispositivottyS0 Porta serial COM1psaux Mouse PS/1lp0 Porta paralela LPT1audio Placa de som
Chamadas de Sistema (além de open() e close())
get(): lê um caracter
put() escreve um caracter
Driver é responsável por mapear chamada em operações no dispositivo físico
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 27 / 33
fig/logo-ifmg
Ciclo de Vida de Solicitação de I/O
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 28 / 33
fig/logo-ifmg
Ciclo de Vida de Solicitações de I/OCiclo de I/O típico de leitura com bloqueio, da requisição ao atendimento
1 Processo emite chamada de sistema combloqueio
2 Kernel verifica se parâmetros estãocorretos. Se for entrada com resultadodisponível, retorna para processo eencerra I/O
3 Caso contrário, executa I/O físico.Processo vai para fila de espera.Solicitação é incluída no scheduling.Quando atendida, subsistema de I/Orepassa solicitação para o driver.
4 Driver aloca espaço no buffer do kernelpara receber os dados. Driver enviacomando para controlador de dispositivoatravés de seus registradores
5 Controlador do dispositivo opera ohardware e transfere dados
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 29 / 33
fig/logo-ifmg
Ciclo de Vida de Solicitações de I/OCiclo de I/O típico de leitura com bloqueio, da requisição ao atendimento
6 Driver pode fazer pooling no dispositivoou solicitar DMA no buffer do kernel,gerando interrupção no término.
7 Interrupt handler recebe interrupção,armazena dados necessários, notificadriver e retorna da interrupção.
8 Driver recebe sinal, encerra a solicitaçãocorrente, informa ao subsistema que I/Oterminou.
9 Kernel transfere dados para espaço deendereçamento do processo. Processovolta a fila de prontos.
10 Processo desbloqueado ao retornar parafila de prontos. Quando for escalonadopara usar CPU ele retornará a execuçãono término da chamada de sistema.
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 30 / 33
fig/logo-ifmg
Exercícios (Para Casa)1 Ler as seções 13.3, 13.3.1 e 13.5 de [Silberschatz]
2 Ler as seções 5.3.1, 5.3.2 e 5.3.3 (opcional) de [Tanembaum]
3 Defina os seguintes conceitos:
(a) Driver de dispositivo
(b) Dispositivo de Blocos
(c) Dispositivo de Caracteres
(d) Interrupt handler (tratadores de interrupção)
4 Replique a figura 5.11 de [Tanembaum] e explique com suas palavras o fluxo deexecução de uma chamada de sistema para enviar dados para a impressora.Localize no diagrama onde se processam as chamadas de sistema, os driversde dispositivo, a comunicação entre o driver e os controladores, o mecanismode I/O, e os tratadores de interrupção.
5 Faça um diagrama resumido explicando passo a passo o ciclo de vida de umarequisição de I/O para leitura de um bloco de bytes em um dispositivo de blocos
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 31 / 33
fig/logo-ifmg
Referências Bibliográficas
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 32 / 33
fig/logo-ifmg
Referências Bibliográficas
SILBERSCHATZ, Abraham.
Fundamentos de sistemas operacionais. 8a edição
Editora LTC, 2010. ISBN 9788521617471.
OLIVEIRA, R. S. ; CARISSIMI, A. S.; TOSCANI, S. S.
Sistemas Operacionais. 4a. Edição
Editora Bookman. ISBN: 9788577805211.
TANEMBAUM, A. S.
Sistemas Operacionais Modernos. 3a. edição
Editora Pearson Prentice-Hall, 2009. ISBN 978-85-7605-237-1.
[email protected] (IFMG) Sistemas Operacionais 27 de março de 2014 33 / 33