Вы находитесь на странице: 1из 5

Porqu Linux no es tiempo real:

Linux fue concebido y construido como un sistema operativo multiusuario de propsito general en el modelo de Unix. Las metas de un sistema multiusuario estn generalmente en conflicto con las metas de una operacin de tiempo real. Los sistemas operativos de propsito general estn dirigidos para maximizar el promedio de rendimiento (average throughput), mientras que los sistemas de tiempo real intentan minimizarlo. Varias razones por las cuales Linux estndar no es factible para use de tiempo real son: Coarse-grained Synchronization (Sincronizacin de grano grueso): Esta es una manera sofisticada de decir que las llamadas de kernel del sistema son no reemplazables. Una vez que el proceso entre al kernel, no puede ser reemplazado hasta que est listo para salir del kernel. Si un evento ocurre mientras el kernel se est ejecutando, el proceso de espera para ese evento no puede ser temporizado hasta que el proceso actual en ejecucin salga del kernel. Paging: El proceso de intercambio de pginas dentro y fuera de una memoria virtual es ilimitado. No se tiene manera de conocer qu tan largo tomar liberar la pgina del disco duro y simplemente no puede tomar lugar un lmite superior de tiempo de retraso. Fairness in Scheduling: Reflejando su herencia de Unix como un sistema de tiempo compartido multiusuario, el convencional agendador de Linux hace lo mejor para ser justo en todos los procesos. Por lo tanto, el agendador puede dar al procesador baja prioridad, incluso cuando un proceso de alta prioridad est listo para correr. Request Reordering: Solicitudes de reordenamientos de mltiples procesos para hacer ms eficiente el uso de hardware. Por ejemplo, lecturas del disco duro de un proceso de baja prioridad puede ser precedida por una solicitud de lectura de un proceso de alta prioridad, para poder minimizar el movimiento de la cabeza del disco, o para mejorar recuperacin de error. Batching (procesamiento por lotes): Linux puede manejar operaciones por lotes para hacer ms eficiente es uso de recursos. Por ejemplo, en vez de liberar una pgina por vez cuando la memoria se vuelve estrecha, Linux correr a travs de la lista de pginas, limpiando tanto como pueda, retrasando la ejecucin de todos los procesos. Para aproximar el rendimiento de Linux a un sistema de tiempo real, se hace una tcnica: correr Linux como la tarea de ms baja prioridad (la nica tarea si se desea) bajo un kernel pequeo de tiempo real. Las funciones de tiempo real son manipuladas por tareas de alta prioridad corriendo bajo este kernel. Las cosas que no son de tiempo real, como los grficos, administracin de archivos y redes, el cal Linux ya lo hace bien, son manipuladas por Linux. Esta aproximacin se le llama: Interrupt Abstraction porque el kernel de tiempo real se hace cargo del manejo de interrupciones de Linux. El kernel de Linux piensa que est deshabilitando interrupciones, pero realmente no lo est. Las tareas de tiempo real corren en el espacio de kernel. Son buenas y malas noticias. Las buenas noticisas son que los tiempos de respuesta en el espacio de kernel son muy cortos. Las respuestas de interrupciones y tiempos de cambio de tareas bajo 10 microsegundos es la norma. Las malas noticias son que no hay proteccin dentro del espacio del kernel y una tarea de tiempo real puede volcar el sistema completo. Las tareas de tiempo son en efecto extensiones del kernel. Hay dos implementaciones principales de la aproximacin del Interrupt Abstraction : RTLinux: Este es la implementacin abstracta de interrupciones original. RTAI: Este es una mejora del RTLinux. Es un proyecto muy activo de Cdigo Abierto con muchos contribuidores.

RTAI (Real Time Application Interface)


Usa la abstraccin de interrupciones para agregar caractersticas de tiempo real determinsticas al kernel de Linux. Usa la siguiente arquitectura:

El kernel de tiempo real intercepta interrupciones de hardware antes de pasar al kernel de Linux. Linux ya no tiene control sobre habilitar y deshabilitar interrupciones. As que cuando Linux dice deshabilitar interrupciones, el kernel RT simplemente limpia una bandera de habilitacin de interrupcin de software, pero deja las interrupciones habilitadas. Cuando una interrupcin de hardware ocurre, el kernel RT primero determina a quin es dirigido: *Tarea RT programa una tarea *Linux Checa la bandera de interrupcin de software. Si est habilitado, invoca el controlador apropiado de interrupciones de Linux. Si est deshabilitado, nota la interrupcin ocurrida y lo entrega despus cuando Linux rehabilita interrupciones. El kernel de Linux es tratado como la prioridad ms baja, o inactivo, tarea bajo el kernel RT y slo funciona cuando no hay tareas de tiempo real listas para funcionar. Habr veces que el kernel RT tendr qu deshabilitar las interrupciones de hardware para administrar sus propias secciones crticas, pero estas son de duracin mucho ms cortas que las secciones crticas en Linux. Las tareas de tiempo real usualmente tendrs alguna necesidad de comunicarse con procesos usuario-espacio para cosas como acceso a archivos, comunicacin en red o interfaces de usuario. RTAI provee memorias FIFO y comparte implementaciones de memoria que proveen comunicacin con procesos de espacio de usuarios.

XENOMAI
Xenomai es un subsistema de tiempo real que puede ser perfectamente integrado con el kernel de Linux para garantizar tiempos de respuesta predecibles para aplicaciones. Es basado en un enfoque de kernel de doble ncleo, con un pequeo co-kernel funcionando de lado a lado con Linux en el mismo hardware. Xenomai soporta el funcionamiento de programas de tiempo real en espacio de usuarios con la proteccin de la unidad de administracin de memoria (MMU memory management unit) cuando est disponible por el host kernel. Las tareas de tiempo real son controladas exclusivamente por el co-kernel durante el curso de sus operaciones de tiempo crticas, por lo que muy bajas latencias son alcanzadas por su cdigo de funcionamiento dentro del kernel estndar de Linux. Fue creado en 2001 para facilitar la migracin de aplicaciones industriales a ambiente basado en GNU/Linux. Para permitir portar los RTOS APISs tradicionales a las estructuras de tiempo real basados en Linux, el ncleo Xenomai provee bloques genricos de construccin para implementar APIs de tiempo real, tambin conocidas como skins.

A fin de mantener una latencia predecible para tareas de tiempo real, debemos asegurarnos que el kernel regular de Linux nunca aplaza interrupciones externas. Las interrupciones deben ser bloqueadas o enmascarados por tiempos mnimos en el nivel de hardware y ser entregados tan rpido como sea posible a Xenomai, a pesar de si el kernel de Linux los aceptara. Por lo tanto, necesitamos de una pieza adicional de software entre el hardware, Linux, y Xenomai, que acte como un controlador de interrupciones programable. Esto permite a Linux y Xenomail mantener mscaras separadas para interrupciones y polticas de control de interrupciones. La capa de software Xenomai es llamada interrupt pipeline o Ipipe.

La diferencia fundamental entre Xenomai y otros sistemas de kernel duales disponibles para Linux (como RTAI o RTLinux) es un algto nivel de integracin con el ambiente nativo Linux. Caractersticas particulares: *La estructura bsica es similar a RTAI. *Xenomai provee una mejor integracin con Linux. *Nuevas caractersticas: hilos, skins, UVMs. *Xenomai es una estructura de desarrollo de tiempo real en cooperacin con el kernel de Linux, para proveer un soporte de hard real time a las aplicaciones de espacio de usuario, perfectamente integrado con el entorno Linux. *El projecto Xenomail fue combinado con el proyecto RTAI para producir una platadorma de software libre de tiempo real para GNU/Linux llamado RTAI/fusin. Luego se volvi independiente de RTAI como Xenomai Project.

Several Basic Definitions: * User space is that portion of system memory in which user processes run. This contrasts with kernel space, which is that portion of memory in which the kernel executes and provides its services. * A process is an executing (i.e., running) instance of a program. User processes are instances of all programs other than the kernel (i.e., utility and application programs). When a program is to be run, it is copied from storage into user space so that it can be accessed at high speed by the CPU (central processing unit). The kernel is a program that constitutes the central core of a computer operating system. It is not a process, but rather a controller of processes, and it has complete control over everything that occurs on the system. This includes managing individual user processes within user space and preventing them from interfering with each other.

Referencias: Building Embedded LINUX SYSTEMS. Karim Yaghmour et al. 2nd Edition. OREILLY. Linux for Embedded and Real-time Applications. Doug Abbott. 2nd. Newnes. http://www.linfo.org/user_space.html http://en.cyclopaedia.net/wiki/Xenomai

Вам также может понравиться