En ciencias de la computación , una cola de entrada es una colección de procesos almacenados que esperan ser llevados a la memoria para ejecutar un programa. Las colas de entrada se utilizan principalmente en la programación del sistema operativo, que es una técnica para distribuir recursos entre procesos. Las colas de entrada , no solo se aplican a los sistemas operativos (SO), sino que también se pueden aplicar a la programación dentro de los dispositivos de red. El propósito de la programación es garantizar que los recursos se distribuyan de manera justa y eficaz; por tanto, mejora el rendimiento del sistema.
Básicamente, una cola es una colección que tiene datos agregados en la posición trasera y eliminados de la posición delantera. Hay muchos tipos diferentes de colas y las formas en que operan pueden ser totalmente diferentes.
Los sistemas operativos utilizan las colas por orden de llegada, el tiempo restante más corto, la programación preferente de prioridad fija, la programación por turnos y la programación de colas multinivel.
Los dispositivos de red utilizan la cola de primero en entrar, primero en salir, la cola justa ponderada, la cola de prioridad y la cola personalizada.
Sistema operativo
En los sistemas operativos, los procesos se cargan en la memoria y esperan su turno para ser ejecutados por la unidad central de procesamiento (CPU). La programación de la CPU administra los estados del proceso y decide cuándo se ejecutará un proceso a continuación mediante el uso de la cola de entrada.
Primero en llegar, primero en salir
Los procesos de primero en llegar, primero en salir se sacan de la cola en orden consecutivo en que se colocan en la cola. Con este método, todos los procesos se tratan por igual. Si hay dos procesos de diferente prioridad y el proceso de menor prioridad ingresa primero a la cola, se ejecutará primero. Este enfoque puede no ser ideal si diferentes procesos tienen diferentes prioridades, especialmente si los procesos son de larga duración.
El tiempo restante más corto
El método de tiempo restante más corto intenta predecir el tiempo de procesamiento de los desarrollos y los coloca en la cola del menor al mayor tiempo de procesamiento. Este método estima y predice basándose en registros históricos previos. En términos generales, su rendimiento no es estable, pero mejora mejor el tiempo de espera del proceso que el primero en llegar, primero en ser atendido.
Programación preferente de prioridad fija
El método de programación preventiva de prioridad fija asigna diferentes prioridades a los procesos en función de su tiempo de procesamiento y los organiza en la cola en orden de prioridades. Los procesos del servidor de CPU de mayor a menor prioridad, y los procesos que tienen la misma prioridad se atienden por orden de llegada. La CPU dejará temporalmente de atender el proceso de baja prioridad cuando un proceso de mayor prioridad entre en la cola.
Programación por turnos
El método de programación por turnos dará la misma cantidad de tiempo para cada proceso y pasará por ellos. Este método se basa en gran medida en que cada proceso requiere mucho tiempo. Demasiado poco tiempo fragmentará los procesos, y demasiado tiempo aumentará el tiempo de espera para que se ejecute cada proceso. Elegir bien el tiempo es la base de este método.
Programación de colas multinivel
Muchas colas se utilizan en el método de programación de colas multinivel y cada cola tiene su propio algoritmo de programación. La programación de colas de varios niveles es más compleja en comparación con otros métodos, pero proporciona flexibilidad para que el sistema operativo proporcione diferentes datos en situaciones complicadas.
Redes
En las redes, los paquetes son la base clave para la programación. Hay muchos tipos diferentes de paquetes que viajan por el núcleo de la red todos los días y se tratan de manera totalmente diferente. Por ejemplo, los paquetes de voz y video tienen mayor prioridad que los paquetes normales. Para administrar y distribuir paquetes de manera efectiva, los dispositivos de red también usan la cola de entrada para determinar qué paquete se transmitirá primero.
Cola de primero en entrar, primero en salir (FIFO)
En este modo, los paquetes se sacan de la cola en el orden en que proceden de la cola. Cada paquete recibe la misma prioridad. Si un paquete grande A viene antes que un paquete pequeño B, B todavía tiene que esperar hasta que A esté completamente servido. Si un sistema trata todos los paquetes de la misma manera, los usuarios pueden experimentar retrasos en la transmisión como: paquetes de voz.
Cola equitativa ponderada (WFQ)
La cola justa ponderada utiliza el algoritmo min-max-fair-share para distribuir paquetes. El reparto equitativo mínimo significa que el sistema operativo de la red distribuirá igualmente los recursos mínimos para cada tipo de paquete. El reparto equitativo máximo significa que el sistema operativo de la red proporcionará más recursos para los paquetes que necesitan transferir una gran cantidad de datos en ese momento, pero recuperará el recurso después de la transferencia. "Ponderado" significa que el planificador asignará peso a cada tipo de paquete. Basado en el peso, determinará cómo poner los paquetes en la cola y servirlos. Por lo general, cada paquete se ponderará según el campo de precedencia IP del encabezado IP de cada paquete.
- Asignación justa = (capacidad de recursos - recurso ya asignado) / número de paquetes
Cola de prioridad (PQ)
La cola de prioridad se divide en 4 sub colas con diferentes prioridades. Los datos de cada cola solo se sirven cuando las colas de mayor prioridad están vacías. Si los datos entran en la cola vacía de mayor prioridad mientras el sistema operativo de la red está transfiriendo datos de la cola de menor prioridad, el sistema operativo de la red retendrá los datos de la cola de menor prioridad y procesará los datos en la cola de mayor prioridad primero. Al sistema operativo de la red no le importa cuánto tiempo tengan que esperar las colas de menor prioridad para su turno porque siempre termina primero cada cola de mayor a menor prioridad antes de pasar a la siguiente cola. Dentro de cada cola, los paquetes se reenvían según el principio de primero en entrar, primero en salir.
Cola personalizada (CQ)
La cola personalizada se divide en 17 subcolas diferentes. La primera cola, cola 0, está reservada para que el sistema operativo de la red transmita paquetes del sistema, las otras 16 colas son para paquetes definidos por el usuario. El usuario puede definir varios paquetes importantes y asignarlos a cada cola. Cada cola tiene un tamaño limitado y eliminará todos los paquetes venideros si alcanza ese límite. Cada cola recibe servicio según la cantidad de paquetes que se entregan en cada cola. Si se alcanza ese límite, el sistema operativo de la red retendrá los paquetes de la cola actual y servirá la siguiente cola hasta que esa cola esté vacía o alcance su límite de paquetes. Si una cola está vacía, el sistema operativo de la red omitirá esa cola y atenderá la siguiente.
Ver también
Referencias
- Stallings, William (2003). Estudios prácticos del CCIE Volumen II . Prensa de Cisco. ISBN 1-58705-072-2.
- Programación del sistema operativo
- Sistema operativo: programación
- Programación y almacenamiento en búfer del sistema operativo