Baixe o app para aproveitar ainda mais
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
Compartilhar