mpc0809: sistemas operativos y alternativas rtosnunez/clases-micros-para-com/mpc0809... ·...

21
MPC0809: Sistemas operativos y alternativas RTOS Rubén Marrero Gómez

Upload: others

Post on 19-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

  

MPC0809:   Sistemas 

operativos y alternativas RTOS 

    

Rubén Marrero Gómez 

Índice

1. Introducción 2

2. Perspectiva histórica 2

3. Definición de sistema operativo y conceptos 3

3.1. Conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.1.1. Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.1.2. Hilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1.3. Núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1.4. Características Multi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.5. Capa de abstracción de hardware (HAL) . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.6. Interfaz de programación de aplicaciones (API) . . . . . . . . . . . . . . . . . . . . . . 9

3.1.7. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.8. Planificación de tiempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4. Tipos de sistemas operativos 12

5. Symbian OS 14

6. Mobilinux 16

7. VxWorks 18

Índice de figuras

1. Modelo de cinco estados. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Núcleo monolítico. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Micronúcleo. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4. Exonúcleo. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

5. Logo Symbian OS. www.symbian.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6. Logo mobilinux. www.mvista.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

7. Características mobilinux. www.mvista.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

8. Logo Wind River Systems. www.windriver.com . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1

1. Introducción

En este trabajo se va realizar un pequeño repaso sobre el campo de los sistemas operativos, explicando siemprede 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 daránpor sabidos conocimientos básicos 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 yestán diseñados para sistemas empotrados, con la intención de ver características reales de algunos sistemasactuales que están en boga.

2. Perspectiva histórica

Para entender la necesidad de equipar a los sistemas actuales con un sistema operativo, así como también elporqué de algunas características, se hace necesario ver la evolución de los sistemas operativos en el tiempo.

Los primeros sistemas de computación, desde finales de los años cuarenta hasta mediados de los años cincuen-ta, eran máquinas de gran tamaño sin ningún tipo de soporte lógico, en el que el programador interactuabadirectamente con el hardware sin ninguna interfaz de por medio. Así, los trabajos que realizaban estas compu-tadoras se ordenaban en serie, existiendo en cada momento un solo operador enfrentándose al hardware. Éstaes la razón por la que este modo de operación se denomina procesamiento serie. Este sistema planteabavarios problemas, de entre los cuales cabe destacar la planificación y el tiempo de configuración. La planifi-cación de trabajo se realizaba de manera estática, siendo el programador quien reservaba bloques de tiempo,usualmente múltiplos de media hora, que podían dejar la máquina ociosa si se terminaba antes de tiempoo al programador sin terminar su trabajo si la reserva de tiempo fuera insuficiente, ya que el tiempo deconfiguración era largo e indeterminado. En este tiempo de configuración el programador debía especificar alhardware cuál era su propósito, necesitando cargar en memoria el compilador y el programa en el lenguajede alto nivel, para luego cargar y enlazar el programa objeto. Cada uno de estos pasos podía suponer montary desmontar cintas, en los que de existir algún error reiniciaban el proceso, pues se hacía necesario volver acomenzar desde el principio.

Estos primeros sistemas eran muy caros y se requería maximizar su utilización. Para ello se desarrolló elconcepto de sistema operativo en lotes que consistían en el uso de un software al que llamaron monitor. Elmonitor tenía la responsabilidad de controlar la ejecución de cada uno de los trabajos que se le asignabanal sistema, de modo que se evitaban los tiempos muertos entre trabajos. Además, el monitor era capazde ejecutar sentencias de preparación para el programa a ejecutar, de modo que la configuración se hacíamucho menos tediosa y menos vulnerable a errores. Son estos los considerados primeros sistemas operativos,destacando el GM-NAA I/O, diseñado por General Motors y North American Aviation para un IBM 704 enel año 1956, basado en otro monitor del año 1955 diseñado sólo por General Motors para un IBM 701.

Gracias al denominado monitor, los trabajos se realizan de forma continua, aumentando por tanto el ren-dimiento, pero el procesador continúa estando ocioso durante largos intervalos, esperando por los lentosdispositivos de entrada y salida. Para aprovechar esos espacios de tiempo se diseñaron los sistemas en lotesmultiprogramados que permiten cambiar el contexto del procesador hacia otros trabajos aunque no hayanterminado los anteriores. Este es el enfoque de los sistemas operativos modernos, para el desarrollo de loscuales se hizo necesario la gestión de interrupciones y el aumento del espacio de memoria con el propósito deque pudieran coexistir más de un trabajo a la vez en el sistema.

La evolución natural de las computadoras llevó a que se requiriera una interacción con el usuario, lo quepriorizaba entre otros aspectos que el tiempo de respuesta fuera mínimo. De la misma forma llegaron lossistemas operativos de tiempo compartido en el que varios usuarios hacen uso del mismo sistema. Éste debíaser multiprogramado para poder satisfacer la necesidad de todos los usuarios que utilizarían distintos progra-mas. Uno de los primeros sistemas operativos de tiempo compartido desarrollados fue el sistema CompatibleTime-Sharing System, CTSS, desarrollado en el MIT para el IBM 709 en 1961.

No fue hasta la aparición del microprocesador y de las computadoras asequibles para el consumo de masasque la facilidad de uso de los sistemas se hiciera imperante. Con ello, llegaron en los años setenta los primeros

2

ordenadores personales y nuevas interfaces de usuario, los sistemas WIMP (Window-Icon-Menu-Pointingdevice), que en la actualidad se suelen llamar GUI (Graphical User Interface), desarrollados por Xerox parasu ordenador personal Xerox Alto y que fueron popularizados ya en los años ochenta por los ordenadoresMacintosh de Apple. Este hecho ayudó a que se entendiera el mercado de los ordenadores personales como unnegocio potencial, por lo que aparecieron innumerables sistemas para uso doméstico como el Commodore64,el Amstrad CPC y el ZX Spectrum que incluían un intérprete de BASIC en ROM con el que el usuario podíarealizar operaciones de fichero como borrado, copiado y demás. [3]

3. Definición de sistema operativo y conceptos

Llegados a este punto se hace necesario definir algunos conceptos para poder abordar el estudio de algunossistemas operativos en mayor profundidad, así como consensuar una definición para sistema operativo queno está clara en la literatura.

La definición de sistema operativo más usual hace siempre referencia a una infraestructura software necesariaen los sistemas actuales para gestionar de forma eficiente los recursos de la máquina. Sin embargo, unadefinición más completa es la que hace William Stallings[1]: “Un sistema operativo es un programa quecontrola la ejecución de aplicaciones y programas que actúa como interfaz entre las aplicaciones y el hardwaredel computador. Se puede considerar que un sistema operativo tiene los siguientes tres objetivos: Facilidad deuso, eficiencia y capacidad para evolucionar”. De esta manera podemos entender el sistema operativo comouna interfaz usuario/computadora que facilita el uso del sistema, como un gestor de recursos que aumenta laeficiencia de la computadora, así como un ente capaz de evolucionar para adaptarse a las actualizaciones delhardware, capaz de incluir nuevos servicios para el usuario y resolver fallos que lleva implícito por ser unapieza software de gran complejidad.

Es un hecho contrastado la necesidad de abstraer al usuario del hardware en mayor o menor medida, tantosi se trata de un usuario doméstico como de un desarrollador de aplicaciones, en cuyo caso la abstracción noes total. Esta abstracción nos la proporciona el sistema operativo a través de un conjunto de aplicaciones yutilidades para servicios como:

Desarrollo de programas, donde el sistema operativo nos brinda herramientas que aunque no están integradasen el núcleo del sistema operativo, se ofrecen para dicho sistema.

Ejecución de programas, en el que el usuario no se preocupa de cómo el hardware carga la aplicación enmemoria y se prepara en general para hacerla correr.

Acceso a dispositivos de E/S, pues para quien está frente al sistema le es completamente transparentecómo se gestionan el disco duro, el teclado, el ratón, etc. así como tampoco conoce cómo controlalos ficheros o la protección de recursos y datos.

Detección de errores y la posible respuesta para eliminar la condición de error.

Contabilidad para monitorizar parámetros y generar estadísticas que permitan mejorar el rendimiento futurode la computadora.

Como gestor de recursos el sistema operativo procura aumentar la eficiencia del sistema aplicando políticas deuso en función del entorno para el cual fue diseñado el sistema. No debemos olvidar que el sistema operativotambién es un programa como otro cualquiera, que se ejecuta sobre el hardware, con la particularidad deque es el que controla cómo se ejecutan el resto de programas. Entre los recursos que debe diligenciar seencuentran:

CPU, pues cede y tramita el tiempo a otros procesos, quedando el sistema operativo dependiente deque la CPU retorne.

3

Memoria, ya que asigna el espacio de ésta para que se carguen los procesos a ejecutar, así como evita queexistan accesos ilegales conociendo qué partes de la memoria están siendo utilizadas y por quién.En la memoria reside también el núcleo del sistema operativo así como otras utilidades del mismoque hayan o vayan a ser ejecutadas.

Almacenamiento secundario, donde se dispone la estructura de datos sobre la que se asienta el sistema deficheros del sistema. El sistema operativo se encarga de gestionar, asignar y proteger su espaciopara los datos estáticos o para procesos que no pudieron mantenerse residentes en la memoriaprincipal.

E/S en general, con lo que se incluye la gestión de interrupciones para indicar a la máquina cómoresponder y qué decisiones tomar en cada caso particular. Aquí se incluyen interfaces de redque nos permiten comunicar nuestra computadora con otros sistemas, creando y supervisandoconexiones entre aplicaciones que se ejecuten en otras máquinas (o localmente, en cuyo caso laconexión se denomina virtual).

3.1. Conceptos

Se han tratado varias nociones sin ahondar en lo que ellas significan. Con el propósito de dejar claras estasideas para lo sucesivo, se introduce este apartado en el que se tratarán fundamentalmente aquellos conceptosque servirán para, de igual manera, exponer las características que pueden definir a los distintos sistemasoperativos.

3.1.1. Proceso

Igual que sucede con la definición de sistema operativo, aclarar lo que llamamos proceso es muy disperso.Entre las posibles definiciones están:

Un programa en ejecución.

Una instancia de un programa ejecutándose 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 ejecución, un estado actual y unconjunto de recursos del sistema asociados.

Sin embargo, desde el punto de vista del sistema operativo, debe considerarse al proceso como un conjuntode piezas, que le dan vida e identifican. Los dos elementos esenciales son el código de programa, que puedecompartirse con otros procesos que ejecuten el mismo programa, y un conjunto de datos asociados a dichocódigo:

Identificador.

Estado.

Prioridad.

Contador de programa.

Punteros a memoria.

Datos de contexto.

Información de estado de E/S.

Información de auditoría.

4

Estos elementos pueden encontrarse en las distintas lecturas, que versan sobre el tema que tratamos, reunidosen tres grupos: el contexto de ejecución, la memoria que ha reservado con su contenido y otra información queposibilite al sistema operativo realizar una planificación. Así en el contexto de ejecución se pueden agrupar elestado del proceso, que puede ser ejecutando, parado, ...; el contador de programa que indica la dirección dela siguiente instrucción a ejecutar; los punteros a memoria que posibilitan acceder al contenido de la memoriareservada; los datos de contexto que son los valores que se encuentran en los registros del procesador cuandoéste está ejecutando el proceso; y la información de estado de E/S que contiene las peticiones a dispositivosasí como sus posibles asignaciones, la lista de ficheros que puede estar manejando el proceso, etc. En cuantoa la información que permite al sistema operativo realizar la planificación, se agrupan la prioridad con la queel proceso se ejecuta dentro del sistema respecto a otros procesos y la información de auditoría, que incluyeestadísticas 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 quepudieran necesitar, para lo cual se le asignan diversas tareas sobre cada proceso como su creación y termina-ción, la planificación y activación e intercambio y sincronismo para comunicarse con otros procesos medianteespacio de memoria compartida, paso de mensajes y semáforos. Es por ello que se fijan un conjunto de posi-bles estados para cada proceso los cuales dependen del modelo empleado por cada sistema operativo. Existenmodelos muy simples como el de dos estados que determinan sólo si el proceso está en ejecución o no, siendoútiles para planificaciones simples FIFO; hasta modelos de cinco, siete y nueve estados como el que empleaUNIX.

El más empleado es el modelo de cinco estados que se muestra a continuación:

Figura 1: Modelo de cinco estados. Wikipedia

Nuevo: el proceso es creado pero el sistema operativo aun no ha fijado 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 planificador acorto plazo le permita pasar a ejecución.

Ejecución: el proceso ha tomado el control del procesador, tiene toda la información para correr dispues-ta sobre los registros. El procesador ejecuta las instrucciones del proceso hasta que finaliza o produce

5

una excepción, en cuyo caso pasa al estado terminado; o hasta que es interrumpido por el planificadorpara que otro proceso se pueda ejecutar pasando al estado listo; o hasta que necesita un evento, ya seadesde 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 pasaa estar listo.

Terminado: el proceso es expulsado del grupo de procesos ejecutables y el sistema operativo libera losrecursos de la máquina que consumía.

En la literatura es usual hacer uso del término tarea o proceso indistintamente, sin embargo, es convenienteexplicar que el término tarea se emplea con mayor frecuencia como sinónimo de proceso cuando se tratan lossistemas empotrados o cuando se trata la planificación, pues en la lengua inglesa el término ’multitasking’,que se explica más adelante, es preferible a ’multiprocessing’, ya que se puede confundir con ’multiprocessor’.

3.1.2. Hilo

Hilo, hebra, proceso ligero, o ’thread’ en inglés, hace referencia a una unidad de trabajo que contiene informa-ción de contexto del procesador y área de datos de la misma manera en que lo hace un proceso. También seejecuta secuencialmente y puede interrumpirse para dar paso a otro hilo. La diferencia de las hebras respectode los procesos es que en sistemas ’multithread’ los procesos se definen como conjunto de hilos, de modo quelos últimos pueden compartir información en memoria dentro del espacio del proceso al que pertenecen, adiferencia de los sistemas monohilo en los que el concepto de hilo se confunde con el de proceso. Esto es útilpara aplicaciones, que siendo modulables, realizan varias labores, esencialmente independientes, que no tienenque ser serializadas. Se presenta a continuación una serie de ventajas de los sistemas multithilo respecto alos monohilo: [1]

Lleva mucho menos tiempo crear un nuevo hilo en un proceso existente que en crear un proceso.

Lleva menos tiempo finalizar un hilo que un proceso.

Lleva menos tiempo cambiar entre dos hilos dentro del mismo proceso.

La comunicación entre hilos de una misma aplicación es más eficiente que entre procesos, pues nonecesita la intervención del núcleo para realizar labores de protección y comunicación como lo seríanecesario entre procesos.

3.1.3. Núcleo

El núcleo del sistema operativo, también conocido por su anglicismo kernel, es la pieza fundamental delsistema operativo. Se encarga de gestionar los recursos de la máquina a través de servicios de llamada alsistema: planificación de hilos, el intercambio de procesos, las excepciones, el manejo de interrupciones, lasincronización de multiprocesadores, etc.

Existen algunos tipos de núcleo:

Monolíticos.

Micronúcleos.

Híbridos.

Exonúcleos.

6

Los núcleos monolíticos son grandes, complejos y engloban la mayoría de los servicios del sistema incluyendola planificación, los sistemas de ficheros, las redes, los controladores de dispositivos, la gestión de memoria yotras funciones. No tienen estructura modular, implementado como un único proceso con todos los elementoscompartiendo el mismo espacio de direcciones. Algunos ejemplos de núcleos monolíticos son los sistemasUnix-like como la propia Unix, BSD y sus derivados, Solaris, Linux y otros como los Microsoft Windows 9x.

Figura 2: Núcleo monolítico. Wikipedia

Por otra parte los micronúcleos sólo tienen unas pocas funciones esenciales asignadas al núcleo, incluyendolos espacios de almacenamiento, comunicación entre procesos (IPC) y la planificación básica. El resto de ser-vicios como la gestión de memoria, sistema de archivos, operaciones de E/S, etc, se procesan como procesosservidores en el espacio de usuario. Como ventaja respecto a los núcleos monolíticos se encuentran la simpli-cidad del núcleo, la descentralización de fallos y la facilidad que aporta para crear y depurar controladoresde dispositivos. Sin embargo, cuenta con ciertas desventajas como la dificultad para sincronizar los módulosque componen el micronúcleo. Sistemas operativos que emplean micronúcleos entre otros son Minix, QNX yAmigaOS, el sistema operativo por defecto del ordenador personal Amiga de los años ochenta y noventa.

Figura 3: Micronúcleo. Wikipedia

Existen, aun hoy en día, grandes debates sobre si los sistemas micronúcleo son o no mejores que los monolíticos.Un ejemplo interesante de estos debates es la discusión entre el profesor Tanenbaum y Linus Torvalds,creadores de los sistemas Minix y Linux respectivamente. [4]

Los núcleos híbridos son micronúcleos modificados a los que se les ha añadido código que estaría en el espaciode usuario en el caso de ser micronúcleos puros para realizar ciertos servicios de manera más rápida. Ejemplosde sistemas operativos que empleen núcleos híbridos son Microsoft Windows XP, Windows Vista y MAC OSX.

Otro tipo de núcleo es el exonúcleo que sigue siendo un tema de investigación, sin existir un sistema comer-cial 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 direccionesespecíficas de memoria, bloques de disco y demás, a través de librerías aportadas por el sistema. La gran ven-taja de los exonúcleos es que son muy simples pues están limitados a asegurar la protección y el multiplexadode recursos.

Figura 4: Exonúcleo. Wikipedia

3.1.4. Características Multi

Multitasking/multiprogramming: Multitarea/Multiprogramación es una característica que hace refe-rencia a la capacidad que tiene el sistema operativo para ejecutar varias tareas/programas de formaintercalada. Cuando el sistema posee más de un procesador algunos autores prefieren el término ’multi-processing’. Existen esencialmente dos tipos de multitasking: ’cooperative’ (cooperativo) y ’preemptive’(preferente). En el primero la tarea una vez está en modo ejecución ocupando el procesador decide enqué momento ceder el procesador al sistema operativo o a otro proceso. En el segundo caso el sistemaoperativo es el que regula los tiempos de ocupación del procesador por parte de todos los procesos delsistema.

multithreading: Multihilo es la técnica por la cual un sistema puede gestionar un proceso como un conjuntode hilos (threads) que pueden ejecutarse concurrentemente.

multiprocessing: Traducido como multiprocesamiento, se refiere a la capacidad de gestionar varios procesosen un multiprocesador. Existen varios tipos dentro de las distintas categorías de sistemas de compu-tadores. Una posible clasificación de sistemas de computadores es la ’taxonomía de Flynn’ propuestapor Michael J. Flynn en el año 1972[6]:

SISD Single instruction single data: un solo procesador ejecuta instrucciones que modifican datos en unaúnica memoria asociada al procesador. Caso de monoprocesador.

SIMD Single instruction multiple data: una única instrucción se ejecuta en varios procesadores, los cualesoperan sobre memorias independientes asociadas a cada procesador. Caso de los procesadores vectorialesy matriciales.

MISD Multiple instruction single data: varias instrucciones se procesan en procesadores distintos actuandosobre el mismo conjunto de datos. No se ha implementado.

MIMD Multiple instruction multiple data: varios procesadores ejecutan instrucciones diferentes que operansobre datos distintos.

Atendiendo a esta clasificación y haciendo énfasis en las arquitecturas MIMD, ’múltiples instrucciones, múlti-ples flujos de datos’, se necesita conocer la forma de comunicación entre los distintos procesadores a través dela memoria. Así, si la memoria es totalmente distribuída, es decir, que está débilmente acoplada, los elementosde 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 arquitecturamaestro/esclavo (o multiprocesador asimétrico ASMP) y el multiprocesador simétrico (SMP). En la primerade estas variantes, un procesador ejecuta el núcleo del sistema operativo y se encarga de planificar cómo losprocesos se van ejecutando en un procesador y otro. En la segunda variante el núcleo puede ejecutarse encualquier procesador y normalmente cada procesador realizar su propia planificación del conjunto de procesose hilos. Los sistemas actuales están basados en esta última variante, SMP, tratando de explotar el paralelismoreal que ofrece.

multiuser: Multiusuario, en contraposición a monousuario, es la característica que determina si los recursosdel sistema pueden ser utilizados por más de un usuario al mismo tiempo.

3.1.5. Capa de abstracción de hardware (HAL)

La capa de abstracción hardware (Hardware Abstraction Layer) es un software capaz de aislar las funcionesdel sistema operativo del hardware sobre el que se encuentra. De esta manera el sistema operativo ve siempreuna misma máquina hipotética, sin importar cuál es el verdadero hardware, sobre la que vierte mandatos yrespuestas genéricas que la capa de abstracción traduce a la máquina real.

3.1.6. Interfaz de programación de aplicaciones (API)

(Application Programming Interface) Es un conjunto de bibliotecas en forma de funciones y procedimientosque aporta una pieza software a otra para que puedan comunicarse a través de llamadas, lo que permiteuna vez más abstraer las particularidades de una aplicación al resto. El sistema operativo ofrece una API alas aplicaciones que corren sobre él para gestión de dispositivos de E/S, manejo de energía, monitoreo delsistema, gestión de ventanas y sistemas gráficos, etc.

