Tema 4: Gesti´n de Memoria o

27 de octubre de 1999

1

Introducci´n o

En un sistema monoprogramado s´lo podr´ haber una tarea en la memoria. La memoria estar´ o a a dividida en dos partes, una para el SSOO y otra para el programa de usuario. En un sistema multiprogramado se pueden ejecutar varias aplicaciones de usuario a la vez. Para conseguir esto la memoria ha de estar dividida en porciones y el SSOO estar´ en una de ellas. De esta a forma cada programa en ejecuci´n tendr´ su propia porci´n. o a o Una parte del SSOO tendr´ que encargarse de administrar la memoria. Cuando un proceso a va a ejecutarse va a solicitar a ese planificador un espacio de memoria donde se cargar´. Se a tratar´n varios modelos: a Asignaci´n contigua Cada objeto en memoria ocupar´ posiciones consecutivas de memoria o a principal. Asignaci´n no contigua Parte de un mismo objeto puede estar situado en memoria prino cipal en partes no contiguas. Un m´todo com´n de asignaci´n de espacio contiguo es dividir la memoria en porciones e u o y asignar una de ellas a cada proceso. Cuando un proceso termina su ejecuci´n la partici´n o o queda disponible. Estas particiones se pueden definir est´tica o din´micamente. En la partici´n a a o est´tica en la carga del sistema se fija el tama˜o de las particiones, mientras que en la partici´n a n o din´mica la divisi´n se realiza seg´n se vayan requiriendo los procesos. a o u Para valorar un gestor de memoria se tiene en cuenta: 1. Debe proporcionar una buena protecci´n de memoria: Si hay varios procesos hay que o evitar que uno pueda acceder a las posiciones de memoria de otro, por error o por acceso malintencionado. Del mismo modo, cuando un proceso se descarga a disco, y m´s tarde a vuelve a colocarse en memoria, el gestor tendr´ que comprobar que las direcciones en a las cuales se va a cargar no forman parte de ning´n otro proceso. u 2. Debe proporcionar una utilizaci´n compartida flexible en contraposici´n a lo anterior, o o puede haber procesos que compartan zonas comunes de memoria. P. Ej. Si procesos utilizan un mismo c´digo, hay que conseguir que utilicen la misma copia en memoria. o 3. El gestor de memoria debe minimizar la memoria desaprovechada. En el particionamiento est´tico un proceso puede tener una partici´n mayor de la que requiere (fragmentaci´n a o o interna). En el particionamiento din´mico no se da la fragmentaci´n interna ya que se a o crean particiones del tama˜o que necesite el proceso. Pero una vez que el sistema operan tivo lleva un tiempo funcionando va decreciendo el tama˜o de las particiones libres y es n 1

´ 2 REQUISITOS PARA LA GESTION DE MEMORIA habitual que queden espacios donde normalmente no caben procesos. Este fen´meno se o llama fragmentaci´n externa. Para solucionar la fragmentaci´n externa existen t´cnicas o o e de reubicaci´n de objetos en memoria (mover procesos en la memoria). Para la utio lizaci´n de estas t´cnicas de reubicaci´n y compartici´n hay que estudiar el algoritmo o e o o de compactaci´n adecuado, en que zona se colocan los procesos, y SSOO y el tiempo o que va a llevar esa operaci´n de reubicaci´n. Con esto no se soluciona la fragmentaci´n o o o interna. 4. Si se tienen varias copias de un mismo objeto debido a la mala compartici´n de objetos o en memoria. 5. Debe minimizar la complejidad en el tiempo. Se deben conseguir algoritmos de planificaci´n que realicen su labor de forma sencilla y en un tiempo breve. o 6. Debe minimizar los procesos suplementarios de acceso a memoria. Este punto de vista trata de minimizar el tiempo que tarda el SSOO en realizar operaciones adicionales.

2
2.1

Requisitos para la Gesti´n de Memoria o
Reubicaci´n o

En un sistema multiprogramado puede haber varios objetos ocupando la memoria y otros que requieran una porci´n. El gestor puede seleccionar uno para sacarlo de la memoria y que o el espacio pueda ser aprovechado para otro proceso. Puede volcar objetos inactivos al disco. Cuando ese proceso descargado vuelva a memoria el gestor debe saber si lo debe color en las mismas posiciones o en posiciones diferentes. Un proceso tendr´ la siguiente informaci´n: ıa o • PCB • CODIGO • DATOS • PILA El sistema operativo tendr´ que conocer la ubicaci´n de la informaci´n de control del a o o proceso. Necesitar´ conocer la posici´n en la cual termina de ejecutarse y la direcci´n de la a o o pila de ejecuci´n. o

2.2

Protecci´n o

Ver el apartado anterior.

2.3

Compartici´n o

Ver el apartado anterior.

2

´ 3 ASIGNACION DE ESPACIO

2.4 Organizaci´n l´gica de los programas o o

2.4

Organizaci´n l´gica de los programas o o

Resulta beneficioso organizar los programas en m´dulos para obtener las siguientes ventajas: o • Escribir y compilar los m´dulos de forma independiente y el SSOO puede cargar en o memoria cada m´dulo por separado. El SSOO resolver´ las referencias de un m´dulo a o ıa o otro en tiempo de ejecuci´n. A los diferentes m´dulos se les podr´ dar diferentes grados o o ıa de protecci´n, p Ej. a un m´dulo s´lo lectura a otro s´lo ejecuci´n, etc. o o o o o • El gestor de memoria podr´ incorporar mecanismos para que diferentes procesos comıa partan m´dulos. o

2.5

Organizaci´n f´ o ısica de la memoria

La memoria est´ dividida en principal y secundaria (esquema a dos niveles). En este esquema a el flujo de informaci´n entre memoria principal y secundaria es otro punto a tener en cuenta o para el SO.

3

Asignaci´n de espacio o
• M´quina desnuda a • Monitor residente • Superposiciones (overlays) • Asignaci´n por intercambio (swapping) o

La evoluci´n de la asignaci´n de espacio puede resumirse en las siguientes etapas: o o

3.1

M´quina desnuda a

Es el modelo m´s simple. Es propio de los primeros sistemas operativos. Toda la memoria est´ a a a disposici´n de un unico usuario y el programa puede utilizar cualquier posici´n de memoria. o ´ o No se necesitaba protecci´n. No hab´ idea de SO; si se requer´ protecci´n, el usuario la ten´ o ıa ıa o ıa que incorporar en su programa.

3.2

Monitor residente (Monitor de proceso unico) ´

Para facilitar el trabajo se incorporo un c´digo com´n llamado IOCS (sistema de control de o u entrada salida), para operaciones con dispositivos. El monitor de proceso unico consist´ en ´ ıa dividir la memoria en dos porciones, una para el SO y otra para los procesos transitorios de usuario (y rutinas transitorias del SO). A la direcci´n que separa ambas partes se le llama o borde de memoria y al final el techo de memoria. Con este monitor residente se comienzan a utilizar t´cnicas de protecci´n y reubicaci´n. e o o

3

´ 3 ASIGNACION DE ESPACIO 3.2.1 Protecci´n o

3.2 Monitor residente (Monitor de proceso unico) ´

El monitor se protege mediante el llamado borde de memoria. El borde de memoria separa la zona donde est´ ubicado el monitor de la zona donde est´n ubicados los procesos transitorios. a a Se comprueba que las direcciones solicitadas no sobrepasen la direcci´n l´ o ımite. El SO se podr´ a situar en zonas altas o bajas de la memoria. Una referencia de este tipo ser´ ilegal pues ıa intentar´ acceder a posiciones del monitor. Todas las referencias a memoria por parte de los ıa programas de usuario deben ser comprobadas. El valor del borde puede ser fijo (borde est´tico) y no podr´ ser modificado, o ser din´mico a a a en cuyo caso el SO podr´ modificar el contenido del borde de la memoria. Dentro del din´mico a a el borde puede ser variable o invariable. Uno invariable indica que no se puede cambiar durante la ejecuci´n del programa. Y uno din´mico variable si puede cambiarse durante esta. El valor o a de direcci´n de ese borde se encontrar´ en un registro del procesador. o a 3.2.2 Reubicaci´n o

La primera posici´n de memoria ser´ la 0, pero de cara a la carga de los programas de usuario o ıa la direcci´n inicial para la carga ser´ donde se encuentra el borde. Un programa hace referencia o a a memoria desde el interior y a estas direcciones se les llaman direcciones l´gicas. o Podr´ suceder que esa direcci´n diera lugar a una posici´n del monitor. El programador ıa o o utiliza direcciones l´gicas, pero en la ejecuci´n se utilizan direcciones f´ o o ısicas (reales). Esas direcciones l´gicas se tienen que transformar en direcciones f´ o ısicas, lo cual se puede hacer de las siguientes forma: Cuando se compile un programa Si al compilar se conoce la direcci´n l´ o ımite se puede generar un c´digo ejecutable (c´digo objeto) con direcciones f´ o o ısicas. Esas direcciones f´ ısicas se conseguir´ sumando a cada direcci´n l´gica el borde de la memoria. El probıan o o lema de esto es que cambie el borde. Entonces las direcciones no son v´lidas. a En el momento de la carga del programa Tendr´ que suceder que cuando se compile el a programa se genere c´digo reubicable de manera que una direcci´n en el c´digo obtenido o o o estar´ en funci´n del borde de la memoria (un registro del procesador). En este caso si a o el borde de la memoria cambia es necesario cargar de nuevo el programa. El l´ ımite (en ambos casos) deber´ ser est´tico durante la ejecuci´n del programa de usuario. a a o Sin embargo podr´ ser deseable cambiar el l´ ıa ımite cuando se est´ ejecutando un programa para a que el tama˜o del monitor pueda cambiarse durante la ejecuci´n de programas de usuario. P. n o Ej. El PDP-11; en esta m´quina el SO se carga en la memoria desde las posiciones m´s bajas. a a Los programas de usuario se cargan desde las posiciones m´s altas de la memoria. En medio a queda el espacio libre. La ventaja es que tanto el espacio del monitor como el de los programas de usuario pueden aumentar. 3.2.3 Reubicaci´n din´mica o a

Consiste en retrasar la asignaci´n de posiciones de memoria hasta la ejecuci´n. De esta forma o o cualquier referencia a una posici´n de memoria durante la ejecuci´n se calcula en el mismo o o instante de la ejecuci´n. o En la reubicaci´n din´mica, al borde de la memoria se le llama registro base o de reubicaci´n o a o y contendr´ un valor que se a˜adir´ a cualquier direcci´n de memoria que se genere durante la a n a o ejecuci´n del programa. En este caso un cambio en el borde de la memoria significa cambiar o 4

´ 3 ASIGNACION DE ESPACIO

3.2 Monitor residente (Monitor de proceso unico) ´

el valor del registro de reubicaci´n y mover los programas transitorios a posiciones relativas o con respecto al nuevo valor l´ ımite. 3.2.4 Superposiciones (overlays)

La dimensi´n de un proceso est´ limitada a la cantidad de memoria disponible. Para que un o a proceso pueda ser mayor que la cantidad de memoria libre se utiliza la superposici´n. Esta o consiste en cargar en memoria s´lo las partes de un programa necesarias permanentemente. o El resto del programa, los m´dulos restantes, ser´n cargados en memoria s´lo cuando son o a o necesarios para lo cual se utilizar´ una porci´n de memoria com´n para estos m´dulos. La a o u o memoria asignada a un proceso estar´ dividida en cuatro porciones: a • Zona com´n (espacio compartido por los m´dulos del programa) u o • C´digo de gesti´n de superposiciones o o • Zona permanente (instrucciones y datos que no cambian) 3.2.5 Administraci´n por intercambio (Swapping) o

Con esta t´cnica el administrador de la memoria vuelca en memoria auxiliar un proceso que e est´ en memoria principal de modo que queda un espacio libre se requiere que esa operaci´n de a o intercambio se realice a gran velocidad para que siempre haya tareas listas para ser ejecutadas. Supuesto que los procesos se ejecutan durante un cuanto de tiempo, dicho cuanto deber´ ser a suficientemente grande como para que se puedan llevar a cabo las tareas de intercambio durante ese tiempo, de manera que cuando termine de ejecutarse un proceso haya otro trabajo listo para ser ejecutado. Por lo tanto el tiempo de ejecuci´n de un proceso debe ser mayor que el o tiempo de intercambio. Puede suceder que el algoritmo de gesti´n de memoria se base en prioridades y llegue un o proceso con prioridad mayor. Si los dos no caben, el gestor de memoria deber´ colocar en a disco el proceso de menor prioridad, y comenzar´ a ejecutar el que acaba de llegar de mayor a prioridad. Cuando un proceso vuelva a memoria se podr´ dar el caso de que ese proceso se a vuelva a colocar en la misma posici´n en la que se encontraba. Si se hace en tiempo de ejecuci´n o o se podr´ colocar en otra posici´n diferente. Cuando el gestor tiene que seleccionar un proceso a o para ser ejecutado consulta la cola de procesos listos y si el proceso seleccionado no est´ en a memoria, lo tendr´ que cargar (estar´ en el disco). Si sucede que no hay espacio disponible a a el planificador intercambiar´ un proceso que est´ en memoria, baj´ndolo a disco para que se a e a ejecute el otro. Para disminuir el tiempo de intercambio se puede usar una variedad llamada intercambio solapado que consiste en la creaci´n de dos buffers utilizados uno para la entrada y otro o para la salida. Mientras se est´ ejecutando un proceso (programas transitorios), se produce la a transferencia de informaci´n de otro proceso en estado listo al buffer de entrada. Cuando el o proceso en ejecuci´n pr1 deje de ejecutarse ser´ movido al buffer de salida y el proceso que o a se encuentra en el buffer de entrada se mueve al ´rea de usuario. Mientras se ejecuta pr2 se a produce el intercambio a disco de pr1 que est´ en el buffer de salida y tambi´n al mismo tiempo a e se carga en el buffer de entrada otro proceso. Para que se pueda producir el intercambio, ese proceso ha de estar inactivo. Hay gestores que cargan todo el programa en memoria mientras que otros s´lo cargan la o porci´n que es estrictamente necesaria. o 5

´ 4 METODOS CON CARGA COMPLETA Carga completa • Espacio contiguo; particionamiento — Fijo o est´tico a - Particiones todas del mismo tama˜o n - Particiones de tama˜o variable n — Variable • No se utiliza espacio contiguo — Segmentaci´n o — Paginaci´n o — Sistemas combinados - Paginaci´n segmentada o - Segmentaci´n paginada o M´todos sin carga completa e • Memoria virtual — Paginada — Segmentada — Con paginaci´n y segmentaci´n o o

4
4.1
4.1.1

M´todos con carga completa e
Espacio contiguo
Particionamiento fijo o est´tico a

