¿Cuáles son los componentes principales de un sistema operativo moderno?

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

  1. Gestión de proceso
  2. Gestión de E / S
  3. Sincronización
  4. Gestión de la memoria
  5. Manejo de errores
  6. Interfaz de programación de aplicaciones (API)
  7. Soporte para arranque
  8. Seguridad
  9. 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.

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.

  1. Deshabilitar completamente las interrupciones
  2. Cerraduras binarias
  3. 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’!

Cualquier sistema operativo debe tener al menos los siguientes componentes:
1> Un modo privilegiado para acceder al hardware directamente
2> Mecanismo para ejecutar aplicaciones de usuario en un modo menos privilegiado

El primero generalmente se llama “núcleo” y el segundo “tierra de usuario”.
Un Kernel de sistema operativo moderno (como Linux) generalmente consta de los siguientes componentes (sin ningún orden en particular):
1> Código de inicio específico de la arquitectura que configura el procesador y las entradas TLB para que el sistema operativo comience a ejecutarse en modo de dirección virtual
2> Subsistema de memoria virtual que programa el MMU del procesador y configura el espacio de direcciones para el espacio del kernel
3> Manejo de interrupciones (programas APIC para enrutar interrupciones a núcleos)
4> El subsistema de gestión de procesos que configura el entorno para iniciar las aplicaciones de tierra del usuario (init / upstart / systemd, etc. es el primer proceso que se inicia)
Subsistema 5> IO que proporciona una forma de acceder a dispositivos periféricos. Esto incluye controladores de dispositivo para varios componentes periféricos y planificador de IO
6> Servicios de kernel que mantienen la cordura del sistema operativo ejecutando servicios de mantenimiento periódicamente. Esto incluye el planificador de procesos, las colas de ejecución, los temporizadores, los demonios / subprocesos de vaciado de disco, etc.
7> Varios componentes de depuración para estadísticas y monitoreo
8> Componentes de interacción entre el usuario y el kernel como el sistema de archivos proc / sys. sistema de archivos del dispositivo, llamadas del sistema, etc.
9> Subsistema de red que proporciona manejo de protocolo de red (TCP, IP, protocolos vecinos, Ethernet, etc.) y capa de socket para computación cliente-servidor
Mecanismo 10> IPC para que las aplicaciones terrestres del usuario se comuniquen entre sí
11> primitivas de sincronización
etc.

La tierra del usuario generalmente consiste en al menos lo siguiente:
1> Biblioteca de espacio de usuario C (libc) que proporciona apéndices básicos para llamadas al sistema y proporciona implementaciones de envoltorios
Biblioteca de subprocesos 2> principalmente para admitir escalar una aplicación a un entorno de múltiples núcleos
3> primitivas de sincronización
4> Varias bibliotecas y aplicaciones de espacio de usuario (como shell, comandos del sistema de archivos, etc.)
5> Proceso tipo init para limpiar procesos muertos
6> Subsistema de contabilidad (sar, top, acct, etc.)
7> Subsistema de autenticación (inicio de sesión, kerberos, PAM, etc.)
etc.

Para construir un sistema operativo básico (no multiprocesamiento, usuario único, dirección física, aplicación única) todo lo que necesita es:
1> Inicialización específica del procesador y configurar MMU (TLB y cachés) para ejecutarse y configurar vectores de servicio de interrupción
2> Tener un controlador básico para acceder al disco duro en modo bloque. No se necesita soporte del sistema de archivos si la aplicación no usa archivos.
2> Configurar el entorno C (configurar la pila de tierra del usuario, inicializar el puntero de instrucción para _start, etc.)

Una vez que la pila de tierra del usuario y los punteros de instrucción están configurados, la aplicación puede ejecutarse indefinidamente en modo supervisor. Por supuesto, debe incluir todas las rutinas de acceso periférico en la misma aplicación.

Consulte cualquier libro del sistema operativo para obtener más detalles. Es un tema muy amplio y requiere un esfuerzo dedicado para dominarlo.

Malware, adware y spyware. Eso es win10, no me culpes.

Win10 y la mayoría de los otros sistemas win ni siquiera hacen lo básico bien. Win puede crear archivos que lo bloquean más tarde, nombres malos y demás. No puedo copiar millones de archivos que descargué y creé en cualquier sistema win sin errores. Tengo que usar software de terceros.

Windows ni siquiera puede escribir controladores universales y cada máquina y versión de sistema operativo es diferente e incompatible. No puedo ejecutar viejos programas win en nuevos sistemas operativos de viento. No son el mismo sistema operativo.

Winxp tenía una administración de memoria bastante buena, la mayoría de los sistemas operativos de Windows simplemente se bloquean.

Tengo programas winxp que hacen cosas que ningún otro programa win puede hacer, pero los usuarios no son importantes para Microsoft, solo nuestro dinero cuenta y no tiene voto.

Kernel, Red, Administrador de procesos, Administrador de archivos, Administrador de entrada / salida, Protección.
Todos están subdivididos en otras categorías, pero no puedo mencionarlos en este momento. Envíame el resto por correo. Con mucho gusto te ayudaré con eso.

vaya a la página de índice de Conceptos del sistema operativo por silberschatz galvin gagne, esa es su respuesta.

More Interesting

¿Qué tipo de perfil de ingeniero de software debería buscar si deseo crear mi propio sitio web y aplicación móvil?

¿Cuál es la diferencia entre un ingeniero DevOps y un desarrollador back-end? Si es así, ¿cuáles son sus roles y qué debería haber estudiado?

¿Cuáles son los principios de un producto de software de calidad?

¿Es posible graduarse de DigitalCrafts y obtener un trabajo en ingeniería de software en Atlanta?

¿Cuáles son algunas aplicaciones SaaS que desearías que existieran?

Parece que no puedo terminar algunos de mis proyectos a medias debido a obstáculos, conocimiento limitado de algoritmos, estructuras de datos, etc. ¿Cómo puedo ser productivo?

Soy muy bueno programando y lo disfruto mucho. ¿Tomar un trabajo en pruebas de software sería bueno para mí? PD: Estoy más fresco y la competencia por los trabajos es muy alta.

¿Cuáles son las mejores grandes empresas de tecnología y nuevas empresas en etapa avanzada para ingenieros de software en Nueva York?

Cómo administrar errores y problemas de UX en tu aplicación

¿Existe una herramienta / marco para tareas distribuidas administradas por recursos?

¿Cómo se puede usar el lenguaje de modelado unificado para soportar el análisis de dominio en el desarrollo de software?

¿Qué certificado debe tener cada desarrollador?

¿Qué invención patentada ha cambiado más el mundo?

¿Cuáles son algunos recursos excelentes para aquellos interesados ​​en crear software paralelo?

¿Cómo define la calidad del código?