ISSN: 1579-0223
 
Sentience Research
REDcientífica
· Misión de REDcientífica
· Contacto
· Condiciones de publicación
· Consultar todos los documentos
· Consultar todos los autores
· Acceso usuarios registrados
· English version


PORTADAS
40  41  42  43  44  45  46  47  48  49  50  51  52  53 

BOLETINES
40  41  42  43  44  45  46  47  48  49  50  51  52  53 

TEMAS



ENLACES

Diseño de alto nivel en el núcleo de un sistema operativo
Difuminando las barreras entre núcleo y espacio de usuario

Arturo Ariza Mayo
Ingeniero de Sistemas
 
ImprimirEnviar

En la ejecución de código en un sistema operativo moderno se distinguen niveles de privilegios diferentes. La ejecución en modo usuario es la que tiene el nivel más bajo de prioridad, por contra, el modo de ejecución del kernel, es el nivel más prioritario. La gestión de recursos y el acceso directo al hardware son tareas que deben realizarse en modo kernel, pero la ejecución es restringida y muy limitada. El modo usuario es más flexible, pero carece de las prioridades necesarias para realizar ciertas tareas. Ambos modos de ejecución tienen marcadas sus limitaciones, por lo que sería muy interesante lograr una comunicación entre rutinas y programas ejecutando en los distintos modos.


Por lo general la comunicación entre los procesos en espacio de usuario y el kernel de un SO, se realiza mediante llamadas al sistema o interrupciones hardware, de manera que en un cierto momento en la ejecución de un proceso, se cambia el nivel de ejecución y pasa a tomar control el kernel, realizando las operaciones que correspondan a la llamada o interrupción en concreto. Pudiendo el kernel comunicar datos al proceso gracias a que el kernel hereda el entorno de ejecución del proceso, y por tanto tiene acceso a su espacio de memoria.

Hay otras opciones, como el "proc file system", que aunque es un metodo muy versatil, para aplicaciones complejas se queda corto. También hay SSOO que no hacen una distinción tan fuerte entre espacio de usuario y de kernel, pero pueden acarrear problemas de seguridad y sobre todo una perdida de abstracción (y por lo tanto de facilidad) en el desarrollo de aplicaciones.

De cualquier manera, todas estas opciones mencionadas adolecen de la limitación de ser locales a la máquina, limitación que no existe en el caso de un ORB, componente principal de una arquitectura distribuida tan potente como lo es OMA.

Aunque OMA considera la posibilidad de implementar el ORB (CORBA) en el kernel, ninguna empresa ni organización lo había hecho todavía. Ya hay una implementación GNU realizada en la universidad de Illinois, que porta el código de ORBit (ORB escrito enteramente en C para el proyecto GNOME) al kernel de Linux. Esta implementación se llama KORBit y la podemos encontrar en korbit.sourceforge.net

El tener un componente, que abstraiga las comunicaciones de la manera en que lo hace un ORB, y disponer de sus funcionalidades en aplicaciones diseñadas para ejecutar en el kernel, ofrece infinidad de posibilidades. Como por ejemplo distribuir la gestión de memoria del sistema operativo, poder hacer una monitorización de carga de un sistema distribuido de una manera mucho más fina, diseñar dispositivos de entrada/salida paralela sobre un sistema distribuido, etc.

En definitiva, lo que nos puede aportar esta facilidad de comunicación entre el kernel y los procesos es la posibilidad de desarrollar aplicaciones en el kernel, que hagan uso de toda la potencia de aplicaciones en espacio de usuario (pudiendo estar en otras máquinas) y que además son cómodas de desarrollar y depurar.



Referencias


  • korbit.sourceforge.net
  • http://www.datsi.fi.upm.es/~jmpena/kORBit_SP
  • http://www.csn.ul.ie/~mark/home/fyp


© Copyright 2002 Arturo Ariza Mayo.
© Copyright 2002 REDcientífica.
Todos los derechos reservados.


[Evaluar este artículo]








              Misión de REDcientífica              Condiciones de publicación              E-mail de contacto



  Bookmark and Share