La memoria se divide en porciones de tama˜o fijo. Esta divisi´n se va a realizar en el proceso n o de arranque. Las particiones podr´n ser del mismo tama˜o o de tama˜o diferente. En una a n n partici´n se podr´ cargar un proceso de tama˜o igual o inferior. Si es m´s grande, no se podr´ o a n a a ejecutar, salvo si el propio programa se dise˜a mediante superposiciones (overlays). Interesa n que siempre haya procesos en estado listo. En un momento determinado puede haber procesos en memoria y otros en disco (suspendidos). En el caso de que un proceso en disco se vaya a ejecutar se tendr´ que realizar una operaci´n de intercambio. El gestor tendr´ que seleccionar a o a una operaci´n de intercambio. El gestor tendr´ que seleccionar el proceso a descargar. o a El particionamiento fijo o est´tico no es eficiente pues si un programa es peque˜o se desa n perdiciar´ espacio en memoria (fragmentaci´n interna). Las particiones pueden ser del mismo a o tama˜o o de tama˜os diferentes. Con diferentes tama˜os intentan solucionar los problemas del n n n particionamiento est´tico (fragmentaci´n y que no quepa en la memoria). Se crean particiones a o variables, algunas grandes. Al tener particiones de diferentes tama˜os puede encontrar una partici´n en la que quepa n o un proceso y no se desperdicie demasiado espacio. Se debe estudiar el algoritmo de ubicaci´n o de procesos. Se instalar´ el que mejor se adapte: a 6

´ 4 METODOS CON CARGA COMPLETA Fijo: El algoritmo de ubicaci´n de procesos es sencillo. o Con tama˜ os variables: En este caso se dan dos algoritmos: n

4.1 Espacio contiguo

1. Asignar a un proceso la partici´n m´s peque˜a en la que quepa utilizando una cola o a n de espera para cada partici´n. Se seleccionar´ entonces la partici´n que mejor se o a o amolde, se colocar´ el proceso en la cola de espera de la partici´n. Varios procesos a o se pueden intentar colocar en la misma cola de espera, con lo cual puede haber otras particiones libres desocupadas mientras varios procesos esperan en una cola a que se libere una partici´n ocupada. o 2. Emplear una unica cola de espera para todos los procesos y cada uno se cargar´ ´ a en la partici´n m´s peque˜a que pueda almacenarlo. Si todas est´n ocupadas se o a n a hace un intercambio (swap). Se seleccionar´ para el intercambio la partici´n m´s a o a peque˜a en la cual pueda caber el proceso. n En general el particionamiento est´tico presenta el inconveniente de que al dividirse la a memoria en un n´mero determinado de particiones se est´ acotando el n´mero de procesos u a u que puedan estar en memoria. Adem´s, los trabajos peque˜os no suelen hacer un uso eficaz a n de las particiones. El sistema utiliza una tabla de descriptores de particiones, para almacenar informaci´n de o cada una de las particiones. TDP 0 1 2 3 4.1.2 100 500 1000 1600 400 500 600 400 Asignada Libre Libre Asignada

Particionamiento variable o din´mico a

El n´mero de particiones y su tama˜o es variable. Cuando un proceso llega se le asigna justo u n la memoria que necesite. De este modo no se va a producir la fragmentaci´n interna, pero con o el tiempo se producir´ fragmentaci´n externa. Esto se podr´ solucionar con compactaci´n a o ıa o y reubicaci´n, pero la compactaci´n consume tiempo y se necesita de la capacidad de la o o reubicaci´n din´mica. o a 4.1.3 Operativa del gestor de memoria con particionamiento din´mico a

Debe decidir:

• Que proceso se debe cargar en memoria • Cuando se debe cargar en memoria • En que partici´n se debe cargar o

7

´ 4 METODOS CON CARGA COMPLETA

4.2 Sin asignaci´n contigua o

Para determinar en que partici´n se cargar´ un proceso (y evitar en la medida de lo o a posible la necesidad de una compactaci´n) se puede utilizar una de las siguientes t´cnicas: o e 1. Primer ajuste 2. Siguiente ajuste 3. Mejor ajuste 4. Peor ajuste Primer ajuste Busca un espacio mayor o igual que el que necesite el proceso. Es el m´s a sencillo: Comienza a buscar una partici´n en la que quepa, empezando desde el principio o y lo cargar´ en la primera que encuentre y quepa. Este algoritmo suele proporcionar a buenos resultados y es el m´s r´pido, pero al principio de la memoria suelen aparecer a a peque˜os espacios libres haciendo necesaria la compactaci´n. n o Siguiente ajuste La b´squeda comienza desde la posici´n en la que haya quedado en la u o b´squeda anterior. Los resultados son algo peores pues el bloque libre m´s grande est´ u a a situado al final y con el tiempo se convierte en peque˜os espacios libres. n Mejor ajuste Se busca el hueco que se adapte mejor al espacio requerido. Pero ajuste Se busca la partici´n de mayor tama˜o que haya libre. o n Con los dos ultimos se suelen obtener los peores resultados pues la memoria se suele llenar ´ r´pidamente de peque˜os espacios libres. a n La TDP se ir´ actualizando constantemente, cada vez que se libere, se utilice o se cree una a partici´n. Puede suceder que en un momento todos los procesos est´n es estado bloqueado. El o e gestor de memoria tendr´ entonces que suspender un proceso para colocar otro en memoria a siempre y cuando ese proceso a colocar est´ en estado listo. (Ejemplo 1). e

4.2
4.2.1

Sin asignaci´n contigua o
Paginaci´n simple o

Se divide la memoria en porciones peque˜as todas del mismo tama˜o llamadas marcos de n n p´gina (o marcos) o encuadres. Esa divisi´n de la memoria en marcos se realiza en el proceso a o de carga inicial. El tama˜o de los marcos puede venir fijado en la unidad de gesti´n de memoria del procen o sador (MMU), p. Ej. en los procesadores Intel 80x86, el tama˜o de los marcos de p´gina es n a de 4 Kb. Ese tama˜o tambi´n se podr´ definir mediante microprogramaci´n como en los n e ıa o procesadores PowerPC, lo que permite adaptar algunos par´metros del microprocesador. a Los programas tambi´n son divididos en porciones del mismo tama˜o los marcos. Esa e n divisi´n se hace en tiempo de ejecuci´n, o de pre- ejecuci´n. A esas porciones se las llama o o o p´ginas. Cada p´gina se ubicar´ en memoria en un marco desde el cual se ejecutar´. Con la a a a a paginaci´n no se produce fragmentaci´n externa, y s´lo se produce fragmentaci´n interna en o o o o el ultimo marco de la ultima p´gina de un programa. Por lo tanto, cuanto menor se el tama˜o ´ ´ a n de las p´ginas, menor fragmentaci´n interna se producir´. (Ejemplo 2) a o a Este m´todo es similar al particionamiento est´tico con una serie de diferencias: e a 8

´ 4 METODOS CON CARGA COMPLETA

4.2 Sin asignaci´n contigua o

• El tama˜o de una p´gina es menor que el tama˜o de las particiones n a n • un programa puede ocupar m´s de una p´gina a a El sistema operativo crea una lista o tabla de p´ginas que controla los marcos utilizados a por un proceso (habr´ entonces una tabla por cada proceso). Tambi´n se llevar´ un control a e a de los marcos libres mediante una tabla de marcos libres (una s´la). o Dentro de un programa una direcci´n l´gica estar´ formada por el n´mero de p´gina y el o o a u a desplazamiento. Esa direcci´n l´gica, cuando se vaya a ejecutar el programa, tendr´ que ser o o a convertida en direcci´n f´ o ısica. Para la transformaci´n de esa direcci´n l´gica en direcci´n f´ o o o o ısica se realiza el siguiente proceso: La CPU consulta la tabla de p´ginas del programa y se conocer´ a a el marco. Teniendo la direcci´n f´ o ısica formada por el marco y el desplazamiento (dibujo 1). El n´mero de p´gina se utiliza como ´ u a ındice en la tabla para saber cual es el elemento en la tabla que se debe consultar. La paginaci´n es m´s eficiente si el tama˜o del marco de o a n p´gina es una potencia de dos. En este caso una direcci´n relativa expresada con relaci´n al a o o origen del programa coincide con la direcci´n l´gica expresada como un n´mero de p´gina o o u a y un desplazamiento (Por ejemplo, 1512 podr´ ser p´gina 1, desplazamiento 512) (Ejemplo 2). ıa a

dibujo1.eps

Pero para que esto ocurra siempre, el tama˜o de p´gina ha de ser potencia de dos. Para n a la implementaci´n de las tablas de p´ginas puede seguirse uno de los siguientes m´todos: o a e 1. Almacenar la tabla de p´ginas en registros. La ventaja es que los registros son muy a r´pidos, pero tienen dos inconvenientes, son lentos, y de poca capacidad. a 2. Utilizar la memoria principal para almacenarlas. Se va a utilizar un registro del procesador llamado RBTP o RTBR (registro base de la tabla dep´ginas), donde se colocar´n a a la direcci´n de memoria donde se encuentra la tabla de p´ginas del proceso que se quiera o a ejecutar. Esa direcci´n de la tabla de p´ginas se almacena en el PCB del proceso. Al ejecutar el o a proceso se lee este valor y se pone en el registro. Para acceder a una p´gina el sistema a operativo consulta la direcci´n de la p´gina. El tiempo de acceso ser´ mayor pues para o a a el contenido de una p´gina se necesitaran dos accesos a memoria. a 3. Para disminuir el tiempo de acceso utilizar registros asociativos (memorias cach´), e r´pidos, pero no de gran tama˜o. Esos registros se encuentran en la unidad de gesti´n a n o 9

´ 4 METODOS CON CARGA COMPLETA

4.2 Sin asignaci´n contigua o

de memoria (MMU). En el caso de los Intel, la MMU se encuentra en el propio procesador y se llama TLB (Translation Lookashide Buffer, buffer de traducci´n anticipada). o Por lo tanto estas memorias est´n enlazadas con el sistema de gesti´n de la memoria. a o En estas memorias se almacena la informaci´n de las tablas de p´ginas utilizadas m´s o a a recientemente. Para ver un marco se consulta si el dato est´ ya en la TLB y si no, se accede a memoria a para consultar los datos de la tabla de p´ginas (s´lo tiene direcciones de marcos de a o p´gina y procesos, no de desplazamientos). Puede darse el caso de que la referencia est´ a e en la memoria asociativa o no. Si est´, basta con un unico acceso a memoria. Si no est´ a ´ a en la TLB entonces ser´ necesario acceder, de nuevo, dos veces. a Este ultimo m´todo es eficaz y eficiente,pues es habitual acceder a las mismas marcas de ´ e forma consecutiva. Utilizando estas memorias el tiempo de acceso se obtiene con la f´rmula: o T=(Pa*T1)+(Pf+T2) Pa: Porcentaje de aciertos T1: Tiempo de acceso a la memoria asociativa Pf: Porcentaje de fallos T2: Tiempo de acceso a la memoria asociativa + 2 accesos a memoria principal El esquema para la transformaci´n de direcci´n l´gica en direcci´n f´ o o o o ısica quedar´ del ıa siguiente modo:

dibujo2.eps

10

´ 4 METODOS CON CARGA COMPLETA 4.2.2 Segmentaci´n no contigua o

4.2 Sin asignaci´n contigua o

Los programas y sus datos se dividen en porciones estas pueden ser de tama˜o diferente n (segmentos). Es el programador el que decide que segmentos quiere realizar y el tama˜o que n tendr´n. Esto favorece la modularidad y la compartici´n. Cuando se ejecuta un programa se a o cargar´n los segmentos en la memoria. Un segmento se colocar´ donde haya un espacio libre a a suficiente para contenerlo. Los m´todos para seleccionar espacio libre son los de antes (primer e ajuste, siguiente ajuste, mejor ajuste, peor ajuste). Como en la paginaci´n, un programa puede cargarse en una posici´n, suspenderse, y al o o volver a colocarse en memoria, puede ponerse en una posici´n diferente. Las diferencias entre o la segmentaci´n y la partici´n din´mica variable son: o o a • En la partici´n variable todo el programa se carga como una unidad. o • La segmentaci´n sufre el problema de la fragmentaci´n externa pero no el de la frago o mentaci´n interna. o • La segmentaci´n tambi´n utiliza una tabla de segmentos por proceso (como la pagio e naci´n) para conocer donde se encuentran en memoria los segmentos de un proceso. En o el PCB se encontrar´ la direcci´n de comienzo y el numero de entradas de una tabla a o de segmentos. La informaci´n en la tabla de segmentos ser´ la direcci´n en la cual se o a o encuentra un segmento y la longitud de un segmento. Una direcci´n l´gica consta de dos partes: N´mero de segmento y desplazamiento dentro o o u del mismo. Los pasos que se dan para la transformaci´n son: o • Se toma el segmento. Se utilizar´ ese n´mero en la tabla de segmentos como ´ a u ındice, se conocen la entrada del segmento en memoria y su longitud. • Se comprueba que el desplazamiento sea menor o igual que la longitud (si es mayor se debe producir una interrupci´n al sistema operativo). o • Si el desplazamiento queda dentro del segmento se busca el desplazamiento y se haya la direcci´n f´ o ısica.

dibujo3.eps

11

´ 4 METODOS CON CARGA COMPLETA

4.3 Sistemas combinados

Las transformaciones de direcciones relativas desde el comienzo del programa las transformar´ el programador o el compilador en direcciones l´gicas. a o A la direcci´n base de un segmento tambi´n se le llama l´ o e ımite base de un segmento y a la longitud el l´ ımite. Para la implementaci´n de la tabla de segmentos de utiliza TLB, registros, o memoria, etc. Compartici´n En segmentaci´n es f´cil de conseguir. Tendremos que indicar la direcci´n o o a o del segmento de memoria donde se encuentra ese c´digo en la tabla de segmentos. o

4.3
4.3.1

Sistemas combinados
Segmentaci´n paginada o

Bases fundamentales en el desarrollo de sistemas de gesti´n de memoria actuales. El objetivo es o conseguir segmentos grandes sin que se produzca fragmentaci´n externa para lo cual se paginan o los segmentos. Con esta t´cnica los programadores dividen sus programas en segmentos y el e sistema operativo para colocar el segmento en memoria lo divide en p´ginas y las ubica de a este modo. Cada programa tendr´ su tabla de segmentos y cada segmento tendr´ su tabla de a a p´ginas. a Ventajas • Permite modularizar el programa (segmentos). • El SSOO utilizar´ la paginaci´n para acceder a memoria (sencillez). a o • No se producir´ fragmentaci´n externa y por lo tanto no va a ser necesaria la coma o pactaci´n. o Una direcci´n l´gica estar´ formada por n´mero de segmento y desplazamiento dentro del o o a u segmento. La direcci´n f´ o ısica correspondiente ser´ la direcci´n inicial del marco donde se a o encuentre un trozo de segmento y el desplazamiento dentro de dicho marco.

dibujo4.eps

12

5 MEMORIA VIRTUAL

5
5.1

Memoria Virtual
Estructuras de control

