Bueno, lo que trato aqui es conocer un poco mas sobre como funciona un sistema operativo, para mejorar la programacion, ya que las mismas estan ligadas por mas que algo sea de mas alto nivel y otro de mas bajo.

Que es la paginacion?
la memoria en los sistemas operativos, estaba dividida de manera contigua como indica en la figura:
Imagen

el problema de este tipo de asignacion de memoria a un proceso era la fragmentacion externa, ( si tengo varios huecos en el medio de 12 k, y viene un proceso de 24k, no puedo atenderlo, aunque cuente con la memoria, no esta contigua)

para solucionar esto se planteo, la paginacion, que se divide la memoria en bloques de igual tamaño y se asigna a un proceso la cantidad de paginas que necesite, y estas no necesarimente tienen que estar juntas
Imagen


entonces como aplicamos esto bueno:

si tenemos una matriz, esta misma, se asigna cada fila a lo ancho de una pagina y cada columna como un renglon nuevo.
entonces si la recorremos por columna, cuando pasemos una frontera de pagina, el sistema operativo va a tener que cargar en memoria la pagina, si no lo esta (lo que se conoce como page fault) y eso traeria un problema de rendimiento.
Entonces conviene recorrer la matriz fila por columna.

Ejemplo:
matriz[256][256]

for j=o to 255
{
for i=0 to 255 matriz[j] = 5;
}




Page fault: al usar memoria virtual, no todas las paginas estan en memoria, entonces en la paginacion por demanda solo se usan las paginas cuando son requeridas, el page fault genera una interrupcion del proceso hasta que obtenga del sistema operativo la pagina correspondiente. lo cual genera un retardo de nuestra aplicacion.



bueno espero que les haya servido, y hayan aprendido algo basico de como funciona la gestion en memoria (a grandes rasgos) el que quiera saber mas que lea el silberchantz o el stallin , sistemas operativos, (la tuve que estudiar hace poco :P )


Saludos!

Leos.
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
solo lei el comienzo... y creo que intentas explicar como funciona la memoria ram... eso no lo podemos controlar desde nuestros programas y no es avanzado...

salu2!
Imagen
estaria bueno que leas mas, antes de opinar...., y si, es avanzado, porque todo el mundo programa sin saber como funciona a bajo nivel la asignacion de memoria y los tiempos de llamadas al sistema, no es que podamos controlar la paginacion y la asignacion de memoria, pero podemos aprobecharnos de ella para mejorar el tiempo de respuesta de nuestro programa, te invito a que lo leas completo y saques tus conclusiones.
saludos.
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
umm, lo lei y esta bastante bien explicado pero creo que tendrias que recorrer un matriz bastante grande en un pc muy penoso para que se notara la diferencia en milisegundos... con los ordenadores que hay aora esque nise nota aunque no sepas como funciona la memoria ram.

Es un buen articulo para el que no conoce como funciona la memoria.

salu2!
Imagen
sisi me olvide aclararlo, es solo en aplicaciones que consuman muchos recursos por ejemplo , en un crackeador de passwords seria una opcion a tener en cuenta ya que cambiaria bastante.
Muchas gracias por leerlo amigo, saludos!
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
Buen artículo y de acuerdo también con Drinky la diferencia sería dificil notarla en un programa común pero nunca esta demás saber esto me gustan mucho tus posts leos_79 siempre muy interesantes y con algo muy útil.
//mHmm..
Responder

Volver a “Otros lenguajes”