From 60eed25cbbb6a6030f854d64555c3d87711954b1 Mon Sep 17 00:00:00 2001 From: jesustorresdev Date: Tue, 3 Sep 2024 11:07:57 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ull-esit?= =?UTF-8?q?-sistemas-operativos/ssoo-apuntes@db320a881847df2b56e03319abd3e?= =?UTF-8?q?609e9483735=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- so2425/memoria_virtual.html | 100 ++++++++++++++++++++++++++++++++++-- so2425/sitemap.xml | 60 +++++++++++----------- 2 files changed, 125 insertions(+), 35 deletions(-) diff --git a/so2425/memoria_virtual.html b/so2425/memoria_virtual.html index 39e7f54..9abb413 100644 --- a/so2425/memoria_virtual.html +++ b/so2425/memoria_virtual.html @@ -316,7 +316,7 @@

17. Memor
-

Tiempo de lectura: 1 hora y 11 minutos

+

Tiempo de lectura: 1 hora y 15 minutos

@@ -3446,11 +3446,13 @@

-

17.7.6. Interbloqueo de E/S

+

17.7.6. Interbloqueo de E/S y bloqueo de páginas

-

Supongamos que un proceso solicita una operación de E/S sobre el contenido de alguna de las páginas de su espacio de direcciones y que, antes de que la operación sea realizada, la página es reemplazada mientras el proceso está esperando. -En ese caso, la operación de E/S se podría acabar realizando sobre una página que pertenece a un proceso diferente. -Para evitarlo existen diversas soluciones:

+

Supongamos que un proceso solicita una operación de E/S sobre el contenido del marco de alguna de las páginas de su espacio de direcciones y que, antes de que la operación sea realizada, la página es reemplazada mientras el proceso está esperando. +En ese caso, la operación de E/S se podría acabar realizando sobre una página que pertenece a un proceso diferente, ya que la operación de E/S se realiza sobre el marco en la memoria física.

+
+
+

Para evitarlo existen diversas soluciones:

+
+

17.7.7. Espacio de intercambio

+
+

La memoria virtual es una técnica que surgió para permitir ejecutar programas que no caben en la memoria física, cuando esta era un recurso muy limitado. +Actualmente, con la cantidad de memoria física disponible en los sistemas modernos, surge la duda de si sigue siendo necesario disponer de espacio de intercambio.

+
+
+

Para responder a esa pregunta, hay que tener en cuenta que las páginas de memoria pueden clasificarse en alguna de las siguientes categorías:

+
+
+
    +
  • +

    Páginas de código y datos del núcleo que siempre están en memoria, por lo que se bloquean para evitar que sean reemplazadas.

    +
  • +
  • +

    Páginas de para el caché de datos de E/S con el objeto de acelerar futuros accesos a los mismos. +Estas páginas puede ser reemplazadas y su contenido se puede descartar sin problemas.

    +
  • +
  • +

    Código de programas, que son páginas de solo lectura, por lo que su contenido es siempre el mismo que el del archivo del ejecutable que contiene al programa.

    +
  • +
  • +

    Páginas que mapean archivos en la memoria, cuyo contenido es el mismo que el de alguna región de un archivo en disco que les sirve de respaldo. +Cuando estas páginas son de solo lectura, su contenido puede ser descartado sin problema. +Mientras que si permiten acceso de escritura, las modificaciones son escritas por el sistema operativo en el archivo mapeado.

    +
  • +
  • +

    Páginas anónimas, son aquellas que no corresponden con ningún archivo en disco. +Eso incluye la pila, el montón o la memoria reservada dinámicamente con malloc(), new o mmap().

    +
    +

    Como el contenido de estas páginas no está respaldado en disco, si se reemplazan, el sistema operativo debe guardar su contenido en el espacio de intercambio.

    +
    +
  • +
+
+
+

Tener suficiente espacio de intercambio asegura la igualdad de trato entre las páginas de memoria, independientemente del tipo de página que sean. +Porque si un sistema no dispone de espacio de intercambio, no puede reemplazar páginas anónimas, sin importar si su contenido es accedido con poca frecuencia, +lo que puede llevar a reemplazar páginas más importantes para el rendimiento del sistema.

+
+
+

Veamos las situaciones más típicas en cuanto la demanda de memoria y como afecta al sistema tener o no espacio de intercambio:

+
+
+
Baja demanda de memoria
+
+
    +
  • +

    Con espacio de intercambio: El sistema puede optar intercambiar memoria anónima raramente utilizada, por ejemplo, para aumentar la cantidad de memoria caché y otras optimizaciones.

    +
  • +
  • +

    Sin espacio de intercambio: No se puede intercambiar la memoria anónima, ya que está bloqueada en la memoria. +Aunque esto puede no presentar un problema de inmediato, en algunos casos puede implicar una caída en el rendimiento debido a que las páginas anónimas usadas con menor frecuencia no se puede utilizar para cosas más importantes.

    +
  • +
+
+
+
+
Demanda moderada de memoria
+
+
    +
  • +

    Con espacio de intercambio: En este caso, todos los tipos de memoria tienen la misma posibilidad de ser reemplazadas. +Esto significa que hay mayores posibilidades de reemplazar una página que no vaya a ser reclamada rápidamente de nuevo.

    +
  • +
  • +

    Sin espacio de intercambio: Como las páginas anónimas están bloqueadas en la memoria, el reemplazo tiene que ocurrir en otro tipo de memoria, aunque contenga peores candidatos para el reemplazo. +Por tanto, el sistema tenderá a reducir las páginas utilizadas como caché de E/S, perjudicando el rendimiento del acceso al almacenamiento, y hay más posibilidades de reemplazar una página que se necesitará pronto, aumentando la probabilidad de acabar hiperpaginando.

    +
  • +
+
+
+
+
Alta demanda de memoria
+
+
    +
  • +

    Con espacio de intercambio: El sistema es más resiliente a picos temporales de demanda de memoria, ya que tiene libertad para escoger las mejores páginas para intercambio. +En casos de agotamiento severo de la memoria, tiende a prologarse el tiempo desde que comienza la hiperpaginación hasta que el sistema deja de ser usable.

    +
  • +
  • +

    Sin espacio de intercambio: El sistema cae en la hiperpaginación más rápidamente, ya que las páginas anónimas están bloqueadas en la memoria y no pueden ser reclamadas. +En los sistemas Linux, el OOM Killer se activa más rápidamente para recuperar memoria por la vía de terminar procesos en ejecución.

    +
  • +
+
+
+

17.8. Interfaz de gestión de la memoria

diff --git a/so2425/sitemap.xml b/so2425/sitemap.xml index 422eaa9..a840e99 100644 --- a/so2425/sitemap.xml +++ b/so2425/sitemap.xml @@ -6,152 +6,152 @@ http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/almacenamiento_secundario.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/bibliograf%C3%ADa.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/componentes_del_sistema.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/comunicaci%C3%B3n_mediante_paso_de_mensajes.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/c%C3%B3digo_de_los_ejemplos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/ediciones_y_licencia.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/gesti%C3%B3n_de_la_memoria.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/gesti%C3%B3n_de_procesos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/gesti%C3%B3n_del_almacenamiento.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/hilos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/historia_de_los_sistemas_operativos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/implementaci%C3%B3n_de_sistemas_de_archivos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/index.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/interfaz_de_programaci%C3%B3n_de_aplicaciones.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/introducci%C3%B3n.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/main.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 1.0 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/memoria_compartida.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/memoria_principal.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/memoria_virtual.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/operaci%C3%B3n_del_sistema_operativo.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/organizaci%C3%B3n_de_los_sistemas_operativos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/paginaci%C3%B3n.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/planificaci%C3%B3n_de_la_cpu.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/procesos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/qu%C3%A9_es_un_sistema_operativo.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/servicios_del_sistema.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/sincronizaci%C3%B3n.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/sistema_de_archivos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/sistemas_operativos_por_su_estructura.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5 https://ull-esit-sistemas-operativos.github.io/ssoo-apuntes/so2425/tipos_de_sistemas_operativos.html - 2024-09-02T16:10:43+00:00 + 2024-09-03T11:06:49+00:00 0.5