Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Integrantes:
Alzugaray, Maximiliano Alejandro 120980
125562 1013455
Windows Vista:
Conceptos fundamentales:
Una de las caractersticas ms destacables de este S.O., se vasa en un sistema de memoria virtual. El cual posee varias funciones Win 32. Por lo tanto explicare el concepto de la memoria virtual. La misma pretende que el tamao combinado del programa, sus datos y su pila pueden exceder la cantidad de memoria fsica disponible. El sistema operativo mantiene en la memoria principal aquellas partes del programa que se estn usando en cada momento, manteniendo el resto de las partes del programa en el disco. Por ejemplo, un programa de 16 MB puede ejecutarse sobre una mquina de 4 MB eligiendo cuidadosamente qu 4 MB se tendrn en la memoria en cada instante, e intercambiando partes del programa entre el disco y la memoria, segn sea necesario. Volviendo a los conceptos a tener en cuenta, tanto en las maquinas x86 como en las x64, el espacio de direcciones virtuales se pagina bajo demanda. Con un tamao fijo de 4 KB no obstante las pginas pueden ser de 4 MB. El cdigo y los datos privados del usuario empiezan desde los 64 KB y se extienden hasta casi 2GB superiores contienen el sistema operativo, incluyendo el cdigo, los datos y las reservas con y sin paginacin. Los 2 GB superiores son la memoria virtual del kernel y se comparten entre todos los procesos, exceptuando los datos de la memoria virtual como las tablas de pgina y las listas de los conjuntos de trabajo, que son por procesos. La memoria virtual del kernel solo es accesible mientras el sistema se ejecuta en el modo kernel. La razn de compartir la memoria virtual del proceso con el kernel es que cuando un hilo realiza una llamada al sistema, se atrapa en modo kernel y puede continuar su ejecucin sin cambiar el mapa de memoria. Todo lo que hay que hacer es cambiar a la pila del kernel de ese hilo. Como las pginas en modo de usuario del proceso todava son accesibles, el cdigo en modo de kernel puede leer los parmetros u acceder a los bferes de las pginas en ambos. Aqu la desventaja es que hay menos espacios de direcciones privadas por procesos, a cambio de llamadas al sistema ms rpidas.
Windows permite a los hilos adjuntarse a otros espacios de direccionamiento mientras se ejecutan en el kernel. Al adjuntarse a un espacio de direcciones, el hilo puede acceder a todos el espacio de direcciones en
modo usuario, as como las porciones del espacio de direcciones del kernel que son especficas para un proceso, como la auto asignacin para las tablas de pginas. Los hilos deben cambiar a su espacio de direcciones original antes de regresar al modo de usuario.
Paginacin:
El mtodo de paginacin, es el utilizado por Windows Vista para administrar la memoria. Este mtodo consiste en considerar el espacio de direcciones lgicas de cada proceso como un conjunto de bloques de tamao consistente llamados paginas. Cada direccin lgica manejada para un proceso estar conformada por un par de valores [pagina: desplazamiento]. Formato de direcciones: Dir. Lgica: <n de pgina, desplazamiento> Dir. Fsica: <n de marco, desplazamiento> La memoria fsica se administra implementando bloques de tamao consistente denominados 'marcos'. Obviamente el tamao de un 'marco' debe ser igual al tamao de una pgina. El sistema operativo mantiene una tabla de pginas para cada proceso: Muestra la posicin del marco de cada pgina del proceso. La direccin de la memoria consta de un nmero de pgina y de un desplazamiento dentro de la pgina. La Paginacin puede producir fragmentacin interna, pero muy poca: se limita a la ltima pgina del proceso. No hay fragmentacin externa. OPCIONES DE IMPLEMENTACION DE LA TABLA DE PGINAS 1. - La tabla de pginas se implementa completamente en hardware. VENTAJA: Se obtiene una alta velocidad de acceso a memoria. DESVENTAJA: Resulta problemtica cuando la tabla de paginas debe ser grande. 2. - Implementar la tabla de pginas en la memoria principal. VENTAJA: La tabla de pginas puede crecer segn se requiera. DESVENTAJA: La velocidad de acceso a memoria es relativamente baja, dado que cada referencia a memoria involucra 2 accesos.
Con una estrategia de preasignacin, la memoria virtual total en el sistema que se utiliza para datos privados se limitan al tamao de los archivos de paginacin. Con la asignacin justo a tiempo, la memoria total virtual puede ser casi tan grande como el tamao combinado de los archivos de paginacin y la memoria fsica. Las operaciones que escriben pginas modificadas en el disco por lo general no estn sincronizadas con la ejecucin de los hilos. La estrategia de asignacin justo a tiempo del espacio del archivo de paginacin aprovecha esto para impulsar el rendimiento de escribir las pginas modificadas en el archivo de paginacin. Las pginas se agrupan y se escriben en trozos grandes. Como la asignacin del espacio en el archivo de paginacin no ocurre sino hasta que se escribe las pginas, el nmero de bsquedas requeridas para escribir un lote de pginas se puede optimizar al asignar las pginas del archivo de paginacin para que estn cerca unas de otras, o incluso para hacerlas contiguas. Cuando las paginas almacenadas en el archivo de paginacin se leen en la memoria, mantienen su asignacin en el archivo de paginacin hasta la primera vez que se modifican. Si una pgina nunca se modifica, pasara a una lista especial de pginas fsicas libres, conocida como lista de espera, en donde se puede volver a utilizar sin tener que escribirla de nuevo en el disco. Si de verdad se modifica, el administrador de memoria liberara la pagina del archivo de pginas y la nica copia de esa pagina estar en la memoria. Para implementar esto, el administrador de memoria marca la pagina como solo lectura despus de cargarla. La primera vez que un hilo intente escribir en la pgina, el administrador de memoria detectara esta situacin y liberar a la pgina del archivo de pginas, otorgara acceso de escritura a la pgina y permitir que el hilo intente de nuevo. Windows admite hasta 16 archivos de paginacin, que por lo general se esparcen a travs de varios discos separados para obtener un mayor ancho de banda de E/S. Cada archivo tiene un tamao inicial y uno mximo al que puede crecer ms adelante si lo necesita, pero es mejor crear estos archivos para que tengan tamao mximo al momento de instalar el sistema. Si es necesario aumentar el archivo de paginacin cuando el sistema de archivos esta mucho mas lleno, es probable que el nuevo espacio en el archivo de paginacin este muy fragmentado, con lo cual se reduce el rendimiento.
de acceso y utiliza sus valores para representar la edad de cada pgina. Mantiene un estimado de las pginas que no se utilizan en cada conjunto de trabajo.
2. La memoria est empezando a escasear: Para cualquier proceso con
una proporcin considerable de pginas sin utilizar, deja de agregar pginas al conjunto de trabajo y empieza a reemplazar las ms antiguas cada vez que se necesita una nueva pgina. Las pginas reemplazadas pasan a la lista de espera o de pginas modificadas.
estn por debajo de su valor mximo, para lo cual quita las pginas ms antiguas. El administrador de conjuntos de trabajo se ejecuta cada segundo, y se llama desde el hilo del administrador del conjunto de balanceo. El administrador del conjunto de trabajo acelera la cantidad de trabajo que realiza para evitar sobrecargar el sistema. Tambin monitorea la escritura de pginas en la lista de modificadas al disco, para asegurarse que la lista no se haga demasiado grande, y despierta el hilo de modificacin de pagina ModifiedPageWriter segn sea necesario.
Linux:
Memoria fsica: La memoria fsica, a diferencia de la memoria virtual que es simulada empleando otro medio de almacenamiento, hace referencia a los chips de memoria que estn instalados en la placa madre Memoria virtual: La memoria virtual es una tcnica para proporcionar la simulacin de un espacio de memoria mucho mayor que la memoria fsica de una mquina. Para que la memoria virtual sea prctica y efectiva, se necesitan dos componentes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de pginas o segmentos entre memoria secundaria y memoria principal. Una vez obtenida la direccin fsica se lo busca en memoria-cache, si est entre los datos recientemente usados la bsqueda tendr xito, pero si falla, la memoria virtual consulta memoria principal o, en el peor de los casos se consulta de disco (swapping). Memoria Virtual = Memoria Fsica + rea de Swapping en Disco
Segmentacin
Linux utiliza la segmentacin de una manera limitada. La segmentacin y la paginacin son en cierta manera redundantes, porque ambas pueden ser utilizadas para separar los espacios de direcciones fsicas de los procesos: la segmentacin puede asignar un espacio lineal de memoria a cada proceso, mientras que la paginacin puede referenciar el mismo espacio lineal de memoria a distintos espacios de memoria fsica.
Linux prefiere la paginacin por sobre la segmentacin debido a los siguientes motivos: La administracin de memoria es mucho ms simple si todos los procesos usan el mismo segmento para registrar los datos, es decir, cuando estos comparten el mismo conjunto de direcciones lineales.
Uno de los objetivos en el diseo del Linux es la portabilidad en un amplio rango tipos de arquitecturas; como ser la arquitectura RISC que posee soporte limitado para segmentacin.
Todos los procesos que se ejecutan en Modo Usuario usan el mismo par de segmentos para almacenar instrucciones y datos: estos segmentos son llamados User Code Segment y User Data Segment respectivamente. Para los procesos que se ejecutan en Modo Kernel tambin utiliza el mismo segmento de para almacenar instrucciones y datos: a estos se los llama Kernel Code Segment y Kernel Data Segment. Linux hace uso de segmentos especializados:
El Task State Segment (TSS): Existe uno diferente por cada procesador del sistema. El espacio lineal de direcciones del TSS es un pequeo subconjunto del espacio lineal de direcciones correspondiente al segmento del Kernel Data. Uno que incluye al Default Local Descriptor Table (LDT), el cul es compartido por todos los procesos. Tres segmentos Thread-Local Storage (TLS): Esto le permite a las aplicaciones Mulltithread a hacer uso de hasta tres segmentos que contengan valores locales para cada thread. Tres segmentos relacionados al Advanced Power Management (APM): El cdigo del BIOS utiliza este segmento, para que luego el driver APM de Linux llame a funciones del BIOS para obtener o establecer el estado de los dispositivos APM. Cinco segmentos relacionados al servicio del BIOS Plug and Play (PnP). Al igual que en anterior, el cdigo del BIOS utiliza este segmento, para que luego el driver PnP de Linux llame a funciones del BIOS para detectar los recursos utilizados por los dispositivos PnP.
Y por ltimo, un segmento TSS especial usado por el Kernel para manejar las excepciones "Double fault. Estos estn definidos en la Global Descriptor Table (GDT). Existe una GDT por cada procesador en el sistema
Paginacin:
Paginacin por Demanda: Linux usa una tcnica llamada Paginacin por Demanda (demand paging) que slo copia una pgina de memoria virtual de un proceso en la memoria fsica del sistema cuando el proceso trata de usarla. Siempre que se ejecuta un proceso, se abre el fichero que lo contiene y su contenido se asocia en la memoria virtual del proceso. Esto se hace modificando las estructuras de datos que describen el mapa de memoria del proceso y se conoce como asociacin de memoria. No obstante la primera parte de la imagen se copia realmente en memoria fsica. El resto de la imagen se deja en disco. Conforme se va ejecutando, se generan fallos de pgina y Linux utiliza el mapa de memoria del proceso para determinar qu partes de la imagen debe traer a memoria fsica para ser ejecutadas. A cada una de estas pginas se le da un numero nico; el numero de pagina frame (PFN) y el procesador traduce estos nmeros (PFN) de pginas virtuales fijndose en una tabla de pginas.
Los bloques libres resultantes de este proceso son encolados en la lista o rbol adecuadamente.
Slab Allocator:
Es un sistema superpuesto al Buddy System que permite un mejor aprovechamiento de la memoria debido a que el Buddy System es ineficiente para asignaciones de pocos bytes (ya que la pgina es su unidad bsica de memoria). Este algoritmo asigna pequeas reas de memoria contenidas dentro de pginas, agrupa objetos en caches y cada cache es un almacn de objetos del mismo tipo. La memoria que contiene caches se divide en slabs y cada uno contiene una o ms pginas contiguas, que a su vez contiene objetos asignados y disponibles.
Liberacin de Pginas:
Asignar bloques de pginas tiende a fragmentar la memoria al dividir los bloques grandes para conseguir bloques ms pequeos. El cdigo de liberacin de pginas recombina pginas en bloques de mayor tamao siempre que es posible. Siempre que se libera un bloque de pginas, se comprueba si est libre el bloque adyacente de igual tamao. Si es as, se combina con el bloque de pginas recin liberado para formar un bloque nuevo de tamao doble. Cada vez que dos bloques de pginas se recombinan en uno mayor, el algoritmo de liberacin intenta volver a recombinarlo en otro an mayor. De esta forma, los bloques de pginas libres son tan grandes como la utilizacin de la memoria permita.
El algoritmo de intercambio de Linux emplea la antigedad de las pginas. Cada pgina tiene un contador que da al demonio de intercambio una cierta idea de si vale la pena o no intercambiar una pgina. Las pginas envejecen cuando no son utilizadas y rejuvenecen cuando son accedidas; el demonio de intercambio slo enva a disco pginas viejas. Cuando haya suficientes pginas libres, el demonio de intercambio se duerme hasta que el temporizador expire, en caso contrario, el demonio intenta de tres formas distintas reducir el nmero de pginas fsicas ocupadas: 1. Reduciendo el tamao de la cache de pginas y el buffer cache. 2. Enviando a disco pginas compartidas. 3. Enviando a disco o descartando pginas. Si el nmero de pginas libres ha cado demasiado, el demonio de intercambio intentar liberar 6 pginas antes de su prxima ejecucin. En caso contrario, intentar liberar 3 pginas. Los mtodos anteriores se intentan uno tras otro de hasta que se consiguen liberar suficientes pginas. Luego el demonio de intercambio se suspende hasta que el temporizador vuelva a expirar. El demonio recuerda cul fue el ltimo mtodo que emple para liberar pginas, y la prxima vez que se ejecuta lo vuelve a intentar con el mismo mtodo que tuvo xito.
Descartando Pginas:
Las pginas son enviadas al disco slo si los datos que contienen no pueden ser recuperados de otra forma. Una gran cantidad del contenido de una imagen ejecutable viene de la imagen del fichero y puede ser fcilmente reledo desde el mismo fichero. Estas pginas sencillamente se pueden descartar; cuando vuelven a referenciarse por el proceso, stas se traen otra vez a memoria desde la imagen ejecutable del fichero.
Copy on Write:
Linux no duplica las pginas de memoria que son necesarias para un nuevo proceso, sino que hace apuntar las entradas de la tabla de pginas del nuevo proceso a las pginas del proceso padre. Cuando alguna de las pginas es modificada por alguno de los procesos, entonces el ncleo pasa a realizar la duplicacin de dicha pgina. La forma de llevar a cabo este proceso consiste en establecer los permisos de estas pginas a slo-lectura pero sabiendo que dichas pginas se pueden modificar. Cuando ocurre una violacin de acceso a estas pginas (uno de los procesos intenta escribir) es cuando se realiza la duplicacin propiamente dicha.
Buffer Cach:
Contiene buffers de datos que son utilizados por los manejadores de dispositivos de bloques (Las entradas del cach estn identificadas por el dispositivo y nmero de bloque). Un dispositivo de bloques es un dispositivo sobre el que slo se pueden realizar operaciones de lectura o escritura de bloques de tamao fijo (Ej: discos rgidos). Los buffers son de tamao fijo y contienen bloques de informacin que ha sido leda de un dispositivo de bloques o bien que ha de ser escrita. Cada buffer se refiere a cualquier bloque en el disco y consiste de una cabecera y un rea de memoria igual al tamao del bloque del dispositivo. Para minimizar la sobrecarga, se mantienen en una de varias listas enlazadas: sin usar (unused), libres (free), no modificadas (clean), modificadas (dirty), bloqueadas (locked), etc.
Por cada operacin de lectura, el subsistema de buffer-cache debe buscar si el bloque en cuestin ya est copiado en la memoria. Para hacerlo de forma eficiente se mantienen tablas de dispersin para todos los buffers presentes en la cach.
Cach de Pginas:
El cach de pginas es principalmente usado para satisfacer los requerimientos de interfaz del subsistema de memoria virtual. Los bloques individuales del cach de pginas estaban todava gestionados por el buffer-cache, lo que creaba confusiones entre el uso y programacin de ambos niveles. Linux para reducir las ineficiencias de las dobles copias es almacenar los datos slo una vez (en el cach de pginas) y mantener punteros de cada elemento en el buffer-cache.
Cache de Intercambio:
Las pginas que han sido modificadas (dirty) son guardadas en el fichero de intercambio. La prxima vez que necesiten ser descartadas (swap out) no ser necesario copiarlas al fichero de intercambio pues ya estn all.
Cache de Hardware:
En caso de que el procesador no necesite siempre leer la tabla de pginas directamente, sino que guarde en esta cache las traducciones de las pginas conforme las va necesitando. Sin embargo Linux tiene que utilizar ms tiempo y espacio para mantenerlas y, si se corrompe su contenido, el sistema dejar de funcionar.
Swapping:
Linux divide su memoria RAM en trozos de memoria llamados pginas. Swapping es el proceso en el cual una pgina de memoria es copiada en el espacio del disco duro preconfigurado, llamado espacio o particin swap, para liberar esa pgina de memoria. El tamao combinado de la memoria RAM y la particin swap es la cantidad memoria virtual disponible. Swapping es necesario por dos importantes razones. 1. Primero, cuando el sistema necesita ms memoria que la RAM disponible, el kernel intercambia las pginas usadas y proporciona ms memoria a la aplicacin (proceso) que lo necesita inmediatamente. 2. Segundo, un significante nmeros de pginas usadas por una aplicacin durante su fase de inicio puede ser solo usada para la inicializacin y luego no usada otra vez. El sistema puede intercambiar aquellas pginas y liberar la memoria para otra aplicacin o incluso para la cache de disco.
Bibliografa:
Sistemas Operativos Modernos. Tanenbaum, 3* Edicin 2009 http://dac.escet.urjc.es http://sistemas.itlp.edu.mx http://www.monografias.com/trabajos54/paginacionlinux/paginacion-linux2.shtml http://www.linuxhq.com/guides/TLK/mm/memory.html http://users.dsic.upv.es/~acano/so1/EnunciadoPr3.pdf http://users.dsic.upv.es/~acano/so1/EnunciadoPr3.pdf http://users.dsic.upv.es/~acano/so1/EnunciadoPr3.pdf