sistema operativo licencia caracteristicas linux operating-system kernel bsd osdev

operativo - gnu linux



¿Cuál es la mejor forma de conocer Linux interno de Linux o BSD? (12)

Me gustaría obtener un mejor conocimiento de las partes internas del sistema operativo. Gestión de procesos, gestión de memoria y cosas así.
Estaba pensando en aprender conociendo linux o kernel BSD.
¿Cuál kernel es mejor para aprender?
¿Cuál es el mejor lugar para comenzar?
¿Puedes recomendar buenos libros?


Como usuario de Linux, diría que Linux tiene una gran comunidad para que las personas conozcan el kernel. http://kernelnewbies.org es un gran lugar para comenzar a hacer preguntas y aprender sobre cómo funciona el kernel. No puedo hacer una recomendación de libro, pero una vez que haya leído el material de inicio sobre kernelnewbies, la fuente está muy bien documentada.


En la universidad, tuve una clase de sistemas operativos donde usamos un libro de Tanenbaum . En la clase, implementamos un controlador de dispositivo en el sistema operativo Minix . Fue muy divertido y aprendimos mucho.

Una cosa a tener en cuenta, sin embargo, si eliges Minix, está diseñado para aprender. Es un microkernel, mientras que Linux y BSD son un kernel monolítico, por lo que lo que aprendes puede no ser 100% traducible para poder trabajar con Linux o BSD, pero aún puedes ganar mucho sin tener que procesar bastante tanta información

Como nota al margen, si has leído Just for Fun , Linus en realidad estaba jugando con Minix antes de escribir Linux, pero simplemente no era suficiente para sus propósitos.



Además de los buenos libros ya mencionados (Opeating System Design & Implementation es particularmente bueno), aguarde un lanzamiento de 1.x Linux Kernel, cárguelo en VMWare o VirtualBox y comience a jugar desde allí.

Tendrá que pasar mucho tiempo navegando por el código fuente. Para esto, consulte http://lxr.linux.no/, que es una versión enlazada de la fuente que se puede explorar y hace la vida mucho más fácil. Para la primera versión de Linux (0.01) visite http://lxr.linux.no/linux-old+v0.01/ . La diversión comienza en http://lxr.linux.no/linux-old+v0.01/boot/boot.s . A medida que avances de una versión a otra, revisa ChangeLog e indaga en las partes que han cambiado para ahorrarte volver a leer todo de nuevo.

Una vez que haya comprendido los conceptos, mire 2.0, luego 2.2, etc. Prepárese para invertir MUCHO tiempo en el proceso.


Cuando estaba en la universidad, pasé un semestre estudiando sistemas operativos, y como parte de esto tuve una tarea en la que tuvimos que implementar un sistema de archivos basado en RAM en Linux.

Fue una forma fantástica de comprender las partes internas de la consola de Linux y comprender cómo encaja todo. Y divertirme jugando con la forma en que interactúa con las herramientas estándar.


No hay sustituto para sumergirse en el código. Intente encontrar un controlador o subsistema que le interese y búsquelo. Con herramientas como VMware Workstation es muy fácil hacer los cambios que desee, hacer una instantánea de la máquina virtual y ejecutar su kernel modificado. Si el núcleo entra en pánico en el arranque, ¿a quién le importa? Simplemente regrese a la instantánea y solucione el problema.

Para libros, recomiendo Linux Kernel Development por Robert Love. Es un libro maravillosamente escrito, mucha información, organizado sano y divertido ... no lectura seca en absoluto.


No lo he intentado solo, pero puedes ir a Linux From Scratch y comenzar a construir tu propia distribución de Linux. Parece algo que tomará un montón de tiempo, pero dará como resultado un conocimiento íntimo de las entrañas del kernel de Linux y cómo funciona cada parte. Por supuesto, puede complementar este aprendizaje siguiendo cualquiera de los otros consejos aquí.


Siga los consejos de Mike Stone y comience con Minix. ¡Eso es lo que hizo Linus! El libro de texto está muy bien escrito, y Tannenbaum hace un gran trabajo al mostrar cómo se implementan las diversas funciones en un sistema real.


Nadie parece haber mencionado que el código BSD es mucho más limpio y más consistente. La documentación es mucho mejor también (como ya se mencionó). Pero dado que hay muchos problemas con el sistema que elijas, escogería el que usas con más frecuencia.


¡Te recomiendo los núcleos BSD! Los núcleos BSD tienen muchos menos hackers, por lo que es más fácil seguir su evolución. O bien BSD y Linux kernels tienen grandes hackers, pero algunas personas argumentan que BSD fama inferior filtra los novatos. También es más fácil tomar decisiones de diseño cuando las fuentes no se actualizan 100 veces al día.

Entre las opciones de BSD, mi favorita es NetBSD. Puede que no sea la elección sin dolor que desee para su escritorio, pero debido a que tiene un fuerte enfoque en la portabilidad, la calidad es bastante buena. Creo que esta parte lo dice todo:

Algunos sistemas parecen tener la filosofía de "Si funciona, está bien". En esa luz, la filosofía de NetBSD podría describirse como "No funciona a menos que sea correcto"

Si has estado trabajando lo suficiente, sabrás que NetBSD es una gran alegría para aprender a codificar bien. Aunque profesionalmente, encontrarás más oportunidades con Linux

Cualquiera que sea la elección que elija, empiece a unirse a sus listas de correo, siga las discusiones. Estudia algunos parches y finalmente intenta hacer tu propia corrección de errores. En cuanto a libros, busque artículos de Diomidis Spinellis y su libro . No es exactamente un libro de kernel, pero tiene ejemplos de NetBSD y ayuda mucho a abordar software de gran tamaño.


Linux y Minix son divertidos de aprender. Si también quieres saber cómo es un sistema operativo de micro kernel moderno, puedes mirar QNX. La documentación completa está disponible en línea y es muy accesible. Por ejemplo, este libro en línea.


Al notar la falta de BSD aquí, pensé que podría agregar:

No he tomado ninguno de los cursos, pero escuché a Marshall Kirk McKusick hablar en otras ocasiones, y él es muy bueno en lo que hace.

Y, por supuesto, las páginas man de BSD, que son un recurso excelente, ya que se mantienen en una extensión mucho mayor que la página man media de Linux. Tomemos como ejemplo la página de manual de uvm (9) , que describe la interfaz de memoria virtual en OpenBSD.

No del todo relacionado, pero también recomendaré el video Historia de las distribuciones de Berkeley Software, ya que ofrece una buena introducción a las partes de BSD de la historia y cultura de UNIX, así como a muchos anecdóticos divertidos de la época anterior.