TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Resumo capitulo 11 - Sistemas operacionais Abraham Silberschatz, et. All.

Por:   •  15/7/2019  •  Resenha  •  2.547 Palavras (11 Páginas)  •  326 Visualizações

Página 1 de 11

CAP XIII - Sistemas de I/O

O sistema de entrada e saída (I/O) é algo de suma relevância e seu projeto deve ser extremamente bem executado pois, todo o conjunto de dispositivos necessitam de métodos variados para controlá-los. Este dispositivos (HD, mouse, etc) formam um subsistema de I/O do kernel que separa o resto do kernel das complexidades de gerenciamento dos dispositivos de I/O. Com a crescente onda de criação e modernização dos dispositivos, fica cada vez mais difícil de adicionar estes a os computadores atuais, pois em alguns casos estes novos dispositivos são muito diferentes dos seus antecessores. Para que estes dispositivos possam ser acoplados em um S.O. linux, por exemplo, o Kernel trabalha em módulos onde, módulos exteriores podem ser adicionados complementando os já existentes.

Sobre hardware de I/O, os computadores operam com muitos tipos de dispositivo, tais como: armazenamento (discos, fitas, etc), transmissão (conexão de rede, bluetooth, etc), interface humana (tela, teclado, etc). Ainda neste contexto, existem milhões de dispositivos I/O, se expandirmos nossa mente para uma espaçonave, por exemplo, veremos diversos dispositivos de I/O. Estes dispositivos se comunicam com o computador através de sinais enviados por cabos ou através do ar. Um exemplo de conexão dispositivo-pc é a conexão via porta serial, como no caso do arduino. Quando dispositivos compartilham um conjunto de fios, a conexão é chamada bus (as mensagens são transmitidas por voltagens elétricas definidas em intervalos nos fios). Outro exemplo é a cadeia margarida onde diversos devices se conectam entre-si por meio de um cabo.

Mas, como estes dispositivos são controlados? Para essa tarefa, temos os controladores, onde um controlador pode operar sob uma porta, bus ou device. Um controlador possui registradores e, com isso é possível que o processador forneça comandos e dados. Com isso, o processador pode ler e gravar padrões de bits nesses registradores. O controlador pode suportar I/O mapeado para a memória, para isso os registradores de controle do dispositivo são mapeados para o espaço de endereçamento do processador, onde a CPU executa essas solicitações dos dispositivos de I/O.

Alguns sistemas implementa tanto instruções de I/O para controlar alguns dispositivos quanto o I/O mapeado para a memória. No caso do mapeamento para a memória existe um grave problema. Este, ocorre quando há um erro de ponteiro, ou seja, erro de software na gravação de uma região não desejada da memória. Uma porta de I/O têm quatro registradores, são registradores: de status(contém bits que podem ser lidos pelo hospedeiro. Estes bits indica, estados, tais como se o comando atual foi concluído), de controle (pode ser gravado pelo hospedeiro para iniciar um comando ou alterar a modalidade de um dispositivo), de dados de entrada (lido pelo hospedeiro para obtenção das entradas) e de dados de saída (gravado pelo hospedeiro para envio das saídas).

Sobre sondagem. O controlador liga o bit BUSY quando está ocupado trabalhando e desliga o bit busy quando está pronto para aceitar o próximo comando, por exemplo. O hospedeiro pode sinalizar o que deseja através do bit command-ready no registrador command.

A interrupção ocorre quando a CPU detecta que um controlador confirmou um sinal na linha de solicitação de interrupção (fio da CPU para controle de interrupções), então ocorre o salvamento de estado e salta para a rotina de manipulação de interrupções em um endereço que é fixo na memória. Este, determina a causa da interrupção, executa o processamento necessário e realiza uma restauração de estado e executa uma instrução de return. Em sistemas mais modernos é necessário recursos de manipulação de interrupções, como, por exemplo, a capacidade de retardar a manipulação de interrupções durante processamento crítico. Também é necessário uma maneira de despachar o manipulador de interrupções apropriado de um dispositivo sem antes sondar todos os dispositivos para saber qual deles lançou o sinal de interrupção. Se faz necessário interrupções multiníveis para que o S.O. possa identificar interrupções de alta e baixa prioridade.

Sobre interface de I/O da aplicação, precisamos ter uma visão abstrata como na engenharia de software ao tratar desse tópico. Seguindo essa visão é possível abstrair as diferenças detalhadas dos dispositivos de I/O identificando alguns tipos gerais. Onde, cada tipo geral é acessado por um conjunto padronizado de funções (interface). Essas diferenças são encapsuladas em módulos do kernel chamados de drivers de dispositivos. Esses drivers exportam uma interface-padrão podendo, assim aplicar a dispositivos específicos internamente. Algumas características dos dispositivos de I/O são: fluxo de caracteres ou bloco (transfere bytes um a um, enquanto o bloco transfere um bloco de dados como uma unidade), acesso sequencial ou randômico (transfere dados segundo uma ordem fixa, determinada pelo dispositivo, enquanto o usuário de um dispositivo de acesso randômico pode instruir o dispositivo a buscar por qualquer locação de armazenamento de dados disponível), síncrono ou assíncrono (executa transferências de dados com tempos de respostas previsíveis coordenados com outros aspectos do sistema. Já o outro exibe tempos de resposta irregulares ou imprevisíveis não coordenados com outros eventos), compartilhável ou dedicado (pode ser utilizado concorrentemente por vários processos ou threads; o dedicado não pode), velocidade de operação (as velocidades dos dispositivos variam em alguns bytes por segundo a alguns gigabytes por segundo) e leitura-gravação, somente leitura ou somente gravação (alguns dispositivos executam tanto entrada quanto saída, mas outros suportam apenas uma das duas operações.

Para todos os dispositivos orientados blocos a interface de dispositivo de blocos captura todos os aspectos para acesso a drivers. Um dispositivo que deseja efetuar alguma ação entra com os comandos read() e write(), caso seja um dispositivo de acesso randômico, então espera-se a chamada da função seek() que especifica para qual bloco deve ser transferido em seguida. Existe o conceito de I/O bruto que ocorre quando o S.O. ou um banco de dados transfere um array de blocos linear para um dispositivo de bloco. Alguns problemas relacionados com este conceito forçam o S.O. a deixar o controle destes blocos brutos com a aplicação, como no caso de um buffer da aplicação ou uma estrutura de dados pré-definida.

A interface de rede difere-se da de disco pois visa desempenho e endereçamento do I/O. Temos a interface socket que é utilizado tanto em sistemas UNIX quanto em Windows. O papel do socket é ser um intermediador, por exemplo, uma aplicação se conecta

...

Baixar como (para membros premium)  txt (16 Kb)   pdf (54.2 Kb)   docx (12.8 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no TrabalhosGratuitos.com