Tenga en cuenta que mis respuestas se basan en XINU (” X inu I s N ot U nix”) en el que realicé algunos proyectos para mis cursos. No sé si puede dividir con precisión la funcionalidad del sistema operativo en componentes. Pero cada sistema operativo debe admitir lo siguiente
- Gestión de proceso
- Gestión de E / S
- Sincronización
- Gestión de la memoria
- Manejo de errores
- Interfaz de programación de aplicaciones (API)
- Soporte para arranque
- Seguridad
- y, por supuesto, el ‘KERNEL’ más importante para ejecutar el hardware subyacente.
Mi profesor siempre dijo que construir un sistema de E / S eficiente era la parte más difícil. Dado que era un cuello de botella importante y la eficiencia de todo el sistema operativo dependía de qué tan bien manejaba las E / S.
La construcción de un sistema operativo toma muchas decisiones de diseño que deben considerarse. En primer lugar, está el ‘kernel’ que ejecuta el hardware subyacente. Los núcleos populares son Linux y la versión modificada de Linux llamada Android. El núcleo de XINU admite hardware muy específico y necesita mucha modificación para ejecutarse en otro lugar.
- ¿Cómo es la transición de la ingeniería eléctrica al aprendizaje automático y la ingeniería de software?
- Cómo obtener inversión para mi software
- ¿Vale la pena trabajar como ingeniero de software en Accenture en Letonia?
- ¿Cuáles son algunas compensaciones comunes en el desarrollo de software?
- ¿Cuánto tiempo puede pasar escribiendo un nuevo informe de error?
Supongamos que tiene un núcleo que puede ejecutarse en el hardware requerido. Ahora viene el resto de las cosas, como cómo administrar un proceso. XINU tiene una programación basada en prioridades básicas y gestiona los procesos utilizando una variedad de estructuras. Un bloque de control de proceso es solo una entrada en esta matriz. Entrada especial para el proceso ‘NULL’ que se ejecuta si no hay otros procesos para ejecutar.
La gestión de E / S también se puede hacer de manera similar. Buffering y Spooling donde sea necesario. IONULL e IOERR se usan donde se especifica.
La sincronización se puede hacer de tres maneras.
- Deshabilitar completamente las interrupciones
- Cerraduras binarias
- Semáforos
XINU admite de forma nativa los tres anteriores. Nuevamente usando un mecanismo de matriz de semáforo simple.
La gestión de la memoria depende de la arquitectura como monolítica, en capas y microkernel. Es posible actualizar XINU para admitir paginación e intercambio. De lo contrario, todo reside en la memoria desde el arranque hasta el asesinato.
La seguridad y el manejo de errores deben realizarse de manera eficiente y bien pensada desde el principio. Otra ‘pantalla azul de la muerte’ y los virus serán más que comunes.
Las API deben ser fáciles, seguras y eficientes para permitir que los desarrolladores hagan el mejor uso de su sistema operativo y creen buenas aplicaciones.
Y, por supuesto, debe existir soporte de arranque. El arranque de XINU es un simple archivo MAKE y consola de salida.
Entonces, ¿cómo se construye un SO desde cero?
¡Diseñe las especificaciones requeridas, cree el núcleo, compile los componentes anteriores, armelos y deje que la gente los use o los ‘haga’!