Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gestión de Procesos
Gestión de Procesos
GESTIÓN DE PROCESOS
donde la verdadera y única UCP alterna los procesos, esta rápida alternancia es lo que
se llama multiprogramación.
2.1. Concepto del proceso:
No hay un acuerdo universal sobre el concepto de proceso, pero sí algunas definiciones
aceptadas:
Un programa que se está en ejecución.
Es un mecanismo fundamental dentro del sistema operativo para gestionar la
ejecución de programas concurrentes.
Unidad de procesamiento gestionada por el sistema operativo.
La unidad dinámica individualmente planificable.
Proceso es una actividad de cierto tiempo.
Al hablar de procesos se debe tener presente dos conceptos: Las interrupciones y el
cambio de contexto.
Interrupción es la indicación al sistema de que hay otra actividad pendiente y cambio de
contexto consiste en que el procesador atendiendo una interrupción decide en función de
unos criterios preestablecidos cambiar de proceso.
Para reanudar el trabajo por donde se ha quedado hay que guardar la información de lo
que se estaba haciendo y liberar parte de la memoria para la nueva actividad, al hacer
este cambio de contexto el procesador deberá anotar todos los datos importantes que
había antes de la interrupción para poder reanudar más tarde la actividad.
Toda la información de los procesos se guarda en una estructura denominada Bloque de
Control de Procesos o BCP.
En sistemas multitarea, los procesos activos se encuentran típicamente en diferentes
etapas de ejecución en cada instante de tiempo. Un proceso particular suele evolucionar
cíclicamente recorriendo varias veces distintos estados, tales como los de ejecución y
suspendido, antes de terminar y salir del sistema. El sistema operativo sigue la pista
dinámicamente al estado de cada proceso y registra todos los cambios de estado cuando
se producen. Esta información es utilizada para planificación y para otras decisiones de
asignación de recursos en respuesta a demandas de los procesos activos. [1] Milan
Milenkovic
Shell Shell
Proceso A
Editor
Proceso E Proceso F
Para referirse a las relaciones entre los procesos de la jerarquía se emplean los términos
de padre, hijo, hermano o abuelo. Cuando el proceso A solicita al sistema operativo que
cree el proceso B, se dice que A es padre de B y que B es hijo de A. Bajo esta óptica, la
jerarquía de procesos puede considerarse como un árbol genealógico.
Algunos sistemas operativos, como Linux, mantienen de forma explícita esta estructura
jerárquica de procesos, un proceso sabe quién es su padre, mientras que otros sistemas
operativos como el Windows NT relacionan los procesos con las llamadas hebras.
Una hebra es un proceso ligero con un estado reducido que comparten recursos del
proceso que provienen tales como memoria y archivos. Las hebras asumen el papel de
los procesos como unidad planificable. En tales sistemas el proceso o tarea sirve como
entorno para la ejecución de hebras.
El proceso se convierte por tanto en una unidad propietaria de recursos, tales como
memoria y archivos para una colección de hebras.
En sistemas con hebras, un proceso con una sola hebra es equivalente a un proceso
clásico. Cada hebra pertenece exactamente a un solo proceso, y ninguna hebra puede
existir fuera de un proceso. Los procesos son estáticos, y solo las hebras pueden ser
planificadas para ejecución. Típicamente, cada hebra representa un flujo separado de
control y está caracterizada por su propia pila y estado hardware.
Las hebras son un mecanismo conveniente para explotar la concurrencia dentro de una
aplicación. Las hebras pueden comunicarse eficientemente por medio de memoria
compartida comúnmente accesible dentro del proceso que las engloba. Los mecanismos
de comunicación y sincronización tales como las señales, también son eficaces debido
a que las hebras relacionadas comparten memoria, y su interacción no requiere el
recargo de cruzar fronteras de protección de memoria.
Las hebras proporcionan una base adecuada para la ejecución paralela de aplicaciones
sobre multiprocesadores de memoria compartida.
2.2. LOS PROCESOS DESDE LA PERSPECTIVA DEL PROGRAMADOR DE
SISTEMAS.
Los programadores de sistemas tienen que tratar con procesos de forma explícita. El
sistema operativo, o un lenguaje de programación proporcionan servicios para definir
los atributos para controlar o influenciar muchos aspectos importantes del
comportamiento y gestión del proceso en tiempo de ejecución. Al crear procesos, el
programador informa al sistema operativo sobre que actividades pueden ser planificadas
para ejecución concurrente.
2.2.1. Ejemplo de multitarea
Ayudándonos de una aplicación típica como es la suma de dos números, podemos
indicar que existen cuatro actividades identificadas que se designan del modo siguiente:
RECOGER (recoger los números a sumar puede ser a través del teclado o disco),
GUARDAR (Almacenar los números a sumar y la respuesta en disco),
CALCULAR (realizar la suma uso del procesador),
IMPRIMIR (impresión del resultado puede ser en pantalla o impresora).
Como se entiende, la codificación, usando cualquier lenguaje, de estas actividades
serían:
Inicio del programa
inicio
Mientras se verdad {mientras sea verdad}
inicio
recoger_a y b; {A través del teclado o archivo previamente
almacenado}
guardar a, y b; {a disco}
calcular_c; {procesamiento sumar}
imprimir_c; {presentar resultados a pantalla o archivo}
fin {Mientras}
fin {una_tarea_}
La simplicidad engañosa de este ejemplo es intencionada. Demuestra cómo se puede
razonar lógicamente dando lugar a una implementación ineficiente de un solo proceso.
Si la aplicación fuera mayor no solamente la suma de dos números sino aplicaciones
grandes con tiempos críticos que se demoraría mucho tiempo en recoger los datos o
presentar la información el problema sería mayor.
Como podemos darnos cuenta el procesador tendrá tiempos muertos bastante largos en
espera que se cumplan las tareas de E/S.
Un enfoque multitarea puede producir un rendimiento mejor al disponer de un proceso
separado para manejar cada actividad. La ejecución concurrente de tales procesos puede
facilitar el progreso común mediante la reasignación del procesador a otros procesos
Capítulo 2. Sistemas Operativos
PROCESOS 33
R1 R1
G1 G1 C1
C1 R2 I1
I1 G2 C2
R2 R3 I2
G2 G3 C3
Un proceso que espera una o más señales es suspendido por el sistema operativo, hasta
que le lleguen todas las señales requeridas enviadas por otro proceso. El envío de una
señal no ocasiona la suspensión del proceso emisor.
2.2.3. Comportamiento de los procesos del ejemplo
Para demostrar el comportamiento en tiempo de ejecución y la operación multiplexada
de los cuatro procesos, es necesario efectuar algunas suposiciones con respecto al
tiempo. La Figura 2.3a muestra gráficamente la temporización supuesta. [1] Milan
Milenkovic
Los bloques de línea continua indican que se usa el procesador.
Las líneas discontinuas representan las operaciones de E/ S.
Las marcas de flecha hacia arriba los momentos en que se producen
interrupciones.
Las flechas hacia abajo indican los instantes en que el proceso CALCULAR, que
no está controlado por interrupciones, se encuentra preparado para ejecución.
Unidades
de tiempo
Actividades por ciclo
Recoger (A/D) 3
Guardar (Disco) 4
Calcular (UCP) 2
Imprimir
(Impresora) 3
Sumad
o
12
1 2 3 4 5 6 7
Tiempo
0 1 2 3 4 5 6 7 8 9 10 11 12 13
GUARDAR
R1 R2 R3
RECOGER
I1 I2
IMPRIMIR 2 3 4
C1 C2 C3
CALCULAR
5.25
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Registros
especiales Mapa de memoria
del Proceso A
Mapa de memoria
del Proceso B
Registros Tablas del sistema operativo
Mapa de memoria
generales del Proceso C Tabla de procesos
BCP Proceso A BCP Proceso B BCP Proceso C
- Estado (registros) - Estado (registros) - Estado (registros)
Tablas SO - Identificación - Identificación - Identificación
PC - Control - Control - Control
- Tabla de memoria
SP Mapa de - Tabla de E/S
Estado Memoria - Tabla de ficheros
Mapa de
memoria Tabla de procesos
Cargador
Objeto
ejecutable Imagen BCP
del proceso
Bibliotec a
sistema
Proceso A
Proceso B Procesamiento
Entrada/salida
Listo
Proceso C SO
Procesador
Tiempo
EJECUCION
(E/S,
sincronización)
INACTIVO SUSPENDIDO
Planificado Expropiado
Creado
Ocurre suceso
PREPARADO
Los estados colectivos de todos los procesos y recursos del sistema pueden ser
considerados como el estado global del sistema.
Las operaciones que pueden hacer sobre los procesos son:
Crear.- Son cuando se ejecuta un proceso y este pasa a la cola de procesos
preparados para ser ejecutados, el único dato a tener en cuenta es la prioridad que
tiene dicho proceso sobre el resto de los procesos que se encuentran en ese
momento en la cola de preparados, por si el fuera de mayor privilegio que los
demás o al contrario.
Bloquear.- Son cuando al estado se le pone en estado bloqueado por que el evento
o recurso al cual quiere acceder se encuentre en uso por otro proceso y por lo tanto
tiene que esperar, pero sin detener ni hacer perder tiempo al microprocesador.
Reanudar.- Son cuando a los procesos bloqueados, se les reanuda la ejecución, por
que el evento o recurso que estaban esperando ya se encuentra disponible y puede
ser usado.
Suspender.- Son cuando determinados procesos no van a ser usados y se devuelve
a la memoria RAM, pasando entonces a ser eliminados de los registros del
microprocesador para no ser ejecutados.
Retirarlos.- Cuando un proceso se los suspende puede sacárselo de la memoria
RAM a memoria secundaria.
2.3.1. Bloque de control de procesos (BCP)
El BCP contiene la información básica del proceso, entre la que cabe destacar la
siguiente:
Información de identificación.- Esta información identifica al usuario y al proceso.
Como ejemplo, se incluyen los siguientes datos:
Identificador del proceso.
Identificador del proceso padre, en caso de existir relaciones padre-hijo
Información sobre el usuario (identificador de usuario, identificador de grupo).
Estado del procesador.- Contiene los valores iniciales del estado del procesador o su
valor en el instante en que fue interrumpido el proceso.
Registros
especiales
Tabla de procesos
Los procedimientos que se llevan a cabo para realizar una conmutación de procesos se
resumen en la Figura 2.11.
Capítulo 2. Sistemas Operativos
PROCESOS 46
Pa en ejecución
Cambio de Modo
Suceso
Cambio de Modo
Pb en ejecución
El módulo del sistema operativo que pone a ejecutar un proceso se denomina activador
o dispatcher. La activación de un proceso consiste en copiar en los registros del
procesador el estado del procesador, que está almacenado en su BCP. De esta forma, el
proceso continuará su ejecución en las mismas condiciones en las que fue parado.
Evidentemente, la conmutación de proceso es una operación considerablemente más
compleja y costosa que la conmutación de contexto de interrupción, y puede ser
bastante complicada en sistemas operativos grandes que disponen de detallado
mantenimiento de recursos y sofisticados esquemas de planificación. Dada su
complejidad y relativa alta frecuencia de ocurrencia, la implementación de la
conmutación de proceso puede afectar significativamente al rendimiento de un
sistema operativo de multiprogramación. Es especialmente importante en sistemas
orientados al rendimiento, tales como las aplicaciones de tiempo real.
La eficiencia de la conmutación de proceso puede ser mejorada con la ayuda de
asistencias hardware y una técnica de estructuración de procesos especial denominada
hebras, que se discuten en la próxima sección.
Un esquema hardware habitualmente empleado para acelerar la conmutación de
proceso es disponer de múltiples conjuntos estructuralmente idénticos de registros del
procesador. Lo mínimo son dos: uno por el sistema operativo y otro para los procesos
de usuario. Un bit dedicado en la (única copia) palabra de estado del procesador indica
el modo actual de operación, supervisor o usuario, y el conjunto correspondiente de
registros activos.
2.3.5. Hebras de ejecución (THREADS)
Un proceso ligero, o hebra (thread), es un programa en ejecución que comparte la
imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la
Figura 2.12, un proceso puede contener un solo flujo de ejecución, como ocurre en los
procesos clásicos o más de un flujo de ejecución (procesos ligeros).
Proceso
Procesos ligeros
Es importante destacar que todos los procesos ligeros de un mismo proceso comparten
el mismo espacio de direcciones de memoria, que incluye el código, los datos y las pilas
de los diferentes procesos ligeros. Esto hace que no exista protección de memoria entre
los procesos ligeros de un mismo proceso, algo que sí ocurre con los procesos
convencionales.
El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura 2.12
representa de forma esquemática la estructura de un proceso de Windows NT con sus
procesos ligeros.
Proceso
Código
Datos
Thread 1 Thread n
Registros ...... Registros
Pila Pila
Comparando el uso de los procesos ligeros con otras soluciones se puede decir que:
Los procesos ligeros permiten paralelismo y variables compartidas.
División de trabajo que dan los procesos una mayor sencillez, lo que se traduce en
mejores prestaciones.
Comparten memoria directamente, por lo que no hay que añadir ningún
mecanismo adicional para utilizarla.
La destrucción de procesos ligeros requiere mucho menos trabajo que la de
procesos.
Facilita la modularidad, al dividir trabajos complejos en tareas.
Aumenta la velocidad de ejecución del trabajo, puesto que aprovecha los tiempos
de bloqueo de unos procesos ligeros para ejecutar otros.
Permite la programación concurrente.
ejecución para cada tipo de aplicación que se ejecute bajo Windows 95, NT y sus
descendientes. Así también cada tipo de aplicación tiene diferente comportamiento
respecto a la división en hebras. Aplicaciones desarrolladas para MSDOS de 8 bits y
las aplicaciones para Windows 3.x de 16 Bits no se dividen, o solo se divide, en una
hebra. No así las aplicaciones de 32 bits que se dividen en muchas hebras,
aprovechándose de muchas posibilidades que influyen en el rendimiento como mayor
tiempo de uso del procesador porque la planificación se realiza a nivel de hebra. Un
resumen del comportamiento de los diferentes tipos de aplicación con respecto al
número de hebras, máquinas virtuales y uso de memoria presentamos a continuación:
En las Figuras 13a, 13b y 13c se presenta gráficamente las diferencias anotadas en la
tabla anterior:[14] Windows Training Microsoft.
También se debe indicar que Windows tiene que implementar dos tipos de multitarea
para poder ejecutar cada tipo de aplicación que son:
Multitarea Cooperativa2.- Es el modelo de multitarea en la que se confía que cada
proceso que es planificado para su ejecución coopere dejando libre el procesador
cuando termine su trabajo.
1
Thread
2
Multitasking Cooperative
3 Multitasking Preemptive
4
Scheduler
2.5. PLANIFICACIÓN:
La planificación de procesos tiene como objetivos obtener siempre la mayor
productividad, o la mayor cantidad de trabajos realizados en una unidad de tiempo.
El concepto de planificación podría llamarse al conjunto de políticas y mecanismos
incorporados al sistema operativo por el que se rige el orden en el que se completa el
trabajo que hay que realizar.
La planificación se refiere a la manera o técnica que se usan para decidir cuánto tiempo
de ejecución y cuando se le asigna a cada proceso los recursos del sistema, es decir
decide ¿Qué, Cómo y Cúando? Obviamente, si el sistema es monousuario y monotarea
no hay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen
funcionamiento del sistema.
El planificador es el módulo del sistema operativo que realiza la función de seleccionar
el proceso en un estado y pasarlo a otro estado de ejecución.
Con la planificación se pretende:
Justicia o Imparcialidad: Todos los procesos son tratados de la misma forma, y en
algún momento obtienen su turno de ejecución o intervalos de tiempo de
ejecución hasta su terminación exitosa.
Maximizar la Producción: El sistema debe de finalizar el mayor número de
procesos por unidad de tiempo.
Minimizar el Tiempo de Respuesta: Cada usuario o proceso debe observar que el
sistema les responde consistentemente a sus requerimientos.
Evitar el Aplazamiento Indefinido: Los procesos deben terminar en un plazo finito
de tiempo.
El sistema debe ser predecible: Ante cargas de trabajo ligeras el sistema debe
responder rápido y con cargas pesadas debe ir degradándose paulatinamente. Otro
punto de vista de esto es que si se ejecuta el mismo proceso en cargas similares de
todo el sistema, la respuesta en todos los casos debe ser similar.
La mayoría de estos objetivos son incompatibles entre sí, por lo que hay que centrar la
atención en aquel que sea de mayor interés. Por ejemplo, una planificación que realice
un reparto equitativo del procesador no conseguirá optimizar el uso del mismo.
En los sistemas de planificación generalmente se identifican tres niveles: el alto, medio
y el bajo. El nivel alto decide que trabajos (conjunto de procesos) son candidatos a
convertirse en procesos compitiendo por los recursos del sistema; el nivel intermedio
decide que procesos se suspenden o reanudan para lograr ciertas metas de rendimiento
mientras que el planificador de bajo nivel es el que decide que proceso, de los que ya
están listos (y que en algún momento paso por los otros dos planificadores) es al que le
toca ahora estar ejecutándose en la unidad central de procesamiento. En este trabajo se
revisaran principalmente los planificadores de bajo nivel porque son los que finalmente
eligen al proceso en ejecución.
2.5.1.Tipos de planificadores:
Los sistemas pueden incluir varios tipos de planificadores de procesos. La figura 2.16
muestra el caso de tres tipos: corto, medio y largo plazo.
La planificación a largo plazo tiene por objetivo añadir nuevos procesos al sistema,
tomándolos de la lista de espera. Estos procesos son procesos de tipo batch, en los que
no importa el instante preciso en el que se ejecuten (siempre que se cumplan ciertos
límites de espera).
La planificación a medio plazo trata la suspensión de procesos. Es la que decide qué
procesos pasan a suspendido y cuáles dejan de estar suspendidos. Añade o elimina
procesos de memoria principal modificando, por tanto, el grado de multiprogramación.
La planificación a corto plazo se encarga de seleccionar el proceso en estado de listo
que pasa a estado de ejecución, es por tanto, la que asigna el procesador.
La planificación puede ser con expulsión o sin ella. En un sistema sin expulsión un
proceso conserva el procesador mientras lo desee, es decir, mientras no solicite del
sistema operativo un servicio que lo bloquee. Esta solución minimiza el tiempo que
gasta el sistema operativo en planificar y activar procesos, pero tiene como
inconveniente que un proceso puede monopolizar el procesador (imagínese lo que
ocurre si el proceso, por error, entra en un bucle infinito).
Planificación a
largo plazo
Memoria
Exit
Ejecución
Listo y Bloqueado y
Procesos Batch suspendido suspendido
En los sistemas con expulsión, el sistema operativo puede quitar a un proceso del estado
de ejecución aunque éste no lo solicite. Esta solución permite controlar el tiempo que
está en ejecución un proceso, pero requiere que el sistema operativo entre de forma
sistemática a ejecutar para así poder comprobar si el proceso ha superado su límite de
tiempo de ejecución. Como sabemos, las interrupciones sistemáticas del reloj garantizan
que el sistema operativo entre a ejecutar cada pocos milisegundos, pudiendo determinar
en estos instantes si ha de producirse un cambio de proceso o no.
Para realizar las funciones de planificación, el sistema operativo organiza los procesos
listos en una serie de estructuras de información que faciliten la búsqueda del proceso a
planificar. Es muy frecuente organizar los procesos en colas de prioridad y de tipo.
Lo sucesos que provocan replanificación en virtud de su capacidad de modificar el
estado global del sistema son:
Interrupciones basadas en el tiempo.
Interrupciones y terminaciones de E / S.
La mayoría de las llamada operacionales al SO.
El envió y recepción de señales.
La activación de programas interactivos.
2.5.2. Criterios de planificación y rendimiento
Con el fin de poder analizar el rendimiento de la planificación, se debe analizar algunos
parámetros, entre los más importantes tenemos:
Utilización del Procesador.- Es el tiempo que el procesador se mantiene
trabajando.
Productividad.- Es la cantidad de trabajo que el procesador completa en una
unidad de tiempo.
Tiempo de Espera.- Es el tiempo que transcurre mientras el proceso espera en la
cola de procesos listos.
Tiempo de Retorno.- Es la suma de los tiempos de espera, de ejecución y el
tiempo que el proceso efectúa las operaciones de E/S.
El Tiempo de Respuesta.- Es el tiempo transcurrido desde la presentación de una
solicitud hasta que se produce la primera respuesta.
cola de preparados. Sin un proceso necesita mas tiempo para completar después de
agotar su cuota de tiempo, se coloca la final de la lista de preparados para esperar a una
asignación siguiente. Se puede ayudar de la disciplina FCFS.
La determinación del tamaño del cuanto es decisiva para la operación efectiva de un
sistema computacional [7] Deitel.
Los interrogantes son: ¿Tamaño de cuanto pequeño o grande?, ¿Tamaño del cuanto fijo
o variable? y ¿Tamaño del cuanto igual para todos los procesos de usuarios o
determinado por separado para cada uno de ellos?
Si el cuanto se hace muy grande, cada proceso recibe todo el tiempo necesario para
llegar a su terminación, por lo cual la asignación en rueda (“RR”) degenera en “FIFO o
FCFS”.
Si el cuanto se hace muy pequeño, la sobrecarga del intercambio de contexto se
convierte en un factor dominante y el rendimiento del sistema se degrada, puesto que la
mayor parte del tiempo de cpu se invierte en el intercambio del procesador (cambio de
contexto) y los procesos de usuario disponen de muy poco tiempo de cpu.
El cuanto debe ser lo suficientemente grande como para permitir que la gran mayoría de
las peticiones interactivas requieran de menos tiempo que la duración del cuanto, es
decir que el tiempo transcurrido desde el otorgamiento de la UCP a un proceso hasta
que genera una petición de Entrada / Salida debe ser menor que el cuanto establecido,
de esta forma, ocurrida la petición la UCP pasa a otro proceso y como el cuanto es
mayor que el tiempo transcurrido hasta la petición de Entrada / Salida, los procesos
trabajan al máximo de velocidad, se minimiza la sobrecarga de apropiación y se
maximiza la utilización de la Entrada / Salida.
El cuanto óptimo varía de un sistema a otro y con la carga, siendo un valor de referencia
100 mseg (cien milisegundos). [7] Deitel.
2.6.4. Planificación con expropiación basada en prioridades ED ( EVENT
DRIVEN)
Considera factores externos al proceso. [10] Tanenbaum
Las ideas centrales son que cada proceso tiene asociada una prioridad y que el proceso
ejecutable con máxima prioridad es el que tiene el permiso de ejecución.
Los procesos de alta prioridad podrían ejecutarse indefinidamente.
El planificador del sistema puede cambiar la prioridad del proceso en ejecución en cada
interrupción del reloj para lograr ciertas metas relacionadas con el procesador o la
Entrada / Salida.
Los procesos con requerimientos intensivos de Entrada / Salida ocupan mucho de su
tiempo en espera de operaciones de Entrada / Salida, por lo tanto:
Deben tener prioridad para usar la UCP y efectuar la siguiente petición de Entrada
/Salida, ya que se ejecutará en paralelo con otro proceso que utilice la UCP.
Si deben esperar mucho tiempo a la UCP estarán ocupando memoria por tiempo
innecesario.
Frecuentemente los procesos se agrupan en “Clases de Prioridad”, en cuyo caso se
utiliza la planificación con prioridades entre las clases y con round robin (RR) dentro de
cada clase. Si las prioridades no se reajustan en algún momento, los procesos de las
clases de prioridad mínima podrían demorarse indefinidamente.
2.6.5. Planificación MLQ
De las disciplina de planificación descritas hasta ahora ¿Cuál debería utilizarse en un
sistema mixto o de propósito general, en el que hay sucesos críticos en el tiempo, una
multitud de usuarios interactivos y algunos trabajos no interactivos muy largos?. La
solución podría estar en combinar varias disciplinas de planificación clasificadas de
acuerdo a la carga de trabajo manteniendo colas de procesos separadas servidas por
diferentes planificadores. A este método se le denomina planificación de colas
multinivel (MLQ).
Una posible división de la carga de trabajo seria: procesos de sistema, programas
interactivos y trabajos de lotes. Esto daría lugar a tres colas separadas, como se muestra
en la Figura 2.17.
Planificación
guiada por
eventos
Procesos de sistema
Planificación
reparto del
tiempo
Procesos
interactivos
Cola de prioridad media UCP
Planificación
FCFS
Procesos generados
por lotes
Cola de prioridad baja
Cuando existen dos o más procesos con la misma prioridad se utiliza el algoritmo de
reparto de tiempo entre estos procesos hasta finalizar, dejando los otros procesos en lo
que se denomina en segundo plano. Figura 2.18c y 2.18d