Professional Documents
Culture Documents
1Interrupciones
Una petición de interrupción IRQ ("Interrupt Request") es una señal que se origina en
un dispositivo hardware (por ejemplo, un periférico), para indicar al procesador que algo
requiere su atención inmediata; se solicita al procesador que suspenda lo que está
haciendo para atender la petición.
Principio de funcionamiento
Cuando un dispositivo reclama atención del procesador es para que este haga algo. Este
"algo" es lo que se conoce como servicio; controlador o gestor de la interrupción, ISR
("Interrupt service routine"). En cualquier caso se trata siempre de ejecutar un programa
situado en algún lugar de la memoria RAM o en la ROM-BIOS. Ocurre que las
direcciones de inicio de estos programas, que se conocen como vectores de
interrupción, se copian en una tabla de 1024 Bytes que se carga al principio de la
memoria de usuario (direcciones 0000h a 0400h) durante el proceso de inicio del sistema,
razón por la cual estas rutinas se conocen también como servicios del BIOS.
2 2 Interrupción no enmascarable
5 5 (reservado)
7 7 Coprocesador no disponible
8 8 Fallo doble
11 B Segmento no disponible
12 C Excepción de pila
13 D Protección general
14 E Fallo de página
15 F (reservado)
16 1A Error de coprocesador
En el párrafo anterior hemos indicado someramente el proceso cuando "se recibe" una
petición, pero cabe una cuestión: ¿Como se recibe la petición?. Hemos adelantado que
estas peticiones pueden ser generadas desde el software o incluso por el procesador, lo
que nos conduce a que en realidad las únicas que deben recibirse (desde el exterior) son
las que denominadas interrupciones hardware (que se originan en dispositivos
externos al procesador). Antes de describir brevemente el camino hasta que la solicitud
es recibida por la UCP, permitidme adelantar que para su gestión existen tres tipos de
elementos de soporte:
Para la asignación del número de servicio a partir de una de las 16 solicitudes de las IRQ,
el PIC realiza un cierto proceso ("Interrupt Handling Routine") a partir de los datos de
programación iniciales y del estado actual del propio sistema de interrupciones. Por
ejemplo, puede estar procesándose el servicio de una interrupción, pero la rutina esta
suspendida momentáneamente porque se ha solicitado otra interrupción de prioridad más
alta, o tal vez se recibe otra interrupción del mismo periférico antes de haber atendido la
anterior, Etc.
Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del
bus externo; Son las marcadas con asterisco (*) en la tabla que sigue. La razón de esta
ausencia en los zócalos de conexión es que son de asignación fija, y nadie más que
ciertos dispositivos instalado en la propia placa tiene que utilizarlas. En concreto la línea
NMI está asignada al mecanismo de control de paridad de la memoria; la línea 0 está
asignada al cronómetro del sistema y la línea 1 al chip que controla el teclado
(dispositivos que pueden requerir atención urgente por parte del procesador). Es
costumbre denominar IRQx a las que tienen prolongación en el bus.
Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo,
pero en la práctica algunas están reservadas a dispositivos estándar. Por ejemplo, IRQ3
está casi siempre asignado al puerto serie COM2 y IRQ4 a COM1; IRQ6 al controlador
estándar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las
asignaciones clásicas para el XT y el AT.
Tabla-1
0 8 Temporizador* Temporizador*
1 9 Teclado* Teclado*
IRQ2 0A Reservado Interrupciones 8 a 15 (PIC#2)
IRQ3 0B Puertos serie Puerto serie COM2/COM4
COM2/COM4
IRQ4 0C Puertos serie Puerto serie COM1/COM3
COM1/COM3
IRQ5 0D Disco duro Impresora secundaria LPT2
IRQ6 0E Disquete Disquete
IRQ7 0F Impresora primaria Impresora primaria LPT1 [8]
LPT1
8 70 No aplicable Reloj de tiempo real*
9 71 No aplicable Redirigido a IRQ2*
IRQ10 72 No aplicable no asignado
IRQ11 73 No aplicable no asignado
IRQ12 74 No aplicable Ratón PS2
13 75 No aplicable Coprocesador 80287*
IRQ14 76 No aplicable Contr. disco IDE primario
IRQ15 77 No aplicable Contr. disco IDE secundario
Cuando se instala un dispositivo E/S que puede necesitar atención del procesador, debe
asignársele una IRQ adecuada. Dicho en otras palabras, cuando requiera atención debe
enviar una señal en la línea IRQ especificada. Inicialmente esta asignación se efectuaba
de forma manual, por medio de puentes ("Jumpers") en la placa o dispositivo, pero
actualmente esta selección puede hacerse por software. Los dispositivos son de enchufar
y usar PnP ("Plug and play" ).
Controlador PIC
Las peticiones hardware de interrupción del PC son manejadas por un chip, conocido
como PIC#1 ("Programmable Interrupt Controller"). Originariamente era un 8259A, que
puede manejar 8 peticiones (IRQ0/IRQ7), pero pronto se hizo evidente que eran un
número excesivamente corto, por lo que en 1984 IBM añadió un segundo controlador
PIC#2 en el modelo AT, que podía manejar las peticiones IRQ8 a IRQ15, aunque las
interrupciones utilizables resultantes no fuesen de 16 como cabría suponer, por las
razones apuntadas en el párrafo anterior.
Nivel de prioridad
El PIC dispone de 16 niveles de prioridad, numerados del 0 al 15, de forma que los de
número más bajo se atienden antes que los de número más alto. La asignación a cada
nivel es como sigue:
Como puede verse, la prioridad más alta se asigna a las interrupciones no enmascarables
(NMI ), a las que nos referimos más adelante. A continuación se atienden IRQ0 e IRQ1;
asignadas como hemos visto al cronómetro del sistema y al teclado (el cronómetro no
puede ser interrumpido por nadie porque perdería la hora). Después se atienden las
peticiones IRQ8 a IRQ15 del controlador esclavo, que hereda la prioridad de IRQ2 de la
que está colgado (en realidad no existe IRQ2). A continuación se atienden las IRQ3 a
IRQ7 de PIC#1. Las peticiones de prioridad más baja son las del controlador estándar de
disquetes (IRQ6) y las del puerto de impresora LPT1 (IRQ7).
Físicamente, el 8259A es un chip de 28 patillas, 8 de las cuales conectan con las líneas
IRQ0-IRQ7; ocho para el bus de datos (D0-D7), una entrada INTA ("Interrupt
Acknowledge") y una salida INTR ("Interrupt Request"). Aparte de otras auxiliares, como
tensión de alimentación y masa. Como veremos a continuación, cuando el 8259A recibe
una señal IRQ, activa la señal INTR que es recibida por el procesador. Cuando este
responde con un INTA, pone en el bus de datos un byte en el rango 0/256, que es
identificado a su vez por el procesador como un número de interrupción.
Desde el punto de vista lógico, PIC #1 responde a las direcciones 020h-021h, mientras
que PIC#2 lo hace en 0A0h-0A1h. Cada PIC dispone de tres registros de 1 byte; IRR, ISR
e IMR, que en conjunto gobiernan las decisiones del dispositivo:
Registro de interrupciones activas ISR ("In Service Register"). Cada bit indica si ya
existe una interrupción activada en la línea correspondiente.
Otro elemento que interviene en el mecanismo de excepciones son ciertas patillas del
procesador. Todos los miembros de la saga 8088 disponen de dos patillas, designadas
INTR y NMI, para este servicio específico. Sirven respectivamente para atender las
interrupciones enmascarables y no enmascarables (nos referimos a ellas
inmediatamente). A su vez, el procesador utiliza ciertas señales en algunas de sus
patillas para generar un ciclo INTA ("Interrupt Acknowledge"), que sirve para notificar al
PIC que ha recibido la interrupción.
Tipos de interrupción
Atendiendo a su origen, en el PC existen tres tipos de interrupciones: Interrupciones
hardware; interrupciones software, y excepciones del procesador .
Interrupciones hardware
La primera señal es simplemente un aviso; la segunda es una petición para que el PIC
coloque en el bus de datos un Byte con el número de interrupción, de forma que el
procesador pueda localizar el servicio solicitado.
El valor recibido (0-255) es multiplicado por 4 para calcular la dirección del vector
correspondiente en la tabla de vectores de interrupción, lo que se realiza mediante un
desplazamiento binario de dos posiciones a la izquierda. A continuación, el procesador
salva en la pila los valores del registro de estado, del contador de programa (PC) y del
segmento de código (CS); deshabilita el bit IF del registro de estado, para que la
interrupción no pueda ser molestada con una nueva interrupción enmascarable hasta que
sea específicamente permitido, y finalmente ejecuta el servicio.
La segunda mueve el valor EOI (nemónico del valor 20h) al registro AL.
La tercera es una sentencia de escritura a puerto; escribe el contenido del registro AL (el
valor EOI puesto en la sentencia anterior) en el puerto señalado por el contenido del
registro DX (establecido en la primera instrucción).
Interrupciones software
Los procesadores Intel de la gama x86 y compatibles, disponen de una instrucción INT
que permite generar por software cualquiera de los 256 tipos de interrupción
anteriormente descritos. El proceso seguido es exactamente el mismo que si se recibe
una interrupción hardware en la patilla INTR, salvo que en este caso se conoce el tipo de
interrupción, y no se requiere ningún ciclo INTA. Por ejemplo, en lenguaje ensamblador,
la instrucción INT 21 invoca la interrupción 33d (21h), que en MS-DOS es la llamada a los
servicios del Sistema.
Este tipo de interrupciones son de prioridad más alta que las de hardware (enmascarables
y no enmascarables), de forma que si se recibe una interrupción hardware mientras que
se ejecuta una software, esta última tiene prioridad.
Este tipo de interrupciones son utilizadas tanto por el Sistema Operativo como por los
programas de usuario que pueden instalar las suyas particulares (hemos señalado, que
algunas de las 255 posiciones de la tabla de vectores de interrupción están
desocupadas). Precisamente, aquellas posiciones de la IDT que señalan a posiciones
dentro de la ROM-BIOS (por encima de la dirección F0000h) se refieren a interrupciones
relacionadas con servicios de la BIOS, mientras que las situadas en la zona de memoria
convencional, se refieren a interrupciones instaladas por el Sistema o los programas de
aplicación.
En el caso de la división por cero el número asociado es cero. Este era el único tipo de
excepción de procesador prevista en el 8088, pero en los modelos sucesivos de la saga
x86 y Pentium esta posibilidad fue ampliándose paulatinamente.
6.2Generalidades de los puertos
Serie Paralelo
Más simple Más complejo
Implementaciones
Serie Paralelo
Telefonía IDE/ATA
Red SCSI
USB Impresoras
SATA
Puertos “clásicos”
Puertos en serie
El diseño del USB tenía en mente eliminar la necesidad de adquirir tarjetas separadas
para poner en los puertos bus ISA o PCI, y mejorar las capacidades plug-and-play
permitiendo a esos dispositivos ser conectados o desconectados al sistema sin necesidad
de reiniciar. Cuando se conecta un nuevo dispositivo, el servidor lo enumera y agrega el
software necesario para que pueda funcionar.
El USB puede conectar periféricos como mouse, teclados, escáneres, cámaras digitales,
telefonos celulares, reproductores multimedia, impresoras, discos duros externos, tarjetas
de sonido, sistemas de adquisición de datos y componentes de red. Para dispositivos
multimedia como escáneres y cámaras digitales, el USB se ha convertido en el método
estándar de conexión. Para impresoras, el USB ha crecido tanto en popularidad que ha
empezado a desplazar a los puertos paralelos porque el USB hace sencillo el poder
agregar más de una impresora a un ordenador personal.
Tarjeta PCI-USB 2.0En el caso de los discos duros, el USB es poco probable que
reemplace completamente a los buses como el ATA (IDE) y el SCSI porque el USB tiene
un rendimiento un poco más lento que esos otros estándares. El nuevo estándar Serial
ATA permite tasas de transferencia de hasta aproximadamente 150/300 MB por segundo.
Sin embargo, el USB tiene una importante ventaja en su habilidad de poder instalar y
desinstalar dispositivos sin tener que abrir el sistema, lo cual es útil para dispositivos de
almacenamiento desinstalables. Hoy en día, una gran parte de los fabricantes ofrece
dispositivos USB portátiles que ofrecen un rendimiento casi indistinguible en comparación
con los ATA (IDE).
6.3.2 Infrarrojo
El nombre de infrarrojo, que significa por debajo del rojo, proviene de que fue observada
por primera vez al dividir la luz solar en diferentes colores por medio de un prisma que
separaba
la luz en su espectro de manera que a ambos extremos aparecen visibles las
componentes del rojo al violeta (en ambos extremos
Aunque la comunicación infrarroja está basada en luz, utiliza pulsos para transmitir datos.
Estos pulsos varían con respecto a los digitales en que mientras los anteriores son
constantes durante un ciclo de reloj los pulsos IrDA duran sólo una fracción del ciclo
básico de reloj o celda estándar de bit. Estos pulsos son distribuidos ampliamente entre
ellos, lo que los hace fáciles de recibir y distinguir en el receptor IrDA
Cuando un puerto IrDA funciona a 115,000 bits por segundo cada pulso emitido debe de
ser de al menos 1.41 microsegundos de duración. Típicamente uno de estos pulsos dura
únicamente 3/16 de la longitud de una celda estándar de bit. Conforme se aumenta la
velocidad de transmisión los pulsos se acortan en tiempo y longitud. Este rango de pulsos
va de los 295.2 nanosegundos para los 576 kilobits por segundo a 115 nanosegundos
para una tasa de transferencia de 4 megabits por segundo.
Mientras que la comunicación infrarroja está basada en longitudes de onda de luz, utiliza
frecuencias para transmitir datos en pulsos. Estos pulsos
Además de utilizar la frecuencia de estos pulsos para determinar las tasas de
transferencia, también se toma en cuenta la modulación. Dependiendo de la velocidad de
conexión IrDA utiliza 2 formas distintas de modulación. La primera es RZI o Return-to-
Zero Invert. esta modulación es utilizada para velocidades de transmisión de datos
menores a 4.0 Mbps.
Con RZI el emisor envía un pulso para indicar un 0 binario, mientras que para el 1, no
envía pulso. Al llegar a la marca de 4 Mbps el emisor de IrDA cambia a PPM o Modulación
por Posición de Pulso (Pulse Position Modulation) también conocida como 4PPM debido a
las 4 posiciones de su pulso. La longitud y posición de un pulso es determinado por un
período de reloj. Estos períodos son determinados por la duración del símbolo y son
divididos en 4 segmentos iguales. Estos segmentos son referidos como como Chips
(Pedazos)
Los datos transmitidos por un dispositivo IrDA son transmitidos en un formato de 8 bits,
conforme al estándar de la IRDA, 8 bits de datos, bit de paridad, y bit de paro para un total
de 10 bits por carácter.
Los fabricantes de computadoras comenzaron a tomar ventaja de la tecnología IrDA a
principio de a década de 1990 cuando las computadoras tipo lap-top (que no son lo
mismo que las notebook) se comenzaron a hacer populares. La tecnología IrDA utilizada
en ese entonces estaba en desarrollo, por lo cual muchas veces la tecnología IrDA varia
de fabricante a fabricante. Estas variaciones causaban conflictos con otros dispositivos.
En 1997 los miembros de IrDA se reunieron en la Comdex, en Las Vegas, para promover
nuevos dispositivos inalámbricos para el mercado de consumo y artilugios de
comunicaciones que tomaban ventaja de la tecnología IrBUS. IrBus es el nombre original
para los estándares de la IrDA, que permitía comunicación bidireccional entre
dispositivgos separados hasta por 24 pies, haciendo posible la creación de palancas de
mano, tapetes de juegos y unidades de disco. Ir Bus también era capaz de comunicación
simultánea con dos anfitriones y era capaz de soportar hasta 8 dispositivos. También se
especulaba que futuros dispositivos Ir Bus pudieran ser integrados a objetos domésticos
como hornos de microondas.
A principio de 1998 los fabricantes comenzaron a liberar la tecnología Ir Bus integrada en
la circuitería de entrada - salida de sus sistemas para permitir que la tecnología IrDA fuera
utilizada, aunque fueron reticentes para incorporar un puerto IrDA en computadoras de
sobremesa debido al costo extra, que era aproximadamente de US$10.00 por el
transceptor, pero lo hicieron disponible como accesorio a través del puerto RS-232.
La tecnología infrarroja se hizo cada vez más popular en las computadoras portátiles, así
como asistentes personales digitales y computadoras de mano. Sejin America, Inc;
Microsoft; HP; y Sharp comenzaron a fabricar accesorios inalámbricos IrDA tales como
teclados, ratones, palancas de mando, tableros de juegos y controles remotos que
aprovecharan la tecnología Ir Bus en computadoras personales de escritorio. La mayoría
de estos accesorios estuvieron disponibles a mediados de 1998, y debido a la limitada
utilización de tecnología Ir Bus en el mercado, estas chácharas tecnológicas no tuvieron
mucho éxito en el mercado.
Megatech International, un desarrollador de componentes en Chatsworth, California,
EE.UU. estuvo trabajando en módems IrDA que funcionaran a 56K y soportara
velocidades de ISDN. Otras impresas trabajaron en teléfonos IrDA, en los que los
usuarios pudieran trabajar en combinación con computadoras portátiles, Asistentes
Personales Digitales o computadoras de bolsillo.
Durante los encuentros olímpicos de invierno de 1998, en Japón, NTT instaló alrededor de
500 teléfonos IrDA con ISDN para permitir a los visitantes acceder a su correo electrónico,
así como enviar o publicar fotos digitales en la Internet.
La tecnología Ir Bus también está diseñada para soportar la utilización intramuros de
múltiples periféricos simultáneamente, a superiores tasas de transferencia.
IrDA hizo su camino a ambientes LAN con la tecnología Eth IR, liberando teléfonos
celulares con capacidad IrDA para trabajar con Asistentes Personales Digitales, HPCs, y
otros dispositivos, para ofrecer conectividad móvil a Internet.
6.3.3 Firewire
Lo primero que se puede decir es que es un puerto de alta velocidad diseñado por Apple,
para la conexión de periféricos en un computador.
Obviamente como tantas tecnologías diseñadas por Apple, no son de su uso exclusivo.
De hecho gracias a esta tecnología se van a poder conectar nuestros computadores con
productos electrónicos como cámaras digitales o sistemas de música, algo hasta ahora
más complicado.
Como detalles destacados, también conocido por IEEE 1394, están su gran rapidez, su
capacidad de aceptar conexiones en “caliente”, o sea sin apagar ni reiniciar el
computador, todo lo contrario a los buses SCSI. Para que te hagas una idea de la
diferencia en velocidad, un periférico conectado mediante Universal Serial Bus (USB)
alcanza una velocidad máxima de 12 Mb por segundo, frente a los 400 Mb por segundo
que puede llegar a alcanzar la conexión mediante Fire Wire.
Los cables que se manejan en este interface tienen 6 pines para datos y fuerza, llegando
a conectar hasta 63 periféricos en la cadena mediante cables de hasta 4,25 metros de
longitud. Conviene reseñar la importancia de alimentar a los periféricos con un único
cable, que haría de cable de corriente y de cable de datos, seguro que más de uno de
ustedes tiene el escritorio de trabajo que parece un nido de culebras de tanto cable…
Después de todo esto, algunos no dudan en reseñar que tanto Fire Wire como USB han
sido unos de los cambios más importantes que la informática ha sufrido en los últimos
tiempos, sobre todo debido a su capacidad de conectar periféricos en caliente. (USB sería
mejor para periféricos de entrada/salida, debido a la menor cantidad de datos que
necesitarían transferir).
Y a todas estas ventajas, le añadimos que se esta poniendo de moda, con lo que cada
vez se encuentran más periféricos en el mercado, sobre todo de almacenamiento (ZIP,
discos duros, Jaz,CD-RW, etc…) que usan este tipo de conexión. Casas como Dell,
Gateway o HP estan empezando a vender equipos con este interfaz incorporado. Y Apple
en sus G4, nuevos iMac y Power Book G3 también lo utiliza.
Identificacion Fire Wire
Debes saber que la nomenclatura de Fire Wire es propia de Apple, y que el nombre de
IEE 1394?, no es otro que el nombre que recibió el interfaz después de que Apple lo
diseñara y se lo donara a la organización IEEE.
Fire Wire es el nombre comercial que le da Apple al interfaz IEE 1394.
Pero todavía queda por ahí suelta una duda, y es que es eso del i.Link, que según leamos
de unas fuentes o de otras, lo equiparan al Fire Wire/IEEE 1394 o no.
Bueno pues esta variante del interfaz es desarrollo de SONY y la única diferencia con
respecto a lo explicado hasta ahora es que los periféricos que usan el i.Link, no reciben la
alimentación eléctrica por el cable usado para la transferencia de datos, lo que obliga a
tener una fuente de alimentación con su propia conexión a la red eléctrica.
Los periféricos que usan i.Link, se pueden conectar a una red Fire Wire (con los cables
adecuados), aunque no habrá espacio para los pines encargados de llevar la corriente en
el bus y tendremos que enchufar estos equipos por separado, es una pena, precisamente
una de las comodidades del Fire Wire/IEEE 1394 era la importante reducción de cables,
sobre todo en grandes buses con muchos periféricos.
(Los equipos con i.Link usan cables de 4 pines, siendo los dos que faltan los que serían
de corriente en el Fire Wire/IEEE 1394).
Para conectar una de las cámaras de video DV a un computador se requiere de un cable
con dos conectores. A la izquierda, el conector Fire Wire que va al PC (a la tarjeta Fire
Wire); a la derecha el conector iLink (o conector DV) que va a la cámara. Ambos puertos
cumplen el estándar IEEE 1394 y por lo tanto son compatibles y capaces de trabajar a la
misma velocidad (hasta 50 MB por segundo).
USB 2.0 transfiere 480 Mbps Megabites por segundo (60MBps Mega Bytes por segundo)
de manera que es un poco más rápido que Fire Wire.
Actualmente, Fire Wire es el único puerto capaz de soportar las modernas cámaras de
video digitales que funcionan en formato DV. Incluso las de fabricación más reciente
vienen con puerto iLink, que ha pasado a denominarse por parte de los fabricantes como
puerto DV.
Por ahora es necesario utilizar una tarjeta adaptadora para que un PC cuente con puertos
Fire Wire (los iMac y G4 ya los traen incorporados), pero ya ha comenzado a aparecer
tarjetas madre que lso incluyen. En cuanto al software, Mac OS 9, Mac OS X, Windows
ME y Windows 2000/XP soportan IEEE 1394. Lo mismo que la versión 2.4 del kernel de
Linux, que ya está en alguna distribuciones como Mandrake 9.0.
En lugar de eso, los ingenieros de IBM acoplaron un conector de 25 pines, el DB-25, con
un conector Centronics de 36 pines para crear un cable especial que conectara la
impresora con la computadora. Otros fabricantes de impresoras terminaron adoptando la
interfase centronics, haciendo de este extraño cable híbrido un improbable estándar.
Cuando una PC manda datos a una impresora u a otros dispositivos usando el puerto
paralelo, esta manda 8 bits de datos (1 byte) a la vez, de forma distinta al puerto serie el
cual manda los 8 bits uno detrás de otro por el mismo cable. El puerto paralelo estándar
es capaz de mandar de 50 a 100 kilobytes de datos por segundo.
Echemos una mirada mas cercana a lo que hace cada pin cuando utiliza una impresora:
•Pin 1 lleva la señal de strobe. Esta mantiene un nivel de voltaje comprendido entre 2.8 y
5v, pero cae debajo de 0.5 volts cuando la computadora manda un byte de datos. Esta
caída en el voltaje le dice a la impresora que el dato ha sido enviado.
•Los pines 2 al 9 son usados para mandar el dato. Para indicar que un bit tiene un valor
de 1, una carga de 5v es enviada a través del pin correspondiente. Cuando no hay un
voltaje en un pin, indica un valor de 0. Esta es una forma simple pero muy efectiva de
transmitir información digital.
•El pin 10 manda la señal de reconocimiento de la impresora a la computadora. Como el
pin 1, esta mantiene una carga y cae debajo de 0.5v para indicarle a la computadora que
el dato fue recibido.
•Si la impresora está ocupada, mandará un 1 por el pin 11, y cambiará a 0, para indicarle
a la computadora que está lista para recibir mas datos.
•La impresora le avisa a la computadora que se se quedó sin papel enviando un 1 por el
Pin 12.
•Mientras la computadora este recibiendo voltaje por el pin 13, sabe que el dispositivo
está conectado.
•La computadora manda un una señal de auto suministro de papel a la impresora a través
del pin 14.
•Si la impresora tiene algún problema, manda un 0 al pin 15 para avisarle a la
computadora que existe un error.
•Cuando un nuevo trabajo de impresión está listo, la computadora manda un 0 para
inicializar la impresora.
•El pin 17 es usado por la computadora para tomar como remotamente desconectada la
impresora. Esto se logra enviando 5 volts a la impresora y manteniéndolo así el tiempo
que quieras considerarla desconectada.
•Los Pine 18 al 25 son tierras y son usadas como señales de referencia para el nivel bajo
(debajo de 0.5volts).
Nota: como los primeros 25 pines del cable centronics coinciden con los pines del primer
conector. Cada byte que manda el puerto paralelo, se envia una señal de “handshaking”,
para que la impresora pueda “latchear” el byte.
SPP/EPP/ECP
La especificación original para el puerto paralelo era unidireccional, esto quiere decir que
la información solamente puede viajar en una dirección por cada pin. Con la introducción
del PS/2 en 1987, IBM ofreció un nuevo diseño de puerto paralelo bidireccional. Este
modo es comúnmente conocido como Puerto paralelo estándar (SPP de Standard Parallel
Port) y ha reemplazado completamente el diseño original. La comunicación bidireccional
permite a cada dispositivo recibir datos así como también transmitir. Muchos dispositivos
usan los 8 pines (del 2 al 9) originalmente diseñados para datos. Usando los mismos 8
pines limita la comunicación a half-duplex, es decir que la información solamente puede
viajar en una dirección a la vez. Pero los pines 18 al 25, originalmente utilizados como
tierras, pueden ser usados como pins de datos tambien. Esto permite el comunicación
full-duplex (ambas direcciones al mismo tiempo).
El Puerto Paralelo Mejorado (EPP de Enhanced Parallel Port) fue creado por Intel, Xircom
y Zenith en 1991. El EPP permite transmitir mas información cada segundo (500 kilobytes
a 2 megabytes). Este fue diseñado para dispositivos que no son impresoras, que se
conectarían a este puerto, particularmente dispositivos de almacenamiento, los cuales
necesitan la mas alta velocidad de transferencia.
Casi al mismo tiempo de la introducción del EPP, Microsoft y Hewlett Packard
conjuntamente anunciaron una especificación llamada Salida Paralela con capacidad de
expansión (ECP de Extended Capabilities Port) en 1992. Mientras el EPP estaba siendo
usado para otros dispositivos, el ECP fue diseñado para mejorar la velocidad y
funcionalidad de las impresoras.
En 1994, el estándar IEEE 1284 salió en vigencia. Este incluía las 2 especificaciones para
los dispositivos para puerto paralelo, EPP y ECP. Para que estos trabajaron, tanto el
sistema operativo como el dispositivo deben soportar la especificación requerida. Esto ya
no es un problema en estos días, ya que la mayoría de las computadoras soportan SPP,
ECP y EPP y detectan que modo necesita ser utilizado, dependiendo del dispositivo
conectado. Si tu necesitas cambiar manualmente, tu puedes hacerlo a través del BIOS de
la mayoría de las computadoras.
En el diseño original del PC, IBM reservó 8 interrupciones hardware, comenzando por la
interrupción 08h, para expansión de interrupciones, que son comúnmente conocidas
como IRQ0 a IRQ7. Así la IRQ0 se corresponde con la interrupción 08h, la IRQ1 con la
09h, etc. La IRQ7 se corresponde pues con la 0Fh, estando sus vectores a partir de la
dirección 0000:003Ch.
Para que una petición de una IRQ llegue a la CPU, ésta debe estar permitida, no
enmascarada. El puerto 021h está asociado con la máscara de interrupciones de las IRQ.
Para habilitar una determinada interrupción se deberá escribir un cero en la posición
correspondiente, sin modificar el resto. Así, si lo que se quiere es permitir la IRQ7 habrá
que poner a cero el bit más significativo del puerto 021h, como muestra el código
siguiente:
in al,021h ; lee la máscara de las IRQ
and al, 01111111b ; impone un 0 en el bit más significativo, IRQ7. No modifica el resto
out 021h, al ; escribe la máscara
Con estas operaciones quedará habilitada la IRQ7. Una vez atendida de la forma que se
haya previsto, el programa debe indicar a la CPU que la interrupción ya ha sido
procesada, para ello debe escribir un 1 en el bit 5 del puerto 020h, es decir:
mov al, 020h ; carga en al 0010 0000 b
out 020h, al ; lo escribe en al puerto 020h
Finalmente, tan sólo queda por activar el bit que permite que la señal ACK# genere una
petición de IRQ7. Para ello se deberá poner a 1 el bit 4 del puerto de control , sin
modificar el resto. Cuando no se quiera que se produzca una IRQ7, basta con poner a
cero este bit.
Al finalizar el programa, no sólo se deben restablecer los vectores de interrupción
modificados, sino que también se debe inhibir la IRQ7, dejando la máscara del puerto
021h como estaba.
6.5.2 Registros
Los registros del procesador se emplean para controlar instrucciones en ejecución,
manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros
son direccionables por medio de un nombre.
Registros de Propósito General
Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del
sistema. Son únicos en el sentido de que se les puede direccionar como una palabra o
como un byte.
Registro SI: El registro índice fuente de 16 bits es requerido por algunas operaciones con
cadenas de caracteres. El SI está asociado con el registro DS.
Registro DI: El registro índice destino también es requerido por algunas operaciones con
cadenas de caracteres. El DI está asociado con el registro ES.
Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros, los cuales
son datos y direcciones transmitidos vía la pila.
Registro de Banderas:Es un registro de 16 bits, de los cuales nueve sirven para indicar el
estado actual de la máquina y el resultado del procesamiento. Muchas instrucciones
aritméticas y de comparación cambian el estado de las banderas y apoyándose de ellas
determinan la acción subsecuente.
Los bits de las banderas son las siguientes:
IF (interrupción): Indica que una interrupción externa sea procesada o ignorada (1=habilita
la interrupción; 0=deshabilita la interrupción). El estado de la bandera IF se controla con
las instrucciones STI y CLI.
AF (acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato de 8 bits, para
aritmética especializada. Esta bandera se prueba con las instrucciones DAA y DAS para
ajustar el valor de AL después de una suma o resta BCD.
PF (paridad): Indica paridad par o impar en una operación de datos de ocho bits
(0=paridad impar; 1=paridad par).
CF (acarreo): Contiene el acarreo de los bits de mayor orden después de una operación
aritmética; también almacena el contenido del último bit en una operación de corrimiento o
de rotación.
Registro ES: Algunas operaciones con cadenas de caracteres utilizan el registro extra de
segmento para manejar el direccionamiento de memoria. El registro ES está asociado con
el registro DI (Índice). Un programa que requiere el uso del registro ES puede inicializarlo
con una dirección de segmento apropiada.
A través de las clases del paquete java.net, los programas Java puede utilizan TCP o
UDP para comunicarse a través de Internet. Las clases URL, URL Connection, Socket, y
Socket Server? utilizan el TCP para comunicarse a través de la Red. Las clases Datagram
Packet? y Datagram Server? utilizan UDP.
TCP proporciona un canal de comunicación fiable punto a punto, lo que utilizan para
comunicarse las aplicaciones cliente-servidor en Internet. Las clases Socket y Server
Socket del paquete java.net proporcionan un canal de comunicación independiente del
sistema utilizando TCP, cada una de las cuales implementa el lado del cliente y el servidor
respectivamente.
La clase Socket del paquete java.net es una implementación independiente de la
plataforma de un cliente para un enlace de comunicación de dos vías entre un cliente y un
servidor. La clase Socket se sitúa en la parte superior de una implementación
dependiente de la plataforma, ocultando los detalles de los sistemas particulares a un
programa Java. Utilizando la clase java.net.Socket en lugar de tratar con código nativo,
los programas Java pueden comunicarse a través de la red de una forma independiente
de la plataforma.
El entorno de desarrollo de Java incluye un paquete, java.io, que contiene un juego de
canales de entrada y salida que los programas pueden utilizar para leer y escribir datos.
Las clases Input Stream y Output Stream del paquete java.io son superclases abstractas
que definen el comportamiento de los canales de I/O secuenciales de Java. java.io
también incluye muchas subclases de Input Stream y Output Stream que implementan
tipos especificos de canales de I/O.
Básicamente disponemos de dos tipos de servicio :
Servicio sin conexión , donde el emisor y el receptor intercambian paquetes de
información sin establecer una conexión previa , donde tampoco disponemos de un
control de secuencia ni control de erores. En este tipo de conexión operamos con
Datagramas y el protocolo empleado es UDP.
Servicio orientado a conexión : Donde disponemos de un stream que nos asegura la
entrega de la información de forma ordenada y fiable. Operamos con streams y el
protocolo empleado es TCP
Java nos da soporte para :
. UDP (byte[]) : Datagram Socket?, Datagram Packet
equals (Object)
El servidor crea un Socket, mediante Server Socket, le asigna una dirección y un puerto y
acepta llamadas (accept). A partir de este momento el proceso queda bloqueado a la
espera de una llamada. Cuando llega una llamada , el accept crea un nuevo socket para
procesar dicha llamada. Es unicamente en ese momento cuando existe la conexión y
durará hasta que se libere mediante close().
Los sockets tienen asociados un Stream de entrada y otro de salida a través de los cuales
se leen y escriben los datos :
. socket.getInputStream() : Devuelve un objeto de tipo Input Stream
. socket.getOutputStream() : Devuelve un objeto de tipo Output Stream
Para enviar datos se puede utilizar el Output Stream del socket, para enviar un flujo de
bytes sin buffer. Pero también se puede crear un objeto de tipo stream de datos basado
en el Output Stream.
Ejemplo :
Socket socket = new Socket (“158.42.112.67″, 1056);