Sistemas operativos – Llamadas al sistema

Los sistemas operativos tienen dos funciones principales: Proveer de abstracciones a los programas de usuario mediante la máquina virtual multinivel y administrar los recursos de la computadora. La interacción entre los programas de usuario y el sistema operativo se relaciona con la primera función a través de llamadas al sistema. Las llamadas al sistema disponibles entre los programas de usuario y el sistema operativo varían de un sistema operativo a otro. En el caso de UNIX, programado en C, encontramos muchas de esas llamadas al sistema en la librería estándar de C llamada glibc. Esta librería nos proporciona llamadas directamente podemos usar desde un programa escrito en C. Muchas de las llamadas al sistema son complejas de utilizar incluso por un programador, por lo que glibc también hace abstracciones a nivel superior de las propias llamadas al sistema incluso de conjuntos de ellas para podamos utilizarlas al programar y así realizar una determinada acción de manera relativamente sencilla. Es el sistema operativo el que en última instancia lleva a cabo las llamadas al sistema.

Las llamadas al sistema son necesarias ya que un usuario no puede acceder o no tiene privilegios directos sobre los recursos que gestiona el sistema operativo y se pueden utilizar para solicitar al núcleo del sistema el uso de los mismos. Lo que ocurre cuando se invoca a una llamada del sistema desde un proceso en ejecución o desde una rutina de interrupción de E/S es lo siguiente:

  1. El programador o usuario realiza la llamada al sistema de forma normal. La llamada junto con los parámetros asociados a la misma se cargarían en la pila.
  2. La llamada al sistema invocada ejecuta una instrucción de interrupción especial del sistema operativo que se llama trap, implementada a nivel de lenguaje ensamblador dentro de la propia llamada, y que conlleva un cambio de modo. Al ejecutarse la instrucción trap se carga un programa que pasa el sistema operativo de modo usuario a modo núcleo y se busca el lugar del núcleo donde está cargada la rutina a ejecutar (normalmente será un conjunto de instrucciones de máquina cargadas en memoria principal que el procesador tiene que ejecutar y que al usuario se le prohíbe utilizar directamente por seguridad. La ejecución de una instrucción trap lleva consigo la necesidad de salvar el contexto del proceso que realizó la llamada, pero esto no conlleva un salvado y cambio de contexto completo como ocurre con las interrupciones. Un cambio de modo puede ocurrir sin que se cambie el estado del proceso actualmente en estado “ejecutando”. Si el proceso que está en ejecución se va a mover a cualquier otro estado (listo, bloqueado, etc), el sistema operativo debe hacer cambios sustanciales en su entorno y se lleva a cabo un cambio de contexto completo, al igual que ocurre con las interrupciones.
  3. Supongamos que no es necesario cambiar el estado del proceso actual. El programa cargado a partir de la instrucción trap, tras identificar que existe una rutina para la llamada realizada y que los parámetros son correctos, procede a ejecutarla.
  4. Posteriormente el programa trap solicita un código de estado almacenado en un registro, este registro señala si la llamada tuvo éxito o no y ejecuta una instrucción de tipo RETURN FROM TRAP (a nivel de núcleo) para regresar el control a la rutina de la biblioteca (modo usuario), devolviendo un determinado resultado en el caso de que se tenga que devolver algo, y el éxito o fracaso de la llamada al sistema.
  5. Cuando finalizan esas acciones, la rutina de biblioteca a nivel de usuario descarga la pila y comprueba el resultado de la ejecución de la petición al sistema, se lo devuelve al usuario y se continua por la siguiente línea de código del programa.

No debemos confundir una interrupción de E/S con una interrupción trap. La interrupción trap ocurre siempre que se realiza una llamada al sistema, es decir, cuando necesita ejecutar una rutina propia del sistema operativo. La ejecución de trap puede dar lugar a continuar con el mismo proceso o que se cambie a otro diferente. Cuando ocurre una interrupción trap en una llamada al sistema, el procesador se pone en modo núcleo y el control se pasa al sistema operativo. Cuando el sistema operativo está manejando en un momento determinado n imágenes de procesos, cada imagen no sólo incluye el programa, datos, pila y BCP, sino que además incluye o hace referencia a áreas de programa, datos y pila para los programas del núcleo. Se usa una pila de núcleo separada de los procesos de usuario para manejar llamadas/retornos cuando un proceso está en modo núcleo (trap). El código del sistema operativo y sus datos están en el espacio de direcciones compartidas y se comparten entre todos los procesos, es decir, cualquier proceso de usuario puede hacer referencia o llamar a rutinas en modo núcleo.

Anuncios
Publicado en Sistemas operativos, Varios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Sobre mi…

Soy Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Administración de Sistemas Informáticos en Red. Actualmente estudiando el Grado de Ingeniería Informática en la Universidad de Córdoba (España).

Enamorado de la ciencia en general y de la computación en particular.

Música: Heavy, Rock, Celta, New Age, Electrónica, etc...
Libros:Isaac Asimov, Richard Dawkins, Stephen Hawking, Carl Sagan...

Estoy interesado en la programación de videojuegos. Políticamente de izquierdas, escéptico y ateo. En definitiva, mala gente.

Sígueme en Twitter

Introduce tu dirección de correo electrónico para seguir este Blog y recibir las notificaciones de las nuevas publicaciones en tu buzón de correo electrónico.

Únete a otros 24 seguidores

Usa Linux Mint
The Bit Developer Box
A %d blogueros les gusta esto: