Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
La necesidad de la informática está muy extendida en la historia de la humanidad y su desarrollo generalmente ha pasado por el proceso de desarrollo desde herramientas informáticas generales hasta computadoras mecánicas y las computadoras electrónicas actuales.
La necesidad de la humanidad por la informática nos impulsa a inventar y mejorar continuamente las computadoras. La era actual es la era de las "computadoras electrónicas" y la tendencia de desarrollo es: más rápida, más estable y más pequeña.
Libros recomendados: "Una breve historia de las computadoras"
Punto 1
Las computadoras modernas, la mayoría cumplen conArquitectura von Neumann
John von Neumann (28 de diciembre de 1903 - 8 de febrero de 1957), matemático e informático húngaro-estadounidense
Científico, físico y uno de los matemáticos más importantes del siglo XX. Von Neumann es doctor en matemáticas por la Universidad de Budapest. Es una de las mentes científicas más versátiles en los campos de la informática moderna, la teoría de juegos y las armas nucleares y biológicas. padre de las computadoras modernas” y “el padre de la teoría de juegos”.
A continuación, utilizamos un proceso desde cero para construir una CPU paso a paso. Podemos utilizar este proceso para comprender los principios de funcionamiento de los componentes principales de la computadora, como la CPU y la memoria.
Interruptor electrónico – Relé mecánico
A través de interruptores electrónicos podemos implementar operaciones lógicas de 1 bit (bit) aparentemente inútiles, pero al menos funciona, ¿verdad?
Aprenderemos más sobre cómo utilizar interruptores electrónicos para combinar componentes lógicos realmente útiles.
La esencia de los futuros tubos de vacío y transistores es completar un trabajo similar, pero los principios físicos son más complejos, por lo que no lo explicaremos en profundidad.
A continuación, aprenderemos a utilizar interruptores electrónicos para construir algunos componentes útiles: se pueden realizar operaciones lógicas básicas de 1 bit.
ALU es el componente central para las operaciones aritméticas y lógicas en las computadoras, y es el cerebro matemático de la computadora. A continuación, utilizamos las puertas lógicas construidas anteriormente para completar una ALU propia, para aprender y comprender su modo de funcionamiento, a fin de aprender y comprender su modo de funcionamiento. ampliar nuestra comprensión de los principios modernos de la informática.
La unidad aritmética es responsable de todas las operaciones digitales en la computadora, como las cuatro operaciones aritméticas. Por supuesto, puede hacer mucho más que eso. A continuación, le mostraré cómo implementar un sumador de 8 bits para cubrir. Explicaré todo el proceso y otras operaciones. No explicaré más el dispositivo.
En este punto, hemos creado un sumador de 8 bits desde cero. Las operaciones de la unidad aritmética son, por supuesto, mucho más que estas. Al continuar combinando puertas lógicas, la unidad aritmética puede realizar sumas, restas, multiplicaciones, divisiones e incluso más operaciones aritméticas, pero un sumador es suficiente como demostración. De hecho, la dificultad de hacer multiplicadores y divisores es mayor que la de sumadores y restadores. Si estás interesado, puedes intentar aprender más.
Las unidades lógicas se utilizan principalmente para realizar operaciones lógicas. Las operaciones más básicas son operaciones Y, O y NO, pero no son solo la comparación de números de un bit.
经过我们的努力,通过基本的逻辑门电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚至比 Intel 74181 还要强大,Intel 74181 只是⼀个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的ALU 也是芯片工程师像我们这样,一层又一层, 一步又一步地将其抽象出来的。ALU 是第⼀次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰.
La ALU por sí sola no es suficiente. No podemos proporcionar componentes de almacenamiento para la ALU, por lo que a continuación utilizamos circuitos de puerta para explicar brevemente la producción del almacenamiento. Tenga en cuenta que, aunque no se muestra claramente en la figura, estos requisitos de almacenamiento deben permanecer encendidos. , es decir, estos almacenamientos son volátiles (volátiles)
Ocultamos algunos detalles de implementación en el medio y el efecto final es: cuando se establece la línea de desactivación, la entrada es 1, y se guarda 1 cuando la entrada es 0, cuando la línea de habilitación no está en posición; , la escritura no es válida.
Podemos usar cerraduras de puertas para construir los registros y la memoria que necesitamos.
La construcción de la memoria es un poco más complicada que esto, pero los principios básicos son los mismos. La memoria construida de esta manera se llama RAM (Memoria de acceso aleatorio) y puede admitir una complejidad de tiempo O (1) para acceder a datos en cualquier ubicación. Esto significa que nuestra operación de acceso al subíndice de matriz es O (1).
soporte hardware.
Ahora tenemos ALU y almacenamiento, pero esto aún no es suficiente para que nuestra computadora funcione. Necesitamos un componente para indicarle a la ALU que realice qué tipo de cálculos, y este componente es la unidad de control (CU).
Punto 2
La cantidad de cuadros en la imagen de arriba se puede considerar como la cantidad de núcleos. Como se muestra en la imagen, es una CPU de dieciséis núcleos.
Las primeras CPU tenían un solo núcleo. Con el desarrollo de los tiempos, tenemos requisitos cada vez mayores para la velocidad de procesamiento de la CPU. En este momento, necesitamos hacer que la CPU esté más integrada y contenga más unidades informáticas para calcular más rápido. La unidad informática es pequeña (proceso de fabricación de CPU, como 5 nm, etc.). En este momento, la mecánica clásica deja de ser válida y comienza a ingresar al campo de la mecánica cuántica. El desafío para el proceso se vuelve cada vez mayor.
En este momento se propone el concepto de multinúcleo.
La velocidad de cálculo de la CPU se describe por frecuencia, que puede entenderse simplemente como cuántas instrucciones se pueden ejecutar en un segundo (no es riguroso. Por ejemplo, la velocidad anterior puede entenderse como los cálculos de la CPU aproximadamente 3,4 mil millones de veces por segundo). .
La frecuencia de la CPU cambia dinámicamente según la carga de trabajo. A medida que aumenta la frecuencia, consume más energía y genera más calor. Para proteger la CPU contra quemaduras debido al sobrecalentamiento, reducirá automáticamente la frecuencia.
Punto 3
Primero, introduzcamos las instrucciones que necesitamos.
La llamada instrucción, es decir, el comando que guía a la CPU para realizar el trabajo, consta principalmente de código de operación + operando.
El código de operación se utiliza para indicar qué acción se va a realizar, y el operando son los datos sobre los que operará esta instrucción, que puede ser una dirección de memoria o un número de registro, etc.
La instrucción en sí también es un número almacenado en un área determinada de la memoria en forma binaria.
Los programas que escribimos en lenguajes de programación eventualmente deben traducirse a "instrucciones binarias ejecutadas en la CPU". Las instrucciones son la unidad básica de tareas completadas por la CPU.
Las instrucciones también son lenguaje de máquina (binario) y lenguaje ensamblador. El lenguaje de máquina y el lenguaje ensamblador tienen una correspondencia uno a uno.
Diferentes CPU admiten diferentes instrucciones a nivel micro, como instrucciones x86 e instrucciones arm, lo que provoca problemas de compatibilidad.
Se puede considerar que las instrucciones que puede ejecutar una CPU se estipularon cuando se diseñó originalmente la CPU. La imagen de arriba enumera algunas instrucciones simplificadas.
La instrucción de 8 bits se puede dividir en dos partes.
Los primeros 4 bits son el código de operación (código de operación) que indica lo que hace la instrucción.
Los últimos 4 bits son operandos (similares a los parámetros)
El nombre del registro AB en la tabla anterior es ficticio. El nombre del registro real de la CPU tiene la forma: eax, ebx, esp, ebp...)
Hay un registro especial en la CPU, el "contador de programa" (el sistema lo configurará automáticamente después de que el exe se cargue en la memoria), que guarda la ubicación de la memoria desde la cual se ejecutará la siguiente instrucción. Al mismo tiempo, a medida que se ejecuta la instrucción, el valor del "contador de programa" también se actualizará en consecuencia. De forma predeterminada, es un proceso de incremento automático de +1 (que ejecuta instrucciones en secuencia). como (si, mientras, para, llamada a función...), se establecerá en otro valor.
Dividimos la ejecución de instrucciones en tres etapas:
1) Obtención de instrucciones, la CPU lee el contenido de la instrucción de la memoria a la CPU (hay registros especiales para guardar las instrucciones leídas).
2) Analizar la instrucción e identificar su función, funciones correspondientes y operandos.
3) Ejecutar instrucciones
La ejecución de cada instrucción debe pasar por los tres pasos anteriores, y completar una tarea requiere la ejecución de varias instrucciones anteriores. Por ejemplo, un proceso de suma puede requerir tres instrucciones anteriores, lo que parece muy problemático, pero debido al cálculo de la CPU. muy rápido (las operaciones anteriores se pueden realizar más de mil millones de veces en un segundo) y una computadora no requiere mucho tiempo.
El llamado programa es un conjunto de instrucciones y los datos que este conjunto de instrucciones debe procesar. En sentido estricto, un programa suele aparecer como un conjunto de archivos.
Programa = instrucción + datos a procesar por la instrucción.
Esta es una pequeña historia interesante que circuló anteriormente, pero por supuesto no es cierta.Pero para las primeras computadoras, la programación realmente requería
Programado con 0 y 1 (Σ(っ°Д °;)っ)
La siguiente imagen muestra la computadora Altair 8800, una de las primeras microcomputadoras. El usuario necesita controlar el interruptor e ingresar el programa en la computadora poco a poco.
Si todos los usuarios de computadoras deben usar programación binaria, todos se volverán locos. Este es un umbral demasiado alto. Así surgieron los lenguajes de programación.
Para mejorar la eficiencia de la programación, se creó por primera vez el concepto de lenguaje ensamblador. De hecho, el lenguaje ensamblador y el lenguaje máquina (es decir, las instrucciones) están directamente en correspondencia uno a uno. Sólo que en relación con los números 0 y 1, se han inventado algunos símbolos para ayudar a los humanos a recordarlos y comprenderlos. es lo que tenemos arriba. Lo que ves es similar a LOAD_A, LOAD_B, etc. Una vez que los programadores completan la programación, necesitan utilizar un ensamblador para traducir el lenguaje ensamblador al lenguaje de máquina.
Aunque el ensamblaje reduce el costo de la memoria del programador, aún requiere que el programa domine todos los conocimientos del hardware de la computadora. Con el creciente número de fabricantes de computadoras, los programas escritos al mismo tiempo a menudo solo son adecuados para un tipo de computadora. Esto está lejos de ser suficiente, por lo que nacieron lenguajes más avanzados que protegen los detalles del hardware y permiten a los programadores pensar en su negocio a un nivel superior. Aquí tomamos el lenguaje C como ejemplo. Una vez que el programador termina de escribir el programa, necesita usar un compilador y un vinculador para traducir el programa al lenguaje ensamblador, y luego usar el ensamblador para convertirlo en el lenguaje de máquina final.
Con la ayuda de la idea de encapsulación, nos resulta cada vez más fácil aprender a programar. Sin embargo, existen ventajas y desventajas. El alto grado de abstracción hace que muchos programadores consideren la computadora como una caja negra y sean completamente incapaces de comprender cómo funcionan sus propios programas. Espero que ninguno de nosotros se convierta en ese tipo de programadores.
El lenguaje Java que utilizamos es un poco más avanzado que el lenguaje C, pero no hay mucha diferencia en los principios abstractos básicos, por lo que no daremos más detalles por ahora.
Nota: Una declaración en un lenguaje de alto nivel a menudo corresponde a muchas instrucciones para completar.
Punto 4
Sistema operativo es un nombre colectivo para un conjunto de software que administra los recursos de la computadora. Actualmente, los sistemas operativos comunes incluyen: serie Windows, serie Unix, serie Linux, serie OSX, serie Android, serie iOS, Hongmeng, etc.
Los programas que se ejecutan en diferentes sistemas son diferentes (los programas no son compatibles debido a diferentes kpi)
Un sistema operativo tiene dos funciones básicas:
1) Evite que las aplicaciones espacio-temporales abusen del hardware; proporcione KPI a la aplicación y permita que la aplicación lo llame para completar diferentes funciones.
2) Proporcionar aplicaciones con mecanismos simples y consistentes para controlar dispositivos de hardware de bajo nivel complejos y, a menudo, muy dispares.
Un sistema operativo hace principalmente las dos cosas siguientes:
1) Administrar diferentes dispositivos de hardware. Las computadoras pueden acceder a muchos dispositivos, como escáneres de códigos, equipos médicos, máquinas de ultrasonido B...
2) Proporcionar un entorno operativo estable para el software. Los sistemas operativos modernos deben ejecutar muchos programas al mismo tiempo. Se espera que estos programas no puedan interferir entre sí. Si ocurre un error en un programa, no afectará a otros programas. .
Cuando cada aplicación se ejecuta en un sistema operativo moderno, el sistema operativo proporcionará una abstracción, como si solo este programa se estuviera ejecutando en el sistema y este programa utilizara todos los recursos de hardware. Esta ilusión se logra abstrayendo el concepto de proceso, posiblemente uno de los conceptos más importantes y exitosos en informática.
Un proceso es una abstracción de un programa en ejecución por parte del sistema operativo. En otras palabras, el proceso puede considerarse como un proceso en ejecución del programa. Al mismo tiempo, dentro del sistema operativo, el proceso es la unidad básica de asignación de recursos; por el sistema operativo.
Punto 5
Los procesos son algunas aplicaciones que se están ejecutando en nuestras computadoras (Cuando se habla de una aplicación, hay dos estados. Cuando no se está ejecutando, es un archivo exe que se encuentra en el disco duro; cuando se está ejecutando, el exe estará. cargado en la memoria, y la CPU ejecuta las instrucciones dentro).
El proceso es la unidad básica de asignación de recursos por parte del sistema operativo.
Punto 6
Dado que hay muchos procesos en el sistema, es necesario gestionarlos.
1) La descripción expresa varios atributos del proceso a través de estructuras/clases (los sistemas convencionales se implementan a través de C/C++)
2) La organización conecta las múltiples estructuras (descripciones) anteriores a través de la estructura de datos y además realiza varias adiciones, eliminaciones, modificaciones y verificaciones...
Por ejemplo, el sistema operativo Linux utiliza una estructura llamada "PCB" para describir la información del proceso (PCB significa bloque de control de procesos). En pocas palabras, los múltiples PCB mencionados anteriormente se unen a través de una lista vinculada para crear un proceso (doble). -hacer clic en exe, ejecutar el programa) es equivalente a crear una estructura de PCB. Destruir el proceso significa eliminar la PCB de la lista de conexiones y liberar la estructura de PCB. Ver la lista de procesos significa recorrer la lista de conexiones y mostrar la información correspondiente en secuencia. .
PCB es una estructura muy compleja que contiene muchos atributos. Aprendamos información clave a continuación.
1.Identificador de proceso PID
Al mismo tiempo, el PID es único entre múltiples procesos en una máquina y no se repetirá. Muchas operaciones internas del sistema encuentran el proceso correspondiente a través del PID.
2. Puntero de memoria (un conjunto)
Describe el área donde se almacenan las instrucciones y los datos que dependen del proceso.
Cuando el sistema operativo ejecuta el exe, leerá las instrucciones y los datos del exe y los cargará en la memoria (dirección de memoria).
Desde un lado, muestra que la ejecución del proceso requiere ciertos recursos de memoria.
3. Tabla de descripción de archivos (tabla/matriz de secuencia)
Describe qué archivos abre el proceso, correspondientes a los datos en el disco duro.
Cuando se abre un archivo en el proceso, se agregará un elemento a la tabla de secuencia para facilitar la lectura.
Los siguientes elementos determinan en conjunto la programación del proceso, el cual está íntimamente relacionado con nuestro desarrollo diario.
Punto 7
La clave para la programación de procesos del sistema operativoMultiplexación en tiempo compartido
Los sistemas operativos actuales son todos "sistemas multitarea" que pueden ejecutar múltiples procesos al mismo tiempo. Los sistemas operativos anteriores se llamaban "sistemas de tarea única" y solo podían ejecutar un proceso al mismo tiempo.
Comprensión de la multiplexación de tiempo compartido: en un momento determinado, la CPU ejecuta el proceso 1, se ejecuta por un tiempo, la CPU ejecuta el proceso 2 y ejecuta el proceso 3 después de un tiempo ... Debido a que la velocidad de cálculo y la velocidad de conmutación de la CPU son muy rápidas, no se nota a simple vista. Desde una perspectiva humana, equivale a una ejecución simultánea, "ejecución concurrente".
Ejecución paralela: Ahora con las CPU multinúcleo, cada núcleo y entre núcleos también pueden ejecutar diferentes procesos al mismo tiempo a nivel microscópico.
La concurrencia o la concurrencia están programadas de manera uniforme por el núcleo del sistema operativo y los programadores/usuarios comunes no pueden percibirlas. Por lo tanto, el paralelismo y la concurrencia generalmente se denominan colectivamente "concurrencia", y las técnicas de programación correspondientes también se denominan "programación concurrente".
4. Estado del proceso
Estado listo: el proceso se puede programar en la CPU para ejecutar instrucciones en cualquier momento
Estado bloqueado: el proceso no se puede programar para ejecutar instrucciones en la CPU. La razón por la que está bloqueado es que necesita realizar otras operaciones, como operaciones IO (lectura y escritura de discos duros o lectura y escritura de tarjetas de red, como). escanear entrada). Cuando se requiere la entrada del usuario, el proceso entra en estado de bloqueo)
Los dos anteriores son los dos estados principales del proceso. También hay otros estados, así que no entraré en demasiados detalles...
5. Prioridad del proceso
La prioridad es literalmente el orden de los procesos.
6. Contexto del proceso
Multiplexación de tiempo compartido. Después de que un proceso se ejecute durante un tiempo, se transferirá desde la CPU. Después de un tiempo, se programará nuevamente a la CPU. Continuará ejecutándose junto con los resultados de la última ejecución. Los resultados intermedios de la ejecución anterior (varios valores en el registro de la CPU) se guardan para su próximo uso.
7. Información contable del proceso
Con el apoyo de las prioridades, los recursos consumidos por diferentes procesos pueden volverse cada vez más diferentes...
Los atributos anteriores se utilizan para admitir la ejecución simultánea del proceso de programación.
El sistema operativo asigna recursos de memoria mediante un modelo espacial: diferentes procesos utilizan diferentes áreas de la memoria sin interferir entre sí.
Como se mencionó anteriormente, el proceso es la unidad más pequeña de asignación de recursos por parte del sistema operativo, lo que significa que cada proceso no puede sentir la existencia del otro. Esta es la intención original del sistema operativo de abstraer el concepto de proceso, lo que genera. el proceso Están "aislados" unos de otros.
Sin embargo, las aplicaciones modernas a menudo no pueden completar un requisito comercial complejo a través de un proceso. Siempre requieren que el proceso y el proceso cooperen para lograr el propósito de la aplicación. La necesidad de comunicación entre procesos surgió en el momento histórico.
Actualmente solo existe un método principal de comunicación entre procesos en Java, a través de la red (socket)
La red es un mecanismo IPC relativamente especial. Además de admitir la comunicación entre dos procesos en el mismo host, también admite la comunicación entre procesos en diferentes hosts dentro de la misma red.