Sistemas operativos – Procesos y recursos

El sistema operativo controla los eventos dentro del computador, planifica y activa los procesos para su ejecución por el procesador, reserva recursos para los mismos y responde a las solicitudes de servicios básicos de los procesos de usuario.

esquemap

Read more ›

Publicado en Sistemas operativos, Varios

Sistemas operativos – Estados de los procesos

Para que un programa se ejecute, se debe crear un proceso para dicho programa. Desde el punto de vista del procesador, él ejecuta instrucciones de su repertorio de instrucciones en una secuencia dictada por el cambio de los valores del registro contador de programa. A lo largo del tiempo, el contador de programa puede apuntar al código de diferentes programas que son parte de diferentes procesos. Desde el punto de vista de un programa individual, su ejecución implica una secuencia de instrucciones dentro de dicho programa.

Se puede caracterizar el comportamiento de un determinado proceso, listando la secuencia de instrucciones que se ejecutan para dicho proceso. Esta lista se llama traza de proceso. Se puede caracterizar el comportamiento de un procesador mostrando como las trazas de varios procesos se entrelazan.

Por ejemplo, imaginemos el despliegue en memoria de tres procesos. Para simplificar la exposición, se asume que dichos procesos no usan memoria virtual; por tanto, los tres procesos están representados por programas que residen en memoria principal. De manera adicional, existe un pequeño programa activador (dispatcher) que intercambia el procesador de un proceso a otro.

Read more ›

Publicado en Sistemas operativos, Varios

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.

Publicado en Sistemas operativos, Varios

Sistemas operativos – Modo usuario y modo núcleo

Es necesario distinguir entre los modos de ejecución del procesador, normalmente asociados con el sistema operativo (modo núcleo) y con los programas de usuario (modo usuario).

Imaginemos que un usuario pudiera hacer cambios en tiempo real de las instrucciones que rigen el funcionamiento del sistema operativo y que interactúan con el hardware, que pudiera cambiar el manejador de interrupciones de reloj, la forma en la que se produce la comunicación entre un dispositivo E/S, es decir, que pudiera cambiar la codificación del sistema operativo o acceder a ella para controlarla a su manera. Si esto sucediera, se podría hacer un uso indebido del sistema operativo y del hardware, produciendo comportamientos inesperados y pudiendo corromper su funcionamiento. Por eso, es necesario que determinadas instrucciones del sistema operativo sólo puedan ser ejecutadas en modos privilegiados. Éstas serían lectura y modificación de los registros de control, instrucciones primitivas de E/S, instrucciones relacionadas con la memoria, instrucciones sobre señales, planificación, interrupciones, controladores de dispositivos, etc.

Read more ›

Publicado en Sistemas operativos, Varios

Sistemas operativos – Procesos y bloque de control de procesos

Un proceso no es más que un programa en ejecución. Su estructura puede variar según el sistema operativo, pero, en general podemos decir que se trata de código ejecutable, datos y todo lo necesario para identificarlo dentro del sistema. Se puede considerar que un proceso está formado por los siguientes componentes:

Read more ›

Publicado en Sistemas operativos, Varios
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 suscriptores
Usa Linux Mint
The Bit Developer Box