Prévia do material em texto
<p>ARQUITETURA E ORGANIZAÇÃO</p><p>DE COMPUTADORES</p><p>Olá!</p><p>A administração dos recursos de um sistema operacional é primordial para</p><p>que ele funcione da melhor forma possível. Dispositivos de entrada e saída são</p><p>fundamentais para o uso de computadores. No presente capítulo, você tem a</p><p>oportunidade de examinar mais a fundo os conceitos relacionados ao</p><p>gerenciamento desses dispositivos dentro do contexto de sistemas operacionais.</p><p>Compreenderá também as características dos dispositivos de entrada e saída em</p><p>relação às demandas de hardware e software e também aprenderá sobre o</p><p>conceito de deadlocks e a melhor forma de evitá-los na elaboração de sistemas.</p><p>Bons estudos!</p><p>AULA 5 - GERENCIAMENTO</p><p>DE ENTRADA E SAÍDA</p><p>5 HARDWARE DE ENTRADA E SAÍDA</p><p>Hardware de entrada e saída, também conhecido como dispositivos de entrada</p><p>e saída ou I/O (Input/Output), refere-se aos componentes físicos de um sistema de</p><p>computador que permitem a interação entre o computador e o mundo exterior. Esses</p><p>dispositivos são responsáveis por receber dados do usuário ou de outras fontes</p><p>externas e enviar informações processadas pelo computador de volta ao mundo</p><p>externo (TANENBAUM, 2004).</p><p>Esse dispositivo de entrada e saída (E/S) é o componente do sistema de</p><p>computador responsável por gerenciar a comunicação entre a máquina e outros</p><p>dispositivos, tais como pen drives, teclados, mouses, monitores, scanners,</p><p>impressoras, redes, entre outros (LIMA, 2010).</p><p>Os dispositivos de entrada e saída permitem que os computadores interajam</p><p>com o ambiente externo e com os dispositivos de memória. Esses periféricos são</p><p>classificados em dispositivos orientados a bloco e dispositivos orientados a caractere.</p><p>Com seu auxílio, é possível enviar ou receber informações, a partir do computador,</p><p>para outras máquinas, armazenando dados e realizando diversos outros processos.</p><p>Os dispositivos de entrada e saída orientados a bloco armazenam informações</p><p>utilizando blocos de tamanho fixo e endereços próprios. Eles podem ter um tamanho</p><p>entre 512 e 32768 bytes, além disso, a leitura e escrita podem ser realizadas de forma</p><p>autônoma entre os blocos (GUARDIA; SENGER, 2015).</p><p>Os discos de armazenamento, como CDs, DVDs e pendrives são os exemplos</p><p>mais comuns desses dispositivos. Na Figura 1, é ilustrado o modo como eles</p><p>funcionam.</p><p>Figura 1 - Dispositivo orientado a bloco.</p><p>Fonte: https://shre.ink/HByG</p><p>Dispositivos de entrada e saída orientados a caracteres não promovem a</p><p>estrutura de blocos. Estas transferências efetuam-se unicamente por meio de</p><p>caracteres individuais que não carregam com elas endereçamento nem tarefas de</p><p>posicionamento, operando apenas com a transmissão ou recepção de séries destes</p><p>elementos (DUARTE; BECCENERI, 2004).</p><p>5.1 Controladores de entrada e saída</p><p>Os chamados controladores de hardware de entrada e saída são componentes</p><p>eletrônicos essenciais para gerar a interface de comunicação entre dispositivos. Numa</p><p>situação corriqueira de computadores com múltiplos discos, uma controladora SATA</p><p>pode ser usada para atuar como uma interface, possibilitando a comunicação entre</p><p>os componentes. Além disso, é possível usar um barramento para interligar o</p><p>processador e memória com dispositivos de vídeo de alta performance, agregando ao</p><p>mesmo barramento diversos dispositivos USB.</p><p>O manuseio dos barramentos com controladores específicos para os</p><p>dispositivos de entrada e saída é bastante comum. Isso visa otimizar o uso do</p><p>processador (UCP). A Figura 2 exibe um exemplo de barramentos para dispositivos</p><p>de entrada e saída.</p><p>Figura 2 - Barramentos para dispositivos de entrada e saída</p><p>Fonte: https://shre.ink/HBay</p><p>Ao realizar uma operação de leitura do disco, será iniciada uma sequência de</p><p>bits no próprio disco, levando em conta seu esquema de endereçamento (número do</p><p>setor, cilindro, etc.), seguida de um código de correção de erro. Após a leitura, o</p><p>controlador transforma o conjunto de bits em um bloco de bytes e armazena em um</p><p>buffer interno. Uma vez verificados os erros, o bloco é copiado a partir dali para a</p><p>memória principal através do barramento e controladores de entrada e saída</p><p>(DUARTE; BECCENERI, 2004).</p><p>O controlador de acesso à memória (DMA - Direct Memory Access)</p><p>desempenha um papel importante na garantia de que o processador não precise</p><p>intervir diretamente nas comunicações entre os controladores de dispositivo. O DMA</p><p>fornece ao controlador de dispositivo uma maneira para que ele se conecte</p><p>diretamente à memória do computador, sem a necessidade de passar por uma</p><p>operação do processador. O DMA define a operação a ser realizada, bem como qual</p><p>endereço de memória deve ser acessado para atingir a finalidade desejada.</p><p>https://shre.ink/HBay</p><p>5.2 Software de entrada e saída</p><p>Um dos princípios dos sistemas operacionais é prover serviços de entrada e</p><p>saída. Para assegurar o funcionamento ideal, é necessário que o código do sistema</p><p>seja organizado de forma eficaz (DUARTE; BECCENERI, 2004).</p><p>O software para entrada e saída é, geralmente, dividido em diferentes</p><p>camadas. Essas camadas podem ajudar a ocultar detalhes técnicos dos dispositivos</p><p>e proporcionar maior abstração para programadores. A Figura 3 mostra a divisão das</p><p>camadas de software de entrada e saída.</p><p>Figura 3 - Camadas de software de entrada e saída</p><p>Fonte: https://shre.ink/HBN9</p><p>O sistema operacional (SO) deve possibilitar que os programas acessem</p><p>diversos dispositivos utilizando o mesmo código, como discos rígidos, impressoras e</p><p>monitores (AROCA, 2008).</p><p>Para atender a essa função de independência entre os dispositivos, o sistema</p><p>operacional é responsável por tratar diferenças entre as operações a serem</p><p>realizadas. Por esse motivo, a nomeação uniforme é fundamental para permitir o</p><p>acesso a arquivos e dispositivos, sem precisar alterar o nome (JANDL, 1999). A</p><p>comunicação entre eles também não precisa sofrer alterações quanto à nomenclatura.</p><p>https://shre.ink/HBN9</p><p>A manipulação de erros deve ocorrer nas camadas mais próximas do hardware,</p><p>de modo a que sejam tratados nas camadas superiores. O sistema operacional deve</p><p>garantir que as operações de entrada e saída sejam bloqueadas para usuários de</p><p>programas, retornando somente quando concluídas. As camadas de software de I/O</p><p>proporcionam uso dedicado ou compartilhado de recursos, com um gerenciamento</p><p>em comum entre eles (DUARTE; BECCENERI, 2004).</p><p>5.3 Controladores de dispositivos</p><p>A camada de drivers é responsável por gerenciar o acesso aos dispositivos que</p><p>compõem o computador. Assim, ela se encarrega de traduzir e executar as instruções</p><p>de programação que chegam da camada superior, a fim de permitir o controle do</p><p>hardware. Além disso, ela harmoniza a comunicação entre cada dispositivo,</p><p>oferecendo à camada superior uma única interface de programação. Por exemplo, um</p><p>driver de uma controladora de disco interpreta os pedidos e solicitações de acesso ao</p><p>disco e realiza a operação levando em conta os detalhes específicos daquela</p><p>controladora; contudo, ele encaminha só o resultado da operação à camada superior,</p><p>e não as informações originais.</p><p>Em suma, os drivers são programas responsáveis por traduzir o idioma da</p><p>máquina para uma outra linguagem de alto nível. Eles são arquivos específicos para</p><p>cada SO e estão sempre sendo aperfeiçoados pelos fabricantes de dispositivos.</p><p>5.4 Interação entre camadas</p><p>Funções são a maneira utilizada para permitir o diálogo entre as camadas de</p><p>software de entrada e saída. Já as interrupções do sistema operacional atuam como</p><p>suporte para tal interação. A Figura 4 apresenta o funcionamento da comunicação</p><p>entre camadas.</p><p>Figura 4 - Comunicação entre camadas</p><p>Fonte: https://shre.ink/HBCT</p><p>5.5 Deadlocks</p><p>Em relação aos sistemas operacionais,</p><p>quando diversas tarefas estão em</p><p>disputa para utilizar o mesmo recurso, ocorre o que se denomina deadlock. É nessa</p><p>situação embaraçosa que o sistema se bloqueia e nenhuma tarefa é executada.</p><p>Deadlocks raramente ocorrem em sistemas operacionais; por isso,</p><p>desenvolvedores optam por ignorar o erro e continuar a execução como se nada</p><p>acontecesse. No entanto, outros sistemas optam por tratá-los, utilizando tabelas de</p><p>contagem de recursos a fim de controlar sua utilização (AROCA, 2008).</p><p>Um deadlock pode causar prejuízos graves, como a alocação desnecessária</p><p>de recursos. Isso significa que há menos recursos disponíveis para os demais</p><p>processos, resultando também em filas de liberação dos recursos envolvidos, o que</p><p>pode levar a acidentes, como o travamento do sistema operacional.</p><p>Existem quatro condições para que ocorram deadlocks:</p><p> Quando um determinado recurso só pode ser atribuído a um único processo</p><p>em um instante específico.</p><p> Quando um processo necessita de recursos além dos já alocados, pode</p><p>precisar aguardar outros para sua conclusão.</p><p> Quando múltiplos processos desejam acessar o mesmo recurso, se não</p><p>houver disponibilidade para liberar o recurso para todos os processos, nenhum</p><p>dos processos poderá realizar a sua tarefa.</p><p> Quando um processo estiver aguardando um recurso alocado a outro processo</p><p>e também vice-versa, há possibilidade de ocorrer espera.</p><p>https://shre.ink/HBCT</p><p>Figura 7 - Cadeia circular</p><p>Fonte: https://shre.ink/HB9A</p><p>Segundo Tanenbaum (2004), há quatro opções de tratamento que permitem</p><p>resolver conflitos de deadlocks:</p><p> O Algoritmo do Avestruz tem como base passar por cima de problemas e</p><p>aceitar que estes podem ocorrer.</p><p> A detecção e recuperação de deadlock busca identificar a ocorrência de</p><p>estados críticos na execução de um programa e desenvolver um algoritmo que</p><p>permita redefinir os caminhos das informações, possibilitando o retorno ao</p><p>normal da execução. Esta solução é geralmente baseada na experiência, tendo</p><p>o desenvolvimento de diagramas como ferramenta para melhor compreensão</p><p>do problema e aplicação de estratégias simples para a recuperação do sistema.</p><p> Utilizando medidas prudentes para distribuir os recursos, busca-se a</p><p>prevenção dinâmica.</p><p> A prevenção estrutural baseia-se na restrição de uma ou mais das quatro</p><p>possíveis causas de deadlock.</p><p>https://shre.ink/HB9A</p><p>Figura 8 - Condições para ocorrência de deadlock</p><p>Fonte: https://shre.ink/HBq7</p><p>https://shre.ink/HBq7</p><p>REFERÊNCIAS BIBLIOGRÁFICAS</p><p>AROCA, R. V. Análise de sistemas operacionais de tempo real para aplicações</p><p>de robótica e automação. 2008. 154 f. Dissertação (Mestrado em Engenharia</p><p>Mecânica) Universidade de São Paulo, São Carlos, p. 56-68, 2008.</p><p>DUARTE, L. O.; BECCENERI, J. C. Gerenciamento de Entrada e Saída e</p><p>Escalonamento de Disco. São José dos Campos: Instituto Nacional de Pesquisas</p><p>Espaciais, p. 89-97, 2004.</p><p>GUARDIA, H. C.; SENGER, H. Gerenciamento de Entrada e Saída. p. 103-111,</p><p>2015.</p><p>JANDL J. P. Notas sobre Sistemas Operacionais. Bragança: Universidade São</p><p>Francisco, p. 102-117,1999.</p><p>LIMA. J. L. A. Entrada e saída. p. 37-46, 2010.</p><p>TANENBAUM, A. S. Sistemas operacionais modernos. 2. ed. São Paulo: Pearson,</p><p>p. 72-85, 2004.</p><p>5 HARDWARE DE ENTRADA E SAÍDA</p><p>5.1 Controladores de entrada e saída</p><p>5.2 Software de entrada e saída</p><p>5.3 Controladores de dispositivos</p><p>5.4 Interação entre camadas</p><p>5.5 Deadlocks</p><p>REFERÊNCIAS BIBLIOGRÁFICAS</p>