]> git.llucax.com Git - z.facultad/75.00/informe.git/blobdiff - source/gc.rst
Cambiar "ociosa" por "inutilizada"
[z.facultad/75.00/informe.git] / source / gc.rst
index a9c56cb6c1deed88c0461e72fb67db9848c72611..0b91155c37e2b595122ae115b1cdeee7ff6bf64a 100644 (file)
@@ -1681,7 +1681,7 @@ linealmente.
 
 
 
-.. _ref_gc_copy_2space:
+.. _ref_gc_copy:
 
 Copia de semi-espacio
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1689,12 +1689,11 @@ Copia de semi-espacio
 Este algoritmo consiste en hacer una partición del *heap* en 2 mitades
 o *semi-espacios*, llamados usualmente *Fromspace* y *Tospace*. El primero se
 utiliza para alocar nuevas celdas de forma lineal, asumiendo un *heap*
-contiguo, incrementando un puntero (ver figura :vref:`fig:gc-copy-2space`).
-Esto se conoce como *pointer bump allocation* y es, probablemente, la forma
-más eficiente de alocar memoria (tan eficiente como alocar memoria en el
-*stack*).
+contiguo, incrementando un puntero (ver figura :vref:`fig:gc-copy`).  Esto se
+conoce como *pointer bump allocation* y es, probablemente, la forma más
+eficiente de alocar memoria (tan eficiente como alocar memoria en el *stack*).
 
-.. fig:: fig:gc-copy-2space
+.. fig:: fig:gc-copy
 
    Estructura del *heap* de un recolector con copia de semi-espacios.
 
@@ -1722,21 +1721,22 @@ más eficiente de alocar memoria (tan eficiente como alocar memoria en el
       /|                              /|    BB "Tospace"
 
 
-La segunda mitad (*Tospace*) permanece ociosa hasta que se agota el espacio en
-el *Fromspace*; en ese momento comienza el proceso de recolección de basura
-que consiste en recorrer el grafo de conectividad, copiando las celdas *vivas*
-del *Fromspace* al *Tospace* de manera contigua, como si estuvieran alocando
-por primera vez. Como la posición en memoria de las celdas cambia al ser
-movidas, es necesario actualizar la dirección de memoria de todas las celdas
-*vivas*. Para esto se almacena una dirección de memoria de redirección,
-*forwarding address*, en las celdas que mueven. La *forwarding address* sirve
-a su vez de marca, para no recorrer una celda dos veces (como se explica en
-:ref:`ref_gc_intro_mark`). Cuando se encuentra una celda que ya fue movida,
-simplemente se actualiza la referencia por la cual se llegó a esa celda para
-que apunte a la nueva dirección, almacenada en la *forwarding address*. Una
-vez finalizado este proceso, el *Fromspace* y *Tospace* invierten roles y se
-prosigue de la misma manera (todo lo que quedó en el viejo *Fromspace* es
-*basura* por definición, por lo que se convierte el *Tospace*).
+La segunda mitad (*Tospace*) permanece inutilizada hasta que se agota el
+espacio en el *Fromspace*; en ese momento comienza el proceso de recolección
+de basura que consiste en recorrer el grafo de conectividad, copiando las
+celdas *vivas* del *Fromspace* al *Tospace* de manera contigua, como si
+estuvieran alocando por primera vez. Como la posición en memoria de las celdas
+cambia al ser movidas, es necesario actualizar la dirección de memoria de
+todas las celdas *vivas*. Para esto se almacena una dirección de memoria de
+redirección, *forwarding address*, en las celdas que mueven. La *forwarding
+address* sirve a su vez de marca, para no recorrer una celda dos veces (como
+se explica en :ref:`ref_gc_intro_mark`). Cuando se encuentra una celda que ya
+fue movida, simplemente se actualiza la referencia por la cual se llegó a esa
+celda para que apunte a la nueva dirección, almacenada en la *forwarding
+address*. Una vez finalizado este proceso, el *Fromspace* y *Tospace*
+invierten roles y se prosigue de la misma manera (todo lo que quedó en el
+viejo *Fromspace* es *basura* por definición, por lo que se convierte el
+*Tospace*).
 
 A continuación se presenta una implementación sencilla de los servicios
 provistos por este tipo de recolectores. Cabe destacar que este tipo de
@@ -1850,7 +1850,6 @@ apunta a ``h3``, por lo tanto ésta es movida al *Tospace* primero, dejando una
          |  ______|_V________|__V______|___________V______  |
          | ZZZZGGGGGGGGZZZZGGGGGGGGggggggggZZZZGGGGGGGGZZZZ |
          | ZZZZGGGGGGGGZZZZGGGGGGGGggggggggZZZZGGGGGGGGZZZZ |
-         | ZZZZGGGGGGGGZZZZGGGGGGGGggggggggZZZZGGGGGGGGZZZZ |
          |  ~~~~~~~~~|~~~~~~~~~~A~~~~~~~A~~~~~~~~~~~~~~~~~  |
          |      h1   |      h2  |   h3  |       h4          |
          |           \----------/       |                   |
@@ -1861,7 +1860,6 @@ apunta a ``h3``, por lo tanto ésta es movida al *Tospace* primero, dejando una
          |  ______________________________________________  |
          | BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
          | BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
-         | BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
          | A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  |
          | |                                                |
          | \----+"free"                                     |
@@ -1886,7 +1884,6 @@ apunta a ``h3``, por lo tanto ésta es movida al *Tospace* primero, dejando una
          |  ______|_V________|__V______|___________V______  |
          | ZZZZGGGGGGGGZZZZGGGGGGGGffffffffZZZZGGGGGGGGZZZZ |
          | ZZZZGGGGGGGGZZZZGGGGGGGGffffffffZZZZGGGGGGGGZZZZ |
-         | ZZZZGGGGGGGGZZZZGGGGGGGGffffffffZZZZGGGGGGGGZZZZ |
          |  ~~~~~~~~~|~~~~~~~~~~A~~~~~~~|A~~~~~~~~~~~~~~~~  |
          |      h1   |      h2  |   h3  ||      h4          |
          |           \----------/       ||                  |
@@ -1897,7 +1894,6 @@ apunta a ``h3``, por lo tanto ésta es movida al *Tospace* primero, dejando una
          |  V_____________________________________________  |
          | HHHHHHHHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
          | HHHHHHHHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
-         | HHHHHHHHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
          |  ~~~~~~~A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  |
          |         |                                        |
          |         \----+"free"                             |
@@ -1937,7 +1933,6 @@ ubicación de ``h2`` pero no se vuelve a copiar la celda (ver figura
          |  ______|_V________|__V______|___________V______  |
          | ZZZZGGGGGGGGZZZZFFFFFFFFffffffffZZZZGGGGGGGGZZZZ |
          | ZZZZGGGGGGGGZZZZFFFFFFFFffffffffZZZZGGGGGGGGZZZZ |
-         | ZZZZGGGGGGGGZZZZFFFFFFFFffffffffZZZZGGGGGGGGZZZZ |
          |  ~~~~~~~~~|~~~~~~~~~~A|~~~~~~|A~~~~~~~~~~~~~~~~  |
          |      h1   |      h2  ||  h3  ||      h4          |
          |           \----------/+      ||                  |
@@ -1948,7 +1943,6 @@ ubicación de ``h2`` pero no se vuelve a copiar la celda (ver figura
          |  V______V______________________________________  |
          | HHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
          | HHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
-         | HHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
          |  ~~|~~~~~~A~~~~~A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  |
          |    |      |     |                                |
          |    \------/     \----+"free"                     |
@@ -1974,7 +1968,6 @@ ubicación de ``h2`` pero no se vuelve a copiar la celda (ver figura
          |  ______|_V________|__V______|___________V______  |
          | ZZZZFFFFFFFFZZZZFFFFFFFFffffffffZZZZGGGGGGGGZZZZ |
          | ZZZZFFFFFFFFZZZZFFFFFFFFffffffffZZZZGGGGGGGGZZZZ |
-         | ZZZZFFFFFFFFZZZZFFFFFFFFffffffffZZZZGGGGGGGGZZZZ |
          |  ~~~~~~~|~|~~~~~~~~~~A|~~~~~~|A~~~~~~~~~~~~~~~~  |
          |      h1 | |      h2  ||  h3  ||      h4          |
          |         \-+----------/+      ||                  |
@@ -1985,7 +1978,6 @@ ubicación de ``h2`` pero no se vuelve a copiar la celda (ver figura
          |  V______V_______V______________________________  |
          | HHHHHHHHhhhhhhhhHHHHHHHHBBBBBBBBBBBBBBBBBBBBBBBB |
          | HHHHHHHHhhhhhhhhHHHHHHHHBBBBBBBBBBBBBBBBBBBBBBBB |
-         | HHHHHHHHhhhhhhhhHHHHHHHHBBBBBBBBBBBBBBBBBBBBBBBB |
          |  ~~|~~~~~~A~|~A~~|~A~~~~A~~~~~~~~~~~~~~~~~~~~~~  |
          |    |      | | |  | |    |                        |
          |    \------/ | \--/ |    \----+"free"             |
@@ -2021,7 +2013,6 @@ nueva ubicación de ``h3``, como se muestra en la figura
          |  ______|_V________|__V______|___________V______  |
          | ZZZZFFFFFFFFZZZZFFFFFFFFffffffffZZZZFFFFFFFFZZZZ |
          | ZZZZFFFFFFFFZZZZFFFFFFFFffffffffZZZZFFFFFFFFZZZZ |
-         | ZZZZFFFFFFFFZZZZFFFFFFFFffffffffZZZZFFFFFFFFZZZZ |
          |  ~~~~~~~|~|~~~~~~~~~~A|~~~~~~|A~~~~~~~~~~|~~~~~  |
          |      h1 | |      h2  ||  h3  ||      h4  \----\  |
          |         \-+----------/+      ||               |  |
@@ -2032,7 +2023,6 @@ nueva ubicación de ``h3``, como se muestra en la figura
          |  V______V_______V________V_____________________  |
          | HHHHHHHHhhhhhhhhHHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBB |
          | HHHHHHHHhhhhhhhhHHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBB |
-         | HHHHHHHHhhhhhhhhHHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBB |
          |  ~~|~~~~~~A~|~A~~|~A~|~~~~~~A~~~A~~~~~~~~~~~~~~  |
          |    |      | | |  | | |      |   |                |
          |    \------/ | \--/ | \------/   \----+"free"     |
@@ -2057,21 +2047,19 @@ nueva ubicación de ``h3``, como se muestra en la figura
          |  ______________________________________________  |
          | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
          | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
-         | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
          |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  |
          |                                                  |
          |                                                  |
          |                                                  |
-         | /-----------+"root set"                          |
+         | /---+"root set"                                  |
          | |                                                |
          | | h3      h2      h1      h4                     |
          | V______________________________________________  |
          | HHHHHHHHhhhhhhhhHHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBB |
          | HHHHHHHHhhhhhhhhHHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBB |
-         | HHHHHHHHhhhhhhhhHHHHHHHHhhhhhhhhBBBBBBBBBBBBBBBB |
          |  ~~|~~~~~~A~|~A~~|~A~|~~~~~~A~~~A~~~~~~~~~~~~~~  |
          |    |      | | |  | | |      |   |                |
-         |    \------/ | \--/ | \------/   \----+"free"     |
+         |    \------/ | \--/ | \------/   \---+"free"      |
          | "Fromspace" \------/                             |
          +--------------------------------------------------+