lunes, 28 de agosto de 2017

Gestión de Recursos de Un Sistema Operativo

1. Procesos y flujos

Un proceso es un concepto manejado por el sistema operativo y que referencia un programa en ejecución.

A los procesos, dependiendo especialmente del sistema operativo utilizado, se les denomina flujos de control, tareas, threads o hilos, según  el contexto.

Cuando se ejecuta más de un proceso de forma concurrente  en un sistema, todos necesitan que el propio  sistema les suministre una serie de recursos.  Para ello, el sistema operativo, gracias a la UCP (Unidad Central de Proceso), se encarga de asignar estos recursos en un orden  adecuado y atendiendo a unas prioridades. También realiza funciones de sincronización de  todos  los  procesos, para que  se  ejecuten  en  el  orden  adecuado y según  la prioridad decidida.

Cada vez que un programa se convierte en proceso, es decir,  cada vez que se ejecuta un programa, además de  ubicar  en memoria las instrucciones  que  lo componen y sus datos asociados, a dicho proceso se le asocia una estructura de datos.

Esta estructura de datos, que es única para cada proceso, identifica el proceso respecto de los demás y sirve para controlar su correcta ejecución. Es lo que se llama el bloque de control del proceso o BCP, y contendrá para cada proceso la siguiente  informacion: estado actual del proceso, identificador del proceso, prioridad del proceso, ubicación en memoria y recursos utilizados.

2. Hebras y estados de los procesos

Una  hebra es un punto  de  ejecucion  de  un proceso. Un proceso tendrá siempre  una hebra, en la que corre el propio  programa, pero  puede tener más hebras. Las hebras representan un método software para mejorar el rendimiento  y eficacia de los sistemas operativos. Las hebras de  un mismo proceso compartirán recursos,  como memoria, archivos, recursos hardware, etc.

Un proceso clásico será aquel que  solo posea  una hebra.  Pongamos un ejemplo. Si ejecutamos el procesador de textos Word, con un solo documento  abierto, el programa Word  convertido  en proceso estará ejecutándose en un único espacio de memoria, tendrá acceso a determinados archivos (galleras de imágenes, corrector  ortográfico, etc.), tendrá acceso al hardware (impresora, disquetera), etc. En definitiva, este proceso, de momento,  solamente tiene una hebra.

Si en esta situación, sin cerrar Word, abrimos un nuevo documento, Word  no se vuelve a cargar como proceso. Simplemente el programa, convertido  en proceso, tendrá a su disposición dos  hebras o hilos diferentes, de  tal forma que  el proceso sigue  siendo  el mismo (el original).

Word  se está ejecutando una sola vez y el resto de documentos  de texto que abramos en esta misma sesión  de  trabajo no serán procesos propiamente dichos.  Serán hilos o hebras del proceso principal, que es el propio  procesador de textos.

Antes de hablar de prioridades, y teniendo  muy en cuenta lo comentado anteriormente, vamos a ver los diferentes estados en los que pueden estar los procesos.

Hoy en  día  existen  gran cantidad  de  programas diseñados en  multihilo o multihebra. De esta  forma,  si un programa puede realizar  varias cosas,  como  analizar  el  registro del equipo, desfragmentar el disco  duro y realizar copias de seguridad, todas ellas se podrán ejecutar a la vez.  En programas convencionales, solamente se podría ejecutar una tras otra, pero  no todas a la vez.


figura 1

Básicamente los estados posibles de un proceso, que podemos ver en la Figura 1, son
los siguientes:

En ejecución. pone  y tiene concedido el tiempo de uso de la UCP en un instante concreto.

Preparado, en espera o activo. Un proceso está preparado para ser  ejecutado; es decir, está esperando turno para poder  utilizar su intervalo de  tiempo  y poner  en funcionamiento sus instrucciones  accediendo a los recursos del sistema.

Bloqueado. El proceso está retenido;  es decir,  está bloqueado debido a causas múltiples. Una de estas causas puede ser que  dos procesos utilicen el mismo fichero de datos. Otra puede ser que  dos  procesos necesiten  utilizar la misma unidad de  CD- ROM para cargar determinados datos, El procesador está ejecutando instrucciones  del programa que En general,  todos  los  procesos dentro  de  cualquier  sistema  operativo  tienen  unas características que  los identifican. En primer  lugar, indicaremos que  cada programa en ejecución, es decir, cada proceso, tiene un identificador que lo discrimina de los demás. Cada proceso tiene un número asignado por el sistema operativo que sirve precisamente para identificar el proceso, lanzarlo a ejecución, detenerlo, cancelarlo, reanudarlo, etc. Este identificador de proceso se nombra con la abreviatura PID.

También veremos que en cada sistema operativo, los procesos los lanzan normalmente otros procesos. Es decir, que cada proceso que se lanza a ejecución  depende, en la mayoría de los casos,  de otro proceso denominado proceso padre. Así, al nuevo proceso lanzado se le denomina proceso hijo.

3. Transición de los procesos.

Una vez que un programa se ha lanzado y se ha convertido  en proceso, puede atravesar varias fases o estados hasta que finaliza o termina.

Cuando un proceso se lanza, nunca  se ejecuta directamente, sino que  se coloca en la cola de procesos en  un estado denominado preparado. Cuando la UCP le asigna su tiempo,  el proceso pasa de preparado a ejecución. Estos dos estados se alternarán en caso  de que se este ejecutando más de un proceso en el sistema.

Los cambios  de  estado en los que  se puede encontrar un proceso se denominan transiciones. En la Figura 2  se recogen las transiciones o cambios  de estado que pueden experimentar los procesos.

Transición A. Ocurre  cuando el programa que  está en ejecución  necesita algún elemento, señal, dato, etc., para continuar ejecutándose.

Transición B. Ocurre  cuando un programa o proceso ha utilizado el tiempo asignado por la UCP (procesador) para su ejecución  y tiene que dejar paso al siguiente proceso.

Transición C. Ocurre  cuando el proceso que está preparado pasa al proceso de ejecución,  es decir,  cuando al proceso le llega una nueva disposición  de  tiempo  de  la UCP para poder  ejecutarse.

Transición D. Ocurre  cuando el proceso pasa de estar bloqueado a estar preparado, es decir, cuando el proceso recibe una orden o señal que estaba esperando para pasar al estado de preparado y, posteriormente, tras la transición, a estado de ejecución.

En un sistema  multiproceso  o multihebra,  cuando un proceso o hilo  pasa de  un esta-
do a otro (por ejemplo, de  espera a ejecución),  lo que  se producirá es un cambio de contexto.

El cambio  de contexto puede ser parcial si se realiza entre hilos del mismo proceso. En caso  de que el cambio  de contexto sea entre hilos de diferentes procesos, se producirá un  cambio de  contexto completo, ya que  el cambio  afectará a memoria, hardware, ficheros comunes,  etc.

Veamos en la Figura 3  un ejemplo de cambio  de contexto entre dos procesos:
        
 figura 3                                                            figura 4 

En la Figura 4  podemos apreciar de  que forma se ejecutan tres procesos (o hilos en sistemas operativos multihilo o multihebra), pasando de estar activos a estar en espera, según se asignen tiempos de ejecución  de UCP a unos u otros.

figura 4


Los  diferentes  estados  tienen  una relación  directa  con lo  que  vamos a  denominar

prioridades, que  son aquellas  que  el  administrador  del  sistema,  o el  propio  sistema,
asignan a cada proceso. De ello dependerá que un proceso se ejecute  en más o me- nos tiempo.

Se pueden establecer prioridades en función de la necesidad de ejecución de algunos programas. Los programas que más se ejecutan, es decir,  los más necesarios, tendrán prioridad de ejecuci6n  sobre  aquellos que se ejecutan muy de cuando en cuando.

Es ahora cuando hemos  de  hablar de  la planificación. Con  esta técnica conseguimos indicar  al ordenador los procesos que deben ejecutarse y los estados que estos deben adoptar. Gracias a los algoritmos de planificación podemos decidir  que proceso ha de  ejecutarse en  cada momento  y por  que. Algunas características de  estos  algoritmos son  la imparcialidad, la equidad, la eficiencia, el tiempo  de  respuesta y el rendimiento.

Para ejecutar un proceso, introducimos  en  el indicador de  comandos (shell en  UNIX, command.com en Windows)  el nombre  de  un fichero ejecutable o hacemos doble clic con el ratón sobre  el icono que representa un programa ejecutable (por ejemplo: Explorer en Windows). De esta forma, el sistema operativo prepara el programa a través del cargador para lanzarlo a ejecución.



Gestión de Memoria Principal