Tecnicas de Sincronizacion

Page 1

ARQUITECTURA DE COMPUTADORAS II TRABAJO:

INVESTIGACIÓN UNIDAD 2 CATEDRÁTICO:

LIC. MANLIO MORENO RODRÍGUEZ ALUMNOS:

MERCEDES GALLEGOS RODRÍGUEZ TERESA DE JESÚS RUEDA BAUTISTA PASCUAL PÉREZ AGUILAR 6to. SEMESTRE GRUPO: B

PICHUCALCO, CHIAPAS A 10 DE SEPTIEMBRE DE 2011.


UNIDAD 2: TEMAS

2


INTRODUCCIÓN La unidad 2 se realizo la investigación de los temas que se detallan brevemente iniciando con la sincronización mencionándonos que es el proceso por el cual dos componentes intercambian datos o información. Los datos intercambiados pueden afectar la información uno o de ambos componentes. Se dice que esto se hace por medio de protocolos de sincronización, donde ambos componentes "conocen" la forma de intercambio de datos. Encontraremos también que el tiempo de espera es cuando se conectan tarjetas al bus de la PC, un problema común es igualar la velocidad de los ciclos del bus con la de las tarjetas. y dando una pequeña definición de es una interrupción es una instrucción que detiene la ejecución de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este último proceso se devuelve el control a la aplicación anterior. Por ejemplo, cuando estamos trabajando con un procesador de palabras y en ese momento llega un aviso de uno de los puertos de comunicaciones, se detiene temporalmente la aplicación que estábamos utilizando para permitir el uso del procesador al manejo de la información que está legando en ese momento. Mencionándonos también que la Interrupción software se produce cuando un usuario solicita un recurso del núcleo, mediante una llamada al sistema, open, write, read, mount, etc. Y se menciona el tema del el reloj de una computadora se utiliza para dos funciones principales: 1. Para sincronizar las diversas operaciones que realizan subcomponentes del sistema informático.

los diferentes

2. Para saber la hora. Sin olvidar que el reloj marca la velocidad de proceso de la computadora generando una señal periódica que es utilizada por todos los componentes del sistema informático para sincronizar y coordinar las actividades operativas, evitando el que un componente maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre dos componentes sea distinta. Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales en un segundo. Una breve introducción de lo que contiene el trabajo de investigación tocando un poco mas afondo cada tema, esperamos que este trabajo cumpla con todas las expectativa que espera.

3


UNIDAD 2. TÉCNICA DE SINCRONIZACIÓN DE DATOS 2.1 TECNICAS DE ASIGNACIÓN La Sincronización es el proceso por el cual dos componentes intercambian datos o información. Los datos intercambiados pueden afectar la información uno o de ambos componentes. Se dice que esto se hace por medio de protocolos de sincronización, donde ambos componentes "conocen" la forma de intercambio de datos.

Figura 3.1. Sincronización de Información La importancia de la sincronización radica en el mantenimiento de la confiabilidad e integridad de la información. Entre los protocolos se encuentran los siguientes: Slow sync : En términos generales cuando se va ha sincronizar con este protocolo la pda transfiere todos los datos hacia el PC. y compara uno a uno los registro para ver cual ha sufrido cambios, se ha borrado o ha sido adicionado.

Figura 3.2. Sincronización por medio de Slow sync. Entoces cada uno de los datos existentes en la Base de datos o archivo de la pda pasa a sincronizar al pc, por eso se denomina show sync. Un ejemplo de datos pude ser la sincronización de pedidos, los cuales se requieren que pasen todos para su posterior facturación. Fast sync : Este protocolo de sincronización es mucho mas rápido que el anterior y se basa en que sólo pasan al servidor los datos que han tenido modificaciones, en otras palabras, los datos que no han sufrido cambios, borrados o adiciones no se sincronizan.

4


Figura 3.3. Sincronización por medio de Flast sync. Un ejemplo típico de sincronización con este protocolo seria el del mantenimiento de una agenda de citas. Donde no se interesa sincronizar las citas que no han sufrido modificaciones. Si algunas citas permanecen igual se quedan sin sincronizar. Este protocolo de sincronización utiliza una "bandera" de estado que permite "marcar" los registros que han sufrido modificaciones desde la ultima fecha de sincronización. Cuando se sincronizan los el Pc y la Pda pueden ocurrir los siguientes eventos: Inserción:

el registro nuevo en la Pda es adicionado al servidor

Modificación : el registro de la Pda Remplaza al del servidor. Borrado

: el Registro en el servidor es borrado

Guardado

: el Registro se guarda en el servidor.

Cuando termina la sincronización los "banderas" de estado se anulan o "Resetean". Y se guarda la fecha de sincronización. El Protocolo Intellisync anywhere esta dedicado para la sincronización en red de diferentes dispositivos, donde los dispositivos móviles sincronizan con un servidor central. Además de los dos protocolos anteriores existe otro llamando SyncMl (Synchronous Mark Up Language) . La objetivo de este protocolo es la sincronización "abierta" entre dispositivos de diferentes familias. Varias compañías unen esfuerzos para que sus equipos trabajen con este protocolo de sincronización. Se puede decir que se busca un protocolo de sincronización Universal. Este protocolo asume que cada dispositivo guarda banderas de estado de los registros de los demas. Asi que este necesita bastante almacenamiento para mantener la integridad de la información y las banderas de estado.

5


Figura 3.4. Sincronización por medio de Intellisync y Per-to-Per. Per-To-Per: es otro protocolo de sincronización donde todos y cada uno de los dispositivos se sincronizan sin la necesidad de un computador centrar o servidor como ocurre en el caso del protocolo Intellisync anywhere. No esta demás hacer énfasis en que la sincronización es un proceso diferente al de transmisión de información. No se deben confundir estos términos por muy similares que parezcan. El lector puede buscar información de este tema por el nombre de Conduit. Para la sincronización en una aplicación se pueden utilizar tablas de sincronización. En algunas aplicaciones no se sincroniza directamente sobre la base de datos. para este fin se utilizan tablas temporales donde se guarda la información y posteriormente con un proceso se puede depurar y hacer correcciones. Lo anterior se realiza por motivos de seguridad.

6


Figura 3.5. Sincronización sobre Tablas de sincronización. No directamente sobre la base de datos principal. Un ejemplo de esto seria la sincronización en un sistema de pedidos donde lo que se necesita es descargar los pedidos y que el proceso de facturación se encarge del resto. Claro esta que se puede sincronizar directamente sobre la base de datos y hacer la depuración en el proceso de sincronización

Figura 3.6. Agente de sincronización de Hotsync Estas simplemente son opciones que se plantean el lector puede utilizar la que mejor se adapte a su aplicación En este capitulo se menciono algunos de los protocolos de sincronización existentes, con esta información el lector puede profundizar en el tema.

7


2.2 ESTADO DE ESPERA Cuando se conectan tarjetas al bus de la PC, un problema común es igualar la velocidad de los ciclos del bus con la de las tarjetas. Es común que una tarjeta sea más lenta que el bus. Así, el bus de la PC esta diseñado para resolver este problema. La señal READY del bus se puede usar para extender la longitud del ciclo del bus para igualar una tarjeta lenta o parar el bus del sistema hasta que se sincronice con el ciclo de la tarjeta. Los ciclos del bus del 8088 normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos ciclos el hardware de la PC, automáticamente inserta un pulso ocioso extra llamado TW. La señal READY se usa para insertar estados nuevos o adicionales de espera. Debido a que los diferentes ciclos del bus requieren distintos tiempos, la señal READY se debe controlar de manera diferente. Generación de estados de espera en ciclos de bus de memoria El hardware de la PC no inserta estados de espera en los ciclos de lectura o escritura a memoria, sino que esto lo hace la tarjeta usando la señal READY. La figura ilustra las señales de tiempo necesarias para generar un estado de espera para un ciclo de lectura o escritura a memoria.

Tiempos de un estado de espera para ciclos de lectura o escritura a memoria. Los circuitos de la tarjeta madre muestran la señal READY en el flanco de subida del tiempo T2. Esta señal debe ser valida (activo alto) 75 nanosegundos antes del flanco de subida de T2 para que no se genere un estado de espera. Si se requiere un estado

8


de espera, la señal READY debe ser valida (activo bajo) 60 nanosegundos antes del flanco de subida de T2. Si la señal READY se mantiene en bajo hasta el flanco de subida del siguiente pulso, se inserta un estado de espera adicional. Para las operaciones de lectura y escritura de E/ S también se usa la señal READY, y los tiempos son los mismos que para acceso a memoria, excepto que la señal READY se muestrea en T3. Generación de estados de espera en ciclos de Bus de DMA La PC automáticamente inserta un estado de espera en todos los ciclos de DMA en los canales 1, 2 y 3. No se insertan estados de espera en el canal 0; sólo se usa para soportar el refresco de memoria y no esta disponible para funciones normales de DMA. Para asegurar que un estado de espera adicional se inserta en el ciclo de DMA, la señal READY debe estar en bajo 135 nanosegundos antes del flanco de bajada del estado SW1. Para asegurar que no se inserta un estado de espera adicional, la señal READY debe estar en alto 115 nanosegundos antes del flanco de bajada del siguiente pulso S. Diagramas de transición de estados.

El diagrama de transición de estado (también conocido como DTE) enfatiza el comportamiento dependiente del tiempo del sistema. Este tipo de modelo sólo importaba para una categoría de sistemas conocido como sistemas de tiempo-real; como ejemplo de estos sistemas se tienen el control de procesos, sistemas de conmutación telefónica, sistemas de captura de datos de alta velocidad y sistemas de control y mando militares. En la figura 4.3.1 se muestra un DTE típico. Este diagrama muestra el comportamiento de una máquina contestadora de teléfono normal. Los principales componentes del diagrama son estados, y flechas que representan los cambios de estado.

Figura 4.3.1: Diagrama transcisión de estados.

de

Cada rectángulo representa un estado en el que se puede encontrar el sistema. Pudiendo ser este:

9


• • • • • • • •

Esperar a que el usuario dé su contraseña. Calentar una mezcla de sustancias químicas. Esperar la siguiente orden. Acelerar el motor. Mezclar los ingredientes. Esperar datos del instrumento. Llenar el tanque. Aguardar en reposo.

Cambios de estado. ¿Cómo cambia un sistema de un estado a otro?. Sí se tienen reglas ordenadas que gobiernan su comportamiento, entonces generalmente sólo algunos tipos de cambio de estado serán significativo y válidos. Se muestran los cambios de estado válidos en el DTE conectando pares relevantes de estado con una flecha. Así, la figura 4.3.2 muestra que el sistema puede ir del estado 1 al estado 2. También muestra que cuando el sistema se encuentra en el estado 2 puede ir al estado 3 o regresar al 1.

Figura 4.3.2:Cambios de estados. A pesar de que la figura 4.3.2 proporciona información interesante acerca del comportamiento dependiente del tiempo de un sistema, no dice cuales son los estados inicial y final del sistema. La mayoría de los sistemas tienen un estado inicial reconocible y estado final reconocible; esto se muestra en la figura 4.3.3.

Figura 4.3.3:Estados inicial y final. Lo que identifica al estado 1 de la figura 4.3.3 como inicial es la flecha "desnuda" que no está conectada a ningún otro estado, y lo que identifica al estado 5 como final es la ausencia de una flecha que salga de él. El sentido común dice que un sistema sólo puede tener un estado inicial; sin embargo, puede tener múltiples estados finales. Los estados finales son mutuamente excluyentes, lo cual

10


significa que sólo uno de ellos puede ocurrir durante alguna ejecución del sistema. Condiciones y acciones. Para completar nuestro DTE necesitamos añadir dos cosa más: las condiciones que causan un cambio de estado y las acciones que el sistema toma cuando cambia de estado. Como ilustra la figura 4.3.4, las condiciones y acciones se muestran junto a la flecha que conecta dos estados relacionados. Figura 4.3.4: Muestra de condiciones y acciones. Una condición es un acontecimiento en el ambiente externo que el sistema es capaz de detectar; típicamente es una señal, una interrupción o la llegada de un paquete de datos. Esto usualmente hace que el sistema cambie de un estado de espera X a un estado de espera Y; o de llevar a cabo la actividad X a llevar acabo la actividad Y. Como parte del cambio de estado, normalmente hará una o más acciones: producirá una salida, desplegará una señal en la terminal del usuario, llevará a cabo un cálculo, etc. Construcción del diagrama de transición de estados. Así como en los DFD se utilizó la partición también es recomendable usarla en los DTE en donde los sistemas son muy complejos. Para la construcción de DTE se puede seguir cualquiera de dos enfoques: 1. Se puede comenzar por identificar todos los posibles estados del sistema y representar cada uno como una caja separada en una hoja de papel. Luego, se pueden explorar todas las conexiones con significado (es decir, los cambios de estado) entre las cajas. 2. Como alternativa, se puede comenzar por el estado inicial, y luego metódicamente ir siguiendo un camino hasta el o los estados restantes; luego de los estados secundarios, proseguir a los terciarios; etc. Cuando se termina de construir el DTE preliminar, deben seguirse las siguientes reglas para verificar la consistencia: • • •

¿Se han definido todos los estados?. ¿Se pueden alcanzar todos los estados?. ¿Se han definido estados que no tengan caminos que lleven a ellos? ¿Se puede salir de todos los estados?

11


¿El sistema responde adecuadamente a todas las condiciones posibles?

El DTE representa una especificación de proceso para una burbuja de control en DFD. Como herramienta de modelado de alto nivel, el DTE puede servir incluso como especificación de proceso para todo el sistema. Si se representa todo el sistema como un diagrama de una burbuja, puede usarse el DTE para mostrar la secuencia de actividades en el sistema.

12


2.3 INTERRUPCIONES DE HARDWARE ¿Que es una interrupción? Una interrupción es una instrucción que detiene la ejecución de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este último proceso se devuelve el control a la aplicación anterior. Por ejemplo, cuando estamos trabajando con un procesador de palabras y en ese momento llega un aviso de uno de los puertos de comunicaciones, se detiene temporalmente la aplicación que estábamos utilizando para permitir el uso del procesador al manejo de la información que está legando en ese momento. Una vez terminada la transferencia de información se reanudan las funciones normales del procesador de palabras. Las interrupciones ocurren muy seguido, sencillamente la interrupción que actualiza la hora del día ocurre aproximadamente 18 veces por segundo. Para lograr administrar todas estas interrupciones, la computadora cuenta con un espacio de memoria, llamado memoria baja, donde se almacenan las direcciones de cierta localidad de memoria donde se encuentran un juego de instrucciones que la UCP ejecutará para después regresar a la aplicación en proceso. La sentencia para usar una interrupción en ensamblador es INT número.

TIPOS DE INTERRUPCION

13


Las interrupciones de hardware Las interrupciones hardware son producidas por varias fuentes, por ejemplo del teclado, cada vez que se presiona una tecla y se suelta se genera una interrupción. Otras interrupciones son originadas por el reloj, la impresora, el puerto serie, el disco, etcétera. Una interrupción de tipo hardware es una señal eléctrica producida por un dispositivo físico del ordenador. Esta señal informa a la CPU que el dispositivo requiere su atención. La CPU parará el proceso que está ejecutando para atender la interrupción. Cuando la interrupción

termina, la CPU reanuda la ejecución en donde fue interrumpida, pudiendo ejecutar el proceso parado originalmente o bien otro proceso. Existe un hardware específico, para que los dispositivos puedan interrumpir lo que está haciendo la CPU. La propia CPU, tiene entradas específicas para ser interrumpida INT, cuando se activa esta entrada INT, la CPU para lo que está haciendo y activa la salida para reconocer la interrupción INTA, y comienza a ejecutar el código especial que maneja la interrupción. Algunas CPU´s disponen de un conjunto especial de registros, que solo son utilizados en el modo de ejecución de interrupciones, lo que facilita el trabajo de tratar las interrupciones. La placa base del computador utiliza un controlador para decodificar las interrupciones que no son más que señales eléctricas producidas por los dispositivos, coloca en el bus de datos información de que dispositivo interrumpió y activa la entrada INT de interrupción de la CPU. Este chip controlador protege a la CPU y la aísla de los dispositivos que interrumpen, además de proporcionar flexibilidad al diseño del sistema. El controlador de interrupciones tiene un registro de estado para permitir o inhibir las interrupciones en el sistema. Los IRQ o interrupt request (Pedido de Interrupción), son las notificaciones de las interrupciones enviadas desde los dispositivos hardware a la CPU, en respuesta a la IRQ, la CPU salta a una dirección – una rutina de servicio de interrupción (ISR), comúnmente llamada Interrupt handler (Manejador de interrupciones) - Que se encuentra como una función dentro del software manejador de ese dispositivo formando parte del núcleo. Así, una función manejadora de interrupciones es una función del núcleo que ejecuta el servicio de esa interrupción. Los IRQ se encuentran numerados, y cada dispositivo hardware se encuentra asociado a un número IRQ. En la arquitectura IBM PC y compatibles, por ejemplo, IRQ 0 se encuentra asociado al reloj o temporizador, el cual genera 100 interrupciones por segundo, disquete el 6, los discos IDE la 14 y 15. Se puede compartir un IRQ entre varios dispositivos.

14


Localizaci贸n De Los Vectores De Interrupci贸n

15


Interrupciones hardware en linux. Una de las principales tareas del sistema de manejo de interrupciones es llevar las diferentes interrupciones a los códigos de manejo de esas interrupciones. Cuando se activa el contacto 6 del controlador de interrupciones, se debe conocer cuál es la interrupción asociada a ese contacto, por ejemplo el controlador del dispositivo disquete, por lo tanto el sistema de manejo de interrupciones debe encaminar a la rutina que trata esta interrupción, para ello Linux proporciona un conjunto de estructuras de datos y tablas, y un conjunto de funciones que las inicializan y las manejan. El sistema de interrupciones es muy dependiente de la arquitectura, Linux en la medida de lo posible, tratará de que sea independiente de la máquina en la que reside el sistema, para ello el sistema de interrupciones se va a implementar mediante una serie de estructuras de datos y funciones en lenguaje C que facilitarán la portabilidad. Veamos una presentación de las estructuras de datos implicadas, resaltando las más importantes y describiendo los campos de cada una. Posterior a eso se seguirá con la inicialización de estas estructuras que soportan las interrupciones, esta parte es fuertemente dependiente de la arquitectura, nos basaremos en i386. Finalmente se expondrá el flujo dentro del núcleo que sigue una interrupción hardware, desde que se origina en el dispositivo hardware hasta que se atiende por el manejador de la interrupción.

Estructuras de datos para soportar el sistema de interrupciones hardware irqaction almacena la dirección de la función de manejo de interrupciones. irq_chip contiene las funciones que manejan un controlador de interrupciones particular, es dependiente de la arquitectura. irq_desc vector con una entrada para cada una de las interrupciones que pueden ser atendidas.

Procesado de interrupciones Una vez que las estructuras de datos mencionadas en la sección anterior (la tabla de interrupciones (IDT) y demás estructuras de datos que conforman el sistema de interrupciones de Linux) están debidamente inicializadas y todos los manejadores de dispositivos cargados en el sistema e inicializados, el sistema está en disposición de atender cualquier tipo de interrupción que se genere por los dispositivos que usen este mecanismo para comunicarse con la CPU. De esta forma, la IDT estará rellena con el desplazamiento que nos lleva a la función common_interrupt pasándole como parámetro el número de la interrupción que se activó.

16


Ejemplo: Modulo De Interrupci贸n Del Teclado

17


Procedimientos De Inicialización Para que los dispositivos puedan utilizar el sistema de interrupciones, el sistema al arrancar debe inicializar mediante unos procedimientos, que se encuentran en /arch/x86/kernel/irqinit.c, las estructuras de datos relacionas con las interrupciones.

init_IRQ().

Esta función es llamada por el programa de inicio del sistema init start_kernel (), n init/main.c. Esta función pone a punto la tabla de descriptores de interrupciones (IDT). Se encuentra definida en el fichero arch/i386/kernel/i8259.c Primeramente inicializa el vector de interrupciones hardware irq_desc[0..15]. Seguidamente inicializa la tabla IDT, llamando a la función set_intr_gate().

set_intr_gate

Por medio de la función set_intr_gate se rellena la tabla de descriptores de interrupciones (IDT). Básicamente esta es la parte en la que se realiza el "cableado" de las interrupciones dentro del sistema, a partir de este momento, cualquier interrupción será atendida. Se encuentra en el fichero arch/x86/include/asm/desc.h.

request_irq

Una vez que el sistema de interrupciones está inicializado, cuando se vayan cargando los diferentes manejadores de dispositivos éstos harán uso de las funciónes request_irq y setup_x86_irq para colocar la dirección de la función manejadora de interrupción propia y activar la interrupción. request_irq es llamado por los manejadores, en su inicio, para colocar la dirección de la función manejadora de interrupción. Definida en kernel/irq/manage.c. Crea un nuevo nodo en la lista irqaction y llena sus campos con los valores Suministrados para una IRQ.

Las traps o interrupciones de software son interrupciones invocadas por el usuario desde un programa. En este caso, la CPU pasa a ejecutar el manejador de trap asociado (su rutina de atención a la interrupción o ISR2). Una interrupción se genera cuando se quiere que la CPU deje de ejecutar el proceso en curso y ejecute una función específica de quien produce la interrupción. Cuando se ejecuta esta función específica decimos que la CPU está atendiendo la interrupción.

18


2.4 INTERRUPCIONES DE SOFTWARE Podemos realizar una clasificación de las interrupciones, atendiendo a la fuente que las produce. Interrupción software, se produce cuando un usuario solicita una llamada del sistema. Una Interrupción software se produce cuando un usuario solicita un recurso del núcleo, mediante una llamada al sistema, open, write, read, mount, etc. Los pasos que se producen son los siguientes: 1.- El proceso usuario solicita la función correspondiente de la librería libc, que ha sido añadida en la compilación del proceso. df = open (fichero, modo); 2.- La función de librería coloca los parámetros de la llamada en los registros del Procesador y ejecuta la instrucción INT 0x80. 3.-Se conmuta de modo usuario a modo núcleo mediante las estructuras conocidas como las tablas IDT (Tabla Descriptora de Interrupciones) y GDT (Tabla Global de Descriptores). 4.- Entra a ejecutarse una función del núcleo, system_call, Interfase entre el usuario y el núcleo. 5.- Cuando se termina la llamada, system_call retorna al proceso que la llamo y se retorna a modo usuario. Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT. El uso de las interrupciones nos ayuda en la creación de programas, utilizándolas nuestros programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño debido en gran parte a su menor tamaño. Este tipo de interrupciones podemos separarlas en dos categorías: las interrupciones del sistema operativo Dos y las interrupciones del Bios. La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la desventaja que, como son parte del hardware son muy específicas y pueden variar dependiendo incluso de la marca del fabricante del circuito. La elección del tipo de interrupción a

19


utilizar dependerá únicamente de las características que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS). TABLA DE TIPOS, FUENTES Y VECTORES DE INTERRUPCION

20


INTERRUPCIÓN 21H Propósito: Llamar a diversas funciones del DOS. Sintaxis: Int 21H Nota: Cuando trabajamos en TASM es necesario especificar que el valor que estamos utilizando es hexadecimal. Esta interrupción tiene varias funciones, para acceder a cada una de ellas es necesario que el registro AH se encuentre el número de función que se requiera al momento de llamar a la interrupción. IDT (Tabla Descriptora de Interrupciones) Tabla que guarda los descriptores de interrupciones, cada vez que se produce una Interrupción se salta a una entrada de esta tabla. Contiene 256 entradas, y cada entrada tiene información para llegar a una función manejadora de la interrupción. Contienen el campo denominado Selector, que tiene la dirección de una entrada de la tabla GDT; el campo Desplazamiento, que contiene el desplazamiento que hay que sumar a la base del núcleo para llegar a la función que queremos que se ejecute cuando se interrumpe; por último contiene una serie de campos denominados Atributos, que fijan si el desplazamiento viene en bytes o en palabras, bits de protección, etc.). Existe un registro IDTR dentro del microprocesador que contiene la dirección base y la longitud de esta tabla, para encontrarla con rapidez. Existe una tabla para todo el sistema. Para rellenar esta tabla se precisan instrucciones en ensamblador privilegiadas, un usuario normal no puede modificar sus entradas. GDT (Tabla Global de Descriptores) Esta tabla es única para el sistema y contiene información de los descriptores de Segmentos del sistema, los microprocesadores de Intel obligan a trabajar con segmentos de memoria (base, longitud). Una de las entradas contiene la base y la longitud del segmento que contiene el núcleo del sistema operativo en memoria principal. Cada entrada también tiene otros campos que denominamos Atributos, que definen atributos del segmento, como permisos de acceso a ese segmento. Dentro de la CPU existe un registro específico GDTR para almacenar la dirección base y longitud de esta tabla y facilitar su acceso. Otras entradas de esta tabla describen las tablas LDT y el segmento TSS.

21


LDT (Tabla Local de Descriptores) Existe una tabla por cada proceso que hay en el sistema, si bien solo una esta activa, la del proceso que se está ejecutando en la CPU. Contiene distintos descriptores de segmentos correspondientes al proceso, como el segmento de código, el segmento de datos, el segmento stack, etc. TSS Esta tabla tiene una imagen de todos los registros de la CPU relacionados con un proceso, (EAX, EBX, ECX,…), cada vez que se produce una interrupción, la CPU de forma automática, copia el estado de sus registros en este segmento. SYSTEM_CALL Estudiemos esta función en el núcleo versión 2.6.28.6, para la plataforma Intel de 32 bits. La encontramos en la ruta arch/x86/kernel/entry_32_S. Como todas las interrupciones tiene tres puntos principales que en este caso los realiza de la siguiente forma;

22


DIAGRAMA GENERAL DE LOS BLOQUES DE INTERRUPCION

23


2.5 CIRCUITOS DE TEMPORIZACIÓN E INTERRUPCIÓN Temporización del sistema. Reloj del sistema. El reloj de una computadora se utiliza para dos funciones: Principales: 1. Para sincronizar las diversas operaciones que realizan los diferentes subcomponentes del sistema informático. 2. Para saber la hora. El reloj físicamente es un circuito integrado que emite una cantidad de pulsos por segundo, de manera constante. Al número de pulsos que emite el reloj cada segundo se llama Frecuencia del Reloj. La frecuencia del reloj se mide en Ciclos por Segundo, también llamados Hertzios, siendo cada ciclo un pulso del reloj. Como la frecuencia del reloj es de varios millones de pulsos por segundo se expresa habitualmente en: Megaherzios. El reloj marca la velocidad de proceso de la computadora generando una señal periódica que es utilizada por todos los componentes del sistema informático para sincronizar y coordinar las actividades operativas, evitando el que un componente maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre dos componentes sea distinta. Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales en un segundo. Interrupciones: Las interrupciones son esencialmente llamadas a subrutina generadas por los dispositivos físicos, al contrario de las subrutinas normales de un programa en ejecución. Como el salto de subrutina no es parte del hilo o secuencia de ejecución programada, el controlador guarda el estado del procesador en la pila de memoria y entra a ejecutar un código especial llamado "manejador de interrupciones" que atiende al periférico específico que generó la interrupción. Al terminar la rutina, una instrucción especial le indica al procesador el fin de la atención de la interrupción. En ese momento el controlador restablece el estado anterior, y el programa que se estaba ejecutando antes de la interrupción sigue como si nada hubiese pasado. Las rutinas de atención de

24


interrupciones deben ser lo más breves posibles para que el rendimiento del sistema sea satisfactorio, porque normalmente cuando una interrupción es atendida, todas las demás interrupciones están en espera. Imagine que está esperando la visita de un amigo, al que llamaremos Juan. Usted y Juan han acordado que cuando él llegue a su casa esperará pacientemente a que le abra la puerta. Juan no debe tocar a la puerta porque alguien en la casa duerme y no quiere que le despierten. Ahora usted ha decidido leer un libro mientras espera a que Juan llegue a la casa, y para comprobar si ha llegado, cada cierto tiempo detiene la lectura, marca la página donde se quedó, se levanta y va hasta la puerta, abre y comprueba si Juan ha llegado, si éste todavía no está en la puerta, esperará unos minutos, cerrará la puerta y regresará a su lectura durante algún tiempo. Como verá este es un método poco eficiente para esperar a Juan porque requiere que deje la lectura cada cierto tiempo y vaya hasta la puerta a comprobar si él ha llegado, además debe esperar un rato si todavía no llega. Y por si fuera poco, imagine que Juan no llega nunca porque se le presentó un problema, tuvo que cancelar la cita y no pudo avisarle a tiempo, o peor, que Juan ha llegado a la puerta un instante después que usted la cerraba. Juan, respetando lo acordado, espera un tiempo, pero se cansa de esperar a que le abran y decide marcharse porque cree que ya usted no está en la casa o no puede atenderlo. A este método de atender la llegada de Juan lo llamaremos encuesta. Veamos ahora otro método. En esta ocasión simplemente se recuesta en el sofá de la sala y comienza a leer su libro, cuando Juan llegue debe tocar el timbre de la puerta y esperar unos momentos a que le atiendan. Cuando usted oye sonar el timbre, interrumpe la lectura, marca la página donde se quedó y va hasta la puerta para atender a la persona que toca el timbre. Una vez que Juan o la persona que ha tocado el timbre, se marcha, usted regresa a su asiento y retoma la lectura justo donde la dejó. Este último es un método más eficiente que el anterior porque le deja más tiempo para leer y elimina algunos inconvenientes como el de que Juan nunca llegue o se marche antes de que usted abra la puerta. Es, en principio, un método simple pero muy eficaz y eficiente, lo llamaremos atención por interrupción. El primero de ellos, la encuesta, es un método eficaz, pero poco eficiente porque requiere realizar lecturas constantes y muchas veces innecesarias del estado del proceso que queremos atender. Sin embargo, es muy utilizado en la programación de micros controladores porque resulta fácil de aprender, la implementación de código con este método es menos compleja y no requiere de hardware especial para llevarla adelante. Por otra parte, la encuesta, tiene muchas deficiencias que con frecuencia obligan al diseñador a moverse hacia otros horizontes.

25


En términos generales, un proceso de interrupción y su atención por parte del procesador, tiene la siguiente secuencia de acciones: 1. En el mundo real se produce el evento para el cual queremos que el procesador ejecute un programa especial, este proceso tiene la característica de que no puede esperar mucho tiempo antes de ser atendido o no sabemos en que momento debe ser atendido. 2. El circuito encargado de detectar la ocurrencia del evento se activa, y como consecuencia, activa la entrada de interrupción del procesador. 3. La unidad de control detecta que se ha producido una interrupción y “levanta” una bandera para registrar esta situación; de esta forma si las condiciones que provocaron el evento desaparecen y el circuito encargado de detectarlo desactiva la entrada de interrupción del procesador, ésta se producirá de cualquier modo, porque ha sido registrada. 4. La unidad de ejecución termina con la instrucción en curso y justo antes de comenzar a ejecutar la siguiente comprueba que se ha registrado una interrupción. 5. Se desencadena un proceso que permite guardar el estado actual del programa en ejecución y saltar a una dirección especial de memoria de programas, donde está la primera instrucción de la subrutina de atención a interrupción. 6. Se ejecuta el código de atención a interrupción, esta es la parte “consciente” de todo el proceso porque es donde se realizan las acciones propias de la atención a la interrupción y el programador juega su papel. 7. Cuando en la subrutina de atención a interrupción se ejecuta la instrucción de retorno, se desencadena el proceso de restauración del procesador al estado en que estaba antes de la atención a la interrupción. Como podemos observar, el mecanismo de interrupción es bastante complicado, sin embargo tiene dos ventajas que obligan a su implementación: la velocidad y su capacidad de ser asincrónico. Ambas de conjunto permiten que aprovechemos al máximo las capacidades de trabajo de nuestro procesador. Los mecanismos de interrupción no solo se utilizan para atender eventos ligados a procesos que requieren atención inmediata sino que se utilizan además para atender eventos de procesos asincrónicos. Las interrupciones son tan eficaces que permiten que el procesador actúe como si estuviese haciendo varias cosas a la vez cuando en realidad se dedica a la misma rutina de siempre, ejecutar instrucciones una detrás de la otra.

26


Ejemplos de circuitos de temporización. Concluimos que el tiempo de descarga del C es mayor cuando aumenta su valor en uF.

Ahora veamos la carga del C. Armamos el circuito de la figura 2.

Con la ayuda de un tester ó multímetro mida el voltaje DC en los pines del C y observe como aumentando lentamente su voltaje de carga. Ahora cambie la R por una de 1M y mida nuevamente. Concluimos que el tiempo de carga es mayor cuando aumenta el valor de R. Esto nos marca el principio de funcionamiento de los temporizadores a saber que el tiempo viene dado por el circuito RC asociado. Un circuito completo real de un temporizador lo observamos en la figura 3. El temporizador estará activo un período igual a: t = 1.1( R . C)

27


Si queremos que este circuito maneje cargas reales de 120VAC debemos utilizar la señal activa en alto del pin 3 (salida) y amplificarla mediante un transistor driver. Este activará un relé que servirá para manejar lo que queramos acorde a la capacidad de sus contactos. Un circuito real que maneja la válvula de agua de un sistema sanitario por un tiempo ajustado en el temporizador es el siguiente:

