Galería de mapas mentales Cómo se ejecuta el programa
Este libro presenta a los profesionales de la informática la composición de las computadoras, CPU, operaciones binarias, memoria, sistemas operativos, ejecución de programas, ensamblaje, control de hardware, aprendizaje automático, etc., lo que permite a los lectores tener una comprensión profunda de cómo los programas pasan por varios procesos a partir de archivos fuente Ejecutando en su computadora es un libro de divulgación científica de lectura obligada para los entusiastas y profesionales de la informática.
Editado a las 2024-01-18 19:32:06,Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
¿Cómo se ejecuta el programa?
1.Procesador del programa: CPU
Consta de cuatro partes: registro, controlador, unidad aritmética y reloj. Utilice señales actuales para conectarse.
Registro: almacenamiento temporal de datos e instrucciones.
Responsable: Controlar la lectura de datos e instrucciones en el registro
Reloj: sincronización del programa
Operador: opera sobre los datos leídos del registro.
CPU es una colección de varios registros funcionales.
Los registros solo pueden manejar lenguaje de máquina
El lenguaje de máquina se compila a partir de un lenguaje de programación de alto nivel.
Registro 1: Contador de programa
Determinar la ejecución del programa ejecutando instrucciones de dirección.
Registro 2: Registro de bandera
Guardar los resultados de la operación (positivo, negativo, cero, desbordamiento, paridad)
Llamada de función
Esto se logra estableciendo el valor del contador del programa en la dirección de almacenamiento de la función.
Utilice la pila para obtener la dirección de llamada y la dirección del remitente
Almacenamiento de matrices
Utilice el registro base para almacenar el contenido de la matriz y el registro de índice para almacenar el índice de la matriz.
2. Los datos se representan en binario.
Por qué se usa la representación binaria: dentro de la computadora, los diodos se usan para representar dos situaciones: pasa o falla.
La unidad más pequeña del sistema binario es el bit, que representa el número de bits en un número binario.
La unidad básica del binario es el byte, un byte son 8 bits.
Cálculos binarios
Método de conversión entre binario y decimal: Suma los resultados de las potencias de los bits binarios para obtener el número decimal
La operación de números decimales en la computadora todavía se convierte en números binarios para el cálculo: por ejemplo, desplazar el número binario una posición hacia la izquierda equivale a multiplicar el número por 2.
La resta dentro de la computadora se implementa mediante la suma, aquí usamos "complemento"
El bit más alto del binario es el bit de signo, 1 representa un número negativo, 0 representa un número positivo
Al representar números negativos, es necesario utilizar "complemento" para calcular
Para encontrar un número negativo, primero use un número binario de 8 dígitos para representar el número positivo, luego invierta los números de todos los dígitos y luego agregue 1 al resultado.
Al calcular la suma, si el bit más alto excede el rango de cálculo, se desbordará y la computadora descartará automáticamente el valor de desbordamiento.
Los tipos sin signo son números binarios y todos ellos son números positivos. El tipo con signo elimina el bit más alto para representar el signo y deja solo n-1 bits, por lo que los valores positivos y negativos representan la mitad.
La diferencia entre desplazamiento lógico a la derecha y desplazamiento aritmético a la derecha
Desplazamiento lógico a la derecha: Equivale a mover la imagen hacia la derecha, llenando directamente la posición vacante a la izquierda con 0
Desplazamiento aritmético a la derecha: los dígitos binarios se mueven hacia la derecha en su conjunto y las posiciones vacantes se llenan con 0 o 1
Si el valor es un valor negativo representado por el complemento a uno, entonces desplazando hacia la derecha y sumando 1 al bit vacante más alto, se pueden implementar correctamente operaciones numéricas como 1/2, 1/4, 1/8, etc. Si es un número positivo, simplemente suma 0 al bit más alto.
Los números binarios se convierten en números hexadecimales y la longitud se puede reducir a 1/4 del original, lo que es más conciso y claro.
Todo lo que tenga 0x al principio representa el valor hexadecimal.
3. Números de coma flotante
Cuando se usa binario para representar un decimal, es imposible lograr una representación precisa y solo se puede hacer un divisor con un rango de precisión.
La representación de números de coma flotante es el estándar IEEE.
Número de coma flotante de precisión simple (32 bits)
Signo parte 1, exponente parte 8, mantisa parte 23
Número de coma flotante de doble precisión (64 bits)
Signo parte 1, exponente parte 11, mantisa parte 52
Método de expresión: expresión regular
Sistema EXCESO
El sistema EXCESS se comporta de tal manera que los números negativos no necesitan representarse mediante un signo estableciendo el valor medio del rango representado por la parte del exponente en 0.
4.Memoria
Los datos se pueden leer de la memoria y la información de apagado desaparece.
Hay 8 pines de señal de datos, por lo que puede representar 8 bits y 1 byte.
Hay 10 pines de señal de dirección, que pueden representar 1024 señales, que es 1K
Diferentes tipos de datos, incluso el mismo valor, ocupan diferentes tamaños de memoria (por lo tanto, para no desperdiciar los 8 bits de cada capa al definir tipos de variables en el programa, es necesario ajustar la posición de los tipos para que sean lo más compactos posible . usando la memoria)
puntero
Un puntero también es una variable. Lo que representa no es el valor de los datos, sino la dirección de la memoria donde se almacenan los datos. Al utilizar un puntero, puede leer y escribir datos en cualquier dirección especificada.
formación
Almacenado en direcciones consecutivas en la memoria. Utilice índice para indicar la dirección de cada dato.
pilas y colas
Las pilas y colas no utilizan índices para acceder a los datos, pero pueden dividir un área de memoria en forma de una matriz con una cierta cantidad de elementos para implementar el acceso interno.
Pila: primero en entrar, último en salir
Cola: primero en entrar, primero en salir (usando un búfer circular, al que se puede acceder repetidamente en una memoria de tamaño fijo)
lista enlazada
Puede ser más conveniente agregar, eliminar, modificar y verificar
Árbol binario
Fácil de buscar
Formas de ahorrar memoria
Comparta archivos DLL para reducir el almacenamiento duplicado de funciones
Reduzca el tamaño del archivo del programa llamando a _stdcall
5. disco
Los programas almacenados en el disco deben cargarse en la memoria antes de poder ejecutarse. La CPU, que es responsable de analizar y ejecutar el contenido del programa, necesita especificar la dirección de la memoria a través del contador de programa interno antes de poder leer el programa.
El almacenamiento en caché del disco acelera el acceso al disco
Memoria virtual: en realidad es espacio en disco, pero este espacio se divide en varias páginas y el contenido de las páginas se lee continuamente en la memoria cuando se requiere la ejecución.
Las computadoras generalmente dividen los discos en sectores y los almacenan en clústeres, por pequeño que sea un archivo, debe ocupar un clúster exclusivamente.
6. Comprimir datos
Los archivos se almacenan en bytes.
Algoritmo de compresión RLE
Existen restricciones. Si la proporción de contenido repetido en el archivo no es grande, el archivo se expandirá.
Algoritmo de Huffman
La clave del algoritmo de Huffman es que "los datos que aparecen varias veces pueden representarse mediante una cantidad de bytes inferiores a 8 bits, y los datos que no se utilizan comúnmente pueden representarse mediante una cantidad de bytes superiores a 8 bits".
Utilice un árbol de Huffman para organizar los códigos de cada carácter, con alta frecuencia en el bit corto y baja frecuencia en el bit largo, y cada código se utiliza como un nodo hoja del árbol binario.
Compresión reversible y compresión no reversible.
7. Entorno de ejecución del programa
Entorno operativo: sistema operativo y hardware de la computadora.
Código fuente->Código nativo->Ejecutar
Windows supera las diferencias de hardware distintas a la CPU, permitiendo que diferentes modelos sean compatibles con el mismo programa
Diferentes CPU utilizan diferentes lenguajes de máquina. Por lo tanto, cuando el mismo programa se migra a otras CPU, se requiere un compilador de código nativo específico de la CPU para recompilarlo en el código nativo correspondiente.
Utilice máquinas virtuales para obtener otros entornos de sistema operativo.
Virtual PC para MAC puede hacer que el hardware de Macintosh sea el mismo que el de una computadora compatible con AT, de modo que se pueda instalar Windows en el hardware.
Máquina virtual de Java
La máquina virtual Java se ejecuta mientras convierte el código de bytes de Java en código nativo uno por uno.
BIOS
El BIOS se almacena en la ROM y es un programa preintegrado en el host de la computadora.
Además de los programas de control básicos como teclado, disco y tarjeta gráfica, BIOS también tiene la función de iniciar el "programa de arranque".
8. Del archivo fuente al archivo ejecutable
El código fuente debe compilarse en código nativo para ejecutarse
La esencia del código nativo es una secuencia de valores hexadecimales.
El compilador es responsable de traducir el código fuente a código nativo.
El archivo .c se convierte en un archivo .obj después de ser compilado por el compilador. En este momento, el programa aún no se puede ejecutar.
El conector une varios archivos de destino para generar un archivo EXE. Este proceso se llama vinculación. Solo después de ingresar el comando de enlace se puede generar el archivo .exe.
Los archivos de la biblioteca se empaquetan a partir de varios archivos de destino. Al especificar un archivo de biblioteca al vincular, el vinculador puede extraer los archivos objeto necesarios y vincularlos con otros archivos objeto para generar un archivo EXE.
La API de Windows es una interfaz de aplicación de programa.
La esencia de API es una función. El archivo de destino de API es el archivo de biblioteca de enlace dinámico (DLL) (en realidad no almacena el archivo de destino, solo proporciona el enlace al archivo de destino, que se utiliza para obtenerlo automáticamente). el archivo de destino cuando el programa se está ejecutando)
Un archivo de biblioteca que contiene el archivo de destino y se puede vincular directamente al archivo EXE se denomina biblioteca de vínculos estáticos.
Se requieren variables y funciones para ejecutar un archivo ejecutable.
En el archivo EXE, las direcciones de memoria asignadas a variables y funciones son virtuales. Cuando se ejecuta el programa, estas direcciones de memoria virtual se convertirán en direcciones de memoria reales. El vinculador registrará varias ubicaciones que requieren traducción de direcciones de memoria al comienzo del archivo EXE. Esta información se denomina información de reubicación.
Composición del área en la memoria: espacio variable, espacio funcional, espacio de montón, espacio de pila
La pila se utiliza para almacenar variables locales en funciones y parámetros que deben pasarse.
El compilador genera o libera automáticamente el espacio de la pila y no requiere operación manual.
El montón se utiliza para almacenar datos arbitrarios.
El espacio del montón requiere asignación y liberación manual (malloc y gratis) (nuevo y eliminar)
9. Sistema operativo
Naturaleza
Es un programa de monitoreo con la función de cargar y ejecutar programas.
portabilidad
Los lenguajes de programación de alto nivel utilizan un lenguaje común al editar el código fuente, pero después de compilar el código nativo en diferentes sistemas operativos, el programa llama a las funciones del sistema dentro del sistema.
Abstracción de hardware
Los sistemas operativos y los lenguajes de programación de alto nivel abstraen el hardware para que los programadores ya no tengan que preocuparse por las llamadas al sistema y el hardware.
Características del sistema operativo Windows.
Disponible en versiones de 32 y 64 bits
Proporcionar llamadas al sistema a través de un conjunto de funciones API.
Usando GUI
Capacidad para imprimir resultados en formato WYSIWYG
Proporcionar capacidades multitarea
Proporcionar funciones de red y base de datos.
Instalación automática del controlador de dispositivo mediante Plug and Play
10. Lenguaje ensamblador y código nativo
lenguaje ensamblador
El lenguaje ensamblador utiliza mnemónicos, que son instrucciones para código nativo.
El código fuente escrito en lenguaje ensamblador debe convertirse a código de máquina nativo antes de poder ejecutarse.
El programa que convierte el lenguaje ensamblador en código nativo es un ensamblador y el proceso de conversión se llama ensamblador.
También puede convertir el idioma nativo al lenguaje ensamblador. El proceso de conversión se llama desensamblado.
El compilador de lenguaje C también puede convertir el código fuente del lenguaje C en código fuente del lenguaje ensamblador.
Hay dos tipos de instrucciones en lenguaje ensamblador.
1. Instrucciones generales que se convertirán en código nativo.
2. Pseudoinstrucciones específicas para ensamblador
Las pseudoinstrucciones son responsables de indicarle al ensamblador la estructura del programa y el método de ensamblaje, por lo que también se denominan instrucciones de ensamblador.
En lenguaje ensamblador, los comentarios que comienzan con el signo # son
gramática
código de operación
Indica la acción del comando.
operando
Indica el objeto de operación de la instrucción.
Al ejecutar el programa, se abrirá un espacio de pila en el registro. Las variables de función llamadas utilizarán esta pila. El espacio de la pila se borrará una vez finalizado el programa.
Funciones de llamada
Tome los parámetros de la pila y realice la operación, almacene el valor de retorno en el registro eax, tome la dirección de destino de retorno de la pila y deje que el proceso regrese.
variable
variables globales
Declarado fuera de la función, todas las funciones del programa pueden acceder a él.
variables locales
Declarado dentro de una función, solo se puede acceder a él dentro de la función en la que está declarado.
ciclo
rama condicional
11. Acceder al hardware
Los programas acceden al hardware a través del sistema operativo.
Instrucciones de entrada y salida
Controlador de E/S = puerto
Almacenar temporalmente datos de entrada y salida
Utilice el número de puerto para distinguir, es decir, la dirección de E/S
Siempre que se especifique el número de puerto en el comando de entrada y salida, puede acceder al controlador de E/S y completar las operaciones de entrada y salida.
Manejo de interrupciones
Pausar el programa en ejecución actual y ejecutar otros programas
El controlador de E / S emite una solicitud de interrupción y la CPU ejecuta el procesamiento de interrupciones. El controlador de interrupciones se utiliza entre los dos para entregárselo a la CPU para su procesamiento.
DMA
Un método de transmisión de datos entre dispositivos externos y la memoria directamente sin ser transferidos por la CPU. Se usa comúnmente en dispositivos como redes y discos.
PIO
La forma en que se transfieren los datos entre dispositivos externos y la memoria a través de la CPU se llama PIO
Mostrar personajes e imágenes.
Almacene los datos en la memoria de video y visualícelos en el monitor.
La tarjeta gráfica tiene memoria de vídeo independiente y procesador de imagen GPU.
12. Aprendizaje automático
concepto
Los programadores solo escriben programas para aprender. El contenido de este programa es permitir que la computadora lea una gran cantidad de datos, luego aprenda las características de estos datos y genere un modelo de reconocimiento.
aprendizaje supervisado
El aprendizaje supervisado consiste en proporcionar a la computadora una gran cantidad de datos con respuestas correctas.
paso
(1) Divida los datos de aprendizaje y los datos de respuestas en datos de entrenamiento y datos de prueba
(2) Utilice algoritmos de aprendizaje para aprender datos de entrenamiento y generar modelos.
(3) Utilice datos de prueba para evaluar el rendimiento del modelo.
Algoritmos de aprendizaje automático
Máquinas de vectores de soporte
herramienta
lenguaje pitón
Python proporciona bibliotecas que contienen varias funciones relacionadas con el aprendizaje automático.
El modo script utiliza el intérprete de Python para interpretar y ejecutar código fuente preescrito (modo script)
Inicie directamente el intérprete de Python, ingrese el programa línea por línea a través del teclado e interprete la ejecución del modo interactivo (modo interactivo) (el aprendizaje automático usa este modo)
Validación cruzada
La validación cruzada es un método para realizar aprendizaje automático que rota continuamente los datos de prueba y entrenamiento.
Puede comprobar si la tasa de reconocimiento del modelo de aprendizaje está sesgada debido al tipo de datos de aprendizaje.