2008-08-23 5 views

Respuesta

12

En la universidad, tuve una clase de sistemas operativos en la que usamos un book by Tanenbaum. En la clase, implementamos un controlador de dispositivo en el Minix operating system. 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 ha 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.

7

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.

6

Aparte de los buenos libros ya mencionados (Opeting System Design & La implementación es particularmente buena), obtenga una versión 1.x de Linux Kernel, cárguela en VMWare o VirtualBox y comience a jugar desde allí.

Necesitará 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) visita 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 conseguido los conceptos, mire 2.0, luego 2.2, etc. Prepárese para invertir MUCHO tiempo en el proceso.

1

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

Fue una manera 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.

1

No hay nada mejor que 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 el 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 encarecidamente Linux Kernel Development por Robert Love. Es un libro maravillosamente escrito, mucha información, organizado sano y divertido ... no lectura seca en absoluto.

0

No lo he probado, pero puede ir a Linux From Scratch y comenzar a construir su 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í.

+2

LFS está diseñado para que usted tenga un conocimiento profundo de la creación de una distribución, y realmente no lo ayudará a comprender el núcleo, solo cómo compilarlo. – Draemon

4

Tomando nota de la falta de BSD aquí, pensé que había que saltar adentro:

No he tomado ninguno de los cursos yo mismo, pero he escuchado 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 excelente recurso, ya que se mantienen en una medida mucho mayor que su página de manual de Linux promedio. Tomemos como ejemplo la página de manual uvm(9), que describe la interfaz de memoria virtual en OpenBSD.

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

1

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.

1

Nadie parece haber mencionado que el código BSD es mucho más limpio y 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.

3

¡Te recomiendo los granos 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, es correcto".A la luz de la filosofía de NetBSD podría describirse como “No funciona a menos que esté bien”

Si usted ha estado trabajando bastante tiempo, usted sabrá que NetBSD es una alegría bastante buena para el aprendizaje de codificación. Aunque profesionalmente encontrará más oportunidades con Linux

Cualquiera que sea su elección, comience a unir 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 his book. No es exactamente un libro de kernel, pero tiene ejemplos de NetBSD y ayuda mucho a abordar software de gran tamaño.

1

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, this libro en línea.

Cuestiones relacionadas