Crear un sistema operativo

Los sistemas operativos hacen posible que las personas interactúen con el hardware de una computadora; consisten en cientos de miles de líneas de código. Suelen estar hechos con lenguajes de programación C#, C, C++ y ensamblador. Los sistemas operativos le permiten navegar por una computadora, habilitar el almacenamiento de datos y ejecutar comandos. No creas que es fácil hacer un sistema operativo. Requiere mucho conocimiento.

Pasos

Imagen titulada Hacer un sistema operativo de computadora Paso 1
1. Aprende a programar antes de empezar. El ensamblaje es esencial y se recomienda encarecidamente otro lenguaje de programación adicional de alto nivel como C.
Imagen titulada Hacer un sistema operativo de computadora Paso 2
2. Decida en qué medios cargar su sistema operativo. Esto podría ser una unidad de CD, una unidad de DVD, una unidad flash, un disco duro, un disquete o cualquier otra PC.
Imagen titulada Hacer un sistema operativo de computadora Paso 3
3. Decidir cuál es la idea central sobre el sistema operativo. En Windows, por ejemplo, la idea central es una GUI fácil de usar y una fuerte seguridad.
Imagen titulada Hacer un sistema operativo de computadora Paso 4
4. Determine qué plataforma de procesador admitirá su sistema operativo. IA-32, ARM y x86_64 son las arquitecturas más comunes para computadoras personales, por lo que son su mejor opción.
Imagen titulada Hacer un sistema operativo de computadora Paso 5
5. Decide si quieres construirlo todo tú mismo desde cero, o si hay un kernel existente sobre el que quieres construir. Linux From Scratch es un proyecto de ejemplo para aquellos que quieren construir su propia distribución de Linux.
Imagen titulada Hacer un sistema operativo de computadora Paso 6
6. Decida si usará su propio cargador de arranque o uno existente, como Grand Unified Bootloader (GRUB). Dado que la codificación de su propio cargador de arranque requiere un amplio conocimiento del hardware y del BIOS, puede ralentizar la planificación para programar el kernel real.
Imagen titulada Hacer un sistema operativo de computadora Paso 7
7. Decidir qué lenguaje de programación usar. Si bien es posible crear un sistema operativo en un lenguaje como Pascal o BASIC, es mejor utilizar C o Assembly. El ensamblaje es absolutamente necesario ya que algunas partes vitales de un sistema operativo lo requieren. C ++, por otro lado, contiene elementos de lenguaje que requieren otro sistema operativo completo para ejecutarse.
Para poder compilar un sistema operativo desde código C o C++ obviamente necesitas algún tipo de compilador. Por lo tanto, debe leer la guía del usuario/los manuales/la documentación del compilador de C/C++ elegido, ya sea que se suministre con el software o esté disponible en el sitio web del distribuidor. Necesitará saber muchas cosas complicadas sobre su compilador y, para desarrollar en C++, deberá tener conocimiento del esquema de manipulación del compilador y la ABI. Verá los diversos formatos ejecutables (ELF, PE, COFF, binario regular, etc.).), así como el hecho de que el formato nativo de Windows, PE (.exe), tiene derechos de autor.
Imagen titulada Hacer un sistema operativo de computadora Paso 8
8. Decidir qué interfaz de programación de aplicaciones (API) usar. Una buena API para elegir es POSIX ya que está bien documentada. Todos los sistemas Unix tienen al menos soporte parcial para POSIX, por lo que sería trivial portar programas Unix a su sistema operativo.
Imagen titulada Hacer un sistema operativo de computadora Paso 9
9. Decidir sobre el diseño. Hay kernels monolíticos y microkernels. Los núcleos monolíticos ejecutan todos los servicios en el núcleo, mientras que los micronúcleos combinan un núcleo pequeño con demonios de usuario combinados que implementan servicios. En general, los núcleos monolíticos son más rápidos, pero los micronúcleos tienen mejor aislamiento de fallas y confiabilidad.
Imagen titulada Hacer un sistema operativo de computadora Paso 10
10. Considere desarrollar y trabajar en equipo. De esa manera, se necesita menos tiempo para resolver más problemas, lo que puede producir un mejor sistema operativo más rápido.
Imagen titulada Hacer un sistema operativo de computadora Paso 11
11. No borre completamente su disco duro. Recuerde que limpiar su disco eliminará irreversiblemente todos los datos! Use GRUB u otro administrador de arranque para configurar un arranque dual con otro sistema operativo hasta que su propio sistema sea completamente funcional.
Imagen titulada Hacer un sistema operativo de computadora Paso 12
12. Empieza pequeño. Comience con cosas pequeñas como mostrar texto e interrupciones antes de pasar a cuestiones más importantes como la gestión de la memoria y la multitarea. También asegúrese de hacer una versión de 32 bits y 64 bits.
Imagen titulada Hacer un sistema operativo de computadora Paso 13
13. Mantenga una copia de seguridad de su código fuente de trabajo más reciente. Esto proporciona una medida de protección en caso de que algo salga terriblemente mal con la versión actual de su sistema operativo o su desarrollo. Si su computadora falla y ya no puede arrancar, es una buena idea tener una segunda copia con la que trabajar para que pueda depurar.
Imagen titulada Hacer un sistema operativo de computadora Paso 14
14. Considere probar su nuevo sistema operativo con una máquina virtual. En lugar de reiniciar su computadora cada vez que realiza cambios o transferir archivos desde su computadora de desarrollo a su máquina de prueba, puede usar una máquina virtual para ejecutar su sistema operativo bajo su sistema operativo actual. Algunos de los programas de VM incluyen VMWare (también tiene software de servidor disponible gratuitamente), la alternativa de código abierto Bochs, Microsoft Virtual PC (no compatible con Linux) y Oracle VirtualBox.
Imagen titulada Hacer un sistema operativo de computadora Paso 15
15. Liberar un `candidato de lanzamiento`.Esto permitirá a los usuarios alertarlo sobre posibles problemas con su sistema operativo.
Imagen titulada Hacer un sistema operativo de computadora Paso 16
dieciséis. Un sistema operativo también puede ser fácil de usar, así que asegúrese de agregar características fáciles de usar, convirtiéndolo en una parte integral de su diseño.