La carga completa limita el tama˜o de los programas. Con memoria virtual no es necesario n cargar completamente un programa en memoria para que se pueda ejecutar. De esta forma se mantiene en memoria los m´dulos necesarios para ejecutar la parte que corresponda. El resto o se colocar´ en un soporte de acceso r´pido como un disco. a a Cuando se necesita un bloque de programa en el disco duro ser´ cargado por el sistema de a E/S a la memoria. En el caso de que no haya espacio libre suficiente en memoria el gestor de memoria seleccionar´ un m´dulo en memoria para descargarlo al disco. a o Un programa podr´ hacer referencia a posiciones de memoria que queden dentro del rango a de direcciones reales e incluso posiciones que queden m´s all´ de las reales. Por ejemplo: Un a a programa de 9Mb se podr´ ejecutar en un sistema con 6Mb. a La idea de almacenar en disco el programa es tambi´n v´lida para los datos del programa. e a En la memoria virtual las direcciones a las que se hacen referencia en el interior del programa no se corresponden con las direcciones f´ ısicas a las que se puede acceder. A las direcciones f´ ısicas a las que se hace referencia dentro del programa se las llama direcciones virtuales o l´gicas. A las direcciones disponibles se las llama direcciones f´ o ısicas o reales. Al conjunto de direcciones virtuales o l´gicas se le llama espacio de direcciones virtuales o y al conjunto de direcciones f´ ısicas se le llama espacio de direcciones reales. Los procesos hacen referencia a posiciones virtuales, por lo que para acceder a la memoria real ser´ necesario un mecanismo de traducci´n que traduzca las direcciones virtuales en a o reales, este mecanismo se llama DAT (Dynamic Address Translation). En la memoria virtual las direcciones de memoria que hagan referencia a posiciones consecutivas de memoria virtual no tienen porque corresponder a posiciones consecutivas de memoria real. Para controlar en que bloque de memoria se ha encontrado un bloque virtual el SSOO utiliza unas tablas. Si un proceso genera en su ejecuci´n una direcci´n l´gica correspondiente o o o a un bloque que no est´ en memoria principal, el procesador genera una interrupci´n que a o indica que se ha producido un fallo de acceso a memoria. En memoria virtual paginada esto se llama fallo de p´gina y de forma general tambi´n se utiliza este t´rmino para otros sistemas a e e de gesti´n de memoria como la segmentaci´n. o o A partir de un fallo de p´gina se genera la siguiente secuencia de sucesos: a • El SSOO coloca el proceso en estado bloqueado. • Se trae a memoria principal el bloque correspondiente para lo cual se enviar´ un solicitud a de lectura en el disco al subsistema de E/S. • El procesador puede atender a otro proceso. • Una vez que el bloque solicitado sea cargado en memoria el SSOO colocar´ el proceso a en estado de listo. Ventajas e inconvenientes en cuanto al tama˜ o de los bloques n • Cuanto mayor sea el tama˜o, menos bloques habr´, por tanto el espacio necesario para n a las tablas de control de bloques ser´ menor pero existe el inconveniente de que a la hora a de la transferencia disco-memoria se tardar´ m´s tiempo. a a • Cuanto menor sea el tama˜o, habr´ m´s programas que puedan caber en memoria. n a a 13

5 MEMORIA VIRTUAL

5.2 Memoria virtual paginada

• Las transferencias ser´n m´s r´pidas cuanto m´s peque˜os sean los bloques. a a a a n • Inconveniente del menor tama˜o: Se producen m´s fallos de p´ginas y se tienen que n a a realizar frecuentes transferencia de informaci´n disco memoria. o Los bloques pueden ser todos del mismo tama˜o o diferentes tama˜os. Si son del mismo n n tama˜o se trata de memoria virtual paginada. Si los bloques pueden tener tama˜os diferentes n n el sistema estar´ usando un modo de gesti´n de memoria virtual segmentada. Puede hacerse a o paginaci´n de los segmentos (segmentaci´n paginada). Si se producen demasiados intercambios o o entre memoria principal y disco se produce un efecto que se llama hiperpaginaci´n. Este o consiste en que el procesador consume m´s tiempo intercambiando bloques que en la ejecuci´n a o del programa. Para solucionar esto se suele recurrir a la historia m´s reciente de las ejecuciones a de modo que el SSOO intente adivinar que bloques o fragmentos se utilzar´n en un futuro a cercano. Esto se basa en el principio de cercan´a: Los bloques a los cuales e accede dentro de un ı programa tienden a agruparse.

5.2

Memoria virtual paginada

Con memoria virtual basada en la paginaci´n no es necesario que un programa est´ cargado o e al completo en memoria. A las p´ginas virtuales cargadas en memoria en un momento se les a llama p´ginas activas o residentes. Cuanto menor sea el tama˜o de los marcos de p´gina menor a n a ser´ la fragmentaci´n interna producida en la ultima p´gina de cada proceso. a o ´ a Al igual que en la paginaci´n simple se utilizar´ una tabla de p´ginas para el control de los o a a marcos en los que est´n cargadoas las diferentes p´ginas. El contenido de las tablas de p´ginas a a a var´ Por ejemplo podemos encontrarnos: ıa. P Bit de presencia. Suele ser 0 si la p´gina no est´ en memoria y 1 si se encuentra en memoria a a principal. M Bit de modificaci´n. Indica si el contenido de la p´gina ha cambiado desde que se carg´ en o a o memoria. Si una p´gina no ha sufrido modificaci´n no es necesario descargarla al disco. a o Puede ser que el espacio en disco est´ ocupado y el espacio ocupado por una p´gina e a puede ser ocupado por otra. Marco Marco de p´gina en el que se encuentra una determinada p´gina. a a Bits de control Por ejemplo: Protecciones de acceso para controlar si un proceso est´ actua alizando una p´gina. a Para la implementaci´n se tienen los mismo m´todos que en la paginaci´n. Cada proceso o e o puede ocupar una gran cantidad de memoria virtual lo que suele producir un n´mero elevado u de p´ginas y el espacio que se requerir´ ser´ necesario para las tablas de p´ginas de un proceso. a a a a En estos casos se considera no aceptable la cantidad de memoria utilizada para la gesti´n de o las tablas de p´ginas y se busca una soluci´n para que se utilice menos memoria para las tablas a o de p´ginas. a Algunos sistemas gestionan las tablas de p´ginas de forma virtual y estas se paginan. En un a determinado momento se tendr´ que encontrar la parte de la tabla de p´ginas correspondiente a a a la memoria que se est´ accediendo actualmente. Pueden acontecer dos fallos de p´gina pero e a

14

5 MEMORIA VIRTUAL

5.3 Memoria Virtual Segmentada

un unico acceso. Normalmente la longitud de una tabla de p´ginas se suele limitar al tama˜o ´ a n de una p´gina. a Otros sistemas utilizan un esquema a dos niveles para organizar las tablas de p´ginas. En a un primer nivel existe un directorio en el cual cada elemento se˜ala a una tabla de p´gina y n a en el segundo cada tabla de p´ginas. a Por ultimo otros sistemas utilizan otro esquema que consiste en utilizar una tabla de ´ p´ginas invertida donde se encuentran referencias a los marcos. a

dibujo5.eps

La funci´n hash genera un n´mero que es el marco en el que deber´ estar una determinada o u ıa p´gina. Si no est´ en ese marco hay que tener una soluci´n (si el dato no se corresponde con a a o el proceso): 1. Recorrer de forma secuencial toda la tabla invertida buscando en n´mero de p´gina (esto u a ofrece un bajo rendimiento). 2. En el resto de informaci´n que se utilice un campo como puntero para encadenar dos o o m´s referencias. Si no se corresponde mira el puntero. Este m´todo es algo mejor. a e

5.3

Memoria Virtual Segmentada

Los programas se dividen en segmentos. Cada porci´n tendr´ un tama˜o completo que no o a n tiene que ser el mismo. Esos segmentos se colocar´n en bloques y esos bloques se colocar´n en a a memoria. Para la colocaci´n de los segmentos de programa en bloques libres se utilizaran los o mismos algoritmos (Primer ajuste. . . ). Al igual que en la segmentaci´n simple se utiliza una o tabla de segmentos para controlar en que posici´n se colocan los segmentos. o P—M—OTROS BITS—LONGITUD—BASE Longitud Longitud del segmento. Base Direcci´n base donde se encuentra el segmento en la memoria. o

15

6 ALGORITMOS SOFTWARE DE 5.4 MEMORIA VIRTUAL Paginaci´n y Segmentaci´n LA Memoria Virtual Con o o Como diferencia fundamental: En la segmentaci´n simple todo el programa est´ cargado o a en la memoria y en la memoria virtual con segmentaci´n no se cargan todos. Tambi´n con o e este m´todo se produce fragmentaci´n externa. e o

5.4

Memoria Virtual Con Paginaci´n y Segmentaci´n o o

Var´ las estructuras de tablas y segmentos y no es necesario que est´ el programa completo ıan e cargado en la memoria.

6

Algoritmos Software de la Memoria Virtual
1. Pol´ ıticas de lectura (Paginaci´n por demanda y paginaci´n previa). o o 2. Pol´ ıticas de ubicaci´n (En segmentaci´n los ajustes, en paginaci´n da igual). o o o ´ 3. Pol´ ıticas de reemplazo (Optimo, LRU, FIFO, Reloj, Reloj con bit de modificaci´n) o 4. Gesti´n del conjunto residente o 5. Pol´ ıticas de vaciado 6. Control de carga

6.1
6.1.1

Pol´ ıticas de Lectura
Paginaci´n por Demanda o

S´lo se cargan en memoria las p´ginas necesarias en un momento determinado para la ejecuci´n o a o de procesos en un determinado instante. El inconveniente suele ser la hiperpaginaci´n. Para o la implementaci´n se tienen los mismos m´todos que en la paginaci´n. o e o 6.1.2 Paginaci´n Previa o

Cuando se produce un fallo de p´gina, las diferencias de velocidad entre los dispositivos y a memoria es muy grande luego el acceso a un dispositivo hace que el rendimiento caiga. Al acceder al disco se leer´ al menos un registro f´ a ısico, y en un registro f´ ısico suele haber varias p´ginas de programa. Dentro de estas estar´ la que se necesite. Con paginaci´n previa se a a o aprovecha que al leer un registro f´ ısico se cargar´n m´s p´ginas en memoria ya que es frecuente a a a que se requieran p´ginas consecutivas. a

6.2

Pol´ ıticas de Ubicaci´n o

M´todos de la segmentaci´n (primer ajute,etc). e o Paginaci´n: No se tendr´n en cuenta las anteriores pol´ o a ıticas pues da igual en que marco se cargue una p´gina. Pero en la segmentaci´n si es importante ya que dependiendo de que a o segmento se cargue cabr´n m´s o menor procesos en la memoria. El m´todo seleccionado har´ a a e a que se produzca un mayor o menor n´mero de intercambios. u

16

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL 6.3 Pol´ ıticas de Reemplazo

6.3

Pol´ ıticas de Reemplazo

Cuando se debe cargar una p´gina y no hay espacio el gestor de memoria selecciona una p´gina a a para liberarla y cargarla al disco. A esta operaci´n se le llama reemplazo. Puntos a tener en o cuenta: • El n´mero de marcos de p´gina que se le asignar´n a un proceso (gesti´n del conjunto u a a o residente) • Si las p´ginas que pueden ser reemplazadas ser´n s´lo las del proceso en cuesti´n o a a o o cualquier p´gina de cualquier proceso, y que candidata se va a seleccionar. a • Las pol´ ıticas de reemplazo tienen que seleccionar la p´gina que tenga menor posibilidad a de ser utilizada en un futuro cercano. La mayor´ de estas pol´ ıa ıticas intentan predecir el comportamiento futuro en funci´n del o comportamiento pasado y en funci´n del principio de cercan´ o ıa. Una regla a tener en cuenta es que cuanto m´s complejas sean m´s sobrecargado estar´ el a a a hardware y el rendimiento decaer´. Deben ser sencillas. Otro dato a tener en cuenta es que a algunas marcos pueden encontrarse en estado bloqueado y cuando alguno se bloquea no se puede reemplazar. Esto se hace asociando un bit de bloqueo a cada marco. Ese bit puede estar en el PCB o en la tabla de p´ginas. Por ejemplo las r´tinas del SSOO se encuentran en marcos a u bloqueados. 6.3.1 Algoritmos de Reemplazo

´ Optimo Se selecciona para ser reemplazada la p´gina que ser´ utilizada m´s tarde en futuro a a a cercano. No se puede implementar, pero se toma como referencia para calculo de algoritmo. (Rappel-OS). Por ejemplo, si se asignan constantemente 3 marcos para un proceso y las referencias son las siguientes: 2(a)—3(b)—2(c)—1(d)—5(e)—2(f)—4(g)—5(h)—3(i)– -2(j)—5(k)—2(l)

dibujo6.eps

LRU (Least Recently Used) Se selecciona para descargar la utilizada hace m´s tiempo, a la utilizada menos recientemente. Se basa en el principio de cercan´ Es un buen m´todo ya ıa. e que la p´gina utilizada hace m´s tiempo se supone que ser´ la menos utilizada en un futuro a a a pr´ximo. No es de implementaci´n sencilla. o o

17

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL 6.3 Pol´ ıticas de Reemplazo

dibujo7.eps

FIFO Reemplazar la p´gina que lleve m´s tiempo en memoria, la primera que se haya a a cargado. No es una pol´ ıtica muy certera cuando utiliza p´ginas frecuentemente, pero es sencillo a de implementar.

dibujo8.eps

Reloj Simple Se basa en el LRU y se asemeja en rendimiento al ´ptimo. Se asocia un bit o de uso a cada marco. Este bit se puede implementar en una tabla de marcos. Cuando se carga una p´gina el bit se pone a 0 y cuando se accede al mismo se pone a 1. Si ya est´ a uno no se a a modifica. Cuando se tiene que suspender una p´gina se recorre la lista de marcos utilizando un a puntero que cuando se hace un reemplazo se queda se˜alizando al siguiente marco. Cuando se n recorre la lista de marcos se busca el primer marco de la lista que tenga el bit de utilizaci´n a o cero (se carga la tabla pero no ha sido utilizada). Ese se selecciona para suspender la p´gina a y reemplazarla por una p´gina nueva. a Cuando en el recorrido se encuentra un marco que tiene el bit a uno ser´ cambiado a cero. a De esta forma si se recorriera completamente la lista siempre habr´ alguno que est´ a uno a e al final del recorrido. A la lista de marcos de p´gina tambi´n se le llama buffer (Pg. 309 del a e libro).

dibujo9.eps

18

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL on Del Conjunto Residente 6.4 Gesti´ Reloj con bit de Modificaci´n Consiste en asignar un bit m´s a los marcos. Adem´s del o a a bit de utilizaci´n se asigna otro bit de p´gina modificada o de marco modificado. Este bit se o a utiliza para marcar el contenido del marco que ha cambiado, lo cual se tendr´ que tener en a cuenta cuando la p´gina vaya a ser reemplazada (si no se ha cambiado no es necesario volcarla a al disco por lo cual se ahorrar´ tiempo). a Se podr´n dar las siguientes combinaciones de bits: a 00 No se ha accedido recientemente y no se ha modificado el contenido. 01 No se ha accedido recientemente pero se ha modificado el contenido. 10 Se ha accedido recientemente y no se ha modificado el contenido. 11 Se ha accedido recientemente y se ha modificado el contenido. El algoritmo consistir´ en: a 1. Comenzando en la posici´n actual se recorre el buffer de marcos. No se cambia el bit o de utilizado en este primer recorrido. Se selecciona para ser reemplazada la p´gina que a contiene los bits 00. 2. Si no hay un 00 se llega a la posici´n anterior, se repite el recorrido buscando marcos o con la combinaci´n 01. Se pone a cero el bit de utilizado de los marcos que los tengan a o uno. 3. Si tampoco se encuentra un 01 se busca desde el principio. Todos los bits de utilizado estar´n a cero y se repiten los pasos 1 y 2. a Segunda oportunidad Es una variante del reloj simple que comienza la b´squeda desde u el primer marco (siempre) no desde donde haya quedado. 6.3.2 Anomal´ de Belady ıa

Si se aumenta el n´mero de marcos que tenga un proceso el n´mero de fallos de p´gina u u a disminuir´. Esto es cierto en el algoritmo ´ptimo, pero en el resto falla algunas veces con el a o efecto contrario: Al aumentar el n´mero de marcos aumenta (en ocasiones) el n´mero de fallos u u de p´gina. Esto se ver´ potenciado sobre todo si p´ginas cargadas al principio en los marcos a a a extra luego no se utilizan.

