Skip to main content

Conclusión

El desarrollo de DariOS ha sido una experiencia altamente enriquecedora y multidisciplinar que me ha permitido aplicar y profundizar en conocimientos fundamentales de informática, abarcando los módulos de sistemas operativos, fundamentos de hardware y programación, así como herramientas modernas de desarrollo de software.


Herramientas y tecnologías empleadas

Durante el proyecto he utilizado una combinación de herramientas tradicionales y modernas que han permitido un flujo de trabajo eficiente y profesional:

  • Visual Studio Code como entorno de desarrollo principal, que facilita la escritura y depuración del código.
  • Programación en lenguaje ensamblador NASM para código en modo real de 16 bits, lo que me ha permitido entender en profundidad el funcionamiento interno del hardware y el sistema operativo a nivel muy bajo.
  • Desarrollo en C, para crear funciones y comandos que se integran con el ensamblador, aprovechando la potencia y legibilidad de C junto con el control detallado de ASM.
  • Archivos batch para automatizar tareas como la compilación y el empaquetado, aumentando la productividad y reduciendo errores manuales.
  • Uso de Git y GitHub para el control de versiones y gestión colaborativa, integrando workflows modernos que aseguran calidad, trazabilidad y un desarrollo ordenado.
  • NASM para compilar el código ensamblador y generar binarios adecuados para su ejecución en modo real.
  • QEMU como emulador, permitiendo realizar pruebas rápidas y seguras del sistema operativo sin necesidad de hardware físico.

La combinación de herramientas clásicas como NASM con plataformas actuales de gestión de código y automatización (GitHub, workflows) ha demostrado que los conceptos tradicionales y modernos pueden convivir y potenciarse mutuamente en el desarrollo de sistemas.


Aprendizajes en sistemas operativos

Trabajar con DariOS me ha permitido entender en profundidad el funcionamiento interno de un sistema operativo, especialmente en modo real de 16 bits. He aprendido cómo gestionar la pila para almacenar y recuperar valores de manera segura y eficiente, cómo se manejan interrupciones de hardware para interactuar con el sistema, y cómo controlar el flujo de ejecución mediante saltos y llamadas a funciones.

Además, la implementación de un bootloader, la gestión de la pantalla, el cursor y el buffer de entrada, así como el desarrollo de comandos personalizados, me han acercado a la complejidad y precisión necesaria para construir desde cero un sistema operativo funcional. Este conocimiento es fundamental para entender cómo las capas más altas de software interactúan con el hardware.


Aprendizajes en fundamentos de hardware

El trabajo en modo real ha implicado una interacción directa con el hardware a través de registros, puertos, interrupciones y memoria segmentada. Este contacto cercano me ha dado una comprensión profunda de la arquitectura del computador, especialmente la forma en que la CPU, la memoria y los dispositivos periféricos se comunican y sincronizan.

Aunque no haya sido capaz de crear un sistema de archivos, ya tengo una idea de como funcionan, y como funciona en general la memoria.

He trabajado con componentes como el reloj del sistema, el teclado, la pantalla y la gestión de energía, llegando a adquirir una pequeña base en arquitectura de computadores y en cómo el software puede controlar directamente el hardware para realizar tareas básicas y críticas.


Aprendizajes en programación

Programar en ensamblador NASM y en C para un entorno tan limitado y cercano al hardware ha reforzado mis habilidades en programación de bajo nivel. He implementado funciones complejas, como la generación de números pseudoaleatorios, la conversión y manipulación de datos binarios y ASCII, y la lectura y escritura directa en memoria y dispositivos.

Este trabajo me ha enseñado la importancia de la precisión, la optimización y el control exhaustivo del flujo de datos y ejecución, aspectos menos evidentes en lenguajes de alto nivel, pero cruciales en programación de sistemas y controladores.


Integración de métodos tradicionales y modernos

Uno de los aspectos más enriquecedores del proyecto ha sido la integración de técnicas y tecnologías tradicionales, como la programación en ensamblador de 16 bits y el manejo directo de hardware, con metodologías modernas de desarrollo de software, incluyendo el uso de repositorios en GitHub, control de versiones distribuido y workflows automatizados.

Esta combinación ha permitido no solo avanzar en el desarrollo técnico, sino también adoptar buenas prácticas de ingeniería de software que garantizan calidad, mantenibilidad y colaboración eficaz, habilidades imprescindibles para proyectos de cualquier escala.


Reflexión final

En resumen, DariOS ha sido un proyecto multidimensional que ha abarcado desde la programación de bajo nivel y la gestión directa del hardware, hasta la aplicación de metodologías modernas de desarrollo. Este balance me ha proporcionado una visión integral del funcionamiento interno de los sistemas informáticos, así como de las herramientas y prácticas actuales que potencian el trabajo del desarrollador.

Por desgracia no he podido llegar a varios de los objetivos ya que no tenia conocimiento alguno de como funcionaba ensamblador, y puse cosas fuera de mi alcance desde el total desconocimiento.

Además programar con ensamblador no es nada parecido a la experiencia que tenía programando con otros lenguajes. Es mucho mas complejo y con menos posibilidad de encontrar ayuda, y más en 16 bits que a dia de hoy esta obsoleto, aun asi he disfrutado la experiencia.

Esta experiencia me ha dotado de un conocimiento sólido y práctico que me será invaluable para futuros proyectos y para mi carrera profesional en informática, especialmente en áreas relacionadas con sistemas operativos, desarrollo de software embebido y programación de bajo nivel.