GESTIÓN DE MEMORIA
Se trata de una de las partes del sistema operativo que está más ligada al hardware. Esta estrecha colaboración ha hecho que tanto el hardware como el software de gestión de memoria hayan ido evolucionando juntos. Las necesidades del sistema operativo han obligado a los diseñadores del hardware a incluir nuevos mecanismos que, a su vez, han posibilitado el uso de nuevos esquemas de gestión de memoria.
intercambio
Es dar cabida a la ejecución de mas aplicaciones de las que pueden residir simultáneamente en la memoria del sistema:
Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar mas memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código.
Fragmentación
La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentación externa.
La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera.
La fragmentación puede ser:
Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar mas memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código.
Fragmentación
La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentación externa.
La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera.
La fragmentación puede ser:
- Fragmentación Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua.
- Fragmentación Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la partición, pero no se utiliza.
La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero est a solo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.
Paginación
Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones físicas de igual tamaño, denominadas marcos de página. Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una página de información en cualquier marco de página.
Segmentación
Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa.
La segmentación permite alcanzar los siguientes objetivos:
La segmentación permite alcanzar los siguientes objetivos:
- Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
- Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.
- Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
- Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.
- Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.
Segmentación Paginada
Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente.
Para la segmentación se necesita que estén cargadas en memoria, áreas de tamaños variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible.
Para la segmentación se necesita que estén cargadas en memoria, áreas de tamaños variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible.
MEMORIA VIRTUAL
Si tanto la parte (página o segmento)
que contiene la siguiente instrucción a leer como la parte que contiene los próximos datos a acceder están en memoria
principal, la ejecución podrá continuar al menos por un tiempo.
Memoria Virtual y Cercanía de Referencias
Para comprender cuál el 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.
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.
Tamaño de Página
Un número mayor de páginas por proceso significa que las tablas de páginas serán mayores. Para
programas grandes, en un entorno multiprogramado intensivo, esto puede significar que una gran
parte de las tablas de páginas de los procesos activos deban estar en memoria virtual, no en
memoria principal. Así
pues, pueden suceder dos fallos de página para una única referencia a memoria: primero, para traer la parte necesaria de la tabla de páginas y, segundo, para traer la página del proceso.
pues, pueden suceder dos fallos de página para una única referencia a memoria: primero, para traer la parte necesaria de la tabla de páginas y, segundo, para traer la página del proceso.
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 extema 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 algo ritmos 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.
políticas de la memoria virtual
cada una de estas politicas cumple una determinada acción en un determinado momento no es necesario explicar puesto que algunas ya se han visto para mas información consultar el libro de Stallings_William
Politica De Lectura
Politica De Ubicacion
Politica De Reemplazo Local y Global
Politica De Vaciado
Politica De Reemplazo y tamaño cache
Politica De Asignacion
Politica Optima
GESTIÓN DE ARCHIVOS
Los archivos Tienen vida fuera de
cualquier aplicación individual que los utilice para entrada y salida. Los usuarios desean poder acceder a los archivos, guardarlos y mantener
la integridad de su contenido. Como ayuda a estos objetivos, virtualmente todos los sistemas de
computadores proporcionan sistemas específicos de gestión de ficheros. Normalmente, cada
sistema dispone de programas de utilidad que se ejecutan como aplicaciones privilegiadas. Sin
embargo, un sistema de gestión de archivos necesita como mínimo algunos servicios especiales del
sistema operativo.
Como máximo, el sistema de gestión de archivos por completo se considerará parte del sistema operativo. De este modo, es apropiado considerar por lo menos en el libro los elementos básicos de la gestión de archivos.
Como máximo, el sistema de gestión de archivos por completo se considerará parte del sistema operativo. De este modo, es apropiado considerar por lo menos en el libro los elementos básicos de la gestión de archivos.
• Campo
es el elemento de datos básico. Un campo
individual contiene un valor único, como el apellido de un empleado, una fecha o el valor leído por un sensor. Se
caracteriza por su longitud y por el tipo de datos (por ejemplo, una cadena ASCII o un número decimal). El contenido
de un campo es proporcionado por un usuario o por un programa. Dependiendo del diseño del
archivo, los campos pueden ser de tamaño fijo o variable.
• Registro
es una colección de campos relacionados que
pueden tratarse como una unidad en
algunos programas de aplicación. Por ejemplo, un registro "empleado" contendría campos tales como
nombre, número de DNI. categoría salarial, fecha de contratación, etc. También dependiendo del diseño,
los registros pueden ser de longitud fija o variable. Un registro es de longitud variable si algunos de sus
campos son de longitud variable o si el número de campos puede variar. En el último caso, cada campo
se acompaña normalmente de un nombre de campo.
algunos programas de aplicación. Por ejemplo, un registro "empleado" contendría campos tales como
nombre, número de DNI. categoría salarial, fecha de contratación, etc. También dependiendo del diseño,
los registros pueden ser de longitud fija o variable. Un registro es de longitud variable si algunos de sus
campos son de longitud variable o si el número de campos puede variar. En el último caso, cada campo
se acompaña normalmente de un nombre de campo.
• Archivo
es una colección de registros similares. Los
usuarios y las aplicaciones tratan al archivo como una entidad única y se refieren a él por un nombre. Los archivos tienen
nombres únicos y pueden crearse y borrarse. Las restricciones al control de accesos suelen aplicarse a
nivel de archivo. Es decir, en un sistema compartido, el acceso de los usuarios y los programas se
garantiza o deniega a archivos completos.
• Base de datos
es una colección de datos relacionados. El
aspecto fundamental de una base de
datos es que las relaciones que existen entre los elementos de datos son explícitas y que la base de datos está diseñada para ser usada por varias aplicaciones diferentes. Una base de datos puede contener toda la información relativa a una organización o proyecto, como un estudio científico o de mercado. La base de dalos consta de una o más clases de archivos.
datos es que las relaciones que existen entre los elementos de datos son explícitas y que la base de datos está diseñada para ser usada por varias aplicaciones diferentes. Una base de datos puede contener toda la información relativa a una organización o proyecto, como un estudio científico o de mercado. La base de dalos consta de una o más clases de archivos.
ORGANIZACIÓN Y ACCESO A ARCHIVOS
Un archivo consiste en una colección de
registros. Uno de los elementos clave de diseño del
sistema de archivos es la forma en que estos registros se organizan o estructuran. En esta sección
se emplea el término organización de archivos para referirse a la estructuración lógica de los
registros determinada por la forma en que se accede a ellos. La organización física de un archivo
en memoria secundaria depende de la estrategia de agrupación y de la estrategia de asignación de
archivos, cuestiones tratadas más tarde en este mismo capítulo.
sistema de archivos es la forma en que estos registros se organizan o estructuran. En esta sección
se emplea el término organización de archivos para referirse a la estructuración lógica de los
registros determinada por la forma en que se accede a ellos. La organización física de un archivo
en memoria secundaria depende de la estrategia de agrupación y de la estrategia de asignación de
archivos, cuestiones tratadas más tarde en este mismo capítulo.
Diversos criterios son importantes en la
elección de una organización de archivos:
• Acceso rápido para la recuperación
eficaz de información
• Facilidad de actualización para ayudar
a mantener la información al día
• Economía de almacenamiento para
reducir costes
• Mantenimiento sencillo para reducir
costes y la posibilidad de errores
• Fiabilidad para asegurar la confianza
en los datos
La
prioridad relativa de estos criterios dependerá de las aplicaciones que usará
el archivo.
ARCHIVOS PROYECTADOS
EN MEMORIA
Se trata por tanto de una forma alternativa de acceso a archivos, frente a las llamadas read/write. De esta forma se producen:
Menos llamadas al sistema lo que se traduce en una notable mejora de los tiempos de acceso.
Se evitan copias intermedias de la información ya que el S.O. transfiere directamente la información entre la región de memoria y el archivo.
SERVICIO DE GESTIÓN DE MEMORIA
Las labores que lleva a cabo el sistema de gestión de memoria son más bien de carácter interno. Debido a ello, este módulo apenas ofrece directamente servicios a las aplicaciones. PROYECTAR UN ARCHIVO: Permite incluir en el mapa de memoria de un proceso un archivo o parte del mismo. Con esta operación, se crea una región asociada al objeto de memoria almacenado en el archivo. Normalmente, se pueden especificar algunas propiedades de esta nueva región. Por ejemplo, el tipo de protección o si la región es privada o compartida.
DESPROYECTAR UN ARCHIVO: Eliminar una proyección previa o parte de la misma.
SERVIDOR MMAP
Las
páginas del mapa de la memoria) Es un método de archivo asignado en
memoria E / O. Como es natural, implementa la paginación por
demanda , ya que inicialmente el contenido del archivo no se lee desde el
disco por completo y no usar la memoria RAM física en absoluto.
CARGA Y MONTAJE
La aplicación está formada por una serie
de módulos compilados o ensamblados en forma de código objeto que se montan juntos para resolver las referencias
entre los módulos. Al mismo tiempo, se resuelven las referencias a rutinas de biblioteca. Las rutinas de
biblioteca pueden estar incorporadas en el programa o ser referenciadas como código compartido que debe
suministrar el sistema operativo en el momento de la ejecución. En este apéndice, se resumirán las
características clave de los montadores y cargadores. Por claridad de presentación, se comenzará con una
descripción de la tarea de carga cuando se dispone de un único módulo de programa y no se necesita
montaje.
Carga
En la carga del programa, se deben
satisfacer las necesidades de
direccionamiento mostradas en la figura 6.1. En general, se pueden aplicar tres métodos:
direccionamiento mostradas en la figura 6.1. En general, se pueden aplicar tres métodos:
• Carga absoluta
• Carga reubicable
• Carga dinámica en tiempo de ejecución
Carga absoluta
Carga absoluta
La carga absoluta necesita que el módulo
de carga ocupe siempre la misma posición de memoria
principal. Así pues, todas las referencias del módulo de carga para el cargador deben ser
direcciones específicas o absolutas en memoria principal.
principal. Así pues, todas las referencias del módulo de carga para el cargador deben ser
direcciones específicas o absolutas en memoria principal.
Carga reubicable
La desventaja de asociar las referencias
a memoria a direcciones específicas previas a la carga es que el módulo de carga resultante sólo puede situarse en una región de
memoria principal. Sin embargo, cuando varios programas comparten la memoria principal,
puede no ser conveniente decidir por adelantado en qué región de memoria debe cargarse un
módulo en
particular. Es mejor tomar esa decisión en el momento de la carga. Así pues, se necesita un módulo de carga que pueda ubicarse en cualquier posición de la memoria principal.
particular. Es mejor tomar esa decisión en el momento de la carga. Así pues, se necesita un módulo de carga que pueda ubicarse en cualquier posición de la memoria principal.
Para satisfacer este nuevo requisito, el
ensamblador o el compilador no generará direcciones reales de memoria principal (direcciones absolutas) sino dilecciones relativas
a algún punto conocido, tal como el comienzo del
programa. Esta técnica se ilustra en la figura.
Al comienzo del módulo de carga se le asigna la dirección relativa O y todas
las demás
referencias dentro del módulo se expresan en relación al comienzo del módulo. Con todas las referencias a memoria expresadas de forma relativa, situar los módulos en la posición deseada se convierte en una tarea sencilla para el cargador. Si el módulo va a ser cargado comenzando por la posición .r, el cargador simplemente sumará .r a cada referencia a memoria a medida que cargue el módulo en memoria. Para ayudar en esta tarea, el módulo de carga debe incluir información que indique al cargador dónde están las referencias a direcciones y cómo se interpretan (generalmente, de forma relativa al comienzo del programa, pero también es posible que sean relativas a algún otro punto del programa, como la posición actual). El compilador o el ensamblador prepara este conjunto de información que se conoce normalmente
referencias dentro del módulo se expresan en relación al comienzo del módulo. Con todas las referencias a memoria expresadas de forma relativa, situar los módulos en la posición deseada se convierte en una tarea sencilla para el cargador. Si el módulo va a ser cargado comenzando por la posición .r, el cargador simplemente sumará .r a cada referencia a memoria a medida que cargue el módulo en memoria. Para ayudar en esta tarea, el módulo de carga debe incluir información que indique al cargador dónde están las referencias a direcciones y cómo se interpretan (generalmente, de forma relativa al comienzo del programa, pero también es posible que sean relativas a algún otro punto del programa, como la posición actual). El compilador o el ensamblador prepara este conjunto de información que se conoce normalmente
como diccionario de re-ubicación.
Carga dinámica en tiempo de ejecución
Los cargadores con reubicación son
habituales y onecen ventajas obvias en relación con los cargadores absolutos. Sin embargo, en un entorno multiprogramado, incluso sin
memoria virtual, el esquema de carga reubicable resulta inadecuado. Se ha hecho referencia a la
necesidad de cargar y descargar las imágenes de procesos-de memoria principal para maximizar
la utilización del procesador. Para maximizar el uso de la memoria principal sería conveniente
volver a cargar una imagen de un proceso en posiciones diferentes para diferentes instantes de
tiempo. Así pues, un programa cargado puede ser expulsado a Digitalización con propósito académico disco y vuelto a cargar en una posición
distinta. Este procedimiento resultaría imposible si las referencias a memoria hubieran estado asociadas a direcciones absolutas en el
momento inicial
de carga.
El cálculo de direcciones dinámico
proporciona una completa flexibilidad. Un programa
puede cargarse en cualquier región de memoria principal. Más tarde, la ejecución del programa
puede interrumpirse y el programa ser descargado de memoria principal para ser posteriormente
cargado en una posición diferente.
puede cargarse en cualquier región de memoria principal. Más tarde, la ejecución del programa
puede interrumpirse y el programa ser descargado de memoria principal para ser posteriormente
cargado en una posición diferente.