El post que buscas se encuentra eliminado, pero este también te puede interesar

Cómo crear un sistema operativo

Anuncios

Los sistemas operativos permiten al usuario interactuar con el hardware de su computadora, los cuales se elaboran con cientos de miles de líneas de código, por lo general con los lenguajes C, C++ y ensambladores.

Cómo crear un sistema operativo

Tendrás que tener conocimientos de programación antes de empezar. El lenguaje ensamblador es esencial; otro lenguaje adicional de bajo nivel como C será muy recomendable.

Sistema Operativo

Decide en qué medio deseas cargar el sistema operativo. Podría ser una unidad de CD, DVD, de flash, un disco duro o en otra PC.

Como

Decide qué quieres que haga tu sistema operativo. Si se trata de un sistema operativo completamente capaz que tiene una interfaz gráfica de usuario (GUI, Graphical User Interface) o algo un poco más minimalista, tendrás que saber qué dirección vas a tomar antes de comenzar.

hacer

Especifica qué plataforma de procesador será compatible con tu sistema operativo. Te recomendamos las dos más comunes para las computadoras personales: AI-32 y x86_64.

Windows

Decide si prefieres hacerlo todo tú mismo desde cero o si hay un núcleo existente que te gustaría usar como base para construir. Por ejemplo, programar Linux desde cero será un proyecto para aquellos que le gustaría crear su propia distribución de Linux.

taringa

Decide si vas a utilizar tu propio gestor de arranque o uno pre-creado como el cargador de arranque unificado global (GRUB, Grand Unified Bootloader). Debido a que para programar el código de tu propio gestor de arranque necesitarás poseer un conocimiento amplio del hardware y del BIOS, podría retrasarte para programar el núcleo en sí.

gratis

Decide qué lenguaje de programación vas a utilizar. Si bien es posible crear un sistema operativo con un lenguaje como Pascal o BASIC, será mejor si usas C o el ensamblador. El ensamblador es absolutamente necesario, ya que algunas partes vitales de un sistema operativo lo necesitan. Por su parte, C++ contiene palabras clave que necesitan otro sistema operativo totalmente integrado para poder funcionar.
Para poder compilar un sistema operativo con el código C o C++, por supuesto tendrás que utilizar cualquier compilador. Por lo tanto deberás leer la guía o los manuales o la documentación de usuario del compilador C o C++ que vayas a elegir, ya sea si se incluye con el software o esté disponible en la página web del distribuidor. Tendrás que saber muchas cosas complejas acerca del compilador y para desarrollar con C++ deberás tener conocimientos de decoración de nombre (mangling scheme) del compilador y de su ABI. Se supone que tendrás que conocer los diversos formatos ejecutables (ELF, PE, COFF, binarios sin formato, etc.) y entender que el formato patentado de Windows, PE (.exe), está protegido por los derechos de autor.

Linux

Decide cuál será la interfaz de programación de aplicaciones (API, Application Programming Interface). Te recomendamos POSIX, ya que está bien documentada. Todos los sistemas Unix tienen al menos el soporte parcial para POSIX, por lo que sería trivial conectar programas Unix con tu sistema operativo.

Post

Decide el diseño. Existen núcleos monolíticos y micronúcleos. Los monolíticos implementan todos los servicios en el núcleo, mientras que los micronúcleos tienen un núcleo pequeño combinado con servicios de implementación de demonios de usuario. En general, los núcleos monolíticos son más rápidos, pero los micronúcleos tienen un mejor aislamiento de fallos y fiabilidad.

2015

Considera desarrollar y trabajar en equipo. De esta manera, se resolverán más problemas en menos tiempo, lo cual podría generar un mejor sistema operativo más rápidamente.

mac3

Empieza con algo pequeño. Empieza con cosas pequeñas como mostrar texto e interrupciones antes de proseguir a desarrollar cosas como gestión de memoria y multitarea.

Cómo crear un sistema operativo

Guarda una copia de seguridad de la última fuente de trabajo. Ello será una medida de protección en caso de que surja algún problema grave con la versión actual de tu sistema operativo o tu desarrollo. Si la PC se bloquea y no puede arrancar, será excelente tener una segunda copia con la que puedas trabajar para solucionar el problema.

Sistema Operativo

Considera probar tu nuevo sistema operativo en una computadora virtual. En lugar de reiniciar el equipo cada vez que realices cambios o tengas que transferir ciertos archivos desde el equipo de desarrollo al equipo de prueba, podrás utilizar la aplicación de una computadora virtual para ejecutar tu sistema operativo, mientras el tuyo se mantiene en funcionamiento. Algunas aplicaciones de computadora virtual son VMWare (que también tiene un producto de servidor gratuito), la alternativa de código abierto, Bochs, Microsoft Virtual PC (no compatible con Linux) y xVM VirtualBox.

Como

