Vale
Epsilon-e, creo que ya se mejor por donde vas.
En el PC hay una jerarquia de memorias ¿va?. Las memorias que tienen más capacidad son más lentas y las que tienen menos capacidad más rapidas
cuanto mas arriba más lento y más capacidad
- cintas (tienen terabytes, eso si, son lentas de la ostia)
- discos opticos (cd, dvd...)
- discos duros
- memoria RAM
- memoria caché (procesador)
para simplificar un poco vamos a suponer que las aplicaciones las vas a cargar siempre del disco duro y que no tienes ni cintas ni cd. Vamos a "suponer" una capacidad para cada una de las memorias
- discos duros (por ejemplo 20 GB)
- memoria RAM (por ejemplo 256 MB)
- memoria caché (por ejemplo 256 kB)
fijate en la diferencia de tamaños, que es importante, y recuerda que segun donde leas va más lento. Al ordenador le supone mucho tiempo buscar un dato en el disco duro, sin embargo le cuesta muy poco encontrarlo en caché.
Ésto es por una sencilla razon:
la paginación
Bien, tu en caché no puedes tener el KDE, el mozilla, el OO y encima ver un xvid de 650 MB sencillamente porque toooooodo eso no cabe en 256kb. Lo que hace el ordenador es lo siguiente:
1- el procesador busca un dato (un trozo programa en este caso) en cache
2- si existe lo lee, sino lo busca en la RAM
3- si existe en RAM lo copia en la cache y lo lee de ahi, sino lo busca en el disco duro.
4- si esta en el disco duro lo copia en la RAM, y de ahi a cache
el paso 1 es muy rapido (nanosegundos), el 2 es mas lento que el 1, el 3 es mas lento que el 2 y el 4 mas lento que el 3. A veces el 4 tarda segundos (
"si no está cargado tarda 7 segundos")
Imaginate el caso del mozilla. Tu todavia no lo has ejecutado ¿vale?, y piensa que ocupa más que lo que tienes de caché.
fase 1: no está en caché
fase 2: lo busco en RAM
fase 3: no está en RAM
fase 4: lo busco en el disco duro y lo
copio en RAM (segundos)
fase 5: no está en caché
fase 6: lo busco en RAM
fase 7: está en RAM, copio
lo que puedo en caché (milisegundos)
fase 8: está en cache, lo ejecuto
pero claro, no cabe tooodo en cache, asi que cuando pase un poco tiempo volverá a buscar en RAM, pero esta vez si estara ahi y no hara falta buscar en el disco duro, con lo que te ahorras unos más que precioso segundos
.
Entonces, lo que se ejecuta es lo que esáa en caché, si algo no esta ahi lo busca en RAM y sino en el disco duro. Vale, bien.
La caché tiene un limite: ejecuta lo que puede, y cuando quiere ejecutar algo que no está en caché lo busca en RAM, y sino en el disco duro.
Es por esto por lo que al ejecutar las aplicaciones la primera vez se tarda tanto, porque hay que leerlas del disco duro. La segunda vez seguramente esté ya en la memoria RAM y sea facil dejarla en caché.
Cuando tu cargas algo de la forma que te ha dicho
Ferdy lo que haces es que, de alguna manera, obligas al ordenador a cargar la aplicacion en RAM al arrancar el ordenador, para que de esta manera la primera vez que lo ejecutes sea más rápida, y por ello el ordenador tarda más tiempo en arrancar.
Bueno, otra cosa. Como hemos dicho, la caché tiene un limite, pero la RAM también lo tiene.
Por ejemplo, quieres ver un video de 650MB que está en el disco duro con 128MB de RAM. Obviamente no se ver "por trozos" (5 minutos de peli, descanso de 5 segundos, 5 minutos de peli ... ) y tú lo ves todo seguido, esto es porque, a medida que vas viendo pelicula, va sacando de memoria partes que tú ya has visto y va cargando partes nuevas (del disco duro a RAM y de RAM a caché, tú ves lo que está en caché)
Lo mismo pasa con los programas. Si en la memoria, digamos fisica, puedes meter 3 porgramas y metes más, lo que ocurre es que tendras en memoria los 3 últimos programas que ejecutes, y el cuarto se ira. ¿Donde?, al disco duro, a la partición
swap (esa es la finalidad de dicha partición).
Digo esto porque los
preloaders no solo se meten en memoria nada mas ejecutarse el ordenador, sino que ademas
no la abandonan para que, cada vez que quieras ejecutar el programa, puedas hacerlo enseguida. Es por ello que te he dicho que ejecutar muchos tampoco es bueno.
Pongamos un caso malo. Tienes 128MB de RAM y 100MB ocupados con los "preloaders" de mozilla y OO. Si a eso le quitas el KDE, el kernel, las X y alguna cosa mas ... pues tu piensa que te va a ir bastante mal porque es como si solo tuvieses 28MB de RAM. Repito que esto es en plan teórico (tampoco se lo que ocupan porque no los uso
).
Y sólo un último apunte más. La gente tiene la mala costumbre de decir que tienen algo en caché cuando se refieren a que está en RAM. Tú no puedes saber que tienes en caché.
Sé que lo que he dicho no es "estrictamente" correcto y que se pueden sacar muchas cosas, pero es para que se haga una idea. En un post tampoco es que se pueda explicar mucho mejor.
Espero que te sirva para aclararte un poco más (ahora bien, si ya sabias todo esto me suicido
)
Por cierto, si me lee algún profesor mío de arquitectura de computadores o similar que se apiade de mí y me apruebe
Saludos