¿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.

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










17 Comentarios
Funk
mayo 31st, 2005 at 6:34 pm
La verdad… me encantó!
La forma tan clara como explicas algo tan complicado es maravillosa.
Aprendà algo nuevo hoy… =)
Leandro
mayo 31st, 2005 at 8:34 pm
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?
Pablo
junio 1st, 2005 at 7:33 pm
Lucas: Mas claro, echale agua! Gracias!
Lucas
junio 2nd, 2005 at 2:11 am
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 :)
Gabriela
junio 4th, 2005 at 9:00 am
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
Pablo
junio 8th, 2005 at 9:27 pm
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!!!!
Lucas
junio 9th, 2005 at 12:57 am
Me alegro Pablo que te haya servido, ojalá hayas tenido exitos.
jourgen
julio 27th, 2005 at 3:05 am
muy bien explicado
seba
noviembre 11th, 2005 at 5:07 pm
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).
Jose Santiago
octubre 26th, 2006 at 9:55 am
Muy bueno… y como podemo corregir cuando tenemos esos problemas.. de paginacion
juan
noviembre 3rd, 2006 at 1:54 pm
excelente… intente un rato entenderlo con un libro de sistemas operativos y estaba complicado, pero tu explicacion esta fabulosa.. gracias por la ayuda!
pandita
junio 16th, 2007 at 12:03 am
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?
nacho
marzo 3rd, 2008 at 2:11 pm
excelente explicacion!!
LaFLaK
octubre 8th, 2008 at 3:23 pm
Me parece muy interesante la forma en la cual explicas este pequeño conflicto entre procesos ….
excelente !!!
roske
junio 22nd, 2010 at 8:02 pm
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!
Fabian
enero 20th, 2011 at 6:22 pm
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 :-)
wallace
noviembre 15th, 2011 at 8:56 am
Excelente explicación. La verdad que es una manera muy sencilla de enterarse