Consejos

  • Comprobar posibles interbloqueos y otros errores. Comenzarán a aparecer errores, interbloqueos y otros problemas en su proyecto de sistema operativo.
  • Si alguna vez desea que su sistema sea viable, asegúrese de implementar características de seguridad como su máxima prioridad.
  • Con sitios web como OSDev y OSDever puedes desarrollar tu propio sistema operativo. Nota: Para la mayoría de los propósitos, OSDev.org comunidad preferiría consultar su wiki para preguntas y no participar en el foro. Si decide unirse al foro, hay requisitos: debe tener un conocimiento profundo de C o C ++ y el ensamblador x86. También debe comprender conceptos de programación comunes y complejos, como listas vinculadas, colas, etc. La Comunidad OSDev establece expresamente en sus reglas que la Comunidad no está destinada a cuidar a los nuevos programadores.
  • `no te unas el OSDev.org foros para comenzar a hacer preguntas obvias inmediatamente después. Esto simplemente resultará en respuestas como""leer el manual/leer el manual". Lee Wikipedia y los manuales de las diferentes herramientas que quieras usar.
  • Si está tratando de desarrollar un sistema operativo, no hace falta decir que se espera que sea un dios de la programación.
  • También debe haber leído los manuales del procesador para la arquitectura de procesador que haya elegido; ya sea x86 (Intel), ARM, MIPS, PPC, etc. es. Los tutoriales de arquitectura del procesador se pueden encontrar fácilmente con una búsqueda en Google ("manuales de intel", "manuales de brazo" etc.).
  • Una vez que se completa todo el desarrollo, puede decidir si desea lanzar el código como código abierto o propietario.
  • No empieces con un proyecto de sistema operativo para aprender a programar. Si aún no tiene un conocimiento profundo de C, C ++, Pascal o cualquier otro lenguaje apropiado, incluida la manipulación de punteros, la manipulación de bits de bajo nivel, el cambio de bits, el lenguaje ensamblador en línea, etc., entonces realmente no estás listo para el desarrollo de tu propio sistema operativo.
  • Puede ser conveniente crear una partición completamente nueva para el "desarrollo" del sistema operativo.
  • El sistema operativo que cree pertenece a la empresa que inició el servicio primero (aunque tiene derecho a la distribución gratuita y a modificarlo como desee y ejecutarlo bajo la GPL).

    Advertencias

    • No habrá creado un sistema operativo completo en dos semanas. Comience con un sistema operativo que pueda arrancar, luego continúe con las cosas divertidas.
    • Si hace algo tan desaconsejable como escribir bytes aleatorios en puertos de E/S aleatorios, su sistema operativo fallará y puede (en teoría) dañar su hardware.
    • No espere que sea fácil construir un sistema operativo que funcione bien. Hay todo tipo de interdependencias complicadas. Por ejemplo, para permitir que un sistema operativo maneje múltiples procesadores, necesitará usar `mecanismos de bloqueo` de administración de memoria para evitar que múltiples procesadores usen el mismo recurso/recurso al mismo tiempo. El "Cerraduras" utilizados para esto requieren la presencia de un programador/programador para garantizar que solo un procesador pueda acceder a un recurso crítico en un momento dado, con todos los demás esperando. Pero el programador nuevamente depende de la presencia de un Administrador de memoria. Este es un caso de una dependencia de interbloqueo. No existe una forma estándar de resolver problemas como este; Se espera que cada programador de sistemas operativos tenga la habilidad suficiente para encontrar su propia forma de manejarlo.
    • La escritura descuidada de su sistema operativo en el disco duro puede dañarlo por completo. Ten cuidado.

    Artículos de primera necesidad

    • Un ordenador
    • Una CPU para la arquitectura que desarrollarás
    • Suficiente memoria (RAM) para una máquina virtual
    • Un sistema operativo `anfitrión` (utilizado para desarrollar el código fuente de Assembler (y otros), así como para compilarlo y empaquetarlo mientras aún está en sus primeras etapas, eventualmente su sistema operativo puede hospedarse a sí mismo)
    • Un editor de programación codificado por colores (use esto si no tiene un IDE - Entorno de desarrollo integrado)
    • un compilador
    • Una unidad de CD/DVD

    Оцените, пожалуйста статью