Sunteți pe pagina 1din 21

MPC0809: Sistemas operativosy alternativasRTOS

RubnMarreroGmez

ndice
1. Introduccin 2. Perspectiva histrica 3. Denicin de sistema operativo y conceptos 3.1. Conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2. Hilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3. Ncleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4. Caractersticas Multi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.5. Capa de abstraccin de hardware (HAL) . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.6. Interfaz de programacin de aplicaciones (API) . . . . . . . . . . . . . . . . . . . . . . 3.1.7. Planicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.8. Planicacin de tiempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Tipos de sistemas operativos 5. Symbian OS 6. Mobilinux 7. VxWorks 2 2 3 4 4 6 6 8 9 9 9 11 12 14 16 18

ndice de guras
1. 2. 3. 4. 5. 6. 7. 8. Modelo de cinco estados. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ncleo monoltico. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Microncleo. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exoncleo. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logo Symbian OS. www.symbian.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logo mobilinux. www.mvista.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caractersticas mobilinux. www.mvista.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logo Wind River Systems. www.windriver.com . . . . . . . . . . . . . . . . . . . . . . . . . . 5 7 7 8 14 16 16 18

1.

Introduccin

En este trabajo se va realizar un pequeo repaso sobre el campo de los sistemas operativos, explicando siempre de forma somera, algunos conceptos y fundamentos para entender el paradigma actual de sistema operativo, intentando atender a las distintas formas en que la literatura trata algunos de estos conceptos. Se darn por sabidos conocimientos bsicos sobre la arquitectura de un computador: procesador, registros, buses, I/O, etc. Finalmente se exponen algunos ejemplos de sistemas operativos que cumplen requisitos de tiempo real y estn diseados para sistemas empotrados, con la intencin de ver caractersticas reales de algunos sistemas actuales que estn en boga.

2.

Perspectiva histrica

Para entender la necesidad de equipar a los sistemas actuales con un sistema operativo, as como tambin el porqu de algunas caractersticas, se hace necesario ver la evolucin de los sistemas operativos en el tiempo. Los primeros sistemas de computacin, desde nales de los aos cuarenta hasta mediados de los aos cincuenta, eran mquinas de gran tamao sin ningn tipo de soporte lgico, en el que el programador interactuaba directamente con el hardware sin ninguna interfaz de por medio. As, los trabajos que realizaban estas computadoras se ordenaban en serie, existiendo en cada momento un solo operador enfrentndose al hardware. sta es la razn por la que este modo de operacin se denomina procesamiento serie. Este sistema planteaba varios problemas, de entre los cuales cabe destacar la planicacin y el tiempo de conguracin. La planicacin de trabajo se realizaba de manera esttica, siendo el programador quien reservaba bloques de tiempo, usualmente mltiplos de media hora, que podan dejar la mquina ociosa si se terminaba antes de tiempo o al programador sin terminar su trabajo si la reserva de tiempo fuera insuciente, ya que el tiempo de conguracin era largo e indeterminado. En este tiempo de conguracin el programador deba especicar al hardware cul era su propsito, necesitando cargar en memoria el compilador y el programa en el lenguaje de alto nivel, para luego cargar y enlazar el programa objeto. Cada uno de estos pasos poda suponer montar y desmontar cintas, en los que de existir algn error reiniciaban el proceso, pues se haca necesario volver a comenzar desde el principio. Estos primeros sistemas eran muy caros y se requera maximizar su utilizacin. Para ello se desarroll el concepto de sistema operativo en lotes que consistan en el uso de un software al que llamaron monitor. El monitor tena la responsabilidad de controlar la ejecucin de cada uno de los trabajos que se le asignaban al sistema, de modo que se evitaban los tiempos muertos entre trabajos. Adems, el monitor era capaz de ejecutar sentencias de preparacin para el programa a ejecutar, de modo que la conguracin se haca mucho menos tediosa y menos vulnerable a errores. Son estos los considerados primeros sistemas operativos, destacando el GM-NAA I/O, diseado por General Motors y North American Aviation para un IBM 704 en el ao 1956, basado en otro monitor del ao 1955 diseado slo por General Motors para un IBM 701. Gracias al denominado monitor, los trabajos se realizan de forma continua, aumentando por tanto el rendimiento, pero el procesador contina estando ocioso durante largos intervalos, esperando por los lentos dispositivos de entrada y salida. Para aprovechar esos espacios de tiempo se disearon los sistemas en lotes multiprogramados que permiten cambiar el contexto del procesador hacia otros trabajos aunque no hayan terminado los anteriores. Este es el enfoque de los sistemas operativos modernos, para el desarrollo de los cuales se hizo necesario la gestin de interrupciones y el aumento del espacio de memoria con el propsito de que pudieran coexistir ms de un trabajo a la vez en el sistema. La evolucin natural de las computadoras llev a que se requiriera una interaccin con el usuario, lo que priorizaba entre otros aspectos que el tiempo de respuesta fuera mnimo. De la misma forma llegaron los sistemas operativos de tiempo compartido en el que varios usuarios hacen uso del mismo sistema. ste deba ser multiprogramado para poder satisfacer la necesidad de todos los usuarios que utilizaran distintos programas. Uno de los primeros sistemas operativos de tiempo compartido desarrollados fue el sistema Compatible Time-Sharing System, CTSS, desarrollado en el MIT para el IBM 709 en 1961. No fue hasta la aparicin del microprocesador y de las computadoras asequibles para el consumo de masas que la facilidad de uso de los sistemas se hiciera imperante. Con ello, llegaron en los aos setenta los primeros 2

ordenadores personales y nuevas interfaces de usuario, los sistemas WIMP (Window-Icon-Menu-Pointing device), que en la actualidad se suelen llamar GUI (Graphical User Interface), desarrollados por Xerox para su ordenador personal Xerox Alto y que fueron popularizados ya en los aos ochenta por los ordenadores Macintosh de Apple. Este hecho ayud a que se entendiera el mercado de los ordenadores personales como un negocio potencial, por lo que aparecieron innumerables sistemas para uso domstico como el Commodore64, el Amstrad CPC y el ZX Spectrum que incluan un intrprete de BASIC en ROM con el que el usuario poda realizar operaciones de chero como borrado, copiado y dems. [3]

