Cómo leer el libro "Comprensión profunda de los sistemas informáticos"
Has estudiado estructura, sistema operativo, arquitectura, principios de compilación y redes informáticas
Creo que se puede dividir en cuatro etapas, de menor a mayor
Uso desde la instalación =gt; comandos comunes de Linux =gt; programación del sistema Linux =gt; desarrollo del kernel y lectura del código fuente del kernel
Al aprender los comandos comunes de Linux, debe aprender a compilar el kernel usted mismo y optimizarlo. sistema y ajustar parámetros
Hay demasiados libros de instalación y comandos comunes. Está bien encontrar uno que sea un poco más detallado. Mientras tanto, necesitas aprender expresiones regulares.
También existe "Programación de red Unix"
En este momento, probablemente necesite leer información para comprender el Formato de archivo elf, conectores y cargadores. Un libro de texto de CMU se llama " "Es mejor comprender en profundidad los sistemas informáticos".
En la etapa de desarrollo del código fuente del kernel, comience escribiendo controladores y profundice gradualmente. el desarrollo del kernel de Linux
El libro de referencia es el siguiente "controladores de dispositivos Linux", que en términos coloquiales se llama ldd
"Desarrollo del kernel de Linux", el nombre coloquial es lkd p>
"Comprensión del kernel de Linux", el nombre coloquial es utlk
"Análisis de escenarios del código fuente de Linux"
Estos cuatro libros son libros de lectura obligada para el desarrollo central
Finalmente, la tercera y cuarta etapa son las más prácticas. Las palabras vacías son inútiles. Solo leer no puede ayudar. No se pueden entender las cosas sin experiencia práctica.
p>Sugerencias para aprender métodos de programación en Linux/Unix
Ruta de aprendizaje sugerida:
Primero aprenda el editor, vim, emacs, etc.
Luego aprende a crear archivos. Solo necesitas saber un poco para que puedas prepararte para programar.
Entonces 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 quieres aprender programación UNIX/LINUX, "APUE" es un libro de texto absolutamente clásico. Profundiza tus habilidades y estudia 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" no solo para aprender programación de redes, sino también para aprender Está muy familiarizado con algunas técnicas comunes de programación de sistemas. Si continúa con la programación de redes, se recomienda leer el tercer volumen de "Interconexión de Internet con TCP/IP", 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" Kamp; R es un libro de texto de programación en lenguaje C clásico. El autor es el inventor del lenguaje C. El libro de texto es fácil de entender en términos simples. 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 los principiantes pueden leerlo, de hecho lo es). Un material complementario para "Programación de redes Unix".
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, pero ahora se usa generalmente BSD Socket, por lo que solo es necesario leer este libro. aproximadamente Más de la mitad servirá. 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 Universidad de Tsinghua tradujo "Programación de redes Unix". 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. Siento que esta colección es mejor que la de Stevens. 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 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 confuso. 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 versió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.