Você está na página 1de 23

DCC062 Sistemas Operacionais

Cap. 6 Gerenciamento de Entrada e Sada

Prof. Eduardo Pagani Julio


eduardo.pagani@ice.ufjf.br

Dep. Cincia da Computao

Taxas de Transferncia Tpicas

Dep. Cincia da Computao

Hardware de E/S
Porta
Ponto de conexo disponvel no host para dispositivos de E/S

Barramento
Conjunto de fios e protocolo de transferncia que permite que vrios dispositivos sejam conctados ao host simultaneamente.

Controlador
Controla a operao das portas, barramentos e dispositivos. Interage com o host por meio de registradores Controle, estado atual, dados
Dep. Cincia da Computao

Controladores de Dispositivos
Componentes de dispositivos de E/S mecnico eletrnico O componente eletrnico o controlador do dispositivo pode ser capaz de tratar mltiplos dispositivos Tarefas do controlador converter fluxo serial de bits em bloco de bytes executar toda correo de erro necessria tornar o bloco disponvel para ser copiado para a memria principal
Dep. Cincia da Computao

Controladores de Dispositivos

Dep. Cincia da Computao

Mapeamento de E/S em Memria

Dep. Cincia da Computao

E/S Programada (PIO)

Dep. Cincia da Computao

E/S por Interrupes

Dep. Cincia da Computao

Acesso Direto a Memria (DMA)

Dep. Cincia da Computao

E/S: PIO vs. Interrupts vs. DMA

Dep. Cincia da Computao

Tratadores de Interrupes
As interrupes devem ser escondidas o mximo possvel
uma forma de fazer isso bloqueando o driver que iniciou uma operao de E/S at que uma interrupo notifique que a E/S foi completada

Rotina de tratamento de interrupo cumpre sua tarefa


e ento desbloqueia o driver que a chamou

Dep. Cincia da Computao

Tratando Interrupes
1. Salvar registradores que ainda no foram salvos pelo controlador de interrupo 2. Estabelecer contexto para rotina de tratamento de interrupo 3. Estabelecer uma pilha para a rotina de tratamento de interrupo 4. Sinalizar o controlador de interrupo, reabilitar as interrupes 5. Copiar os registradores de onde eles foram salvos 6. Executar rotina de tratamento de interrupo 7. Escolher o prximo processo a executar 8. Estabelecer o contexto da MMU para o prximo processo 9. Carregar os registradores do prximo processo 10.Executar o prximo processo

Dep. Cincia da Computao

Software de E/S
Independncia de dispositivo
Programas podem acessar qualquer dispositivo de E/S sem especificar previamente qual (disquete, disco rgido ou CD-ROM)

Nomeao uniforme
Nome de um arquivo ou dispositivo pode ser uma cadeia de caracteres ou um nmero inteiro que independente do dispositivo

Tratamento de erro
Trata o mais prximo possvel do hardware

Dep. Cincia da Computao

Software de E/S
Transferncias Sncronas vs. Assncronas
transferncias bloqueantes vs. orientadas a interrupo utilizao de buffer para armazenamento temporrio dados provenientes de um dispositivo muitas vezes no podem ser armazenados diretamente em seu destino final

Dispositivos Compartilhveis vs. Dedicados


discos so compartilhveis unidades de fita no so
Dep. Cincia da Computao

Software de E/S em Camadas

Dep. Cincia da Computao

Drivers de Dispositivos

Dep. Cincia da Computao

Drivers Linux

Dep. Cincia da Computao

Drivers Linux
Acessveis por meio dos arquivos especiais disponveis em /dev
Ncleo redireciona as operaes sobre os arquivos especiais para os servios correspondentes de driver de dispositivo, de acordo com os major and minor numbers Major: Identifica um driver dentro do Ncleo Minor: Identifica um dispositivo dentro de um driver

Dep. Cincia da Computao

Drivers Linux
Drivers so normalmente implementados por meio de mdulos de ncleo
Programa insmod insere mdulos Inicializao do mdulo: int init_module(void)
Ponto de entrada do mdulo Chamada no momento da carga do mdulo Realiza o registro do mdulo

Finalizao do mdulo: void cleanup_module(void)


Ponto de sada do mdulo Chamada quando na remoo do mdulo Realiza o desregistro do mdulo
Dep. Cincia da Computao

Drivers Linux
Registro de mdulo:
Definir tipo de dispositivo Especificar major number Mapear chamadas de sistema para funes do driver
struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, ... ssize_t (*write) (struct file *, const char *, ... int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct ... int (*ioctl) (struct inode *, struct file *, ... int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); : : };

Dep. Cincia da Computao

Software E/S independente de dispositivo


Suas funes so:
Interface uniforme para os drivers dos dispositivos Armazenamento em buffer Relatrio dos erros Alocao e liberao de dispositivos dedicados Fornecimento de tamanho de bloco independente de dispositivo

Dep. Cincia da Computao

Software E/S independente de dispositivo

Dep. Cincia da Computao

Software E/S independente de dispositivo

Dep. Cincia da Computao

Você também pode gostar