martes, 28 de abril de 2015

Arquitectura de memoria

Se refiere a la forma de estructurar que quiere decir organizar u ordenar las partes de un todo, entonces la arquitectura es la forma en que van organizadas cada una de las partes de la memoria que es el dispositivo que retiene, memoriza y almacena todos los datos informáticos, por otra parte el termino memoria se utiliza generalmente como taquigrafía para la memoria física, que refiere a los chips reales capaces de llevar a cabo datos. Algunos ordenadores también utilizan la memoria virtual, que amplia memoria física sobre un disco duro.

Hay varios tipos de memoria:

  • RAM
  • ROM
  • PROM
  • EPROM
  • EEPROM
Ejemplo de una arquitectura de memoria



Diferencia entre memoria RAM, ROM y EPROM

RAM = Random Access Memory (Memoria de Acceso Aleatorio) Es la memoria temporal o volátil en la que se cargan los programas que quieres utilizar p.e. MS Word, CorelDraw, Power Point, etc. Cada vez que reinicias la computadora la memoria limpia su contenido. 


Se le llama de acceso aleatorio porque en un instante puedes acceder a cualquier valor dentro de ella. 





ROM = Read Only Memory (Memoria Solo para Lectura) Es una memoria que trae prefabricado los programas. No se puede modificar el contenido de los programas, no puedes borrarlos, no puedes actualizarlos. Solo leerlos. Aunque decir programa no necesariamente aplica en la ROM, ya que también puede ser una ROM que posea datos y/o programas. Este tipo de memoria no se borra aunque la dejes sin energia. 





EPROM = Electronically Programmable Read Only Memory (Memoria Solo para Lectura que Tu puedes Programar de forma Electrónica) Esta memoria es una memoria híbrida entre la RAM y la ROM. Con un software y hardware especial puedes grabar/borrar información dentro de ella (usualmente una cantidad limitada de veces) pero igual que la ROM, si la dejas sin energia, el programa o los datos que grabaste no se borrarán por ello.


Memoria Real

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.




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.


La memoria virtual aparece unida a los sistemas operativos modernos. Permite simular una RAM de mayor tamaño que la que tienes instalada en tu equipo.
Pero, veamos cómo se ejecuta un programa. Las aplicaciones y sus datos, para poder ser usados por el procesador, tienen que pasar del disco duro, que es donde se encuentra almacenado todo cuando apagas al equipo, a la memoria RAM que puede ser accedida de forma directa por el micro.

Surge, por tanto la necesidad de tener la mayor cantidad de esta, para poder hacer funcionar de forma correcta el sistema.
La memoria RAM de una computadora, hace unos años, era un elemento muy caro. Si a esto unimos, que no todas las aplicaciones que se están ejecutando se usan a la vez, parece necesario un sistema que controle el uso de la memoria.
Aunque la RAM era cara, los discos duros no lo eran tanto. Se podía entonces usar el disco duro para simular que tenemos más memoria. El procedimiento era sencillo, se pasaba al disco las porciones de RAM que no se usaban en un determinado momento.
Esta técnica consigue simular, por tanto, más memoria, y las aplicaciones ni se dan cuenta de todo lo que esta ocurriendo por debajo. En un sistema operativo normal, se llega a simular tener el doble que sin usarla. Como contrapartida el sistema puede comportase de manera más lenta en algunas situaciones.
Esto es debido a que la velocidad de acceso de los datos al disco duro es miles de veces más lenta que a la memoria RAM.
Si una porción de memoria no se encuentra en esta, el sistema necesita tiempo para leerla y devolverla a la memoria principal ya que este es el único lugar donde el procesador puede ejecutarlo.
Como ves la memoria se organiza en niveles. Primero las caches del micro que se encargan de tener los datos que más usas cerca del procesador, después la memoria RAM, quedando como último recurso el disco duro. A mayor proximidad al micro, mayor velocidad, pero la memoria es mucho más cara.
¿Por qué es tan importante?
Si nos quedamos sin memoria no podremos ejecutar más programas y los que estamos ejecutando tendrán problemas para trabajar con más datos. Además, el uso de memoria virtual puede hacer que tu equipo funcione más lento si es necesario ir por datos al disco duro. Es siempre un compromiso entre la velocidad y la cantidad de datos que el sistema es capaz de procesar.
Jamás una configuración de más memoria virtual podrá ser mejor que una ampliación de memoria RAM. Es más, lo ideal sería tener un equipo que no necesitase tener esta característica activada.
Uso en los sistemas operativos modernos
En cada versión de tu sistema operativo, como es gestionado esta memoria y los algoritmos que la gobiernan son mejorados. Sin embargo, el mayor uso de interfaces gráficas y herramientas cada vez más sofisticadas hace que los sistemas sean unos devoradores de RAM.
Una de las razones por las que un sistema mejora su velocidad usando un disco SSD es debido a esta funcionalidad. Ten siempre en cuenta que una mejora de velocidad de acceso a los datos, aunque no sea espectacular, puede ayudar mucho a un equipo con limitaciones de memoria ya que todo el sistema se puede enfrentar a bloqueos constantes.






Unidad de manejo de memoria

Unidad de Menejo de Memoria o Gestion de Memoria
Unidad de manejo de la memoria, también conocido como gestión de memoria:es un dispositivo de hardware formado por un grupo de circuitos integrados, responsable del manejo de los accesos a la memoria por parte de la unidad de procesamiento central (CPU). El propósito de manejar la memoria es optimizar el uso del RAM. 

Funciones Principales
La traducción de las direcciones lógicas (o virtuales) a direcciones físicas (o reales.
La protección de la memoria.

El control de caché.

Implantacion de La Memoria Virtual
Para implementar la memoria virtual, para el sistema es necesario tener un hardware especial de administración de memoria.

Este hardware a menudo se conoce como un MMU, Sin un MMU, cuando el CPU accede a la RAM, las ubicaciones reales de RAM nunca cambian, la dirección de memoria 123 siempre será la misma dirección física dentro de la RAM. Sin embargo, con un MMU, las direcciones de memoria pasan a través de un paso de traducción antes de cada acceso de memoria. Esto significa que la dirección de memoria 123 puede ser redirigida a la dirección física 82043 en un momento dado y a la dirección 20468 en otro.


Objetivo de Gestion de Memoria

·En la memoria principal son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. -
· La memoria virtual es aquella que le ofrece a las aplicaciones la ilusión de que están solas en el sistema y que pueden usar el espacio de direcciones completo. -
·Las direcciones de memoria son de tres tipos: físicas, lógicas y lineales. - El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema. -
·La asignación consiste en determinar cuál espacio vacío en la memoria principal es el más indicado para ser asignado a un proceso. -
·Las estrategias más comunes para asignar espacios vacíos (huecos) son: primer ajuste, mejor ajuste, peor ajuste. -
· La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria tales como la asignación. -
· La fragmentación puede ser interna o externa. -
·La paginación es una técnica de gestión de memoria en la cual el espacio de memoria se divide en secciones físicas de igual tamaño llamadas marcos de pagina, las cuáles sirven como unidad de almacenamiento de información. -
·La segmentación 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.

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.
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.
   

La memoria como mecanismo de comunicación

Intercambio.
La técnica del intercambio (swapping) significó en su momento una manera de permitir que en los sistemas del tiempo compartido existieran más procesos de los que caben en memoria. Se puede considerar que se trata de un mecanismo antecesor de la memoria virtual.
El intercambio se basa en usar un disco o parte de un disco (dispositivo de swap) como respaldo de la memoria principal.
En cuanto al dispositivo de swap, hay dos alternativas en la asignación de espacio:
- Preasignación. Al crear el proceso ya se reserva espacio suficiente para albergarlo.
- Sin preasignación. Sólo se reserva espacio de swap cuando se expulsa el proceso.

Memoria virtual.
Es un sistema que está organizado como una jerarquía de niveles de almacenamiento, entre los que se mueve la información  dependiendo de la necesidad de la misma en un determinado instante. La técnica de memoria virtual se ocupa de la transferencia de información entre la memoria principal y la secundaria. La memoria secundaria está normalmente soportada en un disco (o partición). La memoria virtual se implementa sobre un esquema de paginación, a este dispositivo se le denomina Dispositivo de Paginación.

Algunos beneficios del uso de memoria virtual son los siguientes:
Se produce un aumento del grado de multiprogramación al no ser necesario que todo el mapa de memoria de un proceso esté en memoria principal para poder ejecutarlo. Este aumento implica una mejora en el rendimiento del sistema. Sin embargo, si el grado de multiprogramación se hace demasiado alto, el número de fallos de página se dispara y el rendimiento del sistema baja drásticamente. A esta situación se le denomina Hiperpaginación.
Se puede ejecutar programas más grandes que la memoria principal disponible.

Paginación.
Los sistemas de gestión de memoria basados en asignación contigua presentan numerosas restricciones a la hora de satisfacer los requisitos que debe cumplir el gestor de memoria del sistema operativo. La paginación surge como un intento de paliar estos problemas sofisticando apreciablemente el hardware de gestión de memoria del procesador y aumentando considerablemente la cantidad considerablemente la cantidad de información de traducción que se almacena por cada proceso.
Como su nombre indica, la unidad básica de este tipo de esquema es la página. La página corresponde con una zona de memoria contigua de un determinado tamaño. Por motivos de eficiencia en la traducción, este tamaño debe ser potencia de 2 (un tamaño de página de 4 KB es un valor bastante típico.)

Con la paginación se le asigna a cada proceso un número entero de marcos de páginas, aunque, en general, su mapa no tendrá un tamaño múltiplo del tamaño del marco. Por tanto, se desperdiciará parte del último marco asignado al proceso, lo que correspondería con las zonas sombreadas a este fenómeno se le denomina Fragmentación Interna e implica por cada proceso se desperdiciará, en término medio, la mitad de  una página, lo cual es un valor bastante tolerable.

El sistema operativo y el manejo de archivos

Una extensión de fichero o sufijo de fichero es un sistema adicional de caracteres alfanuméricos (generalmente) que se añaden al final de un nombre de fichero para permitir que tanto usuarios como ordenadores (así como varias partes del software del sistema del ordenador) determinen rápidamente el tipo de datos almacenados en los ficheros.
Es uno de varios métodos comunes para distinguir los formatos de los archivos.
Administradores de ficheros, tales como el explorador de Windows, pueden tener aplicaciones asociadas para casi cada extensión. Por ejemplo, un editor de textos para laextensión .txt, un procesador de textos para la extensión .doc, un navegador para la extensión .htm o html, un visualizador o editor para la extensión .pdf, un programa de gráficos para la extensión .png, gif o jpg, un programa de cálculo para la extensión .xls, etc.
Algunas extensiones, incluyendo la extensión .exe, com, bat, y cmd, indican que el archivo en sí mismo se puede ejecutar bajo Windows.

TIPOS DE ARCHIVOS

La información de un ordenador está almacenada en lo que se llaman archivos. Normalmente los archivos están formados por un nombre, un punto y una extensión (p.e. PROGRAMA.EXE). El nombre nos sirve para diferenciar unos archivos de otros y la extensión para atribuirle unas propiedades concretas. Estas propiedades asociadas o "tipo de archivo" vienen dadas por las letras que conforman la extensión. Normalmente su máximo son tres letras aunque existen algunas excepciones (.jpeg, .html, .java, etc.). Cada uno de estos pequeños grupos de caracteres está asociado a un tipo de archivo.

Pongamos por ejemplo un archivo llamado "DOCUMENTO.TXT", su nombre será DOCUMENTO y su extensión TXT. Esta extensión esta asociada con el tipo de archivos que contienen texto, por lo tanto podemos suponer que habrá algo escrito dentro. Nuestro sistema operativo (Windows en este caso) tendrá una lista de los programas con los que puede ser utilizado este archivo y si deseamos visualizarlo éste será abierto con el NotePad o Bloc de Notas.

Sin embargo, probablemente nos ocurrirá el problema de que si exploramos un directorio o carpeta sólo veamos DOCUMENTO (sin el .TXT detrás). Se debe a que Windows oculta las extensiones de los archivos. Esto es algo peligroso por el hecho de que hay tipos de archivos que son potenciales contenedores de virus, y si no conocemos su extensión no lo sabremos. Para que Windows nos muestre las extensiones de todos los archivos iremos al Explorador de Windows y en el menú Herramientas accederemos a las opciones de carpeta. En la nueva ventana señalaremos la pestaña Ver y en la lista desmarcaremos la opción "Ocultar las extensiones de archivo para los tipos de archivo conocidos".

Ya que estamos en las opciones de carpeta, la siguiente pestaña "Tipos de Archivo" nos será muy útil. En ella se almacena la lista de diferentes extensiones que Windows reconoce y con que programa están asociadas. Desde ella podemos cambiar todas sus propiedades.

Marcando en la lista el tipo de archivo que nos interese y con el botón Cambiar podremos escoger que sea ejecutado por otro programa distinto. En las Opciones Avanzadas podremos seleccionar también el icono con el que aparezca y las acciones posibles.


Tipos de Archivos

Podemos dividir los archivos en dos grandes grupos. Éstos son los ejecutables y los no ejecutables o archivos de datos. La diferencia fundamental entre ellos es que los primeros están creados para funcionar por si mismos y los segundos almacenan información que tendrá que ser utilizada con ayuda de algún programa.

De todos modos, la mayoría de los programas llevan otros archivos que resultan necesarios aparte del ejecutable. Estos archivos adjuntos que requieren los programas son necesarios para su buen funcionamiento, y aunque puedan tener formatos distintos no pueden ser separados de su programa original. O al menos si queremos que siga funcionando bien.

Dentro de los archivos de datos se pueden crear grupos, especialmente por la temática o clase de información que guarden. Así lo haremos en este tutorial. Separaremos los grupos en archivos de imágenes, de texto, de vídeo, comprimidos... y nombraremos algunos programas asociados.


Nomenclatura

Todos los formatos de archivo o extensiones están escritos en mayúscula en la columna de la izquierda. A su derecha y en la misma línea todos ellos poseen una explicación adjunta o bien los programas recomendados para su uso. Todas las extensiones más importantes y que requieren una explicación más completa están marcados con un asterisco (*) y ampliadas en la parte final de su categoría correspondiente.
Listado


Aquí tenemos la lista completa de tipos de archivos ordenados, tal y como se indicó anteriormente.


SISTEMA

Estos son los archivos necesarios para el funcionamiento interno del Sistema Operativo así como de los diferentes programas que trabajan en él. No esta recomendado moverlos, editarlos o variarlos de ningún modo porque pueden afectar al buen funcionamiento del sistema.


ACA --> Microsoft Agent Character
ACG --> Vista previa de Microsoft Agent
ACS --> Microsoft Agent Character
ACW --> Configuración del asistente de Accesibilidad
BAT --> Archivo por lotes MS-DOS
BFC --> Maletín
BKF --> Copia de seguridad de Windows
BLG --> Monitor del sistema 
CAT --> Catálogo de seguridad
CER --> Certificado de seguridad
CFG --> Configuraciones
CHM --> Ayuda HTML compilado
CLP --> Clip de Portapapeles
CMD --> Secuencia de comandos de Windows NT

Servicios POSIX relacionados con memoria compartida


Memoria compartida. Tienen espacios de direccionamiento que son independientes entre sí. Sin embargo, muchas aplicaciones de tiempo real (y también muchas que no son de tiempo real) necesitan compartir grandes cantidades de datos de una manera eficiente.


Señales de tiempo real. Permite notificar eventos que ocurren en el sistema, pero no es completamente satisfactorio para aplicaciones de tiempo real. Las señales no se almacenan en colas y, por tanto, algunos eventos se pueden perder. Las señales no están priorizadas, y esto implica tiempos de respuesta más largos para eventos urgentes.


Comunicación de procesos. Se especifica un mecanismo sencillo de colas de mensajes para la comunicación entre procesos. Las colas de mensajes están identificadas por un nombre perteneciente a un espacio de nombres dependiente de la implementación.


Entrada/Salida Asíncrona. Define funciones que permiten solapar el procesado de aplicaciones con las operaciones de entrada/salida