U1 y U2 Flashcards
(25 cards)
Que es la unidad de manejo de memoria o MMU
es un componente de hardware que se encarga de gestionar los accesos a la memoria por parte del procesador o CPU
En una arquitectura de 64 bits, cuantos se reservan para direccionamiento
los 48 menos significativos
que son
Kernel
User stack
Memory mapping
Free store
text/data/bss?
Son regiones de la memoria virtual de linux
como se aloja un proceso linux en la memoria virtual
Un proceso esta compuesto de muchas partes las cuales se alojan cada una en una region de la memoria virtual
que es el User stack
Region de la memoria virtual empleada para la ejecución de funciones. Su tamaño varía dinámicamente en el transcurso del programa,
sigue el esquema LIFO
Que es el Memory mapping
Una región de memoria intermedia que contiene el código y los datos de las bibliotecas compartidas con otros procesos (por ejemplo, la biblioteca estándar del lenguaje).
Que es el Free store
El área de memoria libre (free store), cuyo tamaño varía en tiempo de ejecución como resultado del uso de expresiones new y delete.
Que es el text/data/bss
El segmento .text contiene instrucciones ejecutables. Le siguen el segmento .data (conteniendo variables estáticas inicializadas) y el segmento .bss (variables estáticas sin inicializar).
Que es la paginacion
Tecnica que permite gestionar la memoria fisica dividiendola en bloques estaticos y contiguos de igual tamaño
Que es el registro %rsp
Register stack pointer guarda la direccion de memoria del datos mas reciente de la pila(cabecera de l pila, para añadir o quitar datos se modifica este puntero
errores comunes en la gestion del user stack
stack overflow
sobrescribir posiciones inexistentes en arrays
Diferencia Clase y Struct en C++
La clase es private por defecto mientras que struct es public, struct se suele usar para guardar datos simples e iguales
diferencia i& y &i y int* p = &i
la primera es un alias, sirve para recibir por referencia los paramtros
la segunda apunta a la direccion en memoria de esa variable
la tercera es un puntero que almacena la direccion en memoria de esa variablr
¿Qué es un destructor en C++ y cómo se denota?
Un destructor es una función miembro especial de una clase, única, que se denota con el mismo nombre de la clase precedido por una tilde (~), sin argumentos ni valor de retorno.
¿Cuál es la función principal de los destructores en C++?
Liberar los recursos adquiridos por el objeto durante su tiempo de vida, como memoria dinámica, archivos, y locks, de manera automática al finalizar su tiempo de vida.
¿Qué es la técnica RAII en C++
asegura que la adquisición y liberación de recursos se maneje de forma segura mediante constructores y destructores.
¿Qué ocurre si un destructor lanza una excepción durante un desenredo de pila?
Se invoca la función std::terminate, causando la terminación anómala del programa, ya que los destructores no deben emitir excepciones.
¿Qué garantías se deben considerar al manejar excepciones en C++?
Garantía básica (invariantes y ausencia de fugas de recursos), garantía fuerte (operación exitosa o estado previo sin cambios), y garantía nothrow (no emisión de excepciones).
¿Qué soluciones propone el documento para manejar recursos de forma segura ante excepciones?
Implementar un bloque de limpieza try-catch o utilizar la técnica RAII con objetos cuyos destructores manejen la liberación de recursos automáticamente.
¿Cuáles son los modos principales para abrir un archivo en C++?
Los modos principales son ios::in para lectura, ios::out para escritura, ios::app para añadir al final y ios::binary para archivos binarios.
Pregunta: ¿Cómo se lee de un archivo de texto en C++?
Se utiliza el método get para leer caracteres individualmente o getline para leer líneas completas.
¿Qué diferencia hay entre archivos de texto y binarios en su manipulación?
Los archivos de texto se leen y escriben como caracteres legibles, mientras que los binarios se manejan como bytes, lo que requiere operaciones específicas de lectura y escritura binaria.
¿Cuál es el propósito de usar reinterpret_cast al trabajar con archivos binarios?
reinterpret_cast se utiliza para convertir punteros o referencias a un tipo de datos a otro, permitiendo la escritura y lectura directa de estructuras complejas en archivos binarios.
¿Cómo se gestiona el final de un archivo durante la lectura en C++?
Se utiliza el método eof() del objeto archivo para verificar si se ha alcanzado el final del archivo durante la lectura, permitiendo terminar adecuadamente las operaciones de lectura sin errores.