miércoles, 29 de julio de 2009

ADMINISTRACION DE LA MEMORIA

La organización y administración de la “memoria principal ”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los S. O.
Los términos “memoria” y “almacenamiento” se consideran equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
* Poderlos ejecuta
r
* Referenciarlos directamente.
Se considera “almacenamiento secundario” o “almacenamiento auxiliar” al generalmente soportado en discos.
Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria tan rápido como las memorias:

* “Ley de Parkinson parafraseada”: Los programas se desarrollan para ocupar toda la memoria disponible para ellos."

La parte del S. O. que administra la memoria se llama “administradormemoria”:

* Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no.
* Asigna espacio en memoria a los procesos cuando estos la necesitan.
* Libera espacio de memoria asignada a procesos que han terminado

Organización y Administración del Almacenamiento.
Históricamente el almacenamiento principal se ha considerado como un recurso costoso, por lo cual su utilización debía optimizarse .
Por organización del almacenamiento se entiende la manera de considerar este almacenamiento:
¿ se coloca un solo programa de usuario o varios ?.
Si se encuentran varios programas de usuario:
¿ se concede a cada uno la misma cantidad de espacio o se divide el almacenamiento en porciones o “particiones” de diferente tamaño ?.
¿ se utilizará un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable ?.
¿ se requerirá que los trabajos de los usuarios sean diseñados para funcionar en una partición específica o se permitirá que se ejecuten en cualquiera donde quepan ?.
¿ se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria ?.

Administración del Almacenamiento.
Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán para optimizar el rendimiento.
Las “estrategias de administración” deben considerar:
¿ cuándo se consigue un nuevo programa para colocar en la memoria ?:
¿ cuando el sistema lo pide específicamente o se intenta anticiparse a las peticiones ?.
¿ dónde se colocará el programa que se ejecutará a continuación ?:
¿ se prioriza el tiempo de carga o la optimización en el uso del almacenamiento ?.
¿ con qué criterio se desplazarán programas ?.

Jerarquía de Almacenamiento.
Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser referenciados Los programas y datos que no son necesarios de inmediato pueden mantenerse en el almacenamiento secundario.
El almacenamiento principal es más costoso y menor que el secundario pero de acceso más rápido.
Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles .

Un nivel adicional es el “caché” o memoria de alta velocidad, que posee las siguientes características:
* Es más rápida y costosa que la memoria principal.
* Impone al sistema un nivel más de traspaso:
*Los programas son traspasados de la memoria principal al caché antes de su ejecución.
* Los programas en la memoria caché ejecutan mucho más rápido que en la memoria principal.
* Al utilizar memoria caché se espera que:
*La sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho menor que la mejora en el rendimiento obtenida por la posibilidad de una ejecución mucho más rápida en la caché.
Estrategias de Administración del Almacenamiento.
Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal
Se dividen en las siguientes categorías:
* Estrategias de búsqueda:
* Estrategias de búsqueda por demanda.
* Estrategias de búsqueda anticipada.
* Estrategias de colocación.
* Estrategias de reposición.
Las “estrategias de búsqueda” están relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia.
Se considera que la “búsqueda anticipada” puede producir un mejor rendimiento del sistema.
Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.
Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.
Asignación Contigua de Almacenamiento Versus No Contigua.
En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.
En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua.
Asignación Contigua de Almacenamiento de Un Solo Usuario.
Se consideran S. O. que ya poseen desarrollado el “sistema de control de entrada / salida”: IOCS: input / output control system

El tamaño de los programas está limitado por la cantidad de memoria principal, pero se puede superar este límite con técnicas de “recubrimientos”, con las siguientes características:

* Si una sección particular del programa ya no es necesaria, se carga otra sección desde el almacenamiento secundario ocupando las áreas de memoria liberadas por la sección que ya no se necesita.
* La administración manual por programa del recubrimiento es complicada y dificulta el desarrollo y el mantenimiento.

Multiprogramación de Partición Variable.

Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben superar el espacio disponible de memoria.

No hay límites fijos de memoria, es decir que la partición de un trabajo es su propio tamaño.
Se consideran “esquemas de asignación contigua”, dado que un programa debe ocupar posiciones adyacentes de almacenamiento.
Los procesos que terminan dejan disponibles espacios de memoria principal llamados “agujeros”:
* Pueden ser usados por otros trabajos que cuando finalizan dejan otros “agujeros” menores.
* En sucesivos pasos los “agujeros” son cada vez más numerosos pero más pequeños, por lo que se genera un desperdicio de memoria principal. Combinación de agujeros (áreas libres).
Consiste en fusionar agujeros adyacentes para formar uno sencillo más grande.
Se puede hacer cuando un trabajo termina y el almacenamiento que libera tiene límites con otros agujeros.

Compresión o Compactación de Almacenamiento.

Puede ocurrir que los agujeros (áreas libres) separados distribuidos por todo el almacenamiento principal constituyan una cantidad importante de memoria:

* Podría ser suficiente (el total global disponible) para alojar a procesos encolados en espera de memoria.
* Podría no ser suficiente ningún área libre individual.

La técnica de compresión de memoria implica pasar todas las áreas ocupadas del almacenamiento a uno de los extremos de la memoria principal:

* Deja un solo agujero grande de memoria libre contigua.
* Esta técnica se denomina “recogida de residuos”
Estrategias de Colocación del Almacenamiento.
Se utilizan para determinar el lugar de la memoria donde serán colocados los programas y datos que van llegando y se las clasifica de la siguiente manera:
* “Estrategia de mejor ajuste”:
*Un trabajo nuevo es colocado en el agujero en el cual quepa de forma más ajustada:
* Debe dejarse el menor espacio sin usar.
* “Estrategia de primer ajuste”:
* Un trabajo nuevo es colocado en el primer agujero disponible con tamaño suficiente para alojarlo.
* “Estrategia de peor ajuste”:
* Consiste en colocar un programa en el agujero en el que quepa de la peor manera, es decir en el más grande posible:
* El agujero restante es también grande para poder alojar a un nuevo programa relativamente grande.
Organización del Almacenamiento Virtual.
“Almacenamiento virtual ” significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación.
Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
Los métodos más comunes de implementación son mediante:
* Técnicas de “paginación”.
* Técnicas de “segmentación”.
* Una combinación de ambas técnicas.
Las direcciones generadas por los programas en su ejecución no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse dentro de un número mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.
La evolución en las organizaciones de almacenamiento puede resumirse como sigue:
Real:
* Sistemas dedicados a un solo usuario.
* Sistemas de multiprogramación en memoria real:
* Multiprogramación en partición fija:
* Absoluta.
* Relocalizable (reubicable).
* Multiprogramación en partición variable.
Virtual:
* Multiprogramación en almacenamiento virtual:
* Paginación pura.
* Segmentación pura.
* Combinación paginación / segmentación.

Los mecanismos de “traducción dinámica de direcciones” (dat) convierten las direcciones virtuales en reales al ejecutarse el proceso.
Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso no tienen por qué ser contiguas dentro del almacenamiento real, a esto se denomina “contigüidad artificial.

Compartimiento de Recursos en un Sistema de Paginación.
En sistemas multiprogramados, especialmente en los de tiempo compartido, es común que más de un usuario estén ejecutando los mismos programas.
Para optimizar el uso de la memoria real se comparten las páginas que pueden ser compartidas:
* El compartimiento debe ser cuidadosamente controlado para evitar que un proceso modifique datos que otro proceso esta leyendo.
*Los programas se encuentran divididos en áreas separadas de “procedimiento” y “datos”.
*Los procedimientos no modificables se llaman “procedimientos puros reentrantes”.
*Los datos y procedimientos modificables no pueden ser compartidos.
*Los datos no modificables (ej.: tablas fijas) son compartibles.
* Se debe identificar cada página como compartible o no.
* Habrá marcos (celdas) de páginas compartidos por varios procesos.
El compartimiento:
* Reduce la cantidad de almacenamiento primario necesario para la ejecución eficaz de un grupo de procesos.
* Puede hacer posible que un sistema determinado mantenga una cantidad mayor de usuarios (procesos).
Segmentación.

En los sistemas de “segmentación” un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real.

Los bloques:
* No necesitan ser de igual tamaño.
* Los bloques separados no necesitan ser adyacentes.
* Deben estar compuestos de posiciones contiguas de almacenamiento.

Se complica la protección de bloques de memoria de un proceso de usuario.
Es más difícil limitar el rango de acceso de cualquier programa.
Un esquema posible de protección es el uso de claves de protección del almacenamiento.
* Las claves están bajo el control estricto del S. O.
* Un programa de usuario, a quien corresponde una cierta clave en la cpu, solo puede hacer referencia a los otros bloques del almacenamiento con igual clave de protección.

Un proceso solo puede ejecutarse si su segmento actual (como mínimo) está en el almacenamiento primario.
Los segmentos se transfieren del almacenamiento secundario al primario como unidades completas.
Un nuevo segmento puede ser colocado en una serie disponible de posiciones contiguas del almacenamiento primario de tamaño suficiente para alojar al segmento.
La traducción dinámica de direcciones utiliza una “tabla de mapa de segmentos”.

jueves, 2 de julio de 2009

PROCESOS CONCURRENTES

LOS CLÁSICOS PROBLEMAS DE LA SINCRONIZACIÓN DE PROCESOS.

El del fumador de cigarros: Considere un sistema con tres procesos fumadores y un proceso agente. Cada fumador está continuamente enrollando y fumando cigarrillos. Sin embargo, para enrollar y fumar un cigarrillo, el fumador necesita tres ingredientes: tabaco, papel, y fósforos. Uno de los procesos fumadores tiene papel, otro tiene el tabaco y el tercero los fósforos. El agente tiene una cantidad infinita de los tres materiales. El agente coloca dos de los ingredientes sobre la mesa. El fumador que tiene el ingrediente restante enrolla un cigarrillo y se lo fuma, avisando al agente cuando termina. Entonces, el agente coloca dos de los tres ingredientes y se repite el ciclo.

La panadería de Lamport: En este problema una panadería tiene una variedad de panes y pasteles vendidos por n vendedores. Cada uno de los cuales toma un número al entrar. El cliente espera hasta oír su número. Cuando el vendedor se desocupa, llama al siguiente numero.


Los filósofos que cenan (sabios): Hay cinco filósofos chinos que se pasan sus vidas pensando y comiendo. Comparten una mesa circular, alrededor de la cual se sientan. En su centro se encuentra con una provisión infinita de arroz, y sobre ella hay cinco palitos, uno de cada lado de los filósofos. Cuando un filósofo piensa, no interactúa con sus colegas. De vez en cuando, un filósofo tiene hambre y trata de levantar los dos palitos más cercanos a él. Un filósofo puede levantar un palito a la vez, y no puede tomar un palito que ya está en la mano de un vecino. Cuando un filósofo tiene ambos palitos, puede comer. Cuando termino de hacerlo, deja sus dos palitos y comienza a pensar de nuevo.


El barbero dormilón: Una peluquería tiene un barbero, una silla de peluquero y n sillas para que se sienten los clientes en espera, si es que los hay. Si no hay clientes presentes, el barbero se sienta en su silla de peluquero y se duerme. Cuando llega un cliente, este debe despertar al barbero dormilón. Si llegan más clientes mientras el barbero corta el cabello de un cliente, estos deben esperar sentados (si hay sillas desocupadas) o salirse de la peluquería (si todas las sillas están ocupadas). El problema consiste en programar al barbero y los clientes sin entrar en condición de competencia.


Lectores y escritores: Imaginemos una enorme base de datos, como por ejemplo un sistema de reservaciones de en una línea aérea, con muchos procesos en competencia, que intentan leer y escribir en ella. Se puede aceptar que varios procesos lean la base de datos al mismo tiempo, pero si uno de los procesos está escribiendo, (es decir modificando) la base de datos, ninguno de los demás procesos deberá tener acceso a esta, ni siquiera los lectores. El problema es como programar a los lectores y escritores.


Productor/Consumidor: También conocido como bounded buffer problem o problema del buffer limitado. Dos procesos comparten un almacén (buffer) de tamaño fijo. Uno de ellos, el productor, coloca información en el almacén (buffer) mientras que el otro, el consumidor, la obtiene de él. Si el productor desea colocar un nuevo elemento, y el almacén se encuentra lleno, este deberá irse a \dormir". El consumidor despertara al productor cuando elimine un elemento del almacén. De forma análoga, si el almacén esta vació y el consumidor desea eliminar un elemento del almacén, este debe \dormirse" hasta que el productor coloque algo en el almacén.


EXCLUSIÓN MUTUA.

Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusión) se usan en programación concurrente para evitar que fragmentos de código conocidos como secciones críticas accedan al mismo tiempo a recursos que no deben ser compartidos.
a mayor parte de estos recursos son las señales, contadores, colas y otros datos que se emplean en la comunicación entre el código que se ejecuta cuando se da servicio a una interrupción y el código que se ejecuta el resto del tiempo. Se trata de un problema de vital importancia porque, si no se toman las precauciones debidas, una interrupción puede ocurrir entre dos instrucciones cualesquiera del código normal y esto puede provocar graves fallos.
La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar las interrupciones durante el conjunto de instrucciones más pequeño que impedirá la corrupción de la estructura compartida (la sección crítica). Esto impide que el código de la interrupción se ejecute en mitad de la sección crítica.
En un sistema multiprocesador de memoria compartida, se usa la operación indivisible test-and-set sobre una bandera, para esperar hasta que el otro procesador la despeje. La operación test-and-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. Así, cuando el código deja la sección crítica, se despeja la bandera. Esto se conoce como spin lock o espera activa.
La mayoría de los métodos de exclusión mutua clásicos intentan reducir la latencia y espera activa mediante las colas y cambios de contexto. Algunos investigadores afirman que las pruebas indican que estos algoritmos especiales pierden más tiempo del que ahorran.
A pesar de todo lo dicho, muchas técnicas de exclusión mutua tienen efectos colaterales. Por ejemplo, los semáforos permiten interbloqueos (deadlocks) en los que un proceso obtiene un semáforo, otro proceso obtiene el semáforo y ambos se quedan a la espera de que el otro proceso libere el semáforo. Otros efectos comunes incluyen la inanición, en el cual un proceso esencial no se ejecuta durante el tiempo deseado, y la inversión de prioridades, en el que una tarea de prioridad elevada espera por otra tarea de menor prioridad, así como la latencia alta en la que la respuesta a las interrupciones no es inmediata.


SECCIÓN CRÍTICA.

En programación concurrente, se define como a la porción de código de un programa de computador el cual accede a un recurso compartido (estructura de datos ó dispositivo) que no debe de ser accedido por mas de un hilo en ejecución (thread). La sección crítica por lo general termina en un tiempo determinado y el hilo, proceso ó tarea solo tendrá que esperar un período determinado de tiempo para entrar. Se necesita de un mecanismo de sincronización en la entrada y salida de la sección crítica para asegurar la utilización exclusiva del recurso, por ejemplo un semáforo.
El acceso concurrente se controla teniendo cuidado de las variables que se modifican dentro y fuera de la sección crítica. La sección crítica se utiliza por lo general cuando un programa multihilo actualiza múltiples variables sin un hilo de ejecución separado que lleve los cambios conflictivos a esos datos. Una situación similar, la sección crítica puede ser utilizada para asegurarse de que un recurso compartido, por ejemplo, una impresora, puede ser accedida por un solo proceso a la vez.
La manera en como se implementan las secciones puede variar dependiendo de los diversos sistemas operativos.
Sólo un proceso puede estar en una sección crítica a la vez.



Modelo de sección crítica.

El modelo de sección crítica que vamos a utilizar sigue el siguiente protocolo genérico:
Entrar_SC(esta_SC) /* Solicitud de ejecutar esta_SC */
/* código de esta_SC */
Dejar_SC(esta_SC) /* Otro proceso puede ejecutar esta_SC */
Es decir, cuando un proceso quiere entrar a la sección crítica:
(1) ejecuta Entrar_SC(), y si la sección crítica está ocupada el proceso espera;
(2) ejecuta la sección crítica;
(3) ejecuta Dejar_SC(), permitiendo que entre uno de los procesos en espera.
La decisión de qué proceso es el seleccionado para entrar en el paso (3) puede tener consecuencias importantes, como se comentará más adelante. En general, puede asumirse disciplina FIFO.
Un aspecto fundamental es cómo se realiza la espera en Entrar_SC(), lo que determina el tipo de mecanismo de sincronización que se debe utilizar. Esto dependerá del tiempo que el proceso deba esperar para entrar a la sección crítica. La Figura C muestra un ejemplo de utilización de una sección crítica para implementar sincronización productor-consumidor. Hay que advertir que este ejemplo sólo es válido para un productor y un consumidor. Con n productores y m consumidores se producirían condiciones de carrera. Se propone como ejercicio la modificación de este código para el caso general.

jueves, 11 de junio de 2009

SISTEMAS OPERATIVOS

Es el programa que se encarga de interactuar entre la máquina y el usuario. Para evaluar un sistema operativo se deben tener en cuenta determinados parámetros como el servicio que da al usuario, la estructura y la forma de ofrecer sus servicios.
Según la Administración de tareas:
Monotarea: Sola puede ejecutar un programa.
Multitarea: Si puede ejecutar varios programas al mismo tiempo.
Según la Administración de usuarios:
Monousuario: Permite ejecutar los programas de un usuario al mismo tiempo.
Multiusuario: Permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos del ordenador.
Según el Manejo de recursos:
Centralizado: Permite utilizar los recursos de un solo ordenador.
En red: Tiene la capacidad de interactuar con sistemas operativos de otros ordenadores.. Distribuido: Permite utilizar los recursos de más de un ordenador al mismo tiempo.
Según el Número de Procesadores:
Uniproceso: Permite utilizar solo un procesador del ordenador.
Multiproceso: Permite utilizar más de un procesador al mismo tiempo y distribuir la carga de trabajo entre ellos. Estos sistemas pueden trabajar simétrica o asimétricamente.
Según la Organización interna de su núcleo (Kernel):
Kernel monolítico (Linux, BSD, skyOS, Windows, Syllable).. Microkernel o Cliente-Servidor (BeOS, Mach, Mac OS X, newOS).. Nanokernel (AdeOS, Eros, KeyKOS, Brix-OS).. VOiD (unununium, TUNES, Vapour).. Sasos (Opal, Mungi, BriX).. Máquina Virtual o VM (Merlin, Argante).. Exokernel (MIT exokernel).. Cache kernel (Universidad de Stanford).. Kernel

Jerárquico o multicapa (Multics, Unix)
Un sistema operativo debe constar de, por lo menos, un conjunto de programas similar al siguiente:
Un compilador de algún lenguaje de programación. Un ensamblador. Un intérprete de comandos. (Shell). Una amplia biblioteca del lenguaje de la plataforma.Un núcleo (kernel)
Familias de Sistemas operativos para distintas plataformas Hardware:
AtheOS / Syllable / Cosmoe/SkyOS

Familia OSBOS. BeOS, Haiku, Zeta, BlueEyedOS, Cosmoe, BeFree, Sequel, Mockup/BeOS

Familia Amiga. AmigaOS, WarpOS (AmigaOS + subsistema PowerPC), MorphOS
Familia Macintosh. Mac OS, Mac OS X


Familia QNX. RTOS, Neutrino, RTP
Familia DOS. MS-DOS, DR-DOS (antiguo DOS Plus o CP/M) , PC-DOS, FreeDOS, Novell DOS, QDOS.

Familia Windows. Windows, Windows NT, Windows Ce, Windows Mobile, Windows Tablet

Familia IBM. OS/2, Warp, eComStation, OS/360, OS/370, OS/390, OS/400.
Familia UNIX. AIX, AMIX, GNU/Linux (Distribuciones), GNU/Hurd, HP-UX, Irix, Minix, System V, Solaris, UnixWare, LynxOS, Xenix, Digital UNIX, SCO Unix
Familia BSD. FreeBSD, DragonFlyBSD, NetBSD, VINO, OpenBSD, PicoBSD, Darwin, GNU/Darwin
Familia Mach. GNU/Hurd, BSD lites, Mac OS X, NEXTSTEP, YAMIT, MKlinux
Sistemas operativos académicos o experimentales (Betas). Chorus/Jaluna, Amoeba, MIT Exokernel, BriX. Plan9, VMS, Tron , Aos (Bluebottle)
Para Moviles. Symbian OS, Smartphone, PALMOS.
C O N C L U C I O N:
En mi opinión los sistemas operativos fueron creados para ayudar a los usuarios a facilitar sus tareas independientemente del tipo que sean. Sin embargo muchos usuarios solo hemos utilizado un solo tipo de sistema y no al 100%y lo que no sabemos es que existen otros tipos de sistemas operativos que pueden facilitar aun mas nuestras tareas.

jueves, 4 de junio de 2009

MANEJO DE INTERRUPCIONES.

Una interrupción es un evento que hace que el microcontrolador deje de ejecutar la tarea que está realizando para atender dicho acontecimiento y luego regrese y continúe la tarea que estaba realizando antes de que se presentara la interrupción. El pic 16F628 (y el 16F628A) tiene 10 fuentes de interrupción, si las interrupciones están habilitadas cada vez que una de estos acontecimientos se presente el pic dejará de ejecutar el programa para ir a atender la interrupción y al termino de la misma continuará ejecutando el programa donde lo había dejado.


Las fuentes de interrupción son:


o Interrupción externa RB0/INT
o Interrupción por cambio lógico en el puerto B (pines RB7 a RB4)
o Interrupción por desborde del timer 0 (TMR0)
o Interrupción por desborde del timer 1 (TMR1)
o Interrupción por comparación exitosa exitosa en TMR2
o Interrupción del comparador
o Interrupción del transmisor del USART
o Interrupción del receptor del USART
o Interrupción del módulo CCP
o Interrupción del EEPROM

Aunque el pic cuenta con 10 fuentes distintas de interrupción solamente tiene un vector de interrupción por lo que si se habilitan varias interrupciones al momento de presentarse cualquiera de ellas el programa saltara a la misma rutina de interrupción y es responsabilidad del programador crear una rutina que identifique la fuente de la interrupción.

Los registros asociados con las interrupciones son el registro de control de interrupción INTCON, el registro habilitación de interrupciones de periféricos PIE1 y el registro de interrupciones de periféricos PIR1. En el registro INTCON se encuentra el bit de habilitación global de interrupciones GIE, el bit de habilitación de interrupción por periféricos PEIE y los bits de habilitación de algunas interrupciones como la interrupción externa del pin RB0 (INTE), la interrupción por cambio de estado en los pines RB4 a RB7 (RBIE) y la interrupción por desborde del timer 0 (T0IE), así como las banderas correspondientes a cada interrupción (INTF, RBIF y T0IF). En el registro PIE1 se encuentran los bits de habilitación de las demás interrupciones y en el registro PIR1 se encuentran las banderas asociadas con cada interrupción.

Para habilitar las interrupciones se deben seguir los siguientes pasos:


o Habilitar el bit correspondiente a cada interrupción.
o Limpiar la bandera correspondiente a la interrupción habilitada para evitar falsas interrupciones.
o En caso de ser necesario habilitar el bit PEIE del registro INTCON (necesario para todas las interrupciones con excepción de INTE y RBIE).
o Habilitar el bit de habilitación global de interrupciones GIE del registro INTCON.

En el código también es necesario indicar hacia que rutina debe saltar el programa al presentarse la interrupción. Ya se dijo que el vector de interrupción está en la dirección 0×04 por lo que es necesario agregar las líneas org 0×04 y goto ISR al programa, donde ISR es la rutina de servicio de interrupción y puede, desde luego, tener cualquier otro nombre.

La ventaja de utilizar interrupciones es que mientras se espera a que se presente el evento que produce la interrupción el microcontrolador puede estar ejecutando cualquier otra tarea. De ese modo el micro no esta ciclado en una sola tarea sino que puede seguir trabajando en otras hasta que una interrupción haga que el programa salte y ejecute la tarea que se quiera y al terminarla el programa continuara su ejecución en el punto en el que se encontraba en el momento de presentarse la interrupción.

CICLO DE RELOJ.

También denominado cielos por segundo o frecuencia, este término hace referencia a la velocidad del procesador incorporado en la CPU del ordenador, y se mide en megaherzios (MHz). A mayor índice de frecuencia, más rápido es el procesador y, en consecuencia, el ordenador. Hace unos años era frecuente encontrar procesadores a 16 MHz, pero hoy en día lo normal es que éstos superen los 120 MHz.
La frecuencia de reloj indica la velocidad a la que un ordenador realiza sus operaciones más básicas, como sumar dos números o transferir el valor de un registro a otro. Se mide en ciclos por segundo (hercios).
Los diferentes circuitos integrados de un ordenador pueden funcionar a diferentes frecuencias de reloj, por lo que cuando se usa el término frecuencia de reloj aplicado a un ordenador, suele sobreentenderse que se refiere a la velocidad de funcionamiento del procesador principal.
En el contexto de la electrónica digital, más concretamente en la secuencial, es la frecuencia de la señal de reloj que, enviada a todos los dispositivos, sincroniza la operación de los mismos.

martes, 2 de junio de 2009

DISPOSITIVOS DE ENTRADA Y SALIDA

DISPOSITIVOS:
Los dispositivos son regímenes definibles, con sus variaciones y transformaciones. Presentan líneas de fuerza que atraviesan umbrales en función de los cuales son estéticos, científicos, políticos, etc. Cuando la fuerza en un dispositivo en lugar de entrar en relación lineal con otra fuerza, se vuelve sobre sí misma y se afecta, no se trata de saber ni de poder, sino de un proceso de individuación relativo a grupos o personas que se sustrae a las relaciones de fuerzas establecidas como saberes constituidos.

  • DISPOSITIVOS DE ENTRADA:
    Son aquellos que sirven para introducir datos a la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Los dispositivos de entrada convierten la información en señales eléctricas que se almacenan en la memoria central.
    Los dispositivos de entrada típicos son los teclados, otros son: lápices ópticos, palancas de mando (joystick), CD-ROM, discos compactos (CD), etc. Hoy en día es muy frecuente que el usuario utilice un dispositivo de entrada llamado ratón que mueve un puntero electrónico sobre una pantalla que facilita la interacción usuario-máquina.
  • DISPOSITIVOS DE SALIDA:
    Son los que permiten representar los resultados (salida) del proceso de datos. El dispositivo de salida típico es la pantalla o monitor. Otros dispositivos de salida son: impresoras (imprimen resultados en papel), trazadores gráficos (plotters), bocinas, entre otros...

  • TIPOS DE DISPOSITIVOS:
ENTRADA:
Mouse:
La función principal del ratón es transmitir los movimientos de nuestra mano sobre una superficie plana hacia el ordenador. Allí, el software denominado driver se encarga realmente de transformarlo a un movimiento del puntero por la pantalla dependiendo de varios parámetros.
Teclado:
Es el dispositivo más común de entrada de datos. Se lo utiliza para introducir comandos, textos y números. Estrictamente hablando, es un dispositivo de entrada y de salida, ya que los LEDs también pueden ser controlados por la máquina.
SALIDA:
Monitor o Pantalla:
Es el dispositivo en el que se muestran las imágenes generadas por el adaptador de vídeo del ordenador o computadora. El término monitor se refiere normalmente a la pantalla de vídeo y su carcasa. El monitor se conecta al adaptador de vídeo mediante un cable. Evidentemente, es la pantalla en la que se ve la información suministrada por el ordenador. En el caso más habitual se trata de un aparato basado en un tubo de rayos catódicos (CRT) como el de los televisores, mientras que en los portátiles es una pantalla plana de cristal líquido (LCD).
Impresoras:
Como indica su nombre, la impresora es el periférico que el ordenador utiliza para presentar información impresa en papel. Las primeras impresoras nacieron muchos años antes que el PC e incluso antes que los monitores, siendo durante años el método más usual para presentar los resultados de los cálculos en aquellos primitivos ordenadores, todo un avance respecto a las tarjetas y cintas perforadas que se usaban hasta entonces.
Aunque en nada se parecen las modernas impresoras a sus antepasadas de aquellos tiempos, no hay duda de que igual que hubo impresoras antes que PCs, las habrá después de éstos, aunque se basen en tecnologías que aún no han sido siquiera inventadas. Resulta muy improbable que los seres humanos abandonemos totalmente el papel por una fría pantalla de ordenador.
  • TIPOS DE IMPRESORAS.
Impresoras de impacto (matriciales)
Fueron las primeras que surgieron en el mercado. Se las denomina "de impacto" porque imprimen mediante el impacto de unas pequeñas piezas (la matriz de impresión) sobre una cinta impregnada en tinta, la cual suele ser fuente de muchos problemas si su calidad no es la que sería deseable.
Según cómo sea el cabezal de impresión, se dividen en dos grupos principales: de margarita y de agujas. Las de margarita incorporan una bola metálica en la que están en relieve las diversas letras y símbolos a imprimir; la bola pivota sobre un soporte móvil y golpea a la cinta de tinta, con lo que se imprime la letra correspondiente. El método es absolutamente el mismo que se usa en muchas máquinas de escribir eléctricas, lo único que las diferencia es la carencia de teclado.
Las impresoras de margarita y otros métodos que usan tipos fijos de letra están en completo desuso debido a que sólo son capaces de escribir texto; además, para cambiar de tipo o tamaño de letra deberíamos cambiar la matriz de impresión (la bola) cada vez. Por otra parte, la calidad del texto y la velocidad son muy altas, además de que permiten obtener copias múltiples en papel de autocopia o papel carbón.
Las impresoras de agujas, muchas veces denominadas simplemente matriciales, tienen una matriz de pequeñas agujas que impactan en el papel formando la imagen deseada; cuantas más agujas posea el cabezal de impresión mayor será la resolución, que suele estar entre 150 y 300 ppp, siendo casi imposible superar esta última cifra.
Aunque la resolución no sea muy alta es posible obtener gráficos de cierta calidad, si bien en blanco y negro, no en color. El uso de color implica la utilización de varias cintas más anchas, además de ser casi imposible conseguir una gama realista de colores, más allá de los más básicos.



Impresoras de tinta:
Por supuesto, las impresoras matriciales utilizan tinta, pero cuando nos referimos a impresora de tinta nos solemos referir a aquéllas en las que la tinta se encuentra en forma más o menos líquida, no impregnando una cinta como en las matriciales.
La tinta suele ser impulsada hacia el papel por unos mecanismos que se denominan inyectores, mediante la aplicación de una carga eléctrica que hace saltar una minúscula gota de tinta por cada inyector, sin necesidad de impacto. De todas formas, los entresijos últimos de este proceso varían de una a otra marca de impresoras (por ejemplo, Canon emplea en exclusiva lo que denomina "inyección por burbuja") y no son realmente significativos a la hora de adquirir una u otra impresora.
Estas impresoras se destacan por la sencilla utilización del color. La resolución de estas impresoras es en teoría bastante elevada, hasta de 1.440 ppp, pero en realidad la colocación de los puntos de tinta sobre el papel resulta bastante deficiente, por lo que no es raro encontrar que el resultado de una impresora láser de 300 ppp sea mucho mejor que el de una de tinta del doble de resolución. Por otra parte, suelen existir papeles especiales, mucho más caros que los clásicos folios de papelería, para alcanzar resultados óptimos a la máxima resolución o una gama de colores más viva y realista.
El principal destinatario de este tipo de impresoras es el usuario doméstico, además del oficinista que no necesita trabajar con papel continuo ni con copias múltiples pero sí ocasionalmente con color (logotipos, gráficos, pequeñas imágenes...) con una calidad aceptable. Fabricantes existen decenas, desde los clásicos contendientes Epson y Hewlett-Packard (hp) hasta otros de mucho menor volumen de ventas pero que no desmerecen nada, como son Canon, Tektronik, Lexmark, Oki...
Una nota sobre los cartuchos de tinta: son relativamente caros, debido a que generalmente no sólo contienen la tinta, sino parte o la totalidad del cabezal de impresión; este sistema asegura que el cabezal siempre está en buen estado, pero encarece el precio. Existen decenas de sistemas de recarga de cartuchos para rellenar el cartucho aprovechando el cabezal, pero en el 99% de los casos son un engorro y se pone todo perdido de tinta.


Impresoras láser.
Son las de mayor calidad del mercado, si entendemos por calidad la resolución sobre papel normal que se puede obtener, unos 600 ppp reales. En ellas la impresión se consigue mediante un láser que va dibujando la imagen electrostáticamente en un elemento llamado tambor que va girando hasta impregnarse de un polvo muy fino llamado tóner (como el de fotocopiadoras) que se le adhiere debido a la carga eléctrica. Por último, el tambor sigue girando y se encuentra con la hoja, en la cual imprime el tóner que formará la imagen definitiva.






MANEJO DE LA MEMORIA

El manejo de la memoria se refiere al espacio temporal que ocupa un proceso determinado ya que es donde se reciben las instrucciones y se guardan los resultados para mostrarlos al usuario. Cuando se elimina el proceso queda el espacio libre para realizar cualquier otra actividad.