Jose Andres Novato
Cantidad de envíos : 11 Puntos : 31 Reputación : 0 Fecha de inscripción : 21/08/2010
| Tema: GARATE SARMIENTO JOSE CURSO: S6J Sáb Nov 13, 2010 6:32 pm | |
| CONFIGURACION DE LA MEMORIA VIRTUAL EN WINDOWS CONFIGURAR MEMORIA VIRTUAL LINUXLos procesos de Linux usan bibliotecas de código común, como por ejemplo rutinas de manejo de ficheros. No tendría sentido que cada proceso tenga su propia copia de la biblioteca, así pues Linux usa bibliotecas compartidas que varios procesos pueden usar al mismo tiempo. El código y los datos de estas bibliotecas compartidas tienen que estar unidos al espacio virtual de direccionamiento de un proceso y también al espacio virtual de direccionamiento de los otros procesos que comparten la biblioteca. Un proceso no utiliza todo el código y datos contenidos en su memoria virtual dentro de un período de tiempo determinado. La memoria virtual del proceso puede que tenga código que sólo se usa en ciertas ocasiones, como en la inicialización o para procesar un evento particular. Puede que sólo haya usado unas pocas rutinas de sus bibliotecas compartidas. Sería superfluo cargar todo su código y datos en la memoria física donde podría terminar sin usarse. El sistema no funcionaría eficientemente si multiplicamos ese gasto de memoria por el número de procesos en el sistema. Para solventar el problema, Linux usa una técnica llamada Páginación por Demanda (demand paging) que sólo copia una página de memoria virtual de un proceso en la memoria física del sistema cuando el proceso trata de usarla. De esta manera, en vez de cargar el código y los datos en la memoria física de inmediato, el núcleo de Linux altera la tabla de páginas del proceso, designando las áreas virtuales como existentes, pero no en memoria. Linux necesita saber de dónde viene esa memoria virtual y cómo ponerla en memoria para arreglar los fallos de página. Como estas áreas de memoria virtual vienen de varias fuentes, Linux introduce un nivel de abstracción en la interfaz haciendo que la estructura apunte a un grupo de rutinas de manejo de memoria virtual. De esta manera, toda la memoria virtual de un proceso se puede gestionar de una manera consistente sin que importe las diferentes maneras de gestionar esa memoria por parte de distintos servicios de gestión. Cuando un proceso reserva memoria virtual, en realidad Linux no reserva memoria física para el proceso. Lo que hace es describir la memoria virtual creando una nueva estructura. Esta se une a la lista de memoria virtual del proceso. Cuando el proceso intenta escribir en una dirección virtual dentro de la nueva región de memoria virtual, el sistema creará un fallo de página. El procesador tratará de decodificar la dirección virtual, pero dado que no existe ninguna entrada de tabla de páginas para esta memoria, no lo intentará más, y creará una excepción de fallo de página, dejando al núcleo de Linux la tarea de reparar el fallo. Linux mira a ver si la dirección virtual que se trató de usar está en el espacio de direccionamiento virtual del proceso en curso. Si así es, Linux crea los PTEs (entrada en la tabla de páginas) apropiados y reserva una página de memoria física para este proceso. Linux utiliza en un sistema Intel x86 utiliza páginas de 4 Kbytes. Cada una de estas páginas tiene asociado un único número; el número de marco de página (PFN). En este modelo de paginación, una dirección virtual está compuesta de dos partes: un desplazamiento y un número de página virtual. Si el tamaño de página es de 4Kbytes, los bits 11:0 de la dirección de memoria virtual contienen el desplazamiento y los restantes bits desde el bit 12 son el número de marco de página virtual. | |
|