3.

Denicin de sistema operativo y conceptos

Llegados a este punto se hace necesario denir algunos conceptos para poder abordar el estudio de algunos sistemas operativos en mayor profundidad, as como consensuar una denicin para sistema operativo que no est clara en la literatura. La denicin de sistema operativo ms usual hace siempre referencia a una infraestructura software necesaria en los sistemas actuales para gestionar de forma eciente los recursos de la mquina. Sin embargo, una denicin ms completa es la que hace William Stallings[1]: Un sistema operativo es un programa que controla la ejecucin de aplicaciones y programas que acta como interfaz entre las aplicaciones y el hardware del computador. Se puede considerar que un sistema operativo tiene los siguientes tres objetivos: Facilidad de uso, eciencia y capacidad para evolucionar. De esta manera podemos entender el sistema operativo como una interfaz usuario/computadora que facilita el uso del sistema, como un gestor de recursos que aumenta la eciencia de la computadora, as como un ente capaz de evolucionar para adaptarse a las actualizaciones del hardware, capaz de incluir nuevos servicios para el usuario y resolver fallos que lleva implcito por ser una pieza software de gran complejidad. Es un hecho contrastado la necesidad de abstraer al usuario del hardware en mayor o menor medida, tanto si se trata de un usuario domstico como de un desarrollador de aplicaciones, en cuyo caso la abstraccin no es total. Esta abstraccin nos la proporciona el sistema operativo a travs de un conjunto de aplicaciones y utilidades para servicios como: Desarrollo de programas, donde el sistema operativo nos brinda herramientas que aunque no estn integradas en el ncleo del sistema operativo, se ofrecen para dicho sistema. Ejecucin de programas, en el que el usuario no se preocupa de cmo el hardware carga la aplicacin en memoria y se prepara en general para hacerla correr. Acceso a dispositivos de E/S, pues para quien est frente al sistema le es completamente transparente cmo se gestionan el disco duro, el teclado, el ratn, etc. as como tampoco conoce cmo controla los cheros o la proteccin de recursos y datos.

Deteccin de errores y la posible respuesta para eliminar la condicin de error. Contabilidad para monitorizar parmetros y generar estadsticas que permitan mejorar el rendimiento futuro de la computadora. Como gestor de recursos el sistema operativo procura aumentar la eciencia del sistema aplicando polticas de uso en funcin del entorno para el cual fue diseado el sistema. No debemos olvidar que el sistema operativo tambin es un programa como otro cualquiera, que se ejecuta sobre el hardware, con la particularidad de que es el que controla cmo se ejecutan el resto de programas. Entre los recursos que debe diligenciar se encuentran: CPU, pues cede y tramita el tiempo a otros procesos, quedando el sistema operativo dependiente de que la CPU retorne.

Memoria, ya que asigna el espacio de sta para que se carguen los procesos a ejecutar, as como evita que existan accesos ilegales conociendo qu partes de la memoria estn siendo utilizadas y por quin. En la memoria reside tambin el ncleo del sistema operativo as como otras utilidades del mismo que hayan o vayan a ser ejecutadas. Almacenamiento secundario, donde se dispone la estructura de datos sobre la que se asienta el sistema de cheros del sistema. El sistema operativo se encarga de gestionar, asignar y proteger su espacio para los datos estticos o para procesos que no pudieron mantenerse residentes en la memoria principal. E/S en general, con lo que se incluye la gestin de interrupciones para indicar a la mquina cmo responder y qu decisiones tomar en cada caso particular. Aqu se incluyen interfaces de red que nos permiten comunicar nuestra computadora con otros sistemas, creando y supervisando conexiones entre aplicaciones que se ejecuten en otras mquinas (o localmente, en cuyo caso la conexin se denomina virtual).

3.1.

Conceptos

Se han tratado varias nociones sin ahondar en lo que ellas signican. Con el propsito de dejar claras estas ideas para lo sucesivo, se introduce este apartado en el que se tratarn fundamentalmente aquellos conceptos que servirn para, de igual manera, exponer las caractersticas que pueden denir a los distintos sistemas operativos. 3.1.1. Proceso

Igual que sucede con la denicin de sistema operativo, aclarar lo que llamamos proceso es muy disperso. Entre las posibles deniciones estn: Un programa en ejecucin. Una instancia de un programa ejecutndose en un computador. La entidad que se puede asignar o ejecutar en un procesador. Una unidad de actividad caracterizada por un solo hilo secuencial de ejecucin, un estado actual y un conjunto de recursos del sistema asociados. Sin embargo, desde el punto de vista del sistema operativo, debe considerarse al proceso como un conjunto de piezas, que le dan vida e identican. Los dos elementos esenciales son el cdigo de programa, que puede compartirse con otros procesos que ejecuten el mismo programa, y un conjunto de datos asociados a dicho cdigo: Identicador. Estado. Prioridad. Contador de programa. Punteros a memoria. Datos de contexto. Informacin de estado de E/S. Informacin de auditora. 4

Estos elementos pueden encontrarse en las distintas lecturas, que versan sobre el tema que tratamos, reunidos en tres grupos: el contexto de ejecucin, la memoria que ha reservado con su contenido y otra informacin que posibilite al sistema operativo realizar una planicacin. As en el contexto de ejecucin se pueden agrupar el estado del proceso, que puede ser ejecutando, parado, ...; el contador de programa que indica la direccin de la siguiente instruccin a ejecutar; los punteros a memoria que posibilitan acceder al contenido de la memoria reservada; los datos de contexto que son los valores que se encuentran en los registros del procesador cuando ste est ejecutando el proceso; y la informacin de estado de E/S que contiene las peticiones a dispositivos as como sus posibles asignaciones, la lista de cheros que puede estar manejando el proceso, etc. En cuanto a la informacin que permite al sistema operativo realizar la planicacin, se agrupan la prioridad con la que el proceso se ejecuta dentro del sistema respecto a otros procesos y la informacin de auditora, que incluye estadsticas de tiempo de uso del procesador, registros usados, dispositivos empleados, etc. El sistema operativo debe controlar el modo en que se ejecutan los procesos y gestionar los recursos que pudieran necesitar, para lo cual se le asignan diversas tareas sobre cada proceso como su creacin y terminacin, la planicacin y activacin e intercambio y sincronismo para comunicarse con otros procesos mediante espacio de memoria compartida, paso de mensajes y semforos. Es por ello que se jan un conjunto de posibles estados para cada proceso los cuales dependen del modelo empleado por cada sistema operativo. Existen modelos muy simples como el de dos estados que determinan slo si el proceso est en ejecucin o no, siendo tiles para planicaciones simples FIFO; hasta modelos de cinco, siete y nueve estados como el que emplea UNIX. El ms empleado es el modelo de cinco estados que se muestra a continuacin:

Figura 1: Modelo de cinco estados. Wikipedia

Nuevo: el proceso es creado pero el sistema operativo aun no ha jado que recursos le son asignados, pues aun no ha sido admitido y no reside en memoria. Una vez es admitido pasa a estar listo. Listo: el proceso tiene determinados todos sus recursos y se encuentra esperando que el planicador a corto plazo le permita pasar a ejecucin. Ejecucin: el proceso ha tomado el control del procesador, tiene toda la informacin para correr dispuesta sobre los registros. El procesador ejecuta las instrucciones del proceso hasta que naliza o produce

una excepcin, en cuyo caso pasa al estado terminado; o hasta que es interrumpido por el planicador para que otro proceso se pueda ejecutar pasando al estado listo; o hasta que necesita un evento, ya sea desde un dispositivo de E/S o desde otro proceso, pasando al estado de espera. Espera: el proceso se encuentra bloqueado a la espera de un evento. Una vez se produce el evento pasa a estar listo. Terminado: el proceso es expulsado del grupo de procesos ejecutables y el sistema operativo libera los recursos de la mquina que consuma. En la literatura es usual hacer uso del trmino tarea o proceso indistintamente, sin embargo, es conveniente explicar que el trmino tarea se emplea con mayor frecuencia como sinnimo de proceso cuando se tratan los sistemas empotrados o cuando se trata la planicacin, pues en la lengua inglesa el trmino multitasking, que se explica ms adelante, es preferible a multiprocessing, ya que se puede confundir con multiprocessor. 3.1.2. Hilo

Hilo, hebra, proceso ligero, o thread en ingls, hace referencia a una unidad de trabajo que contiene informacin de contexto del procesador y rea de datos de la misma manera en que lo hace un proceso. Tambin se ejecuta secuencialmente y puede interrumpirse para dar paso a otro hilo. La diferencia de las hebras respecto de los procesos es que en sistemas multithread los procesos se denen como conjunto de hilos, de modo que los ltimos pueden compartir informacin en memoria dentro del espacio del proceso al que pertenecen, a diferencia de los sistemas monohilo en los que el concepto de hilo se confunde con el de proceso. Esto es til para aplicaciones, que siendo modulables, realizan varias labores, esencialmente independientes, que no tienen que ser serializadas. Se presenta a continuacin una serie de ventajas de los sistemas multithilo respecto a los monohilo: [1] Lleva mucho menos tiempo crear un nuevo hilo en un proceso existente que en crear un proceso. Lleva menos tiempo nalizar un hilo que un proceso. Lleva menos tiempo cambiar entre dos hilos dentro del mismo proceso. La comunicacin entre hilos de una misma aplicacin es ms eciente que entre procesos, pues no necesita la intervencin del ncleo para realizar labores de proteccin y comunicacin como lo sera necesario entre procesos. 3.1.3. Ncleo

El ncleo del sistema operativo, tambin conocido por su anglicismo kernel, es la pieza fundamental del sistema operativo. Se encarga de gestionar los recursos de la mquina a travs de servicios de llamada al sistema: planicacin de hilos, el intercambio de procesos, las excepciones, el manejo de interrupciones, la sincronizacin de multiprocesadores, etc. Existen algunos tipos de ncleo: Monolticos. Microncleos. Hbridos. Exoncleos.

Los ncleos monolticos son grandes, complejos y engloban la mayora de los servicios del sistema incluyendo la planicacin, los sistemas de cheros, las redes, los controladores de dispositivos, la gestin de memoria y otras funciones. No tienen estructura modular, implementado como un nico proceso con todos los elementos compartiendo el mismo espacio de direcciones. Algunos ejemplos de ncleos monolticos son los sistemas Unix-like como la propia Unix, BSD y sus derivados, Solaris, Linux y otros como los Microsoft Windows 9x.

Figura 2: Ncleo monoltico. Wikipedia Por otra parte los microncleos slo tienen unas pocas funciones esenciales asignadas al ncleo, incluyendo los espacios de almacenamiento, comunicacin entre procesos (IPC) y la planicacin bsica. El resto de servicios como la gestin de memoria, sistema de archivos, operaciones de E/S, etc, se procesan como procesos servidores en el espacio de usuario. Como ventaja respecto a los ncleos monolticos se encuentran la simplicidad del ncleo, la descentralizacin de fallos y la facilidad que aporta para crear y depurar controladores de dispositivos. Sin embargo, cuenta con ciertas desventajas como la dicultad para sincronizar los mdulos que componen el microncleo. Sistemas operativos que emplean microncleos entre otros son Minix, QNX y AmigaOS, el sistema operativo por defecto del ordenador personal Amiga de los aos ochenta y noventa.

