SoloCodigo
Sistemas Operativos => GNU/Linux => Mensaje iniciado por: aguila3000 en Lunes 7 de Febrero de 2011, 23:06
-
Hola.
Tengo entendido que el espacio de memoria virtual direccionable por un S.O. Linux de 32 bits, es de 4GiB, en donde 1GiB es usado por el kernel y 3GiB para los procesos.
En el caso de un S.O. Linux de 64bits, por lógica el espacio de memoria virtual direccionable es de : 17179869184 GiB, me interesa saber o donde puedo encontrar información de ¿Como se gestiona la memoria Linux 64 bits ?. Es decir cuanta memoria se usa para el kernel y cuanta para los procesos.
Si es igual al de 32bits entonces debería ser así: 1 GiB para el kernel y el resto para los procesos 17179869183 GiB, pero realmente no estoy seguro y me parece que es distinto.
-
Tengo entendido que el espacio de memoria virtual direccionable por un S.O. Linux de 32 bits, es de 4GiB, en donde 1GiB es usado por el kernel y 3GiB para los procesos.
Estás equivocado. Linux funciona en sistemas con 256 MiB y menos. Además, 1 GiB para el kernel es excesivamente demasiado.
me interesa saber o donde puedo encontrar información de ¿Como se gestiona la memoria Linux 64 bits ?
Tienes el código fuente en kernel.org. Más detallado que eso, imposible.
-
Estás equivocado. Linux funciona en sistemas con 256 MiB y menos. Además, 1 GiB para el kernel es excesivamente demasiado.
Me baso en estos documentos :
http://www.linuxdriver.co.il/ldd3/chp-15-sect-1.shtml
http://linux-mm.org/LinuxMMDocumentation
http://www.win.tue.nl/~aeb/linux/lk/lk-9.html
En donde explican la diferencia entre memoria física y virtual.
Encontre este documento http://www.informit.com/articles/article.aspx?p=29961&seqNum=2, en donde explican la gestión de memoria en los S.O. de 64 bits.
Al parecer dicen segun el cuadro: http://ptgmedia.pearsoncmg.com/images/chap4_0130610143/elementLinks/04fig11.gif
que esta dividido en regiones, en donde cada region tiene un tamaño de 2^61, con lo cual deduzco que:
El espacio direccionable para el kernel sería de : (2^61)*3, y para los proceso sería de : (2^61)*5.
Tienes el código fuente en kernel.org. Más detallado que eso, imposible.
Tambien lo tengo, pero siempre es necesario tener un marco teorico al respecto que ayuden a comprender más rápido algunas cosas, y es lo que estoy buscando.
Me faltan despejar algunas dudas pero ya estoy encontrando lo que necesito.
Gracias por tu ayuda.
-
Ah disculpa, te refieres a la memoria virtual, me había confundido.
-
No hay problema, disculpa aceptada :).
Una de las dudas que tengo es que obviamente no creo sea posible direccionar 2^64=16 EiB de memoria virtual, a menos que existan discos duros en donde se puedan crear 2^64=16 EiB o más de espacio de intercambio (swap), al menos no se si existan esos discos duros o se tengan que emular usando varios discos duros. En fin seguire investigando a ver que encuentro. como dice el dicho: preguntando se llega a Roma.
-
Sí se pueden direccionar 2^64 direcciones. Eso no quiere decir que realmente tenga que existir dicho espacio. Es menester del SO administrar dicho espacio de direcciones correctamente con la RAM y el swap disponible. Eso es un máximo, no un exigible. Es decir, el procesador es capaz de direccionar dicho espacio de direcciones porque físicamente se puede (hay un bus de direcciones de 64 bits). Eso no implica que realmente haya tal espacio de direcciones físicamente. Lo mismo pasaba cuando surgió el 386, que permitía 4 GiB de direccionamiento cuando en esa época era impensable tal cantidad de memoria. De ahí el nombre memoria "virtual".
Saludos.
-
Gracias, es lo que habia leído.
Al parecer el uso de esas caracteristicas aun no es alcanzable por las supercomputadoras,
http://en.wikipedia.org/wiki/Jaguar_(computer), en este artículo mencionan el uso de Linux con una memoria de 360 TiB, aunque no mencionan si es física o virtual, me imagino debe ser física. Me imagino que con la memorias de intercambio con discos duros, si pueden llegar a los 16 EiB, facilmente.
Y muchas gracias por tus comentarios. :)
-
Buen artículo, gracias por compartirlo.