Sumérgete en los sistemas es una introducción a la organización, la arquitectura y los sistemas operativos de las computadoras que se usa como libro de texto en el aula en más de 25 universidades.
Este libro de texto es un curso acelerado sobre los principales componentes de hardware y software de un sistema informático moderno.
Diseñado para su uso en una amplia gama de clases de informática de nivel introductorio, guía a los lectores a través de la sección vertical de una computadora para que puedan desarrollar una comprensión de la máquina en varias capas de abstracción.
Los primeros capítulos comienzan con los conceptos básicos del lenguaje de programación C que se usa a menudo en la programación de sistemas.
Otros temas exploran la arquitectura de las computadoras modernas, el funcionamiento interno de los sistemas operativos y los lenguajes ensambladores que traducen las instrucciones legibles por humanos en una representación binaria que la computadora entiende.
Los capítulos posteriores explican cómo optimizar el código para varias arquitecturas, cómo implementar la computación paralela con memoria compartida y cómo funciona la administración de memoria en CPU de varios núcleos.
Accesible y fácil de seguir, el libro utiliza imágenes y ejercicios prácticos para desglosar temas complicados, incluidos ejemplos de código que se pueden modificar y ejecutar.
Biografía de los autores
Suzanne J. Matthews
es profesora adjunta de Ciencias de la Computación en la Academia Militar de los Estados Unidos, West Point.
Tiene un doctorado en Ciencias de la Computación de la Universidad de Texas A&M. Sus intereses de investigación son la computación paralela, las computadoras de placa única y la educación en ciencias de la computación.
Tia Newhall es profesora en el departamento de informática de Swarthmore College.
Tiene un doctorado en Ciencias de la Computación de la Universidad de Wisconsin. Sus intereses de investigación son los sistemas paralelos y distribuidos.
Kevin C. Webb es profesor asociado de informática en Swarthmore College.
Tiene un doctorado en Ciencias de la Computación de UC San Diego. Sus intereses de investigación son las redes, los sistemas distribuidos y la enseñanza de las ciencias de la computación.
Índice del libro
Los enlaces del índice abrirán en una pestaña aparte cada uno de los contenidos del libro original, el contenido es facilmente traducible (botón derecho – traducir al español).
Sumérgete en los sistemas
1. Por la C, la Bella C
- 1.1. Introducción a la programación en C
- 1.2. Entrada/Salida (printf y scanf)
- 1.3. Condicionales y Bucles
- 1.4. Funciones
- 1.5. Matrices y cadenas
- 1.6. estructuras
- 1.7. Resumen
- 1.8. Ejercicios
2. Una inmersión más profunda en C
- 2.1. Partes de la memoria de programa y el alcance
- 2.2. Variables de puntero C
- 2.3. Punteros y funciones
- 2.4. Asignación de memoria dinámica
- 2.5. Matrices en C
- 2.6. Cadenas y la biblioteca de cadenas
- 2.7. estructuras
- 2.8. Entrada/Salida en C
- 2.9. Características avanzadas de C
- 2.10. Resumen
- 2.11. Ejercicios
3. Herramientas de depuración de C
- 3.1. Depuración con GDB
- 3.2. Comandos GDB en detalle
- 3.3. Depuración de memoria con Valgrind
- 3.4. Características avanzadas de GDB
- 3.5. Código ensamblado de depuración
- 3.6. Depuración de programas de subprocesos múltiples
- 3.7. Resumen
4. Representación binaria y de datos
- 4.1. Bases numéricas y enteros sin signo
- 4.2. Conversión entre bases
- 4.3. Enteros binarios con signo
- 4.4. Aritmética de enteros binarios
- 4.5. Desbordamiento
- 4.6. Operadores bit a bit
- 4.7. Orden de bytes enteros
- 4.8. Números Reales en Binario
- 4.9. Resumen
- 4.10. Ejercicios
5. Lo que von Neumann sabía: arquitectura informática
- 5.1. Los orígenes de la informática moderna
- 5.2. La arquitectura de Von Neumann
- 5.3. Puertas lógicas
- 5.4. Circuitos
- 5.5. Construyendo un procesador
- 5.6. La ejecución del procesador de las instrucciones del programa
- 5.7. Ejecución de instrucciones de segmentación
- 5.8. Consideraciones de canalización avanzada
- 5.9. Mirando hacia el futuro: CPU hoy
- 5.10. Resumen
- 5.11. Ejercicios
6. Bajo la C: sumergirse en la Asamblea
7. Ensamblaje x86 de 64 bits
- 7.1. Conceptos básicos de ensamblaje
- 7.2. Instrucciones comunes
- 7.3. Instrucciones aritméticas adicionales
- 7.4. Control condicional y bucles
- 7.5. Funciones en Asamblea
- 7.6. recursividad
- 7.7. Matrices en ensamblaje
- 7.8. Matrices en Ensamblaje
- 7.9. Estructuras en ensamblaje
- 7.10. Desbordamientos de búfer
8. Ensamblaje x86 de 32 bits
- 8.1. Conceptos básicos de ensamblaje
- 8.2. Instrucciones comunes
- 8.3. Instrucciones aritméticas adicionales
- 8.4. Control condicional y bucles
- 8.5. Funciones en Asamblea
- 8.6. recursividad
- 8.7. Matrices en ensamblaje
- 8.8. Matrices en Ensamblaje
- 8.9. Estructuras en ensamblaje
- 8.10. Desbordamientos de búfer
9. Asamblea ARMv8
- 9.1. Conceptos básicos de ensamblaje
- 9.2. Instrucciones comunes
- 9.3. Instrucciones aritméticas
- 9.4. Control condicional y bucles
- 9.5. Funciones en Asamblea
- 9.6. recursividad
- 9.7. Matrices en ensamblaje
- 9.8. Matrices en Ensamblaje
- 9.9. Estructuras en ensamblaje
- 9.10. Desbordamientos de búfer
10. Conclusiones clave del ensamblaje
11. Almacenamiento y jerarquía de la memoria
- 11.1. La jerarquía de la memoria
- 11.2. Dispositivos de almacenamiento
- 11.3. Localidad
- 11.4. almacenamiento en caché
- 11.5. Análisis de caché y Cachegrind
- 11.6. De cara al futuro: almacenamiento en caché en procesadores multinúcleo
- 11.7. Resumen
12. Optimización de código
- 12.1. Primeros pasos
- 12.2. Otras optimizaciones del compilador
- 12.3. Consideraciones de memoria
- 12.4. Resumen
13. El sistema operativo
- 13.1. Arrancar y ejecutar
- 13.2. Procesos
- 13.3. Memoria virtual
- 13.4. Comunicación entre procesos
- 13.5. Resumen y otras funciones del sistema operativo
- 13.6. Ejercicios
14. Aprovechamiento de la memoria compartida en la era multinúcleo
- 14.1. Programación de sistemas multinúcleo
- 14.2. Hilos POSIX
- 14.3. Sincronización de subprocesos
- 14.4. Medición del rendimiento en paralelo
- 14.5. Coherencia de caché
- 14.6. Seguridad del hilo
- 14.7. Subprocesos implícitos con OpenMP
- 14.8. Resumen
- 14.9. Ejercicios