La programación es el proceso de administrar recursos (principalmente recursos de hardware como E/S, CPU, memoria, etc.) de manera efectiva para completar un conjunto determinado de tareas. La mayoría de los métodos de programación son la programación de procesos como First Come First Serve (FCFS) , Shortest Job First (SJF) , Round Robin (RR) , etc. Hay muchas tareas que requieren múltiples procesos o subprocesos para trabajar simultáneamente entre sí. solo un proceso que funcione mientras otros esperan pondrá en peligro el sistema. Incluso la ejecución de un proceso y la parada preventiva en el otro también pueden poner en peligro el sistema.
¿Qué es una tarea?
Una tarea es la unidad lógica de trabajo más pequeña. Una tarea puede estar formada por varios trabajos. Un trabajo puede ser una subtarea (similar a una tarea) o un proceso. Todos los trabajos deben funcionar como un fragmento en un orden específico para completar una tarea. Se puede esperar que los trabajos se ejecuten en paralelo o secuencialmente o una combinación de ambos.
Por ejemplo: encender un automóvil. El conductor debe presionar el embrague y el freno, y luego girar la llave. Los tres procesos deben ocurrir o de lo contrario el automóvil no arrancará. En informática podemos encontrar un ejemplo similar en una red neuronal; los pesos de todos los bordes deben actualizarse en un segmento.
¿Qué es una pandilla?
Una pandilla significa una tarea. Entonces, la programación de pandillas es la programación de pandillas de manera eficiente. El punto que separa la programación de pandillas de otra programación es que considera una (tarea) de pandillas como un cuanto y las programa. Una pandilla puede requerir múltiples procesos o subprocesos o una combinación de ambos (subprocesos y procesos).
La programación de grupos utiliza una array de Outsterhout como estructura de datos para facilitar todas las tareas de programación. Es una array bidimensional donde una fila representa un intervalo de tiempo y una columna representa un proceso o un hilo.
P1 | P2 | P3 | P4 | P5 | |
Fragmento de tiempo 0 | J1 | J1 | J1 | J1 | J1 |
Fragmento de tiempo 1 | J2 | J2 | J2 | J2 | J2 |
Fragmento de tiempo 2 | J 3 | J 3 | J4 | J4 | J4 |
La tabla anterior demuestra cómo se forma la array de Outsterhout y cómo se programan los trabajos. J1-J4 representa bandas y P1-P5 representa procesos. Tenga en cuenta que parte de la literatura también tiene procesos en filas y segmentos de tiempo como columnas.
Dado que la programación grupal incluye múltiples procesos y subprocesos, existe la necesidad de sincronización. En general, hay dos métodos de sincronización.
- Programación de grupos concurrentes: el módulo de sincronización organiza toda la programación. Todas las cuadrillas se ejecutan durante un intervalo de tiempo específico ‘t’, luego se interpreta y puede comenzar otra cuadrilla.
- Sistema de programación SHARE: las bandas con la misma utilización de recursos se recopilan y ejecutan durante un período de tiempo fijo. El plazo fijado puede cambiar cada vez y el tiempo es mayor que igual al tiempo mínimo de las tareas hasta el cual pueden ser no preventivas.
Al igual que la programación de procesos, existen varios tipos de grupos de programación, a saber:
- Bolsa de pandillas (BoG)
- Adaptado por orden de llegada (AFFCS)
- La pandilla más grande primero servida (LGFS)
- Programación de pandillas emparejadas
- Algoritmo de programación
Se pueden encontrar más detalles sobre los tipos de programación de pandillas en el ENLACE.
Publicación traducida automáticamente
Artículo escrito por apurva__007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA