Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS OPERATIVOS I
Protección de memoria
o Impide que un programa acceda a la zona de memoria de otro programa
Compartición de memoria
o Permite que varios programas accedan a otros programas o datos comunes
Reubicación de programas en memoria principal
• Proceso de ejecución de un programa en código fuente
Código fuente ‐ ‐ > (Compilación) ‐ ‐ > Código objeto
Código objeto ‐ ‐ > (Enlace) ‐ ‐ > Ejecutable
Ejecutable ‐ ‐ > (Carga) ‐ ‐ > Programa en memoria (Ejecución)
Los mecanismos de paginación y segmentación del Sistema de Memoria Virtual implementa la reubicación dinámica.
EC - IS
Protección de memoria
• La memoria debe estar protegida para que un programa no pueda acceder directamente a la memoria de
otros programas
• Se utilizaron dos alternativas para implementar la protección:
1. Dos registros límite
o Cada vez que un programa genera una dirección se comprueba si es mayor que el
registro límite inferior y menor que el superior.
o De no ser así se genera una excepción
2. Un registro base y un registro límite
o Cuando se genera una dirección se comprueba si es menor que el registro límite.
o En caso de serlo, la dirección física se obtiene sumando el valor del registro base.
o De no ser así se genera una excepción.
N
O
Excepción de
direccionamiento
Los mecanismos de paginación y segmentación del Sistema de Memoria Virtual resuelven elproblema de la protección de memoria
Compartición de memoria
• Debe haber flexibilidad para permitir que varios programas accedan a un misma
zona de memoria para compartir código o para utilizar una misma estructura de
datos.
• Se trata de permitir que direcciones lógicas de dos o más programas,
posiblemente distintas entre sí, se correspondan con la misma dirección física.
• La compartición de memoria no debe comprometer su protección básica
• En un computador con memoria virtual (Mv) las direcciones de los programas (generadas
por la CPU) hacen referencia a un espacio mayor que el espacio físico realmente
disponible en la memoria principal o memoria física (Mp).
• Los programas operan virtualmente con un tamaño físico de memoria principal mucho
mayor que el realmente disponible.
• Hay que diferenciar entre el espacio de direcciones virtuales generado por la CPU y el
espacio de direcciones físicas o reales determinado por el tamaño de la memoria física.
• El espacio virtual se soporta sobre un disco con la ayuda de un mecanismo de traducción
que genera la dirección física de memoria principal a partir de la virtual.
• Si la palabra referenciada no está en Mp habrá que trasladar un bloque de Mv (disco) a Mp.
• Los sistemas de Mv pueden clasificarse atendiendo al tamaño del bloque que se
transfiere entre Mp y memoria secundaria:
1. Memoria virtual paginada: bloques de igual tamaño, la página
2. Memoria virtual segmentada: bloques de distinto tamaño, el segmento
3. Memoria virtual segmentada/paginada: segmentos de un número variable
de páginas
Esquema de funcionamiento de la memoria virtual
Protección de memoria con MV
un proceso)»
6
.
Al proceso de intercambiar páginas, segmentos o programascompletos
entre RAM y disco se le conoce como `intercambio' o `swapping'.
sistema operativo
P1
memoria P2
para usuarios
8
En la paginación, se debe cuidar el tamaño de las páginas, ya que si éstas son
muy pequeñas el control por parte del sistema operativo para saber cuáles
páginas están en RAM y cuales en disco, sus direcciones reales, etc; crece y
provoca mucha
`sobrecarga' (overhead). Por otro lado, si las páginas son muy grandes, el
overhead disminuye pero entonces puede ocurrir quese desperdicie memoria en
procesos pequeños. Debe haber un equilibrio.
8
Bit de validez + fallo de página
El fallo de página activa una rutina del SO, que hace losiguiente:
Página de 4KB
Espacio de direcciones virtual de 64KB (direcciones de 16 bits)
Espacio de direcciones físicas de 32KB
Desplazamiento
dentro de la
4k=212 12 bits
16-12=4bits Número de página
página
0010 000000000100
Dirección lógica:(8196)
Tabla de Páginas
Marco
1010
0011
0110
Marco de página
0110 000000000100
Dirección física: (24580)
Todo este procedimiento es caro, ya que se sabe que los accesos
a disco duro son del orden de decenas de veces más lentos que
en RAM. En el ejemplo anterior se mencionó que cuando se
necesita descargar una página de RAM hacia disco se debe de
hacer una elección. Para realizar esta elección existen varios
algoritmos, los cuales se describen enseguida.
La primera en entrar, primera en salir (FIFO First in, First Out ): Se
escoge la página que haya entrado primero y esté cargada en
RAM. Se necesita que en los valores de control se guarde un
dato de tiempo. No es eficiente porque no aprovecha ninguna
característica de ningún sistema. Es justa e imparcial.
30
Clase 2: La página ha sido referenciada, pero no ha sido
modificada.
Clase 3: La página ha sido referenciada y también modificada.
32
Contadores: En el caso más sencillo, se asocia cada entrada tabla
página un campo de tiempo-de-uso y se le agrega al CPU un reloj
lógico o contador. Este reloj es incrementado en cada referencia de
memoria. Siempre que se hace referencia a una página, el
contenido del registro del reloj es copiado al campo de tiempo-de-
uso en la tabla de páginas para esa página. De esta forma, siempre
se dispone del “tiempo” de la última referencia a cada página. La
página que se reemplaza es la del menor valor de tiempo. Este
esquema requiere de una búsqueda en toda la tabla de páginas
para encontrar la página LRU, y una escritura en memoria al campo
de tiempo-de-uso en la tabla de páginas por cada acceso a
33
memoria. Los tiempos también se deben de mantener cuando las
tablas de páginas son alteradas (debido a organización del CPU).
Se debe considerar la posibilidad de sobrecarga en el reloj.
34
LRU: ejemplo
La no usada frecuentemente NFU - Not Frequently Used : Este
algoritmo toma en cuenta no tanto el tiempo, sino el número de
referencias. En este caso cualquier página que se use muy
poco, menos veces que alguna otra.
Página Página
más F E D C B A más
reciente antigua
36
M.SC.
Se mantiene un contador software por cada página.
37
M.SC.
La menos frecuentemente usada LFU - least frequently used) : Es
parecida a la anterior, pero aquí se busca en forma exhaustivaaquella
página que se ha usado menos que todas las demás.
K
J L
I A
H B
G C
F D
E
38
M.SC.
Se mantiene un contador del número de referencias
39
M.SC.
En forma aleatoria: Elige cualquier página sin aprovechar
nada. Es justa e imparcial, pero ineficiente.
40
M.SC.
Segmentación pura
41
M.SC.
• El espacio de direcciones se divide en segmentos, cada uno de
los cuales corresponderá a una rutina (procedimiento, función), un
programa o un conjunto de datos (una entidad lógica). Todo
aquello que se corresponda con sub-espacio de direcciones
independientes.
42
M.SC.
Idea:descomponer el proceso en varios segmentos de
memoria (código, datos, pila...)
Con el hardware adecuado, podemos ubicar esos
segmentos en zonas de memoria no contiguas.
Podemos reducir bastante la fragmentación
T.seg. S1
S3
S2
43
M.SC.
Por ejemplo, en la versión de UNIX SunOS 3.5, no existían librerías
compartidas para algunas herramientas, por ejemplo, para los
editores de texto orientados al ratón y menús. Cada vez que un
usuario invocaba a un editor, se tenía que reservar 1 megabyte de
memoria. Como los editores son una herramienta muy solicitada y
frecuentemente usada, se dividió en segmentos para le versión 4.x
( que a su vez se dividen en páginas ), pero lo importante es que la
mayor parte del editor es común para todos los usuarios, de
manera que la primera vez que cualquier usuario lo invocaba, se
reservaba un megabyte de memoria como antes, pero para el
segundo, tercero y resto de usuarios, cada editor extra sólo
44
M.SC.
consumía 20 kilobytes de memoria. El ahorro es impresionante.
Obsérvese que en la segmentación pura las particiones de
memoria son de tamaño variable, en contraste con páginas de
tamaño fijo en la paginación pura. También se puede decir que la
segmentación pura tiene una granularidad menor que la
paginación por el tamanó de segmentos versus tamaño de
páginas.
45
M.SC.
Ejemplo 2:
46
M.SC.
47
M.SC.
IMPORTANTE:
48
M.SC.
Nuevamente, para comprender mejor la segmentación, se debe dar
un repaso a la forma en que las direcciones virtuales son traducidas
a direcciones reales. Prácticamente la traducción es igual que la
llevada a cabo en la paginación pura, tomando en consideración
que el tamaño de los bloques a controlar por la tablade traducción
son variables, por lo cual, cada entrada en dicha tabla debe
contener la longitud de cada segmento a controlar. Otra vez se
cuenta con un registro base que contiene la dirección del comienzo
de la tabla de segmentos. La dirección virtual se compone de un
número de segmento (s) y un desplazamiento ( d )para ubicar un
byte (o palabra ) dentro de dicho segmento. Es
49
M.SC.
importante que el desplazamiento no sea mayor que el tamaño del
segmento, lo cual se controla simplemente checando que ese valor
sea mayor que la dirección del inicio del segmento y menor que el
inicio sumado al tamaño.
50
M.SC.
51
M.SC.
Hardware de segmentación
Tabla de segmentos
(S)
límite base
S D
no
Excepción:
dirección ilegal
52
M.SC.
Una ves dada una dirección virtual v=( s,d ), se realiza la operación
b + s para hallar el registro (o entrada de la tabla de segmentos )
que contiene la dirección de inicio del segmento en la memoria real,
denotado por s'. Ya conociendo la dirección de inicio en memoria
real s' sólo resta encontrar el byte o palabra deseada, lo cual se
hace sumándole a s' el valor del desplazamiento, de modo que la
dirección real ® r = s' + d.
53
M.SC.
presencia o ausencia y dirección de inicio en memoria real del
segmento.
54
M.SC.
En Resumen:
55
M.SC.
Segmentación: beneficios
56
M.SC.
Segmentación: inconvenientes
57
M.SC.
58
M.SC.
Anomalía
59
M.SC.
60
M.SC.
Un hecho notable en los sistemas que manejan paginación es que
cuando el proceso comienza a ejecutarse ocurren un gran número de
fallos de página, porque es cuando está referenciado muchas
direcciones nuevas por vez primera, después el sistema se estabiliza,
conforme el número de marcos asignados se acerca al tamaño del
conjunto de trabajo.
61
M.SC.
62
M.SC.
En la figura anterior se muestra la relación entre el tiempo promedio
entre fallas de página y el número de marcos de página asignados
a un proceso. Allí se ve que el tiempo entre fallas decrece conforme
se le asignan más páginas al proceso. La gráfica se curva en un
punto, el cual corresponde a que el proceso tiene un número de
páginas asignado igual al que necesita para almacenar su conjunto
de trabajo. Después de eso, el asignarle a un proceso más páginas
que las de su conjunto de trabajo ya no conviene, ya que el tiempo
promedio entre fallas permanece sin mucha mejora.
63
M.SC.
Un aspecto curioso de aumentar el número de páginas a un
proceso cuando el algoritmo de selección de páginas candidatas
a irse a disco es la primera en entrar primera en salir es lallamada
`anomalía FIFO’ o `anomalía de Belady'. Belady encontróejemplos
en los que un sistema con un número de páginas igual a tres tenía
menos fallas de páginas que un sistema con cuatro páginas. El
ejemplo descrito es injusto. Si se mira con cuidado, obviamente si
se compara un sistema con 10 páginas contra otro de 5, ya de
inicio el primer sistema tendrá 5 fallos de página más que el de
5, porque se necesitan diez fallos para cargarlo. A esto debería
llamársele
`anomalía de Belady con corrección.
64
M.SC.
FIFO: anomalía de Bélády
Cadena de referencias: 3 2 1 0 3 2 4 3 2 1 0 4
65
M.SC.
Diferencias entre paginación y segmentación
Las páginas son de tamaño fijo, determinado por la arquitectura del sistema. Los
segmentos pueden ser de cualquier tamaño.
66
M.SC.
67
M.SC.
Sistemas combinados
68
M.SC.
Híbrido segmentado/paginado
• La paginación y la segmentación
pueden combinarse (ej. MULTICS, x86).
• Idea: aprovecharse de las ventajas que
ofrecen los esquemas por separado
Segmentación: flexibilidad y facilidad para la
organización lógica, compartición, protección…
Paginación: solución eficiente para la fragmentación
69
69
M.SC.
También es factible así el compartir segmentos a medida que las
partes necesitadas de los mismos se van referenciando (páginas).
Para comprender este esquema, nuevamente se verá cómo se
traduce una dirección virtual en una localidad de memoria real.
Para la paginación y segmentación puras se puede decir que el
direccionamiento es `bidimensional' porque se necesitan dos
valores para hallar la dirección real. Para el caso combinado, se
puede decir que se tiene un direccionamiento `tridimensional'. En
la figura 4.8 [ Deitel93] se muestran las partes relevantes para
lograr la traducción de direcciones. El sistema debe contar con una
tabla de procesos (TP). Por cada renglón de esa tabla se tiene un
70
M.SC.
número de proceso y una dirección a una tabla de segmentos. Es
decir, cada proceso tiene una tabla de segmentos. Cuando un
proceso hace alguna referencia a memoria, se consulta TP para
encontrar la tabla de segmentos de ese proceso. En cada tabla de
segmentos de proceso (TSP) se tienen los números de los
segmentos que componen a ese proceso. Por cada segmento se
tiene una dirección a una tabla de páginas. Cada tabla de páginas
tiene las direcciones de las páginas que componen a un solo
segmento. Por ejemplo, el segmento `A' puede estar formado por
las páginas reales `a','b','c','p' y `x'. El segmento `B' puede estar
compuesto de las páginas `f','g','j','w' y `z'.
71
M.SC.
Para traducir una dirección virtual v=(s,p,d) donde `s' es el
segmento, `p' es la página y `d' el desplazamiento en la página se
hace lo siguiente. Primero se ubica de qué proceso es el segmento
y se localiza la tabla de segmentos de ese proceso en la TP. Con
`s' como índice se encuentra un renglón (registro) en la tabla de
segmentos de ese proceso y en ese renglón está la dirección dela
tabla de páginas que componen al segmento. Una vez en la tabla
de páginas se usa el valor `p' como índice para encontrar la
dirección de la página en memoria real. Una vez en esa dirección
de memoria real se encuentra el byte (o palabra) requerido por
medio del valor de `d'.
72
M.SC.
Ing. M.SC. 73
Ahora, en este esquema puede haber dos tipos de fallos: por fallo
de página y por fallo de segmento. Cuando se hace referencia a
una dirección y el segmento que la contiene no está en RAM (
aunque sea parcialmente ), se provoca un fallo por falta de
segmento [Deitel93] y lo que se hace es traerlo del medio de
almacenamiento secundario y crearle una tabla de páginas. Una
vez caragado el segmento se necesita localizar la página
correspondiente, pero ésta no existe en RAM, por lo cual seprovoca
un fallo de página y se carga de disco y finalmente se puede ya
traer la dirección deseada por medio del desplazamiento de la
dirección virtual.
La eficiencia de la traducción de direcciones tanto en paginación
pura, segmentación pura y esquemas combinados se mejora
usando memorias asociativas para las tablas de páginas y
segmentos, así como memoria cache para guardar los mapeos más
solicitados.
85