miércoles, 26 de marzo de 2014

CLASIFICACION DE LOS SISTEMAS OPERATIVOS

MULTITAREA

La multitarea es la característica de los sistemas operativos modernos de permitir que varios procesos se ejecuten —al parecer— al mismo tiempo compartiendo uno o más procesadores.

Aquí son los procesos de usuario los que ceden la CPU al sistema operativo a intervalos regulares. Muy problemática, puesto que, si el proceso de usuario se interrumpe y no cede la CPU al sistema operativo, todo el sistema quedará trabado, es decir, sin poder hacer nada. Da lugar también a latencias muy irregulares y la imposibilidad de tener en cuenta este esquema en sistemas operativos de tiempo real. Un ejemplo sería Windows hasta la versión 95.

El sistema operativo es el encargado de administrar el/los procesador(es) repartiendo el tiempo de uso entre los procesos que estén esperando para utilizarlo. Cada proceso utiliza el procesador durante lapsos cortos, pero el resultado final es virtualmente igual a ejecutarse todo al mismo tiempo. Ejemplos de sistemas de este tipo serían Unix y sus derivados (FreeBSD, Linux), VMS y derivados, AmigaOS, Windows NT.

Solo se da en sistemas con multiprocesador; varios procesos se ejecutan realmente al mismo tiempo en distintos microprocesadores; suele ser también preferente. Ejemplos de sistemas operativos con esa capacidad: variantes de Unix, Windows NT, Mac OS X.

Los sistemas operativos multitarea son capaces de dar servicio a más de un proceso a la vez para permitir la ejecución de muchos más programas.
En esta categoría también se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios —llamados sistemas multiusuario— que compartan los mismos recursos. Este tipo de sistemas se emplea especialmente en redes. En resumen, se trata de fraccionamiento del tiempo («timesharing» en inglés).



MULTIUSUARIO

La palabra multiusuario se refiere a un concepto de sistemas operativos, pero en ocasiones también puede aplicarse a programas de computadora de otro tipo (e.j. aplicaciones de base de datos) e incluso a sistemas de cómputo. En general se le llama multiusuario a la característica de un sistema operativo o programa que permite proveer servicio y procesamiento a múltiples usuarios simultáneamente, estrictamente es pseudo-simultáneo (tanto en paralelismo real como simulado).
En contraposición a los sistemas monousuario, que proveen servicio y procesamiento a un sólo usuario, en la categoría de multiusuario se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten los mismos recursos. Actualmente este tipo de sistemas se emplean especialmente en redes, pero los primeros ejemplos de sistemas multiusuario fueron los centralizados, que los usuarios compartían a través del uso de múltiples dispositivos de interfaz humana (e.j. una unidad central y múltiples. sirve para empresas monitores y teclados).
Los recursos que se comparten son, normalmente, una combinación de:
De tal modo que múltiples usuarios utilizan una única computadora, comparten programas y usan un sistema operativo unificado, que les están dedicados por completo; teniendo la impresión de que lo hacen simultáneamente.

En los sistemas operativos antiguos, la idea de multiusuario guarda el significado original de que éste puede ser utilizado por varios usuarios al mismo tiempo, permitiendo la ejecución concurrente de programas por parte de distintos usuarios. Aunque la idea original de tiempo compartido o el uso de terminales bobas no es ya el más utilizado. Esto debido a que los computadores modernos pueden tener múltiples procesadores, o proveer sus interfaces de usuario a través de una red, o en casos especiales, ya ni siquiera existe un solo computador físico proveyendo los servicios, sino un conjunto de computadoras en red o conectadas por un bus de alta velocidad y actuando en concierto para formar un cluster.
El principio del concepto es facilitar compartir los recursos de procesamiento, almacenamiento y periféricos varios, reduciendo el tiempo ocioso en el (o los) procesador(es), e indirectamente implica reducción de los costos de energía y equipamiento para resolver las necesidades de cómputo de los usuarios. Ejemplos de sistemas operativos con característica de multiusuario son VMS y Unix, así como sus múltiples derivaciones (e.g. IRIX, Solaris, etc.) y los sistemas tipo Unix como Linux, FreeBSD y Mac OS X.
En la familia de los sistemas operativos Microsoft Windows, desde Windows 95 hasta la versión Windows 2000, proveen soporte para ambientes personalizados por usuario, pero no admiten la ejecución de múltiples sesiones de usuario mediante el entorno gráfico.
Las versiones de Windows 2000 server y Windows 2003 server ofrecen el servicio Terminal Server el cual permite la ejecución remota de diferentes sesiones de usuario.



MULTIPROCESADOR

Se denomina multiprocesador a un computador que cuenta con dos o más microprocesadores (CPUs).
Gracias a esto, el multiprocesador puede ejecutar simultáneamente varios hilos pertenecientes a un mismo proceso o bien a procesos diferentes.
Los ordenadores multiprocesador presentan problemas de diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente y, potencialmente, pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas:
  • La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la memoria.
  • La arquitectura SMP, donde todos los procesadores comparten toda la memoria.
Esta última debe lidiar con el problema de la coherencia de caché. Cada microprocesador cuenta con su propia memoria cache local. De manera que cuando un microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que trabaja con una copia obsoleta del dato almacenado.
Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseñado para ello. La mayoría de los sistemas operativos actuales poseen esta capacidad.



MULTITRAMO

Permite que diversas partes de un solo programa funcionen al mismo tiempo.



TIEMPO REAL

Un sistema operativo de tiempo real es un sistema operativo que ha sido desarrollado para aplicaciones de tiempo real. Como tal, se le exige corrección en sus respuestas bajo ciertas restricciones de tiempo. Si no las respeta, se dirá que el sistema ha fallado. Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible.

Usado típicamente para aplicaciones integradas, normalmente tiene las siguientes características:
  • No utiliza mucha memoria
  • Cualquier evento en el soporte físico puede hacer que se ejecute una tarea
  • Multi-arquitectura (código portado a cualquier tipo de CPU)
  • Muchos tienen tiempos de respuesta predecibles para eventos electrónicos
Se caracterizan por presentar requisitos especiales en cinco áreas generales:
  • Determinismo
  • Sensibilidad
  • Control del usuario
  • Fiabilidad
  • Tolerancia a los fallos
En la actualidad hay un debate sobre qué es tiempo real. Muchos sistemas operativos de tiempo real tienen un programador (en inglés conocido como scheduler), diseños de controladores que minimizan los periodos en los que las interrupciones están deshabilitadas, un tiempo finito conocido (casi siempre calculado para el peor de los casos, término que en inglés se conoce como worst case) de la duración de interrupción. Muchos incluyen también formas especiales de gestión de memoria que limitan la posibilidad de fragmentación de la memoria y aseguran un límite superior mínimo para los tiempos de asignación y retiro de la memoria asignada.
Un ejemplo temprano de sistema operativo en tiempo real a gran escala fue el denominado «programa de control» desarrollado por American Airlines e IBM para el sistema de reservas Sabre.

Este tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta. El algoritmo de programación especializado, y a veces una tasa de interrupción del reloj alta pueden interferir en la capacidad de procesamiento.
Aunque para propósito general un procesador moderno suele ser más rápido, para programación en tiempo real deben utilizarse procesadores lo más predecibles posible, sin paginación. Todos estos factores en un procesador añade una aleatoriedad que hace que sea difícil demostrar que el sistema es viable, es decir, que cumpla con los plazos de tiempo para la ejecución de las tareas y la atención de los servicios o interrupciones.
Un sistema operativo de tiempo real puede ser implementado en microcontroladores o procesadores digitales de señal "DSP's", así, se pueden desarrollar aplicaciones embebidas en diferentes áreas de la electrónica.

Hay dos diseños básicos:
  • Un sistema operativo guiado por eventos sólo cambia de tarea cuando un evento necesita el servicio.
  • Un diseño la compartición de tiempo cambia de tareas por interrupciones del reloj y por eventos.
El diseño de compartición de tiempo gasta más tiempo de la UCP en cambios de tarea innecesarios. Sin embargo, da una mejor ilusión de multitarea. Normalmente se utiliza un sistema de prioridades fijas.
Uno de los algoritmos que suelen usarse para la asignación de prioridades es el Rate-Monotonic Schedule. Si el conjunto de tareas que tenemos es viable con alguna asignación de prioridades fijas, también es viable con el Rate-Monotonic Schedule, donde la tarea más prioritaria es la de menor periodo. Esto no quiere decir que si no es viable con Rate-Monotonic Schedule no sea viable con asignaciones de prioridad variable. Puede darse el caso de encontrarnos con un sistema viable con prioridades variables y que no sea viable con prioridades fijas.

En los diseños típicos, una tarea tiene tres estados: ejecución, preparada y bloqueada. La mayoría de las tareas están bloqueadas casi todo el tiempo. Solamente se ejecuta una tarea por UCP. La lista de tareas preparadas suele ser corta, de dos o tres tareas como mucho.
El problema principal es diseñar el programador. Usualmente, la estructura de los datos de la lista de tareas preparadas en el programador está diseñada para que cada búsqueda, inserción y eliminación necesiten interrupciones de cierre solamente durante un período muy pequeño, cuando se buscan partes de la lista muy definidas.
Esto significa que otras tareas pueden operar en la lista asincrónicamente, mientras que se busca. Una buena programación típica es una lista conectada bidireccional de tareas preparadas, ordenadas por orden de prioridad. Hay que tener en cuenta que no es rápido de buscar sino determinista. La mayoría de las listas de tareas preparadas sólo tienen dos o tres entradas, por lo que una búsqueda secuencial es usualmente la más rápida, porque requiere muy poco tiempo de instalación.
El tiempo de respuesta crítico es el tiempo que necesita para poner en la cola una nueva tarea preparada y restaurar el estado de la tarea de más alta prioridad.
En un sistema operativo en tiempo real bien diseñado, preparar una nueva tarea necesita de 3 a 20 instrucciones por cada entrada en la cola y la restauración de la tarea preparada de máxima prioridad de 5 a 30 instrucciones. En un procesador 68000 20MHz, los tiempos de cambio de tarea son de 20 microsegundos con dos tareas preparadas.
Cientos de UCP MIP ARM pueden cambiar en unos pocos microsegundos.

Las diferentes tareas de un sistema no pueden utilizar los mismos datos o componentes físicos al mismo tiempo. Hay dos métodos para tratar este problema.
Uno de los métodos utiliza semáforos. En general, el semáforo binario puede estar cerrado o abierto. Cuando está cerrado hay una cola de tareas esperando la apertura del semáforo.
Los problemas con los diseños de semáforos son bien conocidos: inversión de prioridades y puntos muertos (deadlocks).
En la inversión de prioridades, una tarea de mucha prioridad espera porque otra tarea de baja prioridad tiene un semáforo. Si una tarea de prioridad intermedia impide la ejecución de la tarea de menor prioridad, la de más alta prioridad nunca llega a ejecutarse. Una solución típica sería otorgar a la tarea que tiene el semáforo la prioridad de la tarea más prioritaria de las que están esperando dicho semáforo. Esto se denomina algoritmo de herencia básica de prioridad.
En un punto muerto, dos tareas (T1,T2) pretenden adquirir dos semáforos (semA, semB) en orden inverso. En este caso si T1 adquiere semA y T2 adquiere semB cuando intenten adquirir el segundo semáforo no podrán hacerlo ya que lo tiene la otra tarea. De esta forma entran en un punto muerto del que ninguna de las dos tareas puede salir sin intervención externa. Esto se resuelve normalmente mediante un diseño por ej. obligando a adquirir los semáforos en un orden concreto.
La otra solución es que las tareas se manden mensajes entre ellas. Esto tiene los mismos problemas: La inversión de prioridades tiene lugar cuando una tarea está tratando un mensaje de baja prioridad, e ignora un mensaje de más alta prioridad en su correo. Los puntos muertos ocurren cuando dos tareas realizan envíos bloqueantes (se quedan en la función de envío esperando a que el receptor reciba el mensaje). Si T1 manda un mensaje de forma bloqueante a T2 y T2 manda un mensaje de igual forma a T1 ninguna de las dos tareas saldrá de la función de envío quedando ambas bloqueadas ya que no podrán llegar a la función de recepción. Puede resolverse reordenando envíos y recepciones o empleando envíos no bloqueantes o temporizados.
Aunque su comportamiento en tiempo real es algo más difícil de analizar que los sistemas de semáforos, los sistemas basados en mensajes normalmente son más sencillos de desarrollar que los sistemas de semáforo.

Las interrupciones son la forma más común de pasar información desde el mundo exterior al programa y son, por naturaleza, impredecibles. En un sistema de tiempo real estas interrupciones pueden informar diferentes eventos como la presencia de nueva información en un puerto de comunicaciones, de una nueva muestra de audio en un equipo de sonido o de un nuevo cuadro de imagen en una videograbadora digital.
Para que el programa cumpla con su cometido de ser tiempo real es necesario que el sistema atienda la interrupción y procese la información obtenida antes de que se presente la siguiente interrupción. Como el microprocesador normalmente solo puede atender una interrupción a la vez, es necesario que los controladores de tiempo real se ejecuten en el menor tiempo posible. Esto se logra no procesando la señal dentro de la interrupción, sino enviando un mensaje a una tarea o solucionando un semáforo que está siendo esperado por una tarea. El programador se encarga de activar la tarea y esta se encarga de adquirir la información y completar el procesamiento de la misma.
El tiempo que transcurre entre la generación de la interrupción y el momento en el cual esta es atendida se llama latencia de interrupción. El inverso de esta latencia es una frecuencia llamada frecuencia de saturación, si las señales que están siendo procesadas tienen una frecuencia mayor a la de saturación, el sistema será físicamente incapaz de procesarlas. En todo caso la mayor frecuencia que puede procesarse es mucho menor que la frecuencia de saturación y depende de las operaciones que deban realizarse sobre la información recibida.

Hay dos problemas con el reparto de la memoria en SOTR (sistemas operativos en tiempo real).
El primero, la velocidad del reparto es importante. Un esquema de reparto de memoria estándar recorre una lista conectada de longitud indeterminada para encontrar un bloque de memoria libre; sin embargo, esto no es aceptable ya que el reparto de la memoria debe ocurrir en un tiempo fijo en el SOTR.
En segundo lugar, la memoria puede fragmentarse cuando las regiones libres se pueden separar por regiones que están en uso. Esto puede provocar que se pare un programa, sin posibilidad de obtener memoria, aunque en teoría exista suficiente memoria. Una solución es tener una lista vinculada LIFO de bloques de memoria de tamaño fijo. Esto funciona asombrosamente bien en un sistema simple.
La paginación suele desactivarse en los sistemas en tiempo real, ya que es un factor bastante aleatorio e impredecible, que varía el tiempo de respuesta y no nos permite asegurar que se cumplirán los plazos, debido al trasiego de páginas de memoria con un dispositivo de almacenamiento (thrashing)

Para las comunicaciones se suelen usar conexiones o redes deterministas CAN bus o puertos serie, ya que las redes más usuales, como Ethernet son indeterministas y no pueden garantizarnos el tiempo de respuesta. El sistema CAN bus es utilizado para la interconexión de dispositivos electrónicos de control (ECU) en los vehículos.






 








jueves, 13 de marzo de 2014

AT Y ATX

AT

AT son las siglas de ("Advanced Technology") ó tecnología avanzada, que se refiere a un estándar de dispositivos introducidos al mercado a inicios de los años 80´s que reemplazo a una tecnología denominada XT ("eXtended Technology") ó tecnología extendida. 

     La fuente AT es un dispositivo que se acopla en el gabinete de la computadora y que se encarga básicamente de transformar la corriente alterna de la línea eléctrica del enchufe de pared en corriente directa; la cuál es utilizada por los elementos electrónicos y eléctricos de la computadora con un menor voltaje. Otras funciones son  las de suministrar la cantidad de corriente y voltaje que los dispositivos requieren así como protegerlos de problemas en el suministro eléctrico como subidas de voltaje. Se le puede llamar fuente de poder AT, fuente de alimentación AT, fuente analógica, fuente de encendido mecánico,  entre otros nombres.
La fuente AT actualmente está en desuso y fue sustituida por la tecnología de fuentes de alimentación ATX.

  • Para su encendido y apagado, cuenta con un interruptor mecánico.
  • Algunos modelos integraban un conector de tres terminales para alimentar adicionalmente al monitor CRT desde la misma fuente.
  • Este tipo de fuentes se integran desde equipos tan antiguos con microprocesador Intel® 8026 hasta equipos con microprocesador Intel® Pentium MMX.
  • Es una fuente ahorradora de electricidad, ya que no se queda en modo "Stand by" ó en estado de espera; esto porque al oprimir el interruptor se corta totalmente el suministro.
  • Es una fuente segura, ya que al oprimir el botón de encendido se interrumpe la electricidad dentro de los circuitos, evitando problemas de cortos al manipular su interior.
  • Aunque si el usuario manipula directamente el interruptor para realizar alguna modificación, corre el riesgo de choque eléctrico, ya que esa parte trabaja directamente con la electricidad de la red eléctrica doméstica.

Para alimentar los circuitos cuenta con básicamente 3 tipos de conectores:
  • Para unidades de 3.5" (disqueteras y unidades para discos ZIP).
  • Para unidades de 5.25" (unidades lectoras de CD, unidades para DVD)
  • Para alimentar la tarjeta principal.



ATX

ATX son las siglas de ("Advanced Technology eXtended") ó tecnología avanzada extendida, que es una segunda generación de fuentes de alimentación introducidas al mercado para computadoras con microprocesador Intel® Pentium MMX, y a partir de ese momento, se extiende su uso.

     La fuente ATX es un dispositivo que se acopla internamente en el gabinete de la computadora, el cuál se encarga básicamente de transformar la corriente alterna de la línea eléctrica comercial en corriente directa; así como reducir su voltaje. Esta corriente es utilizada por los elementos electrónicos y eléctricos de la computadora. Otras funciones son  las de suministrar la cantidad de corriente y voltaje que losdispositivos requieren así como protegerlos de problemas en el suministro eléctrico como subidas de voltaje. A la fuente ATX se le puede llamarfuente de poder ATX, fuente de alimentación ATX, fuente digital, fuente de encendido digital, fuentes de pulsador,  entre otros nombres.
ATX es el estándar actual de fuentes que sustituyeron a las fuentes de alimentación AT.

  • Es de encendido digital, es decir, tiene un pulsador en lugar de un interruptor mecánico como sus antecesoras.
  • Algunos modelos integran un interruptor mecánico trasero para evitar consumo innecesario de energía eléctrico, evitando el estado de reposo "Stand By" durante la cuál consumen cantidades mínimas de electricidad.
  • Este tipo de fuentes se integran desde los equipos con microprocesador Intel® Pentium MMX hasta los equipos con los mas modernos microprocesadores.
  • El apagado de este tipo de fuentes puede ser manipulado con software.
Para alimentar cuenta con básicamente 4 tipos de conectores:
  • Para unidades de 3.5" (disqueteras y unidades para discos ZIP).
  • Para unidades de 5.25" (unidades lectoras de CD, unidades para DVD).
  • Para alimentar la tarjeta principal.
  • Para alimentar unidades SATA/SATA 2 (discos duros SATA y unidades para DVD SATA).