Características de los Sistemas Operativos Sistema Operativo Multitareas. Multitareas.
Se llama multitarea al sistema operativo donde varios procesos pueden ser ejecutados al mismo tiempo compartiendo uno o más procesadores. En caso contrario, se habla de un sistema operativo monotarea . Tipos de multitarea: y
y
y
y
Nula: El sistema operativo es m onotarea. El ejemplo típico es MS-DOS. Aún asi puede lograrse a veces algo parecido a una multitarea implementandola en espacio de usuario, o usando trucos como los TSR de MS-DOS. Cooperativa: Los procesos de usuario son quienes ceden l a CPU al sistema operativo a intervalos regulares. Muy problemática, puesto que si el proceso de usuario se cuelga y no cede la CPU al sistema operativo, todo el sistema quedará entonces colgado. 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 seria Windows, hasta la version 3.11. Preemptiva: El sistema operativo es el encargado de administrar el/los procesador/es, repartiendo el tiempo de uso de este entre los procesos que estén esperando para utilizarlo. Cada proceso utiliza el procesador durante cortos periodos de tiempo, pero el resultado final es prácticamente igual que si estuviesen ejecutandose al mismo tiempo. Ejemplos de sistemas de este tipo serian Unix y clones (FreeBSD, Linux, etc.), VMS y derivados, AmigaOS, etc. Real: Solo se da en sistemas multiprocesador. Es aquella en la que varios procesos se ejecutan realmente al mismo tiempo, en distintos microproces microprocesadores. adores. Suele ser también preemptiva. Ejemplos de sistemas operativos con esa capacidad: Linux y OS X
Sistema Operativo Monousuario.
Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores. microcomputadores. El MS-DOS es un sistema operativo monousuario y monotarea, tiene estas limitaciones pero, ala vez, es muy robusto y permite realizar tareas que otros no lo harían. Aunque el MS-DOS necesite ejecutar un programa padre para correr otro programa hijo, sólo está ejecutando uno en cada momento (hijo), y si el programa padre deja de funcionar, el programa hijo se bloquea automáticamente. El MS-DOS original es capaz de gestionar 1MB y de trabajar directamente sólo con 640 KB, este es un gran problema para programas que precisen de más memoria. La solución adoptada consiste en reordenar la memoria en diferentes partes, y un gestionador de memoria adecuado para ello. En Windows 95 y 98 se basan en MS-DOS ³sufriendo´ esta limitación de memoria a partir de Windows Millenium (Windows NT, Windows 2000 y Windows XP) se abandona, definitivamente el MS-DOS ampliando la memoria a usar.
Sistema Operativo Multiusuario. Multiusuario.
Un Sistema Operativo multiusuario multiusuario permite a mas de un solo usuario accesar una computadora. Claro que, para llevarse esto a cabo, el Sistema Operativo también debe ser capaz de efectuar multitareas. Unix es el Si stema Operativo Multiusuario más utilizado. Debido a que Unix fue originalmente diseñado para correr en una minicomputadora, era multiusuario y multitarea desde su concepción. Actualmente se producen versiones de Unix para PC tales como The Santa Cruz Corporation Microport, Esix, IBM,y Sunsoft. Apple también produce una v ersión de Unix para la Machintosh llamada: A/UX.Unix
Unix proporciona tres maneras de permitir a múltiples personas utilizar la misma PC al mism o tiempo: y y y
Mediante Módems. Mediante conexión de terminales a través de puertos seriales Mediante Redes.
Sistemas Operativos por lotes.
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más t rabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un ti empo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. Algunas otras características con que cuentan los Sistemas Operativos por lotes son: y
y
y
y
y
Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interacción usuario/programa en ejecución. Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea. Conveniente para programas de l argos tiempos de ejecución (ej, análisis estadísticos, estadísticos, nóminas de personal, etc.).
y
Se encuentra en muchos computadores personales combinados con procesamiento serial.
y
Planificación del procesador sencilla, típicamente procesados en orden de llegada.
y
y
y
Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestión crítica de dispositivos en el tiempo. Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso.
Sistemas Operativos en Tiempo Real
Se caracterizan por presentar requisitos especiales en cinco áreas generales:
Determinismo
Sensibilidad
Control del usuario
Fiabiidad
Tolerancia a los fallos
Un sistema operativo es determinista si realiza las operaciones en instantes fijos y predeterminados o en intervalos de tiempos predeterminados. Cuando compiten varios procesos por los recursos y por el tiempo del procesador, depende, en primer lugar, de la velocidad con la que pueda responder a las interrupciones y en segundo lugar, de si el sistema posee suficiente capacidad para gestionar todas las peticiones peticiones en el tiempo requerido. Un sistema operativo para operar de forma determinista es el retardo máximo que se produce de la llegada de la i nterrupción de un dispositivo de alta prioridad hasta que comienza el servicio. La sensibilidad. El determinismo determinismo hace referencia a cuanto tiempo consume un sistema operativo en reconocer una interrupción. La sensibilidad se refiere a cuanto tiempo consume un sistema operativo en dar servicio a la interrupción después de reconocerla. Las características de la sensibilidad son, entre otras:
1-
La cantidad cantidad de tiempo necesario para iniciar iniciar la gestión gestión de la interrupción y comenzar la ejecución de su rutina de tratamiento (ISR, interrupt service service routine).
2-
La cantidad de tiempo necesario para ejecutar la ISR. Generalmente, depende de la plataforma del hardware.
3-
El efecto del tratamiento de interrupciones. El servicio se retrasara si una ISR puede ser interrumpida por la llegada de otra interrupción.
El determinismo y la sensibilidad forman conjuntamente el tiempo de respuesta a sucesos externos. Los requisitos en tiempo de respuesta son críticos ya que cada sistema debe cumplir los requisitos de tiempo impuesto por los individuos, dispositivos y flujos de datos externos al sistema. El control del usuario es generalmente mucho mayor en un sistema operativo en tiempo real que en un sistema operativo ordinario. En sistema operativo típico que no sea en tiempo real, el usuario no tiene control sobre la función de pl anificación anificación del sistema operativo. En un sistema en tiempo real resulta esencial permitir al usuario un control preciso sobre la prioridad de las tareas. El usuario debe poder distinguir entre tareas rígidas y flexibles y especificar prioridades relativas dentro de cada clase. Un sistema en tiempo real también permitirá al usuario especificar características. Que procesos deben estar siempre residente en la memoria principal. La fiabilidad es normalmente mucho mas importante en sistemas en tiempo real que en los que no lo son. Un f allo transitorio en un sistema que no sea en tiempo real puede resolverse simplemente volviendo a reiniciar el sistema. Un fallo de un procesador en un multiprocesador que no sea en tiempo real produce una reducción del nivel de servicio hasta que se repara o sustituye el procesador averiado. Pero un sistema en tiempo real responde y controla sucesos en tiempo real. Las perdidas o degradaciones del rendimiento pueden tener consecuencias catastróficas, que pueden ir desde perdida financieras hasta daños en equi po e incluso perdida de vidas humanas. La tolerancia a los fallos es una característica que hace referencia a la capacidad de un sistema de conservar la máxima capacidad y los máximos datos posibles en caso de fallos por Ej., un sistema UNIX clásico típico, cuando detecta datos corruptos en el núcleo, genera un mensaje de error en la consola del sistema, vuelca el contenido de la memoria en el disco para un análisis posterior y finaliza la ejecución del sistema. Un sistema en tiempo real intentara corregir el problema o minimizar sus efectos mientras c ontinua la ejecución. Un aspecto importante a la tolerancia a los fallos es la estabilidad . Un sistema en tiempo real si, en los casos en los que es imposible cumplir todos los plazos de ejecución de las tareas, el sistema cumple los plazos de las tareas mas criticas y de m ayor prioridad, incluso si no se cumple los de alguna tarea menos critica.
Para cumplir los requisitos anteriores los sistemas operativos actuales en tiempo real incluyen normalmente las siguientes características:
Cambios rápidos de procesos o hilos.
Pequeño tamaño (con una mínima funcionalidad asociada).
Capacidad de responder rápidamente a interrupciones externas.
Multitarea con herramientas de comunicación entre procesos, como semáforos, señales y sucesos.
Uso de archivos secuénciales especiales que puedan acumular datos a alta
Planificación preferente basadas en prioridades.
Reducción de intervalos en los que están inhabilitadas las interrupciones.
Primitivas Primitivas para demorar tareas durante un tiempo fijo y para detenerlas y
Alarmas especiales y temporizadores.
velocidad.
reanudarlas.
El corazón de un sistema en tiempo real es el planificador de tares a corto plazo. Lo que resulta importante es que todas las tareas rígidas de tiempo real acaben (o comiencen) en su plazo y que también acaben (o comiencen) en su plazo tantas t areas flexibles de tiempo real como sea posible. La mayoría de los sistemas operativos actuales en tiempo real son incapaces de trabajar directamente con plazos. En su lugar, se han diseñado para ser tan sensibles como sea posible a las tareas de tiempo real, de forma que, cuando se aproxima un plazo se pueda planificar rápidamente la traerá. Las aplicaciones de tiempo real normalmente necesitan tiempos de respuesta deterministas en un rango de varios milisegundo, las aplicaciones al límite, como los simuladores de aviones militares, por Ej. presentan a menudo restricciones en un rango de diez a cien microsegundos. Sistemas Operativos Distribuidos Distribuidos
Los sistemas operativos distribuidos desempeñan las mismas f unciones que un sistema operativo normal, pero con la diferencia de trabajar en un entorno distribuido. Su Misión principal principal consiste en facilitar el acceso y la gestión de los recursos distribuidos en la red. En un sistema operativo distribuido los usuarios pueden acceder a recursos remotos de l a misma manera en que lo hacen para los recursos locales. Permiten distribuir trabajos, tareas o procesos, procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, lo cual es transparente para el usuario. Los sistemas distribuidos deben de ser muy confiables y estables ya que si un componente del sistema se descompone otro componente debe de ser capaz de reemplazarlo inmediatamente y no afectar los procesos del sistema. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos l os siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Características básicas
Los sistemas operativos distribuidos están basados en las ideas básicas:
Transparencia Eficiencia Flexibilidad Escalabilidad Sincronización
Existen dos esquemas básicos: Los Fuertemente Acoplados y los débiles. Un sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Transparencia
El concepto de transparencia de un Sistema operativo distribuido va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red, debido a esto queda como labor del sistema operativo coordinar el mecanismo que logre la unificación de todos los sistemas y recursos totalmente transparente para el usuario o aplicación. El que el sistema disponga de varios procesadores debe lograr un m ayor rendimiento del sistema, pero el sistema operativo debe controlar que tanto los usuarios como los programadores vean el núcleo del sistema distribuido como un único procesador, Es decir que la programación y la ejecución de los programas y tareas sean exactamente iguales que l as de los sistemas operativos normales en aspectos visuales y de programación, pero mas rápidos y eficientes por la distribución de la tareas. Eficiencia
La idea base de los sistemas operativos distribuido es la de obtener sistemas mucho mas rápidos que los utilizados de procesador único, Y para lograr esto tenemos que olvidar la idea antigua de ejecutar los programas en estos procesadores y pensar en distribuir las tareas a los procesadores libres mas rápidos en cada momento. El concepto global de que un procesador haga todas las tareas y la desarrolle rápido depende de muchos factores concretos: Velocidad, Memoria y tipo de procesamiento, Pero para un sistema operativo distribuido esto es mucho mas fácil y eficiente, solo buscara un procesador mas rápido y mas libre para que desarrolle las tareas y hará un display de los resultados obtenidos. Flexibilidad
La Flexibilidad dentro de sistema operativo distribuido, describe su capacidad para soportar cambios, actualizaciones y mejoras que le permitan irse desarrollando al mismo ritmo de la evolución tecnológica. Dicha capacidad es una virtud y un conflicto. Una Virtud debido a las grandes necesidades de los sistemas operativos de mejorar después de las primeras versiones y un conflicto que surge entre los sistemas de con Núcleo Monolítico y los sistemas con Micro núcleo las cuales son dos arquitecturas distintas del núcleo del sistema operativo. Escalabilidad
Un sistema operativo distribuido debería funcionar tanto para una docena de computadoras como para mil en una sola red, el tipo de red utilizada no debe de ser un problema ni su topología (LAN o WAN) (TOKEN RING o ETHERNET) ETHERNET) y mucho m enos la distancia entre l os equipos. Sin embargo todo esto influye, Aunque estos puntos serian muy deseables, pude que la solución valida para unas cuantas computadoras no sean aplicables como para mil. Del mismo modo el tipo de red condiciona grandemente el rendimiento del sistema y puede que lo funcione para un tipo de red requiera modificaciones para otro. Los sistemas operativos distribuidos necesitan de grandes estándares para trabajar y sobre todo de ajustes a las necesidades principales de cada red y sus usuarios. Este concepto propone que cualquier computador debe funcionar perfectamente como un sistema operativo distribuido, pero de la misma forma debe de formar parte y trabajar como más equipos no importan la cantidad o los recursos que estos le puedan proporcionar. Sincronización
La sincronización es un punto clave para los sistemas operativos distribuidos. distribuidos. Para computadores únicos no es nada importante, pero en el caso de los recursos compartidos de la red, la sincronización es sumamente importante. Los sistemas operativos distribuidos tienen un reloj por cada ordenador del sistema, con lo que es fundamental una coordinación entre todos los relojes para mostrar una hora única. Los osciladores de cada ordenador son ligeramente diferentes, y como consecuencia todo los relojes sufren un desfase y deben ser sincronizados continuamente. La sincronización no es trivial, porque se realiza a través de mensajes por la red. Cuyo tiempo de envió pude ser variable y depender de m uchos factores como la distancia, la velocidad de transmisión y la propia estructura de la red.