La programación anticipada es un tipo de programación de entrada/salida en el disco duro que mejora el rendimiento del disco duro y mejora su eficiencia al predecir la operación de lectura síncrona en un futuro próximo.
Historial:
todos los algoritmos de programación de disco existentes son algoritmos de reducción de búsqueda que saltan a la siguiente solicitud que espera en la cola según el orden de llegada (FCFS) porque no mantiene el disco inactivo. La solicitud anterior que todavía está en estado computacional genera la siguiente solicitud justo después de algunos milisegundos, pero en ese momento, el disco ya está realizando otra solicitud que no es prioritaria. Por lo tanto, la búsqueda tiene que moverse bastante mientras cambia entre diferentes operaciones, lo que reduce las tasas de transferencia y la eficiencia.
Trabajo:
aumentar el rendimiento del sistema operativo es el objetivo principal, lo que requiere aumentar el rendimiento de las unidades de disco a las que accede para la gestión de la memoria. Para aumentar el rendimiento, se sugieren dos formas:
- Minimización de las operaciones de búsqueda: las
requests se pueden ordenar de manera que el número de operaciones de búsqueda disminuya y la distancia entre ellas también. Esto se puede hacer agrupando todas las requests cercanas y ejecutándolas juntas. - Priorizar las operaciones de lectura sobre las operaciones de escritura: las operaciones de
escritura no requieren una operación particular para finalizar primero y, por lo tanto, se pueden extraer en cualquier momento, mientras que las operaciones de lectura se generan una a la vez y requieren más tiempo que las operaciones de escritura. Una operación de lectura no se ejecuta hasta que finaliza la actual.
Sin embargo, estos dos métodos son de naturaleza contradictoria ya que no se pueden seguir simultáneamente. Por ejemplo, si intentamos minimizar las operaciones de búsqueda agrupando todas las operaciones de escritura a la vez, nuestras operaciones de lectura se retrasarán porque están al final de la cola.
Por otro lado, si estamos tratando de priorizar las operaciones de lectura, entonces no es factible minimizar las operaciones de búsqueda ya que no se genera otra operación de lectura hasta que finaliza una, por lo que no es posible agrupar las operaciones y cambiará automáticamente a cualquier operación de escritura solicitada.
A veces, provoca una inactividad engañosa del disco, circunstancia en la que una operación de lectura ha terminado de procesarse y la búsqueda cambia automáticamente a la operación de escritura y se da cuenta de que no hay operaciones de escritura esperando y tiene que volver a otra operación de lectura que se solicitó en el intervalo cuando sucedió el cambio. Esto reduce la eficiencia del sistema operativo y también retrasa las operaciones de lectura síncrona.
La programación anticipada es la solución al problema de la ‘inactividad engañosa’ y es un método para hacer una pausa de corta duración (unos pocos milisegundos) después de la operación de lectura para predecir cualquier operación de lectura sincrónica que pueda programarse justo después de la actual y repararla de inmediato. Después de que el temporizador se apaga, cambia para realizar operaciones de escritura.
Aplicaciones:
- Se utiliza en el servidor web Apache, que aumenta el rendimiento en más del 70 %, ya que mejora significativamente la utilización del disco y su administración.
- También se utiliza en el sistema de archivos Andrew. Benchmark se usa para capturar la carga de trabajo del servidor de archivos en el desarrollo de software y reduce el tiempo de ejecución del proceso de escaneo en un 54 %.
ventajas :
- Supera la situación de ‘Inactividad engañosa’ y aumenta el rendimiento del disco en un factor considerable.
- No requiere la captación previa de operaciones, ya que la mayoría de las veces los eventos futuros no son conocidos por la aplicación. Además, el costo general de almacenar dicha información puede aumentar el costo. Esto se puede superar simplemente esperando unos momentos antes de cambiar la búsqueda.
Desventajas:
- El tiempo de espera está destinado a aumentar y el costo asociado también. En ocasiones, es posible que no tome decisiones óptimas y espere incluso si no hay una operación de lectura sucesiva programada que aumentaría la demora.
- Hay problemas de implementación asociados con él, que incluyen el cálculo del tiempo de posicionamiento para las requests y la creación de un mecanismo de tiempo de espera económico.
Publicación traducida automáticamente
Artículo escrito por AnikashChakraborty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA