Prévia do material em texto
SISTEMAS OPERACIONAIS Ramiro Córdova Júnior Gerenciamento de entrada e saída Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Definir as características de hardware de entrada e saída. � Identificar as características de software de entrada e saída. � Reconhecer o conceito de deadlocks. Introdução Os recursos de um sistema operacional devem ser gerenciados de modo que o sistema funcione da maneira mais eficaz possível. Dentre os diversos recursos a serem gerenciados por um sistema operacional, temos os dispositivos de entrada e saída, que são indispensáveis na utilização de computadores. Neste capítulo, você vai estudar os conceitos que envolvem o geren- ciamento dos dispositivos de entrada e saída no contexto de sistemas operacionais. Para isso, conhecerá as características de hardware e software de entrada e saída e suas relações com o gerenciamento de recursos do sistema operacional, assim como reconhecerá o conceito de deadlocks e aprenderá como previni-los no desenvolvimento de sistemas. Hardware de entrada e saída O hardware de entrada e saída existe para permitir que os computadores consigam interagir com o mundo externo e com os dispositivos de memória. Também é comum que os dispositivos de entrada e saída sejam chamados de periféricos. Esses dispositivos podem ser categorizados em dispositivos orientados a bloco e dispositivos orientados a caractere. Dispositivos de entrada e saída orientados a bloco Esses dispositivos têm como característica o armazenamento de informações utilizando blocos com tamanho fixo, com endereços próprios. As operações de leitura ou escrita podem ser realizadas de maneira independente entre os blocos. Cada bloco possui seu próprio endereço e um tamanho que pode variar entre 512 e 32768 bytes. Os exemplos mais comuns de dispositivos de entrada e saída orientados a bloco são os discos de armazenamento, como CDs, DVDs e pendrives. A Figura 1 apresenta o funcionamento de um dispositivo orientado a bloco. Figura 1. Dispositivo orientado a bloco. Dispositivos de entrada e saída orientados a caractere Os dispositivos de entrada e saída orientados a caractere não utilizam a es- trutura de blocos. Esses dispositivos recebem e enviam fluxo de caracteres sem endereçamento e sem realizar operações de posicionamento, limitando-se apenas a enviar ou receber uma sequência de caracteres. Gerenciamento de entrada e saída2 Controladores de dispositivos de entrada e saída Os chamados controladores de hardware de entrada e saída são componentes eletrônicos que atuam como interface de comunicação do dispositivo. Existem alguns componentes eletrônicos que podem funcionar como interface de co- municação para mais de um dispositivo de entrada e saída. Por exemplo, uma controladora de discos SATA pode intermediar a comunicação entre diversos discos ao mesmo tempo — isso é uma situação corriqueira em computadores que possuem mais de um disco instalado. Também é possível utilizar um barramento de comunicação entre o processador e a memória para controlar um dispositivo de vídeo de alto desempenho, e a esse barramento podem estar conectados outros barramentos, como o USB. A utilização de barramentos com controladores específicos para os dis- positivos de entrada e saída é bastante comum e tem como objetivo principal otimizar a utilização do processador (UCP). Na Figura 2, podemos observar um exemplo de barramentos para dispositivos de entrada e saída. Figura 2. Barramentos para dispositivos de entrada e saída. Fonte: Produção Virtual (2013, documento on-line). 3Gerenciamento de entrada e saída Um bom exemplo para o entendimento desse fluxo de informações via barramento e controladores de entrada e saída é a realização de uma operação de leitura no disco. Inicialmente, é realizada a leitura de uma sequência de bits no próprio disco, baseada no esquema de endereçamento do disco (número do setor, cilindro, etc.), seguida de um código de correção de erro. Feito isso, o controlador transforma o conjunto de bits lidos em um bloco de bytes e carrega essa informação em um buffer interno. Após a verificação de erro, o bloco pode ser copiado para a memória principal. Com o objetivo de garantir que não seja necessário que o processador tenha que intermediar todas as comunicações com os controladores de dis- positivos, existe um recurso que permite o acesso direto à memória por parte dos controladores. Esse recurso é gerenciado pelo controlador de acesso à memória (DMA), que informa a operação a ser realizada e qual endereço do controlador deve ser acessado. A Figura 3 apresenta o fluxo de funcionamento utilizando o recurso DMA. Figura 3. Funcionamento do controlador DMA: (1) CPU programa controlador de DMA — o que transferir e para onde — e aciona controlador do disco. (2) DMA emite requisição de leitura do buffer ao controlador. (3) Dados são transferidos do buffer do controlador para a memória. (4) Controlador informa fim da transferência para a memória. (5) Repetem-se os passos 2,3 e 4, até que todos os dados tenham sido lidos. (6) DMA envia interrupção à CPU indicando o fim da transferência do bloco solicitado. Fonte: Lima Junior (2010, documento on-line). Gerenciamento de entrada e saída4 Software de entrada e saída Uma das atribuições de um sistema operacional é prover serviços relacionados aos dispositivos de entrada e saída, ou seja, o código do sistema operacional deve ser organizado de forma eficaz, a fim de garantir a performance durante a utilização dos dispositivos. O software de entrada e saída é, normalmente, organizado em camadas, cada uma com seus níveis. As camadas dos níveis mais baixos ocultam algumas particularidades dos dispositivos relacionados às camadas de nível mais alto, que procuram abstrair informações para os desenvolvedores. A Figura 4 apresenta a organização em camadas de software de entrada e saída. Figura 4. Camadas de software de entrada e saída. Fonte: Tanenbaum (2004). E/S nível de usuário E/S independente do dispositivo Hardware Si st em a op er ac io na l Softw are Driver SCSI Driver EIDE Driver rede Driver teclado Driver �oppy Interface padrão para drivers de dispositivos (API) O sistema operacional deve permitir que os programas possam utilizar o mesmo código para interagir com diversos dispositivos, como, por exemplo, discos rígidos, impressoras, monitores, etc. A independência entre os dispositi- vos é responsabilidade do sistema operacional, que deve cuidar das diferenças entre as operações realizadas entre os dispositivos. A nomeação uniforme deve garantir o acesso a arquivos e dispositivos de maneira independente, e a comunicação entre eles não deve requerer que haja alterações nos nomes. A manipulação dos erros deve ocorrer nas camadas mais próximas do hardware, de modo que os eles possam ser tratados nas camadas superiores. O sistema operacional deve garantir que as operações de entrada e saída sejam bloqueantes para os programas a nível de usuário, ou seja, elas só devem retornar após serem concluídas. As camadas de software de entrada e saída 5Gerenciamento de entrada e saída devem proporcionar a utilização de recursos de modo dedicado ou comparti- lhado — nesse caso, gerenciando o uso de recursos em comum. Controladores de dispositivos (drivers) A camada de drivers é responsável pela parte de código de entrada e saída específica para o funcionamento de cada dispositivo. Os drivers fornecem à camada superior uma visão uniforme dos dispositivos a partir de uma interface de programação única. Por exemplo, um driver de uma controladora de disco recebe os pedidos e solicitações de acesso ao disco e realiza a operação levando em conta detalhes como setores, trilhas, cilindros e cabeças do disco; porém, esses detalhes não retornam, e sim o resultado da operação. De um modo geral, pode-se dizer que os drivers são tradutores que atuam entre a linguagem de máquina e umalinguagem de mais alto nível. Os arquivos de drivers são específicos para cada sistema operacional e são constantemente atualizados pelos fabricantes de hardware. Interação entre as camadas As chamadas funções são o artifício utilizado para permitir a comunicação entre as camadas de software de entrada e saída. As interrupções do sistema operacional também atuam como auxiliares na interação entre essas camadas. A Figura 5 apresenta o funcionamento da comunicação entre as camadas. Figura 5. Comunicação entre camadas. Fonte: Adaptada de Guardia e Senger (2015, documento on-line). Gerenciamento de entrada e saída6 Deadlocks No que diz respeito a sistemas operacionais, quando várias tarefas concorrem para a utilização de um mesmo recurso, ocorrem os chamados deadlocks. Nessas situações conflitantes, o sistema entra em modo bloqueante e não realiza nenhuma das tarefas. Os deadlocks devem ocorrer raramente em um sistema operacional; desse modo, muitos desenvolvedores adotam como estratégia ignorar o erro e con- tinuar a execução como se nada tivesse acontecido. Em sistemas que optam por tratar dos deadlocks, normalmente, são adotadas tabelas com contagem de recursos disponíveis a fim de ordenar a sua utilização. Um dos prejuízos sérios causados por um deadlock é a alocação desne- cessária de recursos, que faz com que menos recursos sejam liberados para os demais processos. Além disso, podem ser formadas filas de liberação dos recursos envolvidos que podem causar instabilidades, como o travamento do sistema operacional. Um dos recursos que pode auxiliar na concepção de sistemas com o objetivo de evitar deadlocks é a utilização de diagramas de processos e recursos. A Figura 6 apresenta um exemplo de diagrama baseado nas seguintes tabelas de alocação de recursos e de requisição de recursos (Quadros 1 e 2). Figura 6. Diagrama processo x recurso. Fonte: Jandl Junior (1999, p. 46). 7Gerenciamento de entrada e saída Recurso Processo X A Y B W C Z D Quadro 1. Alocação de recursos Processo Recurso A Y B W C Z E W Quadro 2. Requisição de recursos É possível perceber, a partir do diagrama de exemplo, que existe uma disputa de recursos entre os processos B e E querendo utilizar o recurso de W, ou seja, nessa situação, deverá ser dado o tratamento adequado via algoritmo para que não ocorra deadlock. Existem quatro condições para que ocorram deadlocks: � Quando cada recurso só pode estar alocado a um único processo em um determinado instante. � Quando um processo além dos recursos já alocados pode estar esperando por outros recursos. � Quando um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmo recurso. � Quando um processo pode ter de esperar por um recurso alocado a outro processo, e vice-versa. Gerenciamento de entrada e saída8 Isso pode ser observado na Figura 7. Figura 7. Cadeia circular. Fonte: Jandl Junior (1999, p. 47). Conforme Tanenbaum (2004), são quatro as possibilidades de tratamento que permitem resolver os problemas de deadlocks: � Algoritmo do avestruz: consiste em ignorar o problema e conviver com a possibilidade de sua ocorrência. � Detecção e recuperação: consiste em detectar a ocorrência de um de- adlock e recuperar o funcionamento por meio de um algoritmo que perceba o caminho fechado, gerando um diagrama que permita escolher outro caminho. � Prevenção dinâmica: a partir da utilização de procedimentos cuidadosos na alocação de recursos. � Prevenção estrutural: a partir da negação de uma ou mais das 4 possi- bilidades de ocorrência de deadlock. Veja, no Quadro 3, essas quatro condições. 9Gerenciamento de entrada e saída Fonte: Adaptado de Jandl Junior (1999, p. 48). Condição Aproximação Exclusão mútua Colocar todos os recursos do sistema em spool Retenção e espera Exigir a alocação inicial de todos os recursos necessários Sem preemptividade Retirar recursos dos processos Espera circular Ordenar numericamente os recursos Quadro 3. Condições para ocorrência de deadlock GUARDIA, H. C.; SENGER, H. Gerenciamento de Entrada e Saída. 2015. Disponível em: <http://livresaber.sead.ufscar.br:8080/jspui/bitstream/123456789/2451/1/SO_-_AT2_-_ Subsistemas_de_E-S.pdf>. Acesso em: 31 out. 2018. JANDL JÚNIOR, P. Notas sobre Sistemas Operacionais. Bragança: Universidade São Fran- cisco, 1999. Disponível em: <http://mrmsistemas.com.br/mendes/so/Apostila_SO.pdf>. Acesso em: 31 out. 2018. LIMA JUNIOR, L. A. Entrada e saída. 2010. Disponível em: <http://www.ppgia.pucpr. br/~laplima/ensino/so/materia/05_es.html>. Acesso em: 31 out. 2018. PRODUÇÃO VIRTUAL. Introdução à computação. 2013. Disponível em: <http://producao. virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ ch01.html>. Acesso em: 31 out. 2018. TANENBAUM, A. S. Sistemas operacionais modernos. 2. ed. São Paulo: Pearson, 2004. Leituras recomendadas AROCA, R. V. Análise de sistemas operacionais de tempo real para aplicações de robótica e automação. 2008. 154 f. Dissertação (Mestrado em Engenharia Mecânica) — Uni- versidade de São Paulo, São Carlos, 2008. Disponível em: <http://www.teses.usp.br/ teses/disponiveis/18/18149/tde-09012009-210323/pt-br.php>. Acesso em: 31 out. 2018. DUARTE, L. O.; BECCENERI, J. C. Gerenciamento de Entrada e Saída e Escalonamento de Disco. São José dos Campos: Instituto Nacional de Pesquisas Espaciais, 2004. Disponí- vel em: <http://www.professores.ifba.edu.br/antoniocarlos/wordpress/wp-content/ uploads/2013/12/entrada_e_saida.pdf>. Acesso em: 31 out. 2018. Gerenciamento de entrada e saída10 Conteúdo: