lunes, 21 de julio de 2014

Informatica:

Tipos de memoria, organización y funcionamiento 




PROM 

"Programmable Read Only Memory", memoria programable de solo lectura. Memoria ROM que permite una programación y posteriormente un número indeterminado de lecturas pero no puede ser modificada.

EPROM

Erasable Programmable Read Only Memory", memoria programable y borrable de solo lectura. Memoria PROM que permite reprogramación por medio de un dispositivo especial y borrado por medio de luz ultravioleta.

DRAM

Dinamic Random Access Memory", memoria dinámica de acceso aleatorio. Es el tipo de memoria mas común y económica, construida con capacitores por lo que necesitan constantemente refrescar el dato que tengan almacenado, haciendo el proceso hasta cierto punto lento.

SDRAM

Synchronous Dinamic Random Access Memory", memoria dinámica de acceso aleatorio. Tecnología DRAM que utiliza un reloj para sincronizar con el microprocesador la entrada y salida de datos en la memoria de un chip. Se ha utilizado en las memorias comerciales como SIMM, DIMM, y actualmente la familia de  memorias DDR (DDR, DDR2, DDR3, DDR4, GDDR, etc.), entran en esta clasificación.

RDRAM

Rambus DRAM", memoria dinámica de acceso aleatorio para tecnología Rambus. Memoria DRAM de alta velocidad desarrollada para procesadores con velocidad superior a 1 GHz, en esta clasificación se encuentra la familia de  memorias RIMM.

SRAM


Static Random Access Memory", memoria estática de acceso aleatorio. Memoria RAM muy veloz y relativamente cara, construida con transistores, que no necesitan de proceso de refresco de datos. Anteriormente había módulos de memoria independientes, pero actualmente solo se encuentra integrada dentro de microprocesadores y discos duros para hacerlos mas eficientes.

SIP

Es la sigla de ("Single In-line Package"), lo que traducido significa soporte simple en línea: son los primeros tipos de memorias DRAM (RAM de celdas construidas a base de capacitores), que integraron en una sola tarjeta varios módulos de memoria TSOP, lográndose comercializar mayores capacidades en una sola placa. Las terminales se concentraron en la parte baja en forma de pines (30) que se insertaban dentro de las ranuras especiales de latarjeta principal (Motherboard).

DIP

Es de las memorias ram de escritorio más viejas y las siglas DIP’s quieren decir: Dual inline packages, que traducido al español seria: Paquetes de doble línea. La mayoría de los chips de memoria son empaquetados en paquetes de plástico o de cerámica llamados: doble paquetes en línea o DIP. Un DIP es un paquete rectangular con las filas de los pernos a lo largo de sus dos bordes más largos. Estas son las pequeñas cajas de negro que se ven en las SIMM, DIMM o estilos de envoltura más grande. El DIP ha sido el estándar para el empaquetado de circuitos integrados desde la invención de la PC’s. Los antiguos sistemas informáticos utilizaban memorias DIP directamente, ya sea soldados o integrados a la placa base o eran colocados en los zócalos que estaban soldados en las motherboards. La mayoría de los sistemas de la época tenían una pequeña cantidad de memoria 1MB (menos de un megabyte) el problema de las memorias que venían soldadas a la placa base era que si fallaba la memoria había que prácticamente que votar la motherboard.


SIMMs y DIMMs

Se trata de la forma en que se juntan los chips de memoria, del tipo que sean, para conectarse a la placa base del ordenador. Son unas plaquitas alargadas con conectores en un extremo; al conjunto se le llama módulo.
El número de conectores depende del bus de datos del microprocesador, que más que un autobús es la carretera por la que van los datos; el número de carriles de dicha carretera representaría el número de bits de información que puede manejar cada vez.
  • SIMMs: Single In-line Memory Module, con 30 ó 72 contactos. Los de 30 contactos pueden manejar 8 bits cada vez, por lo que en un 386 ó 486, que tiene un bus de datos de 32 bits, necesitamos usarlos de 4 en 4 módulos iguales. Miden unos 8,5 cm (30 c.) ó 10,5 cm (72 c.) y sus zócalos suelen ser de color blanco.
Los SIMMs de 72 contactos, más modernos, manejan 32 bits, por lo que se usan de 1 en 1 en los 486; en los Pentium se haría de 2 en 2 módulos (iguales), porque el bus de datos de los Pentium es el doble de grande (64 bits).
  • DIMMs: más alargados (unos 13 cm), con 168 contactos y en zócalos generalmente negros; llevan dos muescas para facilitar su correcta colocación. Pueden manejar 64 bits de una vez, por lo que pueden usarse de 1 en 1 en los Pentium, K6 y superiores. Existen para voltaje estándar (5 voltios) o reducido (3.3 V).



Características, Software de detención de mantenimiento 





Banco de memoria

Es el número de posiciones de un sistema, o dicho de otra manera, número de informaciones que contiene una memoria. Es la unidad de almacenamiento de datos.La capacidad total de memoria será un dato esencial para calibrar la potencia de un computador. La capacidad de la memoria se mide en múltiplos de byte (8 bits): kilobytes (1.024 bytes) y megabytes (1.024 kilobytes).


Formado por uno o varios "chips" que forman la RAM, ésta es una de las dos partes que componen la memoria principal. Los PC actuales contienen una serie de zócalos donde se insertan los denominados módulos SIMM (Single Inline Memory Module) formados estos a su vez por varios "chips"; esta construcción modular permite añadir más módulos, y por tanto más memoria, cuando resulta necesario de una forma muy sencilla; eso si, respetando unas reglas de colocación en cuanto a su número y tamaño.

Bit de paridad

Un bit de paridad es un dígito binario que indica si el número de bits con un valor de 1 en un conjunto de bits es par o impar. Los bits de paridad conforman el método de detección de errores más simple.
La paridad par es un caso especial del control de redundancia cíclica (CRC), donde el bit de CRC se genera por el polinomio x+1.
Nótese que este método detecta los errores, pero no los corrige (salvo en el caso de que la palabra transmitida sea de tamaño 1 bit). Existen dos variantes de este método, bit de paridad par y bit de paridad impar.

Fallas

¿Qué síntomas puede tener un sistema que tiene fallada la memoria RAM?

En muchas situaciones de errores graves, un usuario necesitará saber si la memoria RAM del sistema está dañada.
La memoria dañada puede ocasionar múltiples y variados problemas en una computadora. A continuación, detallamos algunos síntomas de posibles errores en la memoria RAM. Es importante destacar que estos síntomas también pueden presentarse por otras situaciones de errores. La idea es siempre ir descartando, a través de pruebas, las posibles fuentes del error.

Síntomas de un sistema con la memoria RAM fallada:
  1. La computadora no se inicia, y en su lugar lanza beeps (o pitidos). O en la primera pantalla que muestra la PC al encenderse, especifica claramente que la memoria está fallada.
  2. El sistema operativo se detiene o lanza mensajes de error de Fallas de Protección General (Ver Origen de las fallas de protección general), Operaciones Ilegales, Excepciones Fatales, etc.
  3. La computadora se reinicia de forma aleatoria.


Tiempo de acceso
Tiempo de acceso es el retardo temporal o latencia entre una petición a un sistema electrónico y la fiscalización de la misma o la devolución de los datos solicitados.

·         En un ordenador, es el intervalo de tiempo entre el instante en el cual una unidad de control de instrucción inicia una solicitud de datos o una solicitud para almacenar datos, y el instante en el cual los datos son obtenidos o se inicia el almacenamiento.

Funciones de un manejador de memoria

Es el acto de gestionar la memoria de un dispositivo informático. De forma simplificada se trata de proveer mecanismos para asignar secciones de memoria a los programas que las solicitan, y a la vez, liberar las secciones de memoria que ya no se utilizan para que estén disponibles para otros programas. El proceso de asignación de memoria a los programas que las solicitan es llamado por algunos "alocar" (del inglés "allocate" que significa asignar) pero la palabra "alocar" tiene otro significado para el diccionario de la lengua de la Real Academia Española. La gestión de la memoria principal de un ordenador es una tarea de suma importancia para el funcionamiento del mismo.
Los sistemas de memoria virtual separan las direcciones de memoria utilizadas por un proceso de las direcciones físicas reales, permitiendo la separación de procesos e incrementando la cantidad efectiva de memoria de acceso aleatorio utilizando la paginación. La calidad de la gestión de la memoria es crucial para las prestaciones del sistema.
El recolector de basura es la asignación y liberación automática de los recursos de memoria para un programa. La implementación suele ser a nivel del lenguaje de programación en contraposición a la gestión manual de memoria, que asigna y libera los recursos de memoria de un ordenador de forma explícita.



Asignación continua simple

El sistema operativo (s.o.) es el responsable de asignar memoria principal a los procesos para que puedan ser ejecutados.

En un modelo de memoria con asignación contigua, todo el espacio lógico de un proceso(Código, Datos, Pila) ha de estar ubicado de forma contigua en memoria principal, es decir en direcciones físicas consecutivas

Cuando un proceso finaliza libera la memoria ocupada.

