El caos de los coches autónomos y otros sistemas
¡Aloha! Después de la escapada de temática de la semana pasada vuelvo con un tema que no es electrónico puro pero que tampoco es un post de un blog de psicología. La semana pasada quería hablar de los sistemas de tiempo real. Y a eso he venido.
Los sistemas de tiempo real son sistemas (aparatos) que interaccionan con el mundo real (lo mismo que Arduino) pero que además tienen en cuenta el tiempo, de manera que cumple unos plazos de tiempo. Es decir, que las cosas se hacen a tiempo porque hay casos en los que no cumplir los plazos puede llevar a consecuencias nefastas.
Pequeña introducción al caos de los sistemas de tiempo real
De hecho existen los sistemas críticos y acríticos. Los acríticos son los que si el tiempo no se cumple exactamente y algún proceso se escapa del tiempo no pasa nada. Imaginemos (ejemplo totalmente inventado y que no utiliza sistemas de tiempo real en el mundo real) un sistema de vigilancia que detecta cuando una persona pasa por un escáner en un aeropuerto y al detectar a la persona debe de realizar el análisis de si esa persona lleva materiales peligrosos encima.
Si al detectar a la persona el propio sistema (el sistema es el aparato en sí) no hace el escaneo al instante la consecuencia es que la persona deberá de esperarse un poco más, pero no hay lloros ni nada.
Ahora pensemos en un coche autónomo de estos que se supone que veremos en 2021 por las calles. Espero que ahí el coche frene cuando detecte a otro coche exactamente en el tiempo determinado, sino muchas aseguradoras tendrán que empezar a contratar a gente a diestro y siniestro. Esto es un sistema crítico, se debe de cumplir con el tiempo perfectamente porque sino las consecuencias son graves o incluso peligrosas.
Inciso: Tengo curiosidad por saber qué pasará con los coches autónomos. ¿No adelantaran porque todos irán al máximo de velocidad permitida en cada tramo? ¿Si hay un accidente de quién es la culpa, de la persona o de la máquina? ¿Quién paga? ¿Habrá máquinas más listas que otras? ¿No habrán accidentes porque se comunicarán entre ellos y todos los coches sabrán lo que hacen los de al lado? ¿Podrás ir a casa de tu nueva pareja sin que lo sepa hasta tu abuela la del pueblo? FIN DE LA CITA |

Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Características de los sistemas de tiempo real
Lo que caracteriza a un sistema de tiempo real son una serie de aspectos. El primero es que se puede saber el tiempo que tardará en responder el sistema. Es decir, cuando pase tal cosa, sabremos cuál es el tiempo que tardará en responder el sistema. Esto es porque los sistemas de tiempo real se planifican.
Esto de la planificación significa que las tareas tienen una serie de prioridades y se hacen mapas temporales en los que se ponen todas las tareas y se sabe, según la prioridad, cuánto tardará algo en hacerse como mucho. De hecho hay tareas que por no ser nada importantes pueden verse relegadas por mucho tiempo hasta que se hagan porque siempre aparece algo más urgente que hacer (Esto mismo me recuerda a las personas en sí…).
Otro aspecto importante es el control que se tiene sobre los procesos. Se controla la prioridad que va a tener esa tarea, cuánta memoria se va a utilizar en esa tarea y qué derechos tiene, qué cosas puede hacer esa tarea (modificar ciertos archivos, solamente leerlos, etc…).
El último aspecto es que podamos confiar en el sistema, que aunque falle el sistema sepa reaccionar. Un ejemplo claro: El ordenador de a bordo de un avión. Este es el caso que me explicó mi profesor cuando quería que entendiese qué era exactamente un sistema de tiempo real.
Me dijo que además de hacer las cosas a tiempo, el sistema operativo de un avión no puede quedarse con un pantallazo azul y dejar de controlar el avión. Lo que debe de hacer es volver a un punto seguro dónde mantenga el control del avión y sepa que no hay ningún peligro para los pasajeros del vuelo. Para mi, esta es la característica más importante de los sistemas de tiempo real.
Los sistemas operativos detrás de estos aparatos…
Y ya que hablo de sistemas operativos (como lo son Windows o UNIX) vamos a ver esto de sistemas operativos de tiempo real. Para manejar los aparatos de los que llevamos hablando desde hace un rato, se necesita un sistema operativo, esa parte que gestiona los recursos hardware y sirve para dar servicio a las aplicaciones.
De esta manera son los sistemas operativos los que contienen el planificador del que hablaba antes. El que se encarga de coger cada una de las tareas y hacerlas cumplir con sus tiempos y su prioridad. Para ello las tareas pueden estar en ejecución, es decir que se están realizando.
También pueden estar preparadas, es decir listas para empezar y esperando a poder hacerlo, para ello se ponen en una lista para ver quién es la siguiente en empezar. Esto se da porque solamente hay un procesador y no puede hacerlo todo a la vez.
Esa sensación que tenemos de darle al pc varias órdenes y que las haga es eso, una sensación. Lo único que hace es darle un poco de tiempo a una tarea, luego a la otra y así nos da la sensación de multitarea, pero no es real. En este tipo de sistemas operativos de tiempo real lo que se hace es acabar las cosas importantes primero y luego las superfluas, se les da prioridad según su importancia y no estamos el mismo tiempo en todos los procesos para dar la sensación de multitarea que se da en los ordenadores normales.
Por último pueden estar bloqueadas, esto quiere decir que el sistema espera una respuesta entonces tiene bloqueados los recursos (la memoria) hasta que tenga toda la información.
De hecho, este bloqueo se utiliza en la comunicación entre tareas. Para que no puedan cambiar algo de la memoria dos tareas a la vez lo que se hace es bloquear el recurso. ESPERA! Pero a ver… ¿No has dicho que el procesador solo hace una tarea cada vez? Eso es, pero si aparece una de más prioridad lo que hace es dejarla pasar, entonces puede que tu estés haciendo una operación en una parte de memoria y una tarea con más prioridad te jod* cambiándote lo que estabas haciendo.
Para evitar esto se utilizan lo que llaman los semáforos. Los semáforos lo que contienen es una variable que dice si el recurso está disponible o no, de manera que nadie la pueda tocar mientras tu la estás manejando. Si piensas un poco encontrarás el problema de esto… Si bloqueas una tarea lo que pasa es que le estás dando una prioridad que no tiene, es decir cuando viene una de mayor prioridad no puede hacer nada porque la de baja prioridad se ha puesto chulita y dice que no, que el recurso es de ella y que los demás esperen, caiga quien caiga…
La verdad es que este problema de la inversión de prioridades es algo que se soluciona dándole mayor prioridad a la tarea que se está realizando. Pero bueno, creo que esto se me ha ido de las manos así que dejamos el tema, que es extenso como él solo.
Un último detalle, todo esto se programa con lenguajes que permiten la gestión de la memoria y los recursos por lo que C no es el más adecuado. Lenguajes como Ada u Occam son lenguajes preparados para esto del tiempo real.
Los coches autónomos controlar, lo que se dice controlar…
Y bueno, espero que ahora entiendas esto del tiempo real mejor o al menos lo conozcas. La verdad es que fue mi asignatura favorita en la carrera y tengo buenos recuerdos de la gestión de memoria y los recursos (Aunque sé que muchos odiaban ese lenguaje de programación tan raro llamado Ada).
La verdad es que solo me queda una duda… ¿Por qué los aviones hace tanto tiempo que tienen el piloto automático y conseguir coches autónomos está resultando tan complicado? La respuesta es esta: por nosotros. En el cielo, cuando empezó el piloto automático estaba la cosa despejada y además es que todo está controlado en el tráfico aéreo.
En los coches, aunque se controle al resto de coches, no nos pueden controlar a los peatones que circulamos por las calles (Esperemos que esto nunca se dé, por favor!). Así que el sistema necesita ser capaz de detectar cuando alguien está en el paso de cebra, cuando alguien cruza sin mirar por en medio de una calle o cuando una bici aparece desde un paso de cebra a la calzada.
Esto hace complicado el sistema, pero bueno, parece que se están intentando cosas aunque por lo que parece las máquinas no tienen aún la picaresca de los humanos. Me contaron el otro día que haciendo unas pruebas, un coche podría haber tardado más de tres horas para incorporarse a una carretera ya que era imposible que se pudiese pasar sin colisión. Los humanos somos más atrevidos y confiamos ciegamente en que el otro frenará cuando nos vea meternos, pero las máquinas aún no entienden de confianza ciega…
¿Comentas ahí debajo? 🙂