Cómo leer "Comprensión profunda de los sistemas informáticos"
Si ha estudiado la estructura, el sistema operativo, la arquitectura, los principios de compilación y la red informática, creo que se puede dividir aproximadamente en 4 etapas, de menor a mayor, instalación y uso =gt; comandos = gt; programación del sistema Linux = gt; Lea el código fuente del kernel. Al aprender los comandos comunes de Linux, debe aprender a compilar el kernel usted mismo, optimizar el sistema, ajustar la instalación de parámetros y los libros de comandos comunes. Está bien encontrar uno un poco más detallado. Durante este período, debe aprender a programar sistemas con expresiones regulares. Recomendamos "Programación avanzada en entornos Unix", que en términos coloquiales se llama APUE y "Programación de redes Unix". En este momento, probablemente necesite leer más información para comprender el formato de archivo elf, los conectores y los cargadores. Un libro de texto de cmu llamado "Comprensión profunda de los sistemas informáticos" es mejor en la etapa de desarrollo del kernel para leer el código fuente del kernel. , comenzando por escribir controladores y gradualmente ingresando al libro de referencia sobre desarrollo del kernel de Linux de la siguiente manera: "controladores de dispositivos Linux", que en términos coloquiales se llama ldd "desarrollo del kernel de Linux", y lkd "comprensión del kernel de Linux" en términos coloquiales ", La jerga se llama utlk "Análisis de escenarios de código fuente de Linux". Estos cuatro libros son libros de lectura obligada para el desarrollo del kernel. Finalmente, las palabras vacías son las más prácticas. Si no lo hace, no podrá entender esas cosas. Sugerencias para aprender métodos de programación de Linux/Unix. Ruta de aprendizaje sugerida: primero aprenda el editor, vim, emacs, etc. Luego, aprenda a crear el archivo. Siempre que sepa un poco al respecto, podrá prepararse para programar. Luego, eche un vistazo al "Lenguaje de programación C" K & R. De esta manera, básicamente puede realizar programación general. Por cierto, busque un libro sobre estructuras de datos. Si desea aprender programación UNIX/LINUX, "APUE" es un libro de texto absolutamente clásico. Profundice sus habilidades y estudie el segundo volumen de "UNP". De esta manera, básicamente podrás dominar los aspectos del sistema. Luego lea el primer volumen de "Interconexión de Internet con TCP/IP" de Douglas E. Comer para aprender algunos conocimientos sobre redes, y luego lea el primer volumen de "UNP" para aprender no solo la programación de redes, sino también algunos métodos comunes de programación de sistemas. Las técnicas son muy familiares. Si continúa con la programación de redes, se recomienda leer el tercer volumen de "TCP/IP para la interconexión de Internet", que contiene mucha programación sobre protocolos de aplicación como telnet y ftp. Si desea escribir un controlador de dispositivo, primero debe estar familiarizado con las interfaces de programación del sistema, como archivos, IPC, etc., y luego estudiar "LDD" 2. Evaluación de varios libros de texto clásicos: "El lenguaje de programación C" K&R es un libro de texto de programación en lenguaje C clásico. El autor es el inventor del lenguaje C. El contenido del libro de texto es fácil de entender y comprender. Aunque es un poco antiguo, es un manual imprescindible y todavía lo leo a veces. La extensión es relativamente pequeña, pero cada vez que lo leas, ganarás algo nuevamente. Además, en su lugar se puede utilizar la "Programación en lenguaje C" de Tan Haoqiang. "Programación avanzada en entorno Unix" W. Richard Stevens: También es un libro muy clásico (tonterías, ¡cómo es posible que el libro de Stevens no sea un clásico! Aunque puede ser leído por principiantes, de hecho es parte de "). Programación de red Unix" Esta información de respaldo. El nivel de traducción nacional de "Programación avanzada en entorno UNIX" no es muy bueno. Ahora hay una versión fotocopiada y es más fácil de leer directamente en inglés que en chino. "Programación de red Unix" W. Richard Stevens: El primer volumen habla sobre la interfaz de programación de red BSD Socket y otra interfaz de programación de red. Sin embargo, ahora generalmente se usa BSD Socket, por lo que solo necesita leer aproximadamente la mitad de este libro. El segundo volumen no está diseñado para cubrir cuestiones de red, sino que habla principalmente sobre comunicación entre procesos y subprocesos Posix.
Entonces, después de ver "APUE", puedes verlo. Básicamente, el sistema se resume en "APUE" y "UNP" vol2. Después de leer "UNP", conocerá la mayoría de las habilidades de programación de sistemas, incluso si el primer volumen trata sobre programación de redes. En China, la "Programación de redes Unix" fue traducida por la Universidad de Tsinghua. El traductor tiene una experiencia relativamente alta y la traducción es relativamente buena. Por eso se recomienda leer la versión china. "TCP/IP Xiangjie" tiene tres volúmenes: el volumen uno habla sobre protocolos, el volumen dos habla sobre implementación y el volumen tres habla sobre aplicaciones de programación. No he visto mucho de eso. , pero también se dice que es un clásico. No tengo tiempo para leer el Volumen 2, así que no puedo comentar. "Interconexión de Internet mediante TCP/IP" Douglas.E.Comer tiene tres volúmenes: el volumen uno habla sobre principios, el volumen dos habla sobre implementación y el volumen tres habla sobre protocolos avanzados. Parece que esta colección es mejor que la de Stevens, e incluso Stevens tiene que admitir que su primer volumen es muy clásico. De hecho, incluso si no tienes ningún conocimiento de Internet en el primer volumen, conocerás bien los entresijos de Internet después de leerlo. Hay muchos ejercicios en el primer volumen que también están diseñados para ser clásicos y prácticos, porque el autor es profesor y el primer volumen es un libro de texto para estudiantes graduados extranjeros. No hay respuestas a los ejercicios, y se deja que los lectores piensen en ellas, porque las respuestas a las preguntas pueden convertirlo en un Hacker intermedio. Puede pedirle a Douglas las respuestas a estas preguntas, pero él es el único que puede hacerlo. Solo le doy al profesor el Documento 2. No pienso mucho en él. El Documento 3 se puede utilizar como manual de referencia, y los ejemplos que contiene también son muy clásicos. Si ha leído el código fuente de Qterm, sabrá que la mayor parte de la parte de implementación de telnet de Qterm proviene del código fuente de este libro. Para un libro sobre principios de red, lo recomiendo en lugar de la "Explicación TCP/IP" de Stevens. "Sistema operativo: diseño e implementación" es un libro sobre sistemas operativos, que utiliza Minix como ejemplo. El idioma nativo del autor no es el inglés, por lo que el inglés parece bastante oscuro. La traducción nacional es "Diseño e implementación del sistema operativo". No he leído la versión china porque el traductor es You Jinyuan y su traducción de "APUE" ya me ha decepcionado. Después de leer este libro, comprenderá claramente cómo funciona el sistema operativo subyacente. "Linux Device Driver" 2e, uno de los pocos buenos libros sobre controladores de dispositivos Linux. Sin embargo, el contenido es un poco complicado. Si no tiene experiencia en escribir controladores, se sentirá un poco confundido cuando lo lea por primera vez. La traducción nacional es la segunda edición de "Linux Device Drivers". Tengo un profundo contacto con los traductores de la primera y segunda edición, pero en general, aunque la traducción de la segunda edición es algo insatisfactoria, sigue siendo relativamente buena. Mucho mejor que la primera edición. Para leer este libro, al menos debe encontrar algunos libros sobre "Principios de computadora" y "Arquitectura de computadora" para leerlos de manera informal. Al menos debe tener cierta comprensión del proceso de trabajo del hardware y las computadoras.