En la computación en tiempo real , el protocolo de techo de prioridad es un protocolo de sincronización de recursos compartidos para evitar la inversión de prioridad ilimitada y el punto muerto mutuo debido al anidamiento incorrecto de secciones críticas . En este protocolo, a cada recurso se le asigna un límite de prioridad, que es una prioridad igual a la prioridad más alta de cualquier tarea que pueda bloquear el recurso. El protocolo funciona elevando temporalmente las prioridades de las tareas en determinadas situaciones, por lo que requiere un planificador que admita la planificación dinámica de prioridades . [1]
ICPP versus OCPP
Hay dos variantes del protocolo: Protocolo de prioridad de techo original ( OCPP ) y Protocolo de prioridad de techo inmediato ( ICPP ). El peor comportamiento de los dos esquemas de techo es idéntico desde el punto de vista de la programación. Ambas variantes funcionan elevando temporalmente las prioridades de las tareas. [2]
En OCPP, la prioridad de una tarea X se eleva cuando una tarea Y de mayor prioridad intenta adquirir un recurso que X ha bloqueado. Luego, la prioridad de la tarea se eleva al límite máximo de prioridad del recurso, lo que garantiza que la tarea X finalice rápidamente su sección crítica, desbloqueando el recurso. Una tarea solo puede bloquear un recurso si su prioridad dinámica es mayor que los límites máximos de prioridad de todos los recursos bloqueados por otras tareas. De lo contrario, la tarea se bloquea, esperando el recurso. [2]
En ICPP, la prioridad de una tarea se eleva inmediatamente cuando bloquea un recurso. La prioridad de la tarea se establece en el límite de prioridad del recurso, por lo que ninguna tarea que pueda bloquear el recurso puede programarse. Esto asegura la propiedad OCPP de que "Una tarea solo puede bloquear un recurso si su prioridad dinámica es mayor que los límites máximos de prioridad de todos los recursos bloqueados por otras tareas". [2]
- ICPP es más fácil de implementar que OCPP, ya que no es necesario monitorear las relaciones de bloqueo [2]
- ICPP conduce a menos cambios de contexto ya que el bloqueo es antes de la primera ejecución [2]
- ICPP requiere movimientos más prioritarios, ya que esto sucede con el uso de todos los recursos [2]
- OCPP cambia la prioridad solo si se ha producido un bloqueo real [2]
ICPP se denomina "Bloqueo de techo" en Ada , "Protocolo de protección de prioridad" en POSIX y "Emulación de techo de prioridad" en RTSJ . [3] También se conoce como "Protocolo de prioridad del casillero más alto" (HLP). [4]
Ver también
Referencias
- Lui Sha; Ragunathan Rajkumar y John P. Lehoczky (septiembre de 1990). "Protocolos de herencia prioritaria: un enfoque para la sincronización en tiempo real" (PDF) . Transacciones IEEE en computadoras . 39 (9): 1175-1185. doi : 10.1109 / 12.57058 .
- ^ Renwick, Kyle; Renwick, Bill (18 de mayo de 2004). "Cómo utilizar la herencia prioritaria" . embedded.com . Consultado el 11 de noviembre de 2014 .
- ^ a b c d e f g "Copia archivada" (PDF) . Archivado desde el original (PDF) el 13 de noviembre de 2014 . Consultado el 13 de noviembre de 2014 .CS1 maint: copia archivada como título ( enlace )
- ^ Alan Burns ; Andy Wellings (marzo de 2001). Sistemas en tiempo real y lenguajes de programación: Ada 95, Java en tiempo real y POSIX en tiempo real (3ª ed.). Addison Wesley Longmain. ISBN 0-201-72988-1.
- ^ http://user.it.uu.se/~yi/courses/rts/dvp-rts-08/notes/synchronization-resource-sharing.pdf