Buscar

DCC062-Entrada e Saida - Prof Moreno

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Dep. Ciência da�
Computação
 DCC062 – Sistemas Operacionais
Cap. 6 – Gerenciamento de 
Entrada e Saída 
!
!
Prof. Marcelo Moreno 
moreno@ice.ufjf.br 
Dep. Ciência da�
Computação
Hardware de E/S
! Porta 
• Ponto de conexão disponível no host para dispositivos de E/S 
! Barramento 
• Conjunto de fios e protocolo de transferência que permite 
que vários dispositivos sejam conctados ao host 
simultaneamente. 
! Controlador 
• Controla a operação das portas, barramentos e dispositivos. 
• Interage com o host por meio de registradores 
– Controle, estado atual, dados
Dep. Ciência da�
Computação
Controladores de Dispositivos
! Componentes de dispositivos de E/S 
• mecânico 
• eletrônico 
! O componente eletrônico é o controlador do dispositivo 
• pode ser capaz de tratar múltiplos dispositivos 
! Tarefas do controlador 
• converter fluxo serial de bits em bloco de bytes 
• executar toda correção de erro necessária 
• tornar o bloco disponível para ser copiado para a 
memória principal
Dep. Ciência da�
Computação
Controladores de Dispositivos
Dep. Ciência da�
Computação
Mapeamento de E/S em Memória
Dep. Ciência da�
Computação
E/S Programada (PIO)
Dep. Ciência da�
Computação
E/S por Interrupções
Dep. Ciência da�
Computação
Acesso Direto a Memória (DMA)
Dep. Ciência da�
Computação
E/S: PIO vs. Interrupts vs. DMA
Dep. Ciência da�
Computação
Tratadores de Interrupções
! As interrupções devem ser escondidas o máximo 
possível 
• uma forma de fazer isso é bloqueando o driver que 
iniciou uma operação de E/S até que uma 
interrupção notifique que a E/S foi completada 
! Rotina de tratamento de interrupção cumpre sua 
tarefa 
• e então desbloqueia o driver que a chamou
Dep. Ciência da�
Computação
Tratando Interrupções
! Salvar registradores que ainda não foram salvos pelo controlador de 
interrupção 
! Estabelecer contexto para rotina de tratamento de interrupção 
! Estabelecer uma pilha para a rotina de tratamento de interrupção 
! Sinalizar o controlador de interrupção, reabilitar as interrupções 
! Copiar os registradores de onde eles foram salvos 
! Executar rotina de tratamento de interrupção 
! Escolher o próximo processo a executar 
! Estabelecer o contexto da MMU para o próximo processo 
! Carregar os registradores do próximo processo 
! Executar o próximo processo
Dep. Ciência da�
Computação
Software de E/S em Camadas
Dep. Ciência da�
Computação
Drivers de Dispositivos
Dep. Ciência da�
Computação
Drivers Linux
�
�
�
��
��
�
	
�
�
��
�
����������	
��		� �
��
��������������������������������������� �����! ""(
)��
���*'��'�����&+,$-
Dep. Ciência da�
Computação
Drivers Linux
! Acessíveis por meio dos arquivos especiais 
disponíveis em /dev 
• Núcleo redireciona as operações sobre os arquivos 
especiais para os serviços correspondentes de driver 
de dispositivo, de acordo com os major e minor 
numbers 
• Major: Identifica um driver dentro do Núcleo 
• Minor: Identifica um dispositivo dentro de um 
driver
Dep. Ciência da�
Computação
Drivers Linux
! Drivers são normalmente implementados por meio de 
módulos de núcleo 
• Programa insmod insere módulos 
• Inicialização do módulo: int init_module(void) 
– Ponto de entrada do módulo 
– Chamada no momento da carga do módulo 
– Realiza o registro do módulo 
• Finalização do módulo: void cleanup_module(void) 
– Ponto de saída do módulo 
– Chamada quando na remoção do módulo 
– Realiza o “desregistro” do módulo
Dep. Ciência da�
Computação
Drivers Linux
! Registro de módulo: 
• Definir tipo de dispositivo 
• Especificar major number 
• Mapear chamadas de sistema para funções 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. Ciência da�
Computação
Software E/S independente de dispositivo
! Suas funções são: 
• Interface uniforme para os drivers dos dispositivos 
• Armazenamento em buffer 
• Relatório dos erros 
• Alocação e liberação de dispositivos dedicados 
• Fornecimento de tamanho de bloco independente de dispositivo

Outros materiais