(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

235. Um passo adiante...

Esta seção não necessita ser lida, mas pode fornecer algumas informações adicionais e um melhor conceito do Unix e do mundo das telecomunicações.

235.1 O que são arquivos de reserva de recursos?

Arquivos de reserva de recursos são arquivos simples que indicam que um dispositivo em particular está em uso no momento. Eles são mantidos no diretórios /usr/spool/uucp ou /var/lock. Arquivos de reserva do Linux são denominados LCK..nome, onde nome é a denominação do dispositivo ou o nome do site UUCP. Certos processos criam estes arquivos, passando a ter então acesso exclusivo aos dispositivos. Por exemplo caso se faça uma conexão discada com o modem, um arquivo de reserva de recursos avisa aos outros processos que o modem já está sendo usado. Muitos programas verificam a existência deste tipo de arquivo e tentam determinar se o arquivo ainda é válido através da checagem da existência do processo que criou o arquivo junto à tabela de processos em execução. Caso o arquivo encontrado seja válido, ou seja, o processo que criou o arquivo de reserva ainda esteja sendo executado, o novo processo deve ser finalizado. Caso o processo que criou o arquivo não esteja em execução, o novo programa removerá o arquivo e utilizará o dispositivo criando o seu próprio arquivo de reserva de recurso. Alguns programas simplesmente finalizam avisando que o dispositivo está em uso, sem verificar a tabela de processos.

235.2 ``baud'' Vs. ``bps''

``baud'' e ``bps'' são talvez os termos mais mal usados no campo da computação e telecomunicações. Muitas pessoas usam estes termos indiscriminadamente, como se fossem idênticos, quando na verdade não são.

baud

A taxa de bauds é a medida de quantas vezes em um segundo um sinal, por exemplo um enviado por um modem (modulador-demodulador) é alterado. Por exemplo uma taxa de bauds de 1200 significa dizer que um sinal muda a cada 833 microsegundos. Taxas de bauds comuns são 50, 75, 110, 300, 600, 1200 e 2400. Muitos modems de alta velocidade rodam a uma taxa de 2.400 bauds. Devido à limitação de banda em linhas de voz, taxas maiores são muito difíceis de serem obtidas e somente funcionam em linhas de voz de alta qualidade. Múltiplos bits podem ser codificados por baud a fim de se obter taxas de envio de bits superiores a taxa de bauds. ``Baud'' tem seu nome em homenagem a Emile Baudot, o inventor da impressora telegráfica assíncrona.

bps

A taxa de bps (bits por segundo) significa quantos bits por segundo foram transmitidos. Taxas comuns de bps eram oficialmente conhecidas como 50, 75, 110, 300, 1200, 2400, 9600. Hoje temos ainda 14.4 Kbps, 28.8 Kbps, 33.6 Kbps e 56 Kbps; estes valores não correspondem às taxas no cabo que interliga o modem à porta serial, que são (além das antigas velocidades de modems citadas acima): 19.2 Kbps, 38.4 Kbps, 57.6 Kbps e 115.2Kbps. Usando modems com compressão V.42 bis (que pode chegar até uma taxa de 4:1), taxas de até 115.2 Kbps tornam-se possíveis.

Então, se um modem de alta velocidade está obtendo 2.400 bauds, como eles podem enviar dados a 14.400 bps ou ainda mais? Os modems atingem uma taxa de bps maior que a taxa de bauds através da codificação de diversos bits em cada mudança de sinal ou mudança de fase. Ou seja quando 2 ou mais bits são codificados por baud, a taxa de bps supera a taxa de bauds. Caso o modem conecte-se a 14.400 bps, ele está enviando 6 bits por mudança de fase a 2.400 bauds.

Como tudo isso começou? Quando os antigos modems de baixa velocidade eram os mais rápidos disponíveis, a taxa de bps era efetivamente igual à taxa de bauds. Um bit era enviado a cada mudança de fase. Podia-se usar bps ou baud indiscriminadamente, uma vez que eles tinham o mesmo valor. Por exemplo, um modem de 300 bps tinha também uma taxa de bauds igual a 300. Isso começou a mudar quando modems mais rápidos surgiram e a taxa de bits superou a de bauds.

235.3 O que são UARTs? Como elas afetam a performance?

UARTs (Transmissor e Receptor Assíncrono Universal ou Universal Asynchronous Receiver Transmitter) são chips localizados na placa serial do PC (caso se utilize uma) ou na placa mãe. A função da UART pode ser executada também por por chips que executam outras funções. O propósito da UART é converte dados para bits, enviá-los pela linha serial e reconstruir os dados novamente na outra extremidade da linha. UARTs lidam com dados divididos em pedaços de bytes, os quais são convenientemente o tamanho dos caracteres ASCII.

Suponhamos que se tenha um terminal conectado a um PC. Ao se digitar um caractere, o terminal envia o caracter ao transmissor (também um UART). O transmissor envia o byte em uma linha serial, um bit de cada vez, em uma velocidade específica. Na ponta do PC, a UART receptora recebe todos os bits, recompondo o byte e o disponibiliza em um buffer.

Há dois tipos diferentes de UARTs. As chamadas UARTs burras - 8250 e 16450, e UARTs FIFO - 16550A. Para entender as suas diferenças, inicialmente vamos examinar o que acontece quando uma UART envia ou recebe um byte.

A UART por si só não faz absolutamente nada com os dados, ela simplesmente os envia ou os recebe. Para UARTS originais, a CPU obtém uma interrupção a partir do dispositivo serial toda vez que um byte é enviado ou recebido. A CPU então move o byte recebido para fora do buffer da UART para algum lugar na memória ou fornece outro byte a UART para ser enviado. As UARTs 8250 e 16450 têm somente um byte de buffer, o que significa que cada vez que 1 byte é recebido ou enviado, a CPU será interrompida. Em baixas velocidades, isso funciona bem, porém em taxas maiores a CPU se torna tão ocupada lidando com a UART que não lhe resta muito tempo para lidar com outras tarefas. Em alguns casos, a CPU não consegue atender o serviço de interrupções adequadamente, fazendo com que o byte recebido anteriormente seja sobrescrito, uma vez que eles estejam chegando em uma velocidade maior da que eles possam ser tratados.

É nesse momento que a UART 16550A se torna muito útil. Estes chips vêm com FIFOs de 16 bytes, o que significa que eles podem receber ou transmitir até 14 bytes antes de interromper a CPU. Não somente podem esperar, assim como podem transferir os 14 bytes de uma só vez. Apesar da interrupção não estar sempre configurada para receber todos os 14 bytes em uma única transferência, esta vantagem ainda é significativa sobre outros tipos de UART, os quais têm somente um 1 byte de buffer. A CPU recebe menos interrupções e é livre para outras coisas. Dados não são perdidos e tudo funciona perfeitamente (existe uma UART 16550, mas ela é tratada como uma 16450 uma vez que tem problemas).

Em geral, UARTs 8250 e 16450 devem ser adequadas para velocidades de até 38.400 bps. Para velocidades maiores, possivelmente se tenha perda de dados. Outros sistema operacionais de PC como DOS não são multitarefas, podendo então lidarem de maneira mais otimizada com UARTs mais antigas. Esta é a causa porque não se percebe a perda de dados até que se passe a utilizar o Linux.

Placas multiseriais inteligentes e equipamentos que não usem UARTs utilizam chips DSP para disponibilizarem buffers e controle que liberam ainda mais a CPU. Por exemplo as placas Cyclades Cyclom e Stallion EasyIO usam uma UART RISC Cirrus Logic CD1400, e muitas placas usam CPUs 80186 ou ainda CPUs RISC especiais para lidar com E/S serial.

Tenha em mente que UARTs do tipo burras não são ruins, elas simplesmente não conseguem lidar com velocidades de transmissão maiores. Não se deve ter nenhum problema em se conectar um mouse ou um terminal a essas UARTs. Porém para modems de alta velocidade uma UART 16550A é uma necessidade.

Muitos do PCs mais novos (486s, Pentiums ou superiores) vêm com uma UART 16550A (nota: no momento da tradução deste COMO FAZER podemos afirmar que praticamente inexistem equipamentos novos sendo fabricados com UARTs burras). Caso se tenha um equipamento realmente antigo pode-se atualizá-lo através da aquisição de chips 16550A e da substituição das UARTs antigas. Porém se a funcionalidade está agregada a outros chips, a substituição não será possível. Caso uma UART 16450 esteja conectada à placa, a atualização pode ser simples, uma vez que ambas são compatíveis pino a pino em seus conectores. Pode ser mais simples simplesmente comprar uma placa serial na Internet (poucas lojas têm este tipo de produto atualmente).


Página seguinte Página anterior Índice