no veo diferencias entre usar un SO o usar las librerías del lenguaje que estés utilizando en cada momento.
No me cabe duda que un SO tendrá muchas más aportaciones que las librerías, ¿pero cuál es la principal ventaja que los diferencia?
Desde el punto de vista de la programación no estás haciendo otra cosa que utilizar las librerías del lenguaje u otras creadas por tí o por un buen amigo que te las haya cedido. De hecho si revisamos, por ejemplo, el RTOS de CCS y las funciones que brinda el lenguaje para desarrollar aplicaciones utilizando esta potencialidad del lenguaje, nos damos cuenta, que por ejemplo, la directiva
#use RTOS lo que hace es indicarle al compilador que ponga en el programa final, creado por el compilador, el código del
dispatecher (luego vamos a ver que es) del RTOS, y luego nos ofrece unas funciones de librería como por ejemplo
RTOS_WAIT( ), RTOS_ENABLE( ), RTOS_RUN( ), etc, que nos ayudan a gestionar nuestras tareas (también veremos el concepto y la implementación en el futuro). Bien hasta ahora nada nuevo, ninguna ventaja, y una desventaja: consumo de memoria de programa para el dispatcher y complicaciones de la vida del programador.
Sin embargo la ventaja del SO radica en que le permite al programador contar con una herramienta para
gestionar varias cosas fundamentales en el sistema: el procesador, la memoria, y los periféricos, en nuestro caso eso sería todo nuestro flamante PIC. De todos ellos el más importante es el procesador, ya que es quién hace la mayor parte del trabajo, el objetivo de nuestro SO es mantener ocupado al procesador
con trabajo útil, por ejemplo una demora por sw es hacer trabajar al procesador con trabajo inutil y ese tiempo que se la pasa saltando de aquí para allá lo podemos utilizar en hacer otras cosas y la memoria de programas también, después veremos como hacer eso.
Supongamos ahora que estamos atendiendo un teclado, que no está conectado a ninguna fuente de interrupción, no queda más remedio que encuestar a nuestro teclado para saber si han oprimido o soltado una tecla, si es así, entonces tenemos que hacernos cargo de los rebotes, etc. Hay muchas formas de hacer eso, una de ellas sería: 1-Espera que se oprima o suelte una tecla->2-espera un tiempo a que termine el rebote->3-lee el teclado->4-procesa la tecla->5-hacer algo con el código del teclado->6regresa al punto 1
Pero una forma sencilla utilizando un SO tendría la siguiente forma: 1-Espera que se oprima o suelte una tecla->2-
me dormiré hasta que termine el rebote->3-lee el teclado->4-procesa la tecla->5-
manda un mensaje (el código del teclado) a la función adecuada->6regresa al punto 1. Ahora vemos que la cosa cambió ligeramente porque le hemos dicho a alguien, me voy a dormir un tiempo, despiértame cuando pase ese tiempo, y cuando tengo el dato o código de la tecla, le mando un mensaje a alguien (una función), no llamo directamente a la función, pongo el dato en algún lugar e indico que hay un dato, es asunto de ese alguien tomarlo, procesarlo y notificarlo. Esas dos acciones las hago sirviéndome del SO y le dejo a él el problema de despertarme, y poner el mensaje donde corresponde, sin embargo en este problema el SO puede hacer algo más que en principio no está bajo nuestro control.
Como vemos nuestro programa se queda siempre haciendo lo mismo en un lazo infinito, entonces podemos decirle al SO.
Oye, este código debe ejecutarse todo en tal tiempo. Entonces cuando se cumpla el plazo establecido el SO, le quita el procesador a ese que se lo quiere coger todo para él solo y se lo da a otra función que hace algo parecido o para que se atienda una interrupción, etc. cuando todo el mundo haya recibido su poco de tiempo de procesador, le dice a la función que atiende el teclado: toma el procesdor por el tiempo que te corresponde y así todo el mundo puede tener el procesador para el solo durante un tiempo, es decir ponemos a un vigilante a que reparta equitativamente el tiempo del procesador.
Hasta aquí hemos visto algunas de las ventajas, más adelante veremos muchas más, sin embargo todavía no hemos terminado con la introducción teórica a los SO, pero para los más aventajados esto puede aclarar algunas de sus dudas. Yo se que cosas como esta se pueden hacer blandiendo interrupciones a derecha e izquierda, y con otras técnicas, pero como veremos más adelante los SO nos ayudan en otras cosas, mientras aprovechamos al máximo nuestros preciados recursos del PIC