El sistema operativo permite al usuario interactuar con el hardware de la computadora. El sistema se compone de cientos de miles de líneas de código. Por lo general, el sistema operativo se crea utilizando los lenguajes de programación C #, C, C ++ y ensamblador. El sistema operativo le permite navegar por su computadora mientras guarda y ejecuta comandos. No crea que crear un sistema operativo sea fácil. Se necesita mucho conocimiento para hacerlo.
Paso
Paso 1. En primer lugar, aprenda a programar
El lenguaje ensamblador es muy importante; Es muy recomendable que aprenda otro lenguaje complementario de alto nivel como el lenguaje C.
Paso 2. Decida qué medio desea utilizar para cargar el sistema operativo
Este medio puede ser una unidad de CD, una unidad de DVD, una unidad flash, un disco duro, un disquete u otra PC.
Paso 3. Defina la idea central de un SO
Por ejemplo, en Windows, la idea central es una GUI fácil de usar y mucha seguridad.
Paso 4. Determine qué plataforma de procesador admitirá su sistema operativo
IA-32, ARM y x86_64 son las plataformas más comunes para computadoras personales. Entonces, todos ellos son tu mejor opción.
Paso 5. Decide si prefieres hacer todo tú mismo desde cero o si ya hay un kernel disponible en el que te gustaría construir
Por ejemplo, Linux from scratch es un proyecto para personas que quieren construir su propia distribución de Linux.
Paso 6. Decida si utilizará su propio cargador de arranque o uno preconstruido como Grand Unified Bootloader (GRUB)
Codificar el cargador de arranque usted mismo requerirá un amplio conocimiento de hardware y BIOS. Como resultado, este paso puede dificultar la programación real del kernel.
Paso 7. Decide qué lenguaje de programación usar
Está bien tener un sistema operativo en un lenguaje como Pascal o BASIC, pero debe usar C o Ensamblador. El ensamblaje es muy necesario, porque algunas partes importantes de un sistema operativo lo requieren. Por otro lado, el lenguaje C ++ contiene palabras clave que requieren otro SO completo para ejecutarse.
Para compilar un sistema operativo a partir de código C o C ++, por supuesto, utilizará un compilador u otro. Por lo tanto, es una buena idea consultar la guía de usuario / manual / documentación del compilador C / C ++ de su elección, ya sea incluido en el software o disponible en el sitio web del distribuidor. Necesita saber muchas cosas complicadas sobre el compilador y, para el desarrollo de C ++, necesita conocer el esquema de manipulación del compilador y su ABI. Se espera que comprenda los diversos formatos ejecutables (ELF, PE, COFF, binario básico, etc.) y que comprenda que el formato exclusivo de Windows, PE (.exe), está protegido por derechos de autor
Paso 8. Defina su interfaz de programación de aplicaciones (API)
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 tanto, conectar programas Unix a su sistema operativo debería ser fácil.
Paso 9. Decide tu diseño
Existe algo así como un kernel monolítico y un micro kernel. Los núcleos monolíticos implementan todos los servicios en el núcleo, mientras que los micro núcleos tienen núcleos pequeños empaquetados con los servicios de implementación del demonio del usuario. En general, los núcleos monolíticos son más rápidos, pero los microkernel tienen mejor aislamiento de fallas y confiabilidad.
Paso 10. Considere desarrollar y trabajar en equipo
De esa manera, se necesita menos tiempo para resolver más problemas, lo que probablemente acelerará la construcción de un mejor sistema operativo.
Paso 11. No limpie su disco duro por completo
Recuerde, eliminar una unidad borrará todos los datos que contiene de forma irreversible. Use GRUB u otro administrador de arranque para arrancar dos veces su sistema con otro sistema operativo hasta que su sistema operativo sea completamente funcional.
Paso 12. Empiece poco a poco
Comience con cosas pequeñas como mostrar texto y haga una pausa antes de pasar a cosas como la gestión de la memoria y el trabajo compuesto. También asegúrese de hacer las versiones de 32 bits y 64 bits.
Paso 13. Mantenga una copia de seguridad del último código fuente en funcionamiento
Este paso es útil como salvaguarda en caso de que algo salga mal con la versión actual de SO o desarrollo. Si su computadora falla y no arranca, es una buena idea tener una segunda copia con la que trabajar para que pueda solucionar el problema.
Paso 14. Considere probar su nuevo sistema operativo con una máquina virtual
En lugar de reiniciar su computadora cada vez que realiza cambios o después de enviar archivos desde su computadora de desarrollo a su máquina de prueba, puede usar una aplicación de máquina virtual para ejecutar su sistema operativo mientras se ejecuta su sistema operativo actual. Las aplicaciones de VM actuales incluyen: VMWare (que también tiene un producto de servidor disponible de forma gratuita), alternativas de código abierto, Bochs, Microsoft Virtual PC (no compatible con Linux) y Oracle VirtualBox.
Paso 15. Ejecute el "candidato de lanzamiento" o la versión Beta
Este paso permitirá al usuario notificarle sobre posibles problemas con su sistema operativo.
Paso 16. El sistema operativo también debe ser fácil de usar
Asegúrese de agregar funciones fáciles de usar, conviértalas en una parte integral de su diseño.
Consejos
- Busque posibles interbloqueos y otros errores. Los errores, los interbloqueos y otros problemas afectarán el proyecto de compilación de su sistema operativo.
- Asegúrese de implementar las funciones de seguridad como máxima prioridad si desea que el sistema funcione correctamente.
- Utilice sitios web como OSDev y OSDever para ayudarlo a desarrollar su propio sistema operativo. Tenga en cuenta que para la mayoría de los propósitos, la comunidad de OSDev.org estará más que feliz si usa su wiki y no se une al foro. Si decide unirse a un foro, hay una condición previa: necesita saber realmente sobre C o C ++ y el lenguaje ensamblador x86. También debe comprender conceptos de programación generales y complejos como listas enlazadas, colas, etc. La comunidad OSDev, en sus regulaciones, declara explícitamente que su comunidad no se creó para nutrir a nuevos programadores.
- No te unas con el foro OSDev.org y luego haga la pregunta obvia. Solo se le pedirá que lea la guía. Lea Wikipedia y las instrucciones de cualquier equipo que desee utilizar.
- Si está intentando desarrollar un sistema operativo, definitivamente se le considera el "dios" de la programación.
- También debería haber leído el manual del procesador para la arquitectura de procesador que ha seleccionado; ya sea x86 (Intel), ARM, MIPS, PPC, etc. Los manuales para arquitecturas de procesador son fáciles de encontrar mediante una búsqueda en Google ("manual de Intel", "manual de ARM", etc.).
- Una vez que se haya completado todo el trabajo de desarrollo, decida si desea publicar el código como código abierto o con derechos de autor.
- No empieces un proyecto de sistema operativo para comenzar a aprender a programar. Si no conoce por dentro y por fuera sobre C, C ++, Pascal o algún otro lenguaje adecuado, incluida la manipulación de punteros, manipulación de bits de bajo nivel, desplazamiento de bits, lenguajes ensambladores en línea, etc., no está listo para el sistema operativo desarrollo.
- Crear una partición completamente nueva para 'expandir' SO podría ser una buena opción.
- Si desea una manera fácil, considere distribuciones de Linux como Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD o SUSE Studio y SUSE KIWI. Sin embargo, el sistema operativo que crea pertenece a la empresa que inició el servicio primero (aunque tiene derecho a distribuirlo libremente, modificarlo y ejecutarlo como desee bajo la GPL).
Advertencia
- No obtendrá un sistema operativo completo en dos semanas. Comience con un SO de arranque, luego continúe con cosas más interesantes.
- Escribir descuidadamente su sistema operativo en un disco duro puede dañarlo por completo. Ten cuidado.
- Si hace algo que no se recomienda, como escribir bytes aleatorios en puertos de E / S aleatorios, bloqueará su sistema operativo y (en teoría) podría quemar su hardware.
- No espere que el sistema operativo sea fácil de construir. Hay muchas interdependencias complicadas. Por ejemplo, para crear un sistema operativo capaz de manejar varios procesadores, su Administrador de memoria debe tener un mecanismo de "bloqueo" para evitar que varios procesadores accedan al mismo recurso al mismo tiempo. El "bloqueo" utilizado para esto requeriría un programador para garantizar que solo un procesador acceda a los recursos críticos en un momento dado y que todos los demás tengan que esperar. De hecho, el planificador depende de la presencia del Administrador de memoria. Este es un ejemplo de dependencia sin salida. No existe una forma estándar de resolver este tipo de problema; Se espera que todo programador de sistemas operativos sea lo suficientemente hábil para conocer su propia manera de manejarlo.
Recursos adicionales
- Directrices: Linux desde cero
- Cargador de arranque: GRUB
- Aplicaciones de máquinas virtuales: Bochs, VM Ware, XM Virtual Box.
- Manual del procesador: manual de Intel
- SO sitios de desarrollo: OSDev, OSDever