Figura 3: Microncleo. Wikipedia Existen, aun hoy en da, grandes debates sobre si los sistemas microncleo son o no mejores que los monolticos. Un ejemplo interesante de estos debates es la discusin entre el profesor Tanenbaum y Linus Torvalds, creadores de los sistemas Minix y Linux respectivamente. [4] Los ncleos hbridos son microncleos modicados a los que se les ha aadido cdigo que estara en el espacio de usuario en el caso de ser microncleos puros para realizar ciertos servicios de manera ms rpida. Ejemplos de sistemas operativos que empleen ncleos hbridos son Microsoft Windows XP, Windows Vista y MAC OS X. Otro tipo de ncleo es el exoncleo que sigue siendo un tema de investigacin, sin existir un sistema comercial que lo emplee. La idea subyacente consiste en abstraer al programador del hardware hasta el punto que 7

considere necesario, pudiendo el programador realizar operaciones de muy bajo nivel como pedir direcciones especcas de memoria, bloques de disco y dems, a travs de libreras aportadas por el sistema. La gran ventaja de los exoncleos es que son muy simples pues estn limitados a asegurar la proteccin y el multiplexado de recursos.

Figura 4: Exoncleo. Wikipedia

3.1.4.

Caractersticas Multi

Multitasking/multiprogramming: Multitarea/Multiprogramacin es una caracterstica que hace referencia a la capacidad que tiene el sistema operativo para ejecutar varias tareas/programas de forma intercalada. Cuando el sistema posee ms de un procesador algunos autores preeren el trmino multiprocessing. Existen esencialmente dos tipos de multitasking: cooperative (cooperativo) y preemptive (preferente). En el primero la tarea una vez est en modo ejecucin ocupando el procesador decide en qu momento ceder el procesador al sistema operativo o a otro proceso. En el segundo caso el sistema operativo es el que regula los tiempos de ocupacin del procesador por parte de todos los procesos del sistema. multithreading: Multihilo es la tcnica por la cual un sistema puede gestionar un proceso como un conjunto de hilos (threads) que pueden ejecutarse concurrentemente. multiprocessing: Traducido como multiprocesamiento, se reere a la capacidad de gestionar varios procesos en un multiprocesador. Existen varios tipos dentro de las distintas categoras de sistemas de computadores. Una posible clasicacin de sistemas de computadores es la taxonoma de Flynn propuesta por Michael J. Flynn en el ao 1972[6]: SISD Single instruction single data: un solo procesador ejecuta instrucciones que modican datos en una nica memoria asociada al procesador. Caso de monoprocesador. SIMD Single instruction multiple data: una nica instruccin se ejecuta en varios procesadores, los cuales operan sobre memorias independientes asociadas a cada procesador. Caso de los procesadores vectoriales y matriciales. MISD Multiple instruction single data: varias instrucciones se procesan en procesadores distintos actuando sobre el mismo conjunto de datos. No se ha implementado. MIMD Multiple instruction multiple data: varios procesadores ejecutan instrucciones diferentes que operan sobre datos distintos. Atendiendo a esta clasicacin y haciendo nfasis en las arquitecturas MIMD, mltiples instrucciones, mltiples ujos de datos, se necesita conocer la forma de comunicacin entre los distintos procesadores a travs de la memoria. As, si la memoria es totalmente distribuda, es decir, que est dbilmente acoplada, los elementos de proceso son computadoras en s mismo y se denominan clusters o multicomputadores. Sin embargo, si 8

la memoria es compartida, es decir, que est fuertemente acoplada, aparecen dos variantes: la arquitectura maestro/esclavo (o multiprocesador asimtrico ASMP) y el multiprocesador simtrico (SMP). En la primera de estas variantes, un procesador ejecuta el ncleo del sistema operativo y se encarga de planicar cmo los procesos se van ejecutando en un procesador y otro. En la segunda variante el ncleo puede ejecutarse en cualquier procesador y normalmente cada procesador realizar su propia planicacin del conjunto de procesos e hilos. Los sistemas actuales estn basados en esta ltima variante, SMP, tratando de explotar el paralelismo real que ofrece. multiuser: Multiusuario, en contraposicin a monousuario, es la caracterstica que determina si los recursos del sistema pueden ser utilizados por ms de un usuario al mismo tiempo. 3.1.5. Capa de abstraccin de hardware (HAL)

La capa de abstraccin hardware (Hardware Abstraction Layer) es un software capaz de aislar las funciones del sistema operativo del hardware sobre el que se encuentra. De esta manera el sistema operativo ve siempre una misma mquina hipottica, sin importar cul es el verdadero hardware, sobre la que vierte mandatos y respuestas genricas que la capa de abstraccin traduce a la mquina real. 3.1.6. Interfaz de programacin de aplicaciones (API)

(Application Programming Interface) Es un conjunto de bibliotecas en forma de funciones y procedimientos que aporta una pieza software a otra para que puedan comunicarse a travs de llamadas, lo que permite una vez ms abstraer las particularidades de una aplicacin al resto. El sistema operativo ofrece una API a las aplicaciones que corren sobre l para gestin de dispositivos de E/S, manejo de energa, monitoreo del sistema, gestin de ventanas y sistemas grcos, etc. Algunos ejemplos de API son: Win32 de Microsoft Windows. Estndar POSIX. OpenGL de Silicon Graphics. Coleccin DirectX de Microsoft que incluye Direct3D. Carbon de MAC OS X. 3.1.7. Planicacin

En los sistemas modernos multiprogramados una de las funciones fundamentales que debe realizar el sistema operativo es la planicacin de procesos o hilos, pues las tareas residen en memoria de forma concurrente. La poltica de planicacin va a depender fundamentalmente de la aplicacin para la cual ha sido diseado el sistema y de los recursos con los que cuenta la mquina, siendo muy importante saber si la mquina cuenta con un nico procesador o varios. Existen cuatro tipos de planicacin: Planicacin a largo plazo. Planicacin a medio plazo. Planicacin a corto plazo. Planicacin de E/S. 9

