Posts

Los misterios de C, el lenguaje inmortal.

Image
Soy un enamorado de C Soy un enamorado de C, lo reconozco, un joven con actitud old school, simpatizante de increpar a los amantes de Java, Python o C# por su vida sencilla y despreocupada.  Si eres un habitual del desarrollo de software para sistemas embebidos o alguna vez has indagado un poco en el kernel de un sistema operativo, seguro que te habrás dado cuenta del enorme papel que ha jugado, esta jugando y jugará el anciano lenguaje C.  Desde su nacimiento en 1972, este lenguaje se ha mantenido como uno de los lenguajes más importantes y más utilizados a nivel mundial. A pesar de sus ya 50 años de vida y la aparición de nuevos lenguajes tan venerados como Java, Python o C#, el viejo C sigue defendiéndose sin demasiados problemas. Él, junto con heredero C++ tienen recorrido aún por muchos años.  Te contaré sus secretos. La pregunta que trataré de resolver es la siguiente:   ¿Qué sentido tiene que se utilice todavía un lenguaje como C que es engorroso y muy difíc...

Patrones de comunicación en arquitecturas software de tiempo real

Image
Como ya se ha visto anteriormente, la arquitectura software, es la disciplina del desarrollo software encargada del diseño a más alto nivel. Esta disciplina es la que permite el desarrollo de sistemas extremadamente complejos de forma que sean coherentes, escalable y mantenibles. La arquitectura software está detrás de componentes extremadamente complejos como pudiera ser el kernel de un sistema operativo, el middleware, la arquitectura de drivers, etc.  Así, la arquitectura software, haciendo uso de patrones y abstracciones software define la estructura organizativa y funcional de los distintos componentes que se integran así como sus interfaces y la comunicación entre ellos, como si los planos de construcción de un edificio tratase. La importancia de la arquitectura software reside no solo en la capacidad de plasmar sistemas enormemente complejos de forma organizada y coherente, sino en la reutilización de estas estructuras una y otra vez en distintos sistemas que presenten probl...

Patrones software en arquitecturas orientadas a control

Image
La arquitectura software sirve como un plano para el diseño de un sistema de computación. Provee una abstracción para gestionar la complejidad del sistema y establecer la comunicación y coordinación entre los diferentes componentes.  El diseño de la arquitectura software de nuestro sistema es una parte fundamental de todo proyecto la cual determinará el adecuado desempeño del mismo así como la calidad de nuestro sistema en cuanto a escalabilidad, mantenimiento y reusabilidad. En los sistemas embebidos toman especial relevancia aquellos componentes software designados para el control del sistema. Estos componentes actúan como los directores de una orquesta formada por los distintos grupos de elementos software del sistema, ofreciendo la coordinación general de todos ellos. En particular, estos componentes, deciden cuándo y en qué orden los demás componentes participan en la secuencia de ejecución y que es lo qué tienen que hacer. A lo largo de esta entrada hablaremos de los principa...

Introducción a los sistemas multitarea

Image
Los sistemas multitarea La multitarea es una característica ofrecida por los sistemas operativos modernos que permite la ejecución de múltiples procesos o tareas independientes de forma alternativa sobre la misma CPU dando la apariencia de que se ejecutan al mismo tiempo. Casi todos los sistemas operativos de hoy en día son sistemas multitarea. Ejemplo de ello lo encontramos en sistemas de uso genérico como Linux, Windows, Android, IOS, etc., en los cuales podemos estar escuchando Spotify a la vez que consultamos el Facebook, jugamos a un videojuego y escribimos en un Word nuestro trabajo de fin de grado.    Sin embargo la multitarea no es exclusiva únicamente de los computadores de uso genérico. La mayoría de sistemas embebidos también implementan este tipo de computación, que les aporta unas capacidades enormes.   El origen. La programación secuencial. Los sistemas embebidos más básicos suelen estar diseñados de tal modo que posee...

¿Qué es un sistema embebido?

Image
  Oye, pero... ¿Qué es realmente un sistema embebido? Sin duda la pregunta más recurrente para aquellos que nos hacemos llamar "desarrolladores de sistemas embebidos" .  La pregunta tiene miga. No es nada fácil de responder y a mí, personalmente, todavía me sudan las manos cuando trato de dar una explicación clara y concisa a un amigo sobre qué es un sistema de estos. Básicamente se suelen dar dos respuestas:   1. La respuesta vaga : "Es un ordenador pequeño que forma parte de una lavadora." 2. La respuesta arrogante: "Es un sistema de computación especializado, integrado en sistemas mecánicos y/o eléctricos, capaz de relacionarse con su entorno físico y llevar a cabo el control de diferentes procesos. Dado que están destinados a realizar tareas concretas, el ingeniero optimiza el sistema para reducir tamaño y costes y aumentar el rendimiento y la fiabilidad." Lo sé. La primera respuesta te habrá dejado indiferente, escasamente he dicho nada, en la...