Saca un “candidato de lanzamiento”. Esto permitirá a los usuarios informarte sobre posibles problemas con el sistema operativo.

hacer

Un sistema operativo también podría ser fácil de usar, así que asegúrate de incluir características fáciles para el usuario, de modo que sean parte integral de tu diseño.

Windows

Consejos
Después de que hayas hecho todo el desarrollo, decide si quieres que el código sea abierto o patentado.
No comiences un proyecto para crear un sistema operativo con el fin de empezar a aprender programación. Si no tienes conocimientos avanzados de C, C++, Pascal u otro lenguaje adecuado, incluida la manipulación del puntero, manipulación de bits de bajo nivel, desplazamiento de bits, lenguaje ensamblador en línea, etc., entonces no estarás listo para desarrollar un sistema operativo.
Si quieres que tu sistema sea viable, tu mayor prioridad tendrá que ser implementar características de seguridad.
Usa los sitios web como OSDev y OSDever para que te ayuden a desarrollar tu propio sistema operativo. Ten en cuenta que para la mayoría de los propósitos, la comunidad OSDev.org prefiere que te limites a hacer uso de su wiki y no participar en el foro. Si decides participar en el foro, existen requisitos para hacerlo: deberás tener conocimientos profundos de C o C++ y el lenguaje ensamblador x86. También deberás comprender conceptos de programación complejos y generales como listas enlazadas, colas, etc. El reglamento de la comunidad OSDev establece explícitamente que el objetivo de la comunidad no consiste en cuidar a los programadores novatos. Si vas a tratar de desarrollar un sistema operativo, no hace falta decir que se supone que tienes que ser un “dios” de la programación. También será necesario que leas los manuales del procesador para la arquitectura que vayas a elegir; ya sea x86 (Intel), ARM, MIPS, PPC, etc. Podrás encontrar fácilmente estos manuales con una búsqueda de Google (“manuales Intel”, “manuales de ARM”, etc.). No te unas a los foros OSDev.org para empezar a hacer preguntas obvias sino simplemente te dirán que leas el manual de respuestas. Deberás tratar de leer Wikipedia y los manuales de las diversas herramientas que desees utilizar.
Comprueba si hay posibles bloqueos y otros errores. Los errores, bloqueos y demás problemas afectarán tu proyecto del sistema operativo
Si quieres que sea fácil, ten en cuenta algunas distribuciones de Linux, tales como Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd, SUSE Studio y SUSE KIWI. Sin embargo, el sistema operativo que crees le pertenecerá a la empresa que haya lanzado primero el servicio (aunque tendrás los derechos de distribuirlo gratuitamente, cambiarlo y ejecutarlo como quieras bajo el GPL).
Te recomendamos hacer una partición completamente nueva para desarrollar el sistema operativo.

Advertencias
Escribir descuidadamente tu sistema operativo sobre el disco duro podría dañarlo por completo, así que ten cuidado.
No podrás crear un sistema completo en dos semanas. Primero haz uno que arranque, luego prosigue con las características interesantes.
No esperes que sea fácil construir un sistema operativo bien hecho. Habrá muchas interdependencias complejas, por ejemplo, para que el sistema pueda manejar varios procesadores, el administrador de memoria deberá tener mecanismos de “bloqueo” para evitar que varios procesadores accedan al mismo recurso al mismo tiempo. Los “bloqueos” para ello necesitarán la presencia de un planificador para asegurarse de que solo un procesador tenga acceso a un recurso crítico en algún momento dado mientras todos los demás esperan. Sin embargo, el planificador dependerá de la presencia de un administrador de memoria. Este es el caso de una dependencia en punto muerto. No existe ninguna solución estándar para este tipo de problemas, por lo que se supone que cada programador de un sistema operativo tendrá que tener la destreza necesaria para lidiar con él.
Si haces algo contraproducente, por ejemplo, escribir bytes aleatorios a puertos I/O aleatorios, bloquearás el sistema operativo y podrías quemar el hardware (en teoría).

Recursos adicionales
Manual: Linux desde cero
Gestor de arranque: GRUB
Aplicaciones de la computadora virtual: Bochs, VM Ware, XM Virtual Box.
Manuales del procesador: Manuales de Intel
Sitios de desarrollo de sistemas operativos: OSDev, OSDever

4 comentarios - Cómo crear un sistema operativo

@Piononin +1
qué interesante loco. te dejo +5 porque es lindo ver éste tipo de cosas en taringa y me interesa algo de la programación
@Mauricio987
puto
@Piononin
@Mauricio987 andá a hacer cálculos de vigas, gil
@leandromataderos83 +1
Estaria bueno poder hacer tu sistema operativo. Mira si sale buenisimo y te lo compra una empresa......El mio se llamaria LEANDROID jajaja
@nicowiner4212 +2
entre pensando que era facil, sali con bronca, aburrimiento, desconcierto e intriga.

PD: me quede sin puntos que picardia...