Para mi último año de proyecto en collage desarrollé un pequeño sistema operativo x86 con un administrador de memoria virtual, un sistema de archivos virtual y una multitarea totalmente preventiva. Lo hice de código abierto y el código es muy comentado, echa un vistazo a su página de Source Forge en:
https://github.com/stephenfewer/NoNameOS
Desde mi experiencia puedo recomendar lo siguiente:
Usted se necesidad lenguaje ensamblador x86 para varias partes, esto es inevitable, pero se puede mantener al mínimo. Muy rápidamente obtendrá código C en ejecución, que es una opción probada para el desarrollo de sistemas operativos. Una vez que tenga algún tipo de administrador de memoria disponible, puede ir a C++ si lo desea (necesita algún tipo de administrador de memoria para cosas como nuevo y eliminar).
Sin importar el idioma que elijas, necesitarás el ensamblaje & C para llevar un sistema desde el arranque donde el BIOS te deja en cualquier forma utilizable.
En última instancia, el idioma principal que elija dependerá del tipo de sistema operativo que desee desarrollar.
Mi entorno de desarrollo era el puerto de Windows de las herramientas de desarrollo GNU DJGPP junto con el ensamblador NASM. Para mi IDE utilicé el Eclipse de IBM con el complemento CDT que proporciona un entorno de desarrollo C/C++ dentro de Eclipse.
Para probar, recomiendo BOCHS, un emulador de PC de fuente abierta x86. Te permite iniciar tu sistema operativo rápidamente, lo cual es ideal para probar y se puede integrar en eclipse para que puedas construir y ejecutar tu sistema operativo con solo apretar un botón. También recomendaría usar tanto VMWare como una PC física de vez en cuando ya que puedes detectar algunos errores sutiles de esa manera.
P.S. El desarrollo de SO es muy divertido, pero es muy intenso, el mío tomó la mejor parte de los 12 meses. Mi consejo es planificar bien y su diseño es la clave! disfrutar :)
¿Cuál sería el mejor lenguaje a utilizar? en la arquitectura X86, el lenguaje de ensamblaje x86 y C es el más elegido. – AminM
Votación para cerrar como demasiado amplia. Ver también: http://stackoverflow.com/questions/254149/how-do-you-write-a-basrating-system?rq=1u –