Observe que en esencia es el mismo circuito, solo se han agregado unos cuantos dispositivos para dar una aplicación real. Ajustes Al saber que el tiempo o período es igual a : t = 1.1( R . C)

28


deducimos que para ajustar el tiempo solo debemos variar uno de los dos valores; bien sea C ó R. El resultado será un mayor o menor tiempo dependiendo si es mayor o menor el valor de R ó C. Usualmente se varía R cambiándola por un potenciómetro ya que es más fácil. Ahora bien hay un circuito temporizador que se ajusta con suiches de selección el cual es el que mostramos a continuación con su tabla de tiempos.

Como puedes observar es el mismo principio de funcionamiento ya que en el pin 1 y 2 van los componentes R C; el suiche pulsador de inicio está en el pin 6 que viene haciendo las veces del suiche de la figura 1 y los suiches de selección de temporización propios del integrado se conectan al pin 12 y 13. De esta forma uno programa cuánto tiempo va a activar o temporizar el circuito. Modos Hasta aquí hemos visto como trabaja el temporizador activando una carga desde que le damos start ó inicio. Podemos decir que este es el modo activo en alto. Sin embargo puede presentarse una necesidad que haga todo lo contrario: es decir que se active en bajo y pase a alto solo después que haya pasado el temporizado. Este es el caso de los protectores de nevera que al recibir energía no la conectan enseguida sino solo después de que ha pasado el temporizado. Para ello solo tenemos que invertir la posición de los componentes R y C. La R que estaba arriba se coloca donde iba el C y el

29


C pasa al lugar de la R. Todo lo demás queda igual y solo resta colocarle el circuito de potencia que queramos. Aplicaciones: Los temporizadores están presentes en casi todos los circuitos electrónicos. Aparte de los ejemplos mostrados tenemos uno muy usual en la industria: Un sistema temporizado secuencial de procesos. El circuito esta mostrado abajo y sirve para controlar un proceso (por ejemplo una inyectora de plásticos) y al terminar el proceso reiniciarse automáticamente. Bueno espero que les haya sido útil este tutorial sobre los temporizadores. Si necesitan mis servicios para construir un temporizador en particular u otra clase de circuito.

CIRCUITOS DE INTERRUPCION: Este circuito integrado está especialmente diseñado para controlar las interrupciones en sistemas basados en el 8080/8085 y en el 8086. Puede controlar hasta 8 interrupciones vectorizadas. Además, a un 8259 se le pueden conectar en cascada un máximo de 8 chips 8259 adicionales, lo que permite gestionar sistemas con hasta 64 interrupciones, como veremos. El significado e interpretación de las señales se muestra a la derecha:

30


-CS: -WR: -RD:

Habilita la comunicación con la CPU. Permite al 8259 aceptar comandos de la CPU. Permite al 8259 dejar la información en el bus de datos. Bus de datos bidireccional, por el que se transmite la información de D7..D0: control/estado y el número de vector de interrupción. Líneas de cascada, actúan como salida en el 8259 maestro y como CAS0..CAS2: entrada en los 8259 esclavos, en un sistema con varios 8259 interconectados, constituyendo un bus local. Pin de doble función: en el buffered mode del 8259 actuará como -EN, -SP/-EN: para habilitar los buffers del bus; en el modo normal indicará si el 8259 es maestro o esclavo (-SP). Conectado a la patilla INT de la CPU para producir la interrupción cuando INT: llegue el momento. Líneas asíncronas de petición de interrupción. Una petición de interrupción se ejecuta manteniendo IR en alto hasta que se recibe el IR0..IR7: reconocimiento (modo por flancos) o simplemente poniendo en alto la línea IR (modo por niveles). Línea de reconocimiento de interrupción, por medio de esta línea se -INTA: fuerza al 8259 a depositar en el bus la información del vector de interrupción. INTA es independiente de -CS. En conjunción con -CS, -WR y -RD es empleada para enviar las palabras A0: de comando al 8259 y para solicitar información al mismo. Suele ir conectada a la línea A0 de la CPU. Descripción Funcional El diagrama funcional del 8259, con la estructura interna de las diversas partes que lo componen, es el siguiente:

31


Los principales registros internos del 8259 son el IRR (Interrupt Request Register) y el ISR (In Service Register). El IRR almacena todas las peticiones de interrupción pendientes; el ISR almacena todas las interrupciones que están siendo atendidas en un momento dado. La lógica de gestión de prioridad determina qué interrupción, de las solicitadas en el IRR, debe ser atendida primero: cuando lleguen las señales INTA dicha interrupción será la primera procesada y su bit correspondiente se activará en el ISR. El buffer del bus de datos conecta el 8259 con el bus de datos de la placa principal del ordenador: su diseño en 3 estados permite desconectarlo cuando sea necesario; a través de este bus circulan las palabras de control y la información de estado. La lógica de lectura y escritura acepta los comandos que envía la CPU: aquí hay registros para almacenar las palabras de inicialización y operación que envía el procesador; también sirve para transferir el estado del 8259 hacia el bus de datos. El buffer de cascada/comparador almacena y compara las identificaciones de todos los 8259 que posea el sistema: el 8259 maestro envía la identificación del 8259 esclavo en las líneas CAS, los 8259 esclavos la leen y el implicado en la operación coloca en el bus de datos la dirección (vector) de la rutina que atenderá la interrupción en los 2 próximos (o el próximo) ciclos INTA. Funcionamiento Del 8259 El funcionamiento del 8259 varía ligeramente en función del sistema en que esté instalado, según sea este un 8086 o un 8080/8085. Veremos primero el caso del 8086: Una o más líneas IR son activadas por los periféricos, lo que pone a 1 el correspondiente bit del IRR. El 8259 evalúa la prioridad de estas interrupciones y solicita la interrupción a la 2) CPU (línea INT) si es necesario. 3) Cuando la CPU reconoce la interrupción, envía la señal -INTA. Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a 4) la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR. En este ciclo, el 8259 aún no controla el bus de datos. Cuando la CPU envía un segundo ciclo -INTA, el 8259 deposita en el bus de datos 5) un valor de 8 bits que indica el número de vector de interrupción del 8086, para que la CPU lo pueda leer. En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el segundo pulso -INTA; en caso contrario, ese bit permanece activo hasta 6) que la CPU envíe el comando EOI al final de la rutina que trata la interrupción (caso más normal). 1)

En el caso de sistemas basados en el 8080/8085, el funcionamiento es idéntico hasta el punto (3), pero a continuación sucede lo siguiente:

32


Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra 4) en el IRR. En este ciclo, el 8259 deposita en el bus de datos el valor 11001101b, correspondiente al código de operación de la instrucción CALL del 8080/85. 5) Esta instrucción CALL provoca que la CPU envíe dos pulsos -INTA. El 8259 utiliza estos dos pulsos -INTA para depositar en el bus de datos, 6) sucesivamente, la parte baja y alta de la dirección de memoria del ordenador de la rutina de servicio de la interrupción (16 bits). Esto completa la instrucción CALL de 3 bytes. En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el tercer pulso -INTA; en caso 7) contrario, ese bit permanece activo hasta que la CPU envíe el comando EOI al final de la rutina que trata la interrupción. Si en el paso (4), con ambos tipos de microprocesador, no está presente la petición de interrupción (por ejemplo, porque ha sido excesivamente corta) el 8259 envía una interrupción de nivel 7 (si hubiera un 8259 conectado en IR7, las líneas CAS permanecerían inactivas y la dirección de la rutina de servicio de interrupción sería suministrada por el 8259 maestro). Ejemplo: cambio de la base de las interrupciones. La siguiente utilidad reprograma el 8259 maestro para desviar las INT 8-INT 15 a los nuevos vectores INT 50h-INT 57h (que invocan a los originales, para que el sistema siga funcionando con normalidad). Esta nueva ubicación no ha sido elegida por capricho, y es la misma que emplea WINDOWS 3.x. La razón es que el 386 trabaja normalmente en modo virtual-86 bajo MS-DOS 5.0; cuando se produce una interrupción se ejecuta una rutina en modo protegido. El EMM386 del MS-DOS 5.0 no está preparado para soportar las IRQ0-IRQ7 en otra localización que no sea la tradicional INT 8-INT 15 ó en su defecto INT 50h-INT 57h (por compatibilidad con WINDOWS). Con el QEMM386 o, simplemente, sin controlador de memoria expandida instalado, no habría problemas y se podría elegir otro lugar distinto. Por cierto: si se entra y se sale de WINDOWS, la nueva localización establecida, ya sea en 50h o en otro sitio, deja de estar vigente: esto significa que WINDOWS reprograma la interrupción base al volver al DOS. Personalmente he comprobado que aunque IRQDEMO fuera más elegante (empleando funciones de la especificación VCPI), nuestro querido WINDOWS no lo sería: ¡para qué molestarse!. Sin embargo, IRQDEMO sí se toma la molestia de comprobar si la máquina es un XT o un AT para enviar correctamente la ICW3 del 8259.

33


CONCLUSIÓN Como conclusión nos resulto muy incesante saber de La importancia de la sincronización radica en el mantenimiento de la confiabilidad e integridad de la información. Y conociendo lo protocolos de sincronización: Slow sync : En términos generales cuando se va ha sincronizar con este protocolo la pda transfiere todos los datos hacia el PC. y compara uno a uno los registro para ver cual ha sufrido cambios, se ha borrado o ha sido adicionado. Fast sync : Este protocolo de sincronización es mucho mas rápido que el anterior y se basa en que sólo pasan al servidor los datos que han tenido modificaciones, en otras palabras, los datos que no han sufrido cambios, borrados o adiciones no se sincronizan. Y dándonos la importancia de lo ciclos del bus del 8088 normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos ciclos el hardware de la PC, automáticamente inserta un pulso ocioso extra llamado TW. La señal READY se usa para insertar estados nuevos o adicionales de espera. Debido a que los diferentes ciclos del bus requieren distintos tiempos, la señal READY se debe controlar de manera diferente. Sin olvidar los procesos de atención a interrupciones tienen la ventaja de que se implementan por hardware ubicado en el procesador, así que es un método rápido de hacer que el procesador se dedique a ejecutar un programa especial para atender eventos que no pueden esperar por mecanismos lentos como el de encuesta. Esto es la colusión que llegamos todos integrantes del equipo 2, tomando la gran importancia de esta materia que nos llega a nuestra preparación como ingenieros.

34



BIBLIOGRAFĂ?A http://www.mailxmail.com/curso-tecnicas-desarrollo-computacion-movil-orientadopda/algoritmos-tecnicas-sincronizacion http://ipsec-sincronizaciondedatos.blogspot.com/2009/07/algoritmos-y-tecnicas-desincronizacion.html http://es.scribd.com/doc/12681415/Metodos-de-Direccionamiento http://www.scribd.com/doc/12687919/Interrupciones-y-TemporizaciOn http://html.rincondelvago.com/informatica-basica_8.html http://www.mitecnologico.com/Main/BusDeControl http://es.wikipedia.org/wiki/Bus_de_direcciones http://www.google.com.mx/search? hl=es&q=buse+local&meta=&aq=f&oq= http://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica) http://www.mitecnologico.com/Main/EstadosDeEspera


