Como estudiante de ingeniería de software, ¿quiero construir un sistema operativo pequeño pero capaz como mi Proyecto de Diseño Senior?

Ha habido muchos proyectos de este tipo, algunos de los cuales tuvieron un gran éxito. Pero en su caso, el éxito parece significar que el proyecto sea aceptado. Si ya estás en la universidad, habla con el personal que probablemente lo evaluará.

Que caracteristicas La parte divertida es el núcleo; puede usar software como las utilidades GNU para userland. Pero eso lo obliga a usar la API de Unix (o POSIX), lo que en sí mismo no es una mala idea, sino algo que debe hacer en conocimiento de las restricciones que impone. Pero si es su sistema operativo, debería tener características que Unix no tiene. Personalmente, me interesaría volver a visitar el enfoque de microkernel. Microkernels tradicionales sufren de bajo rendimiento. ¿Puedes encontrar una forma de evitar eso? ¿Cómo manejas el bloqueo? ¿Cómo manejas la administración de memoria? ¿Cómo manejas otros aspectos del multiprocesamiento? ¿Se te ocurre una mejor implementación del sistema de archivos?

Lenguaje: C hasta prueba de lo contrario. Hace décadas, sabía que C ++ era la solución, pero cuando regresé a CI me sorprendió el equipaje, algo mal pensado, que C ++ te impone.

Podrías ver Inferno.

Infierno

Es un sistema operativo muy pequeño, basado en las ideas del Plan 9. Viene con una capa gráfica básica, un tiempo de ejecución para aplicaciones (llamado ‘dis’) y un lenguaje de programación llamado Limbo, que es una de las influencias para el lenguaje Go de Google (La misma gente trabajó en ello).

El problema con Inferno es, por supuesto, que no es tu trabajo, es el trabajo de otra persona, pero tal vez podrías usarlo para construir. Tal vez haga una especie de interfaz de usuario de tableta para eso o algo así.

Depende de lo que estés buscando lograr. Si desea crear un sistema operativo desde cero, entonces querrá verificar los núcleos básicos y los sistemas de archivos. No iría a ningún lado cerca de Linux o los proyectos * BSD, son demasiado grandes, Google para el “núcleo más pequeño” o algo así.

Si desea crear su propio núcleo, sistema de archivos y todo lo demás, no puede usar Inferno, ya que eso sería un viejo plagio, pero si desea los huesos básicos de un sistema operativo gráfico, con sistema de archivos, soporte de red , gráficos básicos, entonces Inferno es un excelente punto de partida.

Sugeriría leer sobre la experiencia de Linus Torvald.

Y luego (o antes) lea “Diseño e implementación de sistemas operativos” por Tanenbaum.