Red de conocimiento informático - Material del sitio web - Recopilación de puntos básicos de conocimientos informáticos universitarios.

Recopilación de puntos básicos de conocimientos informáticos universitarios.

1. Principios de composición de computadoras

Si no eres un programador de sistemas operativos/controladores, hay muy pocas oportunidades de tratar con el hardware directamente, porque el sistema operativo los ha protegido. proporcionar Se proporciona una API abstracta para que la utilicemos.

Pero también debes comprender la estructura del sistema von Neumann, la relación entre la CPU y la memoria, el disco duro, varios periféricos, registros, caché y otros conocimientos. Qué instrucciones tiene la CPU, cómo ejecutar estas instrucciones y cómo implementar matrices, estructuras y llamadas a funciones, lo que implica conocimiento de ensamblaje. Por ejemplo, el código original, el código complementario, el código complementario, la representación y operación de números de punto fijo y números de punto flotante también son conocimientos necesarios en programación y están involucrados en casi todos los lenguajes.

Muchos lenguajes ahora se ejecutan en máquinas virtuales. Siempre que comprenda los principios de composición de computadoras y observe qué máquinas virtuales, encontrará que los conceptos son todos iguales. Además, el caché en la CPU, el protocolo de coherencia del caché y las ideas asincrónicas de DMA se reflejarán en la capa de aplicación. "Codificación" es una ciencia más popular, pero también un libro más interesante sobre los principios de composición.

2. Sistema operativo

El sistema operativo es relativamente aburrido. Desde la perspectiva de la capa de aplicación, creo que la clave es dominar las abstracciones proporcionadas por el sistema operativo, incluidos los procesos. , subprocesos y archivos, memoria virtual y problemas de comunicación entre procesos.

Casi todos los lenguajes de programación implican soporte para programación multiproceso o multiproceso, especialmente programación concurrente multiproceso, por lo que es necesario comprender su esencia y cómo se implementan los subprocesos. Debe comprender realmente el significado de "El proceso es la unidad más pequeña de asignación de recursos y el hilo es la unidad más pequeña de programación".

Casi todos los lenguajes de programación implicarán bloqueos y puntos muertos. Es mejor comprender cómo se implementan los bloqueos en el nivel más bajo. Debe comprender la relación directa entre la memoria virtual y la memoria física, la segmentación y la paginación, y los principios básicos del sistema de archivos. Para la programación de procesos, el algoritmo de asignación/reemplazo de páginas, el algoritmo de programación de discos y el sistema de E/S, creo que la prioridad es relativamente baja.

3. Base de datos

Está muy integrada con el trabajo diario, incluye el SQL más básico, varios paradigmas, transacciones y sus niveles de aislamiento, y la implementación de. transacciones Método, índice y su implementación, árbol B+, etc.

4. Principio de compilación

Es posible que nunca escribas un compilador en tu vida, pero es muy probable que utilices herramientas listas para usar para generar/operar un árbol de sintaxis abstracta ( AST), tal vez incluso escribir un DSL (lenguaje específico de dominio). Por lo tanto, debe comprender el proceso de compilación básico de análisis léxico, análisis de sintaxis, análisis semántico, generación de código intermedio y optimización de código.

Información ampliada

Principio del caché

Si existe (hit), los datos se devuelven directamente; si no existe (no válido), la memoria; se accede nuevamente: primero cargue los datos correspondientes en la memoria en el caché y luego devuélvalos al procesador.

El propósito de proporcionar "caché" es adaptar la velocidad de acceso a los datos a la velocidad de procesamiento de la CPU y aumentar la velocidad de acceso a los datos reduciendo el número de accesos a la memoria.

El principio en el que se basa la tecnología de caché es el "principio de localidad de ejecución del programa y acceso a datos". Esta localidad se manifiesta en dos aspectos: localidad de tiempo: si se ejecuta una determinada instrucción en el programa, la La instrucción se puede ejecutar nuevamente en un futuro cercano. Si se ha accedido a ciertos datos, se puede acceder a los datos nuevamente en un futuro cercano.