lunes, 27 de octubre de 2008
Unidad 2 Administración de procesos y del procesador
2.1 Concepto de Proceso
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 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
- 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
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
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
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.
2.4.2.1 Mecanismo de Semáforos
2.4.2.2 Mecanismo de Monitores
- En un monitor los procesos se bloquean y desbloquean.
- Pueden existir diversas implementaciones no estandarizadas de un monitor.
- En Java los monitores están implementados de manera nativa con el modificador de los métodos syncronized.
2.4.3 Interbloqueo DeadLock
2.4.3.1 Prevencion Interbloqueo DeadLock
Tanenbaum y Woodhull (1997) exponen que los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos.
2.4.3.2 Deteccion Interbloqueo DeadLock
Tanenbaum y Woodhull (1997) exponen que el control del interbloqueo puede llevarse a cabo tan frecuentemente como las solicitudes de recursos o con una frecuencia menor, dependiendo de la probabilidad de que se produzca el interbloqueo. La comprobación en cada solicitud de recurso tiene dos ventajas: Conduce a una pronta detección y el algoritmo es relativamente simple, puesto que está basado en cambios increméntales del estado del sistema. Por otro lado, tal frecuencia de comprobaciones consume un tiempo de procesador considerable.
2.4.3.3 Recuperacion Interbloqueo DeadLock
3.Abandonar sucesivamente los procesos bloqueados hasta que deje de haber interbloqueo. El orden en el que se seleccionan los procesos a abandonar seguirá un criterio de mínimo coste. Después de abandonar cada proceso, se debe ejecutar de nuevo el algoritmo de detección para ver si todavía existe interbloqueo.
4. Apropiarse de recursos sucesivamente hasta que deje de haber interbloqueo. Como en el punto 3, se debe emplear una selección basada en coste y hay que ejecutar de nuevo el algoritmo de detección después de cada apropiación. Un proceso que pierde un recurso por apropiación debe retroceder hasta un momento anterior a la adquisición de ese recurso.
2.5 Niveles Objetivos Criterios Planificación
- Planificación de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema.
- Planificación de nivel intermedio: En algunos casos, en especial cuando el sistema está sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramación, y por lo tanto, permitir que los trabajos se completen mas aprisa.
- Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cuál proceso listo se le asignará el CPU cuando éste se encuentra disponible. O Determina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que “despacha” la cpu al proceso.
Los objetivos de la planificación del procesador:
- Ser justa.
- Maximizar la capacidad de ejecución.
- Maximizar el número de usuarios interactivos.
- Ser predecible.
- Equilibrar el uso de recursos.
- Equilibrar respuesta y utilización.
- Evitar la postergación indefinida.
- Asegurar la prioridad.
- Dar preferencia a los procesos que mantienen recursos claves.
- Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”.
- Degradarse suavemente con cargas pesadas.
Criterios de la planeación del procesador
- Equidad
- Eficacia
- Tiempo de respuesta
- Tiempo de regreso
2.6 Técnicas Administración del Planificador
Tanenbaum y Woodhull (1997) mencionan que los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido.
2.6.1 Fifo
Tanenbaum y Woodhull (1997) lo definen como un Mecanismo de scheduling en el cual los procesos se ordenan en una fila, en la cual se ejecutan cada uno de los procesos hasta su finalizacion secuencialmente. Es tremendamente ineficiente. Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente. Para implementar el algoritmo sólo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sitúa el último de la cola.
2.6.2 Sjf
Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecución de los procesos. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalización promedio.
2.6.3 Rr
2.6.4 QuevesMultilevel
2.6.5 MultiLevel Feedback Queves
Tanenbaum y Woodhull (1997) concluyen que en general un planificador de este tipo está definido por los siguientes parámetros:
2. El tipo de algoritmo de planificación de cada cola.
3. Un método de determinación de cuando mover un trabajo a una cola de mayor prioridad.