Evolução do canal
Seminário: Evolução do canal. Pesquise 862.000+ trabalhos acadêmicosPor: EUPORRADENOVO • 14/3/2014 • Seminário • 2.425 Palavras (10 Páginas) • 228 Visualizações
Um canal de E/S pode controlar múltiplos dispositivos através de diversos controladores. Cada dispositivo, ou conjunto de dispositivos, é manipulado por um único controlador. O canal atua como um elo de ligação entre a UCP e o controlador.
A evolução do canal permitiu que este possuísse sua própria memória, eliminando a necessidade de os programas de E/S serem carregados para a memória principal. Com essa nova arquitetura, várias funções de E/S puderam ser controladas com mínima intervenção da UCP. Este último estágio do canal é também denominado de processador de E/S, embora seja comum encontrarmos os dois termos empregados indistintamente.
Buffering – O buffering é outra implementação para minimizar o problema da disparidade da velocidade de processamento existente entre a UCP e os dispositivos de E/S. O objetivo do buffering é manter, na maior parte do tempo, UCP e dispositivos ocupados.
Esta técnica consiste na utilização de uma área de memória para a transferência entre os periféricos e a memória principal denominada buffer. O buffering veio permitir que, quando um dados fosse transferido para o buffer após uma operação de leitura, o dispositivo de entrada pudesse iniciar uma nova leitura. Neste caso, enquanto a UCP manipula o dado localizado no buffer, o dispositivo realiza outra operação de leitura no mesmo instante. O mesmo raciocínio pode ser aplicado para operações de gravação, onde a UCP coloca o dado no buffer para um dispositivo de saída manipular.
A unidade de transferência usada no mecanismo de buffering é o registro. O tamanho do registro pode ser especificado em função da natureza do dispositivo (como uma linha gerada por uma impressora ou um caracter de um teclado) ou da aplicação (como um registro lógico definido em um arquivo).
O buffer deve possuir a capacidade de armazenar diversos registros, de forma a permitir que existam dados lidos no buffer, mas ainda não processados (operação de leitura), ou processados, mas ainda não gravados (operação de gravação). Desta forma, o dispositivo de entrada poderá ler diversos registros antes que a UCP os processe, ou a UCP poderá processar diversos registros antes de o dispositivo de saída realizar a gravação. Isso é extremamente eficiente, pois, dessa maneira, é possível compatibilizar a diferença existente entre o tempo em que a UCP processa os dados e o tempo em que o dispositivo de E/S realiza as operações de leitura e gravação.
Spooling – A técnica de spooling (simultaneos peripheral operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos SOs.
Naquela época, os programas dos usuários eram submetidos um a um para processamento pelo operador. Como a velocidade de operação dos dispositivos de entrada/saída é muito lenta se comparada à do processador, era comum que a UCP ficasse ociosa à espera de programas e dados de entrada ou pelo término de uma impressão.
A solução foi armazenar os vários programas e seus dados, também chamados de jobs, em uma fita magnética e, em seguida submetê-los a processamento. Desta forma, a UCP poderia processar seqüencialmente cada job, diminuindo o tempo de execução dos jobs e o tempo de transição entre eles. Da mesma forma, em vez de um job gravar suas saídas diretamente na impressora, poderia direcioná-las para uma outra fita, que depois seria impressa integralmente. Esta forma de processamento é chamada de spooling e foi a base dos sistemas batch.
A utilização de fitas magnéticas obrigava o processamento a ser estritamente seqüencial, ou seja, o primeiro job a ser gravado na fita era o primeiro a ser processado. Assim, se um job que levasse várias horas antecedesse pequenos jobs, seus tempos de resposta ficariam seriamente comprometidos. Com o surgimento de dispositivos de acesso direto, como discos, foi possível tornar o spooling muito mais eficiente e, principalmente, permitir a eliminação do processamento estritamente seqüencial, com a atribuição de prioridades aos jobs.
A técnica de buffering permite que um job utilize um buffer concorrentemente com um dispositivo de E/S. O spooling, basicamente, utiliza os disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outros jobs são processados.
Um exemplo dessa técnica está pressente quando impressoras são utilizadas. No momento em que um comando de impressão é executado por um programa, as informações que serão impressas são gravadas em um arquivo em disco (arquivo de spool), para ser impresso posteriormente pelo sistema. Dessa forma, situações como a de um programa reservar a impressora, imprimir uma linha e ficar horas para continuar a impressão não acontecerão. Essa implementação permite maior grau de compartilhamento na utilização de impressoras.
Atualmente, a técnica de spooling é implementada na maioria dos SOs, fazendo com que tanto a UCP quanto os dispositivos de E/S sejam aproveitados de forma mais eficiente.
Reentrância – É comum, em sistemas multiprogramáveis, vários usuários executarem os mesmos utilitários do SO simultaneamente, como, por exemplo, um editor de textos. Se cada usuário que utilizasse o editor trouxesse o código do utilitário para a memória, haveria diversas cópias de um mesmo programa na memória principal, o que ocasionaria um desperdício de espaço.
Reentrância é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória. Uma característica da reentrância é que o código não pode ser modificado por nenhum usuário no momento em que está sendo executado.
A reentrância permite que cada usuário possa estar em um ponto diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário.
Os utilitários do sistema, como editores de texto, compiladores e linkers, são exemplos de código reentrante, que proporciona grande economia de espaço em memória e aumento na performance do sistema. Em alguns sistemas existe a possibilidade de utilizar o conceito de reentrância para aplicações de usuários.
Proteção do Sistema – Nos sistemas multiprogramáveis, onde diversos usuários compartilham os mesmos recursos, deve existir uma preocupação, por parte do SO, de garantir a integridade dos dados pertencentes a cada usuário. Problemas como um programa acessar (acidentalmente ou não) a área de memória pertencente a outro programa ou ao próprio SO tornariam o sistema pouco confiável. Para isso, todo sistema implementa algum tipo de proteção
...