may 05 31

Hiperpaginación o thrashing, del control al caos

Tiempo estimado de lectura: 2,36 minutos

¿Alguna vez sus máquinas se les pusieron mortalmente lentas y el led del disco no paraba ni aunque la desenchufaran? Bueno, acá les intentaré explicar de la forma más sencilla que puedo, qué es lo que pasa en estos casos TAN desagradables.

Los sistemas operativos multi-procesos, deben administrar la memoria de la mejor manera posible para que todos los procesos coexistan de forma equilibrada. Para esto, el SO. usa una técnica llamada paginación, que divide la memoria en distintos frames o páginas que le son asignados a cada proceso.

Todos sabemos que la memoria no es un recurso ilimitado, por esto es que existe la memoria virtual. Esta memoria virtual, no es más que una extensión de esas páginas en otro dispositivo de almacenamiento que no sea la memoria Principal (por ejemplo el disco rígido). Esto es lo que se conoce comúnmente como swaping; utilizar otro dispositivo de almacenamiento como extensión de la memoria principal (lo hace Photoshop cuando trabaja con imágenes grandes).

Ahora bien; cada proceso, tiene un número mínimo de frames o páginas que requiere que estén en la memoria principal para funcionar de forma correcta; por lo que no funcionaría si le falta alguno de esos espacios de memoria. Cuando esto sucede, el proceso, llamémosle A, envía un error de paginación solicitando que se le dé más espacio en la memoria principal. Hasta acá funcionaría todo bajo control.

¿Qué pasa cuando no tenemos disponibles esa cantidad mínima de memoria que necesita este proceso A?, tendríamos dos posibilidades: la primera sería quitarle alguna página a otro proceso B que se esta ejecutando para dársela a este. La segunda y que no viene al caso, sería dejar en cola de espera el proceso hasta que haya memoria suficiente, lo cual podría esperar eternamente sin resultados.

Supongamos que le quitamos páginas en memoria al proceso B y las bajamos al disco rígido haciendo swaping para que se cumpla que haya disponible el mínimo necesario para que nuestro proceso A funcione. Todo fantástico con el proceso A; pero resulta que el proceso B manda un error de paginación ya que necesitaba que sí o sí estén en la memoria principal esos frames que le quitamos. Otra vez corremos con la disyuntiva de que podríamos hacer.
Supongamos que somos un sistema operativo tipo Windows y le bajamos de nuevo al proceso A algunas páginas al disco rígido para dárselos al B; el B estaría fabulosamente bien, pero el A se moriría de bronca y le haría un piquete al SO con una bandera de “error de paginación”.

De esta forma, el procesador se mataría paginando y bajando de la memoria principal al swap y viceversa para que los dos estén felices… pero ninguno lo estaría. Ni el proceso A ni el proceso B que tardarían años en terminar sus funciones, ni el SO que estaría matando al microprocesador en acciones inútiles ni muchos menos nosotros que veríamos como la PC esta casi muerta con el procesador al 100% y el led del disco estaría rojo en todo momento.

Imaginen por un momento esta situación cuando tenemos más arriba de 50 procesos simultáneos. Sería un verdadero quilombo.

Es por eso que mientras mayor es el grado de multiproceso más probabilidades hay que nuestra PC esté en estado de thrashing. Este gráfico podría ayudar a entender el moco que sería.

thrashing - hiper paginacion

Ahora ya lo entienden al Windows, cuando hace esto o simplemente cuando dice que hay un error de paginación y unos números que nadie podría entender. No es tarea fácil ser un sistema operativo. :P

Copame! Digg it Digg it Reddit Del.icio.us

    17 Comentarios

  1. Funk


    La verdad… me encantó!
    La forma tan clara como explicas algo tan complicado es maravillosa.
    Aprendí algo nuevo hoy… =)

  2. Leandro


    Excelente explicación. La verdad que me quedó reclaro. Sólo una pregunta (para el que quiera/pueda contestar): ¿en linux hay problema de thrashing o se las ingeniaron para solucionar ese problema?

  3. Pablo


    Lucas: Mas claro, echale agua! Gracias!

  4. Lucas


    Leandro todos los sistemas operativos multi-procesos tienen este problema. El tema está en como resolverlo. Algunos algoritmos de linux usan semaforos (similares a los usados para evitar el deadlock) otros matan al proceso con menos prioridad, otros lo dejan en cola de espera… en fin hay varias tecnicas.

    A los demás gracias por los comentarios :)

  5. Gabriela


    joer, que complicado… pero gracias por la explicacion, voy a imprimirlo a estudiarlo de nuevo, por que así de primera intension… me cuesta un poco.
    Un beso

  6. Pablo


    Muchas gracias caballero! Son las 2:25 de la mañana y maña me examino de SO :O(. en los apuntes ke tengo no entendia de ke iba esto del Thrashing (¿o “trashing”?), me he leido esto en 5 min y lo he pillao a la primera. Thankyous!!!!

  7. Lucas


    Me alegro Pablo que te haya servido, ojalá hayas tenido exitos.

  8. jourgen


    muy bien explicado

  9. seba


    claro, pero hay un error!
    los “frames” son los marcos donde se guardan las paginas. son porciones de memoria destinados a eso.
    las paginas son porciones de procesos que se cargan en memoria, en los marcos (frames).

  10. Jose Santiago


    Muy bueno… y como podemo corregir cuando tenemos esos problemas.. de paginacion

  11. juan


    excelente… intente un rato entenderlo con un libro de sistemas operativos y estaba complicado, pero tu explicacion esta fabulosa.. gracias por la ayuda!

  12. pandita


    Maravillosa explicacion, yo tenia una version muy corta de ese tema ni para 2 lineas…. Devo suponer entonces que “…nunca habra memoria ram fisica suficiente” en un S.O. :(

    Actualmente estoy usando Second Life y el “uso de PF” llega a 1.5GB… devo poner mas memoria fisica? y cuanto?

  13. nacho


    excelente explicacion!!

  14. LaFLaK


    Me parece muy interesante la forma en la cual explicas este pequeño conflicto entre procesos ….

    excelente !!!

  15. roske


    Si alguien quiere un poco de información un poco más técnica (aún así no necesita grandes conocimientos previos para entender el texto) que visite esta página

    http://wwwdi.ujaen.es/~lina/TemasSO/MEMORIAVIRTUAL/6Hiperpaginacion.htm

    Un saludito!

  16. Fabian


    Excelente post! Me gustó muchísimo la manera en cómo explicaste algo tan complejo en palabras simples. Me fue muy útil la información :-)

  17. wallace


    Excelente explicación. La verdad que es una manera muy sencilla de enterarse

Deja un Comentario

Tags permitidos:

  • <a href="" title="">
  • <abbr title="">
  • <acronym title="">
  • <blockquote cite="">
  • <code>
  • <em>
  • <strong>