Images

UNIDAD 2: Administración de procesos y del procesador.

2.1 Concepto de proceso.
2.2 Estados y transiciones de los procesos
2.3 Procesos ligeros (Hilos o hebras).
2.4 Concurrencia y secuenciabilidad.
2.4.1 Exclusión mutua de secciones criticas.
2.4.2 Sincronización de procesos en S.C.
2.4.2.1 Mecanismo de semáforos.
2.4.2.2 Mecanismo de monitores.
2.4.3 Interbloqueo (DeadLock).
2.4.3.1 Prevención.
2.4.3.2 Detección.
2.4.3.3 Recuperación.
2.5 Niveles, objetivos y criterios de planificación.
2.6 Técnicas de administración del planificador.
2.6.1 FIFO
2.6.2 SJF
2.6.3 RR
2.6.4 Queves multi-level.
2.6.5 Multi-level feedback queves.

2.1 Concepto de proceso.



Programas
Colección de instrucciones que el procesador interpreta y ejecuta, se almacenan en sistemas no volátiles necesitando ser cargados en memoria principal para poder ser ejecutados, se considera un ente estático.
Procesos
Programa en ejecución, el sistema operativo les asigna recursos, Se consideran un ente dinámico. El proceso es una abstracción creada por el SO, que se compone de: 
  • Código de Programa: sección texto 
  • Contexto de Ejecución: PC, registros del procesador y una pila para invocación de procedimientos 
  • Sección de Datos, que contiene variables globales 
  • Recursos del sistema.

Características 
  • Permite modularizar y aislar errores de programas durante su ejecución 
  • Soporta concurrencia de actividades, lo que permite un mejor aprovechamiento de los recursos 
  • Denominaremos como procesos tanto a los trabajos (jobs) en sistemas de lotes, como a las tareas (task) en sistemas de tiempo compartido.

Modelo

La diferencia entre un programa (conjunto de instrucciones) y un proceso (instrucciones ejecutándose) es obvia y crucial para entender el funcionamiento de los SO.
Imaginemos un mecánico de autos en un taller donde se reparan carros con averías complejas en las que se hace necesario consultar el manual de cada modelo, que contiene las instrucciones para reparar cada posible avería. Además, se permiten reparaciones rápidas a las que se les da mayor prioridad. Existe un almacén de refacciones y herramientas suficientes para las reparaciones. Comparando esta situación con un sistema de cómputo se pueden establecer las siguientes analogías: 
  • El mecánico sería el CPU (procesador) que realizará el trabajo. 
  • El manual de cada reparación sería el programa. 
  • Las herramientas serían los recursos disponibles 
  • Las refacciones serían los datos. 
  • La actividad de usar las herramientas para desmontar las piezas defectuosas sustituyéndolas por otras nuevas siguiendo las instrucciones del manual equivaldría al proceso.
Suponiendo que en un momento dado el mecánico está realizando una reparación compleja (de las que llevan tiempo) y aparece un carro que solicita una reparación de las rápidas (ha aparecido una interrupción). El mecánico suspende momentáneamente la reparación compleja anotando en qué situación se queda dicha reparación y qué operación estaba realizando en ese momento (guarda el estado del proceso). Asimismo, sustituye el manual que estaba realizando por el de la nueva reparación que se dispone a realizar (cambio de programa). Comienza la nueva reparación (cambio de proceso), en la que las herramientas no serán las mismas que antes (distintos recursos); las indicaciones del usuario, las refacciones (datos) y las indicaciones del manual (programa) llevarán a feliz término la reparación para que el mecánico regrese a la reparación inicial.

2.2 Estados y transiciones de los procesos
Los PCB’s se almacenan en listas, una para cada posible estado:


Los estados se pueden dividir en: Activos e inactivos
Activos los que compiten por el procesador. Tipos: 
  • Ejecución Cuando el proceso tiene el control del cpu 
  • Preparado (Listo).- Tienen las condiciones para ser ejecutados pero no están en ejecución por alguna causa. 
  • Bloqueado No pueden ejecutarse porque necesitan algún recurso no disponible.

2.3 Procesos ligeros (Hilos o hebras).


Un hilo de ejecución, en sistemas operativos, es similar a un proceso en que ambos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos permiten dividir un programa en dos o más tareas que corren simultáneamente, por medio de la multiprogramación. En realidad, este método permite incrementar el rendimiento de un procesador de manera considerable. En todos los sistemas de hoy en día los hilos son utilizados para simplificar la estructura de un programa que lleva a cabo diferentes funciones.
Todos los hilos de un proceso comparten los recursos del proceso. Residen en el mismo espacio de direcciones y tienen acceso a los mismos datos. Cuando un hilo modifica un dato en la memoria, los otros hilos utilizan el resultado cuando acceden al dato. Cada hilo tiene su propio estado, su propio contador, su propia pila y su propia copia de los registros de la CPU. Los valores comunes se guardan en el bloque de control de proceso (PCB), y los valores propios en el bloque de control de hilo (TCB).
Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente. De esta manera el programa responde más ágilmente a la interacción con el usuario.
Diferencias entre hilos y procesos
Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante información de estados, e interactúan sólo a través de mecanismos de comunicación dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos directamente. En sistemas operativos que proveen facilidades para los hilos, es más rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenómeno se debe a que los hilos comparten datos y espacios de direcciones, mientras que los procesos al ser independientes no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de modo (mode switch), en este caso pasar del estado de Running al estado de Waiting o Bloqueado y colocar el nuevo proceso en Running. En los hilos como pertenecen a un mismo proceso al realizar un cambio de hilo este overhead es casi despreciable.

2.4 Concurrencia y secuenciabilidad.
Concurrencia y secuenciabilidad
La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, 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.
Los procesos son concurrentes si existen simultáneamente 2 o más y llegan al mismo tiempo a ejecutarse. La concurrencia puede presentarse en tres contextos diferentes:
• Varias aplicaciones: (multiprogramación) para permitir que el cpu sea compartido entre varios trabajos
• Aplicaciones estructuradas: Como ampliación del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los sistemas operativos que están implementados como un conjunto de procesos.
Tipos de computadora en los que puede haber concurrencia:
• Multiprogramación con un CPU. El sistema operativo se encarga de repartir el CPU entre los procesos, intercalando su ejecución para dar una apariencia de ejecución simultánea.
• Multiprocesador. Máquina formada por más de un CPU que comparten memoria principal. Los procesos no sólo intercalan su ejecución sino también la superponer.
• Multicomputadora. Es una máquina de memoria distribuida formada por una serie de computadoras, es posible la ejecución simultánea de los procesos en los diferentes CPU’s.
La concurrencia será aparente siempre que el número de procesos sea mayor que el de procesadores disponibles y será real cuando haya un proceso por procesador (Paralelismo).
Pros:
• Facilita la programación de aplicaciones: permite que se estructuren como un conjunto de procesos que cooperan entre sí para alcanzar un objetivo común.
•Acelera los cálculos: Dividiendo una tarea en varios procesos, ejecutándolos en “paralelo”.
• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma simultánea. • Permite un mejor aprovechamiento de los recursos, en especial del CPU, ya que pueden aprovechar las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros.
Contras:
• Inanición e interrupción de procesos
• Ocurrencia de bloqueos
• Que 2 o más procesos requieran el mismo recurso

2.4.1 Exclusión mutua de secciones criticas.
Regiones críticas
Parte de un programa, en la cual se intenta el acceso a recursos compartidos
Tipos de procesos
• Los procesos no conocen a los demás, son independientes, no trabajan juntos. • Los procesos conocen indirectamente a otros: no los conocen necesariamente, pero comparten algunos recursos.
Los procesos conocen a otros: se comunican y trabajan conjuntamente en una misma actividad.
Competencia de procesos por los recursos
Hay conflicto cuando los procesos compiten por el mismo recurso al mismo tiempo y el sistema operativo asignará el recurso a uno y el resto tendrá que esperar, el que quede esperando se retrasará, se bloqueará y en el peor de los casos nunca terminará bien
Ejemplo: Un Sistema Operativo debe asignar un identificador de proceso (PID) a dos procesos en un sistema multiprocesador. Si se realiza esta acción en dos procesadores a la vez sin control, se puede asignar el mismo PID a dos procesos distintos. Este problema se debe a que la asignación de PID es una sección crítica que debe ejecutarse en forma atómica, de forma completa e indivisible y ningún otro proceso podrá ejecutar dicho código mientras el primero no haya acabado su sección.
Debe haber sincronización que permita a los procesos cooperar entre ellos sin problemas protegiendo el código de la región crítica:
• Cada proceso debe solicitar permiso para entrar en la sección crítica mediante código.
• Cuando un proceso sale de la sección crítica debe indicarlo mediante código. Esto permitirá que otros procesos entren a ejecutar la sección crítica.
Requisitos:
• Exclusión mutua: Si un proceso está ejecutando código de la sección crítica, ningún otro proceso lo podrá hacer. • Progreso: Si ningún proceso está ejecutando dentro de la sección crítica, se elegirá alguno de los que desean entrar. • Espera acotada: Debe haber un límite en el número de veces que se permite que los demás procesos entren a ejecutar código de la sección crítica después de que un proceso haya efectuado una solicitud de entrada y antes de que se conceda la suya.

