2008-12-04 9 views
18

Me parece que el proyecto demasiado ambicioso más común que los programadores (especialmente los graduados de Comp. Sci. Grads) intentan abordar está construyendo su propio sistema operativo. (Tratando de crear su propio lenguaje de programación + compilador es probablemente aún más común, pero no tan ambiciosa.)Bloqueos en la creación de un sistema operativo personalizado

Para aquellos (como yo) tan tonto como para tratar: además de la magnitud, Cuáles son los mayores Gotcha ¿o barricadas inesperadas que has encontrado al tratar de crear tu propio sistema operativo desde cero?

Editar: Una gran pregunta OS: What are some resources for getting started in operating system development?

+0

Solía ​​estar creando tu propio editor de texto clasificado bastante alto, también. :) – unwind

+3

Creo que los obstáculos más grandes son el miedo y la duda Si puedes deshacerte de ellos ... – THEn

Respuesta

18

Ser capaz de hablar de la experiencia real (AROS, los mayores obstáculos son:

  • gallina y el huevo (sin OS < -> sin aplicaciones < -> no hay usuarios < -> no pueden atraer 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 sistema operativo (Adobe Acrobat Reader, MS Office, Macromedia Flash, Java de Sun). Sin estas y sin buenas alternativas de OSS, no puede atraer a los usuarios.
  • Toma 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 es compatible, ¿por qué cambiar a su sistema operativo?

Así que si va a escribir su propio sistema operativo, se debe considerar lo siguiente:

  • Se llevará mucho tiempo
  • Durante mucho tiempo, usted estará solo. Tuve suerte porque tenía esta comunidad Amiga enormemente fanática y dedicada que simplemente no se rendía.
  • Debe encontrar un nicho en el que 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 elite que puede decir "escribí el mío" OS y puede hacer más que imprimir '¡Hola mundo!' "
+3

"Apple no tiene éxito"? Ellos hacen miles de millones de dólares al año.Eso suena bastante exitoso para mí. –

+2

Acaban de obtener el 10% de cuota de mercado (http://www.tuaw.com/2009/01/02/apple-market-share-tops-10-windows-share-lowest-since-tracking/). Eso es mucho dinero, pero seguramente no se harán cargo. Entonces sí, en su nicho, tienen éxito. En general, simplemente no pueden molestar al dinosaurio de Windows. Tendremos que esperar hasta que colapse por su propio peso;) –

+0

¿Algún desafío técnico específico además del tamaño? – mudge

0

Escribir un sistema operativo enfrenta los mismos problemas que otros proyectos de software grandes.

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', para que aprenda los conceptos detrás del desarrollo de SO, y luego pueda enfocarse en desarrollar un SO (no aprender conceptos de SO) .

+0

Creo que es más difícil, no hay funciones de librerías, etc. Debe hacer todo desde cero. – les

3

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 lo consideraban un hardware pregunta.

No los estoy golpeando en absoluto, pero creo que fue una reflexión interesante sobre cómo han cambiado las habilidades.

4

¿La mayor barricada? 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é pasa si envía una cierta secuencia a su dispositivo USB) yb) algunas cosas simplemente se bugan y necesita trabajar alrededor de ellas (es decir, las docenas de errores en la CPU que se detallan en la CPU Errata 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 dicen mucho, es decir, this one. Y espera obtener algunos efectos secundarios seriamente negativos como this one.

Así que sí, si intenta escribir un sistema operativo, esté preparado para maldecir mucho a los fabricantes de hardware y comenzar a perder su fe en la calidad de los PCs modernos :-)

+0

"prepárate para ... comenzar a perder tu fe en la calidad de las PC modernas" ¡Sin dudas! Esto me recuerda algo que leí una vez sobre el efecto de: si no quieres ver un truco, no busques el código. Es decir: una vez que conozca las partes internas más profundas, verá cuán descuidado está todo junto. – Dinah

9

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.).

+0

sí Estoy atascado en este punto, incluso es mi primera: c –

2

Creo que, con mucho, el obstáculo más grande es el de los usuarios: hasta que haya construido la mayoría de un sistema en funcionamiento, es muy poco probable que tenga ningún usuario. 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 no hay casi todas las aplicaciones de trabajo portado a él, etc.

Usted podría estar interesado en probar SkyOS - se desarrolló en gran parte por un único desarrollador (ahora un pequeño equipo de desarrollo). El Wikipedia article 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.

Cuestiones relacionadas