Anterior Siguiente Indice

12. Un paso más ...

Esta sección no necesita ser leída, pero puede ayudarle a comprender algo mejor el Unix, y el mundo de las telecomunicaciones.

12.1 ¿Qué son los ficheros de bloqueo?

Un fichero de bloqueo es simplemente un fichero que dice que dispositivo se está usando. Están en /usr/spool/uucp, o /var/lock. Los ficheros de bloqueo en Linux se llaman LCK..nombre, donde nombre puede ser un nombre de dispositivo, o un nombre de un sitio UUCP. Ciertos procesos crean estos bloqueos para así poder tener acceso exclusivo a un dispositivo, por ejemplo, si llama con su módem, aparecerá un bloqueo para que otros procesos sepan que alguien está usando actualmente el módem. Los bloqueos principalmente contienen el PID del proceso que tiene bloqueado el dispositivo. Muchos programas comprueban si un dispositivo está bloqueado, e intentan determinar si ese bloqueo es todavía válido buscando en la tabla de procesos el que tiene bloqueado el dispositivo. Si el bloqueo es válido, el programa se cerrará (o debería cerrarse). Si no, algunos programas borran el bloqueo viejo, y usan el dispositivo, creando su propio bloqueo. Otros programas solamente se cierran y dicen que el dispositivo está usándose.

12.2 ``baudios'' Vs. ``bps''

``baudios'' y ``bps'' son, quizás, unos de los términos peor usados en el campo de los ordenadores y telecomunicaciones. Mucha gente usa estos términos indiferentemente, ¡cuando de hecho no son lo mismo!.

baudios

La velocidad en baudios es una medida de cuantas veces por segundo cambia una señal, por ejemplo una señal enviada por un módem (moulador-demodulador). Es decir, una velocidad de 1200 baudios implica que una señal cambia cada 833 microsegundos. Las velocidades de los módems normales son 50, 75, 110, 300, 600, 1200, y 2400. La mayoría de los módems rápidos van a 2400 baudios. Debido a limitaciones del ancho de banda en las líneas telefónicas de voz, las velocidades superiores a 2400 baudios son difíciles de alcanzar, y sólo funcionan en líneas telefónicas de alta calidad. Se pueden codificar varios bits por baudio, para conseguir velocidades que excedan la velocidad del baudio. Se llama ``baudio'' en honor a Emile Baudot, inventor de la impresora asíncrona del telégrafo (teletipo).

bps

La velocidad en bps es una medida de cuantos bits por segundo son transmitidos. Las velocidades en bps de los módem normales son 50, 75, 110, 300, 1200, 2400, 9600, ... 115200. Usando módems con compresión V.42bis (compresión máxima 4:1), son posibles velocidades teóricas de hasta 115200 bps. Esto es lo que la mayoría de la gente quiere decir cuando mal usan la palabra ``baudios''.

Así, si módems de alta velocidad están funcionando a 2400 baudios, ¿cómo pueden enviar 14400 bps?. Los módems alcanzan una velocidad en bps mayor que la velocidad en baudios codificando varios bits en cada cambio de señal, o cambio de fase. De este modo, cuando 2 o más bits son codificados por baudio, la velocidad en bps supera a la velocidad en baudios. Si su módem se conecta a 14400 bps, estará enviando 6 bits en cada cambio de fase, a 2400 baudios.

¿Cómo empezó esta confusión?. Bien, volviendo a cuando los módems lentos eran módems de alta velocidad, la velocidad en bps realmente era igual a la velocidad en baudios. Un bit podía ser codificado por cambio de fase. La gente podía usa bps y baudios intercambiándolos, porque eran el mismo número. Por ejemplo, un módem de 300 bps también tenía una velocidad de 300 baudios. Todo esto cambió cuando llegaron los módems más rápidos, y la velocidad en bits superó a la velocidad en baudios.

12.3 ¿Qué son las UARTs? ¿Cómo afectan al rendimiento?

Las UARTs (Universal Asyncronous Receiver Transmitter) son circuitos integrados de la placa serie del PC. Su propósito es convertir los datos a bits, enviarlos a la línea serie, y después reconstruir los datos en el otro terminal. Las UARTs tratan los datos en bloques del tamaño de un byte, que además es, convenientemente, el tamaño de los caracteres ASCII.

Digamos que tiene un terminal conectado a su PC. Cuando escriba un carácter, el terminal da el carácter a su transmisor (también una UART). El transmisor envía ese byte a la línea serie, un bit cada vez, a una determinada velocidad. En el otro PC, la UART que recibe, coge todos los bits, reconstruye el byte y lo coloca en el búfer.

