sábado, 12 de septiembre de 2015

Particiones fijas y dinamicas

¿Que son Particiones?

Es el nombre genérico que recibe cada división presente en una sola unidad física de almacenamiento de datos. Toda partición tiene su propio sistemas de archivos (formato); generalmente, casi cualquier sistema operativo interpreta, utiliza y manipula cada partición como un disco físico independiente, a pesar de que dichas particiones estén en un solo disco físico.
Vale aclarar entonces que cuando hablamos de formatear un disco se esta hablando de crear una partición que ocupe todo el espacio disponible de una unidad física de almacenamiento.
Las particiones pueden ser utilizadas para permitir a un equipo en particular tener instalado varios sistemas operativos en un mismo disco físico; de hecho algunos sistemas operativos necesitan mas de una partición para funcionar, o bien , para aprovechar el rendimiento del equipo. Una partición también puede ser útil para proporcionar al usuario un espacio para almacenar copias de seguridad de tal manera que los archivos puedan quedar protegidos de un sistema de archivos roto e irrecuperable o de un formateo accidental hecho a la partición donde esta el archivo original.


PARTICIONES FIJAS

El primer intento para posibilitar la multiprogramación fue la creación de particiones fijas o estáticas, en la memoria principal, una partición para cada tarea. El tamaño de la partición se especificaba al encender el sistema, cada partición podía re-configurarse al volver a encender el sistema o reiniciar el sistema.
Este esquema introdujo un factor esencial, la protección del espacio de memoria para la tarea. Una vez asignada una partición a una tarea, no se permitía que ninguna otra tarea entrara en sus fronteras. Este esquema de partición es mas flexible que la de usuario único, por que permite que varios programas estén en memoria al mismo tiempo.



Ventajas:

- Simplicidad
- Resolución de direcciones en tiempo de carga
- Registro base (no requiere siquiera de un registro limite)
- Puede limitarse simplemente con un espacio de direccionamiento acorde en el compilador.

Desventajas 

- Rigidez
- Grado de multiprocesamiento limitado
      - Si hay menos de 7 procesos, se desperdician recursos.
      - Si hay mas de 7, tienen que esperar a que se les abra espacio.
- Desperdicio de espacio (Fragmentación interna)
    - Al asignarse la memoria en bloques fijos, un proceso pequeño podría desperdiciar mucho espacio 

Asignación de las particiones fijas
La asignación de las particiones fijas consiste en darle un espacio de memoria es decir una partición a un proceso que necesite ejecutarse es decir:


Ahora bien se necesitan ejecutar estos procesos o tareas, lo que se hace es empezar por la primera partición que va de 30 a 50, esta partición tiene un espacio de 20 (50-30=20), como se asignan las tareas por orden de llegada entonces la primera que se debe asignar es la tarea 1 que pesa 50, por lo tanto se busca en la memoria una partición con esa capacidad.
En este ejemplo seria la partición que hay entre 80 a 200, donde tiene un espacio de 120, a esta particion se le asignara la tarea 1 (t1). Quedaría de la siguiente manera:
  

Al ingresar la tarea 1 en la partición vemos que queda un espacio de sobra en esa partición la cual es 70 (120-50=70) a esto se le llama fragmentación. La fragmentación es la memoria que se desperdicia, es un espacio que se esta usando pero no se esta ocupando del todo.

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 esta sólo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.

Se hace el mismo proceso con la tarea 2:


Ahora con la t3,la tarea 3 pesa 80 y si observamos la imagen nos daremos cuenta de que no hay ninguna partición que tenga un espacio en la memoria de 80, por lo que se dice que esta tarea queda en cola es decir que queda en espera mientras se desocupa una partición que tenga ese espacio.

lo siguiente es terminar la tarea 4 y la tarea 5 que quedarían así:

    
Desasignación para particiones fijas:

Las tareas salen de la memoria por el tiempo de ejecución, es fácil de comprender ya que si una tarea termino lo único que hace es salir y dejar la partición libre es decir:

Vamos a utilizar el ejemplo anterior y supondremos que la tarea 4 ya se ejecuto lo que se hace es quitarla y queda el espacio libre, para poder asignar otra tarea.



PARTICIONES DINÁMICAS

Las particiones dinámicas son variables en número y longitud, esto quiere decir que cuando se carga un proceso a memorial principal se le asigna el espacio que necesita en memoria y no más. Esta partición comienza siendo muy buena pero en el trascurso de uso deja un gran número de huecos pequeños en la memoria lo cual se le denomina fragmentación externa. Se debe usar la compactación para evitar esta fragmentación, el sistema operativo desplaza los procesos para que estén contiguos de forma que todos los espacios de memoria libre se agrupen en un bloque, es decir:



Ventajas
No existe fragmentación interna

Desventajas
fragmentación externa, se debe compactar la memoria. El compactado toma tiempo.

Asignación de las particiones dinámicas

Al cabo de un tiempo las particiones dinámicas se empiezan a comportar como particiones fijas, así que en las particiones dinámicas también hay fragmentación, pero esta fragmentación es externa. Para esto existen tres algoritmos: mejor ajuste, primer ajuste o próximo ajuste
  • Mejor ajuste: Consiste en ubicar el proceso en el espacio de memoria que mas se ajuste a su tamaño
Ejemplo: se quiere ingresar la tarea 3, pero si nos fijamos no hay una partición con un espacio lo suficientemente grande para esta tarea, por lo cual, al igual que las particiones fijas esta tarea quedaría en cola.


Ahora vamos a ingresar la tarea 4 que pesa 10, entonces si miramos en la imagen la partición que mas se ajusta al tamaño de la tarea es la de (240 a 250), ya que si se asigna la tarea allí, no se va a gastar espacio de memoria entonces quedaría:




Lo siguiente es ingresar la tarea 5 que pesa 20, pero hay dos particiones que están disponibles y son adecuados para esta tarea que son la partición de (30 a 50) y de (160 a 180), como el mejor ajuste dice que es la partición mas se ajuste a su tamaño, por consiguiente se podria asignar a cualquiera de los dos espacios, en esta ocasión lo pondremos en la partición de (30 a 50). Quedaría: 



  • Primer ajuste: Consiste en ubicar el proceso en el primer hueco disponible, recorriendo desde el inicio de la memoria, cuyo tamaño sea suficiente para el proceso.
Utilizaremos el ejemplo anterior para una mayor comprensión, vamos a ingresar la tarea 5 de nuevo, pero esta vez como es primer ajuste obligatoriamente debe de ir en la partición de (30 a 50) ya que el primer ajuste indica que se debe de asignar el proceso en la primera partición que sea mas ajustada a su tamaño. Quedaría como la imagen anterior.

  • Siguiente ajuste: Consiste en ubicar el siguiente hueco disponible, que sea suficientemente grande, a partir de la última asignación de memoria.
Ejemplo: En este ejemplo asignamos la tarea 4, pero el punto de partida es la tarea 2 ya que fue la ultima en asignarse, por consiguiente la siguiente casilla se asignara, pero en el siguiente ajuste hay que tener en cuenta, que también es la partición que mas se ajuste al tamaño de la tarea, así este algoritmo pasara a la siguiente partición hasta que encuentre una partición del mismo tamaño que la tarea o un poco mas grande para poder optimizar memoria. Quedaría:




Desasignación en las particiones dinámicas: 
consiste en sacar las tareas de la memoria, las tareas salen por tiempo de ejecución, pero para que salgan de dan 3 casos:
  • Particiones ocupadas
  • Particiones entre una libre y una ocupada
  • Particiones entre dos libres 

Particiones ocupadas:


Vamos a eliminar la tarea 4, como se aprecia en la imagen esta entre dos particiones ocupadas, entonces el algoritmo lo que hace es preguntar si al lado izquierdo esta ocupado y al lado derecho esta ocupado, si es así entonces la tarea 4 se puede liberar y quedaría:


Particiones entre una libre y una ocupada: 


Vamos a eliminar la tarea 1, antes de eliminar el algoritmo pregunta si a la izquierda de la tarea 1 esta libre y a la derecha esta ocupado, o viceversa, si estas condiciones se cumplen entonces se puede liberar la tarea 1, pero ademas la partición que esta libre se fusiona con la partición en la que se libero la tarea quedando así una partición mas grande, es decir:


Particiones entre dos libres: 


En este ejemplo vamos a sacar la tarea 3 o termino de ejecutar y va a salir, entonces vemos que la tarea 3 esta entre dos particiones libres. El algoritmo pregunta si a la izquierda y a la derecha de la tarea 3 esta libre, si es así, libera la tarea 3 y une las tres particiones para que quede una mas grande, es decir:



RELOCALIZACIÓN

La relocalización solamente existe en las particiones dinámicas.
Con este esquema de asignación de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacíos y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar
La relocalización sucede por 3 instancias:
  • Tiempo
  • Cantidad de tareas en cola
  • Porcentaje de como este ocupada la memoria

Ejemplo:


Como se puede apreciar en la imagen, la relocalización consiste en agrupar las particiones libres en un solo bloque para que así cuando vuelva a ingresar una tarea, esta se ingrese normalmente en la parte final de la memoria. 

PAGINACIÓN

La paginación consiste en dividir la memoria en un conjunto de marcos de igual tamaño, cada proceso se divide en una serie de paginas del tamaño de los marcos, incluso el espacio para el sistema operativo también esta paginado, un proceso se carga en los marcos que requiera(todas las paginas), no necesariamente contiguas es decir seguidas.

Ejemplo:



En la imagen podemos ver como se paginan los procesos y la memoria, al paginar los procesos se pueden llevar a la memoria aleatoriamente es así entonces como funciona la paginación.
nosotros podemos saber cuantas paginas salieron al dividir un proceso, y también la fragmentación a partir de una sencilla división y una resta

ejemplo:


Se divide el tamaño de la tarea entre la división de los marcos, el (cociente + 1) va a ser la paginación, después para saber la fragmentación se toma la división de marcos y se le resta el residuo(10 - 5 = 5 ), esta sera la fragmentación.

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 transferencia en la memoria principal y memoria secundaria
Las páginas de un programa necesitan estar contiguamente en memoria.
Los mecanismos de paginación permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien.
Cada página consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de páginas (0,z,2z,…,(m-1)z)(m*z posiciones).

PARA TENER EL CONTROL DE LAS PÁGINAS: Debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos.

Tabla de páginas

Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de páginas se copia en los bits de mayor orden del registro de salida. La finalidad de las tablas es asociar las páginas virtuales con los marcos.

Características de la paginación
• El espacio de direcciones lógico de un proceso puede ser no contiguo.
• Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
• Se divide la memoria en bloques de tamaño llamados páginas.
• Se mantiene información en los marcos libres.
• Para correr un programa de n páginas de tamaño, se necesitan encontrara n marcos y cargar el programa.
• Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.
• Se produce fragmentación interna.

Ventajas:
Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de páginas libres dispersos en la memoria. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.

Desventajas
El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consume mucho más recursos de memoria, tiempo en el CPU para su implantación. Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fija el tamaño de estas, se crea un problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria, u "ovearhead" del procesador).

La dirección generada por la CPU se divide en:

Numero de página (p): utilizado como índice en la tabla de páginas que contiene la dirección base de cada página en la memoria física.

De la página (d): combinado con la dirección base define la dirección física que será enviada a la unidad de memoria.

Existen dos funciones
1-      Llevar a cabo la transformación de una dirección virtual a física, o sea, la determinación de la página a la que corresponde una determinada dirección de un programa.
2-      Transferir, cuando haga falta, páginas de la memoria secundaria a la memoria principal, y de la memoria principal a la memoria secundaria cuando ya no sean necesarias.


SEGMENTACIÓN

Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa.
Los elementos dentro de un segmento se identifican por su desplazamiento, esto con respecto al inicio del segmento.

Definición y aspectos generales
La segmentación de memoria 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.
Después cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa, este sistema de gestión de memoria es utilizado en sistemas operativos avanzados, pero ya existían muestras de su actividad desde los S.O. UNIX y D.O.S
Objetivos alcanzados con la segmentación de memoria
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: Donde cada estructura tiene su propio tamaño y este puede variar.
(stack)
Protección: Se puede proteger los módulos del segmento contra accesos no autorizados.
Compartició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.

La segmentación paginada ayuda al proceso de gestión de memoria, puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas.
Cada segmento puede ser descrito por su propia tabla de páginas.
Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que todas las páginas se encuentren en memoria principal a la vez; además las páginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual, no necesitan estarlo en memoria real.
La segmentación paginada tiene su propio esquema, las páginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v=(s,p,d)”. S= núm.. segmento , P= num.pag.  D= desplazamiento

Compartición de segmentos
En un sistema de segmentación, una vez que un segmento ha sido declarado como compartido, entonces las estructuras que lo integran pueden cambiar de tamaño. Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas generales que apunten al mismo segmento del almacenamiento primario.

LAS VENTAJAS DE LA SEGMENTACIÓN
-          El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
-          Es posible compilar módulos separados como segmentos, el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
-          Es fácil el compartir segmentos.
-          Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.

LAS DESVENTAJAS DE LA SEGMENTACIÓN
-          Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.
-          Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.

