User:Arguello41

MEMORIA VIRTUAL  O  SWAP

Es el espacio de intercambio es una zona del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap, del inglés "intercambiar".La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria virtual, que permite hacer creer a los programas que tienen más memoria que la disponible realmente; por ejemplo, 4 Gb en un ordenador de 32 bits. Como en realidad no se tiene físicamente toda esa memoria, algunos procesos no podrán ser ubicados en la memoria RAM. En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede buscar un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no utiliza memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la memoria RAM), pero permite dar la impresión de que hay más memoria disponible.

Asignación estática de memoria

consiste en el proceso de asignar memoria en tiempo de compilación antes de que el programa asociado sea ejecutado, a diferencia de la asignación dinámica o la automática donde la memoria se asigna a medida que se necesita en tiempo de ejecución.2 Una aplicación de esta técnica conlleva que un módulo de programa (por ejemplo función o subrutina) declara datos estáticos de forma local, de forma que estos datos son inaccesibles desde otros módulos a menos que se les pasen referenciados como parámetros o que les sean devueltos por la función. Se mantiene una copia simple de los datos estáticos, accesible a través de llamadas a la función en la cual han sido declarados. El uso de variables estáticas dentro de una clase en la programación orientada a objetos permite que una copia individual de tales datos se comparta entre todos los objetos de esa clase. Las constantes conocidas en tiempo de compilación, como literales de tipo cadena, se asignan normalmente de forma estática. En programación orientada a objetos, el método usual para las tablas de clases también es la asignación estática de memoria. También se denomina como 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. Las páginas sirven como unidad de almacenamiento de información y de transferencia entre memoria principal y memoria auxiliar o secundaria.

Cada marco se identifica por la dirección de marco, que esta en la posición física de la primera palabra en el marco de página.

PAGINACION POR DEMANDA Un sistema de paginación por demanda es similar a un sistema de paginación con intercambios. Los procesos residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo metemos en memoria. Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos un intercambiador perezoso. Un intercambiador perezoso nunca reincorpora una página a memoria a menos que se necesite. Como ahora consideramos un proceso como una secuencia de páginas, en vez de un gran espacio contiguo de direcciones, el término intercambio es técnicamente incorrecto. Un intercambiador manipula procesos enteros, mientras que un paginador trata con las páginas individualmente de un proceso

ADMINISTRACION DE MEMORIA MONOPROGRAMADA
=====

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. La gestión de la memoria de un S.O mono programado 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. Monoprogramados: Todos los recursos del ordenador están a disposición del único programa en ejecución. La memoria principal sólo alberga al sistema operativo y a dicho programa. La CPU ejecuta el programa desde su inicio hasta su fin ininterrumpidamente CONCEPTO DE PARTICIONES FIJAS Y VARIABLES Participación es un término que procede del vocablo latino partitĭo y que permite nombrar a la división o el repartimiento de algo. El verbo partir hace referencia a dividir, quebrar, fracturar o incluso compartir, según el contexto. Para la matemática, una partición es un recubrimiento en el que los subconjuntos que pertenecen a una misma familia son disjuntos (su intersección, de a pares, es vacía). El recubrimiento, por su parte, hace referencia a una colección de subconjuntos A de un conjunto X: es decir, la colección de dichos subconjuntos es un recubrimiento de X.

Otro uso del concepto de partición tiene lugar en la informática. La partición es el nombre que reciben las divisiones de una unidad física de almacenamiento de datos. Los sistemas operativos suelen interpretar cada partición de un disco rígido como un disco independiente, aún cuando se trate de divisiones virtuales de una misma unidad física. Entre las ventajas de trabajar con particiones se encuentra la posibilidad de realizar copias de seguridad de los datos en distintas particiones de un mismo disco y la instalación de dos sistemas operativos en una misma computadora.

¿Qué es una partición? Una partición es la forma en la que nosotros dividimos el disco duro para poder usarla. Lo más sencillo es dividirlo en una sola parte, es decir usando todo el espacio del disco duro. Pero esta división se puede hacer de múltiples maneras para usos distintos.

¿Por qué dividimos el disco en más de una partición? Los principales motivos, por los que se realizan las particiones en un disco duro suelen ser los siguientes:

- Instalación de más de un sistema operativo

- Tener una partición de sistema y otra de datos

- Tener una partición de recuperación de sistema

Tipos de particiones No es que existan múltiples tipos de particiones, pero aunque sean pocas tenemos que tener claro para que sirve cada una, o que limitaciones tienen respecto a otras, para poder hacer un uso correcto de ellas. Primaria Este tipo de partición es definida directamente sobre el disco duro y esta escrita en la tabla de particiones. En estas particiones es donde se instalan los sistemas operativos ya que prácticamente cualquier sistema operativo puede trabajar sobre ellas. Solo existe una limitación sobre estas particiones, y es que en un mismo disco duro solo puede haber 4 particiones primarias. Extendida Fue creada para poder tener más de 4 particiones en un disco. En teoría se pueden tener tantas como deseemos. El principal inconveniente es que no se puede instalar un sistema operativo sobre ella. Simplemente la podremos usar para almacenar datos. Además solo puede haber una partición de este tipo, aunque luego dentro de ella sí que podamos hacer las que queramos. Lógica Son las particiones que creamos dentro de la partición extendida. Simplemente a esta partición se le ha asignado un tamaño, un sistema de ficheros (ntfs,fat32,ext3...) y está lista para que la use el sistema operativo.

Particiones Fijas: El sistema de multiprogramación en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema. El trabajo está esperando la terminación de una operación E/S cederá la CPU a otro trabajo que esté listo para realizar cálculos. Si es que hay una espera. De esta forma pueden efectuarse simultáneamente las operaciones de E/S y cálculos de la CPU. La fragmentación de almacenamiento ase presenta en todos los sistemas de cómputo, sea cual sea la organización de su almacenamiento. En los sistemas con multiprogramación y particiones fijas, la fragmentación ocurre porque los trabajos de los usuarios no llenan por completo las particiones designadas o porque una partición se queda sin utilizar por ser demasiado pequeña para contener un trabajo en espera.

Particiones Variables: Esta hace suposiciones sobre el tamaño de los trabajos. Llega un espacio cuando lo necesite. No hay desperdicio, pues la partición de un trabajo tiene exactamente el tamaño del trabajo. La técnica de compactación del almacenamiento implica trasladar todas las áreas ocupadas del almacenamiento a algún extremo de la memoria principal. Esto deja un gran vació único de almacenamiento libre, en lugar de los numerosos vacíos pequeños característicos de la multiprogramación con particiones variables. Ahora todo el almacenamiento libre está contiguo, así que un trabajo en espera puede ejecutarse si sus necesidades de memoria son satisfechas por el hueco único resultante de la compactación.

Fragmentación Interna: Malgasta memoria principal. El espacio que se pierde en la partición da que el programa no llega a aprovechar el espacio de la partición.

Fragmentación Externa: Se produce cuando hay suficiente espacio libre pero no podemos asignar memoria a un proceso en espera porque las particiones vacías son muy pequeñas y las adecuadas no están vacías (en las particiones que los puedes juntar y tendrías espacios suficientes para ubicar otros procesos, pero que sin juntar estos espacios, no puedes inserta). Paginación y segmentación Permiten la ubicación no contigua de programas para combatir la fragmentación y la degradación de la memoria. Al poder ubicarse de forma no contigua, un programa ya no necesita un hueco de su tamaño, sino que la cantidad total de memoria libre sea mayor o igual. La ubicación no contigua requiere dividir los programas en trozos. En paginación, que es un caso particular del particionado fijo, el programa se divide en páginas del mismo tamaño. La segmentación, que es un caso particular de particionado variable, divide el programa en sus unidades lógicas (código, pila, datos, …), denominadas segmentos. Las direcciones lógicas de los programas no contiguos presentan una gran independencia de su ubicación física (direccionamiento virtual), proporcionada sobre la base de tablas de traducción de direcciones. Otra ventaja de los programas no contiguos es que facilita que varios programas compartan trozos entre ellos, por ejemplo el código, lo que permite un ahorro importante de memoria y de tiempo de carga.

Swapping
Es un mecanismo para mover programas entre memoria principal y secundaria, normalmente disco (dispositivo se swap). Con swapping, los programas pueden salir/entrar de/a memoria durante su tiempo de ejecución. Normalmente, un programa abandona la memoria para dejar espacio a otro. El swapping modifica el grafo de transición de estados de los procesos en un sistema multiprogramado, desdoblando los estados de bloqueado y preparado en dentro y fuera de memoria. La función del sistema operativo que gestiona el intercambio entre disco y memoria se denomina intercambiador o swapper. La operación de escribir el programa en disco se conoce como swap-out, mientras que leer el programa de disco se denomina swap-in. El swapping aporta las siguientes ventajas:

• Permite influir en la gestión de procesos para controlar el grado de multiprogramación (planificación a medio plazo).

• Proporciona flexibilidad en la gestión de la memoria, permitiendo una utilización más eficiente del espacio.

Para soportar swapping se requiere espacio para el intercambio en almacenamiento secundario, generalmente disco. Se puede utilizar un dispositivo específico independiente, una partición del disco, o incluso compartir la misma del sistema de ficheros. El direccionamiento de los programas debe ser relativo a un registro base (reubicación dinámica). El swapper establece el nuevo valor del registro base para un proceso cada vez que lo carga en memoria. El sacar un programa de memoria está motivado por la necesidad de obtener espacio libre, generalmente para ejecutar otro programa (quizás uno más prioritario). El swapper debe seleccionar cuidadosamente qué programas van a salir. Ya que, como hemos comentado, el swapping condiciona la planificación de procesos, algunos de los criterios a aplicar para seleccionar el proceso a sacar están relacionados con los parámetros de la planificación. Los criterios suelen ser:

• El estado del proceso. Los programas bloqueados no plantean una necesidad inmediata de proceso.

• La prioridad del proceso.

• El tamaño del programa. Los programas mayores liberan más espacio al salir de memoria, pero será más costoso cargarlos de nuevo3.

• El tiempo que el programa lleva en memoria.

Como veremos, en memoria virtual la paginación por demanda mitigará este problema. El sacar procesos bloqueados plantea problemas cuando la razón del bloqueo es una operación de entrada/salida que se realice por DMA sobre un buffer de usuario (típicamente una operación de leer o escribir). Hay dos alternativas: (a) Impedir el swap-out de los procesos con operaciones de DMA pendientes. (b) La entrada/salida se hace siempre sobre buffers del sistema (residentes). Como se verá en la gestión de dispositivos, esta solución aportará otras ventajas adicionales.