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.



10 comentarios:

  1. Educarse en el área del software y sus procesos de ejecución es lo que brinda este blog, definiendo cada termino que es necesario de conocer. (y)

    saludos,

    ResponderEliminar
  2. Muy interesante su información en el blog, como recomendación seria bueno incluir algún video que apoye toda esa información, saludos compañero.

    ResponderEliminar
  3. Me parece muy bien el desarrollo del contenido de este blog para la materia de Sistemas Operativos, en el que se abordan conceptos importantes y bien explicados.
    Felicitaciones

    ResponderEliminar
  4. La verdad no se de sistemas operativos pero el apoyo visual de las imagenes me ayudo a entender de que trataba su post

    ResponderEliminar
  5. Muy interesante su blog para la materia de sistemas operativos me gusta la parte en donde explica la transición de los procesos.
    Saludos!

    ResponderEliminar
  6. Interesante su blog, estoy segura que le será de mucha utilidad a sus alumnos.
    Felicidades..

    ResponderEliminar
  7. Excelente informacion de los sitemas operativos, es parte principal de una computadora ya que sin ningun sistema operativo la computadora no encenderia, muy buena información.

    Saludos cordiales

    ResponderEliminar
  8. Excelente información ing ya que es muy importante saber sobre los sistemas operativos y sus procesos.

    ResponderEliminar
  9. Este blog nos ayuda al conocimiento más a fondo de como funcionan los programas en el background de la PC. Muy buena información, explicada en forma sencilla y fácil de comprender.
    Felicidades compañero.

    ResponderEliminar
  10. Me parece bastante interesante la temática, así como el diseño del blog, llamativo.
    Saludos Ing.

    ResponderEliminar

Gestión de Memoria Principal