ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Comparación de la programación preferente con la programación cooperativa


Enviado por   •  14 de Octubre de 2022  •  Tareas  •  1.834 Palabras (8 Páginas)  •  123 Visitas

Página 1 de 8

Índice

3. Comparación de la programación preferente con la programación cooperativa

3. Programación preferente y cooperativa

3. Diferencia entre los planificadores preventivos y cooperativos

4. Programación cooperativa y eficiencia

4. Uso conjunto de la programación referente y la cooperativa

5. Comparación del tiempo de ejecución de la concurrencia

5. Lenguajes de programación

6. Hilos y pools de hilos

7. Comportamiento en varios sistemas operativos

Comparativa de algoritmos de concurrencia

Comparación de la programación preferente con la programación cooperativa

Los modelos de programación preferente y cooperativa son dos formas habituales de permitir que varias tareas compartan recursos informáticos, por ejemplo, procesadores o hilos de hardware.

Programación preferente y cooperativa

La programación preferente es un mecanismo basado en la prioridad que da a cada tarea el acceso exclusivo a un recurso informático durante un periodo de tiempo determinado, y luego pasa a otra tarea. La programación preventiva es habitual en sistemas operativos multitarea como Windows. La programación cooperativa es un mecanismo que da a cada tarea acceso exclusivo a un recurso informático hasta que la tarea finaliza o hasta que la tarea cede su acceso al recurso. El tiempo de ejecución de la concurrencia utiliza la programación cooperativa junto con el planificador preventivo del sistema operativo para lograr el máximo uso de los recursos de procesamiento.

Diferencias entre los planificadores preventivos y cooperativos

Los programadores preventivos tratan de dar a varios hilos el mismo acceso a los recursos informáticos para garantizar que cada hilo progrese. En los ordenadores que tienen muchos recursos de computación, garantizar un acceso justo es menos problemático; sin embargo, garantizar una utilización eficiente de los recursos se vuelve más problemático.

Un planificador preventivo en modo kernel requiere que el código de la aplicación confíe en el sistema operativo para tomar decisiones de programación. Por el contrario, un programador cooperativo en modo usuario permite al código de la aplicación tomar sus propias decisiones de programación. Dado que la programación cooperativa permite que la aplicación tome muchas decisiones de programación, reduce gran parte de la sobrecarga asociada a la sincronización en modo kernel. Un programador cooperativo normalmente aplaza las decisiones de programación al núcleo del sistema operativo cuando no tiene ningún otro trabajo que programar. Un planificador cooperativo también difiere al planificador del sistema operativo cuando hay una operación de bloqueo que se comunica al núcleo, pero esa operación no se comunica al planificador del modo usuario.

Programación cooperativa y eficiencia

Para un programador preventivo, todo el trabajo que tiene el mismo nivel de prioridad es igual. Un planificador preferente suele programar los hilos en el orden en que se crean. Además, un programador preferente asigna a cada hilo una franja de tiempo de forma rotatoria, basándose en la prioridad del hilo. Aunque este mecanismo proporciona equidad (cada hilo avanza), tiene un coste de eficiencia. Por ejemplo, muchos algoritmos de cálculo intensivo no requieren equidad. En cambio, es importante que las tareas relacionadas terminen en el menor tiempo posible. La programación cooperativa permite a una aplicación programar el trabajo de forma más eficiente. Por ejemplo, considere una aplicación que tiene muchos hilos. Programar hilos que no comparten recursos para que se ejecuten simultáneamente puede reducir la sobrecarga de sincronización y, por tanto, aumentar la eficiencia. Otra forma eficiente de programar tareas es ejecutar pipelines de tareas (donde cada tarea actúa sobre la salida de la anterior) en el mismo procesador, de forma que la entrada de cada etapa del pipeline ya está cargada en la caché de memoria.

Uso conjunto de la programación preferente y la cooperativa

La programación cooperativa no resuelve todos los problemas de programación. Por ejemplo, las tareas que no ceden equitativamente a otras tareas pueden consumir todos los recursos informáticos disponibles e impedir que otras tareas progresen. El tiempo de ejecución de la capacidad de ejecución utiliza las ventajas de eficiencia de la programación cooperativa para complementar las garantías de equidad de la programación preferente. Por defecto, el Tiempo de ejecución de la capacidad de respuesta proporciona un planificador cooperativo que utiliza un algoritmo de robo de trabajo para distribuir eficientemente el trabajo entre los recursos informáticos. Sin embargo, el planificador de Concurrency Runtime también se basa en el planificador preventivo del sistema operativo para distribuir equitativamente los recursos entre las aplicaciones. También puede crear planificadores personalizados y políticas de planificación en sus aplicaciones para producir un control de grano fino sobre la ejecución de hilos.

Comparación del tiempo de ejecución de la concurrencia con la API de Windows

La interfaz de programación de aplicaciones de Microsoft Windows, a la que normalmente se hace referencia como la API de Windows (y anteriormente conocida como Win32), proporciona un modelo de programación que permite la concurrencia en sus aplicaciones. Concurrency Runtime se basa en la API de Windows para proporcionar modelos de programación adicionales que no están disponibles en el sistema operativo subyacente.

El tiempo de ejecución de la concurrencia se basa en el modelo de hilos de la API de Windows para realizar trabajos paralelos. También utiliza la gestión de la memoria de la API de Windows y los mecanismos de almacenamiento local de hilos. En Windows 7 y Windows Server 2008 R2, utiliza el soporte de la API de Windows para los hilos programables por el usuario y los equipos que tienen más de 64 hilos de hardware. El tiempo de ejecución de la concurrencia amplía el modelo de la API de Windows proporcionando un programador de tareas cooperativo y un algoritmo de robo de trabajo para maximizar el uso de los recursos informáticos, y permitiendo múltiples instancias simultáneas del programador.

Lenguajes de programación

La API de Windows utiliza el lenguaje de programación C para exponer el modelo de programación. El tiempo de ejecución de la concurrencia proporciona una interfaz de programación C++ que aprovecha las características más nuevas del lenguaje C++. Por ejemplo, las funciones lambda proporcionan un mecanismo sucinto y seguro para definir funciones de trabajo paralelo. Para obtener más información sobre las nuevas características de C++ que utiliza el Tiempo de ejecución de la capacidad de ejecución, consulte Visión general.

...

Descargar como (para miembros actualizados)  txt (12.6 Kb)   pdf (99.6 Kb)   docx (14.4 Kb)  
Leer 7 páginas más »
Disponible sólo en Clubensayos.com