ADMINISTRACIÓN DE MEMORIA
Memoria Real.
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 |
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.
No hay comentarios:
Publicar un comentario