Algunos ejemplos de API son:

Win32 de Microsoft Windows.

Estándar POSIX.

OpenGL de Silicon Graphics.

Colección DirectX de Microsoft que incluye Direct3D.

Carbon de MAC OS X.

3.1.7. Planificación

En los sistemas modernos multiprogramados una de las funciones fundamentales que debe realizar el sistemaoperativo es la planificación de procesos o hilos, pues las tareas residen en memoria de forma concurrente. Lapolítica de planificación va a depender fundamentalmente de la aplicación para la cual ha sido diseñado elsistema y de los recursos con los que cuenta la máquina, siendo muy importante saber si la máquina cuentacon un único procesador o varios.

Existen cuatro tipos de planificación:

Planificación a largo plazo.

Planificación a medio plazo.

Planificación a corto plazo.

Planificación de E/S.

9

En la planificación a largo plazo el sistema operativo se limita a decidir si un proceso se añade o no alconjunto de procesos a ser ejecutados, lo que determina el grado de multiprogramación del sistema; a medioplazo se decide si el proceso debe añadirse al número de procesos que están parcialmente o totalmente en lamemoria principal; a corto plazo se decide con los procesos o hilos residentes en memoria cuál es el siguientea ejecutarse en el procesador; y en la planificación de E/S se establece qué tarea pendiente de una peticiónde E/S debe ser atendido por un dispositivo de E/S disponible.

A continuación se entrará con mayor detalle, aunque de forma somera, en los aspectos más relevantes de laplanificación a corto plazo.

En síntesis, la planificación a corto plazo debe optimizar uno o más aspectos del sistema asignando tiemposde procesador. Existen sistemas en que a cada proceso se le asigna una prioridad, de modo que la planificaciónes simple, pues se debe ejecutar con la mayor brevedad posible los procesos con mayor prioridad. Este métodotiene el gran inconveniente de poder dejar a los procesos con la prioridad más baja sufriendo inanición.

Existen políticas de planificación alternativas que podemos clasificar en dos categorías: sin expulsión (non-preemptive) y con expulsión (preemptive). Las políticas sin expulsión consisten en dejar al proceso que estáen ejecución ocupando el procesador hasta que termine o hasta que se bloquea esperando una petición deE/S o algún servicio del sistema operativo. Por otra parte, las políticas con expulsión permiten interrumpirla ejecución de un proceso aunque no haya terminado o no esté esperando ninguna petición o servicio, paradar paso a otro proceso.1

Algunas de las planificaciones alternativas son:

Primero en llegar, primero en servirse (first-come-first-served): Consiste en una cola FIFO de procesos.Es sin expulsión. Se emplea como referencia para el estudio de otras planificaciones. Existe riesgo deinanición penalizando a los procesos cortos.

Turno rotatorio (round robin o time slicing): La planificación está basada en el reloj, de forma que vanejecutándose los procesos que están listos de forma cíclica. Es con expulsión. Todos los procesos ocupanel procesador durante el mismo tiempo hasta ser expulsados.

Primero el proceso más corto (shortest process next): Se selecciona el proceso con el tiempo de ejecuciónmás corto esperado. No es expulsivo. Posible inanición. Gran overhead para cálculo de tiempo deejecución.

Menor tiempo restante (shortest remaining time): Versión expulsiva del caso anterior, en el que, deentrar un proceso con menor tiempo de ejecución que el proceso que esté ejecutándose en ese momento,pasa a ejecutarse el recién entrado. Inanición posible.

Primero el de mayor tasa de respuesta (highest response ratio next): Se prioriza a los procesos deforma dinámica mediante la función (w+s)/s, siendo ’w’ el tiempo invertido en el sistema esperandoo en ejecución y ’s’ el tiempo total estimado de ejecución que necesita el proceso para terminar. Noexpulsivo. De esta forma los procesos cortos son priorizados y los procesos que llevan largo tiempo encola también. No existe posibilidad de inanición pues los procesos a medida que están más tiempo enel sistema van ganando prioridad.

Cuando tratamos sistemas con más de un procesador, es necesario realizar algunas consideraciones de más.Es evidente que el gran potencial que tiene un sistema multiprocesador es su capacidad para realizar tareasde forma realmente concurrente. La necesidad de realizar las tareas de forma concurrente se mide en funcióndel término granularidad, siendo una aplicación de grano fino aquella que tiene paralelismo inherente en unúnico flujo de instrucciones y de grano muy grueso aquella en que sus procesos no están relacionados. Estagranularidad nos sirve también para clasificar las distintas arquitecturas en función de la capacidad que tienenpara explotar el paralelismo de estas aplicaciones. Así, una arquitectura que es capaz de sincronizar procesosdentro de una aplicación con mucho paralelismo, se puede decir que es de grano fino; y una arquitectura de

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

10

grano muy grueso podría ser un grid de computadoras en el que la sincronización entre procesos se puederealizar 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 beneficio por la facilidad con la que el sistema es capaz de cambiar la asignacióndel procesador entre hilos de un mismo proceso pues no se ha de cambiar el contexto de memoria como sies necesario hacer cuando cambiamos entre procesos. Pero en un sistema multiprocesador el paralelismo realque existe en la ejecución de los hilos permite una mejora muy importante de prestaciones.

Destacan cuatro enfoques dentro de las posibles propuestas para la planificación multiprocesador de hilos:

Compartición de carga: Los procesos no se asignan a un procesador particular. Existe una cola globalde hilos que van ejecutándose en los distintos procesadores a medida que estos quedan ociosos.

Planificación en pandilla: Se ejecutan al mismo tiempo sobre los distintos procesadores un conjunto dehilos relacionados.

Asignación de procesador dedicado: Cada proceso ocupa un número de procesadores igual al númerode hilos en el programa durante toda la ejecución del programa.

Planificación dinámica: El número de hilos de un proceso puede cambiar durante el curso de su ejecución.

3.1.8. Planificación de tiempo real

La planificación de tiempo real tiene sentido cuando lo aplicamos a un entorno en el que la obtención delresultado que ofrece una tarea urge o tiene un plazo. Las tareas, denominadas en este contexto como tareasde tiempo real, pueden ser tareas de tiempo real duro o de tiempo real suave. Las primeras son aquellas enlas que, de no cumplirse el plazo que la limita, puede ocasionar un error fatal e irreversible en el sistema. Sinembargo, el plazo de las segundas es un límite deseable pero no obligatorio. Otra característica de las tareasde tiempo real es la periodicidad. Una tarea real se dice periódica cuando el requisito de la misma se producecada cierto tiempo T o cada cierto número de eventos. Por otra parte, una tarea real se dice aperiódica sisólo está limitado su instante de comienzo o finalización.

Existen cinco características que definen a un sistema de tiempo real:

Determinismo

Reactividad

Control de usuario

Fiabilidad

Operación de fallo suave

Un sistema operativo se dice determinista si es capaz de realizar las operaciones en instantes de tiempo fijoso dentro de intervalos de tiempo predeterminados. Puesto que es imposible saber a priori en un sistemalas circunstancias con las que se puede encontrar, es útil saber el retardo máximo desde la llegada de unainterrupción de un dispositivo de alta prioridad hasta que comienza el servicio. La reactividad por otra parteindica el tiempo que necesita para manejar una interrupción dependiendo mucho de la arquitectura hardwaresobre la que se sustenta el sistema. El determinismo y la reactividad juntos conforman el tiempo de respuestaa eventos externos.

El control del usuario hace referencia a la capacidad que tiene el usuario de interferir en la planificación quehace el sistema operativo sobre las tareas, siendo por norma general mayor en los sitemas de tiempo real,ya que el número de variables que determinan la mejor planificación son mayores que en un sistema no detiempo real. La fiabilidad es una característica muy importante en los sistemas operativos de tiempo realsiendo mucho más importante que en un sistema de no tiempo real, pues la pérdida o degradación de sus

11

prestaciones puede tener consecuencias catastróficas. La operación de fallo suave se refiere a la habilidadque tiene el sistema para minimizar las consecuencias de un fallo, de modo que sea capaz de preservar tantacapacidad y datos como sea posible. Un sistema no de tiempo real, al encontrar un fallo, puede permitirsedetener la ejecución tras valorar cuál ha sido el posible daño. Sin embargo, un sistema de tiempo real nopuede detenerse, por lo que debe estar preparado para continuar su ejecución a pesar del posible deterioro.

Existen cuatro enfoques o tipos de algoritmos para la planificación de tiempo real:

Enfoques estáticos dirigidos por tablas

Enfoques estáticos expulsivos dirigidos por prioridad

Enfoques dinámicos basados en un plan

Enfoques dinámicos de mejor esfuerzo

El primer enfoque es aplicable a tareas que son periódicas en el que el planificador intenta encontrar un planque le permita cumplir todos los requisitos de todas las tareas. La entrada de datos para el análisis son:tiempo periódico de llegada, tiempo de ejecución, plazo periódico de finalización y prioridad relativa de cadatarea. La planificación por plazos es un ejemplo de este tipo de algoritmo.

El segundo tipo realiza también un análisis estático, pero que en vez de obtener una planificación obtieneuna tabla de tareas con su prioridad. en función de esta tabla el planificador expulsa las tareas como en lamayoría de los sistemas multiprogramados que no son de tiempo real. Un ejemplo de este tipo de algoritmoes el algoritmo de tasa monótona.

Con la planificación dinámica basada en un plan se realiza una nueva planificación cada vez que llega unatarea a la cola de ejecución teniendo en cuenta todas las tareas que están en cola, de modo que si puedecorrer la tarea sin que ninguna de las tareas anteriores pierda su plazo, pasa directamente a ejecutarse.

En el enfoque dinámico de mejor esfuerzo, cuando llega una tarea, el sistema le asigna una prioridad basadaen las características de la misma sin realizar ningún análisis de factibilidad. El sistema intenta cumplir todoslos plazos y aborta la ejecución de cualquier proceso cuyo plazo haya fallado. Es fácilmente implementable.Es el tipo más usado en los sistemas operativos de tiempo real disponibles en la actualidad.

4. Tipos de sistemas operativos

Existen muchas clasificaciones para los distintos tipos de sistemas operativos, variando mucho en funcióndel año en que se realizara la clasificación. Hoy en día la frontera entre un sistema operativo para sistemaempotrado o para un dispositivo móvil de mano es muy difusa, así como también lo es cuando lo comparamoscon los sistemas operativos de tiempo real.

Una posible ordenación pudiera ser:

Sistemas operativos para supercomputación[7]

• Suse Linux Server : monolítico

• AIX Unix : microkernel

• Red Hat Linux : monolítico

• UNICOS : monolítico

Sistemas operativos para mainframes/servidores/estaciones de trabajo

• IBM Z/OS

• Solaris

12

Sistemas operativos de propósito general para ordenadores personales

• Unix-Like :

◦ Distribuciones Linux : monolítico� Debian� Ubuntu� Red Hat� Fedora� Gentoo� Suse

◦ Minix : micronúcleo◦ Distribuciones BSD : monolítico

� FreeBSD� OpenBSD

◦ OpenSolaris : monolítico◦ MAC OS X : Híbrido

• Microsoft Windows 9x / XP / Vista : Monolítico / Híbrido / Híbrido

Sistemas operativos de tiempo real/empotrados

• eCos

• Nucleus : microkernel

• VRTX : microkernel

• QNX : microkernel

• VxWorks : microkernel

• Symbian : microkernel

• Snapgear : monolítico

• Palm OS

• Windows Mobile / CE : híbrido / híbrido

• Openmoko : monolítico

• Mobilinux : monolítico

• Android : monolítico

Sistemas operativos web [8, 9]

• WebOS

• eyeOS

Sistemas operativos de red

• Microsoft Windows NT / 2000 : híbrido / híbrido

• Novell Netware : monolítico

• BSD : monolítico

13

5. Symbian OS

Figura 5: Logo Symbian OS. www.symbian.com

Symbian es un sistema operativo creado para telefonía móvil por Symbian Ltd. que desciende de los sistemasoperativos EPOC desarrollados por Psion. Symbian Ltd nació en 1998 como una asociación de las empresasNokia, Siemens, Fujitsu, Arima, Samsung, LG, Mitsubishi Electric, Panasonic, Motorola, Lenovo, Sharp,Benq, Sony Ericsson, Sanyo y Sendo con la intención de aprovechar la convergencia entre los teléfonos móvilesy las PDAs. Su intención primera era diseñar un sistema operativo que funcionara en un espacio pequeñoy además supiera administrar de manera eficiente la energía que por aquel entonces era importante con elsurgimiento de las pantallas a color y aplicaciones multimedia. Actualmente Symbian Ltd. es propiedad deNokia liderando el mercado móvil desde la salida de su versión v7.0, con una cuota actual del 46.6%, seguidopor Apple con un 17.3% con iPhone OS y por Microsoft con un 13.5% gracias a Windows CE y WindowsMobile. Está previsto que se libere el código durante la primera mitad del año 2009.

Symbian OS se ecuentra en la versión 9.5, diseñado para los requerimientos específicos de los móviles deúltima generación 2.5G y 3G. Emplea el kernel EKA2 que corre sobre ARM (y puede ser emulado sobrex86), derivado de EKA1 que ya ofrecía preemptive multitasking y protección de memoria pero no garantíasde tiempo real. EKA2 incluye como diferencias más relevantes la garantía de tiempo real, la capacidad degestionar múltiples 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 deabstracción que se crean convenientes para la aplicación.

Las características más relevantes según Symbian son:

microkernel con capacidad de tiempo real y multithreading

SMP con desconexión de procesadores para ahorro de energía

amplio soporte para periféricos y tipos de memoria internas y externas

sistemas de ficheros NOR, NAND, SD y MMC

capacidad de funcionamiento bajo distintos estándares de red

grandes capacidades en multimedia

• soporte para grabación de vídeo y audio

• soporte para cámaras de gran resolución

potentes gráficos

• soporte para GUIs (OpenGL, Open VG)

amplia suite de aplicaciones de servicio (manejador de contactos, calendario...)

14

Algoritmos criptográficos: DES, 3DES, RC2, Rc4, RC5 y AES

Algoritmo symbian Demand Paging que sólo carga las páginas 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++, VisualBasic, 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 diseñado especialmente para telefoníamóvil por MontaVista Software y presentado en Abril de 2005. Montavista fue fundada en el año 1999 porJames “Jim” Ready, creador de VRTX, el primer sistema operativo considerado de tiempo real que salió en1980. Siguiendo una estrategia basada en el código libre, lo que le ha aportado una vasta comunidad dedesarrolladores, Mobilinux copa el 90% de los móviles con Linux, siendo el sistema operativo empotradocomercial fundamentado en Linux más utilizado.

Según MontaVista las características más importantes de este sistema son [10]:

Duración de la batería más larga: Con el sistema de gestión de batería Montavista Dynamic PowerManagement, que implementa un algoritmo de regulación de la frecuencia de CPU y otras funciones [11], es capaz de aumentar el tiempo de batería hasta cinco veces según benchmarks que ofrece MontaVistacomo referencia.

Conectividad Incorporada: Es capaz de conectar a más tipos de software y dispositivos que cualquierotro Linux. Permite soporte “out-of-the-box” para SDIO, Wi-LAN/Wi-Fi sobre USB, Bluetooth sobreUSB, 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 telefónicaen menos de 10 segundos, tres veces más rápido que dispositivos basados en Symbian o en Microsoft ytres veces y medio más rápido que un iPhone de Apple. Capaz de retornar de modo sleep en menos demedio segundo.

Figura 7: Características mobilinux. www.mvista.com

16

Pequeño tamaño: Puede ser implementado bajo 2 megabytes y, para un móvil típico con funcionalidadbásica, bajo algo menos de 14 megabytes.

Seguridad a nivel NSA: Primer sistema operativo que incluye MontaVista microSELinux, una versiónreducida de SELinux (Security-Enhanced Linux), desarrollado por la NSA (National Security Agency)para proteger la confidencialidad 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 confiere prestaciones de tiemporeal. Montavista Linux preemptible kernel technology: “Preempt_RT”. Version del kernel actual v2.6.21.

Soporte para procesadores multinúcleo: Mobilinux soporta tanto procesadores mononúcleo como mul-tinúcleo además de multiprocesamiento síncrono y asíncrono.

Reducción de costes BOM: Reducir el BOM (bill of materials) supone grandes beneficios económicos.Mobilinux es capaz de correr sobre una amplia cantidad de arquitecturas y simples, a diferencia de otrossistemas operativos, lo que permite al fabricante mayor flexibilidad para la elección de componenteshardware.

Mejor entorno de desarrollo: Está provisto de KGDB (Kernel GNU Debugging) sobre USB, en con-traposición a los clásicos debuggers que corren sobre puertos más grandes que por la miniaturizaciónde los móviles no permitían realizar el depurado de forma nativa sobre el propio dispositivo. AdemásMontavista 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 diseñado por Wind River Systems parasistemas empotrados. Wind River Systems fue fundada en el año 1981 en Berkeley por Jerry Fiddler y DavidWilner. Sus primeros clientes fueron la NFL (Liga Nacional de Fútbol Americano) y Francis Ford Coppola,director de cine para quien desarrollaron un sistema de edición de vídeo. Wind River en la actualidad sededica a crear software y sistemas operativos que son usados en teléfonos móviles, sistemas de frenado enautomoción, routers, cámaras digitales, proyectores, “set-top boxes”, señales de tráfico, los Mars Rovers y más.Algunos de los sucesos más recientes que han definido la trayectoria de la compañía es la alianza que creócon Red Hat en 2004 para crear un sistema operativo basado en Linux para sistemas empotrados que salió almercado en el año 2005 y la cooperación con BMW e Intel desde 2008 para el desarrollo de una plataforma“open-source” para el control de la electrónica dentro de los automóviles. En la actualidad los competidoresmás importantes con los que cuenta Wind River son Green Hillos Software, creadores de algunos RTOScomo VelOSity; QNX, con su sistema operativo homónimo de tiempo real; Mentor Graphics, con el sistemaNucleus; y algunos más como Microsoft, con sus plataformas para dispositivos de mano, y MontaVista conMobilinux.

VxWorks ha sido portado a muchísimas plataformas debido al grán abanico de aplicaciones para el queha sido diseñado, 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 vendesólo el sistema operativo, sino toda una plataforma de desarrollo incluyendo una gran cantidad de serviciosde soporte técnico como la exportación de proyectos a versiones del sistema más recientes. Esta plataformadesde la versión 6.x de VxWorks la denominan simplemente Workbench, a diferencia de la denominaciónTornado que empleaban para versiones anteriores.

Entre los productos que están 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 helicóptero de ataque Apache Longbow

18

Características que definen a VxWorks v6.6 [25]:

Gran escalabilidad del SO por estar diseñado para amplio rango de aplicaciones. Algunos profiles:

• Minimal kernel profile: small-footprint (36KB-100KB) dependiente de la familia del procesadory algún componente que el diseñador pueda incluir. El kernel es totalmente estático, no permiteasignación dinámica de memoria.

• Basic kernel profile: permite asignación dinámica de memoria y ocupa unos 150KB aproximada-mente.

• Basic OS profile: añade al kernel servicios para E/S y soporte para posible coprocesador, 250KB.

Gran determinismo en la planificación de tiempo real mediante expulsión basada en prioridades oround-robin con rápida respuesta a interrupciones.

opción de SMP como add-on, manteniendo las mismas características y prestaciones de RTOS.

Multitasking real con exclusión mutua como protección entre procesos.

Capacidad de elegir el diseñador cómo las tareas se distribuyen entre los distintos procesadores delsistema.

protección de memorias basadas en MMU (memory management unit). Aislamiento entre el kernel ymodo usuario.

Rápida y flexible comunicación entre procesos incluyendo TIPC (Transparent IPC).

compatibilidad hacia atrás con el resto de versiones.

VxSim simulator.

Herramientas de análisis Run-Time: provee de detallados análisis y visualización gráfica de los distintoseventos del sistema, interacción entre tareas, interrupciones, prestaciones de tiempo real, aparición decuellos de botella, análisis de memoria, monitor de datos, variables, localización en memoria...

Aseguran un rápido time-to-market a través de su plataforma mediante herramientas de desarrollo ymanejadores de error.

Soporte para multitud de sistemas de ficheros.

Extensible con protocolos de red como IPv4/IPv6.

19

Referencias

[1] William Stallings. Sistemas operativos: Aspectos internos y principios de diseño. 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 Ca-racterísticas de: Symbian OS v9 vs eCos. http://www.iuma.ulpgc.es/users/nunez/clases-micros-para-com/mpc0607-trabajos/mpc07-Tarajano-Symbian-eCos.zip

[4] Resumen Discusión profesor Tanenbaum vs Linus Torvalds : http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html

[5] Varios artículos Wikipedia : http://wikipedia.org

[6] Wikipedia.Taxonomía 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 for Wide Area Applications :http://www.cs.duke.edu/ari/issg/webos/

[10] MontaVista Mobilinux v5 Datasheet : http://www.mobilinux.com/download/MontaVista-Mobilinux-5-datasheet.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 SistemasOperativos. Informática. ULPGC.

[13] Javier Palmero Esteban. Sistemas operativos multiproceso y multithread :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 3.6 :http://www.windriver.com/products/product-notes/General-Purpose-Platform-ve-Note.pdf

20