Escribí una extensión de BIOS (básicamente un controlador de dispositivo para un BIOS, escrito en el ensamblaje) para un controlador de host USB. - La implementación de una estructura de datos aparentemente abstracta de alto nivel, como una lista vinculada en el ensamblaje, no es tan difícil como parece. - El controlador atendió las solicitudes de E/S para teclado y disco utilizando una lista vinculada de paquetes en la memoria principal. Mantuve un conjunto de paquetes gratuitos en otra lista vinculada. La ejecución de E/S básicamente implicaba tomar un paquete gratis desde el comienzo de la lista gratuita, configurar el paquete, agregar el paquete a la lista del dispositivo y volver a agregar el paquete al comienzo del grupo libre cuando finalizaba la E/S. Las listas vinculadas son muy rápidas para moverse por objetos como este, especialmente cuando los objetos son grandes, ya que los objetos en realidad no tienen que moverse. Solo sus punteros necesitan ser actualizados.
Una cola basada en arreglos habría requerido:
- utilizando un/puntero del índice final comenzará, que es rápido pero requiere fijar el tamaño de la cola para que el productor tiene que esperar cuando la cola del consumidor es completa y bloqueo de la cola mientras el paquete entero se llena si hay más de un productor
- cambiando todos los elementos en la cola siempre que insertar/eliminar, que es lento para grandes objetos
enumera lo tanto, vinculados son una buena manera de implementar un n cola de primeros en entrar, primero en salir, arbitrariamente larga, de objetos grandes.
Otra cosa a tener en cuenta es que para objetos pequeños o donde se asignan objetos desde un montón convencional en lugar de un grupo libre personalizado, las matrices pueden ser más rápidas porque la copia no es tan lenta si no se realiza con frecuencia. y la asignación repetida del montón que una lista vinculada requeriría cada vez que se agrega un nuevo elemento es lenta.
Por supuesto, es posible que desee simular y medir su situación particular con algún código de prueba desechable para encontrar la respuesta. Me gusta ejecutar bucles algunos millones de veces con listas y matrices vinculadas, con objetos pequeños y grandes, y el tiempo de cada uno en tiempo real. Algunas veces te sorprenderás.
Si realmente lee ambas preguntas, no es una tontería. La pregunta relacionada quiere una analogía del mundo real con una lista vinculada, esta pregunta quiere ejemplos del mundo real del uso de una. – mmcdole