En la planicacin a largo plazo el sistema operativo se limita a decidir si un proceso se aade o no al conjunto de procesos a ser ejecutados, lo que determina el grado de multiprogramacin del sistema; a medio plazo se decide si el proceso debe aadirse al nmero de procesos que estn parcialmente o totalmente en la memoria principal; a corto plazo se decide con los procesos o hilos residentes en memoria cul es el siguiente a ejecutarse en el procesador; y en la planicacin de E/S se establece qu tarea pendiente de una peticin de E/S debe ser atendido por un dispositivo de E/S disponible. A continuacin se entrar con mayor detalle, aunque de forma somera, en los aspectos ms relevantes de la planicacin a corto plazo. En sntesis, la planicacin a corto plazo debe optimizar uno o ms aspectos del sistema asignando tiempos de procesador. Existen sistemas en que a cada proceso se le asigna una prioridad, de modo que la planicacin es simple, pues se debe ejecutar con la mayor brevedad posible los procesos con mayor prioridad. Este mtodo tiene el gran inconveniente de poder dejar a los procesos con la prioridad ms baja sufriendo inanicin. Existen polticas de planicacin alternativas que podemos clasicar en dos categoras: sin expulsin (nonpreemptive) y con expulsin (preemptive). Las polticas sin expulsin consisten en dejar al proceso que est en ejecucin ocupando el procesador hasta que termine o hasta que se bloquea esperando una peticin de E/S o algn servicio del sistema operativo. Por otra parte, las polticas con expulsin permiten interrumpir la ejecucin de un proceso aunque no haya terminado o no est esperando ninguna peticin o servicio, para dar paso a otro proceso.1 Algunas de las planicaciones alternativas son: Primero en llegar, primero en servirse (rst-come-rst-served): Consiste en una cola FIFO de procesos. Es sin expulsin. Se emplea como referencia para el estudio de otras planicaciones. Existe riesgo de inanicin penalizando a los procesos cortos. Turno rotatorio (round robin o time slicing): La planicacin est basada en el reloj, de forma que van ejecutndose los procesos que estn listos de forma cclica. Es con expulsin. Todos los procesos ocupan el procesador durante el mismo tiempo hasta ser expulsados. Primero el proceso ms corto (shortest process next): Se selecciona el proceso con el tiempo de ejecucin ms corto esperado. No es expulsivo. Posible inanicin. Gran overhead para clculo de tiempo de ejecucin. Menor tiempo restante (shortest remaining time): Versin expulsiva del caso anterior, en el que, de entrar un proceso con menor tiempo de ejecucin que el proceso que est ejecutndose en ese momento, pasa a ejecutarse el recin entrado. Inanicin posible. Primero el de mayor tasa de respuesta (highest response ratio next): Se prioriza a los procesos de forma dinmica mediante la funcin (w+s)/s, siendo w el tiempo invertido en el sistema esperando o en ejecucin y s el tiempo total estimado de ejecucin que necesita el proceso para terminar. No expulsivo. De esta forma los procesos cortos son priorizados y los procesos que llevan largo tiempo en cola tambin. No existe posibilidad de inanicin pues los procesos a medida que estn ms tiempo en el sistema van ganando prioridad. Cuando tratamos sistemas con ms de un procesador, es necesario realizar algunas consideraciones de ms. Es evidente que el gran potencial que tiene un sistema multiprocesador es su capacidad para realizar tareas de forma realmente concurrente. La necesidad de realizar las tareas de forma concurrente se mide en funcin del trmino granularidad, siendo una aplicacin de grano no aquella que tiene paralelismo inherente en un nico ujo de instrucciones y de grano muy grueso aquella en que sus procesos no estn relacionados. Esta granularidad nos sirve tambin para clasicar las distintas arquitecturas en funcin de la capacidad que tienen para explotar el paralelismo de estas aplicaciones. As, una arquitectura que es capaz de sincronizar procesos dentro de una aplicacin con mucho paralelismo, se puede decir que es de grano no; y una arquitectura de
1 proceso

puede hacer referencia a hilo, dependiendo de si el sistema es multithreading o no.

10

grano muy grueso podra ser un grid de computadoras en el que la sincronizacin entre procesos se puede realizar cada varios miles o millones de instrucciones ejecutadas. En este apartado, toma gran relevancia la diferencia entre procesos e hilos. En los sistemas monoprocesador, los hilos pueden aportar gran benecio por la facilidad con la que el sistema es capaz de cambiar la asignacin del procesador entre hilos de un mismo proceso pues no se ha de cambiar el contexto de memoria como si es necesario hacer cuando cambiamos entre procesos. Pero en un sistema multiprocesador el paralelismo real que existe en la ejecucin de los hilos permite una mejora muy importante de prestaciones. Destacan cuatro enfoques dentro de las posibles propuestas para la planicacin multiprocesador de hilos: Comparticin de carga: Los procesos no se asignan a un procesador particular. Existe una cola global de hilos que van ejecutndose en los distintos procesadores a medida que estos quedan ociosos. Planicacin en pandilla: Se ejecutan al mismo tiempo sobre los distintos procesadores un conjunto de hilos relacionados. Asignacin de procesador dedicado: Cada proceso ocupa un nmero de procesadores igual al nmero de hilos en el programa durante toda la ejecucin del programa. Planicacin dinmica: El nmero de hilos de un proceso puede cambiar durante el curso de su ejecucin. 3.1.8. Planicacin de tiempo real

La planicacin de tiempo real tiene sentido cuando lo aplicamos a un entorno en el que la obtencin del resultado que ofrece una tarea urge o tiene un plazo. Las tareas, denominadas en este contexto como tareas de tiempo real, pueden ser tareas de tiempo real duro o de tiempo real suave. Las primeras son aquellas en las que, de no cumplirse el plazo que la limita, puede ocasionar un error fatal e irreversible en el sistema. Sin embargo, el plazo de las segundas es un lmite deseable pero no obligatorio. Otra caracterstica de las tareas de tiempo real es la periodicidad. Una tarea real se dice peridica cuando el requisito de la misma se produce cada cierto tiempo T o cada cierto nmero de eventos. Por otra parte, una tarea real se dice aperidica si slo est limitado su instante de comienzo o nalizacin. Existen cinco caractersticas que denen a un sistema de tiempo real: Determinismo Reactividad Control de usuario Fiabilidad Operacin de fallo suave Un sistema operativo se dice determinista si es capaz de realizar las operaciones en instantes de tiempo jos o dentro de intervalos de tiempo predeterminados. Puesto que es imposible saber a priori en un sistema las circunstancias con las que se puede encontrar, es til saber el retardo mximo desde la llegada de una interrupcin de un dispositivo de alta prioridad hasta que comienza el servicio. La reactividad por otra parte indica el tiempo que necesita para manejar una interrupcin dependiendo mucho de la arquitectura hardware sobre la que se sustenta el sistema. El determinismo y la reactividad juntos conforman el tiempo de respuesta a eventos externos. El control del usuario hace referencia a la capacidad que tiene el usuario de interferir en la planicacin que hace el sistema operativo sobre las tareas, siendo por norma general mayor en los sitemas de tiempo real, ya que el nmero de variables que determinan la mejor planicacin son mayores que en un sistema no de tiempo real. La abilidad es una caracterstica muy importante en los sistemas operativos de tiempo real siendo mucho ms importante que en un sistema de no tiempo real, pues la prdida o degradacin de sus 11

