¿Cuáles son los mejores recursos para aprender un sistema operativo? Me estoy preparando para una entrevista.

Funciones del sistema operativo
El Sistema Operativo es responsable de las siguientes funciones.
1) planificador (tiempo asignado a los programas),
2) administrador de memoria (asignación de espacio a programas)
3) sincronizador (evitar conflictos para un recurso al mismo tiempo)
4) protección (evitar conflictos por memoria)

Curso CS
Una breve introducción a los sistemas operativos.
Introducción rápida a varios temas
Programación
Concurrencia y sincronización
Gestión de la memoria
Memoria virtual

Manos en tutoriales
Tutoriales de Desarrollo de SO

Programación de Algo
Básicamente utiliza el tiempo IO programando otra tarea
El cambio de un hilo a otro (A -> B) puede ocurrir cuando
a) A esta completa
b) A está bloqueado en IO
c) La interrupción del temporizador se adelanta a la fuerza

Cómo funciona el programador
Dentro del planificador de Linux

Sincronización
La sincronización es necesaria ya que el proceso necesita intercambiar información usando una región compartida en la memoria. Sin embargo, no se puede acceder a esta región compartida de ninguna manera. Necesitaban ser accedidos correctamente.
secuencia. Imagine que el saldo bancario se actualiza mediante dos procesos diferentes. Necesidad de coordinar el acceso entre hilos.
La parte del programa donde se accede a la memoria compartida se llama región crítica. Las regiones críticas deben ser accedidas en exclusión mutua.
1) No puede haber dos procesos simultáneamente en la misma región crítica
2) Ningún proceso que se ejecute fuera de la región crítica debe bloquear otro proceso
3) Ningún proceso debe esperar siempre en CS
4) No se pueden hacer suposiciones sobre la velocidad / número de CPU
Estos se denominan exclusión mutua, progreso, espera acotada, independencia de velocidad.

Aproximaciones a la exclusión mutua
algunos enfoques
a) Deshabilitar las interrupciones en la sección crítica
b) Bloquear variables
c) Alteración estricta
Todos estos no son satisfactorios … debido a la espera ocupada
así que usa el mecanismo de dormir y despertar. El proceso en lugar de la espera ocupada se pone en una cola. Esto lleva al concepto de semáforos.

Gestión de la memoria

La memoria se divide en Segmentos, por lo que compartir código / datos es fácil. La proteccion es posible
Si bien la segmentación es buena en el sentido de que proporciona flexibilidad para cargar programas en cualquier lugar de la memoria. Sin embargo, todavía sufre de fragmentación externa.
es decir, hay muchos agujeros en la memoria que no son lo suficientemente grandes para ser asignados a cualquier proceso
Para evitar esto, se introduce Paging. Con la paginación, toda la memoria se divide en páginas de tamaño fijo. Aunque no hay desperdicio debido a la fragmentación externa, puede haber desperdicio dentro de una página. Esto se llama fragmentación interna.
En principio es similar al almacenamiento en caché (totalmente asociativo). Las páginas a las que se hace referencia se cargan en la RAM, las demás se guardan en el disco (Demand Paging)
Ahora, lo que sucede, cuando no hay espacio en la RAM, una de las páginas debe ser desalojada. Esto lleva al concepto de algoritmos de reemplazo de página.
El método más sencillo es utilizar FIFO. La página que se cargó más temprano es desalojada. Pero, ¿qué pasa si esa página es la de acceso frecuente? Esta política no es buena. Belady mostró en FIFO, que aumentar el tamaño de la memoria no conduce necesariamente a la reducción de errores de página. Aunque esto ocurre en los casos excepcionales, no podemos aumentar la memoria y esperar que las fallas de la página se reduzcan (el anamol de Belady no ocurre en los algoritmos LIFO)

Sistema de archivos y operaciones de disco
estructura de puntero de inodo
Página en Odu
Programación de discos
Programación de discos

Sistemas Operativos – Resumen de Algoritmos

* Banquero. Algoritmo utilizado para evitar el interbloqueo.
* Reemplazo de la página. Selección de la página de la víctima en condiciones de poca memoria.
Algoritmos de programación de discos.
* Ascensor. Algoritmo de programación de discos que funciona como un ascensor.
* La búsqueda más corta primero. Algoritmo de programación de discos para reducir el tiempo de búsqueda.
Procesamiento de algoritmos de sincronización.
* Peterson. Permite que dos procesos compartan un recurso de un solo uso sin conflicto, usando la memoria compartida para la comunicación. Puede ser generalizado.
* El algoritmo de la panadería de Lamport. Mejore la robustez de múltiples procesos de manejo de subprocesos mediante la exclusión mutua.
* Dekker. Otro algoritmo de programación concurrente, como el de Peterson.
Algoritmos de programación
* Horario de round-robin. El algoritmo más simple, asigna segmentos de tiempo a cada proceso sin prioridad.
* El trabajo más corto siguiente (o primero). Ejecuta a continuación el proceso de espera con el menor tiempo de ejecución, no es preventivo.
* Tiempo restante más corto. Una versión de la siguiente programación de trabajo más corto que termina el proceso en ejecución antes de elegir otra tarea.

Use sitios web como OSDev y OSDever para ayudarlo a desarrollar su propio sistema operativo.

Tenga en cuenta que, para la mayoría de los propósitos, la comunidad OSDev.org preferiría que siguiera utilizando su wiki y no se uniera al foro. Si decide unirse al foro, existen requisitos previos: debe conocer a fondo C o C ++ y el lenguaje de ensamblado x86. También debe comprender conceptos de programación generales y complejos, como listas enlazadas, colas, etc. La comunidad OSDev, en sus reglas, establece explícitamente que la comunidad no está cerca para cuidar a los nuevos programadores. Si está intentando desarrollar un sistema operativo, no hace falta decir que se espera que sea un “dios” de programación. También es necesario que haya leído los manuales del procesador para la arquitectura del procesador que ha elegido; ya sea x86 (Intel), ARM, MIPS, PPC, etc. Los manuales para una arquitectura de procesador se pueden encontrar fácilmente mediante una búsqueda en Google (“Manuales Intel”, “Manuales ARM”, etc.).
No se una a los foros de OSDev.org y comience a hacer preguntas obvias. Simplemente resultará en las respuestas de “Lea el manual de fallos”. Debe intentar leer Wikipedia y los manuales de las diversas herramientas que desea utilizar.

Recomendaría comprender a alto nivel qué temas necesita aprender en el sistema operativo y luego seguir una clase de universidad, coursera o edX.

También puede encontrar útil este sitio web: es una colección de recursos de aprendizaje de colaboración colectiva para estudiantes y preparación para exámenes para cualquier clase de CS. Beehyve.io – Comunidad en línea para estudiantes de CS

Algunos conceptos fundamentales son:

Simultaneidad, Sistemas de archivos, Sistemas de E / S, Redes, Estructura del sistema operativo, Programación, Seguridad, Máquinas virtuales, Memoria virtual

Algunas clases de Uni son:

  • Universidad de Cornell – CS4410
  • Universidad de Stanford – CS140
  • Universidad de Virginia – CS4414
  • Universidad de Jacobs – CO20-320202
  • Universidad de Duke – CPS 210
  • Universidad de Texas- CS372
  • Instituto de Tecnología de Massachussetts – 6.828
  • Aquí hay un par de listas de diferentes clases de sistemas operativos de estudiantes que han publicado en BeeHyve:

    • BeeHyve.io – Lista de clases de SO en diferentes escuelas
    • BeeHyve.io – Clases de SO en diferentes unis

    Los conceptos teóricos de los sistemas operativos se pueden aprender de cualquier libro o video conferencia. Las videoconferencias y los materiales de Stanford son los mejores para estos.

    El problema con la comprensión del sistema operativo se encuentra en sus detalles intrincados. por ejemplo, si tiene el algoritmo de Peterson, ¿cómo lo implementaría en un kernel del sistema operativo para que tenga dos procesos de exclusión mutua (o utilice Baker para los procesos n) para “real”? La mayoría de las veces la arquitectura o el compilador te arruinarán. Si escribiste un código y el compilador mientras realiza la optimización mueve el código, entonces tu algoritmo no tendrá el mismo significado o puedes decir que no realizará la misma función que quieres que sea. Este es el caso popular en la mayoría de los conceptos de sincronización. Intercambio único de una línea de código y resultado en final desastroso. Esta es también la base de las preguntas en el GATE y otros exámenes de ingreso.

    Si desea aprender a utilizar el sistema operativo por el bien de los exámenes de compensación, puede tomar el concepto que sea para solucionar el problema de la mejor manera posible y verificar los resultados. Para comenzar, puede consultar el GATE anterior. preguntas sobre el sistema operativo. Al observar las preguntas, puede ver los diversos aspectos mediante los cuales los examinadores establecen las preguntas.

    Si quieres entender el sistema operativo y trabajar en el kernel. Debes comenzar con un kernel de SO pequeño y simple. Yo recomendaría PintOS.

    http://www.stanford.edu/class/cs140/projects/pintos/pintos.html

    Es un sistema operativo creado por Stanford. Se parece al kernel de Linux, pero es mucho más simple. Hay algunas pruebas que pueden pasar. Para entender en general cómo funciona el sistema operativo.

    Prepararse para la entrevista y aprender los conceptos en detalle no es exactamente lo mismo.

    Aprender esos conceptos en detalle llevará bastante tiempo y ejercicios prácticos.

    Para un aprendizaje detallado, comience con “Sistemas operativos: un enfoque orientado al diseño” por Charles Crowley. Brinda una visión detrás de escena de cómo se diseña un sistema operativo, por qué el sistema operativo está diseñado de esa manera.

    Después de eso, hay Linux Kernel Development por Robert Love. Una gran visión del funcionamiento interno de Linux.

    Y luego, si desea continuar con más Linux específico, la fuente del kernel de Linux tiene un directorio completo de documentación que contiene notas para el desarrollador sobre todo desde los desarrolladores que escriben Linux.

    1.Libros: –

    • Debe leer –
    • Conceptos de sistemas operativos de Abraham Silberschatz, Greg Gagne y Peter Baer Galvin
    • Sistemas operativos modernos por Andrew S. Tanenbaum
    • Sistemas Operativos: Diseño e Implementación por Andrew S. Tanenbaum
  • Algo mas –
    • Sistemas operativos: internos y principios de diseño por William Stallings
    • Sistemas operativos y middleware de Max Hailperin
    • Sistemas operativos: principios y práctica por Tom Anderson
    • Principios de los sistemas operativos por Brian Stuart
    • Sistemas operativos en profundidad: diseño y programación por Thomas W. Doeppner
    • Sistemas operativos de Harvey Deitel y Paul Deitel

    2. Videos: –

    • Informática 162, 001 – Primavera 2015
    • Sistemas Operativos CS-342
    • CS 377 Spring ’14: Sistemas Operativos
    • Introducción a los sistemas operativos

    “Conceptos del sistema operativo” por Abraham Silberschatz, Peter B. Galvin, Greg Gagne es un muy buen libro para principiantes. Los fundamentos se explican muy claramente en un lenguaje muy fácil de entender, junto con muchos ejemplos de los sistemas operativos más comunes, como Windows, Linux, Solaris y FreeBSD. Si desea ser más cuidadoso con el tema, intentar los ejercicios que se dan al final de los capítulos sería una buena manera de hacerlo.
    Feliz lectura 🙂

    No conozco tu profesión ni la transmisión en la que trabajas, pero los estudiantes de ingeniería usan la siguiente referencia del libro para aprender:

    1. Sistema operativo:

    Sistemas operativos de Galvin: ¡El sitio web MÁS GRANDE y más fresco de la India para Ingenieros y Aspirantes! O encuentra la última versión del mismo.

    Diseño del sistema operativo Unix por Maurice Bach: El diseño del sistema operativo UNIX

    Espero que esto ayude.

    Gracias por A2A.

    http://www.youtube.com/watch?v=O…
    Este es solo uno de los videos relacionados con los sistemas operativos ofrecidos como parte de los cursos NPTEL de los Institutos Indios de Tecnología (IIT).
    Aprendí mucho de ellos. Estoy seguro de que los encontrarás útiles también. Los otros videos relacionados se pueden encontrar como enlaces en el RHS de este video en el enlace de Youtube que he proporcionado.

    Puedes probar la aplicación de Android

    Haga clic aquí para descargar: Sistema operativo – All In One – Aplicaciones de Android en Google Play

    Contiene teoría, preguntas de entrevista, preguntas objetivas y mucho más.

    Pruébalo será útil …

    Ingeniería de Sistemas Operativos del MIT.

    Para lo básico, puedes probar el Tutorial de sistema operativo. Te hace fuerte en lo básico y en el punto teórico del sistema operativo.

    Sólo tienes que seguir estos videos de IIT – Delhi

    Prerrequisito: Conocimientos básicos de lenguaje C.

    https://www.youtube.com/channel/…

    http://udacity.com

    Tiene un curso sobre sistemas operativos, tanto avanzados como básicos.

    Depende de lo que quieras aprender.

    Academicearth.org es uno de los mejores sitios web para aprender sobre los sistemas operativos, sus marcos y otras cosas.