Duda de "principiante".

Holaa.

Una cuestion-duda, cuando arranco el Mozilla la primera vez, tarda 7 segundos, pero cuando lo cierro y lo vuelvo a abrir, tarda solo 2. Creo que hace una cache. Pregunta, ¿como creo esa cache sin haber ejecutado antes Mozilla?.

Un saludo y gracias.

€-e
Es una opción de mozilla, corre en el background al inicio del gestor de sesiones (busca un poco en google algo como "mozilla preloader" o algo por el estilo)

Salu2.Ferdy
Bien, gracias, Ferdy, mirare a ver lo que pasa por google.

Saludos:

€-e
Joder que buen rollo me han dado esos 3 post :)

Epsilon-e, tienes que tener en cuenta una cosa. Los "preloader" no hacen magia, me refiero a que lo que hacen es que cargar el programa o un parte importante del mismo al arrancar (EDITO: me refería a arrancar pero no la aplicacion en sí, sino el PC).

Lo que te quiero decir es que si antes Mozilla tardaba 7 y 2 segundos, ahora arrancar el escritorio te tomará 5 segundos más, pero la primera vez que ejecutes Mozilla saltará en 2.

Y otra cosa más. Tendrás el Mozilla en RAM y no saldrá. Digo esto porque tener muchas cosas "precargadas" tampoco es bueno, no solo porque el arranque es maaaaas lento, sino tambien porque dejas menos memoria disponible.

Todo esto es en plan teórico, claro.

Saludos
Jo, RaUleX, ahora si que me has dejado asi: [flipa]

Yo, cuando salgo a consola, (logout), y vuelvo a entrar, el escritorio me tarda menos en arrancar, entonces, presupongo ¿que ya esta en memoria?, entonces tambien es valido para la pregunta inicial, ¿no?. XD

No, si esta claro, cuando mas aprendes, mas pronto te das cuenta de que sabes menos que al principio. :)

Muchas gracias a ambos por las conclusiones.

Saludos:

€-e
La mayoría de los SO (incluido windoze), "recuerdan" dónde han cargado por última vez un programa, así la próxima vez que se ejecute sólo es necesario marcar la zona de memoria como ocupada ;-)

Por supuesto, si se necesita memoria y el programa no está en ejecución, se sobreescribe.
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 :D.

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 XD).

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 XD)

Por cierto, si me lee algún profesor mío de arquitectura de computadores o similar que se apiade de mí y me apruebe [angelito]

Saludos [bye]
Bien explicado RaUleX! :D
El dia 3 tengo un examen de S.O. y el 20 uno de U.F.O. [alien] (unidades funcionales del computador!!! x'DDD) y el proceso de paginacion esta bien explicado... falta decir cosas como el tipo de paginación... si es paginación y segmentación... etc etc... [cartman] (puta mierda de examenes... tengo la cabeza loca!!! x'D)
Salu2!!!
De verdad, por mi, te doy Matricula de honor, Raulex.

Y, no quiero que te suicides, pero, las 3/4 partes si que las sabia, pero en fin, como que cuando te decides a escribir, no hay quien te pare... XD XD

Y ahora, en serio, muchas gracias por tu "locuacidad", y que, poco a poco con personas como todos vosotros, (Ferdy, Churly, tu, etc..) la gente como yo (o incluso mas lista), aprendamos como funcionan las cosas, al menos en este sistema Linux.

Muchas gracias, y esto, que me has explicado va a ir al disco duro para poder leerlo mucho mas tranquilo (espero que no tenga © Copyright ®) XD .

Un saludo:

€-e
Hombre, ésto es válido para cualquier ordenador y cualquier sistema operativo, no sólo para linux.

Lo unico asi que toca sistema operativo es lo de la particion swap, porque M$ usa un fichero en vez de una partición, que por cierto, en el 2k siempre ocupa lo mismo. Los 9x creaban un fichero con extensión .swp.

El intercambio entre disco duro y RAM y entre RAM y caché se realiza a nivel hardware, ahi no toca nada el sistema operativo, donde si toca es en lo que luego haga con esa memoria. Los 9x gestionan de una forma BASTANTE PÉSIMA la RAM, mientras que los NT lo hacen mejor. El 2k a mi nunca me ha tenido en memoria mas de 128MB, daba igual lo que cargase, eso si, usaba el disco duro como un condenado (y me dejaba 128+256 MB sin usar). Con linux puedes ejecutar programas y programas y ver con un monitor cómo evoluciona eso.

Y bueno, he caido en una cosa sobre el termino caché. Tambien se usa al cargar páginas web, sobre todo con navegadores decentes, puesto que si has visitado una página y vuelves a visitarla carga antes porque descarga menos cosas.

Y ya, ya se que en cuanto empiezo ... [tomaaa] [tomaaa] [tomaaa], y tú tranquilo, que no solo no tiene copyright sino que pienso que ningún texto deberia tenerlo para que la información pudiese llegar a todas las personas.


Saludos
Vaya Raulex, parece que me hayas robado los apuntes de Estructuras de computadores xD. Yo tengo por aquí un programa para hacer un chequeo de "stride" que hicimos en practicas, es curioso porque se ve como maneja windows la caché y como la maneja linux, la verdad es que no hay color. xD

Saludos
Raulex, y eso que estabas desaparecido, casi nos tiras la BD de EOL abajo :Ð
He notado que desde que posteo EOL va peor XD, no se por qué será [angelito]

Esta mañana he estado pensado en el metro y creo que me he equivocado en una cosa. Dije que la el intercambio de datos entre caché y RAM se hace por hardware, y entre disco duro y RAM también. Bueno, pues creo que he metido la pata, porque entre caché y RAM está claro que es el hardware quien controla el tema, pero entre disco duro y RAM no, es el sistema operafivo quien lo hace.

El caso es que al escribirlo dudé, pero ahora ya si que no dudo. Que lo hiciese el hardware no tiene sentido, puesto que el hardware controla direcciones de memoria fisicas, pero no lógicas, y al usar el disco duro ya tienes que andar usando direcciones lógicas y ya debe ser el sistema operativo quien tenga una política para ir paginando en RAM, de tal forma que haya que leer del disco duro lo menor posible.

Eso me encajaría mucho más con el distinto aprovechamiento que hacen los sistemas operativos con la memoria ;)

Siento el lapsus, pero es que hace cosa de 3 años que aprobé esas cosas y, aunque lo dije pensándo lo que decia, lo hice sin pararme a hacerlo 3 veces ;)


Saludos [bye]
12 respuestas