martes, 8 de mayo de 2012

TABLAS DE MEMORIA


TABLAS DE MEMORIA EN WINDOWS

La estructura de la memoria en Windows es en forma de árbol, en el cual se definen claramente 3 partes:
• Directorio de Páginas (Page Directory): Cada proceso en ejecución, dispone de un solo Directorio de Páginas. Se trata de una tabla con 1024 entradas que almacena los punteros a las Tablas de Página.
• Tabla de Páginas (Page Table): Cada Tabla de Página es a su vez otra tabla que contiene otras 1024 entradas que ya apuntan a las propias páginas.
• Página (Page Frame): Cada Página es un bloque de 4 KB donde se almacenan los datos de cada proceso.Para aumentar la velocidad, el cambio no se realiza byte a byte, sino página a página. cuyo tamaño en Windows es de4 KB. De ahí que toda la memoria virtual y física esté paginada. Memoria Virtual en forma de páginas, y memoria física enforma de marcos de página.
Las páginas pueden estar en uno de los siguientes estados:
• Libre:Una página libre no puede ser accedida por ningúnproceso, pero sí puedeser reservada o encargada.
• Reservada:Una página reservada es un bloque del espacio de dirección virtual que ha sido fijada para usos futuros. No sepuede acceder a una página reservada, ni tiene datos almacenados. Simplemente bloquea el rango y no permite que sea asignadoporotras funciones de asignación.
• Encargada: Aquella que ya ha sido asignada a un espacio físico, ya sea n memoria física o en memoria virtual. No podemos saber donde está almacenada la página, pues de eso se encarga el sistema y puede que esté constantemente cambiándola de posición, pero lo que sí sabemos es que cuando la necesitemos, ahí lo tendremos




Un esquema quedaría así     










TABLA DE MEMORIA EN LINUX

Linux supone que hay tres niveles de tablas de páginas:
• El directorio de tablas de páginas (punteros a tablas intermedias).
• La tabla de páginas intermedia (punteros a tablas de páginas).
• Las tablas de páginas (punteros a páginas).
Cada nivel de tablas contiene el número de marco de página del siguiente nivel en la tabla de páginas. La figura muestra cómo una dirección virtual se divide en un número de campos, donde cada uno de ellos representa un desplazamiento dentro de una tabla de páginas. Para traducir una dirección virtual a una física, el procesador tiene que tomar el contenido de cada uno de estos campos, convertirlos en desplazamientos de la página física que contiene la tabla de páginas y leer el número de marco de página del siguiente nivel de la tabla de páginas. Esta operación se repite tres veces hasta que se encuentra el número de la página física que contiene la dirección virtual. Ahora el último campo de la dirección virtual se utiliza para encontrar el dato dentro de la página.

CACHÉ


Memoria Caché
La caché es una memoria más pequeña y rápida, la cual almacena copias de datos ubicados en la memoria principal que se utilizan con más frecuencia.
Es un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en la caché. Cuando se accede por primera vez a un dato, se hace una copia en el caché; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea menor.
Cuando el procesador necesita leer o escribir en una ubicación en memoria principal, primero verifica si una copia de los datos está en la caché. Si es así, el procesador de inmediato lee o escribe en la memoria caché, que es mucho más rápido que de la lectura o la escritura a la memoria principal.

Esta memoria se organiza en niveles. Cuanto más cercano al procesador más rápida, más cara y por tanto más pequeña. Debido a esto usamos los nombres cache de nivel 1, nivel 2 y nivel 3. También lo puedes ver como L1, L2 y L3.
Si el procesador necesita un dato de la memoria comprueba si esta se encuentra en el nivel 1. En caso de no encontrarla se busca en el nivel 2 y si no en el nivel 3. El sistema se complementa con un algoritmo que es capaz de colocar los datos que más utilizas en los niveles más cercanos al procesador.
En comparación con la memoria RAM la cache de nivel 3 que es la mayor de todas es unas mil veces más pequeña. Por suerte los programas suelen realizar muchas operaciones sobre los mismos datos y tienen un efecto radical en el rendimiento.



Caché de 1er nivel (L1): 

Esta caché está integrada en el núcleo del procesador, trabajando a la misma velocidad que este. La cantidad de memoria caché L1 varía de un procesador a otro, estando normalmente entra los 64KB y los 256KB. Esta memoria suele a su vez estar dividida en dos partes dedicadas, una para instrucciones y otra para datos. 



Caché de 2º nivel (L2): 



Integrada también en el procesador, aunque no directamente en el núcleo de este, tiene las mismas ventajas que la caché L1, aunque es algo más lenta que esta. La caché L2 suele ser mayor que la caché L1, pudiendo llegar a superar los 2MB. 

A diferencia de la caché L1, esta no está dividida, y su utilización está más encaminada a programas que al sistema. 



Caché de 3er nivel (L3): 



Es un tipo de memoria caché más lenta que la L2, muy poco utilizada en la actualidad. 



En un principio esta caché estaba incorporada a la placa base, no al procesador, y su velocidad de acceso era bastante más lenta que una caché de nivel 2 o 1, ya que si bien sigue siendo una memoria de una gran rapidez (muy superior a la RAM, y mucho más en la época en la que se utilizaba), depende de la comunicación entre el procesador y la placa base. 



Para hacernos una idea más precisa de esto, imaginemos en un extremo el procesador y en el otro la memoria RAM. Pues bien, entre ambos se encuentra la memoria caché, más rápida cuanto más cerca se encuentre del núcleo del procesador (L1). 



Las memorias caché son extremadamente rápidas (su velocidad es unas 5 veces superior a la de una RAM de las más rápidas), con la ventaja añadida de no tener latencia, por lo que su acceso no tiene ninguna demora... pero es un tipo de memoria muy cara. 

Esto, unido a su integración en el procesador (ya sea directamente en el núcleo o no) limita bastante el tamaño, por un lado por lo que encarece al procesador y por otro por el espacio disponible. 



En cuanto a la utilización de la caché L2 en procesadores multinucleares, existen dos tipos diferentes de tecnologías a aplicar. 



Por un lado está la habitualmente utilizada por Intel, que consiste en que el total de la caché L2 está accesible para ambos núcleos y por otro está la utilizada por AMD, en la que cada núcleo tiene su propia caché L2 dedicada solo para ese núcleo. 



La caché L2 apareció por primera vez en los Intel Pentium Pro, siendo incorporada a continuación por los Intel Pentium II, aunque en ese caso no en el encapsulado del procesador, sino externamente (aunque dentro del procesador). 




Imagen de un P-II, en la que se puede observar los chips de la caché L2.



LINUX VS MINIX


LINUX VS MINIX

El debate Tanenbaum-Torvalds es un debate entre Andrew S. Tanenbaum y Linus Torvalds, con respecto a Linux y la arquitectura del núcleo en general. Tanenbaum comenzó el debate en 1992 argumentando que los micronúcleos son superiores a los núcleos monolíticos y por lo tanto, Linux era, obsoleto. 
Mientras el debate inicialmente empezó relativamente moderado, con las dos partes implicadas haciendo sólo declaraciones banales sobre el diseño del núcleo, se van haciendo progresivamente más detalladas y sofisticadas, con cada ronda de mensajes. Además del diseño del núcleo , el debate se ramificó en varios otros temas, tales como que la arquitectura del microprocesador .Además de Tanenbaum y Torvalds, varias personas se sumaron al debate, incluyendo a Peter MacDonald, uno de los primeros desarrolladores del kernel de Linux y creador de una de las primeras distribuciones, Softlanding Linux System, David S. Miller, uno de los principales desarrolladores del kernel de Linux, y Theodore Ts'o, la primera de América del Norte desarrollador del núcleo Linux.

miércoles, 21 de marzo de 2012

Procesos Inicializadores

Procesos Inicializadores Linux/Windows

Init (abreviatura de initialization) es el primer proceso en ejecución tras la carga del kernel y el que a su vez genera todos los demás procesos. Se ejecuta como demonio y por lo general tiene Identificador de Proceso 1.

Tradicionalmente, esta funcionalidad se ha implementado de forma distinta en los dos grandes universos Unix: System V y BSD. En el Unix original, el proceso init arrancaba los servicios de mediante un único script denominado /etc. /rc. Posteriormente, la versión System V del Unix de AT&T introdujo un nuevo esquema de directorios en /etc./rc.d/ que contenía scripts de arranque/parada de servicios.

Linux adoptó el esquema System V, aunque algunas distribuciones, como Arch Linux y Slackware, utilizan el estilo BSD y otros, como Gentoo, tienen su propia versión personalizada. Ubuntu y algunas otras distribuciones de Linux utilizan ahora upstart como reemplazo para el proceso de inicialización tradicionales.

Upstart es un reemplazo basado en eventos para el demonio init utilizado en sistemas UNIX, como GNU/Linux. Upstart (programado porScott James Remnant, trabajador de Canonical Ltd) opera asíncronamente y dirige el inicio de las tareas y servicios, los controla mientras el sistema está encendido y los detiene durante el apagado.