lunes, 27 de octubre de 2008

Unidad 2 Administración de procesos y del procesador

Bienvenidos.
Este blog ha sido creado con la funcion de recopilar informacion sobre la segunda unidad de la asignatura sistemas operativos de la carrera ing. en sistemas de computo perteneciente al instituto tecnologico de villahermosa.
A lo largo de esta unidad abarcaremos conceptos importantes en todo sistemas, hablando asi de sus principales actores que son los procesos y el cpu; como se comunican entre ellos, que son y cuales problemas pueden ocurrir es el tema abordar, pero por supuesto para evitar estos problemas existen ya varias tecnicas administrativas y/o algoritmos que nos ayudaran a prevenir, detectar y recuperarnos de cualquier falla.
Dentro de las tareas administrativas veremos la planeación, pero claro orientada al cpu y a los procesos, asi como tecnicas que nos ayudan a evitar bloqueos, por ultimo involucramos al planificador mostrando una breve descripcion de los algoritmos mas usuales.

2.1 Concepto de Proceso

Según la investigación de Tanenbaum y Woodhull (1997) puedo deducir que un proceso no es más que un conjunto de threads que ejecutan el mismo código, junto con las zonas de memoria asociadas a ellos y los ficheros que tienen abiertos.

Tanenbaum y Woodhull (1997) mencionan que un programa consta, al menos, de un proceso, y un proceso, al menos, de un thread. Cuando un programa tiene varios procesos, lo normal es que cada uno ejecute un código distinto, los cuales se encuentran en ficheros ejecutables separados. Dos procesos solo pueden compartir una zona de memoria si esta es definida expresamente como tal. Así mismo, es en este caso cuando los sistemas de sincronización a la hora de compartir memoria (de los que hablaremos más adelante) se vuelven especialmente necesarios e importantes.

2.2 Estados y Transiciones de Procesos

En 1997 Tanenbaum y Woodhull describen los estados de un proceso como un ciclo de vida. Durante su vida, un proceso puede pasar por una serie de estados discretos, algunos de ellos son:
  • En ejecución: El proceso ocupa la CPU actualmente, es decir, se está ejecutando.
  • Listo o preparado: El proceso dispone de todos los recursos para su ejecución, sólo le falta la CPU.
  • Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose, además de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún evento que le permita poder proseguir su ejecución.

Según Tanenbaum y Woodhull (1997) hay otros estados de los procesos, pero en la presente exposición se tratarán estos tres. Por sencillez, se considera un sistema con una sola CPU, aunque no es difícil la extensión a múltiples procesadores. Solamente puede haber un proceso en ejecución a la vez, pero pueden existir varios listos y varios pueden estar bloqueados. Así pues, se forman una lista de procesos listos y otra de procesos bloqueados. La lista de procesos listos se ordena por prioridad, de manera que el siguiente proceso que reciba la CPU será el primero de la lista. La lista de procesos bloqueados normalmente no está ordenada; los procesos no se desbloquean (es decir, no pasan a ser procesos listos) en orden de prioridad, sino que lo hacen en el orden de ocurrencia de los eventos que están esperando. Como se verá más adelante, hay situaciones en las cuales varios procesos pueden bloquearse esperando la ocurrencia del mismo evento; en tales casos es común asignar prioridades a los procesos que esperan.

2.3 Procesos Ligeros Hilos o hebras

Basándonos en la investigación de Tanenbaum y Woodhull (1997) en la mayoría de los sistemas operativos, hay dos características que son, de hecho, la esencia de un proceso. Sin embargo, son independientes, y pueden ser tratadas como tales por el sistema operativo. Esta distinción ha conducido en los sistemas operativos actuales a desarrollar la construcción conocida como thread, cuyas traducciones más frecuentes son hilo, hebra y proceso ligero. Si se tiene esta división de características, la unidad de asignación de la CPU se conoce como hilo, mientras que a la unidad que posee recursos se le llama proceso.Dentro de un proceso puede haber uno o más hilos de control cada uno con:
  • Un estado de ejecución (en ejecución, listo, bloqueado).
  • Un contexto de procesador, que se salva cuando no esté ejecutándose.
  • Una pila de ejecución.
  • Algún almacenamiento estático para variables locales.
  • Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos.

Los autores Tanenbaum y Woodhull (1997) mencionan que los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo proceso a varios flujos de ejecución se mantiene una única copia en memoria del código, y no varias.

2.4 Concurrencia y Secuenciabilidad

Según Tanenbaum y Woodhull (1997) La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, comparación y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos y es fundamental para que existan diseños como Multiprogramación, Multiproceso y Proceso distribuido.

Tanenbaum y Woodhull (1997) indican que cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o más procesos sean concurrentes, es necesario que tengan alguna relaciones entre ellos como puede ser la cooperación para un determinado trabajo o el uso de información y recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramación es una condición necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente. Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre ellos sea para utilizar información como para cualquier otra cosa.

2.4.1 Exclusión Mutua Secciones Criticas

Según Tanenbaum y Woodhull (1997) La exclusión mutua la podríamos definir como una operación de control que permite la coordinación de procesos concurrentes, y que tiene la capacidad de prohibir a los demás procesos realizar una acción cuando un proceso haya obtenido el permiso.

Los autores Tanenbaum y Woodhull (1997) mencionan que el control de la competencia involucra al sistema operativo inevitablemente, porque es el sistema operativo el que asigna los recursos. Además, los procesos deben ser capaces por sí mismos de expresar de algún modo los requisitos de exclusión mutua, como puede ser bloqueando los recursos antes de usarlos.

Cabe mencionar que la exclusión mutua puede presentarse en los mismos procesos, en el hardware o como soporte en el sistema operativo.

2.4.2 Sincronización Procesos en SO

Según la investigación de Tanenbaum y Woodhull (1997) la sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinación y cooperación de un conjunto de procesos para asegurar la comparación de recursos de cómputo. La sincronización entre procesos es necesaria para prevenir y/o corregir errores de sincronización debidos al acceso concurrente a recursos compartidos. La sincronización permite intercambiar señales de tiempo (arranque/parada entre procesos cooperantes para garantizar las relaciones específicas de precedencia impuestas por el problema que se resuelve. Sin una sincronización adecuada entre procesos, la actualización de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia difíciles de depurar.

Tanenbaum y Woodhull (1997) recalcan que para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o suspender bajo determinadas circunstancias la ejecución de un proceso. Los principales mecanismos de sincronización que ofrecen los sistemas operativos son:
  • Señales.
  • Tuberías.
  • Semáforos.
  • Mutex y variables condicionales.
  • Paso de mensajes.
  • Tuberías.

Tanenbaum y Woodhull (1997) plantean que una tubería es un mecanismo de comunicación y sincronización. Conceptualmente, cada proceso ve la tubería como un conducto con dos extremos, uno de los cuales se utiliza para escribir o insertar datos y el otro para extraer o leer datos de la tubería.