SlideShare una empresa de Scribd logo
ADMINISTRACION DE LA MEMORIA PRINCIPAL
En un sistema monoprogramado, la memoria principal se
divide en dos partes: una parte para el sistema operativo (monitor
residente, núcleo) y otra parte para el programa que se ejecuta
en ese instante. En un sistema multiprogramado, la parte de
"usuario" de la memoria debe subdividirse aún más para hacer
sitio a varios procesos. La tarea de subdivisión la lleva a cabo
dinámicamente el sistema operativo y se conoce como gestión de
memoria.
En un sistema multiprogramado resulta vital una gestión
efectiva de la memoria. Si sólo hay unos pocos procesos en
memoria, entonces la mayor parte del tiempo estarán esperando
a la E/S y el procesador estará desocupado. Por ello, hace falta
repartir eficientemente la memoria para meter tantos procesos
como sea posible.
Carga de programas en memoria principal
La tarea central de cualquier sistema de gestión de memoria es
traer los programas a memoria principal para su ejecución en el
procesador. En casi todos los sistemas multiprogramados
modernos, esta tarea supone un esquema sofisticado conocido
como memoria virtual. La memoria virtual está, a su vez, basada
en el uso de una de dos técnicas básicas; segmentación y/o
paginación. Antes de ver estás técnicas de memoria virtual, se
debe preparar el terreno considerando técnicas más simples que
no requieren el uso de memoria virtual. Una de estas técnicas, la
partición, se ha venido usando con distintas variantes en algunos
sistemas operativos ahora obsoletos. Las otras dos técnicas, la
paginación simple y la segmentación simple, no se usan en
solitario. No obstante, el estudio de la memoria virtual resultará
más sencillo si se consideran en primer lugar estas dos técnicas,
sin tener en cuenta la memoria virtual.
Paginación
Tanto las particiones de tamaño fijo como las de tamaño variable
hacen un uso ineficiente de la memoria; las primeras generan
fragmentación interna, mientras que las segundas originan
fragmentación externa. Supóngase, no obstante, que la memoria
principal se encuentra particionada en trozos iguales de tamaño
fijo relativamente pequeños y que cada proceso está dividido
también en pequeños trozos de tamaño fijo y del mismo tamaño
que los de memoria. En tal caso, los trozos del proceso,
conocidos como páginas, pueden asignarse a los trozos libres de
memoria, conocidos como marcos o marcos de página. En este
apartado se verá que el espacio malgastado en memoria para
cada proceso por fragmentación interna consta sólo de una
fracción de la última página del proceso. Además, no hay
fragmentación externa.
En un instante dado, algunos de los marcos de memoria están en
uso y otros están libres. El sistema operativo mantiene una lista
de los marcos libres. El proceso A, almacenado en disco, consta
de cuatro páginas. Cuando llega el momento de cargar este
proceso, el sistema operativo busca cuatro marcos libres y carga
las cuatro páginas del proceso A en los cuatro marcos. El
proceso B, que consta de tres páginas y el proceso C, que consta
de cuatro, se cargan a continuación. Más tarde, el proceso B se
suspende y es expulsado de memoria principal. Después, todos
los procesos de memoria principal están bloqueados y el sistema
operativo tiene que traer un nuevo proceso, el proceso D, que
consta de cinco páginas.
Supóngase ahora, como en este ejemplo, que no hay suficientes
marcos sin usar contiguos para albergar al proceso. ¿Impedirá
esto al sistema operativo cargar D? La respuesta es negativa,
puesto que se puede emplear de nuevo el concepto de dirección
lógica. Ya no será suficiente con un simple registro base. En su
lugar, el sistema operativo mantiene una tabla de páginas para
cada proceso. La tabla de páginas muestra la posición del marco
de cada página del proceso. Dentro del programa, cada dirección
lógica constará de un número de página y de un desplazamiento
dentro de la página. Recuérdese que, en el caso de la partición
simple, una dirección lógica era la posición de una palabra
relativa al comienzo del programa; el procesador realizaba la
traducción a dirección física. Con paginación, el hardware del
procesador también realiza la traducción de direcciones lógicas a
físicas. Ahora, el procesador debe saber cómo acceder a la tabla
de páginas del proceso actual. Dada una dirección lógica
(número de página, desplazamiento), el procesador emplea la
tabla de páginas para obtener una dirección física (número de
marco, desplazamiento).
Segmentación
Otro modo de subdividir el programa es la segmentación. En este
caso, el programa y sus datos asociados se dividen en un
conjunto de segmentos. No es necesario que todos los seg-
mentos de todos los programas tengan la misma longitud,
aunque existe una longitud máxima de segmento. Como en la
paginación, una dirección lógica segmentada consta de dos
partes, en este caso un número de segmento y un
desplazamiento.
Como consecuencia del empleo de segmentos de distinto
tamaño, la segmentación resulta similar a la partición dinámica.
En ausencia de un esquema de superposición o del uso de
memoria virtual, sería necesario cargar en memoria todos los
segmentos de un programa para su ejecución. La diferencia, en
comparación con la partición dinámica, radica en que, con
segmentación, un programa puede ocupar más de una partición y
éstas no tienen por qué estar contiguas. La segmentación elimina
la fragmentación interna, pero, como la partición dinámica, sufre
de fragmentación externa. Sin embargo, debido a que los
procesos se dividen en un conjunto de partes más pequeñas, la
fragmentación externa será menor.
Mientras que la paginación es transparente al programador, la
segmentación es generalmente visible y se proporciona como
una comodidad para la organización de los programas y datos.
Normalmente, el programador o el compilador asignan los
programas y los datos a diferentes segmentos. En aras de la
programación modular, el programa o los datos pueden ser
divididos de nuevo en diferentes segmentos. El principal
inconveniente de este servicio es que el programador debe ser
consciente de la limitación de tamaño máximo de los segmentos.
Memoria virtual.
La memoria virtual permite una multiprogramación muy efectiva y
releva al usuario de las rígidas e innecesarias restricciones de la
memoria principal.
Las ventajas de la memoria virtual son importantes. La cuestión
es: ¿Funcionará este esquema? En un primer momento, se
produjo un gran debate sobre este punto, pero la experiencia con
numerosos sistemas operativos demuestra más allá de cualquier
duda que la memoria virtual funciona. Por consiguiente, ha
llegado a ser un componente esencial de la mayoría de los
sistemas operativos actuales.
Para comprender cuál él es elemento clave y por qué la memoria
virtual generó tanto debate, se va a considerar de nuevo la labor
del sistema operativo con respecto a la memoria virtual.
Considérese un proceso grande formado por un programa largo y
un conjunto de series de datos. Durante un corto periodo, la
ejecución puede estar reducida a una pequeña sección del
programa (por ejemplo, una subrutina) y acceder sólo a una o
dos series de datos. Si esto es así, sería un claro desperdicio
cargar docenas de fragmentos para el proceso cuando se van a
usar sólo unos pocos antes de que pase a estar suspendido o se
descargue. Se puede aprovechar mejor la memoria cargando tan
sólo unos pocos fragmentos. Además, si el programa se bifurca a
una instrucción o hace referencia a datos de un fragmento que no
está en memoria, se producirá un fallo de página. Este fallo le
dice al sistema operativo que traiga el fragmento deseado.
Paginación
El término memoria virtual se asocia normalmente con sistemas
que emplean paginación, aunque también se puede usar
memoria virtual basada en la segmentación, que se tratará
después. El uso de la paginación en la memoria virtual fue
presentado por primera vez en el computador Atlas [KILB62] y
pronto alcanzó un uso comercial muy extendido.
En el estudio de la paginación simple se indicó que cada proceso
tiene su propia tabla de páginas y que, cuando carga todas sus
páginas en memoria principal, se crea y carga en memoria
principal una tabla de páginas. Cada entrada de la tabla de
páginas contiene el número de marco de la página
correspondiente en memoria principal. Cuando se considera un
esquema de memoria virtual basado en la paginación se necesita
la misma estructura, una tabla de páginas. Nuevamente, es
normal asociar una única tabla de páginas con cada proceso.
Segmentación
La segmentación permite al programador contemplar la memoria
como si constara de varios espacios de direcciones o segmentos.
Con memoria virtual, el programador no necesita pre-ocuparse de
las limitaciones de memoria impuestas por la memoria principal.
Los segmentos pueden ser de distintos tamaños, incluso de
forma dinámica. Las referencias a memoria constan de una
dirección de la forma (número de segmento, desplazamiento).
Paginación y Segmentación Combinadas
Tanto la paginación como la segmentación tienen sus ventajas.
La paginación, que es transparente al programador, elimina la
fragmentación externa y, de este modo, aprovecha la memoria
principal de forma eficiente. Además, puesto que los fragmentos
que se cargan y descargan de memoria principal son de tamaño
constante e igual para todos, es posible construir algoritmos de
gestión de memoria sofisticados que aprovechen mejor el
comportamiento de los programas, tal y como se verá. La
segmentación, que es visible para el programador, tiene las
ventajas antes citadas, incluida la capacidad de manejar
estructuras de datos que puedan crecer, la modularidad y el
soporte de la compartición y la protección. Para combinar las
ventajas de ambas, algunos sistemas están equipados con
hardware del procesador y software del sistema operativo que las
permiten.
En un sistema con paginación y segmentación combinadas, el
espacio de direcciones de un usuario se divide en varios
segmentos según el criterio del programador. Cada segmento se
vuelve a dividir en varias páginas de tamaño fijo, que tienen la
misma longitud que un marco de memoria principal. Si el
segmento tiene menor longitud que la página, el segmento
ocupará sólo una página. Desde el punto de vista del
programador, una dirección lógica también está formada por un
número de segmento y un desplazamiento en el segmento.
Desde el punto de vista del sistema, el desplazamiento del
segmento se ve como un número de página dentro del segmento
y un desplazamiento dentro de la página.

Más contenido relacionado

La actualidad más candente

Capitulo 9 Memoria Virtual
Capitulo 9 Memoria VirtualCapitulo 9 Memoria Virtual
Capitulo 9 Memoria Virtual
lagm000
 
Administración de la Memoria, organización y administración del almacenamient...
Administración de la Memoria, organización y administración del almacenamient...Administración de la Memoria, organización y administración del almacenamient...
Administración de la Memoria, organización y administración del almacenamient...
Javier Alvarez
 
Tatiana sanchez 1
Tatiana sanchez 1Tatiana sanchez 1
Tatiana sanchez 1
tatyseli
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
yurihils
 

La actualidad más candente (17)

Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Memoria virtual2
Memoria virtual2Memoria virtual2
Memoria virtual2
 
Memoria virtual - Exposicion
Memoria virtual - ExposicionMemoria virtual - Exposicion
Memoria virtual - Exposicion
 
Capitulo 9 Memoria Virtual
Capitulo 9 Memoria VirtualCapitulo 9 Memoria Virtual
Capitulo 9 Memoria Virtual
 
PAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIAPAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIA
 
Gestión de memoria
Gestión de memoriaGestión de memoria
Gestión de memoria
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Tema4
Tema4Tema4
Tema4
 
Administración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosAdministración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas Operativos
 
Administración de la Memoria, organización y administración del almacenamient...
Administración de la Memoria, organización y administración del almacenamient...Administración de la Memoria, organización y administración del almacenamient...
Administración de la Memoria, organización y administración del almacenamient...
 
Almacenamiento Real
Almacenamiento RealAlmacenamiento Real
Almacenamiento Real
 
Unidad 3 administracion de la memoria
Unidad 3 administracion de la memoriaUnidad 3 administracion de la memoria
Unidad 3 administracion de la memoria
 
Tatiana sanchez 1
Tatiana sanchez 1Tatiana sanchez 1
Tatiana sanchez 1
 
memoria virtual
memoria virtualmemoria virtual
memoria virtual
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Administracion de Memoria
Administracion de MemoriaAdministracion de Memoria
Administracion de Memoria
 
Capitulo3
Capitulo3Capitulo3
Capitulo3
 

Destacado (10)

Cpp filling blanc pur - PDF Cellglo.com
Cpp filling  blanc pur - PDF Cellglo.comCpp filling  blanc pur - PDF Cellglo.com
Cpp filling blanc pur - PDF Cellglo.com
 
Manual de transtornos_mentais_-_infantis
Manual de transtornos_mentais_-_infantisManual de transtornos_mentais_-_infantis
Manual de transtornos_mentais_-_infantis
 
Profile Payroll Outsourcing ASPL 02-03-15
Profile Payroll Outsourcing ASPL 02-03-15Profile Payroll Outsourcing ASPL 02-03-15
Profile Payroll Outsourcing ASPL 02-03-15
 
Italy group cards
Italy group cardsItaly group cards
Italy group cards
 
E learning beneficios limitaciones y tendencias
E learning beneficios limitaciones y tendenciasE learning beneficios limitaciones y tendencias
E learning beneficios limitaciones y tendencias
 
Comparación en plataformas e learning (tabla)
Comparación en plataformas e learning (tabla)Comparación en plataformas e learning (tabla)
Comparación en plataformas e learning (tabla)
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)
 
Takaful
TakafulTakaful
Takaful
 
Memorial do Convento narrador, espaço e tempo
Memorial do Convento narrador, espaço e tempoMemorial do Convento narrador, espaço e tempo
Memorial do Convento narrador, espaço e tempo
 
Spotify
SpotifySpotify
Spotify
 

Similar a Administracion de la memoria principal

Memoriavirtual
MemoriavirtualMemoriavirtual
Memoriavirtual
osjavier
 
Andres infante
Andres infanteAndres infante
Andres infante
andresinf
 
MEMORIA VIRTUAL
MEMORIA VIRTUALMEMORIA VIRTUAL
MEMORIA VIRTUAL
andresinf
 
Trabajo memoria virtual
Trabajo memoria virtualTrabajo memoria virtual
Trabajo memoria virtual
yuukikuran12
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
ZCHARRY
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
ZCHARRY
 

Similar a Administracion de la memoria principal (20)

Memoriavirtual
MemoriavirtualMemoriavirtual
Memoriavirtual
 
Memoriavirtual
MemoriavirtualMemoriavirtual
Memoriavirtual
 
Andres infante
Andres infanteAndres infante
Andres infante
 
MEMORIA VIRTUAL
MEMORIA VIRTUALMEMORIA VIRTUAL
MEMORIA VIRTUAL
 
Memoria
MemoriaMemoria
Memoria
 
Trabajo memoria virtual
Trabajo memoria virtualTrabajo memoria virtual
Trabajo memoria virtual
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Memoria virtual miguel
Memoria virtual miguelMemoria virtual miguel
Memoria virtual miguel
 
Memoria virtual 1
Memoria virtual 1Memoria virtual 1
Memoria virtual 1
 
Memoria virtual(Braulio E.Ramirez)
Memoria virtual(Braulio E.Ramirez)Memoria virtual(Braulio E.Ramirez)
Memoria virtual(Braulio E.Ramirez)
 
Gestion de particiones de memoria.ppt
Gestion de particiones de memoria.pptGestion de particiones de memoria.ppt
Gestion de particiones de memoria.ppt
 
Sistemas Operativos - Memoria
Sistemas Operativos - MemoriaSistemas Operativos - Memoria
Sistemas Operativos - Memoria
 
Memoria_Virtual
Memoria_VirtualMemoria_Virtual
Memoria_Virtual
 
Segmentacion de memoria
Segmentacion de memoriaSegmentacion de memoria
Segmentacion de memoria
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Memoria vitual
Memoria vitualMemoria vitual
Memoria vitual
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 

Más de jbersosa

Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
jbersosa
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
jbersosa
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
jbersosa
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper report
jbersosa
 
Continuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper reportContinuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper report
jbersosa
 

Más de jbersosa (20)

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standar
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Main
MainMain
Main
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Programación java1
Programación java1Programación java1
Programación java1
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistop
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacion
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Php
PhpPhp
Php
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una red
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper report
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
Continuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper reportContinuacion ejemplo de base de datos y reports con jasper report
Continuacion ejemplo de base de datos y reports con jasper report
 

Administracion de la memoria principal

  • 1. ADMINISTRACION DE LA MEMORIA PRINCIPAL En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte para el sistema operativo (monitor residente, núcleo) y otra parte para el programa que se ejecuta en ese instante. En un sistema multiprogramado, la parte de "usuario" de la memoria debe subdividirse aún más para hacer sitio a varios procesos. La tarea de subdivisión la lleva a cabo dinámicamente el sistema operativo y se conoce como gestión de memoria. En un sistema multiprogramado resulta vital una gestión efectiva de la memoria. Si sólo hay unos pocos procesos en memoria, entonces la mayor parte del tiempo estarán esperando a la E/S y el procesador estará desocupado. Por ello, hace falta repartir eficientemente la memoria para meter tantos procesos como sea posible. Carga de programas en memoria principal La tarea central de cualquier sistema de gestión de memoria es traer los programas a memoria principal para su ejecución en el procesador. En casi todos los sistemas multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como memoria virtual. La memoria virtual está, a su vez, basada en el uso de una de dos técnicas básicas; segmentación y/o paginación. Antes de ver estás técnicas de memoria virtual, se debe preparar el terreno considerando técnicas más simples que no requieren el uso de memoria virtual. Una de estas técnicas, la partición, se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos técnicas, la paginación simple y la segmentación simple, no se usan en solitario. No obstante, el estudio de la memoria virtual resultará más sencillo si se consideran en primer lugar estas dos técnicas, sin tener en cuenta la memoria virtual. Paginación
  • 2. Tanto las particiones de tamaño fijo como las de tamaño variable hacen un uso ineficiente de la memoria; las primeras generan fragmentación interna, mientras que las segundas originan fragmentación externa. Supóngase, no obstante, que la memoria principal se encuentra particionada en trozos iguales de tamaño fijo relativamente pequeños y que cada proceso está dividido también en pequeños trozos de tamaño fijo y del mismo tamaño que los de memoria. En tal caso, los trozos del proceso, conocidos como páginas, pueden asignarse a los trozos libres de memoria, conocidos como marcos o marcos de página. En este apartado se verá que el espacio malgastado en memoria para cada proceso por fragmentación interna consta sólo de una fracción de la última página del proceso. Además, no hay fragmentación externa. En un instante dado, algunos de los marcos de memoria están en uso y otros están libres. El sistema operativo mantiene una lista de los marcos libres. El proceso A, almacenado en disco, consta de cuatro páginas. Cuando llega el momento de cargar este proceso, el sistema operativo busca cuatro marcos libres y carga las cuatro páginas del proceso A en los cuatro marcos. El proceso B, que consta de tres páginas y el proceso C, que consta de cuatro, se cargan a continuación. Más tarde, el proceso B se suspende y es expulsado de memoria principal. Después, todos los procesos de memoria principal están bloqueados y el sistema operativo tiene que traer un nuevo proceso, el proceso D, que consta de cinco páginas. Supóngase ahora, como en este ejemplo, que no hay suficientes marcos sin usar contiguos para albergar al proceso. ¿Impedirá esto al sistema operativo cargar D? La respuesta es negativa, puesto que se puede emplear de nuevo el concepto de dirección lógica. Ya no será suficiente con un simple registro base. En su lugar, el sistema operativo mantiene una tabla de páginas para cada proceso. La tabla de páginas muestra la posición del marco de cada página del proceso. Dentro del programa, cada dirección lógica constará de un número de página y de un desplazamiento
  • 3. dentro de la página. Recuérdese que, en el caso de la partición simple, una dirección lógica era la posición de una palabra relativa al comienzo del programa; el procesador realizaba la traducción a dirección física. Con paginación, el hardware del procesador también realiza la traducción de direcciones lógicas a físicas. Ahora, el procesador debe saber cómo acceder a la tabla de páginas del proceso actual. Dada una dirección lógica (número de página, desplazamiento), el procesador emplea la tabla de páginas para obtener una dirección física (número de marco, desplazamiento). Segmentación Otro modo de subdividir el programa es la segmentación. En este caso, el programa y sus datos asociados se dividen en un conjunto de segmentos. No es necesario que todos los seg- mentos de todos los programas tengan la misma longitud, aunque existe una longitud máxima de segmento. Como en la paginación, una dirección lógica segmentada consta de dos partes, en este caso un número de segmento y un desplazamiento. Como consecuencia del empleo de segmentos de distinto tamaño, la segmentación resulta similar a la partición dinámica. En ausencia de un esquema de superposición o del uso de memoria virtual, sería necesario cargar en memoria todos los segmentos de un programa para su ejecución. La diferencia, en comparación con la partición dinámica, radica en que, con segmentación, un programa puede ocupar más de una partición y éstas no tienen por qué estar contiguas. La segmentación elimina la fragmentación interna, pero, como la partición dinámica, sufre de fragmentación externa. Sin embargo, debido a que los procesos se dividen en un conjunto de partes más pequeñas, la fragmentación externa será menor. Mientras que la paginación es transparente al programador, la segmentación es generalmente visible y se proporciona como una comodidad para la organización de los programas y datos. Normalmente, el programador o el compilador asignan los
  • 4. programas y los datos a diferentes segmentos. En aras de la programación modular, el programa o los datos pueden ser divididos de nuevo en diferentes segmentos. El principal inconveniente de este servicio es que el programador debe ser consciente de la limitación de tamaño máximo de los segmentos. Memoria virtual. La memoria virtual permite una multiprogramación muy efectiva y releva al usuario de las rígidas e innecesarias restricciones de la memoria principal. Las ventajas de la memoria virtual son importantes. La cuestión es: ¿Funcionará este esquema? En un primer momento, se produjo un gran debate sobre este punto, pero la experiencia con numerosos sistemas operativos demuestra más allá de cualquier duda que la memoria virtual funciona. Por consiguiente, ha llegado a ser un componente esencial de la mayoría de los sistemas operativos actuales. Para comprender cuál él es elemento clave y por qué la memoria virtual generó tanto debate, se va a considerar de nuevo la labor del sistema operativo con respecto a la memoria virtual. Considérese un proceso grande formado por un programa largo y un conjunto de series de datos. Durante un corto periodo, la ejecución puede estar reducida a una pequeña sección del programa (por ejemplo, una subrutina) y acceder sólo a una o dos series de datos. Si esto es así, sería un claro desperdicio cargar docenas de fragmentos para el proceso cuando se van a usar sólo unos pocos antes de que pase a estar suspendido o se descargue. Se puede aprovechar mejor la memoria cargando tan sólo unos pocos fragmentos. Además, si el programa se bifurca a una instrucción o hace referencia a datos de un fragmento que no está en memoria, se producirá un fallo de página. Este fallo le dice al sistema operativo que traiga el fragmento deseado. Paginación El término memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación, que se tratará
  • 5. después. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas [KILB62] y pronto alcanzó un uso comercial muy extendido. En el estudio de la paginación simple se indicó que cada proceso tiene su propia tabla de páginas y que, cuando carga todas sus páginas en memoria principal, se crea y carga en memoria principal una tabla de páginas. Cada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en memoria principal. Cuando se considera un esquema de memoria virtual basado en la paginación se necesita la misma estructura, una tabla de páginas. Nuevamente, es normal asociar una única tabla de páginas con cada proceso. Segmentación La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Con memoria virtual, el programador no necesita pre-ocuparse de las limitaciones de memoria impuestas por la memoria principal. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a memoria constan de una dirección de la forma (número de segmento, desplazamiento). Paginación y Segmentación Combinadas Tanto la paginación como la segmentación tienen sus ventajas. La paginación, que es transparente al programador, elimina la fragmentación externa y, de este modo, aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos que se cargan y descargan de memoria principal son de tamaño constante e igual para todos, es posible construir algoritmos de gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas, tal y como se verá. La segmentación, que es visible para el programador, tiene las ventajas antes citadas, incluida la capacidad de manejar estructuras de datos que puedan crecer, la modularidad y el soporte de la compartición y la protección. Para combinar las ventajas de ambas, algunos sistemas están equipados con hardware del procesador y software del sistema operativo que las
  • 6. permiten. En un sistema con paginación y segmentación combinadas, el espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador. Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página. Desde el punto de vista del programador, una dirección lógica también está formada por un número de segmento y un desplazamiento en el segmento. Desde el punto de vista del sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página.