prestaciones puede tener consecuencias catastrcas. La operacin de fallo suave se reere a la habilidad que tiene el sistema para minimizar las consecuencias de un fallo, de modo que sea capaz de preservar tanta capacidad y datos como sea posible. Un sistema no de tiempo real, al encontrar un fallo, puede permitirse detener la ejecucin tras valorar cul ha sido el posible dao. Sin embargo, un sistema de tiempo real no puede detenerse, por lo que debe estar preparado para continuar su ejecucin a pesar del posible deterioro. Existen cuatro enfoques o tipos de algoritmos para la planicacin de tiempo real: Enfoques estticos dirigidos por tablas Enfoques estticos expulsivos dirigidos por prioridad Enfoques dinmicos basados en un plan Enfoques dinmicos de mejor esfuerzo El primer enfoque es aplicable a tareas que son peridicas en el que el planicador intenta encontrar un plan que le permita cumplir todos los requisitos de todas las tareas. La entrada de datos para el anlisis son: tiempo peridico de llegada, tiempo de ejecucin, plazo peridico de nalizacin y prioridad relativa de cada tarea. La planicacin por plazos es un ejemplo de este tipo de algoritmo. El segundo tipo realiza tambin un anlisis esttico, pero que en vez de obtener una planicacin obtiene una tabla de tareas con su prioridad. en funcin de esta tabla el planicador expulsa las tareas como en la mayora de los sistemas multiprogramados que no son de tiempo real. Un ejemplo de este tipo de algoritmo es el algoritmo de tasa montona. Con la planicacin dinmica basada en un plan se realiza una nueva planicacin cada vez que llega una tarea a la cola de ejecucin teniendo en cuenta todas las tareas que estn en cola, de modo que si puede correr la tarea sin que ninguna de las tareas anteriores pierda su plazo, pasa directamente a ejecutarse. En el enfoque dinmico de mejor esfuerzo, cuando llega una tarea, el sistema le asigna una prioridad basada en las caractersticas de la misma sin realizar ningn anlisis de factibilidad. El sistema intenta cumplir todos los plazos y aborta la ejecucin de cualquier proceso cuyo plazo haya fallado. Es fcilmente implementable. Es el tipo ms usado en los sistemas operativos de tiempo real disponibles en la actualidad.

4.

Tipos de sistemas operativos

Existen muchas clasicaciones para los distintos tipos de sistemas operativos, variando mucho en funcin del ao en que se realizara la clasicacin. Hoy en da la frontera entre un sistema operativo para sistema empotrado o para un dispositivo mvil de mano es muy difusa, as como tambin lo es cuando lo comparamos con los sistemas operativos de tiempo real. Una posible ordenacin pudiera ser: Sistemas operativos para supercomputacin[7] Suse Linux Server : monoltico AIX Unix : microkernel Red Hat Linux : monoltico UNICOS : monoltico Sistemas operativos para mainframes/servidores/estaciones de trabajo IBM Z/OS Solaris 12

Sistemas operativos de propsito general para ordenadores personales Unix-Like : Distribuciones Linux : monoltico Debian Ubuntu Red Hat Fedora Gentoo Suse Minix : microncleo Distribuciones BSD : monoltico FreeBSD OpenBSD OpenSolaris : monoltico MAC OS X : Hbrido Microsoft Windows 9x / XP / Vista : Monoltico / Hbrido / Hbrido Sistemas operativos de tiempo real/empotrados eCos Nucleus : microkernel VRTX : microkernel QNX : microkernel VxWorks : microkernel Symbian : microkernel Snapgear : monoltico Palm OS Windows Mobile / CE : hbrido / hbrido Openmoko : monoltico Mobilinux : monoltico Android : monoltico Sistemas operativos web [8, 9] WebOS eyeOS Sistemas operativos de red Microsoft Windows NT / 2000 : hbrido / hbrido Novell Netware : monoltico BSD : monoltico

13

5.

Symbian OS

Figura 5: Logo Symbian OS. www.symbian.com Symbian es un sistema operativo creado para telefona mvil por Symbian Ltd. que desciende de los sistemas operativos EPOC desarrollados por Psion. Symbian Ltd naci en 1998 como una asociacin de las empresas Nokia, Siemens, Fujitsu, Arima, Samsung, LG, Mitsubishi Electric, Panasonic, Motorola, Lenovo, Sharp, Benq, Sony Ericsson, Sanyo y Sendo con la intencin de aprovechar la convergencia entre los telfonos mviles y las PDAs. Su intencin primera era disear un sistema operativo que funcionara en un espacio pequeo y adems supiera administrar de manera eciente la energa que por aquel entonces era importante con el surgimiento de las pantallas a color y aplicaciones multimedia. Actualmente Symbian Ltd. es propiedad de Nokia liderando el mercado mvil desde la salida de su versin v7.0, con una cuota actual del 46.6 %, seguido por Apple con un 17.3 % con iPhone OS y por Microsoft con un 13.5 % gracias a Windows CE y Windows Mobile. Est previsto que se libere el cdigo durante la primera mitad del ao 2009. Symbian OS se ecuentra en la versin 9.5, diseado para los requerimientos especcos de los mviles de ltima generacin 2.5G y 3G. Emplea el kernel EKA2 que corre sobre ARM (y puede ser emulado sobre x86), derivado de EKA1 que ya ofreca preemptive multitasking y proteccin de memoria pero no garantas de tiempo real. EKA2 incluye como diferencias ms relevantes la garanta de tiempo real, la capacidad de gestionar mltiples hilos dentro como fuera del kernel y llevar el microkernel EKA1 al concepto nanokernel, que deja al kernel con lo absolutamente imprescindible, sobre lo cual se construyen el resto de capas de abstraccin que se crean convenientes para la aplicacin. Las caractersticas ms relevantes segn Symbian son: microkernel con capacidad de tiempo real y multithreading SMP con desconexin de procesadores para ahorro de energa amplio soporte para perifricos y tipos de memoria internas y externas sistemas de cheros NOR, NAND, SD y MMC capacidad de funcionamiento bajo distintos estndares de red grandes capacidades en multimedia soporte para grabacin de vdeo y audio soporte para cmaras de gran resolucin potentes grcos soporte para GUIs (OpenGL, Open VG) amplia suite de aplicaciones de servicio (manejador de contactos, calendario...) 14

Algoritmos criptogrcos: DES, 3DES, RC2, Rc4, RC5 y AES Algoritmo symbian Demand Paging que slo carga las pginas necesarias de los DLL en RAM Soporte para ARMv5, v6 y v7 entornos de desarrollo basados en Eclipse y CodeWarrrior a partir de lenguajes como Java, C++, Visual Basic, Python, Perl y Flash Lite.

15

6.

Mobilinux

Figura 6: Logo mobilinux. www.mvista.com Montavista Mobilinux es un sistema operativo basado en Linux que fue diseado especialmente para telefona mvil por MontaVista Software y presentado en Abril de 2005. Montavista fue fundada en el ao 1999 por James Jim Ready, creador de VRTX, el primer sistema operativo considerado de tiempo real que sali en 1980. Siguiendo una estrategia basada en el cdigo libre, lo que le ha aportado una vasta comunidad de desarrolladores, Mobilinux copa el 90 % de los mviles con Linux, siendo el sistema operativo empotrado comercial fundamentado en Linux ms utilizado. Segn MontaVista las caractersticas ms importantes de este sistema son [10]: Duracin de la batera ms larga: Con el sistema de gestin de batera Montavista Dynamic Power Management, que implementa un algoritmo de regulacin de la frecuencia de CPU y otras funciones [11] , es capaz de aumentar el tiempo de batera hasta cinco veces segn benchmarks que ofrece MontaVista como referencia. Conectividad Incorporada: Es capaz de conectar a ms tipos de software y dispositivos que cualquier otro Linux. Permite soporte out-of-the-box para SDIO, Wi-LAN/Wi-Fi sobre USB, Bluetooth sobre USB, USB On-The-Go, drivers de sonido ALSA (Advanced Linux Sound Architecture), GStreamer. Velocidad en el inicio: Arranca desde cero en menos de 5 segundos y establecer una llamada telefnica en menos de 10 segundos, tres veces ms rpido que dispositivos basados en Symbian o en Microsoft y tres veces y medio ms rpido que un iPhone de Apple. Capaz de retornar de modo sleep en menos de medio segundo.

Figura 7: Caractersticas mobilinux. www.mvista.com

16

Pequeo tamao: Puede ser implementado bajo 2 megabytes y, para un mvil tpico con funcionalidad bsica, bajo algo menos de 14 megabytes. Seguridad a nivel NSA: Primer sistema operativo que incluye MontaVista microSELinux, una versin reducida de SELinux (Security-Enhanced Linux), desarrollado por la NSA (National Security Agency) para proteger la condencialidad de los mensajes y la integridad de los archivos y el software del sistema. Respuesta en tiempo real: Mobilinux es 100 % Linux nativo lo que le conere prestaciones de tiempo real. Montavista Linux preemptible kernel technology: Preempt_RT. Version del kernel actual v2.6.21. Soporte para procesadores multincleo: Mobilinux soporta tanto procesadores mononcleo como multincleo adems de multiprocesamiento sncrono y asncrono. Reduccin de costes BOM: Reducir el BOM (bill of materials) supone grandes benecios econmicos. Mobilinux es capaz de correr sobre una amplia cantidad de arquitecturas y simples, a diferencia de otros sistemas operativos, lo que permite al fabricante mayor exibilidad para la eleccin de componentes hardware. Mejor entorno de desarrollo: Est provisto de KGDB (Kernel GNU Debugging) sobre USB, en contraposicin a los clsicos debuggers que corren sobre puertos ms grandes que por la miniaturizacin de los mviles no permitan realizar el depurado de forma nativa sobre el propio dispositivo. Adems Montavista provee a la comunidad de desarrolladores con herramientas de desarrollo basadas en Eclipse, Platform Development Kit (PDK) y Application Depelopment Kit (ADK).

17

Figura 8: Logo Wind River Systems. www.windriver.com

7.

VxWorks

VxWorks es un sistema operativo de tiempo real unix-like propietario diseado por Wind River Systems para sistemas empotrados. Wind River Systems fue fundada en el ao 1981 en Berkeley por Jerry Fiddler y David Wilner. Sus primeros clientes fueron la NFL (Liga Nacional de Ftbol Americano) y Francis Ford Coppola, director de cine para quien desarrollaron un sistema de edicin de vdeo. Wind River en la actualidad se dedica a crear software y sistemas operativos que son usados en telfonos mviles, sistemas de frenado en automocin, routers, cmaras digitales, proyectores, set-top boxes, seales de trco, los Mars Rovers y ms. Algunos de los sucesos ms recientes que han denido la trayectoria de la compaa es la alianza que cre con Red Hat en 2004 para crear un sistema operativo basado en Linux para sistemas empotrados que sali al mercado en el ao 2005 y la cooperacin con BMW e Intel desde 2008 para el desarrollo de una plataforma open-source para el control de la electrnica dentro de los automviles. En la actualidad los competidores ms importantes con los que cuenta Wind River son Green Hillos Software, creadores de algunos RTOS como VelOSity; QNX, con su sistema operativo homnimo de tiempo real; Mentor Graphics, con el sistema Nucleus; y algunos ms como Microsoft, con sus plataformas para dispositivos de mano, y MontaVista con Mobilinux. VxWorks ha sido portado a muchsimas plataformas debido al grn abanico de aplicaciones para el que ha sido diseado, pudiendo correr sobre casi cualquier arquitectura moderna como la familia x86, MIPS, PowerPC, Freescale ColdFire, Intel i960 o la familia de ARMs. Es de destacar el que Wind River no vende slo el sistema operativo, sino toda una plataforma de desarrollo incluyendo una gran cantidad de servicios de soporte tcnico como la exportacin de proyectos a versiones del sistema ms recientes. Esta plataforma desde la versin 6.x de VxWorks la denominan simplemente Workbench, a diferencia de la denominacin Tornado que empleaban para versiones anteriores. Entre los productos que estn basados en VxWorks destacan: El Mars Reconnaisaance Orbiter La Phoenix Mars Lander la sonda Deep Impact Los Mars Rover Spirit y Opportunity El robot ASIMO de Honda El Airbus A400M y el Boeing 787 as como el 747-8 El sistema iDrive de BMW routers Linksys WRT54G wireless procesadores de imagen DIGIC II y DIGIC III de Canon El helicptero de ataque Apache Longbow 18

Caractersticas que denen a VxWorks v6.6 [25]: Gran escalabilidad del SO por estar diseado para amplio rango de aplicaciones. Algunos proles: Minimal kernel prole: small-footprint (36KB-100KB) dependiente de la familia del procesador y algn componente que el diseador pueda incluir. El kernel es totalmente esttico, no permite asignacin dinmica de memoria. Basic kernel prole: permite asignacin dinmica de memoria y ocupa unos 150KB aproximadamente. Basic OS prole: aade al kernel servicios para E/S y soporte para posible coprocesador, 250KB. Gran determinismo en la planicacin de tiempo real mediante expulsin basada en prioridades o round-robin con rpida respuesta a interrupciones. opcin de SMP como add-on, manteniendo las mismas caractersticas y prestaciones de RTOS. Multitasking real con exclusin mutua como proteccin entre procesos. Capacidad de elegir el diseador cmo las tareas se distribuyen entre los distintos procesadores del sistema. proteccin de memorias basadas en MMU (memory management unit). Aislamiento entre el kernel y modo usuario. Rpida y exible comunicacin entre procesos incluyendo TIPC (Transparent IPC). compatibilidad hacia atrs con el resto de versiones. VxSim simulator. Herramientas de anlisis Run-Time: provee de detallados anlisis y visualizacin grca de los distintos eventos del sistema, interaccin entre tareas, interrupciones, prestaciones de tiempo real, aparicin de cuellos de botella, anlisis de memoria, monitor de datos, variables, localizacin en memoria... Aseguran un rpido time-to-market a travs de su plataforma mediante herramientas de desarrollo y manejadores de error. Soporte para multitud de sistemas de cheros. Extensible con protocolos de red como IPv4/IPv6.

19

Referencias
[1] William Stallings. Sistemas operativos: Aspectos internos y principios de diseo. Prentice Hall. 2005 [2] Abraham Silberschatz. Sistemas operativos: conceptos fundamentales. Editorial Addison-Wesley. 1994 [3] Carlos Tarajano Beracoechea. Trabajo Microarquitectura de Sistemas Integrados. Funcionalidad y Caractersticas de: Symbian OS v9 vs eCos. http://www.iuma.ulpgc.es/users/nunez/clases-micros-paracom/mpc0607-trabajos/mpc07-Tarajano-Symbian-eCos.zip

[4] Resumen Discusin profesor Tanenbaum vs Linus Torvalds : http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html [5] Varios artculos Wikipedia : http://wikipedia.org [6] Wikipedia.Taxonoma de Flynn : http://en.wikipedia.org/wiki/Flynn %27s_taxonomy [7] TOP500, Supercomputer Sites : http://www.Top500.org [8] Wikipedia.Web Operating Systems : http://en.wikipedia.org/wiki/Web_operating_system [9] WebOS: Operating System Services http://www.cs.duke.edu/ari/issg/webos/ for Wide Area Applications :

[10] MontaVista Mobilinux v5 Datasheet : http://www.mobilinux.com/download/MontaVista-Mobilinux-5datasheet.pdf [11] MontaVista. Dynamic Power Management (DPM) : http://www.mvista.com/opensource_dpm_project.php [12] Jos Miguel Santos Espino, Alexis Quesada, Francisco Santana. Transparencias asignatura Sistemas Operativos. Informtica. ULPGC. [13] Javier Palmero Esteban. Sistemas operativos http://www.gui.uva.es/login/login/15/process.html [14] z/OS : http://www-03.ibm.com/systems/z/os/zos/ [15] Symbian OS : http://www.symbian.com [16] All About Symbian : http://www.allaboutsymbian.com [17] Microsoft : http://www.microsoft.com [18] Mobilinux : http://www.mobilinux.com [19] Android Depeloper Challenge : http://code.google.com/intl/es-ES/android/adc.html [20] Greg Hawley. Selecting a Real-Time Operating System : http://www.embedded.com/1999/9903/9903sr.htm [21] eCos Kernel Overview : http://ecos.sourceware.org/docs-latest/ref/kernel-overview.html [22] Nucleus OS : http://www.mentor.com/products/embedded_software/nucleus_rtos/ [23] OS DATA : http://www.osdata.com [24] Wind River Systems : http://www.windriver.com [25] Wind River General Purpose Platform, VxWorks Edition http://www.windriver.com/products/product-notes/General-Purpose-Platform-ve-Note.pdf 3.6 : multiproceso y multithread :

20

S-ar putea să vă placă și