operating system - Barricadas en la creación de un sistema operativo personalizado
operating-system osdev (6)
Poder hablar desde la experiencia real ( AROS , los mayores obstáculos son:
- Gallina y huevo (sin os <-> sin aplicaciones <-> ningún usuario <-> no puede atraer a los desarrolladores)
- ¿Por qué intentar competir contra Windows? Apple no tiene éxito y tienen mucho dinero y Linux no tiene éxito a pesar de tener una comunidad enorme y entusiasta.
- Las grandes empresas no están interesadas en llevar sus aplicaciones a su SO (Adobe Acrobat Reader, MS Office, Macromedia Flash, Java de Sun). Sin estas y sin buenas alternativas de OSS, no puede atraer a los usuarios.
- Lleva mucho tiempo. En mi caso, han pasado aproximadamente 15 años para obtener un 1.0 (y todavía no estamos al 100%).
- Compatibilidad. Para obtener cualquier usuario, debe ser compatible con algo que exista (para que las personas puedan seguir usando sus datos, etc.). Si eres compatible, ¿por qué cambiar a tu sistema operativo?
Entonces, si planea escribir su propio sistema operativo, debe considerar esto:
- Tomará un largo tiempo
- Durante más tiempo, estarás solo. Tuve suerte porque tenía esta comunidad Amiga enormemente fanática y dedicada que simplemente no se rendía.
- Debe encontrar un nicho donde pueda ofrecer un servicio que ningún otro sistema operativo puede ofrecer.
- Las personas que pueden hacer esto a menudo obtienen mejores ofertas de trabajo porque la percepción es "escribir sistemas operativos es difícil" :)
- Serás un miembro de un pequeño grupo de programadores de élite que puede decir: "Escribí mi propio sistema operativo y puedo hacer más que imprimir ¡Hola mundo!"
Me parece que el proyecto más ambicioso más común que los programadores (especialmente los graduados de Comp. Sci. Grads) tratan de abordar es construir su propio sistema operativo. (Tratar de crear su propio lenguaje de programación + compilador probablemente sea aún más común pero no tan ambicioso).
Para aquellos (como yo) lo suficientemente tonto como para intentarlo: aparte del tamaño, ¿cuáles son los obstáculos más grandes o obstáculos inesperados que has encontrado al tratar de crear tu propio SO desde cero?
Editar: una gran pregunta sobre el sistema operativo: ¿Cuáles son algunos recursos para comenzar a desarrollar un sistema operativo?
¿El mayor obstáculo? Creo que es cuando descubres cuántas lagunas hay en las especificaciones y cuántos errores hay en las distintas implementaciones.
En serio, incluso si tuviera todas las especificaciones para todos los componentes (es decir, USB, DMA, IRQ, su CPU ...) encontrará que a) algunas cosas no están especificadas (es decir, qué sucede si envía una secuencia determinada a su dispositivo USB) yb) algunas cosas solo se han solucionado y usted necesita trabajar a su alrededor (es decir, las docenas de errores en la CPU que se detallan en la errata de CPU que publican Intel y AMD)
No sé cuántas soluciones para los errores existen en un sistema operativo moderno, pero como Linux y * BSD son de código abierto, sus controladores le dicen mucho, es decir, este . Y espera obtener algunos efectos secundarios seriamente negativos como este .
Así que sí, si intentas escribir un sistema operativo, prepárate para maldecir mucho a los fabricantes de hardware y comienza a perder tu fe en la calidad de las PC modernas :-)
Creo que hoy en día muchas personas que son buenos programadores no saben lo poco que saben sobre cómo funcionan las computadoras. Necesitarás un control serio de los fundamentos para que una máquina arranque tu sistema operativo desde un disco, y ese tipo de conocimiento se difunde muy poco en la actualidad. No encontrarás ningún estante de libros hoy en día, tampoco.
Curiosamente, hice una pregunta sobre SO hace unas semanas que involucraba el tipo de conocimiento que era el pan de cada día de la programación de PC seria hace 10-15 años, y un comentarista dijo que consideraban que era una cuestión de hardware .
No los estoy golpeando en absoluto, pero creo que fue una reflexión interesante sobre cómo han cambiado las habilidades.
Escribir un SO encuentra los mismos problemas que otros grandes proyectos de software.
Carece de objetivos claramente definidos, y tiene problemas de línea de tiempo / estimación debido a la falta de experiencia.
También sería útil para el programador primero crear un sistema operativo tipo ''hola mundo'', de modo que él / ella aprenda los conceptos detrás del desarrollo del sistema operativo, y luego pueda enfocarse en desarrollar un sistema operativo (sin aprender conceptos de sistema operativo).
Estado allí, hecho eso. El mayor obstáculo, al menos para mí, fueron los controladores de dispositivos. La codificación del núcleo del sistema operativo es la "parte divertida", sin embargo, es inútil sin poder hacer E / S (disco, teclado, video, red, al menos). Hoy, si volviera a tener el tiempo y la voluntad de participar en dicho proyecto, probablemente apuntaré a Xen VM en lugar del hardware en bruto, aunque sea por nada más, porque esconde muchas feas idiosincrasias de x86 y hardware. Xen presenta una bonita vista uniforme e independiente del hardware de los dispositivos de E / S, y aún le da suficiente libertad para jugar con las partes del sistema operativo "interesantes" (mm, gestión de procesos, sincronización, interrupciones, etc.).
Creo que, con mucho, el obstáculo más importante es el de los usuarios: hasta que haya construido la mayoría de un sistema en funcionamiento, es muy poco probable que tenga usuarios. Sin usuarios, no tiene solicitudes de funciones, informes de errores y, en consecuencia, hay una motivación limitada. Sin embargo, incluso si construye un sistema operativo que funcione, no hay garantía de que obtendrá una base de usuarios a menos que pueda encontrar un enlace que atraiga a la gente: lo que diferencia su sistema operativo lo suficiente para que las personas estén dispuestas a probar versiones beta. allí cuando apenas hay aplicaciones en funcionamiento portadoras, etc.
Puede que le interese consultar SkyOS : fue desarrollado en gran medida por un solo desarrollador (ahora un pequeño equipo de desarrollo). El artículo de Wikipedia tiene un buen resumen también. Creo que es un buen ejemplo de cómo una tarea tan desalentadora puede emprenderse y resultar bastante bien. Han hecho algunas cosas interesantes con SkyOS, y es especialmente genial ver que provienen en gran parte de los esfuerzos de una sola persona en su tiempo libre.