ADMINISTRACIÓN DE PROCESOS Y PLANIFICACIÓN DE PROCESOS
Gregory Ureta VargasDocumentos de Investigación15 de Julio de 2021
4.047 Palabras (17 Páginas)107 Visitas
UNIVERSIDAD DE GUAYAQUIL[pic 1][pic 2]
FACULTAD:
INGENIERIA INDUSTRIAL
TEMA:
ADMINISTRACIÓN DE PROCESOS Y PLANIFICACIÓN DE PROCESOS
ESTUDIANTE:
URETA VARGAS GREGORY FREDDY
MATERIA:
SISTEMAS OPERATIVOS
DOCENTE:
ING. TRUJILLO COLOMA MARIA JOSÉ
AÑO LECTIVO:
CICLO 2021-2022
Contenido
Introducción 4
Objetivos 5
Objetivo general 5
Objetivo específico 5
Desarrollo 6
Administración de procesos 6
Concepto y estados de un proceso 6
Estados en proceso 6
Procesos e hilos 7
Los hilos y el sistema operativo 7
Patrones de trabajo con hilos 7
Concurrencia 8
Problemas 8
Problema conductor consumidor 8
Solución 10
Problema lectores / escritores 12
Solución 14
Bloques mutuos 15
Prevención de bloqueos 16
Evasión de bloqueos 17
Detección y recuperación de bloqueos 17
Algoritmo de avestruz 17
Justificando a los avestruces 17
Enfrentando los avestruces 17
Planificación de procesos 18
Tipos de procesos 18
Midiendo la respuesta 19
Algoritmos de planificación 19
Objetivos de planificación 20
El proceso más corto a continuación (SPN) 21
Ronda egoísta (SRR) 21
Retroalimentación multinivel 22
Lotería 22
Planificación de hilos 22
Planificación de multiprocesadores 23
Bibliografía 25
Conclusión 26
Introducción
A continuación, veremos dos capítulos resumidos en un solo documento, por un lado, presentaremos el primer tema a tratar que es sobre la administración de procesos y todos los conceptos que están relacionados con éste, como los procesos, hilos, concurrencia y sincronización, por otro lado veremos el segundo tema, que es sobre la planificación de procesos, aquí las técnicas y algoritmos que son empleados por el sistema operativo son los que determinan como y en que orden hacer los cambios de procesos, cediendo en uso del procesador a los procesos que lo necesiten.
Objetivos
Objetivo general
- Comprender ampliamente los temas con el fin de aplicar lo aprendido en la universidad.
Objetivo específico
- Investigar y estudiar los temas difíciles de comprender para un buen entendimiento.
Desarrollo
Administración de procesos
Concepto y estados de un proceso
Un proceso es la imagen en memoria de un programa, o una entidad activa, definiendo la actuación que tendrá el sistema. Hablamos de tareas en un sistema por lotes, que una tarea necesita menos estructura, solo basta con guardar la información que esta relacionada con la contabilidad de recursos empelados.
El sistema da la ilusión de que algunos procesos son ejecutados por igual, al mismo tiempo, en su mayoría solo esta esperando para continuar con su ejecución, en algún punto solo puede ejecutar sus instrucciones, los procesos que sean igual o menor al número de procesadores del sistema. (García, 2020)
Estados en proceso
Conlleva diferentes estados de ejecución a lo largo de su vida, los cuales son:
- Nuevo: Da permiso al sistema operativo la creación de un proceso, y sus recursos más las estructuras van siendo creadas.
- Listo: Inicia o continua la ejecución, pero el sistema no le asigna un procesador.
- En ejecución: Mientras se esta ejecutando sus instrucciones son procesadas en algún procesador.
- Bloqueado: A la espera de algún evento y continuar con la ejecución.
- Zombie: El sistema operativo realizará algunas operaciones de limpieza para eliminarlo de la lista, aunque el sistema haya terminado su ejecución.
- Terminado: Ha terminado, las estructuras están a la espera de que el sistema operativo las limpie.
Procesos e hilos
Es bastante significativa la cantidad de información que el sistema maneja acerca de cada proceso. Cuando los procesos son basados en un modelo de hilos, se proyecta en sentido inverso que todo proceso es como un hilo de ejecución. Si un sistema operativo no aporta soporte expreso a los hilos, los proyectaría de la misma forma.
Los hilos y el sistema operativo
Los hilos llamados hilos de usuario o hilos verdes, son cuando pueden hacerse completamente y de manera transparente en espacio de usuario.
Los procesos implementados con hilos pueden ganar algo de rendimiento por no tener que reemplazar al PCB activo cuando la ejecución es intercalada de sus distintos hilos. Hay momentos en que los hilos de usuarios utilizan multitarea cooperativa para poder pasar el control dentro de un proceso.
La creación de hilos informando al sistema operativo o los conocidos como hilos de Kernel, son los que, a través de bibliotecas de sistemas, son implementados de forma estándar para los diversos sistemas operativos.
Patrones de trabajo con hilos
Son tres los patrones donde caen los modelos de hilos, podemos tener mas de de estos patrones en diferentes áreas de nuestra aplicación, estos son:
- Jefe / trabajador: El jefe recopila tareas para realizarlas, separándolas y entregándolas a los hilos trabajadores, los hilos trabajadores realizar su operación, y notifican su trabajo al jefe, finalizando su ejecución.
- Equipo de trabajo: El trabajo a realizar por estos hilos son planteados desde el principio, esto se conoce como el paso de división de trabajo, no un hilo más, sino que va preparando los datos para que sean lanzados en paralelo.
- Línea de ensamblado: Este modelo ayuda a mantener rutinas simples de comprender, permitiendo al procesamiento de datos que continúe inclusive si parte del programa esté bloqueado. Pueden ejecutarse paralelamente sobre bloques consecutivos de información, eventos, etc.
Concurrencia
La concurrencia se refiere a dos o más eventos cuyo orden no es determinista, en otras palabras, son eventos en los que no se puede predecir el orden relativo en el que pasarán. Es encargada principalmente de los procesos cuya ejecución esté vinculada de alguna forma.
Los problemas y conceptos acerca de la concurrencia son presentados o utilizados con problemas clásicos, presentando casos muy simplificados, y pueden tener relación con diferentes cuestiones que un programador puede enfrentar en la vida real.
Para cada problema que se mostrará, tendrá una manera de resolverlos, aunque por lo general tenemos mas soluciones, se recomienda entender bien el ejemplo, el problema y la solución, para continuar con el siguiente ejemplo.
Problemas
Problema conductor consumidor
En un entorno multihilos es común que haya una división de tareas tipo línea de ensamblado, que se puede generalizar a que un grupo de hilos van produciendo ciertas estructuras, a ser consumidas por otro grupo.
Un programa orientado a eventos puede ser un ejemplo de este problema, cuando eventos de la misma naturaleza se producen, causando que se disparen los mecanismos que los puedan atender. Estos eventos pueden apilarse en un buffer, procesado por los hilos encargados acorde se vayan liberando.
Teniendo ciertos requisitos:
- Retirar un elemento del buffer deberá ser hecho de forma atómica. Si hay mas de un proceso intentando hacerlo al mismo tiempo, hay riesgo de que se corrompan los datos.
- Si un consumidor está listo y el buffer vacío, deberá bloquearse, hasta que un productor pueda generar un elemento.
El código será simple si no se tiene en cuenta la sincronización:
import threading
buffer = [ ]
threading.Thread(target=productor,args=[]).start() threading.Thread(target=consumidor,args=[]).start()
def productor():
while True:
event = genera_evento()
buffer.append(event)
def consumidor():
while True:
event = buffer.pop()
procesa(event)
El acceso a buffer no tiene protección para garantizar la exclusión mutua, dando paso a que pueda quedar en un estado inconsistente si append() y pop() intentan manipular sus estructuras al mismo tiempo. También, podemos extender el programa para que haya varios hilos en distintos roles.
...