top of page

UNIDAD 2 - Procesos

2.1 Fundamentos de procesos y concurrencia.


Son dos o más procesos decimos que son concurrentes, paralelos, o que se ejecutan concurrentemente, cuando son procesados al mismo tiempo, es decir, que para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.




2.2 Concepto de proceso.


Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados”

 

2.3 Estados de actividad de un proceso. Primitivas de gestión de procesos. Jerarquías de procesos.


El estado de actividad un proceso define su actividad actual. Durante su existencia, un proceso pasa por una serie de estados discretos.



2.4 Sistemas concurrentes.



Es aquel que tiene un papel importante, sistemas operativos, base de datos, etc.



2.5 Propósitos y objetivos de la concurrencia. Cooperación y competencia entre procesos. Especificación de la concurrencia.



La concurrencia de procesos se refiere a las situaciones en las que dos o más procesos puedan coincidir en el acceso a un recurso compartido o, dicho de otra forma, que requieran coordinarse en su ejecución. Para evitar dicha coincidencia, el sistema operativo ofrece mecanismos de arbitraje que permiten coordinar la ejecución de los procesos.



En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas.



La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:



                  • Compartir recursos globales es riesgoso

                  • Para el sistema operativo es difícil gestionar la asignación óptima de recursos.

Las dificultades anteriores también se presentan en los sistemas multiprocesador.

2.6 Planificación de procesos.



Conjunto de políticas y mecanismos incorporados al sistema operativo, a través de un módulo denominado planificador, que debe decidir cuál de los procesos en condiciones de ser ejecutado conviene ser despachado primero y qué orden de ejecución debe seguirse.

2.7  Estructuras y niveles de planificación



Planificación de alto nivel: Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión.



Planificación de nivel intermedio: Determina a qué procesos se les puede permitir competir por la cpu. Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.

Planificación de bajo nivel: 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. La efectúa el Despachador del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.

2.8 El bloque de control del proceso. Colas de gestión de procesos. Niveles de planificación. Hilos.



El Bloque de control del proceso o BCP  es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.



Las colas de gestión de procesos o múltiples están basadas en una pila que sirve como índice de una lista de procesos que se tienen que ejecutar. Primero el trabajo más cortó.



Este tipo de algoritmo de planificación se usa para trabajos en batch o de procesamiento o lotes en los cuales se puede saber cuál es el tiempo de duración de la ejecución de cada proceso y entonces se puede seleccionar primero el trabajo más corto. El problema que se presenta con éste algoritmo es que los grandes procesos podrían sufrir de inanición dado que cualquier proceso pequeño se "cuela" sobre uno de mayor tamaño y como resultado final se podría dar el caso que el proceso grande nunca obtenga procesamiento.



Los Hilos en sistemas operativos, un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.



2.9 Objetivos de la planificación de procesos.



La Planificación de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.



                 • Equidad: Todos los procesos deben ser atendidos.
                 • Eficacia: El procesador debe estar ocupado el 100% del tiempo.
                 • Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible.
                 • Tiempo de regreso: Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes.
                 • Rendimiento: Maximizar el número de tareas que se procesan por cada hora.



2.10 Modelo de comportamiento de un proceso. Criterios de evaluación de las políticas.



Los modelos de comportamiento se utilizan para describir el comportamiento del sistema en su totalidad. Entre los modelos de comportamiento existentes se distinguen dos de estos: modelos de flujo de datos, que modelan el procesamiento de los datos en el sistema, y modelos de máquinas de estado, que modelan como el sistema reacciona a los eventos. Estos modelos pueden usarse de forma separada o conjuntamente, dependiendo del tipo de sistema que se esté desarrollando. La mayoría de los sistemas de negocio están fundamentalmente dirigidos por los datos. Están controlados por las entradas de datos al sistema con relativamente poco procesamiento de eventos externos.



2.11 Políticas de planificación



A continuación se enumeran diversas políticas de planificación. Lo habitual es utilizar políticas mixtas. Generalmente, el planificador a corto plazo utiliza round-robín, mientras que el planificador a largo plazo utiliza varias colas FIFO. Cada una de estas colas corresponde a una prioridad diferente. Planificación Round-robín Round-robín con pesos. Prioridades monótonas en frecuencia (RMS (Rate-monotonic scheduling)) Menor tiempo de respuesta primero (EDF (Earliest deadline first scheduling))



                  • FIFO - También conocido como FCFS "First Come, First Served".
                  • LIFO.
                  • SJF - Shortest Job First.
                  • CFS - Completely Fair Scheduler (ó Planificador Completamente Justo)
                  • SRT - Shortest Remaining Time
                  • SPT - Shortest Process Time



2.12 FCFS.SJF. Métodos expulsivos (preemptive). Round-Robin. Métodos basados en prioridades. Métodos multicolas



FCFS. Primero en entrar, primero en salir, es un concepto utilizado en estructuras de datos, contabilidad de costes y teoría de colas. Guarda analogía con las personas que esperan en una cola y van siendo atendidas en el orden en que llegaron, es decir, que la primera persona que entra es la primera persona que sale.



