tipos sistemas sistema que operativos operativo los hace funciones ejemplos clasificacion caracteristicas operating-system

operating system - sistemas - ¿Cómo programar un sistema operativo?



sistema operativo ejemplos (7)

Aquí hay algunos enlaces para empezar:

http://www.brokenthorn.com/Resources

http://wiki.osdev.org/Main_Page/

Vas a necesitar GCC y NASM. Creo que también puedes usar GASM.

Aprende las interrupciones del BIOS.

También antes de comenzar a tomar un montón de estándares como: APIC A20 Gate PCI & PCIEx - Buena suerte al intentar obtener uno de esos. Cuesta algún cambio. Intel y AMD - Mira esto, te da mucha información. VGA ATA & SATA etc ... Hay mucho.

También agarrar emuladores como: bochs y qemu

Comprenda cómo funciona la computadora, es decir, cómo se inicia.

Hay mucha información por ahí que solo tienes que hacer tu investigación.

Buena suerte.

Me encanta codificar, pero actualmente solo estoy haciendo desarrollo web. Me gustaría hacer algo que sea único, divertido y muy diferente de la programación web.

Sí, esta podría ser una pregunta tonta, pero creo que sería genial construir un sistema operativo realmente simple. Así que por favor no digas nada grosero. Solo quiero saber las siguientes cosas:

*¿Donde empezar? * Recursos * ¿Qué idioma usaría?

Estaba pensando algo simple como un cmd


Cambiar de webdev a backend será bastante frustrante.

Primero, elija una placa / hardware / arquitectura, tal vez incluso vaya con un simulador de sistema operativo que pueda ejecutar en su máquina. Aprenda C y algunos ensamblajes (Intel, MIPS, ARM, coldfire / motorolla 68k) dependiendo de la arquitectura de CPU para la que está construyendo su sistema operativo.

He visto paquetes de C ++ que le permitirán hacer un sistema operativo en C ++, luego convertirlo automáticamente para su ensamblaje, pero es un dolor de cabeza hacer que se conviertan correctamente. yo no los recomendaria a ellos.

Antes de comenzar a escribir código, debes diseñar tu sistema operativo . Tal vez incluso ponga sus decisiones de diseño en un documento de 50 páginas con algunos diagramas también.

Algunas cosas para pensar:

  • mapa de memoria (dónde está exactamente en la memoria, carga partes de su sistema operativo; dónde residirá)
  • cómo funcionaría su programador (proceso y / o hilo consciente, prioridades). Quizás un diagrama con colas para diferentes prioridades; también un diagrama para los estados de proceso en diferentes colas (Listo, bloqueado, esperando msg, ejecutando, ejecutando, interrumpido, etc.)
  • cómo realizar la comunicación entre procesos (buzones de correo, exclusión mutua, atomicidad, comunicación síncrona frente a asíncrona, formato de message envelopes {sender process id, receiver process id, message type, message} de message envelopes {sender process id, receiver process id, message type, message} )
  • cómo manejar el kernel vs modos de usuario
  • algoritmos de asignación de memoria: escribirá su propio malloc / operador libre (¿cómo hace un seguimiento cuando el usuario asigna memoria dinámicamente? ¿usará un árbol de amigos? lista de enlaces? pila? etc.)
  • cómo manejar las interrupciones (también el cambio de contexto entra aquí - cómo guardará todos los registros y los restaurará: tiene una pila que necesita para hacer un seguimiento de dónde se encuentra)
  • Procesos estándar: proceso de teclado, salida de monitor, temporización,
  • como agregar servicios de cronometraje
  • Cómo cargar procesos de usuario y ejecutarlos.
  • añadir preferencia o no
  • agregue teclas de acceso rápido (útiles para depurar su sistema operativo, especialmente en caso de que se bloquee, puede agregar teclas de acceso rápido para inspeccionar la memoria)
  • probando tu sistema operativo

EDITAR - Actualización de URL El desarrollo de su propio sistema operativo de 32 bits está agotado pero está disponible en línea: http://www.ipdatacorp.com/mmurtl/mmurtlv1.pdf


Comience leyendo algunos libros de sistemas operativos, como los sistemas operativos modernos de Tanenbaums.

Esto debería darle una comprensión de qué problemas necesita resolver para escribir un sistema operativo.



Escribir un sistema operativo es difícil. Recomiendo convertirse en un desarrollador antes de convertirse en un desarrollador de sistemas operativos. Necesitará conocer C / C ++ y el ensamblaje para hacer un sistema operativo básico. Tendrá que pensar cómo hacer su sistema operativo, es decir, tipo de kernel, modo real o modo protegido, mapas de memoria y muchas otras cosas.


Hay muchos recursos cuando los buscas en Google, ¡pero te animo a que no sigas este paso todavía!

Para escribir un sistema operativo, incluso uno simple, necesitará una buena comprensión de cómo funciona su computadora en un nivel bajo, y necesitará al menos C o C ++ y, preferiblemente, ensamblador también. Sin estas habilidades será un proyecto tedioso y frustrante. Es difícil y desafiante incluso para programadores expertos en C


La "biblia" absoluta en el diseño de sistemas operativos es y fue el Diseño e Implementación de Sistemas Operativos de Andrew Tanenbaum - el libro "Dragon" :-)

También hay muchas otras referencias, por ejemplo, Desarrollando su propio sistema operativo de 32 bits .

Microsoft Research también tiene / tuvo un proyecto para crear un sistema operativo en código administrado (C #) llamado Singularity , que podría proporcionar algunas ideas / documentos, etc.

Escribir un sistema operativo completo no es una tarea trivial ni rápida, aunque ...