Manejo de los Procesos en los Sistemas Operativos


Un proceso es básicamente un programa en ejecución. Consta del  programa ejecutable, sus datos y pila, contador y otros registros, además de toda la información necesaria para ejecutar el programa.

En forma periódica, el sistema operativo decide detener la ejecución de un proceso y comenzar la ejecución de otro. Cuando un proceso se detiene en forma temporal, éste debe volverse a inicializar en el mismo estado que se encontraba al detenerse. Esto quiere decir, que toda la información relativa al proceso debe almacenarse de forma explícita en alguna parte de la suspensión.

Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por:
  • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
  • Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.
  • Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos. 
  • Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos son independientes y no comparten memoria (es decir, información) con el proceso que los ha creado.
En muchos sistemas operativos, toda la información relativa a un proceso, distinta del contenido de su propio espacio de  dirección, se almacena en una tabla del sistema operativo llamada Tabla de Procesos, la cual consta de un arreglo (o lista ligada) de estructuras, una por cada proceso existente en ese momento
(Procesos1)
El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo.

En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.


Modelos de los Estados
El modelo de estados más simple es el de dos estados. En este modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecución. En algún momento el proceso que se está ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución.

De esta explicación se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria. Además los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar.

Modelos en Espera:
Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.

  • Se usa una variable llamada semáforo para intercambiar señales. 
  • Si un proceso esta esperando una señal, se suspende (WAIT) hasta que la señal se envíe (SIGNAL).
  • Se mantiene una cola de procesos en ESPERA en el semáforo.
La forma de elegir los procesos de la cola en ESPERA es mediante una política FIFO.
La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.

Procesos: 
  • Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos.
  • El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación.
  • El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.
  • Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.
  • La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.

Llamadas al Sistema:
Los programas de Usuario se comunican con el sistema operativo y le solicitan el servicio mediante las llamadas al sistema. A cada una de estas llamadas le corresponde un procedimiento de la biblioteca que pueden llamar los programas del usuario. 

Este procedimiento pone los parámetros  de la llamada al sistema en un lugar específico como pueden ser los registros de la máquina, para después ejecutar una función llamada TRAP para iniciar el sistema operativo. Cuando el sistema operativo recupera el control después del TRAP, examina los parámetros para ver si son válidos, en ese caso, desarrolla el trabajo solicitado. Al terminar, el sistema operativo coloca un código de estado en un registro, para indicar si tuvo éxito o fracaso.

El Shell:
El sistema Operativo es el código que lleva a cabo las llamadas al sistema. Los editores, compiladores, ensambladores, ligadores e intérpretes de comandos no son parte del sistema operativo, aunque sean importantes y útiles.

El Shell sin ser parte del sistema operativo, hace uso extenso de  muchas de las características del sistema. También es la interfaz entre un usuario sentado frente a un terminal y el sistema operativo.
Cuando un usuario inicia una sesión, el Shell se inicializa. El Shell reconoce a la terminal como su entrada y salida estándar.

Shell Caparazón: 
El Shell (caparazón) de un sistema operativo es la interfaz que media entre el usuario y el sistema operativo. Básicamente, su función es la de interpretar, ejecutar y devolver una respuesta a lo que el usuario escribe por línea de comandos.

El Shell, en definitiva, no es más que un ejecutable que interpretar los comandos transmitirlos. 
línea de comandos no es más que una cadena de caracteres que representan a un comando y que luego será interpretada por el Shell. El comando suele ser un archivo ejecutable del sistema o del Shell junto con otros argumentos opcionales (parámetros).

El Kernel:
El kernel ó núcleo se puede definir como el corazón de un sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos. 
Las funciones más importantes del mismo, aunque no las únicas, son: 
  • Administración de la memoria para todos los programas y procesos en ejecución.
  • Administración del tiempo de procesador que los programas y procesos en ejecución utilizan.
  • Es el encargado de que podamos acceder a los periféricos/elementos de nuestro ordenador de una manera cómoda.
Copyright @ 2013 Sistemas Operativos. Designed by Templateism | MyBloggerLab