Preguntas de prueba escrita de entrevista integradas (día 9)


prefacio

Este artículo continúa explicando las preguntas de la prueba escrita de la entrevista integrada.

1. Método de sincronización de subprocesos

1.Mutex

2. Semáforo (variable de condición)

3. Bloqueo de lectura-escritura (bloqueo de lectura-escritura)

4. Variable de condición (Semáforo)

5. Barrera

2. Diferencias y escenarios de aplicación entre tcp y udp

1. Confiabilidad: TCP proporciona una transmisión de datos confiable y garantiza la integridad y secuencia de los datos mediante el uso de mecanismos como números de secuencia, mecanismos de confirmación, mecanismos de retransmisión y control de flujo. UDP es un protocolo sin conexión y no proporciona confiabilidad de datos, y los paquetes de datos pueden perderse o estropearse.

2. Método de comunicación: TCP es un protocolo orientado a la conexión que utiliza un protocolo de enlace de tres vías para establecer una conexión y un gesto de cuatro vías para finalizar la conexión. UDP es un protocolo sin conexión, cada paquete de datos es independiente y no existe ningún proceso de establecimiento y desconexión de la conexión.

3. Eficiencia de transmisión de datos: dado que TCP proporciona muchos mecanismos de confiabilidad, habrá más gastos generales durante el proceso de transmisión, como el mecanismo de confirmación y el mecanismo de retransmisión, por lo que su eficiencia de transmisión es menor que la de UDP.

4. Características de transmisión: TCP proporciona transmisión en tiempo real para garantizar el orden y la integridad de los datos. Es adecuado para escenarios de aplicaciones que requieren integridad y orden de los datos, como transferencia de archivos, correo electrónico, navegación web, etc. UDP transmite datos en forma de datagramas y es adecuado para escenarios de aplicaciones con altos requisitos en tiempo real, como transmisión de audio y video en tiempo real, juegos en línea, etc.

3. La relación anterior entre memoria física y memoria virtual.

La memoria física es el hardware de memoria que realmente existe en el sistema informático y está compuesto por RAM (memoria de acceso aleatorio). La memoria física es la ubicación física utilizada por la computadora para almacenar y acceder a datos y proporciona capacidades directas de lectura y escritura de datos. Los programas y sistemas operativos necesitan cargar datos en la memoria física para que la CPU pueda acceder a ellos directamente.

La memoria virtual es un concepto de memoria abstracto: para un programa, parece ser un espacio de direcciones privado y continuo. El tamaño de la memoria virtual suele ser mucho mayor que el de la memoria física real. La memoria virtual es administrada por el sistema operativo, que asigna las direcciones virtuales de un programa a direcciones físicas en la memoria física.

关系:
La memoria virtual asigna la dirección virtual del programa a la dirección física de la memoria física a través de la tabla de páginas, proporcionando un espacio de direcciones más grande y funciones convenientes de administración de memoria.

4. Problemas causados ​​por no inicializar el espacio de memoria asignado por malloc

1. Valor impredecible: el valor en el espacio de memoria no inicializado es incierto y su contenido puede ser el valor residual de los datos utilizados anteriormente o puede ser un valor basura aleatorio. Esto hace que el comportamiento de estos valores sea impredecible cuando se utiliza este espacio de memoria, lo que potencialmente genera incertidumbre e inestabilidad en el programa.

2. Riesgos de seguridad: en el espacio de memoria no inicializado, si existe información confidencial (como contraseñas, claves u otros datos confidenciales), es posible que esta información aún exista en la memoria y sea fácil de acceder o se filtre de manera maliciosa. Esto puede provocar problemas de seguridad y vulnerabilidades.

3. Resultados inconsistentes: si el espacio de memoria no inicializado se utiliza como área de almacenamiento de la estructura de datos, su valor inicial puede causar inconsistencia en la estructura de datos y resultados de cálculo incorrectos. Por ejemplo, si opera en una matriz no inicializada, el resultado puede ser valores incorrectos, acceso fuera de límites o excepciones de la matriz.

为了避免未初始化内存带来的潜在问题,推荐在使用malloc分配的内存空间后,使用适当的方法对其进行初始化。可以使用memset、循环赋值或其他合适的方式将初始值分配给内存空间,确保所使用的内存空间处于已定义和一致状态。

5. Métodos de depuración en Linux integrado

1.GDB (depurador GNU): es un potente depurador de línea de comandos que se puede utilizar para depurar aplicaciones Linux integradas, módulos del kernel, controladores, etc. Proporciona un conjunto de comandos y funciones para ver y modificar variables en tiempo de ejecución, establecer puntos de interrupción, recorrer el código, rastrear pilas de llamadas de funciones y más.
Cuando utilice GDB para depurar una aplicación, primero debe compilar y vincular el código de destino con la información de depuración incluida (generalmente usando la opción -g). Luego, inicie el depurador de GDB ejecutando el comando gdb <ejecutable> en la terminal. En el depurador, puede utilizar varios comandos GDB para controlar la ejecución del programa y observar los valores de las variables.
GDB también admite funciones como la depuración remota y los scripts de depuración, lo que hace que la depuración remota en sistemas integrados sea más conveniente y flexible.

2. Depuración de Printf: es una tecnología de depuración básica que genera el valor de las variables, el estado de ejecución del programa y otra información de depuración insertando declaraciones impresas en el código. Estos resultados aparecerán en el registro del terminal o del sistema para que los desarrolladores los inspeccionen y analicen.
En el desarrollo de Linux integrado, los desarrolladores pueden insertar declaraciones printf en ubicaciones clave para generar los valores de las variables de interés y la información de depuración. Al comparar los resultados de la salida, puede verificar la exactitud del código, rastrear la ruta de ejecución del programa y observar cambios de estado, etc.
Cabe señalar que el uso extensivo de printf en un entorno de producción afectará el rendimiento y aumentará el consumo de recursos, por lo que estas declaraciones de depuración generalmente deben eliminarse o deshabilitarse del código una vez completada la depuración.

3.syslog: syslog es un mecanismo de registro en el sistema Linux, que se puede utilizar para registrar diversa información cuando el sistema se está ejecutando, incluida la información de depuración. El sistema Linux integrado puede utilizar la biblioteca syslog para generar información de depuración personalizada en el registro del sistema, y ​​la depuración se puede realizar viendo el archivo de registro del sistema.

4.printk: printk es una función en el kernel de Linux, similar a la función printf, que puede enviar información de impresión a la consola del sistema o al archivo de registro. En el desarrollo integrado de Linux, puede utilizar la función printk en el módulo o controlador del kernel para generar información de depuración para facilitar la depuración y la resolución de problemas.

5. Herramientas de seguimiento: el kernel de Linux proporciona algunas herramientas de seguimiento, como ftrace y trace-cmd, para rastrear y analizar el funcionamiento del sistema. Estas herramientas pueden registrar la secuencia y las marcas de tiempo de varios eventos de software y hardware en el sistema para ayudar a localizar problemas.

6. Depurador de hardware: algunas plataformas integradas pueden proporcionar funciones que admitan la depuración de hardware, como interfaces JTAG o SWD. Al conectarse a un depurador de hardware, puede establecer puntos de interrupción, ver y modificar registros, realizar un seguimiento de la ejecución de código, etc. en el sistema integrado para lograr la depuración a nivel de hardware subyacente.

7. Herramientas de análisis de tiempo de ejecución: algunas herramientas de análisis de tiempo de ejecución, como strace y ltrace, se pueden utilizar en sistemas Linux integrados para rastrear y analizar las llamadas al sistema y las llamadas a funciones de biblioteca del proceso. Estas herramientas pueden ayudar a localizar errores de llamadas al sistema o uso inadecuado de las funciones de la biblioteca.

6. Una breve introducción a los bloqueos mutex.

Mutex Lock es un mecanismo de sincronización común utilizado en programación multiproceso o multiproceso para lograr un acceso mutuamente exclusivo a recursos compartidos. Proporciona un mecanismo para proteger los recursos compartidos, asegurando que solo un hilo o proceso pueda mantener el bloqueo en cualquier momento, evitando así condiciones de carrera e inconsistencias de datos.

7. Señales y slots en QT

Las señales y las ranuras son un mecanismo en el marco Qt que se utiliza para implementar la comunicación y la interacción entre objetos. Es un patrón de programación basado en eventos que permite que los objetos respondan e interactúen entre sí de forma desacoplada.

8. Entrada y salida estándar

En Linux, la entrada estándar (stdin), la salida estándar (stdout) y el error estándar (stderr) suelen estar representados por descriptores de archivos específicos. La definición de macro del descriptor de archivo correspondiente se puede encontrar en el archivo de encabezado <unistd.h>:

STDIN_FILENO: el descriptor de archivo para la entrada estándar, normalmente 0.
STDOUT_FILENO: el descriptor de archivo para la salida estándar, normalmente 1.
STDERR_FILENO: el descriptor de archivo para el error estándar, normalmente 2.
Estas definiciones de macro se pueden utilizar para especificar y utilizar explícitamente descriptores de archivos de entrada y salida estándar al escribir programas, como cuando se realizan operaciones de descriptores de archivos o cuando se utilizan llamadas al sistema de bajo nivel.

#include <stdio.h>
#include <unistd.h>


int main(void)
{
    
    
    char buf[1024];
    int len = 0;

    len = read(STDIN_FILENO, buf, 1024);

    write(STDOUT_FILENO, buf, len);


    return 0;
}

Resumir

Este artículo lo explicará aquí.

Supongo que te gusta

Origin blog.csdn.net/m0_49476241/article/details/132239830
Recomendado
Clasificación