Definiciones e implementaciones básicas del SO

4

El paquete Rowley Crossworks (incluye compilador, IDE, interfaz de depuración, etc.) también incluye algo llamado Crossworks Tasking Library (CTL). Desde su página web:

  

CrossWorks Tasking Library, conocida como CTL. CTL es una biblioteca de tareas sin royalties que proporciona una facilidad de sincronización y conmutación de tareas de prioridad múltiple. Además, la biblioteca también puede proporcionar soporte de temporizador e interrupción del manejo.

En general, entiendo la descripción de la parte de tareas de mis investigaciones en programadores de tareas (con la excepción de la sincronización ... ¿qué significa eso?). Sin embargo, el soporte de temporizador y manejo de interrupciones me ha lanzado completamente para un bucle. ¿No están esas cosas integradas en el entorno gcc (que crossworks usa por cierto)? ¿Eso significa que usan algún tipo de envoltorio para la sintaxis gcc:

ISR(PORTB_INT0_vect)
{
    int_pin_handler();
}

Si es así, ¿qué ventaja ofrece poner eso en un kernel en lugar de simplemente escribir manualmente en los puertos apropiados, etc., como lo haría una programación realmente simple? Finalmente, ¿es común que los sistemas operativos pequeños (estoy pensando en FreeRTOS, VxWorks, no en los núcleos de Linux) hagan este tipo de cosas?

Gracias

    
pregunta NickHalden

1 respuesta

3

El punto no es adjuntar un ISR a una interrupción, como dijiste que la mayoría de los compiladores pueden hacer eso.

El punto es lo que está permitido hacer dentro del ISR, especialmente con las primitivas de sincronización y comunicación (bandera, semáforo, cola, buzón, etc.) que proporciona el TL. Este es un asunto delicado, ya que el TL no tiene control sobre cuándo ocurre una interrupción (menos de deshabilitar interrupciones, lo que afecta la latencia máxima de interrupción, que es una cifra muy importante para un TL). Para lograr un buen equilibrio entre el aumento de la latencia de interrupción y la prohibición de los ISR para hacer todo tipo de llamadas de TL es uno de los problemas al escribir un TL, henec 'soporte' para interrupciones significa que al menos han pensado en esto.

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas