ttteeemmmaaa 333 ars ssi iiss sttteeem …jo.delgado0003.eresmas.net/apuntes/smm/tema3.pdf · entre...

21
T T T E E E M M M A A A 3 3 3 S S S I I I S S S T T T E E E M M M A A A S S S O O O P P P E E E R R R A A A T T T I I I V V V O O O S S S . . . G G G E E E S S S T T T I I I Ó Ó Ó N N N D D D E E E M M M E E E M M M O O O R R R I I I A A A . . . 1 1 1 . . . I I I N N N T T T R R R O O O D D D U U U C C C C C C I I I Ó Ó Ó N N N 2 2 2 . . . M M M O O O D D D E E E L L L O O O S S S B B B Á Á Á S S S I I I C C C O O O S S S D D D E E E A A A S S S I I I G G G N N N A A A C C C I I I Ó Ó Ó N N N D D D E E E M M M E E E M M M O O O R R R I I I A A A 2 2 2 . . . 1 1 1 M M M O O O N N N O O O P P P R R R O O O G G G R R R A A A M M M A A A C C C I I I Ó Ó Ó N N N 2 2 2 . . . 2 2 2 M M M U U U L L L T T T I I I P P P R R R O O O G G G R R R A A A M M M A A A C C C I I I Ó Ó Ó N N N 2 2 2 . . . 2 2 2 . . . 1 1 1 M M M U U U L L L T T T I I I P P P R R R O O O G G G R R R A A A M M M A A A C C C I I I Ó Ó Ó N N N C C C O O O N N N P P P A A A R R R T T T I I I C C C I I I O O O N N N E E E S S S F F F I I I J J J A A A S S S 2 2 2 . . . 2 2 2 . . . 2 2 2 M M M U U U L L L T T T I I I P P P R R R O O O G G G R R R A A A M M M A A A C C C I I I Ó Ó Ó N N N C C C O O O N N N P P P A A A R R R T T T I I I C C C I I I O O O N N N E E E S S S V V V A A A R R R I I I A A A B B B L L L E E E S S S 2 2 2 . . . 2 2 2 . . . 3 3 3 A A A D D D M M M I I I N N N I I I S S S T T T R R R A A A C C C I I I Ó Ó Ó N N N D D D E E E L L L A A A M M M E E E M M M O O O R R R I I I A A A * * * A A A D D D M M M I I I N N N I I I S S S T T T R R R A A A C C C I I I Ó Ó Ó N N N D D D E E E L L L A A A M M M E E E M M M O O O R R R I I I A A A C C C O O O N N N M M M A A A P P P A A A D D D E E E B B B I I I T T T S S S * * * A A A D D D M M M I I I N N N I I I S S S T T T R R R A A A C C C I I I Ó Ó Ó N N N D D D E E E L L L A A A M M M E E E M M M O O O R R R I I I A A A C C C O O O N N N L L L I I I S S S T T T A A A S S S E E E N N N L L L A A A Z Z Z A A A D D D A A A S S S * * * A A A D D D M M M I I I N N N I I I S S S T T T R R R A A A C C C I I I Ó Ó Ó N N N D D D E E E L L L A A A M M M E E E M M M O O O R R R I I I A A A C C C O O O N N N T T T A A A B B B L L L A A A D D D E E E P P P A A A R R R T T T I I I C C C I I I O O O N N N E E E S S S / / / T T T A A A B B B L L L A A A S S S D D D E E E Á Á Á R R R E E E A A A S S S L L L I I I B B B R R R E E E S S S 3 3 3 . . . M M M E E E M M M O O O R R R I I I A A A A A A U U U X X X I I I L L L I I I A A A R R R 3 3 3 . . . 1 1 1 O O O V V V E E E R R R L L L A A A Y Y Y S S S 3 3 3 . . . 2 2 2 M M M E E E M M M O O O R R R I I I A A A V V V I I I R R R T T T U U U A A A L L L 3 3 3 . . . 2 2 2 . . . 1 1 1 P P P A A A G G G I I I N N N A A A C C C I I I Ó Ó Ó N N N 3 3 3 . . . 2 2 2 . . . 2 2 2 S S S E E E G G G M M M E E E N N N T T T A A A C C C I I I Ó Ó Ó N N N 3 3 3 . . . 2 2 2 . . . 3 3 3 S S S E E E G G G M M M E E E N N N T T T A A A C C C I I I Ó Ó Ó N N N / / / P P P A A A G G G I I I N N N A A A C C C I I I Ó Ó Ó N N N

Upload: docong

Post on 19-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

TTTEEEMMMAAA 333 SSSIIISSSTTTEEEMMMAAASSS OOOPPPEEERRRAAATTTIIIVVVOOOSSS... GGGEEESSSTTTIIIÓÓÓNNN DDDEEE MMMEEEMMMOOORRRIIIAAA...

111... IIINNNTTTRRROOODDDUUUCCCCCCIIIÓÓÓNNN

222... MMMOOODDDEEELLLOOOSSS BBBÁÁÁSSSIIICCCOOOSSS DDDEEE AAASSSIIIGGGNNNAAACCCIIIÓÓÓNNN DDDEEE MMMEEEMMMOOORRRIIIAAA

222...111 MMMOOONNNOOOPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN

222...222 MMMUUULLLTTTIIIPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN

222...222...111 MMMUUULLLTTTIIIPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN CCCOOONNN PPPAAARRRTTTIIICCCIIIOOONNNEEESSS

FFFIIIJJJAAASSS

222...222...222 MMMUUULLLTTTIIIPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN CCCOOONNN PPPAAARRRTTTIIICCCIIIOOONNNEEESSS

VVVAAARRRIIIAAABBBLLLEEESSS

222...222...333 AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA

*** AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA CCCOOONNN

MMMAAAPPPAAA DDDEEE BBBIIITTTSSS

*** AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA CCCOOONNN

LLLIIISSSTTTAAASSS EEENNNLLLAAAZZZAAADDDAAASSS

*** AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA CCCOOONNN

TTTAAABBBLLLAAA DDDEEE PPPAAARRRTTTIIICCCIIIOOONNNEEESSS /// TTTAAABBBLLLAAASSS DDDEEE ÁÁÁRRREEEAAASSS

LLLIIIBBBRRREEESSS

333... MMMEEEMMMOOORRRIIIAAA AAAUUUXXXIIILLLIIIAAARRR

333...111 OOOVVVEEERRRLLLAAAYYYSSS

333...222 MMMEEEMMMOOORRRIIIAAA VVVIIIRRRTTTUUUAAALLL

333...222...111 PPPAAAGGGIIINNNAAACCCIIIÓÓÓNNN

333...222...222 SSSEEEGGGMMMEEENNNTTTAAACCCIIIÓÓÓNNN

333...222...333 SSSEEEGGGMMMEEENNNTTTAAACCCIIIÓÓÓNNN /// PPPAAAGGGIIINNNAAACCCIIIÓÓÓNNN

111... IIINNNTTTRRROOODDDUUUCCCCCCIIIÓÓÓNNN Para gestionar el S.O la memoria principal del ordenador debe mantener una estructura de datos donde almacena la información sobre que zona de la memoria ocupa cada proceso, así como de las zonas de la memoria libres. De esta forma, cuando el S.O reciba una solicitud de creación de un proceso debe almacenar su código en una zona libre de la memoria (si hay) registrándose la zona de memoria que ocupa el nuevo proceso como ocupada. De igual forma, cuando un proceso finaliza hay que registrar que la zona de memoria que ocupaba queda como libre. (* DEBEREMOS DIFERENCIAR ENTRE SISTEMA MONOPROGRAMADO Y MULTIPROGRAMADO*)

