memoria Flashcards

(158 cards)

1
Q

¿Qué es la memoria en el contexto de un sistema operativo?

A

Es una abstracción de la memoria física que se representa como un arreglo de direcciones consecutivas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué determina el rango de direcciones de memoria en DOS?

A

La arquitectura utilizada, por ejemplo, la del 8086 que permite hasta 1 MB de memoria (2^20 bits).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué es la multiprogramación?

A

Es una forma de procesamiento paralelo rudimentaria en la que varios programas se ejecutan al mismo tiempo en un único procesador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué beneficio trajo la multiprogramación?

A

Mejoró el uso de la CPU, permitiendo intercalar la ejecución de múltiples procesos y aumentando la eficiencia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es el tiempo compartido (time sharing)?

A

Es la técnica de compartir recursos computacionales entre muchos usuarios usando multiprogramación e interrupciones de reloj.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cuál es el objetivo del tiempo compartido?

A

Acotar el tiempo de respuesta del sistema y limitar el uso de la CPU por parte de cada proceso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es el espacio de direcciones o address space?

A

Es la abstracción de la memoria que contiene todo el estado de memoria de un programa en ejecución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cuáles son los objetivos de la virtualización de memoria?

A

Transparencia, eficiencia y protección.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué significa transparencia en la virtualización de memoria?

A

El programa debe comportarse como si tuviera su propia memoria física privada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué significa eficiencia en la virtualización de memoria?

A

Hacer que la virtualización no degrade el rendimiento ni use demasiada memoria para sus estructuras.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué significa protección en la virtualización de memoria?

A

Evitar que un proceso afecte la memoria de otro proceso o del sistema operativo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué características debe tener un buen mecanismo de virtualización de memoria?

A

Flexibilidad y eficiencia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué es la traducción de direcciones (address translation)?

A

Es el proceso por el cual el hardware convierte direcciones virtuales en direcciones físicas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Quién realiza la traducción de direcciones en cada acceso a memoria?

A

El hardware, con el soporte del sistema operativo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué rol cumple el sistema operativo en la traducción de direcciones?

A

Configura el hardware, mantiene registro de la memoria libre y usada, y controla su utilización.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué hace el S.O. para gerenciar la memoria?

A

Registra qué parte está libre, qué parte está en uso y cómo se está utilizando la memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Formalmente ¿Qué es el proceso de address translation?

A

Es un mapeo entre los elementos de un espacio de direcciones virtuales de N-elementos (VAS) y un espacio de direcciones físicas de M-elementos (PAS).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué técnica de traducción de direcciones se introdujo en las primeras máquinas con time-sharing?

A

La técnica de base y segmento o realocación dinámica.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué registros de hardware se usan en la técnica de Base and Bound?

A

Registro base y registro límite o segmento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Para qué sirve el par base-límite en la traducción de direcciones?

A

Para permitir ubicar el address space en cualquier parte de la memoria física y se hará mientras el sistema operativo se asegura que el proceso solo puede acceder a su address space.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Cuál es la mejora que ofrece la tabla de segmentos respecto a base y límite?

A

Permite múltiples segmentos por proceso en lugar de uno solo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Qué dos componentes tiene una dirección virtual en segmentación?

A

Número de segmento y offset del segmento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Cómo se usa el número de segmento en segmentación?

A

Como índice para ubicar el inicio del segmento en memoria física.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Cómo se previene que un proceso acceda fuera de su segmento?

A

Comparando la suma del offset con el bound del segmento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué representa un Segmentation Fault?
Un intento de acceso a memoria fuera del espacio asignado al segmento.
26
¿Sigue existiendo el error de Segmentation Fault en sistemas actuales?
Sí, aunque no utilicen segmentación real.
27
¿Qué es la memoria paginada?
Es una técnica en la que la memoria se divide en bloques fijos llamados page frames.
28
¿Qué tamaño tienen las páginas y los frames en la memoria paginada?
Tienen el mismo tamaño, por ejemplo, 4 KB.
29
¿Qué alternativa representa la memoria paginada frente a la segmentación?
Una forma de dividir la memoria en bloques fijos en vez de segmentos variables.
30
¿Cómo se representa el address translation en paginación?
Con una tabla de páginas por proceso que apunta a los page frames físicos.
31
¿Por qué las entradas en la page table son compactas?
Porque los page frames tienen tamaño fijo y son potencia de 2, por lo que solo se guardan los bits superiores.
32
¿Qué contiene una entrada en la page table?
Un puntero a un page frame en la memoria física.
33
¿Qué es el número de la pagina virtual?
Es el índice en la page table para obtener el page frame en la memoria física.
34
¿Cómo se forma una dirección física en paginación?
Concatenando el frame obtenido de la page table con el offset de la página.
35
¿Quién maneja los accesos a la memoria en paginación?
El sistema operativo.
36
¿Por qué la memoria parece desordenada en paginación?
Porque aunque el programa cree que su memoria es lineal, en realidad está distribuida como un mosaico en memoria física.
37
¿Qué longitud tienen los registros del procesador 8086?
"16 bits"
38
¿Cuántos bits tiene el bus de direcciones del 8086?
"20 bits"
39
¿Qué problema resolvió el mecanismo de base and bound en el 8086?
"La limitación de direccionar solo 64 KB de memoria usando registros de 16 bits"
40
¿Cómo se calcula una dirección física en el 8086?
"Desplazando el valor del segmento 4 bits a la izquierda y sumando el offset"
41
¿Cuáles son los registros de segmento?
- CS: Code Segment - DS: Data Segment - SS: Stack Segment - ES : Extra Data Segment SI, DI, BP, SP, IP: Registros de Punteros y Registro de Índices. (Base Pointer, Stack Pointer y Instruction Pointer)
42
¿Cuáles son las combinaciones especiales?
● CS:IP localiza la próxima instrucción a ser ejecutada en modo real. ● SS:SP localiza la dirección del puntero al stack, a veces también puede ser SS:BP. ● DS: BX,DI,SI localizan el puntero a una dirección de memoria dentro del data address. ● ES:DI puntero al extra data address donde van los strings.
43
¿Qué modo se introdujo a partir del 80286?
"Modo Protegido"
44
¿Qué permite el modo protegido en x86?
"Direccionar más de 1 MB de memoria física y protegerla"
45
¿Qué sistema se utiliza para virtualización de memoria en modo protegido?
"Tabla de segmentos"
46
¿Qué transforma una dirección lógica en una lineal?
"La unidad de segmentación de la MMU"
47
¿Qué transforma una dirección lineal en una física?
"La unidad de paginación de la MMU"
48
¿Qué contiene una dirección lógica?
Cada dirección lógica consta de un segmento y un desplazamiento (o "offset") que denota la distancia desde el inicio del segmento hasta la dirección real.
49
¿Cuántos bits tiene una dirección lineal?
"32 bits"
50
¿Cuánto puede direccionar una dirección lineal de 32 bits?
"4 GB"
51
¿Para qué se utiliza la dirección física?
Se utiliza para direccionar las celdas de memoria en los chips de memoria.
52
¿Para qué examina el campo IT?
Examina el campo TI del Selector de Segmento para determinar en qué Tabla de Descriptores se almacena el Descriptor de Segmento.
53
¿Qué indica el campo?
Este campo indica si el Descriptor está en la GDT (en cuyo caso la unidad de segmentación obtiene la dirección base lineal de la GDT desde el registro gdtr) o en la LDT activa (en cuyo caso la unidad de segmentación obtiene la dirección base lineal de esa LDT desde el registro ldtr).
54
¿A partir de qué se calcula la dirección del descriptor de Segmento?
A partir del campo de índice del Selector de Segmento.
55
¿Cómo se calcula la dirección de un descriptor de segmento?
El campo de índice se multiplica por 8 (el tamaño de un Descriptor de Segmento), y el resultado se suma al contenido del registro gdtr o ldtr.
56
¿Cómo obtiene la dirección lineal?
Suma el desplazamiento ("offset") de la dirección lógica al campo Base del Descriptor de Segmento, obteniendo así la dirección lineal.
57
¿Qué es el Global Descriptor Table (GDT)?
Global Descriptor Table (GDT): tabla guardada en memoria, apuntada por el registro llamado GDTR. Una por todo el sistema y siempre accesible. Kernel y memoria compartida.
58
¿Qué es el Local Descriptor Table (LDT)?
Local Descriptor Table (LDT): normalmente una por tarea, programa o proceso. Puede haber varias en el sistema pero solo una está activa en un momento dado.
59
¿Qué es el Segment Selector?
Segment Selector: índice en la GDT que apunta a un Segment Descriptor, cada tabla tiene 8192 entradas
60
¿Qué es el Segment Descriptor ?
Segment Descriptor : es una entrada de 8 bytes en la GDT: - 32 bits segmento - 20 bits de segmento límite dependiendo del G-bit
61
¿Cuáles son las diferencias entre segmentación y paginación?
La segmentación puede asignar un espacio de direcciones lineales diferente a cada proceso, mientras que la paginación puede mapear el mismo espacio de direcciones lineales en diferentes espacios de direcciones físicas.
62
¿Qué hace Linux respecto a la segmentación?
La usa mínimamente, Linux prefiere la paginación a la segmentación
63
¿Por qué Linux prefiere la paginación?
"Porque simplifica la gestión de memoria y mejora la portabilidad"
64
¿Qué valor tienen los segmentos en Linux?
"Comienzan en 0x00000000 y eso hace que en Linux las direcciones lógicas coinciden con las direcciones lineales.
65
¿Qué implica que los segmentos empiecen en 0 en Linux?
"Las direcciones lógicas coinciden con las direcciones lineales"
66
¿Qué tamaño tiene una página estándar en x86?
"4 KB"
67
¿Cuántas entradas tiene una Page Directory en x86?
"1024 entradas"
68
¿Qué tamaño tiene una entrada en la Page Directory?
"4 bytes"
69
¿Qué hace el bit Present (P) en la Page Directory Entry?
Este bit indica si la entrada de la tabla de páginas está presente en la memoria física. Si está establecido (1), la entrada está presente y se puede utilizar para traducir direcciones virtuales. Si está desactivado (0), la entrada no está presente y cualquier intento de acceso a ella causará un fallo de página.
70
¿Qué indica el bit Read/Write (R/W) en la Page Directory Entry?
Este bit controla si la región de memoria mapeada por esta entrada es de solo lectura (0) o lectura/escritura (1).
71
¿Qué hace el bit User/Supervisor (U/S) en la Page Directory Entry?
Este bit determina los privilegios de acceso a la región de memoria mapeada. Si está configurado, la región es accesible en modo usuario y modo supervisor. Si está desactivado, solo es accesible en modo supervisor.
72
¿Qué indica el bit Write-through (W/T) en la Page Directory Entry?
Este bit controla la política de escritura en caché para la región de memoria. Si está establecido, las escrituras se realizan a través de la caché. Si está desactivado, las escrituras se pueden realizar directamente en la memoria principal.
73
¿Qué indica el bit Cache Disable (C) en la Page Directory Entry?
Este bit se utiliza para desactivar la caché para la región de memoria mapeada. Si está establecido, la caché está desactivada para la región. Si está desactivado, la caché puede utilizarse.
74
¿Qué hace el bit Accessed (A) en la Page Directory Entry?
Este bit se establece por hardware cada vez que se accede a la región de memoria mapeada. Es útil para la gestión de la memoria y la optimización de algoritmos de reemplazo de páginas.
75
¿Qué hace el bit Dirty (D) en la Page Directory Entry?
Este bit se establece por hardware cada vez que se escribe en la región de memoria mapeada. Indica que la página ha sido modificada desde la última vez que se limpió.
76
¿Qué indica el bit Large Page (PS) en la Page Directory Entry?
Si este bit está configurado, indica que la entrada PDE apunta a una tabla de páginas de tamaño grande (4 MB en lugar de 4 KB). Esto se utiliza para el soporte de páginas grandes y puede mejorar el rendimiento en ciertos casos.
77
¿Qué hace el bit Global (G) en la Page Directory Entry?
Este bit se utiliza para páginas globales. Si está establecido, la página no se elimina del caché de traducción de direcciones (TLB) cuando se cambia el contexto del proceso.
78
¿Qué hace el bit Available (Avail) en la Page Directory Entry?
Estos bits están disponibles para el uso del software y pueden ser utilizados para almacenar información adicional específica del sistema operativo o de la aplicación.
79
¿Qué hace el bit Present (P) en la Page Table Entry?
Este bit indica si la página de memoria física asociada con esta entrada de la tabla de páginas está presente en la memoria física. Si está establecido (1), la página está presente y se puede acceder. Si está desactivado (0), cualquier intento de acceso a la página causará un fallo de página.
80
¿Qué indica el bit Read/Write (R/W) en la Page Table Entry?
Este bit controla si la página de memoria mapeada por esta entrada es de solo lectura (0) o lectura/escritura (1).
81
¿Qué hace el bit User/Supervisor (U/S) en la Page Table Entry?
Este bit determina los privilegios de acceso a la página de memoria mapeada. Si está configurado, la página es accesible en modo usuario y modo supervisor. Si está desactivado, solo es accesible en modo supervisor.
82
¿Qué indica el bit Write-through (W/T) en la Page Table Entry?
Este bit controla la política de escritura en caché para la página de memoria mapeada. Si está establecido, las escrituras se realizan a través de la caché. Si está desactivado, las escrituras se pueden realizar directamente en la memoria principal.
83
¿Qué indica el bit Cache Disable (C) en la Page Table Entry?
Este bit se utiliza para desactivar la caché para la página de memoria mapeada. Si está establecido, la caché está desactivada para la página. Si está desactivado, la caché puede utilizarse.
84
¿Qué hace el bit Accessed (A) en la Page Table Entry?
Este bit se establece por hardware cada vez que se accede a la página de memoria mapeada. Es útil para la gestión de la memoria y la optimización de algoritmos de reemplazo de páginas.
85
¿Qué hace el bit Dirty (D) en la Page Table Entry?
Este bit se establece por hardware cada vez que se escribe en la página de memoria mapeada. Indica que la página ha sido modificada desde la última vez que se limpió.
86
¿Qué hace el bit Global (G) en la Page Table Entry?
Este bit se utiliza para páginas globales. Si está establecido, la página no se elimina del caché de traducción de direcciones (TLB) cuando se cambia el contexto del proceso.
87
¿Cuáles son los registros importantes para la paginación?
CR0 y CR3.
88
¿Qué determina el bit más a la izquierda de el registro CR0 si está en 0?
determina que la lineal address se convierte directamente en physical address para acceder a la memoria.
89
¿Qué pasa si PG esta en 1?
Si PG está en 1 la lineal address debe ser convertida en physical address a través del mecanismo de paginación.
90
¿Cuál es la función principal del CR0?
El registro CR0 alberga varios flags que controlan cómo opera el procesador en varios aspectos. Es especialmente importante para habilitar o deshabilitar la paginación y el modo protegido.
91
¿Cuáles son los bits principales del CR0?
- PE (Bit 0, Modo Protegido): Cuando este bit está establecido, el procesador opera en modo protegido. De lo contrario, opera en modo real. - WP (Bit 16, Protección de Escritura): Cuando está establecido, determina el comportamiento de las páginas de solo lectura en modo supervisor. - PG (Bit 31, Paginación): Cuando este bit está establecido, la paginación está habilitada. Si está desactivado, el procesador usa una traducción de dirección lineal a física directa.
92
¿Qué propósito específico tienen estos bits?
Cada uno de estos bits tiene un propósito específico, determinan cómo el procesador x86 interactúa con la memoria, cómo maneja las excepciones y cómo opera en general.
93
¿Para qué es esencial el registro CR0?
El registro CR0 es esencial para inicializar el procesador al arrancar
94
¿Para qué es fundamental el bit PG?
El bit PG es fundamental para habilitar o deshabilitar la paginación.
95
¿Cuál es el principal problema que busca resolver la TLB?
La lentitud en la traducción de direcciones de memoria
96
¿Qué significa TLB?
Translation Lookaside Buffer
97
¿Qué es TLB?
Es un mecanismo de cache de las traducciones más utilizadas entre los pares virtual to physical address.
98
¿Qué componente del sistema contiene a la TLB?
La MMU (Unidad de Gestión de Memoria)
99
¿Qué hace el hardware antes de consultar la page table?
Chequea si la traducción está en la TLB
100
¿Qué contiene la TLB?
La Translation Lookaside Buffer (TLB) es una pequeña tabla a nivel hardware que contiene los resultados de la recientes traducciones de memorias realizadas. Cada entrada de la tabla mapea una virtual page a una physical page
101
¿Qué es un TLB hit?
Cuando se encuentra una traducción en la TLB
102
¿Qué es un TLB miss?
Cuando no se encuentra la traducción en la TLB
103
¿Cómo están implementadas las entradas de la TLB para mejorar su velocidad?
En memoria estática on-chip cercana al procesador
104
¿Qué ventaja tiene una TLB con múltiples niveles?
Permite acceder más rápido a las traducciones frecuentes
105
¿Qué tipo de cache es la TLB?
Full-associative cache
106
¿Cómo se comparan las entradas de la TLB con la página virtual?
Se comparan en paralelo
107
¿Qué sucede en un context switch respecto a la TLB?
Se descartan las entradas de la TLB (flush)
108
¿Por qué se realiza un flush de TLB en un context switch?
Para evitar que un proceso acceda a la memoria de otro
109
¿Qué técnica evita el flush completo de la TLB?
Taguear las entradas con el ID del proceso
110
¿Quién es responsable de mantener la consistencia entre la TLB y la page table?
El sistema operativo
111
¿Qué es el TLB shutdown?
El proceso de invalidar entradas de la TLB en todos los procesadores
112
¿Por qué es costoso el TLB shutdown?
Porque requiere enviar interrupciones a todos los procesadores
113
¿Qué ocurre si no se realiza correctamente el TLB shutdown en un sistema multiprocesador?
Los procesadores podrían usar traducciones desactualizadas
114
¿Qué sucede cuando el sistema operativo modifica una entrada en la page table?
Debe asegurarse que la TLB refleje esos cambios
115
¿Qué es el mapeo directo en xv6?
Es una técnica donde las direcciones virtuales del kernel son iguales a las físicas, simplificando el acceso a la RAM y dispositivos.
116
¿Dónde se encuentra ubicado el kernel en xv6?
Está ubicado en KERNBASE=0x80000000 tanto en el espacio de direcciones virtuales como físicas.
117
¿Qué ventaja tiene el mapeo directo?
Simplifica el código del kernel para leer o escribir en la memoria física.
118
¿Qué hace fork con la memoria de usuario en xv6?
Usa la dirección física devuelta por el asignador directamente como virtual al copiar la memoria del padre al hijo.
119
¿Qué direcciones no están mapeadas directamente?
La página trampolín y las páginas de pila del kernel.
120
¿Dónde está mapeada la página trampolín?
Está mapeada en la parte superior del espacio de direcciones virtuales tanto para el espacio de kernel como usuario.
121
¿Dónde está mapeada las páginas de pila de kernel?
Cada proceso tiene su propia pila del kernel, que está mapeada en una dirección alta para que debajo de ella xv6 pueda dejar una página de protección sin mapear.
122
¿Qué es kalloc en xv6?
Es una función que aloca una página física de memoria y devuelve su dirección física.
123
¿Qué estructura utiliza kalloc para la lista libre?
Usa una lista de structs run, donde cada uno se almacena en la propia página libre.
124
¿Qué hace kfree?
Libera una página física y la agrega a la lista libre de páginas.
125
¿Qué características tiene kalloc?
No recibe parámetros, siempre aloca páginas de tamaño fijo y opera con direcciones físicas.
126
¿Cómo se protege la pila libre usada por kalloc y kfree?
Se usan locks para construir una región crítica y evitar corrupción de la estructura.
127
¿Cuál es el objetivo del mapeo de páginas?
Asignar una página física a una dirección virtual dada cuando un proceso pide más memoria.
128
¿Qué hacen los bits 31-22 y 21-12 en x86 con paginación de dos niveles?
Forman índices dentro de las tablas de páginas correspondientes.
129
¿Qué es una pte_t?
Es una entrada en una tabla de páginas que contiene la dirección física asociada y banderas de control.
130
¿Qué hace la función brk o sbrk en el kernel?
Ajusta el tamaño del heap del proceso sumando o restando bytes al program break.
131
¿Qué funciones auxiliares se usan para operar con pte?
pte_init para inicializar una entrada, y pte_pa para obtener la dirección física asociada.
132
¿Qué hace la función walk en xv6?
Obtiene la pte_t de nivel inferior asociada a una dirección virtual dada.
133
¿Qué pasa si walk encuentra una página no presente y alloc está en 1?
Se aloca una nueva tabla de páginas, se inicializa en cero y se marca como válida.
134
¿Cuántos niveles tienen las páginas en RISC-V de 64 bits?
Tienen 3 niveles.
135
¿Qué indican los bits superiores de la dirección virtual en RISC-V?
Los 25 bits superiores se ignoran.
136
¿Qué indica el bit V de una entrada de página?
Indica si la entrada apunta a una página válida o no está mapeada.
137
¿Qué hace malloc() en Unix?
Devuelve un bloque de memoria de size bytes alineado a 8 bytes (double word).
138
¿malloc() inicializa la memoria devuelta?
No, la memoria devuelta por malloc() no está inicializada.
139
¿Qué system calls puede usar malloc()?
Puede usar sbrk o mmap.
140
¿Qué hace free()?
Libera bloques reservados previamente con malloc(), calloc() o realloc().
141
¿Qué sucede si se llama a free() con un puntero no reservado por malloc()?
El comportamiento de free() es indefinido.
142
¿Qué hace este código? int *p1 = malloc(4*sizeof(int));
Reserva memoria suficiente para un arreglo de 4 enteros.
143
¿Se deben liberar todos los punteros que apuntan a memoria reservada con malloc()?
Sí, deben liberarse con free() para evitar fugas de memoria.
144
¿Qué estructura usa malloc para organizar la memoria?
Usa una estructura llamada Header.
145
¿Qué hace el campo 'ptr' de Header?
Apunta al siguiente bloque en la lista de bloques libres.
146
¿Qué hace el campo 'size' de Header?
Indica el tamaño del bloque en unidades de Header.
147
¿Cómo se busca un bloque libre en la lista de headers?
Se recorre la lista de bloques libres buscando uno con tamaño suficiente.
148
¿Qué pasa si el bloque libre encontrado es mayor al pedido?
Se puede dividir el bloque y reservar solo una parte.
149
¿Qué se hace con la parte restante de un bloque dividido?
Se deja en la lista de bloques libres como un nuevo Header.
150
¿Qué se hace al liberar un bloque?
Se inserta nuevamente en la lista de bloques libres.
151
¿Qué es el coalesce al liberar memoria?
Es la fusión de bloques libres adyacentes en uno más grande.
152
¿Cuándo es necesario pedir más memoria al sistema operativo?
Cuando no hay ningún bloque libre suficientemente grande para satisfacer la solicitud.
153
¿Cómo se solicita más memoria al sistema operativo?
Usando la system call sbrk o mmap para expandir el heap.
154
¿Qué es mmap()?
Es una system call que permite mapear archivos o memoria en el espacio de direcciones de un proceso.
155
¿Qué hace munmap()?
Libera la memoria mapeada previamente con mmap.
156
¿Cuándo se reserva memoria con mmap en vez de sbrk?
En casos donde se necesita más control, como asignaciones grandes o segmentadas, o si sbrk no está disponible.
157
¿Qué implica que la memoria devuelta esté alineada a 8 bytes?
Que su dirección es múltiplo de 8, lo cual es necesario para acceder correctamente a ciertos tipos de datos.
158
¿Qué ocurre si no se libera la memoria reservada con malloc()?
Se produce una fuga de memoria (memory leak).