6.4

Gesti´n Del Conjunto Residente o

Esta formado por los componentes de un proceso en memoria principal: • Pol´ ıticas en cuanto al tama˜o n • Pol´ ıticas en cuanto al alcance del reemplazo • Asignaci´n fija, alcance local o • Asignaci´n variable, alcance global o • Asignaci´n variable, alcance local o 19

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL 6.4.1 Pol´ ıticas en cuanto al tama˜ o n

6.5 Pol´ ıticas de alcance

Cantidad de memoria que debe asignar a un proceso. Se debe tener en cuanta: • Cuanto menor sea la memoria asignada, m´s procesos podr´n estar cargados en memoria a a en un determinado momento. Ser´ mayor la probabilidad de que haya un proceso en a estado listo. • Cuanto menor sea el n´mero de p´ginas de un proceso en memoria principal, m´s fallos u a a de p´gina se produciran normalmente. a • Llegado un determinado n´mero de p´ginas asignadas a un proceso asignar m´s marcos u a a a un proceso no disminuye el n´mero de fallos de p´gina sino que los puede aumentar. u a En los sistemas operativos actuales se pueden encontrar dos pol´ ıticas: Asignaci´n fija A cada proceso se le asigna un n´mero fijo de marcos. Este n´mero lo o u u decide el sistema en el momento de la carga inicial. Cuando se produce un fallo de p´gina se a debe realizar un reemplazo de manera que el n´mero de p´ginas que haya sea de un n´mero u a u como m´ximo. a A la hora de reemplazar una p´gina de un proceso se tendr´ que reemplazar por otra del a a mismo proceso. Existe el problema de que si un proceso no utiliza todos sus marcos habr´ un a espacio desaprovechado. Asignaci´n variable El n´mero de marcos asignado a un proceso puede cambiar. As´ se o u ı pueden producir 2 situaciones: 1. Que no se cumpla el principio de cercan´ para el proceso y se produzcan frecuentes ıa fallos de p´ginas. En este caso se intentar´ asignar dos marcos al proceso para disminuir a a el n´mero de fallos de p´gina. u a 2. Que el n´mero de fallos de p´gina sea bajo. Entonces se podr´ intentar reducir el n´mero u a ıa u de marcos asignados a un proceso para que se puedan utilizar para otros. Esto se podr´ a realizar si el porcentaje de fallos no aumenta con respecto al n´mero de marcos. u

6.5

Pol´ ıticas de alcance

Trata sobre que p´ginas pueden ser reemplazadas. Existe el reemplazo local y el reemplazo a global y se combinan con la asignaci´n fija y variable. o Local La p´ginas candidatas a ser reemplazadas son unicamente las del proceso que provoc´ a o el fallo de p´gina. a Global Cualquier p´gina de cualquier proceso es candidata a ser reemplazada. a 6.5.1 Asignaci´n Fija, Alcance Local o

Se debe decidir por adelantado los marcos asignados a un proceso. Se pueden utilizar los algoritmos de reemplazo tratados anteriormente. Se deben tener en cuenta los siguientes problemas:

20

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL

6.5 Pol´ ıticas de alcance

• Una cantidad elevada de memoria asignada a un proceso provoca que el n´mero de u procesos cargados sea bajo por lo que ser´n frecuentes las operaciones de intercambio a de p´ginas cuando se ejecuten los diferentes procesos. Si se ejecutan frecuentemente a diferentes procesos puede haber numerosos fallos de p´gina provocados por el cambio de a un proceso a otro. • Si la cantidad es peque˜a se producir´n frecuentes fallos de p´gina en la ejecuci´n de un n a a o proceso. 6.5.2 Asignaci´n Variable, Alcance Global o

Es f´cil de implementar. La dificultad radica en cual va a ser la p´gina a reemplazar. a a Puede ser que haya marcos bloqueados, por ejemplo, las p´ginas del sistema operativo. La a elecci´n de una p´gina puede no ser la ´ptima. Para contrarrestar este problema se utiliza alo a o macenamientos intermedios para p´ginas en memoria (buffers). Cuando no caben m´s p´ginas a a a en memoria se vuelcan p´ginas al buffer. a 6.5.3 Asignaci´n Variable, Alcance Local o

1. Cuando se carga un proceso en memoria se le asigna un n´mero de marcos determinado. u Ese n´mero depende del tipo de aplicaci´n y necesidades de los procesos. Da igual si se u o utiliza paginaci´n previa o paginaci´n por demanda. o o 2. Cuando se produce un fallo de p´gina se selecciona una p´gina para ser reemplazada. a a Las candidatas son las del conjunto residente. 3. En determinados momentos se vuelve a evaluar en n´mero de marcos y se a˜aden o u n disminuyen el n´mero de ´stos, aumentando o disminuyendo de este modo el conjunto u e residente. Esta evaluaci´n hace que el rendimiento decaiga pero de forma general el o rendimiento suele ser mayor. Una forma de asignaci´n variable y alcance local es la estrategia del conjunto de trabajo. o Esta estrategia permite modificar el n´mero de marcos asignado al proceso. Se consultan las u p´ginas a las que se haya accedido durante un intervalo de tiempo. Ese intervalo se toma a a partir de un instante determinado. En ese intervalo se comprueba a que p´gina se ha accedido a y esas p´ginas forman el conjunto de trabajo del proceso. a El conjunto de trabajo se define con la notaci´n: o W(T,I) Siendo: T El instante en el cual se realiza la consulta I Tiempo que dura el intervalo El intervalo se trata en unidades de tiempo virt´al: s´lo se toma el tiempo durante el cual un u o proceso est´ en ejecuci´n. Cuanto mayor sea el conjunto de trabajo menos fallos de p´gina se a o a producir´n. Podr´ suceder dos casos extremos: a ıan • El cojunto de trabajo crece hasta ser igual al n´mero de p´ginas de un proceso (se u a utilizan en un tiempo breve muchas p´ginas y el tama˜o de la ventana o intervalo es lo a n suficientemente grande). 21

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL 6.6 Gestion del Conjunto Residente • el conjunto de trabajo es igual a uno; durante I s´lo se ha accedido a una p´gina. o a Hay periodos o intervalos estables en la ejecuci´n de un programa; de forma continuada o se accede a las mismas p´ginas en memoria. Hay otros intervalos (periodos transitorios en a los cuales se usan de forma continuada p´ginas diferentes. Se pasa de un estado estable a a uno inestable. Durante los periodos estables se producen pocos fallos de p´gina y el conjunto a de trabajo est´ formado (normalmente) por un n´mero peque˜o de p´ginas. En periodos a u n a transitorios se producen m´s fallos de p´gina y el conjunto de trabajo est´ formado por m´s a a a a p´ginas. a Las estrategias del conjunto de trabajo pueden provocar la siguiente sucesi´n de tareas: o 1. Supervisar el conjunto de trabajo de cada proceso 2. Eliminar periodicamente de la ventana las p´ginas del conjunto residente que no a pertenezcan al conjunto de trabajo de ese proceso. En esta estrategia se basa en el principio de cercan´ para obtener el conjunto de trabajo de ıa un proceso. Conocido el conjunto de trabajo se podr´ avaluar si interesa aumentar o disminuir a el n´mero de fallos de p´gina. u a La estrategia del conjunto de trabajo tiene los inconvenientes: • Se basa en el principio de cercan´ el pasado no siempre predice el futuro. ıa; • Es practicamente imposible medir de forma real el conjunto de trabajo de un proceso. • Para el c´lculo del conjunto de trabajo se utiliza un valor I que puede ser cambiante y a puede no conocerse a priori el valor ´ptimo. o Suele obtenerse un descenso del n´mero de fallos de p´gina seg´n aumenta el tama˜o del u a u n conjunto residente.

6.6

Gestion del Conjunto Residente

• Pff • Vsws 6.6.1 Pff (Frecuencia de Fallos de Pagina)

Se basa en el control de los fallos de p´gina, y tambi´n en el establecimiento de un valor a e llamado umbral. Cada p´gina cargada tiene asociada un bit llamado bit de utilizaci´n que se a o pone a cero cuando se carga la p´gina en memoria, y cuando se usa se pone a 1. Cuando se a produce un fallo de p´gina se consulta el tiempo virtual transcurrido desde el ultimo fallo de a ´ p´gina. Pueden darse dos casos: a El tiempo transcurrido es menor que el umbral Se est´n produciendo muchos fallos de a p´gina. Se a˜adir´ la p´gina al conjunto de trabajo sin que se quite de memoria ninguna a n a a p´gina de ese proceso. Si es necesario se agregar´ un nuevo marco al proceso. a a

22

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL 6.6 Gestion del Conjunto Residente El tiempo transcurrido el mayor o igual al umbral. Se descargan todas las p´ginas del proceso a que tengan el bit de utilizacion a 0. En consecuencia se disminuye el conjunto residente del proceso. Al mismo tiempo se actualizar´ el bit de utilizaci´n a cero de todas las a o demas p´ginas que lo tengan a uno,y se cargan las nuevas p´ginas. No se retira ninguna a a p´gina del conjunto residente sin que haya transcurrido un n´mero de unidades de tiempo a u virtual desde su ultima referencia igual al umbral (o menor). ´ Inconveniente: Cuando la ejecucion se encuentra en un tiempo de transici´n se generan cono tinuos fallos de p´gina por lo que siempre es el intervalo menor que el umbral con lo que se van a agregando nuevas p´ginas al conjunto residente inflando este. La estrategia puede modificarse a para hacerse m´s potente utilizando dos umbrales: a Umbral Superior Para provocar una reducci´n del conjunto residente. o Umbral Superio Para aumentar el conjunto residente. El tiempo transcurrido entre fallos de p´gina es el inverso de la tasa de fallos de p´gina. Los a a cont´ ınuos fallos de p´gina en los picos hacen que el conjunto residente se infle antes de que a se expulsen las p´ginas del anterior estado estable, lo cual provocar´ un n´mero elevado de a a u intercambios de p´gina. a Por ejemplo si tomamos: Umbral == 2 Marcos Asignados == 3 Secuencia de Solicitudes: 2–3–2–1–5–2–4–5–3–2–5–2

dibujo10.eps

6.6.2

VSWS

Conjunto de trabajo muestreado a intervalos variables. Para solucionar el problema anterior en cuanto al aumento de n´mero de p´ginas de un proceso se tienen que fijar tres valores: u a Valor M Que indica la duraci´n m´ o ınima del intervalo de muestreo. Valor L Que indica la duraci´n m´xima del intervalo. o a 23

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL

6.7 Pol´ ıticas de Vaciado

Valor Q N´mero de fallos de p´gina permitidos entre cada par de muestras. u a Si el tiempo virtual transcurrido desde la ultima muestra alcanza el valor L se suspende ´ el proceso y se exploran los bits de utilizaci´n de los marcos. Si no ha transcurrido L pero se o producen Q fallos de p´ginas entonces se pueden dar dos posibilidades: a • Si el tiempo virtual desde la ultima muestra es menor que M el algoritmo espera a que el tiempo virtual transcurrido alcance M para suspender el proceso y consultar los bits. • Si el tiempo virtual es mayor o igual que M se suspende el proceso y se exploran los bits. • Los valores M, L y Q se deben fijar de modo que la condicion por la que se exploran los bits sea porque se hayan producido Q fallos de p´gina. a Intenta reducir los picos de demanda de p´ginas provocados por periodos de transici´n para a o lo cual se incrementa el tiempo de muestreo que da lugar a que las p´ginas utilizadas no a abandonen el conjunto residente.

6.7

Pol´ ıticas de Vaciado

Escribir en el disco las p´ginas reemplazadas y el momento en el que van a ser escritas en el a disco. 6.7.1 Por Demanda

Se escriben en memoria secundaria cuando son seleccionadas para ser reemplzadas. Antes de que se cargue la pagina a situar en memoria. El proceso ha de esperar el tiempo de transferencia. 6.7.2 Vaciado Previo

Las p´ginas en memoria se escriben en memoria secundaria antes de que sean seleccionadas a para ser reemplazadas lo que provoca que s´lo se tenga que esperar a una operaci´n de transo o ferencia a disco (la de carga a memoria). El inconveniente es que antes de que una p´gina sea a seleccionada para ser reemplazada es posible que la p´gina sea escrita varias veces en el disco. a Una soluci´n intermedia es utilizar cach´s para las p´ginas. o e a Para ello se utilizan dos listas: 1 P´ginas modificadas Se colocan las p´ginas que han sufrido modificaci´n. Se podr´ esa a o a cribir en memoria secundaria por lotes y despu´s se transladan a la otra lista. e 2. No han sido modificadas En este caso puede suceder: a. Se reclamen y que se vuelvan a cargar en memoria sin pasar por memoria secundaria. b. Que se asigne su marco a otra p´gina y se elimine de la cola. a

6.8

Control de Carga

• Grado de multiprogramaci´n. o • Suspensi´n de procesos. o 24

6 ALGORITMOS SOFTWARE DE LA MEMORIA VIRTUAL 6.8.1 Grado de Multiprogramaci´n o

6.8 Control de Carga

Determina el n´mero m´ximo de procesos que podran estar cargados a la vez en memoria u a principal. Cuando hay pocos es f´cil que llegue el caso de que todos los procesos est´n bloqueados y a e haya que realizar intercambio para que haya alguno que se pueda ejecutar. En el caso contrario en n´mero si procesos es elevado, y el conjunto residente de un proceso u ser´ peque˜o. Entonces se generan frecuentes fallos de p´gina. a n a Hay que tener, por lo tanto, un n´mero equilibrado de procesos en memoria. Hay varios u m´todos para conseguir ese n´mero ´ptimo. e u o • Uno de ellos es utilizar los algoritmos del conjunto de trabajo. En estos se consigue controlar el n´mero de procesos a cargar en memoria. El objetivo es disminuir el conjunto u residente suspendiendo las p´ginas que no se est´n utilizando para asignarlas a otros a e procesos (Objetivo: Conjunto Residente==Conjunto de trabajo). • M´todo de Denning o Criterio L==S. Propone que el grado de multiprogramaci´n ideal e o se obtiene cuando el tiempo medio entre fallos de p´gina es igual al tiempo exigido para a procesar un fallo de p´gina. a 6.8.2 Suspension de Procesos

Si se reduce el grado de multiprogramaci´n se deben suspender uno o varios procesos y existen o muchas posibilidades para seleccionar que procesos se deben descargar: • Suspender el proceso con la prioridad m´s baja. a • Suspender el proceso con m´s fallos de p´gina; si un proceso provoca muchos fallos de a a p´gina es probable que se deba a que no tenga residente su conjunto de trabajo. a • Seleccionar el ultimo proceso activado ya que es el proceso que tiene la probabilidad m´s ´ a baja de que su conjunto de trabajo est´ residente. e • Suspender el proceso con el conjunto de trabajo m´s peque˜o ya que descargar su cona n junto de trabajo ser´ m´s r´pido. El inconveniente es que sufren penalizaci´n los procesos a a a o m´s peque˜os. a n • Suspensi´n del proceso mayor: Esto se har´ con el objetivo de tener espacios libres o ıa grandes en la memoria. • Suspender el proceso con el mayor tiempo de ejecuci´n restante. o

25

Sign up to vote on this title
UsefulNot useful