La gestión de la memoria de un S.O monoprogramado es mucho más sencilla que la de uno multiprogramado, ya que en éste la memoria principal sólo es compartida por él y por el único programa en ejecución. En un S.O multiprogramado la Memoria Principal se comparte entre varios programas. La parte del S.O que se encarga de la gestión de la memoria se llama Administrador de la Memoria. Su labor es la de llevar el control de qué partes de la memoria están en uso y cuales no lo están, asignar memoria a procesos cuando la necesiten y retirárselas cuando terminen, y administrar el intercambio entre la MP y el disco cuando la MP no baste para contener todos los procesos. Ahora veremos los distintos esquemas de Administración de la Memoria desde la más simple hasta la más compleja.

222... MMMOOODDDEEELLLOOOSSS BBBÁÁÁSSSIIICCCOOOSSS DDDEEE AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA 222...111 MMMOOONNNOOOPPPRRROOOGGGRRRAAAMMMAAACCCIIIOOONNN

El esquema de Administración de la Memoria más simple posible consiste en tener un solo proceso en la memoria a la vez y en permitir que ese proceso use toda la memoria. La memoria se divide entre el S.O y un solo proceso de usuario:

222...222 MMMUUULLLTTTIIIPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN

Aunque la monoprogramación a veces se utiliza en ordenadores pequeños, rara vez se emplea en macrocomputadoras con múltiples usuarios. Las razones por las que se usa la multiprogramación son:

1. Para facilitar la programación de una aplicación dividiéndola en dos o

más procesos. 2. Para que los grandes ordenadores proporcionen servicio interactivo a

varias personas en forma simultánea. (Lo cual requiere tener más de un proceso en la memoria al mismo tiempo).

3. Porque la mayoría de los procesos pasan una fracción sustancial de su tiempo esperando a que termine la E/S del disco.

4. Para mejorar la utilización de la Unidad Central de Proceso (CPU), ya que cuando un proceso está en memoria no está todo el tiempo haciendo uso de la CPU.

222...222...111 MMMUUULLLTTTIIIPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN CCCOOONNN PPPAAARRRTTTIIICCCIIIOOONNNEEESSS FFFIIIJJJAAASSS

Para que la Memoria Principal pueda albergar más de un proceso,

ésta se divide en cierto número de partes posiblemente distintas y de tamaño constante.

Cuando llega un trabajo, éste se puede colocar en una lista de espera de entrada hasta que se tenga la menor partición posible, lo suficientemente grande para contenerlo. Cualquier espacio que no utilice un trabajo en una partición se pierde. La finalización del proceso libera la partición.

SISTEMA OPERATIVO

PROG. DE USUARIO

Se pueden tener listas de espera separadas para cada partición, pero la desventaja de ordenar los trabajos que llegan en listas de espera separadas se vuelve evidente cuando la lista de espera de una partición grande está vacía pero la de una partición pequeña está repleta.

Ej. Particiones Fijas con listas de Entrada separadas para cada partición.

Una organización alternativa consiste en conservar una sola lista de espera:

Ej. Particiones Fijas con una sola lista de espera única. En los sistemas con particiones fijas existen las denominadas:

Fragmentación interna: Desperdicio de la memoria porque el tamaño de la petición no se adapta a la de la partición, normalmente siendo el de la petición menor que el de la partición, y, dependerá del tamaño de los procesos que entren.

Fragmentación externa: Ante una petición de tamaño X, no se puede atender aunque exista memoria suficiente por pertenecer ésta a particiones diferentes.

Partición 3 Partición 2 Partición 1 S.O

Partición 3 Partición 2 Partición 1 S.O

La forma de controlar las particiones, es una estructura de datos: TABLA (control del uso de la memoria): Existe una fila por partición con la posición base, tamaño y estado (ocupada o no). 222...222...222 MMMUUULLLTTTIIIPPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN CCCOOONNN PPPAAARRRTTTIIICCCIIIOOONNNEEESSS VVVAAARRRIIIAAABBBLLLEEESSS En la práctica, las particiones fijas no son atractivas cuando la memoria es escasa porque una parte muy grande de ella es desperdiciada por programas que son menores que sus particiones. En su lugar se utiliza un algoritmo diferente para el manejo de la memoria: particiones variables. El tamaño de Memoria Principal ocupado por cada proceso es el exacto que éste solicita. (a) (b) (c) (d) (e) Entra Pa. EntraPb. Entra Pc. Entra Pd. Sale Pc Si quiere entrar un proceso con un tamaño mayor que cualquier hueco que queda libre aparecera un Problema: FRAGMENTACIÓN EXTERNA. Se produce un desperdicio de memoria debido a que quedan trozos de memoria pequeños y no contiguos, y que no pueden ser usados por otros programas por ser demasiado pequeños. Solución: * Fusión de huecos adyacentes: Dos huecos contiguos se unen en uno solo.

Esto se realiza en cada liberación de memoria, si es posible. * Compactación: Se desplazan todas las zonas ocupadas de memoria a uno de los extremos.

Inconvenientes:

* Consume recursos del sistema (tiempo de CPU). * Relocalización de los programas. * El sistema se detiene cuando se realiza la compactación. Tiempo de respuesta variable. * Si el cambio de trabajos es grande, es necesario compactar frecuentemente (Demasiado).

222...222...333 AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA (Para sistemas de particiones variables)

S.Pa.

S.Pa.

Pb.

S.Pa.

Pb.

S.OPa.

Pb.P P

P

S.OPa.

Pb. Hueco P

En términos generales existen tres maneras de llevar el control del uso de la memoria:

- Mapa de bits. - Listas enlazadas. - Tablas de particiones / tablas de áreas libres.

*** AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA CCCOOONNN MMMAAAPPPAAA DDDEEE BBBIIITTTSSS

Con un mapa de bits, la memoria se divide en unidades de asignación, quizás tan pequeñas como unas cuantas palabras y tal vez tan grandes como varios Kilobytes. En correspondencia con cada unidad de asignación hay un bit en el mapa de bits, que es 0 si la unidad está libre y 1 si está ocupada (o viceversa).

Ejemplo:

La elección del tamaño de la unidad de asignación es un aspecto

importante en el diseño. Cuanto menor es la unidad de asignación, tanto mayor es el mapa de bits. Si la unidad de asignación se escoge grande se puede desperdiciar memoria en la última unidad si el tamaño del proceso no es múltiplo exacto de asignación.

Problema: Cuando se haya decidido traer un proceso de ‘K’ palabras a la memoria,

el administrador de la memoria deberá buscar en el mapa de bits ‘K’ bits 0 consecutivos en el mapa y esta búsqueda es una operación lenta.

*** AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA CCCOOONNN LLLIIISSSTTTAAASSS EEENNNLLLAAAZZZAAADDDAAASSS...

Otra manera de llevar el control de la memoria es mediante conservación de una lista enlazada de segmentos de la memoria asignados y libres, donde un segmento es un proceso o una cavidad entre dos procesos.

Pa Pc H Pb H Pe H Pf

1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0

Mapa de Bits

Campos de la Lista : Ejemplo : 0K 3K 8K 11K 13K 17K 23K 25K 29K ........

Cuando los procesos y los huecos se conservan en una lista clasificada por dirección, se pueden emplear varios algoritmos para asignar memoria para un proceso recién creado o intercambiado. Se supone que el administrador de la memoria sabe cuánta memoria debe asignar.

Algoritmo del primer ajuste

El administrador de la memoria rastrea la lista de segmentos hasta que hay una cavidad que sea lo suficientemente grande. Después la cavidad se divide en 2 partes, una para el proceso y una para la memoria no usada, salvo en el caso improbable de un ajuste exacto. Es un algoritmo veloz porque busca en la lista lo menos posible.

Algoritmo del siguiente ajuste

Funciona igual que el de antes, salvo que la siguiente vez que es llamado éste empieza a buscar a partir de donde se quedó, en vez desde siempre el inicio, como lo hace el primer ajuste.

Algoritmo el que mejor se ajusta

Busca en toda la lista y toma la cavidad más pequeña que sea ocupada. Este algoritmo intenta hallar una cavidad que está próxima al tamaño real que se necesita.

Problema: Es más lento que los anteriores y da lugar a un mayor gasto de la memoria porque tiende a llenar la memoria con cavidades muy pequeñas sin utilizar.

Algoritmo el que peor se ajusta

Toma siempre la cavidad más grande disponible, de manera que la cavidad dividida sea lo suficientemente grande para ser útil.

Algoritmo de ajuste rápido Los huecos están agrupados por tamaños.

Proceso/hueco Dirección Base

Tamaño Puntero siguiente

Pa Pc H Pb H Pe H Pf

Pc 3 5 H 8 3 Pb11 2 Pa 0 3

*** AAADDDMMMIIINNNIIISSSTTTRRRAAACCCIIIÓÓÓNNN DDDEEE LLLAAA MMMEEEMMMOOORRRIIIAAA CCCOOONNN TTTAAABBBLLLAAA DDDEEE PPPAAARRRTTTIIICCCIIIOOONNNEEESSS /// TTTAAABBBLLLAAASSS DDDEEE ÁÁÁRRREEEAAASSS LLLIIIBBBRRREEESSS

En este tipo de estructuras existen dos tablas distintas: una para procesos/huecos y otra sólo para huecos. En la liberación de procesos por tanto se actualizan las dos tablas.

Tabla de particiones Nº partición Comienzo Tamaño Estado

Pa 40 60 Asignada Pb 100 100 Asignada Pc 200 30 Asignada 4 230 26 Libre

Tabla de Áreas Libre Nº partición Comienzo Tamaño Estado

1 230 26 Libre

El S.O. no se cuenta al contar el nº de particiones.

La búsqueda de espacio libre, comienza en la tabla de Áreas libre.

S.O.

S.O.

Pa = 60 K

Pb = 100K

Pc = 30 K

Hueco = 26

0K

40K

100K

200K

230K

256K

333... MMMEEEMMMOOORRRIIIAAA AAAUUUXXXIIILLLIIIAAARRR La Memoria Principal tiene capacidad limitada, lo que conlleva restricciones en cuanto:

a) Número de procesos que pueden estar en MP en ejecución concurrente. Se

presenta en los sistemas de multiprogramación y se resuelve con la técnica de swapping.

b) Limitar la capacidad del código de los programas que, en principio, no puede ser superior a la capacidad física de la memoria principal. Para resolver este problema existen dos soluciones:

- Overlays - Memoria virtual.

333...111 OOOVVVEEERRRLLLAAAYYYSSS

Antes con programas que eran muy grandes y no cabían en M.P, la solución que solía adoptarse consistía en dividir el programa en partes, llamadas superposiciones (overlays), formadas por módulos, cada uno de los cuales puede estar en más de una capa. La superposición 0 (overlay 0) empezaría primero su ejecución. Cuando terminara, llamaría a otro overlay (el S.O hacía el intercambio de overlays, los cuales estarían en disco) pero el programador era quien tenía que dividir el programa en pequeños módulos (overlays) lo que suponía un trabajo excesivo para el programador. (Con esta técnica solo estará en memoria las instrucciones y los datos necesarios a un mismo tiempo) 333...222 MMMEEEMMMOOORRRIIIAAA VVVIIIRRRTTTUUUAAALLL Permite a los usuarios hacer programas de una capacidad superior a la que físicamente tiene la computadora. Se basa en que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo de tiempo) están en direcciones muy próximas y en que los programas suelen estas redactados con gran linealidad, es decir, no suelen abundar los saltos entre posiciones de memoria distantes. Para implantarse utiliza técnicas como:

- Gestión de memoria por páginas. - Gestión de memoria Segmentada. --- Gestión de memoria segmentada –página.

333...222...111 PPPAAAGGGIIINNNAAACCCIIIÓÓÓNNN La mayoría de los sistemas de Memoria Virtual emplean una técnica

llamada paginación. Las direcciones generadas por el programa se llaman direcciones virtuales y forman el espacio de dirección virtual.

En un ordenador sin Memoria Virtual, la dirección virtual se coloca directamente en el bus de la memoria y se provoca que la palabra de la dirección virtual (que coincide con la dirección real) sea leida o escrita.

Cuando se usa Memoria Virtual las direcciones virtuales no pasan directamente al bus de la memoria. En su lugar, se dirigen a una Unidad de Administración de la Memoria (MMU) que es un chip o un conjunto de chips que transforma las direcciones virtuales en las direcciones de memoria física (M.P).

Además de la traducción deberá:

- Detectar si la dirección aludida esta en MP o no. - Generar una interrupción si se encuentra en disco.

La CPU envía direcciones virtuales a la MMU

La MMU envía direcciones físicas a la M.P BUS Ej. La CPU puede generar direcciones de 16 bits -> 216 = 64 KB (Programas de hasta 64 KB), sin embargo tenemos una MP de 32 KB. De manera que aunque pueden generarse programas de 64 KB, no pueden cargarse en la MP en su totalidad y ejecutarse, por lo que en disco deben estar una copia de la imagen del núcleo del programa (swapping). La traducción propiamente dicha deberá:

••• Detectar si la dirección aludida se encuentra en M.P o no. ••• Generar una interrupción si se encuentra en disco (fallo de página).

MEMORIA PRINCIPAL

CONTROLADORA DE DISCO

CPU

MMU

*** MMMEEECCCAAANNNIIISSSMMMOOOSSS BBBÁÁÁSSSIIICCCOOOSSS DDDEEE PPPAAAGGGIIINNNAAACCCIIIÓÓÓNNN La memoria virtual está dividida en bloques de tamaño fijo o páginas. La Memoria Real (M.P) está dividida en bloques de igual tamaño denominados marcos de páginas. Un mecanismo de paginación se encarga de establecer la correspondencia entre nº de página nº de marcos de página.

Para realizar la transformación de direcciones, se necesita mantener una

tabla por proceso (tabla de páginas) donde se almacenará para cada página: Páginas Nº de MarcoPresente PáginaModifi. Página Autorizado 1 10 1 1 Lectura 2 5 0 1 Lectura/Escrit. 3 15 1 0 Lectura Nº de Marco ---------> Nº de marco en el que está almacenada la página i (0..n) Presente Página ----> 1 La página se encuentra en M.P 0 La página no se encuentra en M.P. Modif. ----------------->Indica si se ha modificado dicha página después de su

carga en M.P o no. Autorizado -----------> Modelo de acceso autorizado a la página (leer, modificar....) Una tabla de páginas representa el contenido de una memoria virtual particular (cada proceso tendrá la suya propia). Deberá existir un registro de la CPU que almacene la dirección de comienzo de la tabla de páginas. Su valor formará parte del entorno volátil del proceso; se almacenará en el descriptor del proceso. Las tablas de páginas se encuentran en M.P en una zona del S.O. Reg. Base de la Tabla de Páginas (CPU) + Dirección Virtual = Dirección Real (M.P)

Memoria Secundaria

Memoria Principal

Página 0

D ha caído en la Página 2 Marco Pag. 0

Página 1

Marco Pag. 1

Página 2 d

Marco Pag. 2

Página 3

Marco Pag. 3

Páginas virtuales Marco Pag. 4 d

Marcos de página

Tabla de páginas. Nº Pág.ina

(NP) Nº Marco de

Memoria (NMP) 0 1 2 4 3

Si tengo una dirección lógica (D) y quiero convertirla en una dirección

física (Y), tendré que realizar los siguientes cálculos: NP = D div p (NP: Nº de página, p: tamaño de la página)

d = D mod p (d: dirección dentro de la página) Por tanto la conversión quedaría como:

Y = Tp[NP]*p + d ( Y: Dirección física)

(Tp : Valor de Marco para esa página dentro de la tabla) Ejemplo Una computadora usa páginas de 4Kb. Su tabla de páginas usa entradas de 3 bits cuya situación en un instante es la siguiente: NP 0 1 2 3 4 5 6 7 8 9

¿Cual es la dirección física generada para la dirección lógica 2989?

NP=D div p; 2989 div 4096=0 ==> MarcoPágina 010 (en

decimal T[0] = 2)

d=D mod p; 2989 mod 4096=2989 ==> Y = T[0] · 4096+2989 = 2 · 4096+2989= 11181

Nota : El operador div, se queda con la parte entera de la división.

Ante la interrupción de falta de página, el S.O deberá realizar las siguientes operaciones:

1. Bloquear el proceso. 2. Encontrar la ubicación en disco de la página solicitada. 3. Encontrar un marco de página libre en M.P 4. Efectuar la carga de página desde disco al marco de página anterior. 5. Desbloquear el proceso.

En cuanto al tamaño ideal de la página, debemos encontrar un tamaño

intermedio que dependa tanto del tamaño de los procesos, como en el gasto de entrada en la tabla de páginas. Esta tamaño normalmente es múltiplo de dos y lo elige el diseñador del S.O.,.

Ventajas Inconvenientes

Si es muy pequeño... nº de páginas elevado educe la fragmentación interna

Tabla con muchas entradas Búsquedas lentas.

Trasiegos entre M.P. y M.S. elevado

MP 010 001 110 000 100 011 000 000 000 101

Si es muy grande.......... Fragmentación interna aumenta Reduce entradas en la tabla Búsquedas más rápidas Menos trasiegos Ventaja de la M. Virtual:

Eliminación de la fragmentación externa.

Problema de la M. Virtual :

La velocidad de la M.P queda reducida a la mitad debido a que cada acceso a memoria conlleva un acceso adicional a la tabla de páginas, esto es:

1. Acceso a la M.P para ejecutar cierto proceso por la CPU. 2. Acceso a la Tabla de Páginas para obtener la dirección física de M.P.

Solución: Uso de memoria caché. Se emplea para albergar las filas de la tabla de páginas de los accesos más frecuentes. Debido a la propiedad de localización de los programas, su tamaño puede ser muy pequeño. Sólo en caso de fallo se consultará la tabla de páginas.

AAA cccooonnntttiiinnnuuuaaaccciiióóónnn cccooommmooo ssseee cccaaalllcccuuulllaaa,,, lllaaasss dddiiirrreeecccccciiiooonnneeesss eeennn pppaaagggiiinnnaaaccciiióóónnn:::

*** AAALLLGGGOOORRRIIITTTMMMOOOSSS DDDEEE SSSUUUSSSTTTIIITTTUUUCCCIIIÓÓÓNNN DDDEEE PPPÁÁÁGGGIIINNNAAASSS... Cuando ocurre una fallo de una página, el S.O tiene que escoger una página y retirarla de la M.P (swapp out) con el fin de dejar espacio para la página que tiene que traerse (swapp in). Si la página por ser retirada se ha modificado en su estancia en la M.P ésta debe rescribirse en el disco para actualizar la copia del disco. El sistema es más óptimo si se elige una página que no se ha utilizado en demasía.

FIFO El S.O conserva una lista de todas las páginas que están actualmente en M.P donde la página que está a la cabeza de la lista es la más antigua y la de la cola es la de más reciente ingreso. Al haber un fallo de página, la página que está a la cabeza se retira y se anexa la nueva en la cola de la lista. Ejemplo:

Sea la siguiente cadena de referencia de páginas de memoria. Suponer arranque en frío y que la máquina sólo admite 3 marcos de pagina. El algoritmo de reemplazo utilizado será el FIFO. Nota: Arranque en frío: Se denomina así cuando no existe ninguna página cargada en memoria. 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 Array

Páginas 7 0 1 2 2 3 0 4 2 3 0 0 0 1 2 2 2 7 0 1 Marco 1 7 0 1 1 2 3 0 4 2 3 3 3 0 1 1 1 2 7 0 Marco 2 7 0 0 1 2 3 0 4 2 2 2 3 0 0 0 1 2 7 Marco 3 * * * * * * * * * * * * * * * *

Interrupción

7 0 1 2 3 0 4 2 3 0 1 2 Página víctima

¿ Cuántas interrupciones por falta de página se han producido ? - 15 interrupciones. ¿ En el instante t=2, cuál es la situación de los marcos ? - 1, 0, 7. ¿ Y en el instante final ? - 1, 0, 7 ¿ Orden de salida ? 7 -> 0 -> 1 ¿ Cuál será el tiempo dedicado a las interrupciones (para una es de 2 ms) ?- 15 x 2 =30 ms.

Sustitución de página usada menos recientemente – LRU Cuando ocurre un fallo de página, se desecha la página que ha estado sin uso por el periodo de tiempo más largo. Para implementar completamente LRU se necesita conservar una lista enlazada de todas las páginas que están en memoria con la usada más recientemente en el frente y la usada menos recientemente en el fondo.

Ejemplo: Sea la siguiente cadena de referencia de páginas de memoria. Suponer arranque en frío y que la máquina sólo admite 3 marcos de pagina. El algoritmo de reemplazo utilizado será el LRU. 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 Array

Páginas 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 Marco 1

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 Marco 2 7 0 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1 7 Marco 3 * * * * * * * * * * * * *

Interrupción

7 1 2 3 0 4 1 3 2 Página víctima

¿ Cuántas interrupciones por falta de página se han producido ? - 12

interrupciones. Nota : Aquellas columnas en las que nos se produce interrupción, las páginas

que son referidas pasan como más usada a la parte más alta de la columna, reordenando las demás una posición después.

Algoritmo aleatorio

Se elige al azar una página. 333...222...222 SSSEEEGGGMMMEEENNNTTTAAACCCIIIÓÓÓNNN Consiste en utilizar un espacio de direcciones lógicas dividido en segmentos de distinto tamaño. Cada segmento de por sí, tiene sentido lógico, es decir, cada segmento representa una parte del programa. Los primeros segmentos de 64 KB podrían reservarse para procedimientos, datos, pilas y grupos que pertenecen al programa en ejecución. Los segmentos restantes podrán contener cada uno un archivo por segmento, de modo que los procesos pudieran direccionar en forma directa todos sus archivos, sin tener que abrirlos y utilizar primitivas especiales de E/S para leerlos y escribirlos. Ejemplo :

PROCESO 1

En este esquema de memoria, el encargado de realizar las transformaciones es el COMPILADOR.

Segmento 1 Zona de

declaraciones

Segmento 2 Zona de Datos

Segmento 3

Pila

Segmento 4 Procedimiento A

Al igual que en la paginación las direcciones lógicas son bidimensionales, es decir, con dos campos por dirección: DIR. LÓGICA (S,a) [ número de segmento (S) y dirección de dentro del segmento (a) ].

Para la conversión de las direcciones lógicas a direcciones físicas el compilador genera las tablas de segmentos (una tabla para cada proceso) que luego serán usadas por el S.O. para el direccionamiento.

CCCaaalllcccuuulllooo dddeee uuunnnaaa dddiiirrreeecccccciiióóónnn :::

333...222...333 SSSEEEGGGMMMEEENNNTTTAAACCCIIIÓÓÓNNN /// PPPAAAGGGIIINNNAAACCCIIIÓÓÓNNN Los sistemas que combinan la paginación con la segmentación ofrecen las ventajas de ambas técnicas de organización del almacenamiento virtual. Los segmentos tienen por lo general un tamaño múltiplo de páginas; no es necesario que todas las páginas de un segmento estén en almacenamiento primario a la vez, y las páginas que son contiguas en el almacenamiento virtual no son por fuerza contiguas en el almacenamiento real. Las direcciones son tridimensionales, y una dirección del almacenamiento virtual, v, se compone de un segmento, s, un número de página dentro del segmento p, y el desplazamiento dentro de la página donde se encuentra el elemento deseado, d.