Asignación de memoria

La asignación de memoria consiste en el proceso de asignar memoria para propósitos específicos, ya sea en tiempo de compilación o de ejecución. Si es en tiempo de compilación es estática, si es en tiempo de ejecución es dinámica y si son variables locales a un grupo de sentencias se denomina automática.1

Asignación  particionada

La tarea principal del Sistema de Gestión de memoria es cargar los programas en la memoria principal para su ejecución en el procesador.
En casi todos los sistemas multiprogramados modernos, esta tarea requiere un sofisticado esquema llamado memoria virtual, la cual esta basada en el uso de una de dos técnicas básicas: segmentación o paginación.
Existen técnicas más simples que no requieren el uso de la memoria virtual como la partición, partición simple y la segmentación simple.

 PARTICIONES ESTÁTICAS

En la mayoría de los esquemas de gestión de memoria, el sistema operativo ocupa una parte fija de la memoria principal y que el resto de la memoria esta disponible para ser usado por varios procesos. El esquema más sencillo de gestión de la memoria disponible es dividir en regiones con límites fijos.

TAMAÑO DE PARTICION

Una posibilidad es emplear particiones de igual tamaño en este caso, cualquier proceso cuyo tamaño sea menor o igual que el tamaño de la partición puede cargarse en cualquier partición libre.
Las particiones estáticas de igual tamaño plantean dos dificultades
Un programa puede ser demasiado grande para caber en la partición. El programador debe diseñar el programa mediante superposiciones. Cuando se necesita un módulo que no este presente el programa de usuario debe cargar dicho módulo en la partición del programa, superponiéndose a los programas y datos que se encuentren en ella.
El uso de la memoria principal Es ineficiente. Cualquier programa sin importar lo pequeño que sea, ocupara una partición completa.
Este fenómeno, en el que se malgasta el espacio interno de una partición cuando el bloque de datos cargados Es más pequeño que la partición se denomina fragmentación interna.

PARTICIONES DINAMICAS

Con la partición dinámica, las particiones son variables en número y longitud. Cuando se carga un proceso en la memoria principal, se le asigna exactamente tanta memoria como necesita y no más.
Este método comienza bien, pero desembarca en una situación en la que hay un gran número de guecos pequeños en la memoria. La memoria comienza a estar más fragmentada y su rendimiento decae. Este fenómeno se denomina fragmentación externa y se refiere al hecho que la memoria externa a todas las particiones se fragmenta cada vez más.
Una técnica para vencer la fragmentación externa Es la compactación, el sistema operativo desplaza los procesos para que estén contiguos, de forma que toda la memoria libre quede junta en un bloque. La dificultad de la compactación esta en que Es un procedimiento que consume tiempo, la compactación necesita de renunciación dinámica. Es decir se debe poder mover un programa de una región a otro de la memoria principal sin invalidar la referencia a la memoria del programa.

Memoria virtual

La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que esté disponible físicamente. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.
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. Hay varias formas de hacer esto.
Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. 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 que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (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 de memoria


Sistema de gestión de memoria en un sistema operativo.
La segmentación es una técnica de gestión de memoria que pretende acercarse más al punto de vista del usuario. Los programas se desarrollan, generalmente, en torno a un núcleo central (principal) desde el que se bifurca a otras partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc).
Desde este punto de vista, un programa es un conjunto de componentes lógicos de tamaño variable o un conjunto de segmentos, es decir, el espacio lógico de direcciones se considera como un conjunto de segmentos, cada uno definido por un identificador, y consistente de un punto de inicio y el tamaño asignado.1
La segmentación de un programa la realiza el compilador y en ella cada dirección lógica se expresará mediante dos valores: Número de segmento (s) y desplazamiento dentro del segmento (d).
Una de las implementaciones más obvias y directas de un espacio de memoria segmentado es asignar un segmento distinto a cada una de las secciones del espacio en memoria de un proceso.
La segmentación también ayuda a incrementar la modularidad de un programa: Es muy común que las bibliotecas enlazadas dinámicamente estén representadas en segmentos independientes.


Paginación de memoria

En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.
En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.
De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus páginas en marcos libres y se completa su tabla de páginas.
Veamos un ejemplo:

