LA MEMORIA
La Memoria es uno de los principales recursos de la computadora. Actualmente las aplicaciones tienen altos requerimientos de memoria y la parte del sistema operativo que administra la memoria se llama Administrador de Memoria. Su labor consiste en
llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con
el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como
administrar el intercambio entre la memoria principal y el disco en los casos
en los que la memoria principal no le pueda dar capacidad a todos los procesos
que tienen necesidad de ella.
El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal al menos parcialmente
durante la ejecución.
MEMORIA
REAL-.La Memoria Real o Principal es donde son ejecutados los programas y procesos
de una computadora, siendo el espacio real que existe 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 más rápido.
Solo la memoria caché es más rápida que la principal pero su costo es mayor.
Estas memorias a menudo
tienen una capacidad de más de 100GB y permiten almacenar buena parte de los
archivos y datos que un usuario emplea habitualmente.
MEMORIA AUXILIAR.- La Memoria Secundaria o Auxiliar es en un ordenador el
conjunto de dispositivos que permiten almacenar datos complementarios a
aquellos que se archivan en la memoria principal.
Funciona como un dispositivo complementario y suele ubicarse por fuera
del ordenador, como uno o más periféricos que cuentan con espacio adicional
para almacenar más datos que los que entran en el disco duro de la
computadora. Aunque se trata de memorias
más lentas o con menor capacidad, son una buena opción de complemento a la hora
de ampliar la disponibilidad de espacio de un ordenador cualquiera.
Al hablar de este tipo de memorias puede hacerse referencia a los
antiguos diskettes, CD-ROM, DVD, unidades de memoria flash, discos Zip y otras
alternativas. Cada una de ellas presenta
diversas características que la adecuan a uno u otro propósito.
Los dispositivos de memoria auxiliar se vinculan al ordenador por medio
de puertos USB o en casos se relacionan directamente con la memoria principal,
conformando un sub-sistema. Además,
muchas de ellas permiten la movilidad del dispositivo, transportando
información de un ordenador a otro con facilidad y rapidez.
MEMORIA VIRTUAL-. La Memoria Virtual es el mecanismo más general para la ejecución de
programas no enteros en memoria. Se basa en un sistema de paginación (o
combinado) en el que sólo un subconjunto de las páginas del programa estácargado
en memoria.
Presenta adicionalmente capacidad para ejecutar programas
mayores que la memoria física disponibles, un conjunto de interesantes ventajas
con respecto a la paginación con programas enteros:
·
Reduce la latencia en la ejecución de los programas, al no tener éstos
que cargarse completamente para comenzar a ejecutarse.
·
Permite gestionar más eficientemente la memoria física. Cualquier espacio
libre, incluso una única página, puede ser aprovechado para cargar un
nuevo programa y comenzar a ejecutarlo.
Por otra parte, si una página de un
programa no se referencia durante la ejecución, no habrá que cargarla.
·
Al aumentar el grado de multiprogramación a costa de reducir el número de
páginas cargadas de cada programa, permite incrementar la eficiencia de la CPU
en sistemas multiprogramados
Ahora
la independencia de los programas con respecto a la máquina es completa, además
del direccionamiento virtual que aporta la paginación, la cantidad de memoria
física disponible para ejecutar el programa sólo es relevante para la velocidad
de ejecución del programa. El uso de
almacenamiento secundario para ofrecer al conjunto de las aplicaciones la
ilusión de tener más memoria RAM de la que realmente hay en el sistema.
La memoria virtual es un concepto que se usa en
algunos sistemas de computadoras grandes y que permite al usuario construir
programas como si estuviera disponible un gran espacio de memoria, igual a la
totalidad de la memoria auxiliar.Esta memoria utiliza una parte de
almacenamiento secundario de la computadora (disco duro) como si fuera memoria.Es
por lo general de menos costo que la secundaria, pero el acceso a la
información contenida en ella es de más rápido acceso.
Se usa la memoria virtual para dar a los
programadores la ilusión de que tienen a su disposición una memoria muy grande,
aunque la computadora tenga en realidad una memoria relativamente pequeña.
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. Con la memoria virtual el sistema
operativo asigna una porción de un medio de almacenamiento, usualmente el disco
duro para funcionar como RAM adicional.
Cuando no existe memoria virtual no hay diferenciación entre el espacio
de direcciones y la memoria real, el espacio de direcciones que puede ser usado
en los programas tiene idéntico tamaño al espacio de memoria real posible.
Si se utiliza memoria virtual, el espacio de direcciones disponibles para
los programas es aquel determinado por el tamaño de la memoria virtual
implementada y no el espacio de direcciones provisto por la memoria real
disponible (el espacio de la memoria virtual será mayor que el de la memoria
real).
Cuando se usa Memoria Virtual, o cuando una
dirección es leída o escrita por la CPU, una parte del hardware dentro de la
computadora traduce las direcciones de memoria generadas por el software
(direcciones virtuales) en:
·
La dirección real de memoria (la dirección de memoria física) o
· Una indicación de que la dirección de memoria deseada no se encuentra en
memoria principal (llamado excepción de memoria virtual)
La memoria virtual ha llegado a ser un componente
esencial de la mayoría de los sistemas operativos actuales, simplifica la carga
del programa para su ejecución llamada reubicación, este procedimiento permite
que el mismo programa se ejecute en cualquier posición de la memoria física. Siendo el espacio en nuestro disco duro que Windows usa cuando le queda poca memoria RAM (que a su vez, es la memoria que se utiliza
para correrprogramas, etc.).
Windows, por defecto, asigna cierta cantidad de espacio en nuestro disco
duro para cumplir la función de “memoria virtual” y la verdad, este
espacio asignado puede resultar insuficiente si usualmente corremos varios
programas pesados.
PAGINACION Y MEMORIA VIRTUAL-. La memoria virtual
usualmente pero no necesariamente es implementada usando paginación. En paginación, los bits menos
significativos de la dirección de memoria virtual son preservados y usados
directamente como los bits de orden menos significativos de la dirección de
memoria física. Los bits más significativos son usados como una clave en una o
más tablas de traducción de direcciones (llamadas tablas
de paginación), para encontrar la parte restante de la dirección física buscada.
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 física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y
el disco duro que es mucho más lento, pero también más grande y barato.
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.
ADMINISTRACIÓN DE MEMORIA
Es la tarea llevada a cabo por el OS y el hardware para acomodar
múltiples procesos en memoria
principal. El administrador de memoria
tiene como objetivos:
·
Ubicar, reemplazar, cargar y descargar procesos en la memoria principal.
·
Proteger la memoria de accesos indeseados
·
Permitir la compartición de zonas de memoria indispensables para lograr
la cooperación de procesos.
Las técnicas usadas para la administración de memoria son las siguientes:
Partición Fija-. La memoria principal se divide en un conjunto de particiones
de tamaño fijo durante el inicio del sistema. Ventaja: Poca sobrecarga al S.O.
Partición Dinámica.- El uso de la memoria es muy ineficiente, se genera
huecos entre las particiones, cada vez más pequeñas se genera la fragmentación
externa.
Paginación Simple.- La memoria principal se divide en un conjunto de
marcos de igual tamaño. Cada proceso se divide en una serie de páginas del
tamaño de los marcos. Fragmentación interna pequeña.
Segmentación Simple.- Cada proceso y sus datos se dividen en segmentos de
longitud variable. Fragmentación externa, con menos compactación.
ADMINISTRACION DE MEMORIA SIMPLE-. Se refiere al caso más simple donde no
hay memoria virtual. Un proceso para su
ejecución debe cargarse completamente en memoria principal (si no se usan
overlays).
Las Técnicas de gestión de Memoria Simple
·
Partición fija
·
Partición dinámica
·
Paginación simple
·
Segmentación simple
ADMINISTRACIÓN DE MEMORIA PARTICIONADA-. Divide la memoria principal en
un conjunto solapado de regiones llamadas Particiones, de tamaños iguales o
desiguales.
ADMINISTRACIÓN DE MEMORIA DE PAGINA REORGANIZABLE-. Es la vista del
espacio de direccionamiento como arreglo de bytes, divide el espacio en páginas
de igual tamaño, usa la tabla de página para mapear paginas virtuales a páginas
físicas.
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.
ADMINISTRACIÓN
DE MEMORIA CON DEMANDAS DE PÁGINAS
El término memoria virtualse asocia normalmente con sistemas que emplean
paginación, aunque también se puede usar memoria virtual basada en la
segmentación. El uso de la paginación en la memoria virtual fue presentado por
primera vez en el computador Atlas.
Cada proceso tiene su propia tabla de páginas y cuando carga todas sus
páginas en la memoria principal, se crea y carga en la memoria principal una
tabla de páginas. Cada entrada de la tabla de páginas contiene el número de
marco de la página correspondiente en la memoria principal. Puesto que sólo
algunas de las páginas de un proceso pueden estar en la memoria principal, se
necesita un bit en cada entrada de la tabla para indicar si la página
correspondiente está presente (P) en la memoria principal o no. Si el bit
indica que la página está en la memoria, la entrada incluye también el número
de marco para esa página.
Otro bit de control necesario en la entrada de la tabla de páginas es el
bit de modificación (M), para indicar si el contenido de la página
correspondiente se ha alterado desde que la página se cargó en la memoria
principal. Si no ha habido cambios, no es necesario escribir la página cuando
sea sustituida en el marco que ocupa actualmente.
Estructura de la tabla de páginas.- El mecanismo básico de lectura de una
palabra de la memoria supone la traducción por medio de la tabla de páginas de
una dirección virtual o lógica, formada por un número de página y un
desplazamiento, a una dirección física que está formada por un número de marco
y un desplazamiento.
Con la memoria virtual, la CPU produce direcciones virtuales que son
traducidas por una combinación de hardware y software a direcciones físicas,
pues pueden ser utilizadas para acceder a memoria principal. Este proceso se
denomina correspondencia de memoria o traducción de direcciones. Actualmente
los dos niveles de la jerarquía de memoria controlados por la memoria virtual
son las DRAM y los Discos magnéticos.
La mayoría de los esquemas de memoria virtual almacenan las tablas
de páginas en la memoria virtual en vez de en la memoria real, esto significa
que estas tablas de páginas están también sujetas a paginación, de la misma
forma que las otras páginas.
La paginación elimina la fragmentación externa y de este modo, aprovecha
la memoria principal de forma eficiente, además, puesto que los fragmentos que
se cargan y descargan de la memoria principal son de tamaño fijo e iguales, es
posible construir algoritmos se gestión de memoria sofisticados que aprovechen
mejor el comportamiento de los programas
SEGMENTACIÓN-. Divide el espacio de direccionamiento en unidades
logicas, stock, codigo, datos,procedimientos.La segmentación es la capacidad de gestionar
estructuras de datos que puedan crecer, la modularidad y el soporte de la
compartición y la protección.Es el sistema de gestión de memoria en un sistema
operativo, 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 están identificados
por su desplazamiento con respecto al inicio del segmento.
La Paginación y Segmentación
permiten la ubicación no contigua de programas para combatir la fragmentación y
la degradación de la memoria. Al poder
ubicarse de forma no contigua, un programa
ya no necesita un hueco de su tamaño, sino que la cantidad total de
memoria libre sea mayor o igual. La
ubicación no contigua requiere dividir los programas en trozos. En paginación, que
es un caso particular del particionado fijo, el programa se divide en páginas
del mismo tamaño. La segmentación, que es un caso particular de particionado
variable, divide el programa en sus unidades lógicas (código, pila, datos,…),
denominadas segmentos.
Las direcciones
lógicas de los programas no contiguos presentan una gran independencia de su
ubicación física (direccionamiento virtual), proporcionada sobre la base de tablas de traducción de
direcciones. Otra ventaja de los programas no contiguos es que facilita que
varios programas compartan trozos entre ellos, por ejemplo el código, lo que
permite un ahorro importante de memoria y de tiempo de carga.
OVERLAYS-. Esta técnica consiste en que el programador divide lógicamente
un programa muy grande en secciones que puedan almacenarse en las particiones
de RAM. Al final de cada sección del programa (o en otros lugares necesarios)
el programador inserta una o varias llamadas al sistema con el fin de descargar
la sección presente de RAM y cargar otra, que en ese momento reside en disco
duro u otro medio de almacenamiento secundario. Esta solución requiere que el
programador tenga un conocimiento muy profundo del equipo de cómputo y de las
llamadas al sistema operativo. Con esta técnica se puede ejecutar programas más
grandes que las particiones de RAM, donde la división del código corría a
cuenta del programador y el control a cuenta del sistema operativo.
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.
Es un mecanismo para mover programas entre memoria principal y secundaria, normalmente disco
(dispositivo se swap). Con swapping, los
programas pueden salir/entrar de/a memoria durante su tiempo de ejecución. Normalmente,
un programa abandona la memoria para dejar espacio a otro.
La función del sistema operativo que gestiona el intercambio entre disco
y memoria se denomina intercambiador o
swapper. La operación de escribir el programa en disco se conoce como
swap-out, mientras que leer el programa de disco se denomina swap-in.
El swapping aporta las siguientes ventajas:
·
Permite influir en la gestión de procesos para controlar el grado de
multiprogramación (planificación a medio plazo).
·
Proporciona flexibilidad en la gestión de la memoria, permitiendo una
utilización más eficiente del espacio.
Para soportar swapping se requiere espacio para el intercambio en
almacenamiento secundario, generalmente
disco. Se puede utilizar un dispositivo específico independiente, una partición del disco, o
incluso compartir la misma del sistema de
ficheros.
CARGA Y
ENLACE DINAMICO
El mecanismo del enlace dinámico necesita una llamada al sistema que
cargue las rutinas y que gestione la memoria. Los beneficios actuales si se usa
memoria virtual son los siguientes:
Tamaño en disco y en RAM: una repetición de la rutina solo se carga una
vez para todos los programas, mayor rapidez de carga se cargan cuando se
necesitan, los programas se inician más rápidamente, actualizan másfácilmente
los programas si se actualiza la librería.Su función principal es
proteger la carga en memoria de un módulo 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.Las
bibliotecas de enlace dinámico, o bibliotecas compartidas, suelen encontrarse
en directorios específicos del sistema operativo, de forma que, cada vez que un
programa necesite usar alguna, el sistema operativo conozca el lugar en el que
se encuentra, para así poder enlazarla y realizar correctamente la operación.
FUNCIONES
ADMINISTRADOR DE MEMORIA
El administrador de memoria 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.
·
Además de esas funciones, el administrador de memoria debe cumplir los
siguientes requisitos:
Protección: No solo debe proteger la zona de memoria del proceso, sino de
la memoria del sistema operativo u otro proceso.
Compartición de memoria: cuando se ejecutan dos procesos iguales, debe
permitir que dos procesos compartan la memoria.
Reubicación: Un proceso puede cambiar de zona de memoria durante su
ejecución. Este requisito tiene sentido evidentemente es sistema
multiprogramado.
En un sistema monoprogramado no tiene sentido porque si solo hay un
proceso, ¿para qué lo voy a cambiar de sitio?
TECNICAS
DEL ADMINISTRADOR DE MEMORIA
Asignación completa y contigua: el proceso se efectúa en una zona
continua
·
Máquina desnuda
·
Mono programación
·
Particiones múltiples:
·
Particiones fijas
·
Sistema compañero
·
Particiones variables.
Asignación
completa y no contigua:
·
Paginación
·
Segmentación
·
Segmentación-paginación
Asignación
parical y no contigua:
·
Memoria Virtual
Asignación
completa y contigua:
El
proceso se ejecuta en una zona continua
REQUERIMIENTOS ESPECIALES HARWARE Y SOFTWARE
Cada fabricante oferta numerosas versiones de una arquitectura básica
y amplía las capacidades de las
memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones
al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar
el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De
esta forma, minimizará el coste, el hardware y el software.
El diseño del gestor de memoria en un sistema operativo depende de tres
áreas fundamentales de decisión:
·
Si se emplean o no técnicas de memoria virtual.
·
El uso de paginación, segmentación o ambas.
·
Los algoritmos empleados para los problemas de la gestión de memoria.
Las decisiones tomadas en las dos primeras áreas dependen de la
plataforma de hardware disponible. Las decisiones del tercer punto (los
algoritmos) son del dominio del software del S.O. Además, el S.O. debe planificar la ejecución
de otro proceso durante el intercambio de página, dando lugar a un cambio de
proceso.
ALGORITMOS
Los algoritmos que se emplean para seleccionar una página a reemplazar
son las siguientes:
·
Óptima: selecciona para reemplazar la página que tiene que esperar más
tiempo hasta que se produzca la referencia siguiente, esta política genera el
menor número de fallos de página. Este algoritmo resulta imposible de
implementar ya que requiere que el S. O. tenga un conocimiento exacto de los
sucesos futuros
·
Algoritmo de reemplazo de páginas según el uso no tan reciente: Este
algoritmo hace uso de los dos bits de estado que están asociados a cada página.
Estos bits son: R, el cual se activa cuando se hace referencia (lectura /
escritura) a la página asociada; y M, que se activa cuando la página asociada
es modificada (escritura), deben de ser actualizado cada vez que se haga
referencia a la memoria, por esto es de suma importancia que sean activados por
el hardware. Una vez activado el bit, permanece en ese estado hasta que el
sistema operativo, mediante software, modifica su estado.
Los bits pueden ser utilizados para desarrollar un algoritmo de reemplazo
que cuando inicie el proceso, el sistema operativo asigne un valor de 0 a ambos
bits en todas las páginas. En cada interrupción de reloj, limpie el bit R para
distinguir cuáles páginas tuvieron referencia y cuáles no.
Cuando ocurre un fallo de página, el sistema operativo revisa ambos bits
en todas las páginas y las clasifica de la siguiente manera:
Clase 0: La página no ha sido referenciada, ni modificada.
Clase 1: La página no ha sido referenciada, pero ha sido modificada.
Clase 2: La página ha sido referenciada, pero no ha sido modificada.
Clase 3: La página ha sido referenciada y también modificada.
Estrategia: Sustituir primero celdas tipo 0 (mejor opción), o tipo 1
(lento) pero grabando celda de salida, o tipo 2 (posible hiperpaginación), o
tipo 3 (peor) pero grabando celda de salida.
Una vez obtenida la clasificación, elimina una página de manera aleatoria
de la primera clase no vacía con el número más pequeño. Esto porque para el
algoritmo es mejor eliminar una página modificada sin referencias en al menos
un intervalo de reloj, que una página en blanco de uso frecuente.
A pesar de que este algoritmo no es el óptimo, es fácil de implementar y
de comprender y con mucha frecuencia es el más adecuado.
·
Usada menos recientemente (LRU, Last Recently Used): reemplaza la página de memoria que no
ha sido referenciada desde hace más tiempo. Debido al principio de cercanía
esta debería ser la página con menor probabilidad de ser referenciada en un
futuro cercano. El problema de este método es su dificultad de implementación.
Una solución sería etiquetar cada página con el momento de su última
referencia; tanto para instrucciones como datos. Este esquema produce
sobrecarga.
·
Primera en entrar, primera en salir (FIFO, First In First Out): trata los
marcos asignados a un proceso como un buffer circular y las páginas se suprimen
de la memoria según la técnica de Round-Robin. Lo que se necesita es un puntero
que circule a través de los marcos del proceso. Esta es una de las políticas de
reemplazo más sencillas de implementar. Se reemplaza la página que ha estado
más tiempo en la memoria, teniendo como desventaja que habrá regiones del
programa o de datos que son muy usadas a lo largo de la vida de un programa por
lo cual estas páginas se cargarán y expulsarán repetidas veces.
·
Reloj (Clock): requiere asociar un bit adicional a cada marco, denominado
‘bit de uso’. Cuando se carga una página por primera vez el bit de uso se pone
a cero. Cuando se hace referencia a la página posteriormente, el bit de uso se
pone a uno. Para el algoritmo de reemplazo de páginas, el conjunto de marcos
candidatos a ser reemplazados se considera como un buffer circular con un
puntero asociado. Al reemplazar una página, se hace que el puntero señale al
primer puntero del buffer. Cuando llega el momento de reemplazar una página, el
S.O. recorre el buffer buscando un marco con el bit de uso a cero y se detendrá
en la posición inicial, reemplazando la página de dicho marco
TASAS DE RENDIMIENTO-. Dada la importancia, en el área del cómputo de
alto rendimiento, del desempeño del subsistema de memoria de una computadora,
se han usado muchas técnicas para tratar de mejorarlo. Sus dos atributos más
importantes son el ancho de banda y
la latencia. Ciertos
diseños de sistemas de memoria mejoran uno a expensas del otro, mientras que otros
impactan positivamente tanto en el ancho de banda como en la latencia. El ancho
de banda generalmente se enfoca en la mejor tasa de transferencia del sistema
de memoria en estado estacionario, lo que usualmente se mide durante la
ejecución de un ciclo largo de avance unitario, que lee o lee y escribe la
memoria.
La latencia es una medida del rendimiento de un sistema de memoria, en el
peor caso conforme mueve una pequeña cantidad de datos (como por ejemplo una
palabra de 32 o 64 bits) entre el procesador y la memoria. Ambos son
importantes porque son parte sustancial de muchas aplicaciones de alto
rendimiento.
Como los sistemas de memoria se dividen en componentes, hay valores de
ancho de banda y latencia de diferentes órdenes de magnitud entre los distintos
componentes. La tasa de ancho de banda entre una cache y la CPU será más alta
que el ancho de banda entre la memoria principal y la cache, por ejemplo.
Además, puede haber muchas caches y rutas a la memoria. Usualmente, el
valor pico del ancho de banda citado por los vendedores es la velocidad entre
la cache de datos y el procesador.
ADMINISTRADOR DEL PROCESADOR-. La operación principal en la gestión de la
memoria es traer los procesos a la memoria principal para que el procesador las
pueda ejecutar. Para esto, la gestión de memoria debe satisfacer los siguientes
requisitos:
·
Reubicación como el sistema operativo se encarga de gestionar la memoria
y traer el proceso a la memoria principal a través de direcciones, al ser
cargado o ejecutado el proceso no adquiere la misma dirección, por lo
tanto es necesario reubicar las direcciones y con la ayuda del sistema operativo es fácil adquirirlas para localizar los
procesos presentes en memoria.
·
Protección, es un requisito que se encarga de regular que los procesos
presentes en memoria no invadan o violen el espacio en memoria de otros
procesos ya sea de forma accidental o por error. La reubicación dificulta un
poco la protección, por esto las referencias de memoria se deben confirmar o
comprobar en tiempo de ejecución para asegurar que se refiere al espacio de
memoria asignado a dicho proceso.
·
Compartición: a través de esta se tiene acceso controlado a ciertas áreas
de memoria ya que varios procesos almacenados en diferentes direcciones ayudan
a la ejecución de un mismo programa evitando la redundancia de procesos y el
acceso es controlado o restringido para protegerlos; Organización lógica
mediante esta los programas tienden a ser ordenados en módulos que pueden ser o
no modificables, con las ventajas de que se puedan modificar y compilar de forma independiente, con
la dirección del módulo el sistema puede ejecutarlo desde
otro modulo, este facilita la graduación de la protección a los módulos,
facilitando la especificación de la compartición deseada;
·
Organización física, esta es responsabilidad del sistema, dado que si el
programador o diseñador del sistema define una compartición de memoria
insuficiente para un programa podrían presentarse problemas, además el no
conoce cuanto espacio hay disponible ni donde se encuentra este espacio
en memoria
EL PROCESADOR-. El Procesador permite el procesamiento de información
numérica, es decir, información ingresada en formato binario, así como la ejecución de instrucciones. Las instrucciones se
almacenan en la memoria principal, esperando ser tratadas por el procesador y
pueden agruparse en distintas categorías. A continuación presentamos algunas de
las más importantes:
·
Acceso a Memoria: acceso a la memoria o transferencia de información
entre registros.
·
Operaciones Aritméticas: operaciones tales como suma, resta, división o
multiplicación.
·
Operaciones Lógicas: operaciones tales como Y, O, NO, NO EXCLUSIVO, etc.
·
Control: controles de secuencia, conexiones condicionales, etc.
Cuando el
procesador ejecuta instrucciones, la información almacena en forma temporal en
pequeñas ubicaciones de memoria local de 8, 16, 32 o 64 bits, denominadas registros.Los registros más
importantes son:
·
el registro acumulador (ACC), que almacena los resultados de
las operaciones aritméticas y lógicas;
·
el registro de estado (PSW, Processor Estado: Word o Palabra de Estado del
Procesador), que contiene los indicadores de estado del sistema (lleva dígitos,
desbordamientos, etc.);
·
el registro de instrucción (RI),
que contiene la instrucción que está siendo procesada actualmente;
·
el contador ordinal (OC o PC por ProgramCounter, Contador de
Programa), que contiene la dirección de la siguiente instrucción a procesar;
·
el registro del búfer, que almacena
información en forma temporal desde la memoria.
DIAGRAMAS DE ESTADO, TRABAJO Y PROCESO
El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las
instrucciones del mismo.
En un entorno de multiprogramación, el procesador intercalará la
ejecución de instrucciones de varios programas que se encuentran en memoria. El
sistema operativo es el responsable de determinar las pautas de intercalado
y asignación de recursos a cada proceso.
Los cinco estados del diagrama son los siguientes:
·
Ejecución: el proceso está actualmente en ejecución.
·
Listo: el proceso está listo para ser ejecutado, sólo está esperando
que el planificador así lo disponga.
·
Bloqueado: el proceso no puede ejecutar hasta que no se produzca
cierto suceso, como una operación de Entrada/Salida.
·
Nuevo: El proceso recién fue creado y todavía no fue admitido por el
sistema operativo. En general los procesos que se encuentran en este estado
todavía no fueron cargados en la memoria principal.
·
Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo,
como un error de protección, aritmético, etc.
JOB-. Esta tecla selecciona el tipo de trabajo o de función a
realizar. Por ejemplo leer contenidos de la ROM, de la RAM, grabar, mover,
borrar bloques, etc...Esta tecla se utiliza pulsando JOB y
un número o letra de teclado de datos. En la parte izquierda de
la pantalla pondrá la función que ha sido seleccionada con el número
o letra pulsada
SCHDEDULER-. Componente del sistema operativo que decide cuál de los procesos que está
en estado ready es el que
entrara a la CPU. Su decisión es basada según el sistema que este administrando
y es resuelta por los Algoritmos de
Calendarización.
El planificador (o scheduler en inglés) es un componente
funcional muy importante de los sistemas operativos multitarea y multiproceso, y es esencial en los sistemas operativos de tiempo real. Su función consiste en repartir el tiempo
disponible de un microprocesador entre todos los procesos que están disponibles para su ejecución.
La primera misión de un planificador es expulsar el programa en
ejecución cuando decida que es pertinente. Esto se consigue de dos maneras,
siempre con ayuda del propio hardware:
§ Cuando expira un temporizador, que se activa a
intervalos regulares de tiempo. En intervalos muy cortos, generalmente cada 250
milisegundos.
§ Cuando el programa solicita una operación de
entrada/salida. Dado que el programa no puede continuar hasta que termine dicha
operación, es un buen momento para ejecutar otro programa.
En ambos casos, el control del microprocesador pasa a manos del
planificador gracias a que el hardware genera una interrupción.
En este proceso de expulsión, se guarda el estado de ejecución del
programa (programa y su estado se denomina proceso).
A continuación, el planificador decide cuál será el siguiente proceso en
ejecutarse. Naturalmente, solamente se escogen procesos que estén listos para
hacerlo. Si un proceso sigue esperando por una operación de entrada/salida no
será candidato a ejecutarse hasta que finalice tal operación.
Una vez seleccionado un proceso, se procede a ejecutarlo, para ello, el
planificador restaura su estado de ejecución (previamente salvado) y
abandona el uso del microprocesador cediéndoselo a dicho proceso.
Gracias a que el tiempo del microprocesador se reparte entre todos los
procesos a intervalos muy cortos, el ordenador ofrece la sensación de que todos
los procesos están ejecutándose a la vez.Cuando un ordenador tiene varios
microprocesadores este esquema se repite para cada microprocesador.
SINCRONIZACION DE PROCESOS-. La
comunicación entre procesos necesaria si se desea que varios procesos puedan
colaborar para realizar una misma tarea. Sincronización es el funcionamiento
coordinado en la resolución de una tarea encomendada.El SO ofrece mecanismos
básicos de comunicación, que permiten transferir cadenas de bytes. Deben ser
los procesos que se comunican quienes interpreten el significado de las cadenas
transferidas para su labor coordinada.
Los mecanismos de comunicación
y sincronización son dinámicos, es decir, cuando se necesita un mecanismo de
este estilo, se crea, usa y destruye, de forma que no se establezca de forma
definitiva ningún mecanismo de comunicación, ya que ellos podrían producir
efectos indeseados, es decir, la comunicación es algo puntual.
Los servicios básicos
de comunicación son:
a. crear: el proceso solicita la creación del mecanismo
b. enviar o escribir: el proceso emisor envía información al
proceso receptor
c. recibir o leer: el proceso receptor recibe información
d. destruir: el proceso solicita la destrucción del mecanismo de
comunicación
La comunicación puede ser
sincrona y asíncrona:
a. síncrona: los dos procesos han de ejecutar servicios de forma
simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor
ejecuta recibir.
b. asíncrona: el emisor hace el envío y prosigue su ejecución.
El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el
receptor la solicite.
DEFINICION
DE PROCESADOR.- El procesador es en los sistemas informáticos el complejo de
circuitos que configura la unidad central de procesamiento o CPU. Es parte de cualquier computadora o de
equipos electrónicos digitales y es la unidad que hace las veces de motor de todos los procesos informáticos desde los más sencillos hasta los más
complejos.
En una computadora se reconocen el procesador como dispositivo de
hardware que puede tener diversas calidades y tipos, y por otra parte el
concepto lógico en términos de unidad central de procesamiento o CPU, entendido
como “cerebro” del sistema. El procesador de hardware suele ser una placa de
silicio de distinto tipo integrado por múltiples transistores en conexión entre
sí. Un microprocesador típico se compone de registros, unidades de control,
unidad aritmético-lógica y otras.
El funcionamiento de un procesador se da a través de distintos pasos que
combinan instrucciones almacenadas en código binario. En primer término, el sistema lee la instrucción
desde la memoria, luego la envía al decodificador, el cual determina de qué se
trata y cuáles son los pasos a seguir. Posteriormente, se ejecuta la
instrucción y los resultados son almacenados en la memoria o en los registros.
TIPOS DE PROCESADOR-. Existen distintos tipos de procesadores, cada uno
de ellos con características y capacidades diversas de acuerdo con las
necesidades e intereses del usuario. Los procesadores son unas de las unidades
de un sistema informático más atendidas por las empresas desarrolladoras de
software y hardware, ya que de su velocidad, eficiencia y rendimiento depende
el correcto funcionamiento de todo el equipo.
Entre las marcas que desarrollan procesadores se cuentan Intel, AMD,
Cyrix, Motorola y otras. Intel es quizás la más reconocida mundialmente, sus
desarrollos son parte de equipos de todo el mundo, tanto de pequeña envergadura
como grandes sistemas informáticos. Su eslógan “Intel Inside” es muy popular ya
que se encuentra presente en todo sistema que disponga de este tipo de
procesadores y para muchos es garantía de calidad.
USOS
Después del consumo de memoria la actividad del procesador es el dato más
importante a controlar en nuestro servidor. Para determinar si las tareas del
procesador se manejan eficientemente para todo el trabajo en el equipo o si
está sobrecargado, debemos examinar su uso.
El uso del procesador o uso de
CPU es el porcentaje de tiempo en el que se encuentra ocupado
trabajando. Debemos vigilar esta ocupación para detectar cuellos de botella en
el procesador.
El contador que define el uso del procesador en cada una de estas
herramientas es:
·
Uso de CPU, en el Administrador de tareas y
- % Tiempo de proceso en Rendimiento.
En el Administrador de tareas el uso de CPU muestra un gráfico indicando
el porcentaje de tiempo que el procesador está trabajando. Este contador es el
primer indicador de la actividad del procesador. Si el equipo parece estar
lento, el gráfico puede estar mostrando un gran porcentaje de uso.
En Rendimiento, el porcentaje de tiempo de procesador es el porcentaje de
tiempo transcurrido que el procesador ha gastado en ejecutar un hilo que no sea
el de inactivo. Cada procesador tiene un hilo de inactividad que consume ciclos
cuando no hay otros hilos en ejecución. Este contador es el primer indicador de
la actividad del procesador, muestra el porcentaje medio de tiempo ocupado
observado durante el intervalo de muestra. Se calcula el valor mediante el
control del tiempo que el proceso de inactividad está activo y que se le resta
al 100%.
Es interesante el control de este contador en sistemas de multiproceso
simétrico (SMP) como a los sistemas de único procesador. SMP permite a
cualquier procesador del sistema ejecutar cualquier hilo del sistema operativo
o de aplicación simultáneamente con otro procesador en el sistema. Observar la
pauta en el uso de un procesador en procesadores individuales y para todos los
procesadores durante el periodo establecido, también, considerar el número de
hilos en la cola del procesador del sistema para determinar si el uso elevado
de procesador está limitando la capacidad del sistema para cumplir su trabajo.