2.4.2 Sincronización de procesos en S.C.
2.4.2.1 Mecanismo de semáforos. 2.4.2.2 Mecanismo de monitores.
Sincronización
Coordinación para llevar a cabo el trabajo de un grupo de procesos cooperantes asegurando el acceso a recursos compartidos. Previene y/o corrige errores debidos a estos accesos. Para que los procesos puedan sincronizarse debe disponerse de servicios que permitan bloquear o suspender la ejecución de un proceso.

2.4.3 Interbloqueo (DeadLock).
Análisis
En un conjunto de procesos, cada uno está esperando un evento que sólo otro proceso del conjunto puede causar. Puesto que todos los procesos están esperando, ninguno de ellos puede causar ninguno de los eventos que podrían despertar a cualquiera de los demás miembros del conjunto, y todos los procesos continúan esperando indefinidamente.
Ejemplo: Una carretera en 2 direcciones tiene un puente que sólo deja pasar vehículos en un sentido, con las siguientes situaciones:
Un auto llega al puente y en sentido contrario no hay nadie y puede cruzar
Si el paso es controlado por un semáforo en cada lado y 100 m antes de cada uno hay detectores de autos para encender el semáforo opuesto en rojo, pude pasar que 2 autos lleguen al mismo tiempo en ambos sentidos y ambos estén detenidos por el semáforo (interbloqueo)
Si no hay semáforos, un conductor cede el paso, pero antes de que termine el otro, aparece un 3º y así sucesivamente, puede hacer que el conductor educado no cruce mientras haya carros en sentido contrario (postergación indefinida).

2.4.3.1 Prevención. 2.4.3.2 Detección. 2.4.3.3 Recuperación.
Prevención
A grandes rasgos, se debe diseñar un sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo. Los métodos para prevenir el interbloqueo son de dos tipos.
Indirectos.- Consisten en impedir la aparición de alguna de las tres primeras condiciones necesarias
Directos.- Consisten en evitar la aparición de la condición 4.
Exclusión Mutua.- En general, no puede anularse. Si el acceso a un recurso necesita exclusión mutua, el sistema operativo debe soportar la exclusión mutua.

2.5 Niveles, objetivos y criterios de planificación.

  • Planificación de largo plazo (Planificación de trabajos), determina a qué trabajos se les permite entrar al sistema, cuál es el próximo trabajo que se va a ejecutar. Existe en los sistemas por lotes donde la decisión se basa en las necesidades de recursos y su disponibilidad. En los sistemas de tiempo compartido tiene como misión cargar los programas que se desea ejecutar en memoria, es por tanto el encargado de crear los procesos. 
  • Planificación de mediano plazon (Planificación de Swapping), determina a qué proceso se le permite competir por el CPU. Suspende y/o activa temporalmente procesos para mantener una operación uniforme en el sistema y ayuda a realizar algunas funciones para optimizar el rendimiento del sistema. 
  • Planificación de corto plazo (Planificación de CPU), determina a qué proceso deberá asignarse el CPU (despachar). Esta operación se realiza muchas veces por segundo, por lo que el despachador debe estar permanente en memoria.

2.6 Técnicas de administración del planificador.
Planificación del CPU
Ciclo de ráfaga del CPU y de E/S.