Número de marco
Programa.#página
Dirección física
0
Programa A.0
1000:0000
1
Programa A.1
1000:1000
2
Programa A.2
1000:2000
3
Programa D.0
1000:3000
4
Programa D.1
1000:4000
5
Programa C.0
1000:5000
6
Programa C.1
1000:6000
7
Programa D.2
1000:7000
La tabla de la derecha muestra una posible configuración de la memoria en un momento dado, con páginas de 4Kb. La forma en que se llegó a este estado puede haber sido la siguiente:
Se tienen cuatro procesos, llamados A, B, C y D, que ocupan respectivamente 3, 2, 2 y 3 páginas.
  1. El programa A se carga en memoria (se le asignan los marcos 0, 1 y 2)
  2. El programa B se carga en memoria (se le asignan los marcos 3 y 4)
  3. El programa C se carga en memoria (se le asignan los marcos 5 y 6)
  4. El programa B termina, liberando sus páginas
  5. El programa D se carga en memoria (se le asignan los marcos 3 y 4 que usaba el proceso B y el marco 7 que permanecía libre)
De esta forma, las tablas simplificadas de cada proceso se ven de esta forma:
Proceso A
Página
Dirección física
0
1000:0000
1
1000:1000
2
1000:2000

Proceso B
Página
Dirección física
-
-
-
-

Proceso C
Página
Dirección física
0
1000:5000
1
1000:6000

Proceso D
Página
Dirección física
0
1000:3000
1
1000:4000
2
1000:7000

Ahora consideremos qué sucede cuando un programa quiere acceder a su memoria. Si el programa A contiene una referencia a la memoria con dirección 20FE, se realizará el siguiente procedimiento. 20FE es 0010000011111110 en notación binaria (en un sistema de 16 bit), y en el ejemplo se están usando páginas de 4Kb de tamaño. Cuando la petición de la dirección de memoria 20FE es realizada, la Unidad de Gestión de memoria se ve de esta forma:

0010000011111110 = 20FE
|__||__________|
 |       |
 |       v
 |      Posición de memoria dentro de la página (0FE)
 v
Número de página (0010 = 2)

Tabla de paginación
Entrada a la tabla de páginas
n = @ página física
V
P
L
E
M
* n = bits de la @ lógica -log2(número de palabras de una página).
* V: bit de validez.
* P: bit de persistencia.
* L: bit de derecho a lectura.
* E: bit de derecho a escritura.
* M: bit de modificación.
Al usar páginas de 4096 bytes, todas las ubicaciones dentro de una página pueden ser representadas por 12 bits, en el sistema binario (212=4096), lo que deja 4 bits para representar el número de página. Si las páginas hubieran sido de la mitad del tamaño (2048) se podrían tener 5 bits para el número de página, lo que significa que a menor tamaño de página se pueden tener tablas con más páginas.
Cuando el pedido de acceso a memoria es realizado, la MMU busca en la tabla de páginas del proceso que realizó el pedido por la relación en memoria física. En nuestro ejemplo, la página número 2 del proceso A corresponde al marco número 2 en memoria física, con dirección real 1000:2000, por lo tanto, la MMU devolverá la dirección del marco en memoria física, con el desplazamiento dentro de esa página: 1000:20FE.

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.
A nivel de paginación, si quiere referenciar en forma cíclicas n paginas, estas deberán ser cargadas una a una generándose varias interrupciones por fallas de paginas; bajo segmentación, esta pagina podría conformar un solo segmento, ocurriendo una sola interrupción, por falla de segmento. No obstante, si bajo segmentación, se desea acceder un área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente en memoria, desperdiciándose memoria; bajo paginación solo se cargara la página que contiene los ítems referenciados.
Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en páginas. 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.
Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el numero del segmento, la segunda el numero de la pagina dentro del segmento y la tercera el desplazamiento dentro de la pagina. Se deberán usar varias tablas:
  • SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento.
  • PMT (tabla de mapas de páginas): una por segmento; cada entrada de la PMT describe una página de un segmento; en la forma que se presento la pagina pura.
  • TBM (tabla de bloques de memoria): para controlar asignación de páginas por parte del sistema operativo.
  • JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.


los overlays son fragmentos o secciones de un programa, son secciones de un programa o sistema operativo con el cual se va trabajando para que el sistema operativo no sea tan pesado a la hr de trabajar con el.

el programador divide el total de instrucciones para que sean cargados en la memoria ram y trabajar con el cuando no se necesite se desecha y sigue con la siguiente seccion (overlay). asi solo trabaja con lo que necesita, sino tendria que leer el programa completo y ahi empesar con los procesos e instrucciones.

Swapping

Es un mecanismo o modo de interrelacionar la memoria principal (la que contiene el Programa en ejecución, los datos de proceso inmediato y los resultados intermedios) con la secundaria, de tal modo que se produce un intercambio de programas entre ambas cuyo resultado es la simulación de un sistema multitarea o la potenciación de memoria central a base de recursos de la memoria secundaria.