ARQUITECTURA DE COMPUTADORAS II TRABAJO:

INVESTIGACIÓN UNIDAD 2 CATEDRÁTICO:

LIC. MANLIO MORENO RODRÍGUEZ ALUMNOS:

MERCEDES GALLEGOS RODRÍGUEZ TERESA DE JESÚS RUEDA BAUTISTA PASCUAL PÉREZ AGUILAR 6to. SEMESTRE GRUPO: B

PICHUCALCO, CHIAPAS A 10 DE SEPTIEMBRE DE 2011.


UNIDAD 2: TEMAS

2


INTRODUCCIÓN La unidad 2 se realizo la investigación de los temas que se detallan brevemente iniciando con la sincronización mencionándonos que es el proceso por el cual dos componentes intercambian datos o información. Los datos intercambiados pueden afectar la información uno o de ambos componentes. Se dice que esto se hace por medio de protocolos de sincronización, donde ambos componentes "conocen" la forma de intercambio de datos. Encontraremos también que el tiempo de espera es cuando se conectan tarjetas al bus de la PC, un problema común es igualar la velocidad de los ciclos del bus con la de las tarjetas. y dando una pequeña definición de es una interrupción es una instrucción que detiene la ejecución de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este último proceso se devuelve el control a la aplicación anterior. Por ejemplo, cuando estamos trabajando con un procesador de palabras y en ese momento llega un aviso de uno de los puertos de comunicaciones, se detiene temporalmente la aplicación que estábamos utilizando para permitir el uso del procesador al manejo de la información que está legando en ese momento. Mencionándonos también que la Interrupción software se produce cuando un usuario solicita un recurso del núcleo, mediante una llamada al sistema, open, write, read, mount, etc. Y se menciona el tema del el reloj de una computadora se utiliza para dos funciones principales: 1. Para sincronizar las diversas operaciones que realizan subcomponentes del sistema informático.

los diferentes

2. Para saber la hora. Sin olvidar que el reloj marca la velocidad de proceso de la computadora generando una señal periódica que es utilizada por todos los componentes del sistema informático para sincronizar y coordinar las actividades operativas, evitando el que un componente maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre dos componentes sea distinta. Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales en un segundo. Una breve introducción de lo que contiene el trabajo de investigación tocando un poco mas afondo cada tema, esperamos que este trabajo cumpla con todas las expectativa que espera.

3


UNIDAD 2. TÉCNICA DE SINCRONIZACIÓN DE DATOS 2.1 TECNICAS DE ASIGNACIÓN La Sincronización es el proceso por el cual dos componentes intercambian datos o información. Los datos intercambiados pueden afectar la información uno o de ambos componentes. Se dice que esto se hace por medio de protocolos de sincronización, donde ambos componentes "conocen" la forma de intercambio de datos.

Figura 3.1. Sincronización de Información La importancia de la sincronización radica en el mantenimiento de la confiabilidad e integridad de la información. Entre los protocolos se encuentran los siguientes: Slow sync : En términos generales cuando se va ha sincronizar con este protocolo la pda transfiere todos los datos hacia el PC. y compara uno a uno los registro para ver cual ha sufrido cambios, se ha borrado o ha sido adicionado.

Figura 3.2. Sincronización por medio de Slow sync. Entoces cada uno de los datos existentes en la Base de datos o archivo de la pda pasa a sincronizar al pc, por eso se denomina show sync. Un ejemplo de datos pude ser la sincronización de pedidos, los cuales se requieren que pasen todos para su posterior facturación. Fast sync : Este protocolo de sincronización es mucho mas rápido que el anterior y se basa en que sólo pasan al servidor los datos que han tenido modificaciones, en otras palabras, los datos que no han sufrido cambios, borrados o adiciones no se sincronizan.

4


Figura 3.3. Sincronización por medio de Flast sync. Un ejemplo típico de sincronización con este protocolo seria el del mantenimiento de una agenda de citas. Donde no se interesa sincronizar las citas que no han sufrido modificaciones. Si algunas citas permanecen igual se quedan sin sincronizar. Este protocolo de sincronización utiliza una "bandera" de estado que permite "marcar" los registros que han sufrido modificaciones desde la ultima fecha de sincronización. Cuando se sincronizan los el Pc y la Pda pueden ocurrir los siguientes eventos: Inserción:

el registro nuevo en la Pda es adicionado al servidor

Modificación : el registro de la Pda Remplaza al del servidor. Borrado

: el Registro en el servidor es borrado

Guardado

: el Registro se guarda en el servidor.

Cuando termina la sincronización los "banderas" de estado se anulan o "Resetean". Y se guarda la fecha de sincronización. El Protocolo Intellisync anywhere esta dedicado para la sincronización en red de diferentes dispositivos, donde los dispositivos móviles sincronizan con un servidor central. Además de los dos protocolos anteriores existe otro llamando SyncMl (Synchronous Mark Up Language) . La objetivo de este protocolo es la sincronización "abierta" entre dispositivos de diferentes familias. Varias compañías unen esfuerzos para que sus equipos trabajen con este protocolo de sincronización. Se puede decir que se busca un protocolo de sincronización Universal. Este protocolo asume que cada dispositivo guarda banderas de estado de los registros de los demas. Asi que este necesita bastante almacenamiento para mantener la integridad de la información y las banderas de estado.

5


Figura 3.4. Sincronización por medio de Intellisync y Per-to-Per. Per-To-Per: es otro protocolo de sincronización donde todos y cada uno de los dispositivos se sincronizan sin la necesidad de un computador centrar o servidor como ocurre en el caso del protocolo Intellisync anywhere. No esta demás hacer énfasis en que la sincronización es un proceso diferente al de transmisión de información. No se deben confundir estos términos por muy similares que parezcan. El lector puede buscar información de este tema por el nombre de Conduit. Para la sincronización en una aplicación se pueden utilizar tablas de sincronización. En algunas aplicaciones no se sincroniza directamente sobre la base de datos. para este fin se utilizan tablas temporales donde se guarda la información y posteriormente con un proceso se puede depurar y hacer correcciones. Lo anterior se realiza por motivos de seguridad.

6


Figura 3.5. Sincronización sobre Tablas de sincronización. No directamente sobre la base de datos principal. Un ejemplo de esto seria la sincronización en un sistema de pedidos donde lo que se necesita es descargar los pedidos y que el proceso de facturación se encarge del resto. Claro esta que se puede sincronizar directamente sobre la base de datos y hacer la depuración en el proceso de sincronización

Figura 3.6. Agente de sincronización de Hotsync Estas simplemente son opciones que se plantean el lector puede utilizar la que mejor se adapte a su aplicación En este capitulo se menciono algunos de los protocolos de sincronización existentes, con esta información el lector puede profundizar en el tema.

7


2.2 ESTADO DE ESPERA Cuando se conectan tarjetas al bus de la PC, un problema común es igualar la velocidad de los ciclos del bus con la de las tarjetas. Es común que una tarjeta sea más lenta que el bus. Así, el bus de la PC esta diseñado para resolver este problema. La señal READY del bus se puede usar para extender la longitud del ciclo del bus para igualar una tarjeta lenta o parar el bus del sistema hasta que se sincronice con el ciclo de la tarjeta. Los ciclos del bus del 8088 normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos ciclos el hardware de la PC, automáticamente inserta un pulso ocioso extra llamado TW. La señal READY se usa para insertar estados nuevos o adicionales de espera. Debido a que los diferentes ciclos del bus requieren distintos tiempos, la señal READY se debe controlar de manera diferente. Generación de estados de espera en ciclos de bus de memoria El hardware de la PC no inserta estados de espera en los ciclos de lectura o escritura a memoria, sino que esto lo hace la tarjeta usando la señal READY. La figura ilustra las señales de tiempo necesarias para generar un estado de espera para un ciclo de lectura o escritura a memoria.

Tiempos de un estado de espera para ciclos de lectura o escritura a memoria. Los circuitos de la tarjeta madre muestran la señal READY en el flanco de subida del tiempo T2. Esta señal debe ser valida (activo alto) 75 nanosegundos antes del flanco de subida de T2 para que no se genere un estado de espera. Si se requiere un estado

8


de espera, la señal READY debe ser valida (activo bajo) 60 nanosegundos antes del flanco de subida de T2. Si la señal READY se mantiene en bajo hasta el flanco de subida del siguiente pulso, se inserta un estado de espera adicional. Para las operaciones de lectura y escritura de E/ S también se usa la señal READY, y los tiempos son los mismos que para acceso a memoria, excepto que la señal READY se muestrea en T3. Generación de estados de espera en ciclos de Bus de DMA La PC automáticamente inserta un estado de espera en todos los ciclos de DMA en los canales 1, 2 y 3. No se insertan estados de espera en el canal 0; sólo se usa para soportar el refresco de memoria y no esta disponible para funciones normales de DMA. Para asegurar que un estado de espera adicional se inserta en el ciclo de DMA, la señal READY debe estar en bajo 135 nanosegundos antes del flanco de bajada del estado SW1. Para asegurar que no se inserta un estado de espera adicional, la señal READY debe estar en alto 115 nanosegundos antes del flanco de bajada del siguiente pulso S. Diagramas de transición de estados.

El diagrama de transición de estado (también conocido como DTE) enfatiza el comportamiento dependiente del tiempo del sistema. Este tipo de modelo sólo importaba para una categoría de sistemas conocido como sistemas de tiempo-real; como ejemplo de estos sistemas se tienen el control de procesos, sistemas de conmutación telefónica, sistemas de captura de datos de alta velocidad y sistemas de control y mando militares. En la figura 4.3.1 se muestra un DTE típico. Este diagrama muestra el comportamiento de una máquina contestadora de teléfono normal. Los principales componentes del diagrama son estados, y flechas que representan los cambios de estado.

Figura 4.3.1: Diagrama transcisión de estados.

de

Cada rectángulo representa un estado en el que se puede encontrar el sistema. Pudiendo ser este:

9


• • • • • • • •

Esperar a que el usuario dé su contraseña. Calentar una mezcla de sustancias químicas. Esperar la siguiente orden. Acelerar el motor. Mezclar los ingredientes. Esperar datos del instrumento. Llenar el tanque. Aguardar en reposo.

Cambios de estado. ¿Cómo cambia un sistema de un estado a otro?. Sí se tienen reglas ordenadas que gobiernan su comportamiento, entonces generalmente sólo algunos tipos de cambio de estado serán significativo y válidos. Se muestran los cambios de estado válidos en el DTE conectando pares relevantes de estado con una flecha. Así, la figura 4.3.2 muestra que el sistema puede ir del estado 1 al estado 2. También muestra que cuando el sistema se encuentra en el estado 2 puede ir al estado 3 o regresar al 1.

Figura 4.3.2:Cambios de estados. A pesar de que la figura 4.3.2 proporciona información interesante acerca del comportamiento dependiente del tiempo de un sistema, no dice cuales son los estados inicial y final del sistema. La mayoría de los sistemas tienen un estado inicial reconocible y estado final reconocible; esto se muestra en la figura 4.3.3.

Figura 4.3.3:Estados inicial y final. Lo que identifica al estado 1 de la figura 4.3.3 como inicial es la flecha "desnuda" que no está conectada a ningún otro estado, y lo que identifica al estado 5 como final es la ausencia de una flecha que salga de él. El sentido común dice que un sistema sólo puede tener un estado inicial; sin embargo, puede tener múltiples estados finales. Los estados finales son mutuamente excluyentes, lo cual

10


significa que sólo uno de ellos puede ocurrir durante alguna ejecución del sistema. Condiciones y acciones. Para completar nuestro DTE necesitamos añadir dos cosa más: las condiciones que causan un cambio de estado y las acciones que el sistema toma cuando cambia de estado. Como ilustra la figura 4.3.4, las condiciones y acciones se muestran junto a la flecha que conecta dos estados relacionados. Figura 4.3.4: Muestra de condiciones y acciones. Una condición es un acontecimiento en el ambiente externo que el sistema es capaz de detectar; típicamente es una señal, una interrupción o la llegada de un paquete de datos. Esto usualmente hace que el sistema cambie de un estado de espera X a un estado de espera Y; o de llevar a cabo la actividad X a llevar acabo la actividad Y. Como parte del cambio de estado, normalmente hará una o más acciones: producirá una salida, desplegará una señal en la terminal del usuario, llevará a cabo un cálculo, etc. Construcción del diagrama de transición de estados. Así como en los DFD se utilizó la partición también es recomendable usarla en los DTE en donde los sistemas son muy complejos. Para la construcción de DTE se puede seguir cualquiera de dos enfoques: 1. Se puede comenzar por identificar todos los posibles estados del sistema y representar cada uno como una caja separada en una hoja de papel. Luego, se pueden explorar todas las conexiones con significado (es decir, los cambios de estado) entre las cajas. 2. Como alternativa, se puede comenzar por el estado inicial, y luego metódicamente ir siguiendo un camino hasta el o los estados restantes; luego de los estados secundarios, proseguir a los terciarios; etc. Cuando se termina de construir el DTE preliminar, deben seguirse las siguientes reglas para verificar la consistencia: • • •

¿Se han definido todos los estados?. ¿Se pueden alcanzar todos los estados?. ¿Se han definido estados que no tengan caminos que lleven a ellos? ¿Se puede salir de todos los estados?

11


¿El sistema responde adecuadamente a todas las condiciones posibles?

El DTE representa una especificación de proceso para una burbuja de control en DFD. Como herramienta de modelado de alto nivel, el DTE puede servir incluso como especificación de proceso para todo el sistema. Si se representa todo el sistema como un diagrama de una burbuja, puede usarse el DTE para mostrar la secuencia de actividades en el sistema.

12


2.3 INTERRUPCIONES DE HARDWARE ¿Que es una interrupción? Una interrupción es una instrucción que detiene la ejecución de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este último proceso se devuelve el control a la aplicación anterior. Por ejemplo, cuando estamos trabajando con un procesador de palabras y en ese momento llega un aviso de uno de los puertos de comunicaciones, se detiene temporalmente la aplicación que estábamos utilizando para permitir el uso del procesador al manejo de la información que está legando en ese momento. Una vez terminada la transferencia de información se reanudan las funciones normales del procesador de palabras. Las interrupciones ocurren muy seguido, sencillamente la interrupción que actualiza la hora del día ocurre aproximadamente 18 veces por segundo. Para lograr administrar todas estas interrupciones, la computadora cuenta con un espacio de memoria, llamado memoria baja, donde se almacenan las direcciones de cierta localidad de memoria donde se encuentran un juego de instrucciones que la UCP ejecutará para después regresar a la aplicación en proceso. La sentencia para usar una interrupción en ensamblador es INT número.

TIPOS DE INTERRUPCION

13


Las interrupciones de hardware Las interrupciones hardware son producidas por varias fuentes, por ejemplo del teclado, cada vez que se presiona una tecla y se suelta se genera una interrupción. Otras interrupciones son originadas por el reloj, la impresora, el puerto serie, el disco, etcétera. Una interrupción de tipo hardware es una señal eléctrica producida por un dispositivo físico del ordenador. Esta señal informa a la CPU que el dispositivo requiere su atención. La CPU parará el proceso que está ejecutando para atender la interrupción. Cuando la interrupción

termina, la CPU reanuda la ejecución en donde fue interrumpida, pudiendo ejecutar el proceso parado originalmente o bien otro proceso. Existe un hardware específico, para que los dispositivos puedan interrumpir lo que está haciendo la CPU. La propia CPU, tiene entradas específicas para ser interrumpida INT, cuando se activa esta entrada INT, la CPU para lo que está haciendo y activa la salida para reconocer la interrupción INTA, y comienza a ejecutar el código especial que maneja la interrupción. Algunas CPU´s disponen de un conjunto especial de registros, que solo son utilizados en el modo de ejecución de interrupciones, lo que facilita el trabajo de tratar las interrupciones. La placa base del computador utiliza un controlador para decodificar las interrupciones que no son más que señales eléctricas producidas por los dispositivos, coloca en el bus de datos información de que dispositivo interrumpió y activa la entrada INT de interrupción de la CPU. Este chip controlador protege a la CPU y la aísla de los dispositivos que interrumpen, además de proporcionar flexibilidad al diseño del sistema. El controlador de interrupciones tiene un registro de estado para permitir o inhibir las interrupciones en el sistema. Los IRQ o interrupt request (Pedido de Interrupción), son las notificaciones de las interrupciones enviadas desde los dispositivos hardware a la CPU, en respuesta a la IRQ, la CPU salta a una dirección – una rutina de servicio de interrupción (ISR), comúnmente llamada Interrupt handler (Manejador de interrupciones) - Que se encuentra como una función dentro del software manejador de ese dispositivo formando parte del núcleo. Así, una función manejadora de interrupciones es una función del núcleo que ejecuta el servicio de esa interrupción. Los IRQ se encuentran numerados, y cada dispositivo hardware se encuentra asociado a un número IRQ. En la arquitectura IBM PC y compatibles, por ejemplo, IRQ 0 se encuentra asociado al reloj o temporizador, el cual genera 100 interrupciones por segundo, disquete el 6, los discos IDE la 14 y 15. Se puede compartir un IRQ entre varios dispositivos.

14


Localizaci贸n De Los Vectores De Interrupci贸n

15


Interrupciones hardware en linux. Una de las principales tareas del sistema de manejo de interrupciones es llevar las diferentes interrupciones a los códigos de manejo de esas interrupciones. Cuando se activa el contacto 6 del controlador de interrupciones, se debe conocer cuál es la interrupción asociada a ese contacto, por ejemplo el controlador del dispositivo disquete, por lo tanto el sistema de manejo de interrupciones debe encaminar a la rutina que trata esta interrupción, para ello Linux proporciona un conjunto de estructuras de datos y tablas, y un conjunto de funciones que las inicializan y las manejan. El sistema de interrupciones es muy dependiente de la arquitectura, Linux en la medida de lo posible, tratará de que sea independiente de la máquina en la que reside el sistema, para ello el sistema de interrupciones se va a implementar mediante una serie de estructuras de datos y funciones en lenguaje C que facilitarán la portabilidad. Veamos una presentación de las estructuras de datos implicadas, resaltando las más importantes y describiendo los campos de cada una. Posterior a eso se seguirá con la inicialización de estas estructuras que soportan las interrupciones, esta parte es fuertemente dependiente de la arquitectura, nos basaremos en i386. Finalmente se expondrá el flujo dentro del núcleo que sigue una interrupción hardware, desde que se origina en el dispositivo hardware hasta que se atiende por el manejador de la interrupción.

Estructuras de datos para soportar el sistema de interrupciones hardware irqaction almacena la dirección de la función de manejo de interrupciones. irq_chip contiene las funciones que manejan un controlador de interrupciones particular, es dependiente de la arquitectura. irq_desc vector con una entrada para cada una de las interrupciones que pueden ser atendidas.

Procesado de interrupciones Una vez que las estructuras de datos mencionadas en la sección anterior (la tabla de interrupciones (IDT) y demás estructuras de datos que conforman el sistema de interrupciones de Linux) están debidamente inicializadas y todos los manejadores de dispositivos cargados en el sistema e inicializados, el sistema está en disposición de atender cualquier tipo de interrupción que se genere por los dispositivos que usen este mecanismo para comunicarse con la CPU. De esta forma, la IDT estará rellena con el desplazamiento que nos lleva a la función common_interrupt pasándole como parámetro el número de la interrupción que se activó.

16


Ejemplo: Modulo De Interrupci贸n Del Teclado

17


Procedimientos De Inicialización Para que los dispositivos puedan utilizar el sistema de interrupciones, el sistema al arrancar debe inicializar mediante unos procedimientos, que se encuentran en /arch/x86/kernel/irqinit.c, las estructuras de datos relacionas con las interrupciones.

init_IRQ().

Esta función es llamada por el programa de inicio del sistema init start_kernel (), n init/main.c. Esta función pone a punto la tabla de descriptores de interrupciones (IDT). Se encuentra definida en el fichero arch/i386/kernel/i8259.c Primeramente inicializa el vector de interrupciones hardware irq_desc[0..15]. Seguidamente inicializa la tabla IDT, llamando a la función set_intr_gate().

set_intr_gate

Por medio de la función set_intr_gate se rellena la tabla de descriptores de interrupciones (IDT). Básicamente esta es la parte en la que se realiza el "cableado" de las interrupciones dentro del sistema, a partir de este momento, cualquier interrupción será atendida. Se encuentra en el fichero arch/x86/include/asm/desc.h.

request_irq

Una vez que el sistema de interrupciones está inicializado, cuando se vayan cargando los diferentes manejadores de dispositivos éstos harán uso de las funciónes request_irq y setup_x86_irq para colocar la dirección de la función manejadora de interrupción propia y activar la interrupción. request_irq es llamado por los manejadores, en su inicio, para colocar la dirección de la función manejadora de interrupción. Definida en kernel/irq/manage.c. Crea un nuevo nodo en la lista irqaction y llena sus campos con los valores Suministrados para una IRQ.

Las traps o interrupciones de software son interrupciones invocadas por el usuario desde un programa. En este caso, la CPU pasa a ejecutar el manejador de trap asociado (su rutina de atención a la interrupción o ISR2). Una interrupción se genera cuando se quiere que la CPU deje de ejecutar el proceso en curso y ejecute una función específica de quien produce la interrupción. Cuando se ejecuta esta función específica decimos que la CPU está atendiendo la interrupción.

18


2.4 INTERRUPCIONES DE SOFTWARE Podemos realizar una clasificación de las interrupciones, atendiendo a la fuente que las produce. Interrupción software, se produce cuando un usuario solicita una llamada del sistema. Una Interrupción software se produce cuando un usuario solicita un recurso del núcleo, mediante una llamada al sistema, open, write, read, mount, etc. Los pasos que se producen son los siguientes: 1.- El proceso usuario solicita la función correspondiente de la librería libc, que ha sido añadida en la compilación del proceso. df = open (fichero, modo); 2.- La función de librería coloca los parámetros de la llamada en los registros del Procesador y ejecuta la instrucción INT 0x80. 3.-Se conmuta de modo usuario a modo núcleo mediante las estructuras conocidas como las tablas IDT (Tabla Descriptora de Interrupciones) y GDT (Tabla Global de Descriptores). 4.- Entra a ejecutarse una función del núcleo, system_call, Interfase entre el usuario y el núcleo. 5.- Cuando se termina la llamada, system_call retorna al proceso que la llamo y se retorna a modo usuario. Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT. El uso de las interrupciones nos ayuda en la creación de programas, utilizándolas nuestros programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño debido en gran parte a su menor tamaño. Este tipo de interrupciones podemos separarlas en dos categorías: las interrupciones del sistema operativo Dos y las interrupciones del Bios. La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la desventaja que, como son parte del hardware son muy específicas y pueden variar dependiendo incluso de la marca del fabricante del circuito. La elección del tipo de interrupción a

19


utilizar dependerá únicamente de las características que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS). TABLA DE TIPOS, FUENTES Y VECTORES DE INTERRUPCION

20


INTERRUPCIÓN 21H Propósito: Llamar a diversas funciones del DOS. Sintaxis: Int 21H Nota: Cuando trabajamos en TASM es necesario especificar que el valor que estamos utilizando es hexadecimal. Esta interrupción tiene varias funciones, para acceder a cada una de ellas es necesario que el registro AH se encuentre el número de función que se requiera al momento de llamar a la interrupción. IDT (Tabla Descriptora de Interrupciones) Tabla que guarda los descriptores de interrupciones, cada vez que se produce una Interrupción se salta a una entrada de esta tabla. Contiene 256 entradas, y cada entrada tiene información para llegar a una función manejadora de la interrupción. Contienen el campo denominado Selector, que tiene la dirección de una entrada de la tabla GDT; el campo Desplazamiento, que contiene el desplazamiento que hay que sumar a la base del núcleo para llegar a la función que queremos que se ejecute cuando se interrumpe; por último contiene una serie de campos denominados Atributos, que fijan si el desplazamiento viene en bytes o en palabras, bits de protección, etc.). Existe un registro IDTR dentro del microprocesador que contiene la dirección base y la longitud de esta tabla, para encontrarla con rapidez. Existe una tabla para todo el sistema. Para rellenar esta tabla se precisan instrucciones en ensamblador privilegiadas, un usuario normal no puede modificar sus entradas. GDT (Tabla Global de Descriptores) Esta tabla es única para el sistema y contiene información de los descriptores de Segmentos del sistema, los microprocesadores de Intel obligan a trabajar con segmentos de memoria (base, longitud). Una de las entradas contiene la base y la longitud del segmento que contiene el núcleo del sistema operativo en memoria principal. Cada entrada también tiene otros campos que denominamos Atributos, que definen atributos del segmento, como permisos de acceso a ese segmento. Dentro de la CPU existe un registro específico GDTR para almacenar la dirección base y longitud de esta tabla y facilitar su acceso. Otras entradas de esta tabla describen las tablas LDT y el segmento TSS.

21


LDT (Tabla Local de Descriptores) Existe una tabla por cada proceso que hay en el sistema, si bien solo una esta activa, la del proceso que se está ejecutando en la CPU. Contiene distintos descriptores de segmentos correspondientes al proceso, como el segmento de código, el segmento de datos, el segmento stack, etc. TSS Esta tabla tiene una imagen de todos los registros de la CPU relacionados con un proceso, (EAX, EBX, ECX,…), cada vez que se produce una interrupción, la CPU de forma automática, copia el estado de sus registros en este segmento. SYSTEM_CALL Estudiemos esta función en el núcleo versión 2.6.28.6, para la plataforma Intel de 32 bits. La encontramos en la ruta arch/x86/kernel/entry_32_S. Como todas las interrupciones tiene tres puntos principales que en este caso los realiza de la siguiente forma;

22


DIAGRAMA GENERAL DE LOS BLOQUES DE INTERRUPCION

23


2.5 CIRCUITOS DE TEMPORIZACIÓN E INTERRUPCIÓN Temporización del sistema. Reloj del sistema. El reloj de una computadora se utiliza para dos funciones: Principales: 1. Para sincronizar las diversas operaciones que realizan los diferentes subcomponentes del sistema informático. 2. Para saber la hora. El reloj físicamente es un circuito integrado que emite una cantidad de pulsos por segundo, de manera constante. Al número de pulsos que emite el reloj cada segundo se llama Frecuencia del Reloj. La frecuencia del reloj se mide en Ciclos por Segundo, también llamados Hertzios, siendo cada ciclo un pulso del reloj. Como la frecuencia del reloj es de varios millones de pulsos por segundo se expresa habitualmente en: Megaherzios. El reloj marca la velocidad de proceso de la computadora generando una señal periódica que es utilizada por todos los componentes del sistema informático para sincronizar y coordinar las actividades operativas, evitando el que un componente maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre dos componentes sea distinta. Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales en un segundo. Interrupciones: Las interrupciones son esencialmente llamadas a subrutina generadas por los dispositivos físicos, al contrario de las subrutinas normales de un programa en ejecución. Como el salto de subrutina no es parte del hilo o secuencia de ejecución programada, el controlador guarda el estado del procesador en la pila de memoria y entra a ejecutar un código especial llamado "manejador de interrupciones" que atiende al periférico específico que generó la interrupción. Al terminar la rutina, una instrucción especial le indica al procesador el fin de la atención de la interrupción. En ese momento el controlador restablece el estado anterior, y el programa que se estaba ejecutando antes de la interrupción sigue como si nada hubiese pasado. Las rutinas de atención de

24


interrupciones deben ser lo más breves posibles para que el rendimiento del sistema sea satisfactorio, porque normalmente cuando una interrupción es atendida, todas las demás interrupciones están en espera. Imagine que está esperando la visita de un amigo, al que llamaremos Juan. Usted y Juan han acordado que cuando él llegue a su casa esperará pacientemente a que le abra la puerta. Juan no debe tocar a la puerta porque alguien en la casa duerme y no quiere que le despierten. Ahora usted ha decidido leer un libro mientras espera a que Juan llegue a la casa, y para comprobar si ha llegado, cada cierto tiempo detiene la lectura, marca la página donde se quedó, se levanta y va hasta la puerta, abre y comprueba si Juan ha llegado, si éste todavía no está en la puerta, esperará unos minutos, cerrará la puerta y regresará a su lectura durante algún tiempo. Como verá este es un método poco eficiente para esperar a Juan porque requiere que deje la lectura cada cierto tiempo y vaya hasta la puerta a comprobar si él ha llegado, además debe esperar un rato si todavía no llega. Y por si fuera poco, imagine que Juan no llega nunca porque se le presentó un problema, tuvo que cancelar la cita y no pudo avisarle a tiempo, o peor, que Juan ha llegado a la puerta un instante después que usted la cerraba. Juan, respetando lo acordado, espera un tiempo, pero se cansa de esperar a que le abran y decide marcharse porque cree que ya usted no está en la casa o no puede atenderlo. A este método de atender la llegada de Juan lo llamaremos encuesta. Veamos ahora otro método. En esta ocasión simplemente se recuesta en el sofá de la sala y comienza a leer su libro, cuando Juan llegue debe tocar el timbre de la puerta y esperar unos momentos a que le atiendan. Cuando usted oye sonar el timbre, interrumpe la lectura, marca la página donde se quedó y va hasta la puerta para atender a la persona que toca el timbre. Una vez que Juan o la persona que ha tocado el timbre, se marcha, usted regresa a su asiento y retoma la lectura justo donde la dejó. Este último es un método más eficiente que el anterior porque le deja más tiempo para leer y elimina algunos inconvenientes como el de que Juan nunca llegue o se marche antes de que usted abra la puerta. Es, en principio, un método simple pero muy eficaz y eficiente, lo llamaremos atención por interrupción. El primero de ellos, la encuesta, es un método eficaz, pero poco eficiente porque requiere realizar lecturas constantes y muchas veces innecesarias del estado del proceso que queremos atender. Sin embargo, es muy utilizado en la programación de micros controladores porque resulta fácil de aprender, la implementación de código con este método es menos compleja y no requiere de hardware especial para llevarla adelante. Por otra parte, la encuesta, tiene muchas deficiencias que con frecuencia obligan al diseñador a moverse hacia otros horizontes.

25


En términos generales, un proceso de interrupción y su atención por parte del procesador, tiene la siguiente secuencia de acciones: 1. En el mundo real se produce el evento para el cual queremos que el procesador ejecute un programa especial, este proceso tiene la característica de que no puede esperar mucho tiempo antes de ser atendido o no sabemos en que momento debe ser atendido. 2. El circuito encargado de detectar la ocurrencia del evento se activa, y como consecuencia, activa la entrada de interrupción del procesador. 3. La unidad de control detecta que se ha producido una interrupción y “levanta” una bandera para registrar esta situación; de esta forma si las condiciones que provocaron el evento desaparecen y el circuito encargado de detectarlo desactiva la entrada de interrupción del procesador, ésta se producirá de cualquier modo, porque ha sido registrada. 4. La unidad de ejecución termina con la instrucción en curso y justo antes de comenzar a ejecutar la siguiente comprueba que se ha registrado una interrupción. 5. Se desencadena un proceso que permite guardar el estado actual del programa en ejecución y saltar a una dirección especial de memoria de programas, donde está la primera instrucción de la subrutina de atención a interrupción. 6. Se ejecuta el código de atención a interrupción, esta es la parte “consciente” de todo el proceso porque es donde se realizan las acciones propias de la atención a la interrupción y el programador juega su papel. 7. Cuando en la subrutina de atención a interrupción se ejecuta la instrucción de retorno, se desencadena el proceso de restauración del procesador al estado en que estaba antes de la atención a la interrupción. Como podemos observar, el mecanismo de interrupción es bastante complicado, sin embargo tiene dos ventajas que obligan a su implementación: la velocidad y su capacidad de ser asincrónico. Ambas de conjunto permiten que aprovechemos al máximo las capacidades de trabajo de nuestro procesador. Los mecanismos de interrupción no solo se utilizan para atender eventos ligados a procesos que requieren atención inmediata sino que se utilizan además para atender eventos de procesos asincrónicos. Las interrupciones son tan eficaces que permiten que el procesador actúe como si estuviese haciendo varias cosas a la vez cuando en realidad se dedica a la misma rutina de siempre, ejecutar instrucciones una detrás de la otra.

26


Ejemplos de circuitos de temporización. Concluimos que el tiempo de descarga del C es mayor cuando aumenta su valor en uF.

Ahora veamos la carga del C. Armamos el circuito de la figura 2.

Con la ayuda de un tester ó multímetro mida el voltaje DC en los pines del C y observe como aumentando lentamente su voltaje de carga. Ahora cambie la R por una de 1M y mida nuevamente. Concluimos que el tiempo de carga es mayor cuando aumenta el valor de R. Esto nos marca el principio de funcionamiento de los temporizadores a saber que el tiempo viene dado por el circuito RC asociado. Un circuito completo real de un temporizador lo observamos en la figura 3. El temporizador estará activo un período igual a: t = 1.1( R . C)

27


Si queremos que este circuito maneje cargas reales de 120VAC debemos utilizar la señal activa en alto del pin 3 (salida) y amplificarla mediante un transistor driver. Este activará un relé que servirá para manejar lo que queramos acorde a la capacidad de sus contactos. Un circuito real que maneja la válvula de agua de un sistema sanitario por un tiempo ajustado en el temporizador es el siguiente:

Observe que en esencia es el mismo circuito, solo se han agregado unos cuantos dispositivos para dar una aplicación real. Ajustes Al saber que el tiempo o período es igual a : t = 1.1( R . C)

28


deducimos que para ajustar el tiempo solo debemos variar uno de los dos valores; bien sea C ó R. El resultado será un mayor o menor tiempo dependiendo si es mayor o menor el valor de R ó C. Usualmente se varía R cambiándola por un potenciómetro ya que es más fácil. Ahora bien hay un circuito temporizador que se ajusta con suiches de selección el cual es el que mostramos a continuación con su tabla de tiempos.

Como puedes observar es el mismo principio de funcionamiento ya que en el pin 1 y 2 van los componentes R C; el suiche pulsador de inicio está en el pin 6 que viene haciendo las veces del suiche de la figura 1 y los suiches de selección de temporización propios del integrado se conectan al pin 12 y 13. De esta forma uno programa cuánto tiempo va a activar o temporizar el circuito. Modos Hasta aquí hemos visto como trabaja el temporizador activando una carga desde que le damos start ó inicio. Podemos decir que este es el modo activo en alto. Sin embargo puede presentarse una necesidad que haga todo lo contrario: es decir que se active en bajo y pase a alto solo después que haya pasado el temporizado. Este es el caso de los protectores de nevera que al recibir energía no la conectan enseguida sino solo después de que ha pasado el temporizado. Para ello solo tenemos que invertir la posición de los componentes R y C. La R que estaba arriba se coloca donde iba el C y el

29


C pasa al lugar de la R. Todo lo demás queda igual y solo resta colocarle el circuito de potencia que queramos. Aplicaciones: Los temporizadores están presentes en casi todos los circuitos electrónicos. Aparte de los ejemplos mostrados tenemos uno muy usual en la industria: Un sistema temporizado secuencial de procesos. El circuito esta mostrado abajo y sirve para controlar un proceso (por ejemplo una inyectora de plásticos) y al terminar el proceso reiniciarse automáticamente. Bueno espero que les haya sido útil este tutorial sobre los temporizadores. Si necesitan mis servicios para construir un temporizador en particular u otra clase de circuito.

CIRCUITOS DE INTERRUPCION: Este circuito integrado está especialmente diseñado para controlar las interrupciones en sistemas basados en el 8080/8085 y en el 8086. Puede controlar hasta 8 interrupciones vectorizadas. Además, a un 8259 se le pueden conectar en cascada un máximo de 8 chips 8259 adicionales, lo que permite gestionar sistemas con hasta 64 interrupciones, como veremos. El significado e interpretación de las señales se muestra a la derecha:

30


-CS: -WR: -RD:

Habilita la comunicación con la CPU. Permite al 8259 aceptar comandos de la CPU. Permite al 8259 dejar la información en el bus de datos. Bus de datos bidireccional, por el que se transmite la información de D7..D0: control/estado y el número de vector de interrupción. Líneas de cascada, actúan como salida en el 8259 maestro y como CAS0..CAS2: entrada en los 8259 esclavos, en un sistema con varios 8259 interconectados, constituyendo un bus local. Pin de doble función: en el buffered mode del 8259 actuará como -EN, -SP/-EN: para habilitar los buffers del bus; en el modo normal indicará si el 8259 es maestro o esclavo (-SP). Conectado a la patilla INT de la CPU para producir la interrupción cuando INT: llegue el momento. Líneas asíncronas de petición de interrupción. Una petición de interrupción se ejecuta manteniendo IR en alto hasta que se recibe el IR0..IR7: reconocimiento (modo por flancos) o simplemente poniendo en alto la línea IR (modo por niveles). Línea de reconocimiento de interrupción, por medio de esta línea se -INTA: fuerza al 8259 a depositar en el bus la información del vector de interrupción. INTA es independiente de -CS. En conjunción con -CS, -WR y -RD es empleada para enviar las palabras A0: de comando al 8259 y para solicitar información al mismo. Suele ir conectada a la línea A0 de la CPU. Descripción Funcional El diagrama funcional del 8259, con la estructura interna de las diversas partes que lo componen, es el siguiente:

31


Los principales registros internos del 8259 son el IRR (Interrupt Request Register) y el ISR (In Service Register). El IRR almacena todas las peticiones de interrupción pendientes; el ISR almacena todas las interrupciones que están siendo atendidas en un momento dado. La lógica de gestión de prioridad determina qué interrupción, de las solicitadas en el IRR, debe ser atendida primero: cuando lleguen las señales INTA dicha interrupción será la primera procesada y su bit correspondiente se activará en el ISR. El buffer del bus de datos conecta el 8259 con el bus de datos de la placa principal del ordenador: su diseño en 3 estados permite desconectarlo cuando sea necesario; a través de este bus circulan las palabras de control y la información de estado. La lógica de lectura y escritura acepta los comandos que envía la CPU: aquí hay registros para almacenar las palabras de inicialización y operación que envía el procesador; también sirve para transferir el estado del 8259 hacia el bus de datos. El buffer de cascada/comparador almacena y compara las identificaciones de todos los 8259 que posea el sistema: el 8259 maestro envía la identificación del 8259 esclavo en las líneas CAS, los 8259 esclavos la leen y el implicado en la operación coloca en el bus de datos la dirección (vector) de la rutina que atenderá la interrupción en los 2 próximos (o el próximo) ciclos INTA. Funcionamiento Del 8259 El funcionamiento del 8259 varía ligeramente en función del sistema en que esté instalado, según sea este un 8086 o un 8080/8085. Veremos primero el caso del 8086: Una o más líneas IR son activadas por los periféricos, lo que pone a 1 el correspondiente bit del IRR. El 8259 evalúa la prioridad de estas interrupciones y solicita la interrupción a la 2) CPU (línea INT) si es necesario. 3) Cuando la CPU reconoce la interrupción, envía la señal -INTA. Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a 4) la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR. En este ciclo, el 8259 aún no controla el bus de datos. Cuando la CPU envía un segundo ciclo -INTA, el 8259 deposita en el bus de datos 5) un valor de 8 bits que indica el número de vector de interrupción del 8086, para que la CPU lo pueda leer. En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el segundo pulso -INTA; en caso contrario, ese bit permanece activo hasta 6) que la CPU envíe el comando EOI al final de la rutina que trata la interrupción (caso más normal). 1)

En el caso de sistemas basados en el 8080/8085, el funcionamiento es idéntico hasta el punto (3), pero a continuación sucede lo siguiente:

32


Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra 4) en el IRR. En este ciclo, el 8259 deposita en el bus de datos el valor 11001101b, correspondiente al código de operación de la instrucción CALL del 8080/85. 5) Esta instrucción CALL provoca que la CPU envíe dos pulsos -INTA. El 8259 utiliza estos dos pulsos -INTA para depositar en el bus de datos, 6) sucesivamente, la parte baja y alta de la dirección de memoria del ordenador de la rutina de servicio de la interrupción (16 bits). Esto completa la instrucción CALL de 3 bytes. En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el tercer pulso -INTA; en caso 7) contrario, ese bit permanece activo hasta que la CPU envíe el comando EOI al final de la rutina que trata la interrupción. Si en el paso (4), con ambos tipos de microprocesador, no está presente la petición de interrupción (por ejemplo, porque ha sido excesivamente corta) el 8259 envía una interrupción de nivel 7 (si hubiera un 8259 conectado en IR7, las líneas CAS permanecerían inactivas y la dirección de la rutina de servicio de interrupción sería suministrada por el 8259 maestro). Ejemplo: cambio de la base de las interrupciones. La siguiente utilidad reprograma el 8259 maestro para desviar las INT 8-INT 15 a los nuevos vectores INT 50h-INT 57h (que invocan a los originales, para que el sistema siga funcionando con normalidad). Esta nueva ubicación no ha sido elegida por capricho, y es la misma que emplea WINDOWS 3.x. La razón es que el 386 trabaja normalmente en modo virtual-86 bajo MS-DOS 5.0; cuando se produce una interrupción se ejecuta una rutina en modo protegido. El EMM386 del MS-DOS 5.0 no está preparado para soportar las IRQ0-IRQ7 en otra localización que no sea la tradicional INT 8-INT 15 ó en su defecto INT 50h-INT 57h (por compatibilidad con WINDOWS). Con el QEMM386 o, simplemente, sin controlador de memoria expandida instalado, no habría problemas y se podría elegir otro lugar distinto. Por cierto: si se entra y se sale de WINDOWS, la nueva localización establecida, ya sea en 50h o en otro sitio, deja de estar vigente: esto significa que WINDOWS reprograma la interrupción base al volver al DOS. Personalmente he comprobado que aunque IRQDEMO fuera más elegante (empleando funciones de la especificación VCPI), nuestro querido WINDOWS no lo sería: ¡para qué molestarse!. Sin embargo, IRQDEMO sí se toma la molestia de comprobar si la máquina es un XT o un AT para enviar correctamente la ICW3 del 8259.

33


CONCLUSIÓN Como conclusión nos resulto muy incesante saber de La importancia de la sincronización radica en el mantenimiento de la confiabilidad e integridad de la información. Y conociendo lo protocolos de sincronización: Slow sync : En términos generales cuando se va ha sincronizar con este protocolo la pda transfiere todos los datos hacia el PC. y compara uno a uno los registro para ver cual ha sufrido cambios, se ha borrado o ha sido adicionado. Fast sync : Este protocolo de sincronización es mucho mas rápido que el anterior y se basa en que sólo pasan al servidor los datos que han tenido modificaciones, en otras palabras, los datos que no han sufrido cambios, borrados o adiciones no se sincronizan. Y dándonos la importancia de lo ciclos del bus del 8088 normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos ciclos el hardware de la PC, automáticamente inserta un pulso ocioso extra llamado TW. La señal READY se usa para insertar estados nuevos o adicionales de espera. Debido a que los diferentes ciclos del bus requieren distintos tiempos, la señal READY se debe controlar de manera diferente. Sin olvidar los procesos de atención a interrupciones tienen la ventaja de que se implementan por hardware ubicado en el procesador, así que es un método rápido de hacer que el procesador se dedique a ejecutar un programa especial para atender eventos que no pueden esperar por mecanismos lentos como el de encuesta. Esto es la colusión que llegamos todos integrantes del equipo 2, tomando la gran importancia de esta materia que nos llega a nuestra preparación como ingenieros.

34



BIBLIOGRAFĂ?A http://www.mailxmail.com/curso-tecnicas-desarrollo-computacion-movil-orientadopda/algoritmos-tecnicas-sincronizacion http://ipsec-sincronizaciondedatos.blogspot.com/2009/07/algoritmos-y-tecnicas-desincronizacion.html http://es.scribd.com/doc/12681415/Metodos-de-Direccionamiento http://www.scribd.com/doc/12687919/Interrupciones-y-TemporizaciOn http://html.rincondelvago.com/informatica-basica_8.html http://www.mitecnologico.com/Main/BusDeControl http://es.wikipedia.org/wiki/Bus_de_direcciones http://www.google.com.mx/search? hl=es&q=buse+local&meta=&aq=f&oq= http://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica) http://www.mitecnologico.com/Main/EstadosDeEspera


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.