Existen dos tipos diferentes de UARTs. Probablemente ha oído algo sobre las UARTs no inteligentes - la 8250 y 16450, y las UARTs FIFO - la 16550A. Para entender las diferencias, examinemos primero qué ocurre cuando una UART ha enviado o recibido un byte.

La UART no puede hacer nada con los datos por sí misma, sólo los envía y los recibe. La CPU recibe una interrupción del dispositivo serie cada vez que se recibe o envía un byte. Entonces la CPU mueve el byte recibido desde el búfer de la UART a algún lugar de la memoria, o le da a la UART otro byte a enviar. Las UARTs 8250 y 16450 sólo tienen un búfer de 1 byte. Esto significa, que cada vez que se envía o recibe 1 byte, se interrumpe a la CPU. A velocidades bajas, está bien. Pero, a velocidades de transferencia alta, la CPU está demasiado ocupada tratando con la UART, y no le deja tiempo de atender otras tareas. En algunos casos, la CPU no puede atender la interrupción a tiempo, y se sobreescribe el byte, debido a que llegan demasiado rápido.

Ahí es cuando son útiles las UARTs 16550A. Estos integrados tienen un búfer FIFO de 16 bytes. Esto significa que pueden recibir o transmitir hasta 16 bytes antes de tener que interrumpir a la CPU. La CPU no sólo puede esperar, sino que puede entonces transferir los 16 bytes de una sola vez. Aunque es raro que el umbral de interrupción esté a 16, esto es una ventaja significante frente a las otras UARTs, que sólo tienen un búfer de 1 byte. La CPU recibe menos interrupciones, y está libre para hacer otras cosas. No se pierden datos, y todo el mundo es feliz. (También existe una UART 16550, pero es tratada como un 16450 ya que no funciona bien.)

En general, las UARTs 8250 y 16450 deben valer para velocidades de hasta 38400 bps. A velocidades mayores que 38400 bps, puede empezar a tener pérdida de datos. Otros sistemas operativos de PC (definición usada aquí vagamente) como DOS no son multitarea, por eso deben ser capaces de habérselas mejor con 8250 ó 16450. Por eso es por lo que algunas personas no sufren pérdidas de datos, hasta que cambian a Linux.

Las placas sin UART y las multipuerto inteligentes usan integrados DSP para hacer las tareas de búfer y control adicional, esto libera mucho más la CPU. Por ejemplo, las placas Cyclades Cyclom y Stallion EasyIO usan una UART Cirrus Logic CD1400, y muchas placas usan CPUs 80186 o incluso CPUS RISC especiales, para controlar la E/S serie.

Tenga en mente que este tipo de UART no inteligentes no son malas, simplemente no son buenas para velocidades altas. No debe tener problemas conectando un terminal, o un ratón a estas UARTs. Pero, para un módem de alta velocidad, la 16550A es imprescindible.

Puede comprar placas serie con la UART 16550A por un poco más de dinero, solamente pregunte al vendedor que tipo de UART tiene la placa. O si quiere actualizar su placa, simplemente compre el chip 16550A y reemplácelo por su UART 16450. Son compatibles patilla a patilla. Algunas placas traen la UART en zócalo para este propósito, si no, puede soldarlo. Nótese que probablemente se ahorrará un montón de problemas consiguiendo una placa nueva, si tiene el dinero, cuestan menos de 5000 ptas.

12.4 ¿Cuál es la diferencia real entre los dispositivos/dev/cuaN Y /dev/ttySN?

La única diferencia es el modo en que se abren los dispositivos. Los dispositivos para recibir llamadas /dev/ttySN se abren en modo bloqueante, hasta que se haya detectado la portadora (CD) (esto es, alguien conecta). Así, cuando alguien quiere usar el dispositivo /dev/cuaN, no hay conflictos con un programa que esté vigilando el dispositivo /dev/ttySN (a menos que alguien esté conectado, por supuesto).

Las múltiples entradas /dev, permiten operaciones sobre el mismo dispositivo físico con diferentes características de operación. También permite a los programas getty estándar coexistir con cualquier otro programa serie, sin que getty tenga que ser reajustado con bloqueos de ningún tipo. Es especialmente útil ya que los ficheros de bloqueo de los núcleos Unix estándar, y los bloqueos de UUCP son de aviso y no de obligatoriedad.


Anterior Siguiente Indice