Please enable JavaScript.
Coggle requires JavaScript to display documents.
Gestão de entrada/saída Software - Coggle Diagram
Gestão de entrada/saída Software
Estrutura Geral do núcleo
Drivers
: Interagem com os dispositivos
Acessam portas de E/S e tratam interrupções
Dispositivos genéricos
:
Visão genérica de dispositivos similares (discos)
Discos: vetores de blocos de dados
Interfaces de rede (especificação NDIS)
Abstrações
: Sistemas de arquivos, protocolos de rede
Chamadas de sistema
: interface oferecida aos processos
Classes de dispositivos genéricos
Dispositivos orientados a caracteres
:
Transferências de dados byte a byte, sequencial
Ex.: dispositivos USB, mouse, teclado, modems
Dispositivos orientados a blocos
:
Transferências feitas em blocos de bytes
Blocos possuem endereços definidos
Ex.: discos, fitas e dispositivos de armazenamento
Dispositivos de rede
:
Blocos de dados de tamanho variável (mensagens)
Envios de blocos de forma sequencial
NDIS – Network Device Interface Specification
Ex.: Interfaces Ethernet, Bluetooth
Dispositivos gráficos
:
Renderização de texto e gráficos em uma tela
Usam uma área de RAM compartilhada (framebuffer)
Acesso por bibliotecas específicas (DirectX, DRI)
Driver
Componente de baixo nível do SO
Executa geralmente em modo núcleo
Interage com o hardware do dispositivo
Um driver para cada tipo de dispositivo
Funcionalidades
1 - Funções de entrada/saída
2 - Funções de gerência
3 - Funções de tratamento de eventos
Estrutura de um driver
Funções de entrada/saída
Transferência de dados dispositivo/núcleo
Caracteres, blocos, mensagens
Funções de gerência
Inicialização e configuração do dispositivo
Inicialização e configuração do driver
Syscalls: ioctl(), DeviceIoControl()
Funções de tratamento de eventos
Interrupções geradas pelo dispositivo
Estratégias de interação
O núcleo interage com os dispositivos através dos drivers. Os drivers implentam estratégias de interação:
Por programa
Estratégia de entrada/saída mais simples.
Também chamada varredura ou polling.
O driver pede a operação e aguarda sua conclusão:
1 - Espera o dispositivo estar pronto (status)
2 - Escreve dado na porta de saída (data out)
3 - Escreve comando (control)
4 - Espera dispositivo concluir a operação (status)
Por eventos
Estratégia básica:
1 - Requisitar a operação desejada
2 - Suspender o fluxo de execução (tarefa atual)
3 - O dispositivo gera uma IRq ao concluir
4 - O driver retoma a operação de E/S
A operação de E/S pelo driver é dividida em duas etapas:
1 - Uma função de E/S inicia a operação
2 - Uma função de tratamento de evento a continua
Acesso direto à memória
Transferência direta entre dispositivo e RAM
Os dados não precisam passar pela CPU (desempenho)
Muito usado para transferir grandes volumes de dados
Passos:
1 - A CPU programa o controlador DMA com os parâmetros
(endereços e tamanho da transferência)
2 - O controlador de DMA interage com o controlador do
disco para transferir os dados da RAM
3 - O controlador do disco recebe os dados da RAM
Tratamento de interrupções
Interrupções são tratadas por handlers (tratadores):
Compõem a estrutura dos drivers
Operam usualmente com interrupções inibidas
Devem ser muito rápidos, portanto simples
A maioria dos SOs trata interrupções em dois níveis:
FLIH - First-Level Interrupt Handler
SLIH - Second-Level Interrupt Handler
FLIH - First-Level Interrupt Handler
Tratador primário (rápido)
Recebe a IRq e a reconhece junto ao PIC
Registra dados da IRq em uma fila de eventos
Outros nomes: Hard, fast, top-half IH
SLIH - Second-Level Interrupt Handler
Tratador secundário (lento)
Trata os eventos da fila de eventos
Pool de threads de núcleo escalonadas
Outros nomes: Soft, slow, boom-half IH