apuntesu3_sistemasoperativosisc

24
1 1 22 mar UNIDAD 3 Administración de memoria. La parte del S. O. que administra la memoria se llama “administrador de la memoria”: Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no. Asigna espacio en memoria a los procesos cuando estos la necesitan. Libera espacio de memoria asignada a procesos que han terminado. La memoria principal es un recurso costoso, por lo que su uso debe optimizarse. 3.1 Política y filosofía. Filosofía: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica. Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando. Sea cual sea el esquema de organización del almacenamiento que se adopte para un sistema específico, es necesario decidir qué estrategias se deben utilizar para obtener un rendimiento óptimo. Las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas: ¿Cuándo se toma un nuevo programa para colocarlo en memoria? ¿Se toma el programa cuando el sistema lo solicita específicamente o intenta anticiparse a las peticiones del sistema? ¿En qué lugar del almacenamiento principal se coloca el programa por ejecutar? ¿Se colocan los programas lo más cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mínimo el desperdicio de espacio, o se colocan los programas lo más rápido posible para reducir al mínimo el tiempo de ejecución? Si se necesita colocar un nuevo programa en el almacenamiento principal y éste está lleno, ¿Cuál de los otros programas se desaloja? Se han realizado sistemas que utilizan cada una de estas estrategias de administración. Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario. Por ejemplo el caso de Unix permite procesos múltiples y un proceso puede generar otro fácilmente. La planificación del procesador usa un algoritmo basado en prioridades. La administración de memoria es un algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeño de memoria. Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX intercambiaba el contenido en memoria de los procesos. POLÍTICAS. Organización de la memoria.- Forma de considerar este almacenamiento: ¿se coloca un solo programa de usuario o varios? Si se encuentran varios programas de usuario: o ¿se les concede la misma cantidad de espacio o particiones de diferente tamaño? o ¿se usa un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable? o ¿se requiere que los trabajos funcionen en una partición específica o en cualquiera donde quepan? o ¿se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria? Independiente del esquema de organización hay que decidir las estrategias que se usarán para optimizar el rendimiento. Las “estrategias de administración” deben considerar: ¿cómo se consigue un nuevo programa para colocar en la memoria: cuando el sistema lo pide o intenta anticiparse a las peticiones?

Upload: miguel-angel-medina

Post on 30-Sep-2015

13 views

Category:

Documents


0 download

DESCRIPTION

Sistemas Operativos 1 Unidad #

TRANSCRIPT

  • 1

    1

    22 mar

    UNIDAD 3 Administracin de memoria.

    La parte del S. O. que administra la memoria se llama administrador de la memoria:

    Lleva un registro de las partes de memoria que se estn utilizando y de aquellas que no.

    Asigna espacio en memoria a los procesos cuando estos la necesitan.

    Libera espacio de memoria asignada a procesos que han terminado. La memoria principal es un recurso costoso, por lo que su uso debe optimizarse.

    3.1 Poltica y filosofa.

    Filosofa:

    La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un

    byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin que la identifica.

    Una de las funciones bsicas que debe implementar un SO es la Administracin de la Memoria para tener un

    control sobre los lugares donde estn almacenados los procesos y datos que actualmente se estn utilizando.

    Sea cual sea el esquema de organizacin del almacenamiento que se adopte para un sistema especfico, es

    necesario decidir qu estrategias se deben utilizar para obtener un rendimiento ptimo. Las estrategias de administracin del almacenamiento determinan el comportamiento de la administracin de memoria cuando

    se siguen ciertas polticas:

    Cundo se toma un nuevo programa para colocarlo en memoria?

    Se toma el programa cuando el sistema lo solicita especficamente o intenta anticiparse a las peticiones del sistema?

    En qu lugar del almacenamiento principal se coloca el programa por ejecutar?

    Se colocan los programas lo ms cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mnimo el desperdicio de espacio, o se colocan los programas lo ms rpido posible para reducir al mnimo el tiempo de ejecucin?

    Si se necesita colocar un nuevo programa en el almacenamiento principal y ste est lleno, Cul de los otros programas se desaloja?

    Se han realizado sistemas que utilizan cada una de estas estrategias de administracin.

    Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer

    referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario.

    Por ejemplo el caso de Unix permite procesos mltiples y un proceso puede generar otro fcilmente. La

    planificacin del procesador usa un algoritmo basado en prioridades. La administracin de memoria es un

    algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por

    sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeo de

    memoria.

    Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX

    intercambiaba el contenido en memoria de los procesos.

    POLTICAS.

    Organizacin de la memoria.- Forma de considerar este almacenamiento:

    se coloca un solo programa de usuario o varios?

    Si se encuentran varios programas de usuario: o se les concede la misma cantidad de espacio o particiones de diferente tamao? o se usa un esquema rgido de nmero y tamao de particiones o un esquema dinmico y

    adaptable?

    o se requiere que los trabajos funcionen en una particin especfica o en cualquiera donde quepan?

    o se requerir o no que cada trabajo sea colocado en un bloque contiguo de memoria? Independiente del esquema de organizacin hay que decidir las estrategias que se usarn para optimizar el

    rendimiento.

    Las estrategias de administracin deben considerar:

    cmo se consigue un nuevo programa para colocar en la memoria: cuando el sistema lo pide o intenta anticiparse a las peticiones?

  • 2

    2

    dnde se colocar el programa que se ejecutar a continuacin: se prioriza el tiempo de carga o la optimizacin en el uso de la memoria?

    con qu criterio se desplazarn programas? 3.2 Memoria real.

    Cantidad de memoria principal con que cuenta un equipo

    Memoria secundaria auxiliar.- la soportada generalmente en discos.

    Para que un programa pueda ser ejecutado, l y sus datos deben estar en memoria principal. Para mejorar el

    rendimiento del cpu se pueden repartir sus servicios entre varios programas que necesitan estar cargados

    simultneamente en memoria compartindola.

    La memoria real o principal se considera el recurso central, ya que tanto el cpu como los dispositivos e/s la

    acceden para leer o grabar.

    Hay 2 parmetros relacionados con la velocidad de r/w en memoria real:

    Tiempo de acceso.- Tiempo que transcurre del inicio al fin de una operacin r/w.

    Tiempo de ciclo de memoria.- Retraso que impone el hardware entre una operacin y otra.

    3.2.1 Administracin de almacenamiento.

    Direccionamiento

    La memoria se puede ver como una sucesin de bytes, cada uno con su direccin y se puede acceder a ellos

    indicando dicha direccin.

    Asignacin de direcciones

    En qu direcciones cargar los datos y programas? El programador disea su programa sin saber dnde se

    cargar. Simplemente definir una sentencia de inicio que marcar el comienzo de sus instrucciones y a partir

    de ella describir el resto del programa. El compilador traducir a lenguaje mquina y asignar a las

    instrucciones y variables un desplazamiento respecto a la sentencia inicial (cero relativo). Esta operacin se

    llama asignacin de direcciones relativas. Cuando el programa se enlaza, el linker lo colocar en memoria

    asignando el cero relativo a una direccin real y el resto de direcciones basadas en los desplazamientos

    (Transformacin de direcciones relativas a absolutas o reales)

    CPU MEMORIA E/S

  • 3

    3

    3.2.2 Jerarqua.

    Nivel 0: Registros

    Nivel 1: Memoria cach

    Nivel 2: Memoria principal

    Nivel 3: Disco duro (con el mecanismo de memoria virtual)

    Registro.- memoria de alta velocidad y poca capacidad, integrada en el cpu, que permite guardar y acceder a valores muy usados, generalmente en operaciones matemticas.

    Estn en la cumbre de la jerarqua de memoria, y son la manera ms rpida que tiene el sistema de

    almacenar datos. Se miden generalmente por el nmero de bits que almacenan; "registro de 8 bits" o

    "registro de 32 bits". Se implementan en un banco de registros

    Los CPUs tienen adems otros registros usados con un propsito especifico, como el contador de

    programa.

    Memoria cach.- tipo especial de memoria que se sita entre el cpu y la RAM para almacenar datos que se usan frecuentemente. Agiliza la transmisin de datos entre el CPU y la memoria principal. Es de

    acceso directo y mucho ms rpida que la RAM.

    Memoria principal.- Son circuitos integrados capaces de almacenar informacin digital, a los que tiene acceso el CPU. Poseen una menor capacidad de almacenamiento que la memoria secundaria, pero una

    velocidad millones de veces superior. Hay dos tipos:

    o ROM (Read Only Memory) "Memoria de solo lectura" que almacenan cdigos de programa grabados de fbrica. (BIOS)

    o RAM (Random Access Memory) "Memoria de acceso aleatorio", almacena datos que pueden ser escritos y borrados atendiendo a los procesos de computacin. "Aleatorio" indica que sus

    localidades pueden ser accedidas directamente, dando rapidez a los procesos.

    El CPU direcciona las posiciones de la RAM para poder acceder a los datos almacenados en ellas y para

    colocar los resultados de las operaciones.

    Memoria secundaria.- dispositivo encargado de almacenar informacin de forma permanente.

  • 4

    4

    Los programas y datos deben estar en memoria principal para poder ejecutarse o ser referenciados.

    Los programas y datos que no son necesarios de inmediato pueden mantenerse en memoria secundaria.

  • 5

    5

    23 mar

    3.2.3 Estrategia de administracin de memoria.

    Estn dirigidas a la obtencin del mejor uso posible del recurso de la memoria principal.

    Se dividen en las siguientes categoras:

    estrategias de bsqueda.- establecen cundo obtener el siguiente fragmento de programa o de datos para su insercin en la memoria principal.

    o bsqueda por demanda.- el siguiente fragmento de programa o de datos se carga a memoria principal cuando algn programa en ejecucin lo referencia.

    o bsqueda anticipada.- puede producir un mejor rendimiento del sistema ya que no espera a que se efecte la peticin, sino que trata de anticiparse a sta.

    estrategias de colocacin.- determinan el lugar de la memoria dnde se colocar (cargar) un programa nuevo.

    estrategias de reposicin.- determinan cul fragmento de programa o datos liberar para dar lugar a los programas nuevos.

    3.2.4 Asignacin contigua vs no contigua.

    asignacin contigua.- cada programa ocupa un bloque contiguo de localidades de memoria.

    asignacin no contigua.- un programa se divide en varios bloques o segmentos que pueden almacenarse

    en direcciones que no tienen que ser necesariamente adyacentes, por lo que es ms compleja pero ms

    eficiente que la asignacin continua.

    Asignacin Contigua de Memoria de Un Solo Usuario

    El tamao de los programas est limitado por la cantidad de memoria principal, pero se puede superar este

    lmite con tcnicas de recubrimientos, con las siguientes caractersticas (Figura 3.3 .):

    Si una seccin particular del programa ya no es necesaria, se carga otra seccin desde la memoria secundaria ocupando las reas de memoria liberadas por la seccin que ya no se necesita.

    La administracin manual por programa del recubrimiento es complicada y dificulta el desarrollo y el mantenimiento.

  • 6

    6

    Proteccin en los sistemas de un solo usuario

    El usuario tiene un completo control sobre la totalidad de la memoria principal:

    La memoria se divide en porciones que contienen el S. O., el programa del usuario y una porcin sin usar.

    El programa del usuario podra destruir reas del S. O. que podran: bloquear el sistema o producir salidas errneas.

    El S. O. debe estar protegido contra el proceso usuario por medio de un registro de lmites o registro frontera:

    o Contiene la direccin de la instruccin ms alta usada por el S. O. o Si se intenta ingresar al S. O. la instruccin es interceptada y el proceso finaliza.

    3.2.5 Multiprogramacin de particin fija, particin variable, con intercambio de almacenamiento.

    Multiprogramacin de Particin Fija

    Los sistemas de un usuario desperdician gran cantidad de recursos computacionales debido a que (Figura 3.4):

    Cuando ocurre una peticin de e/s el cpu normalmente no puede continuar el proceso hasta que concluya la operacin de e/s requerida.

    Los perifricos de e/s frenan la ejecucin de los procesos ya que comparativamente el cpu es ms rpido que los dispositivos de e/s.

  • 7

    7

    Los sistemas de multiprogramacin permiten que varios procesos usuarios compitan al mismo tiempo por

    los recursos del sistema:

    Un trabajo en espera de e / s ceder el cpu a otro trabajo que est listo para efectuar cmputos.

    Existe paralelismo entre el procesamiento y la e/s.

    Se incrementa el uso del cpu y la capacidad global de ejecucin del sistema.

    Es necesario que varios trabajos residan a la vez en la memoria principal.

  • 8

    8

    24 mar

    Multiprogramacin de Particin Fija: Traduccin y Carga Absolutas

    Las particiones de la memoria principal:

    Son de tamao fijo.

    Se maneja una lista para cada particin.

    Alojan un proceso cada una.

    El cpu se cambia rpidamente entre los procesos creando la ilusin de simultaneidad.

    El S. O. resulta de implementacin relativamente sencilla pero no se optimiza el uso de la memoria. Est

    condicionada a saber con anticipacin las necesidades de memoria de un programa y su orden de llegada

    Multiprogramacin de Particin Fija: Traduccin y Carga Relocalizables

    Se usa una sola lista para todas las particiones y el sistema operativo determinar qu programa cargar y en qu particin.

    Se producen programas relocalizables que puedan ser ejecutados en cualquier particin disponible de tamao suficiente para aceptarlos (Figura 3.6).

    Mejoran el uso de la memoria.

    Confieren ms flexibilidad en el armado de la carga de procesos.

    Proteccin en los Sistemas de Multiprogramacin

    Si se usa asignacin contigua de memoria la proteccin suele implementarse con varios registros de lmites

    (Figura 3.8 .).

    Los extremos superior e inferior de una particin pueden ser:

    Delineados con dos registros.

    Indicando el lmite inferior o superior y el tamao de la particin o regin.

  • 9

    9

    Fragmentacin en la Multiprogramacin de Particin Fija

    La fragmentacin de memoria ocurre en todos los sistemas independientemente de su organizacin de

    memoria.

    En los S. O. de multiprogramacin de particin fija la fragmentacin se produce cuando:

    Los trabajos del usuario no llenan completamente sus particiones designadas.

    Una particin permanece sin usar porque es demasiado pequea para alojar un trabajo que est en espera. Considerando una memoria dividida en 3 particiones de 128 K, 128 K y 256 K respectivamente:

    Fragmentacin interna.- si un programa necesita 100 K de memoria y hay una particin de 128K se desaprovechan 28 K al interior de la particin.

    Fragmentacin externa.- Puede haber un programa de 130 K en una particin de 256 y otro de 100k en una de 128 K, presentndose una peticin de un programa de 140K que no podr ser cargado en la

    particin libre, habiendo en total, suficiente memoria.

    Multiprogramacin de Particin Variable

    Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben superar el espacio disponible

    de memoria. (Figura 3.9 .).

  • 10

    10

    No hay lmites fijos de memoria, es decir que la particin de un trabajo es su propio tamao.

    Se consideran esquemas de asignacin contigua, dado que un programa debe ocupar posiciones adyacentes

    de memoria.

    Los procesos que terminan dejan disponibles espacios de memoria principal llamados agujeros:

    Pueden ser usados por otros trabajos que cuando finalizan dejan otros agujeros menores.

    En sucesivos pasos los agujeros son cada vez ms numerosos pero ms pequeos, por lo que se genera un desperdicio de memoria principal. (Fig. 3.10)

    Combinacin de agujeros (reas libres)

    Consiste en fusionar agujeros adyacentes para formar uno sencillo ms grande.

    Se puede hacer cuando un trabajo termina y la memoria que libera tiene lmites con otros agujeros. (Fig. 3.11)

    Compactacin de Memoria

    Puede ocurrir que los agujeros (reas libres) separados distribuidos por todo la memoria principal constituyan

    una cantidad importante de memoria:

    Podra ser suficiente (el total global disponible) para alojar a procesos formados en espera de memoria.

    Podra no ser suficiente ningn rea libre individual (Figura 3.10 .).

  • 11

    11

    La compactacin implica pasar todas las reas ocupadas de la memoria a uno de los extremos de la memoria

    principal y dejar un solo agujero grande de memoria libre contigua.

  • 12

    12

    28 mar

    Principales desventajas de la compactacin

    Consume recursos del sistema (Figura 3.12 .).

    El sistema debe detener todo mientras efecta la compactacin, lo que puede afectar los tiempos de

    respuesta.

    Implica la relocalizacin (reubicacin) de los procesos que se encuentran en la memoria.

    Una alta carga de trabajo significa mayor frecuencia de compactacin que aumenta el uso de recursos.

    Estrategias de Colocacin de la memoria

    Se usan para determinar el lugar de la memoria donde sern colocados los programas y datos que van

    llegando y se les clasifica de la siguiente manera:

    Estrategia de mejor ajuste: Un trabajo nuevo es colocado en el agujero en el cual quepa de forma ms ajustada. Debe dejarse el menor espacio sin usar.

    Estrategia de primer ajuste: Un trabajo nuevo es colocado en el primer agujero disponible con tamao suficiente para alojarlo.

    Estrategia de peor ajuste: Consiste en colocar un programa en el agujero ms grande posible. El agujero restante es grande como para poder alojar a un nuevo programa.

    Multiprogramacin con Intercambio de Memoria

    Los programas de usuario no requieren estar en memoria principal hasta su finalizacin.

    Una variante consiste en que un trabajo se ejecuta hasta que ya no puede continuar:

    Cede la memoria y el cpu al siguiente trabajo.

    La totalidad de la memoria se dedica a un trabajo durante un breve perodo de tiempo.

    Los trabajos son intercambiados, dndose que un trabajo puede ser intercambiado varias veces antes de llegar a su terminacin.

    Es un esquema razonable y eficiente para un nmero relativamente reducido de procesos.

    Los sistemas de intercambio fueron los predecesores de los sistemas de paginacin.

    El rendimiento de los sistemas de intercambio mejora al reducir el tiempo de intercambio:

    Manteniendo al mismo tiempo varias imgenes de usuario o imgenes de memoria en la memoria principal. (swap in)

  • 13

    13

    Retirando una imagen de usuario de la memoria principal solo cuando es necesaria su memoria para una nueva imagen. (swap out)

    Incrementando la cantidad de memoria principal disponible en el sistema.

    Las imgenes de usuario (imgenes de memoria) retiradas de la memoria principal se graban en la memoria secundaria.

    3.3 Organizacin de memoria virtual.

    Memoria virtual.- capacidad de direccionar un espacio de memoria mucho mayor que el disponible en la

    memoria primaria.

    Los mtodos ms comunes de implementacin son mediante:

    Tcnicas de paginacin.

    Tcnicas de segmentacin.

    Combinacin de ambas. Las direcciones generadas por los programas en su ejecucin no son necesariamente, las contenidas en la

    memoria primaria (real), ya que las direcciones virtuales suelen seleccionarse dentro de un nmero mucho

    mayor de direcciones que las disponibles dentro de la memoria primaria.

    3.3.1 Evolucin de las organizaciones de almacenamiento.

    Real: Sistemas dedicados a un usuario.

    Real: Sistemas de multiprogramacin en memoria real: o Multiprogramacin en particin fija:

    Absoluta. Relocalizable (reubicable).

    o Multiprogramacin en particin variable.

    Virtual: Multiprogramacin en memoria virtual: o Paginacin pura. o Segmentacin pura. o Combinacin paginacin / segmentacin.

    Conceptos Bsicos de Memoria Virtual

    La clave del concepto de memoria virtual est en la disociacin de:

    las direcciones a las que hace referencia un programa.

    las direcciones disponibles en la memoria real (primaria). Los principales conceptos son los siguientes:

    Direcciones virtuales: las referidas por un proceso en ejecucin.

    Direcciones reales: las disponibles dentro de la memoria primaria.

    Espacio de direcciones virtuales (v) de un proceso: nmero de direcciones virtuales que puede referenciar el proceso.

  • 14

    14

    Espacio de direcciones reales (r) de una computadora: nmero de direcciones reales disponibles en la computadora.

    Los procesos hacen referencia a direcciones virtuales pero stas deben ejecutarse en la memoria real:

    Las direcciones virtuales deben ser transformadas dentro de las direcciones reales, mientras el proceso est en ejecucin.

    La traduccin de direcciones deber hacerse rpidamente para no degradar al sistema. Existen varios medios para asociar las direcciones virtuales con las reales (Figura 3.13 .).

    La traduccin dinmica de direcciones (dat) convierte las direcciones virtuales en reales al ejecutarse el

    proceso.

    Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso no tienen por qu ser

    contiguas dentro de la memoria real, a esto se denomina contigidad artificial (Figura 3.14 .).

  • 15

    15

    29 mar

    3.3.2 Paginacin.

    La necesidad de asignar memoria en cantidades contiguas para cada programa es el mayor inconveniente para

    un buen aprovechamiento de la misma. La paginacin es una tcnica de gestin que permite asignar la

    memoria de forma discontinua. La memoria fsica se divide en trozos de tamao fijo llamados frames y la

    lgica en bloques de igual tamao llamados pginas. El sistema operativo mantiene una tabla de pginas

    donde relaciona cada pgina cargada en memoria con el frame que la contenga o sea su direccin inicial en

    memoria real.

    Cada direccin que genera el CPU ser interceptada y dividida en dos componentes, un nmero de pgina (p)

    y un desplazamiento en la pgina (d). Usando p como ndice, el gestor de memoria recorre la tabla de pginas

    hasta localizar dicha pgina, y a continuacin sumar d a la direccin de carga correspondiente obteniendo la

    direccin real.

    El tratamiento anterior exige que se realice por hardware.

    Cada programa se divide en pginas, y stas se cargan en frames libres que no tienen que ser contiguos.

    Administracin de la memoria.

    La paginacin es una forma de reasignar direcciones dinmicamente. El sistema analiza cada nuevo trabajo

    que se disponga a entrar para conocer el nmero de pginas que ocupa y buscar en su lista de frames libres

    un nmero igual de ellos. Si existen, cargar en ellos las pginas del programa y construir la correspondiente

    tabla de pginas actualizando la lista de frames libres. Cada trabajo en memoria tendr su propia tabla de

    pginas apuntadas por el pcb. As se logra evitar la fragmentacin externa ya que cualquier frame libre es

    asignable a un trabajo que lo necesite. Seguir existiendo fragmentacin interna porque generalmente los

    trabajos no ocupan el total de la pgina. Esta fragmentacin se reduce si la pgina tiene un tamao pequeo,

    pero se necesita una tabla de pginas mayor.

    Rendimiento. Memoria Cach. Registros asociativos.

    Para agilizar la conversin de direcciones el sistema mantiene en memoria la tabla de pginas de los trabajos

    activos y usa un registro especial llamado registro base, para indicar la direccin de la tabla de pginas del

    proceso en ejecucin. As cuando se conmute de un trabajo a otro se restaura la direccin de la tabla de

    pginas correspondiente.

    Para transformar cada direccin lgica (p,d) generada por el cpu en su direccin real, el sistema accede en

    primer lugar a la tabla de pgina correspondiente (registro base + p) y despus a la direccin real (frame + d).

    As cada direccin provoca dos accesos a memoria y se duplican los tiempos de ejecucin. Se mejora el uso

    de la memoria pero los procesos son ms largos.

    Para resolver esto se recurre a memorias pequeas de muy alta velocidad (muy caras) donde se puedan

    mantener las entradas a las tablas de pginas ms usadas. Esta memoria (cach) es similar a la principal pero

    con menor tiempo de acceso y con eso se reduce el retraso producido por la paginacin.

  • 16

    16

    En sistemas pequeos, con tablas de pginas de pocas entradas se usa un conjunto de registros hardware para

    contener dichas tablas (registros asociativos).

    Pginas compartidas.

    La paginacin permite que varios procesos compartan pginas en memoria. Esto es bueno para los sistemas de

    tiempo compartido. Imaginemos un sistema con 20 usuarios que usan un editor de textos, en el sistema se

    cargar una sola vez el programa correspondiente y ste ser usado por todos ellos aunque los datos sean

    propios de cada uno. Cada usuario contendr en su tabla de pginas las entradas correspondientes al editor,

    apuntando todas ellas a los mismos frames y a distintos para los datos.

    Es comn usar pginas compartidas, su contenido debe permanecer inalterado y tener cdigo reentrante

    (durante la ejecucin no se altera ningn valor interno).

    Si el contenido de las pginas compartidas no debe modificarse, deben protegerse contra todo intento de

    escritura. Se necesita un sistema de proteccin de pginas en memoria que controle las direcciones a las que

    se puede acceder y el modo en que se hace dicho acceso. Para ello se aaden a las entradas de la tabla de

    pginas una serie de bits de proteccin (direccin de la pagina), el esquema de proteccin se complementa

    con otro bit por entrada de la tabla de pginas llamado bit de validez (modo r o w).

    3.3.3 Segmentacin.

    La segmentacin es una tcnica distinta de gestin de memoria que pretende acercarse ms al punto de vista

    del usuario.

    Los programas se desarrollan, generalmente, en torno a un programa principal desde el que se bifurca a otras

    partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc.).

    Desde este punto de vista, un programa es un conjunto de componentes lgicos de tamao variable o un

    conjunto de segmentos, es decir, el espacio lgico de direcciones se considera como un conjunto de

    segmentos, cada uno definido por su tamao y un nmero.

    La segmentacin de un programa la realiza el compilador y en ella cada direccin lgica se expresar

    mediante dos valores: nmero de segmento (s) y desplazamiento dentro del segmento (d).

    Hardware de segmentacin.

    Puesto que la memoria fsica se direcciona linealmente, ser necesario transformar cada direccin lgica (s,d)

    en una direccin real (r). Esta conversin la realiza un dispositivo especial de hardware consultando la tabla

    de segmentos correspondiente.

    Rendimiento.

  • 17

    17

    Reduce la fragmentacin interna de la memoria provocada por la paginacin, ya que asigna a cada programa

    la cantidad de memoria que requiere.

    La carga de un programa en memoria exige la bsqueda de los huecos adecuados a sus segmentos y puesto

    que stos son de tamao variable, se ajustarn lo ms posible a las necesidades, producindose huecos

    pequeos. En este caso se produce fragmentacin externa.

    La eficacia de la segmentacin requiere, de igual forma que la paginacin, el uso de memorias cach para

    lograr unos tiempos de acceso adecuados.

    De igual forma que en la paginacin, se pueden compartir segmentos entre varios procesos.

    3.3.4 Sistemas de paginacin-segmentacin.

    Tanto la paginacin como la segmentacin, tienen ventajas e inconvenientes, y parece lgico intentar

    combinar ambas tcnicas para aprovechar sus caractersticas positivas.

    En todo sistema se define, por su arquitectura, un espacio mximo de direcciones lgicas, tamao mximo de

    cualquier programa que quiera ejecutarse, e implica un nmero de pginas. Por esto, algunos sistemas usan

    una tcnica de paginacin segmentada consistente en segmentar la tabla de pginas adecundola al tamao del

    programa. Para ello, mantiene una tabla de segmentos cuyas entradas indican la direccin de inicio de cada

    tabla de pginas y su tamao. Se usa un hardware especial.

    Otros sistemas optan por paginar los segmentos, es decir, usan segmentos cuyo tamao es un nmero entero

    de pginas. Esta tcnica se denomina segmentacin paginada.

    La tabla de segmentos de la segmentacin pura cambia de contenido y sus entradas ya no apuntan al inicio del

    segmento correspondiente indicando su tamao, sino que apuntan a una tabla de pginas del segmento

    indicando su longitud.

    De esta forma se evita la fragmentacin externa propia de la segmentacin, pues cualquier hueco ser de una

    pgina como mnimo, y por tanto usable para cualquier segmento que lo necesite.

    3.4 Administracin de memoria virtual.

    Los sistemas de gestin de la memoria vistos hasta ahora estn sujetos a la exigencia de que un programa,

    para ejecutarse, debe de estar cargado en memoria principal en su totalidad. Sin embargo, no todas las partes

    del programa se ejecutan a la vez.

    El programador disea rutinas que slo se ejecutan en determinadas circunstancias. Por ejemplo, las rutinas de

    error. As, no parece necesario que todo el programa est cargado en memoria para poder ser procesado.

    La memoria virtual es una tcnica de gestin que, combinando hardware y software, permite la ejecucin de

    programas parcialmente cargados en memoria real.

    Esta forma de trabajar aporta ventajas importantes:

    Si los programas se pueden ejecutar por partes, la memoria lgica puede ser mayor que la real disponible.

    Puesto que cada programa ocupa menos memoria real, se puede elevar el ndice de multiprogramacin, y por tanto, la eficiencia del sistema.

    Al cargar menos cantidad de cada programa, se necesitan menos operaciones de entrada/salida para las operaciones de carga e intercambio de los mismos.

    3.4.1 Estrategias de administracin.

    Las diferentes partes de un programa se van cargando en memoria a medida que se necesitan, y por ello, esta

    tcnica debe considerar tres aspectos importantes:

    Carga. Las porciones del programa se cargan cuando se necesiten (demanda) o se cargan por adelantado (anticipacin).

    Colocacin. Los sistemas de memoria virtual que utilicen segmentacin deben decidir, al cargar un nuevo segmento, si lo hacen en el hueco ms adecuado (best fit) o bien en el primero posible (first fit).

    Reemplazo. Lo normal ser que toda la memoria real est ocupada, y cuando se necesite cargar una nueva parte de un programa habr que reemplazar alguna de las existentes. Es importante definir la

    seleccin de la parte a reemplazar.

  • 18

    18

    Esta tcnica es difcil de llevar a la prctica. Los sistemas que la usan son complejos, pero a la vez, deben ser

    muy eficientes. De lo contrario, la ejecucin de los programas puede empeorar notablemente.

  • 19

    19

    30 mar

    3.4.2 Tcnicas de reemplazo de pginas.

    La tcnica de peticin de pginas permite reducir la memoria ocupada por cada programa durante su proceso.

    Todos los sistemas que usan la tcnica de memoria virtual sobreutilizan en mayor o menor medida la memoria

    fsica para obtener un mejor rendimiento. Para ello, deben hacerse algo ms complejos:

    Supongamos que uno de esos programas intenta acceder a una direccin cuya pgina no est en memoria. El

    hardware la intercepta y cede el control al sistema operativo que, despus de comprobar que es una direccin

    legal, la trata como una falta de pgina. Buscar un hueco en memoria. En este punto al analizar la lista de

    frames libres comprueba que no hay hueco disponible y, como responsable de la gestin de la memoria, debe

    resolver la situacin sin afectar al programa.

    Una posible solucin es sacar de memoria algn programa cargado y usar los frames que deja libres, pero esto

    lleva consigo una sobrecarga importante en la operacin de intercambio (swap).

    La solucin adoptada, generalmente, es sustituir alguna de las pginas cargadas (reemplazar pginas). Para

    ello, la rutina del sistema que gestiona la interrupcin de falta de pgina deber trabajar de la siguiente

    manera:

    Encontrar la pgina solicitada en el almacenamiento secundario.

    Encontrar un frame libre.

    Si existe, usarlo.

    Si no existe, usar un algoritmo de reemplazamiento para seleccionar la pgina a reemplazar.

    Salvar la pgina reemplazada en el almacenamiento secundario, actualizando las tablas afectadas.

    Llevar la pgina solicitada al frame libre y actualizar las tablas correspondientes.

    Algoritmos de reemplazamiento.

    El algoritmo ptimo ser aquel que seleccione la pgina que vaya a tardar ms en ser usada para sustiturla.

    Cuando se produce una falta de pgina, la memoria est ocupada por un grupo de pginas y una de ellas, la

    que provoc la falta, va a ser usada inmediatamente y, por tanto, no debe ser sustituida. De las otras, algunas

    se necesitarn al cabo de unas pocas instrucciones, otras al cabo de algunas ms. Es evidente que la mejor

    solucin es reemplazar la que tarde ms instrucciones en ser necesitada, ya que su ausencia tardar ms en

    hacerse sentir y durante ese intervalo pueden acabar otros procesos con la consiguiente liberacin de frames.

    La dificultad de esta solucin radica en la imposibilidad de prever el comportamiento futuro de los procesos,

    pero como en otras muchas situaciones de la vida cotidiana, se puede prever, en cierta medida dicho

    comportamiento, partiendo de la experiencia del pasado (heurstica), de las referencias a memoria que hasta el

    momento han realizado los procesos.

    Los algoritmos que se han ideado para controlar el reemplazamiento parten del uso pasado de las pginas para

    aproximarse a la solucin ptima. Su idoneidad quedar definida por dos factores: nmero de faltas de pgina

    que provoca y el costo de su uso (la sobrecarga que produce en el sistema).

    Un factor que condiciona el nmero de faltas de pgina es el nmero de frames disponibles en el hardware.

    En general, a ms frames menos faltas.

  • 20

    20

    Algoritmo FIFO (First In First Out).

    Es el ms sencillo. Cuando se necesite sustituir una pgina, se elegir aquella que lleve ms tiempo en

    memoria (primera en llegar, primera en salir).

    Para controlar el tiempo de permanencia en memoria de las pginas, este algoritmo usa una lista de llegada a

    memoria de las mismas. La primera de la fila ser aquella que lleve ms tiempo cargada y, segn el criterio

    FIFO, ser la primera en ser sustituida.

    Un criterio de seleccin tan simple es fcil de programar y a la vez producir poca sobrecarga en el sistema,

    pero su eficacia es relativa.

    No es improbable que la razn por la que una pgina lleve ms tiempo en memoria sea su mayor uso, y en ese

    caso, este algoritmo sustituir la pgina menos adecuada. Pensemos en un sistema de tiempo compartido con

    varios usuarios usando un editor de textos, compartiendo pginas del mismo. Normalmente sern stas las

    ms antiguas en memoria y, aunque su uso es muy alto, el criterio FIFO las reemplazar provocando

    inmediatamente una sucesin de falta de pginas. Es inadecuado para sistemas de tiempo compartido, pero

    puede ser til en entornos batch.

    Algoritmo LRU(Least Recently Used).

    Es una buena aproximacin a la solucin ptima, considerando que aquellas pginas muy usadas en el pasado

    reciente lo sern tambin en el futuro. En el mismo sentido, las pginas poco usadas en el pasado seguirn

    sindolo en el futuro, y se deber sustituir aquella que haya sido menos usada recientemente.

    En este caso, emplear el tiempo de uso es un criterio que refleja mucho mejor el comportamiento de los

    procesos en su uso de la memoria.

    Ponerlo en prctica es relativamente difcil, ya que el sistema debe contabilizar, de alguna forma, el tiempo en

    el que se produce cada referencia a memoria para poder clasificar las pginas segn su uso. Este control se

    puede realizar de varias maneras:

    Contadores de hardware. Incorpora un contador de referencias a memoria y aade un campo a las entradas de la tabla de pginas que pueda almacenar el valor del contador. Para resolver una falta de

    pgina, el sistema busca el valor del contador menor.

    Matrices de hardware. Si la computadora dispone de N frames, el hardware debe mantener una matriz de N*N bits puestos inicialmente a 0. Al accederse a una pgina K, el hardware pone a 1 todos los bits de

    la fila K y a 0 todos los bits de la columna K. La pgina menos usada recientemente es aquella cuya fila

    tenga el menor valor binario.

    Pilas (stack). Mantiene una pila de los nmeros de las pginas usadas. Cada vez que se usa una pgina, su nmero se coloca al principio de la pila. La pgina menos recientemente usada ser la del fondo de la

    pila.

    En todas estas opciones del algoritmo LRU se exige disponer de un hardware especial, y por ello, su

    aplicacin se limita a aquellas computadoras que dispongan de los elementos necesarios.

  • 21

    21

    Otros algoritmos.

    Dado lo difcil del LRU, se han tratado de encontrar algoritmos ms sencillos.

    Bit de referencia.- asociado a cada entrada de la tabla de pginas. Cada vez que se usa una pgina, el

    hardware activa el bit correspondiente (valor 1). Conforme se van usando las distintas pginas cargadas en

    memoria se activan sus bits de referencia y aquellas cuyos bits estn en 0, sern candidatas a ser

    reemplazadas. Los bits de referencia se restauran cada cierto tiempo (puesta a 0).

    Algoritmo menos frecuentemente usado (LFU-Least Frequently Used).- Asocia un contador a cada

    pgina, a intervalos regulares, se produce una interrupcin que pasa el control al sistema y ste aade al

    contador de cada pgina el valor del bit de referencia, poniendo despus a 0 todos los mencionados bits de

    referencia. Se sustituir la pgina cuyo valor del contador sea menor.

    En ocasiones, algunos algoritmos se complementan usando un bit de modificacin por cada pgina, indicando

    si el contenido de la misma ha variado (1) o no (0) desde que se carg en memoria. Se deben sustituir

    preferentemente aquellas pginas que no se hayan modificado, pues as se evita tener que salvar su contenido

    en el almacenamiento secundario, con el consiguiente ahorro en operaciones de entrada/salida.

    Criterios de reemplazamiento de pginas.

    Cualquiera de los algoritmos analizados puede ayudar a seleccionar la pgina a sustituir. Pero, entre qu

    pginas elegimos?, las del propio proceso o entre todas las existentes?

    En el primer caso hacemos una seleccin local o por proceso, en el segundo, lo haremos global o general.

    En la figura 7.28 tenemos tres procesos: A, B y C, ocupando la memoria con una serie de pginas. Al lado de

    cada una de ellas se especifica la edad o tiempo que cada una lleva en memoria. Supongamos que el proceso

    A necesita traer otra de sus pginas a memoria produciendo la correspondiente falta de pgina. Si aplicamos

    el criterio local de seleccin, la pgina sustituida ser la A3, y si se aplica el criterio global se sustituir la

    (B3).

    Asignacin de memoria.

    En el diseo de un sistema operativo se debe afrontar otro aspecto importante de la gestin de la memoria

    como lo es determinar cuntos frames asignar a cada proceso activo. La propia arquitectura de una

    computadora impone unos mnimos de asignacin por proceso, por tanto, el propio sistema debe asegurar a

    todo proceso un nmero mnimo de pginas en memoria (mnimo estructural).

    Si por cualquier razn un proceso se queda con menos frames de los indicados, el sistema deber suspenderlo

    y sacarlo (swap-out).

    Aunque el nmero de frames asignados a un proceso podr reducirse hasta ese mnimo, cualquier proceso

    generalmente usa un nmero mayor. Suponiendo que por su prioridad un proceso no pueda robarle frames a

    otros procesos, deber sustituir una de sus pginas activas provocando, casi inmediatamente, otra falta de

  • 22

    22

    pgina, y as sucesivamente. Esta situacin es la hiperpaginacin donde se consume ms tiempo paginando

    que procesando.

  • 23

    23

    31 mar

    Localidad de los procesos.

    Para evitar situaciones como las descritas, es necesario asignar a cada proceso el nmero de frames que

    necesite en cada momento de su ejecucin. El problema radica en cmo conocer ese nmero.

    Afortunadamente, el comportamiento de los procesos permite afrontar el problema, ya que todo programa est

    compuesto por varias partes o subrutinas de forma que su ejecucin se realiza por fases, una detrs de otra. En

    cualquier momento el proceso direcciona slo una pequea parte de sus pginas. Este comportamiento se

    conoce con el nombre de localidad de referencias de los procesos, y con su ayuda, podemos conocer el

    nmero mnimo de frames que requiere un proceso para evitar una situacin de hiperpaginacin.

    Frecuencia de falta de pgina.

    Una forma de controlar la asignacin de memoria y evitar situaciones no deseadas se basa en el control de la

    frecuencia con que un proceso produce faltas de pgina. Puesto que la hiperpaginacin se caracteriza por un

    gran nmero de dichas faltas, el objetivo es mantener la frecuencia de las mismas entre unos lmites

    preestablecidos.

    Si la frecuencia de faltas de pgina de un proceso sobrepasa el lmite superior, el sistema le asignar ms

    frames, y si cae por debajo del lmite inferior, indica que al proceso se le pueden reducir el nmero de frames

    asignados.

    La gestin de la memoria debe posibilitar tambin compartir pginas entre procesos y, para ello, dichas

    pginas debern llevar un indicativo que les asegure un tratamiento especial.

    3.4.3 Paginacin por demanda.

    Este es el esquema de carga ms comn cuando se usa la tcnica de memoria virtual. Su funcionamiento es

    similar al de un sistema de paginacin con intercambio.

    Ahora el algoritmo de intercambio no llevar a memoria todo el programa, sino que slo cargar aquellas

    pginas que se le pidan.

  • 24

    24

    Cuando el cpu genere una direccin que pertenezca a una pgina que no se encuentre en memoria , la buscar, y a continuacin, la traer a memoria desde el correspondiente dispositivo de memoria

    secundaria.

    El tratamiento de las faltas de pgina introduce un retraso adicional en la ejecucin de los programas y afecta

    por tanto al rendimiento general del sistema. El diseo del software necesario debe ser especialmente

    cuidadoso en este aspecto.

    3.4.4 Paginacin anticipada.

    El S. O. intenta predecir las pginas que un proceso va a necesitar y a continuacin precarga estas pginas

    cuando hay espacio disponible.

    Mientras el proceso ejecuta sus pginas actuales, el sistema carga pginas nuevas que estarn disponibles

    cuando el proceso las pida, debido a ello, el tiempo de ejecucin de un proceso se puede reducir.

    3.4.5 Liberacin de pgina.

    Un proceso usuario puede emitir una liberacin voluntaria de pgina para liberar el frame cuando ya no

    necesite esa pgina. Se puede eliminar el desperdicio y acelerar la ejecucin.

    El inconveniente es que la incorporacin de mandatos de liberacin de pginas dentro de los programas de

    usuario puede ser peligrosa y retrasar el desarrollo de aplicaciones.

    Los compiladores y S. O. deberan detectar automticamente situaciones de liberacin de pgina mucho

    antes de lo que es posible con estrategias de conjuntos de trabajo.

    3.4.6 Tamao de pgina.

    Decidir el tamao adecuado no es sencillo puesto que hay que equilibrar diversos factores:

    Generalmente la memoria real se divide en frames de tamao fijo.

    Los interrogantes tienen que ver con el tamao de las pginas, si todas las pginas tendrn igual tamao, si en

    caso de usar pginas de diferente tamao las pginas mayores deben ser o no mltiplos enteros de las

    menores, etc.

    Algunas consideraciones para determinar el tamao de pgina son las siguientes:

    Cuanto ms pequeo sea el tamao de una pgina, ms pginas y frames habr y mayores sern las tablas de pginas:

    o El desperdicio de memoria debido al tamao excesivo de las tablas de pgina se llama fragmentacin de tablas.

    o Esto indica la necesidad de pginas ms grandes.

    Con pginas grandes se paginarn hacia la memoria primaria grandes cantidades de informacin que nunca llegara a ser referenciada,:

    o Esto indica la necesidad de pginas ms pequeas.

    Debido a que las transferencias de e/s del disco (paginacin) consumen bastante tiempo, se debe minimizar la paginacin que un proceso requiera:

    o Esto indica la necesidad de pginas grandes.

    Los programas tienden a mostrar la propiedad de localidad de referencia y esta localidad tiende a ser pequea:

    o Esto indica la necesidad de pginas pequeas.

    Los procedimientos y datos rara vez comprenden un nmero entero de pginas, por lo que los sistemas de paginacin experimentan una fragmentacin interna:

    o El desperdicio promedio es de pgina no usada por grupo de pginas, que estar en la ltima pgina del grupo.

    o Esto indica la necesidad de pginas pequeas.

    Faltas de pgina. A mayor tamao de pgina se producirn menos faltas de pgina, reducindose la sobrecarga que conllevan.

    o Esto indica la necesidad de pginas grandes.