El éxito de la planificación del CPU depende de la siguiente prioridad observada de los procesos: la ejecución de un proceso consiste en un ciclo de ejecución del CPU y de E/S, y los procesos se alternan entre estos dos estados. La ejecución del proceso se hace alternando una ráfaga de CPU y una ráfaga de E/S. La última ráfaga de CPU terminará con una solicitud al sistema para que concluya la ejecución.
Planificador del CPU.
Siempre que el CPU queda inactivo, el sistema operativo debe seleccionar para su ejecución uno de sus procesos de la lista de listos. La selección es revisada por el planificador a corto plazo,
Estructura de planificación.
Las decisiones de planificación del CPU pueden efectuarse cuando un proceso cambia:
  • De ejecución a bloqueado 
  • De ejecución a listo 
  • De bloqueado a listo 
  • Cuando termina.
Algoritmos de planificación
Los procesos que se asignan al cpu son tomados de la lista de listos. Esta lista se alimenta de 2 puntos: 
  • Cuando un usuario inicia la ejecución de un programa, el planificador a largo plazo recibe la orden de ejecución, crea el proceso y lo pasa al planificador a corto plazo.
  • Cuando un proceso deja de estar en ejecución y no hay causas de bloqueo, o deja de estar bloqueado.
Políticas de planificación
  • Apropiativas Producen un cambio de proceso con cada cambio de contexto; el proceso que usa el cpu puede ser suspendido y permitir el acceso al cpu a otro proceso. (Tiempo compartido y tiempo real) 
  • No apropiativas.- Un proceso no abandona nunca el procesador desde su comienzo hasta su fin. (Por lotes).
2.6.1 FIFO
Primero en llegar primero en ser servido (FCFS)
EL cpu ejecuta cada proceso hasta que termina, los procesos que entran a la lista de listos estarán formados en el orden en que llegan hasta que les toque turno (FIFO).
El tiempo de espera de cada proceso depende del número de procesos que están en la lista de listos al momento de su ejecución y del tiempo que cada uno tenga en uso el cpu, y es independiente de las necesidades de ejecución del propio proceso.

2.6.2 SJF
Siguiente proceso el más corto (SJN)
Toma de la lista de listos el proceso que necesite menos tiempo de ejecución para realizar su trabajo. Debe saberse el tiempo de cpu que necesita cada proceso por medio de: información suministrada por el usuario, por el programa, por experiencia.
El tiempo de servicio T es bueno para procesos cortos y malo para procesos largos.

2.6.3 RR
Round Robin (RR)
Asignación cíclica, es una mejora de FCFS. A cada proceso se le da un determinado tiempo q (quantum), si no termina, se forma en la lista de listos, el cpu es para el siguiente proceso y así hasta que termine la ejecución.
La administración de la lista de listos puede ser FIFO o por prioridades. Variando q se tienen diferentes comportamientos. Si q>tiempo de ejecución se convertiría en FCFS, si q tiende a 0, la sobrecarga sería muy grande, la mayor parte del tiempo se usaría en cambios de contexto.

2.6.4 Queves multi-level. Colas múltiples
Cuando los procesos que van a ser ejecutados se pueden agrupar en distintos grupos, podemos asignarlos a diferentes colas, cada una con distinta planificación, para darle la que realmente necesite.
Esta política divide la cola de procesos preparados (listos) en varias colas separadas, de forma que los procesos se asignan a una cola específica según sus necesidades y tipo.
Para determinar en cada caso qué cola es la que suministrará un proceso para que acceda al cpu cuando éste deje a otro anterior, será controlada por un algoritmo de planificación entre las colas, que normalmente es apropiativo de prioridad fija.

2.6.5 Multi-level feedback queves. (Colas múltiples con retroalimentación)
Para dar un trato justo a los procesos, es necesario conocer previamente todos sus parámetros característicos: longitud, si son limitados por e/s o por cpu, memoria requerida, etc. Como estos datos no suelen ser conocidos, es difícil determinar el trato que debe recibir cada proceso. Después de analizar las políticas anteriores, es fácil concluir que se deben adoptar las siguientes cuestiones: 
  • Favorecer los procesos cortos 
  • Favorecer los procesos limitados por e/s 
  • Determinar la naturaleza del trabajo a realizar
El método de colas múltiples con retroalimentación divide los procesos en varias colas de procesos preparados (listos): cola 0, cola 1, cola 2, y así sucesivamente, de forma que las de numeración más baja tendrán una mayor prioridad.

0 comentarios: