sábado, 16 de junio de 2012

Unidad III Administración de Memoria




ADMINISTRACIÓN DE MEMORIA

Memoria Real.

La memoria real o principal, es aquella memoria de un computador, donde se encuentra el código de instrucciones y los datos del programa, que se esta ejecutando.
La memoria principal se comunica con el procesador mediante el bus de direcciones. El ancho de este bus determina la capacidad que posea el procesador para el direccionamiento en memoria.
La memoria principal es el núcleo del sub-sistema de memoria de una computadora, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad superior.


 











Memoria Auxiliar.
La memoria auxiliar (memoria secundaria, almacenamiento secundario o memoria externa) es el conjunto de dispositivos y medios de almacenamiento, que conforman el sub-sistema de memoria de una computadora, junto a la memoria principal.
El proceso de transferencia de datos a un equipo de cómputo se le llama "procedimiento de lectura". El proceso de transferencia de datos desde la computadora hacia el almacenamiento se denomina "procedimiento de escritura".




Tipos de Almacenamiento




Magnético


 


Óptico

































  Magneto-Óptico




Electrónico
 


Memoria Virtual
Es una técnica de administración de la memoria real que permite al sistema operativo brindarle el software de usuario y a sí mismo un espacio de direcciones mayor que la memoria real.
Muchas aplicaciones requieren acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario.
La alternativa es usar memoria virtual, donde la combinación entre  hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 4 Gigabytes. Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.
Aunque la memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.


Segmentación
Es otra opción para el manejo de memoria ya que libera al programador de la tarea del control de tablas en expansión y contracción, de la misma forma que la memoria virtual elimina la preocupación por organizar el programa en una serie de proyectos.
Esto se puede lograr dotando a la máquina de varios espacios independientes de direcciones llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde o hasta cierto máximo. La longitud de cada segmento puede variar de o hasta un máximo permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general, longitudes distintas.

                         

El procedimiento para manejar un page fault

a. Verificar si la referencia a la página es valida (se utiliza una tabla interna (generalmente llevada en PCB) donde se indica las páginas validas.
b. Si la referencia no es valida, se cancela la ejecución del proceso.
c. Encontrar un frame disponible para cargarla (la página esta en disco)(por ejemplo de la free frame list)
d. Solicitar operación de I/O para leer la página de disco cargarla en el frame obtenido.
e. Modificar la tabla interna y la tabla de páginas para que ahora esta página figure como que esta en memoria.
f. Continuar con la ejecución del proceso en la instrucción en la que fue interrumpido.

Overlays

En un principio cuando los programas excedían la memoria disponible, el programador creaba OVERLAYS. Hoy día, el hardware y el SO se encargan de ello. Un overlay era una porción del programa definida por el programador, que era cargada (por el overlay anterior) hasta que se requería. Al finalizar, antes de ser desechado, cargaba el siguiente overlay (según una subrutina hecha por el programador)

Swapping.
Si en un sistema interactivo no es posible mantener a todos los procesos en memoria, se puede usar el disco como apoyo para extender la capacidad de la memoria: pasar procesos temporalmente a disco. Al hacer swapping, no es necesario guardar todo el espacio que tiene reservado, sino sólo el que está usando. Intercambio: 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.

Carga Dinámica.
La carga dinámica, un subconjunto de enlace dinámico, consiste en una biblioteca vinculada dinámicamente la carga y descarga en tiempo de ejecución por encargo. Dicha solicitud podrá ser implícita en tiempo de compilación o explícitamente en tiempo de ejecución. Peticiones implícitas se realizan en tiempo de compilación cuando un vinculador agrega referencias de la biblioteca que incluyen rutas de archivos o, simplemente, nombres de archivo. Las solicitudes se hacen explícitos cuando las aplicaciones hacer llamadas directas a API de un sistema operativo en tiempo de ejecución.

Su función principal es proteger la carga en memoria de un modulo hasta que el programa lo llame, como también tenemos el "Enlace dinámico" que es otro caso de carga dinámica, es aquel en el cual la biblioteca de código se enlazada cuando un determinado programa se ejecuta en posición contraria a un enlace estático que se produce en un tiempo de proceso de compilación. Este tipo de enlace tiene grandes ventajas, por ejemplo: hace que el programa sea más liviano y puede evitar las duplicaciones de código.



Enlace Dinámico
Un enlace dinámico es aquel en el cual una biblioteca de código es enlazada cuando un determinado programa se ejecuta (en oposición a un enlace estático, que se produce en tiempo de compilación). La ventaja de este tipo de enlace es que el programa es más liviano, y que evita la duplicación de código (por ejemplo, cuando dos programas requieren usar la misma biblioteca, se necesita sólo una copia de ésta)

Funciones del Administrador de Memoria.
Las principales funciones del Administrador de Memoria son las siguientes:
- Debe conocer qué zonas de la memoria están libres y qué zonas ocupadas.
- Introducir los procesos en memoria.
- Se encarga de asignar y desasignar memoria a los procesos conforme vayan necesitando y liberando.
- Debe controlar el intercambio entre Mp y Ms.


Técnicas de la Administración de Memoria.
Intercambio: 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 más 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.
Contigua simple: En un esquema de asignación de memoria contigua donde un proceso se ubica en su totalidad en posiciones consecutivas de memoria. El tamaño de los programas está limitado por la cantidad de memoria principal, pero se puede superar este límite con técnicas de recubrimientos: Si una sección particular del programa ya no es necesaria, se carga otra sección desde el almacenamiento secundario ocupando las áreas de memoria liberadas por la sección que ya no se necesita.
Particional: Esta forma de gestión consiste en dividir la memoria en varias zonas, pudiendo ser cada zona de un tamaño diferente. El tamaño de las zonas podrá ser modificado eventualmente por algún usuario responsable de la administración del ordenador.
Particional reasignable: Permite cambiar un proceso de partición en caso de ser necesario. (Reasignarlo)
(Concepto de registro de reasignación: El registro de relocalización contiene la dirección física más pequeña; el registro limite contiene el rango de las direcciones lógicas. Cada dirección lógica debe ser menor al registro limite)
Particiones Múltiples: Bloques de distintos tamaños están distribuidos en memoria. Cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle.
Partición dinámica: El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. Las estrategias más comunes para asignar algún hueco de la tabla son:
Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente.
Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente.
Peor ajuste: Asigna el hueco más grande.

Memoria paginada: 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.



Requerimientos especiales del Hardware y Software
Requerimientos de Hardware.
Los requerimientos de hardware son las características que debe tener el hardware de una computadora para poder soportar y/o ejecutar una aplicación o un dispositivo específicos. Contrasta con los requerimientos de software.

Los requerimientos pueden ser:
Requisitos de placa madre y de CPU.
Requisitos de memoria.
Requisitos de espacio disponible en disco duro.
Requisitos de monitor y adaptador de video.
Requisitos de unidades de CD, DVD, ratón, impresora, módem, tarjeta de red, puertos disponibles.

Requerimientos de Software:
Los requerimientos de software son las características que debe tener el software instalado en una computadora para poder soportar y/o ejecutar una aplicación o un dispositivo específicos. Contrasta con los requerimientos de hardware.

Los requerimientos de software pueden ser:
Requisitos de sistema operativo.
Requisitos de aplicaciones específicas instaladas.
Requisitos de ciertas aplicaciones no instaladas en el mismo sistema.
Requisitos de determinadas configuraciones en el sistema operativo o en ciertas aplicaciones.

Algoritmo
Un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso.
Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver mecánicamente problemas matemáticos o de otro tipo. Los algoritmos reciben una entrada y la transforman en una salida, comportándose como una caja negra. Sin embargo, para que un algoritmo pueda ser considerado como tal, debe ser determinista, eficiente, tener un número finito de instrucciones y debe acabar. Por determinista se entiende que, si se sigue el mismo proceso más de una vez, se llega siempre al mismo resultado; por eficiente, que el consumo de tiempo y memoria debe estar cercano o ser el menor posible.

Características:
Las características fundamentales que debe cumplir todo algoritmo son:
Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación.
Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.
Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.
Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.




Símbolos básicos del diagrama de flujo



Tasa de Rendimiento.
Es la que se espera obtener sobre una inversión; el promedio ponderado de la distribución de probabilidades de los resultados posibles.
La tasa de rendimiento se expresará en términos de porcentaje, y deberá indicar la cantidad de mercancías que se aprovechará y las mermas, subproductos y desperdicios, con indicación de sí estos últimos, son comercializables o no.

No hay comentarios:

Publicar un comentario