SJF. Trabajo más corta siguiente ( SJN ), también conocido como trabajo más corta primero ( SJF ) o Proceso más corta Siguiente ( SPN ), es una política de planificación que selecciona la espera de proceso con el tiempo de ejecución más pequeño a ejecutar a continuación. SJN es un no- preventiva algoritmo. Shortest tiempo restante es una variante preferente de SJN.



PREEMPTIVE. Es el acto de interrumpir temporalmente una tarea llevada a cabo por un sistema informático , sin necesidad de su cooperación, y con la intención de reanudar la tarea en un momento posterior. Tal cambio se conoce como un cambio de contexto . Se lleva a cabo normalmente por una privilegiada tarea o parte del sistema conocido como preventivo programador , que tiene el poder de apropiarse , o interrumpir, y posteriormente reanudar otras tareas en el sistema.



ROUND ROBIN. Es un método para seleccionar todos los elementos en un grupo de manera equitativa y en un orden racional, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento. El nombre del algoritmo viene del principio de Round-Robin conocido de otros campos, donde cada persona toma una parte de un algo compartido en cantidades parejas.


2.13 Sincronización y comunicación entre procesos.



Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes. Un proceso independiente es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos. Los procesos son cooperantes cuando están diseñados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.



2.14 Sincronización entre procesos.



Un proceso es cooperativo si puede afectar o ser afectado por los otros procesos que se están ejecutando en el sistema. La cooperación entre procesos requiere: la ejecución concurrente de los mismos, mecanismos de comunicación y mecanismos de sincronización



2.15 Concepto y necesidad. Postergación indefinida e interbloqueo. El problema de la sección crítica. Soluciones algorítmicas y   hardware.



Postergación indefinida e interbloqueo. En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos.



Sección crítica. El problema de la sección crítica es la consecuencia del uso óptimo de la CPU al ejecutar procesos concurrentes, esto es, la multiprogramación.Se necesita de un mecanismo de sincronización en la entrada y salida de la sección crítica para asegurar la utilización exclusiva del recurso. El no tener un control por sobre esta sección puede conllevar a inconsistencias y/o corrupción de datos (contenidos en variables) compartidos por un conjunto de procesos.



2.16 Herramientas de programación concurrente.



Cuando se piensa en utilizar la programación concurrente como herramienta de desarrollo es preciso hablar primero de la metodología de diseño de sistemas concurrentes y una en particular que es ampliamente usada y define los siguientes pasos[FLE95]:



                 • Partición o Descomposición

                 • El problema computacional se descompone en pequeñas tareas pequeñas que forman las unidades de concurrencia ya sea relacionando su nivel de                   interacción o simplemente haciendo uso de alguna heurística conservando siempre en mente la necesidad de eliminar redundancia en procesamiento y almacenamiento.



                 • Coordinación

                • Esto paso define la incorporación de mecanismos que permitan la comunicación y sincronización de tareas que se puede realizar usando el paso de mensajes o la memoria compartida. Tratando siempre de garantizar que todas las tareas tengan aproximadamente el mismo número de comunicaciones, que cada tarea se comunica sólo con un pequeño número de vecinos y que estas operaciones de comunicaciones puedan realizarse de forma simultanea



                 • Aglomeración o Asignación

             • En este paso, las tareas se agrupan basadas en procesos para optimizar el rendimiento, reducir costes de desarrollo y garantizar la flexibilidad y escalabilidad.

                 • Proyección

             • En este último paso los procesos se asignan a los procesadores que haya disponibles de forma que se minimice los costos de comunicación y al mismo tiempo se maximice el uso de esos procesadores, es decir que exista un buen balance.

                 • Lenguajes de programación concurrente.

2.17 Semáforos. Regiones críticas. Monitores. Problemas clásicos de sincronización entre procesos



Semáforos: Se definieron originalmente en 1968 por dijkstra, fue presentado como un nuevo tipo de variable. Dijkstra una solución al problema de la exclusión mutua con la introducción del concepto de semáforo binario. Está técnica permite resolver la mayoría de los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes.



Un monitor Es un conjunto de procedimientos que proporciona el acceso con exclusión mutua a un recurso o conjunto de recursos compartidos por un grupo de procesos. Los procedimientos van encapsulados dentro de un módulo que tiene la propiedad especial de que sólo un proceso puede estar activo cada vez para ejecutar un procedimiento del monitor.



2.18 Comunicación entre procesos.



Es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.



2.19 Primitivas de comunicación. Mensajes. Taxonomía de los mecanismos de paso de mensajes



Los mensajes proporcionan una solución al problema de la concurrencia de procesos que integra la sincronización y la comunicación entre ellos y resulta adecuado tanto para sistemas centralizados como distribuidos. Esto hace que se incluyan en prácticamente todos los sistemas operativos modernos y que en muchos de ellos se utilicen como base para todas las comunicaciones del sistema, tanto dentro del computador como en la comunicación entre computadores. La comunicación mediante mensajes necesita siempre de un proceso emisor y de uno receptor así como de información que intercambiarse. Por ello, las operaciones básicas para comunicación mediante mensajes que proporciona todo sistema operativo son: enviar (mensaje) y recibir (mensaje). Las acciones de transmisión de información y de sincronización se ven como actividades inseparables.

bottom of page