SEGMENTOS DE MEMORIA
El segmento de código (tiene como base el contenido del registro CS).En este segmento se encuentran las instrucciones que forman el programa. Para acceder a los datos contenidos en él, se usa el registro IP como desplazamiento.
El segmento de datos (que tiene como base el registro DS). Contiene los datos que utiliza el programa (variables, etc.) para acceder a los datos contenidos en él, se suele utilizar los registros SI y DI como desplazamiento.
El segmento de pila (con SS como base). En él se desarrolla la pila del programa, utilizada para almacén temporal de datos, llamadas a funciones, etc. Debe estar presente en todos los programas EXE de forma obligada. Se utiliza el registro SP para acceder a los datos de este segmento.
El segmento extra (con ES como base). Su uso es opcional, y en él se encuentra un segmento definido por el usuario y que, regularmente, contiene datos adicionales. Al igual que ocurre con el segmento de datos, para acceder a los datos contenidos en él, se suelen utilizar los registros SI y DI.



Links de ayuda...

http://es.slideshare.net/veronikam/presentacion-fso
http://labvirtual.webs.upv.es/Applets/GAndreu/Objeto_Fijas_Multiples_colas/memoria_particiones1.jpg
http://sistemasoperativos-memoria.blogspot.com.co/2013/05/particiones-fijas-y-dinamicas.html
https://noridappr89.wordpress.com/2013/05/21/segunda-exposicion-particiones-fijas-y-dinamicas/
http://es.slideshare.net/veronikam/presentacion-fso
http://sistop.gwolf.org/laminas/11-asignacion-memoria.pdf

http://www3.uji.es/~redondo/so/capitulo4_IS11.pdf
http://gmpri.blogspot.com.co/p/fragmentacion.html
http://es.slideshare.net/fer100690/aignacin-de-memoria-con-particiones-dinmicas
http://sistemasoperativos-memoria.blogspot.com.co/2013/05/particiones-fijas-y-dinamicas.html
https://www.youtube.com/watch?v=XiDZ21-KHWA
http://es.scribd.com/doc/58833109/particion-dinamica#scribd
http://www.itlalaguna.edu.mx/academico/carreras/sistemas/sitemasoperativos2/Admin_memoria.html
http://es.slideshare.net/natalialuva/paginacin-segmentacin-y-fragmentacin
http://www.dc.fi.udc.es/~so-grado/SO-Memoria.pdf
http://es.slideshare.net/menes21/paginacion-y-segmentacion-de-memoria












Memoria

SISTEMAS OPERATIVOS


Tipos de Sistemas Operativos

Un sistema Operativo (SO) es en sí mismo un programa de computadora. Sin embargo, es un programa muy especial, quizá el más complejo e importante en una computadora. El SO despierta a la computadora y hace que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las unidades de disco.
Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación.
Los sistemas operativos más conocidos son los siguientes:

1) DOS: El famoso DOS, que quiere decir Disk Operating System (sistema operativo de disco), es más conocido por los nombres de PC-DOS y MS-DOS. MS-DOS fue hecho por la compañía de software Microsoft y es en esencia el mismo SO que el PC-DOS.
La razón de su continua popularidad se debe al aplastante volumen de software disponible y a la base instalada de computadoras con procesador Intel.
Cuando Intel liberó el 80286, DOS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS representaron la mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que corrieran DOS tan bien como las computadoras IBM lo hacían.
Aún con los nuevos sistemas operativos que han salido al mercado, todavía el DOS es un sólido contendiente en la guerra de los SO.

2) Windows 3.1: Microsoft tomo una decisión, hacer un sistema operativo que tuviera una interfaz gráfica amigable para el usuario, y como resultado obtuvo Windows. Este sistema muestra íconos en la pantalla que representan diferentes archivos o programas, a los cuales se puede accesar al darles doble click con el puntero del mouse. Todas las aplicaciones elaboradas para Windows se parecen, por lo que es muy fácil aprender a usar nuevo software una vez aprendido las bases.

3) Windows 95: En 1995, Microsoft introdujo una nueva y mejorada versión del Windows 3.1. Las mejoras de este SO incluyen soporte multitareas y arquitectura de 32 bits, permitiendo así correr mejores aplicaciónes para mejorar la eficacia del trabajo.

4) Windows NT: Esta versión de Windows se especializa en las redes y servidores. Con este SO se puede interactuar de forma eficaz entre dos o más computadoras.

5) OS/2: Este SO fue hecho por IBM. Tiene soporte de 32 bits y su interfaz es muy buena. El problema que presenta este sistema operativo es que no se le ha dad el apoyo que se merece en cuanto a aplicaciones se refiere. Es decir, no se han creado muchas aplicaciones que aprovechen las características de el SO, ya que la mayoría del mercado de software ha sido monopolizado por Windows.

6) Mac OS: Las computadoras Macintosh no serían tan populares como lo son si no tuvieran el Mac OS como sistema operativo de planta. Este sistema operativo es tan amigable para el usuario que cualquier persona puede aprender a usarlo en muy poco tiempo. Por otro lado, es muy bueno para organizar archivos y usarlos de manera eficaz. Este fue creado por Apple Computer, Inc.


7) UNIX: El sistema operativo UNIX fue creado por los laboratorios Bell de AT&T en 1969 y es ahora usado como una de las bases para la supercarretera de la información. Unix es un SO multiusuario y multitarea, que corre en diferentes computadoras, desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo. Esto quiere decir que muchos usuarios puede estar usando una misma computadora por medio de terminales o usar muchas de ellas.

Memoria RAM
(memoria de acceso randomico), randomico por que se puede acceder aleatoriamente, la memoria ram permite a la CPU almacenar y recuperar datos rápidamente.
Existen dos clases de memoria, la memoria volátil y la memoria no volátil.




Memoria volátil:
Esta memoria solamente funciona cuando tiene energía eléctrica de lo contrario no funciona, es por esto que cuando se esta haciendo un trabajo o se tiene información y se apaga el computador se pierde esta información, estas memoria son de lectura tanto como de escritura, algunos tipos de memoria volátiles son:

  • DRAM
  • RAM
  • SRAM
  • HPU
  • GJR
Memoria no volátil:
Estos tipos de memoria al contrario de las volátiles tienen la información aun sin energía eléctrica, son memorias programables de solo lectura.
Los datos de estas memorias solo se leen, se utilizan mas no se modifican como lo es la memoria ROM (Read Only Memory)memoria de solo lectura. Algunos tipos de memoria no volátiles son:

  • BD-ROM, BD-R, BD-RW
  • CD, CD-ROM, CD-R, CR-RW
  • Cinta magnética
  • DVD
  • Diskette
  • Disco duro
  • EPROM
  • EEPROM
  • MRAM
  • Memoria de tambor
  • Flash
  • NVRAM
  • PRAM
  • PROM 
  • ROM
  • Memoria racetrack
Memoria cache:


La cache es la solución al problema de rendimiento del sistema de memoria. Es muy pequeña y está incluida en el interior del micro. Su función es sencilla, conseguir que los datos más usados estén lo más cerca del procesador para ser accedidos de la manera más rápida posible.
La memoria cache Se organiza en niveles, de menor a mayor tamaño según lo alejada que esté del micro. Si el procesador necesita un dato de la memoria se comprueba si este se encuentra en el primer nivel. En caso de no encontrarlo, se busca en el segundo nivel y si no en el tercero. Todo se acelera si se colocan los datos más utilizados en los niveles más cercanos al procesador.

Cada uno de estos niveles tiene un bloque de control el cual se encarga de almacenar y poner los datos a disposición del micro. El tiempo que tarda en buscar la información es proporcional al tamaño de la propia memoria que administra. Como queremos que los datos lleguen lo antes posible al micro los niveles más bajos tendrán menor capacidad. Cada nivel superior, por tanto, es bastante más grande que el anterior.

La memoria cache es muy pequeña. En comparación con la memoria RAM unas mil veces más pequeña. Por suerte, los programas suelen realizar muchas operaciones sobre los mismos datos y por lo tanto se consiguen grandes mejoras al usar esta técnica.



Memoria virtual

La memoria virtual permite ejecutar programas de capacidad superior a la memoria que físicamente tiene el computador, ademas la memoria virtual permite aumentar el numero de procesos en la memoria principal, en ejecución concurrente. En definitiva presenta al usuario una memoria principal aparente mayor que la memoria física real.
La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente en un corto intervalo de tiempo, en un sistema de MV se tiene en disco el proceso completo, que se considera por la CPU troceado en paginas o segmentos, dependiendo del método. Únicamente se cargan en la memoria principal la pagina o paginas (o segmentos, en su caso) que en ese momento intervengan en el proceso.
La gestión de MV segmentada es mas compleja que la del tiempo de paginación, ya que los segmentos son de tamaño variable y son mas difíciles de gestionar. Las paginas, por el contrario, son de capacidad constante y preestablecida. Por ello lo habitual es utilizar gestión de memoria por paginación, o por segmentos paginados.


links que de pronto puedan ayudar:

http://es.slideshare.net/josarta/memoria-ram-tipos-y-ejemplos
http://www.monografias.com/trabajos3/tiposram/tiposram.shtml
http://www.e-mas.co.cl/categorias/informatica/tiposso.htm
http://computadoras.about.com/od/Preguntas-Frecuentes-elegir-pc/a/Memoria-Cache-Que-Es-Y-Para-Que-Sirve.htm