lunes, 29 de noviembre de 2010

Concepto de archivo y directorio:

   - Archivo: En informática, un archivo es un grupo de datos estructurados que son almacenados en algún medio y pueden ser usados por las aplicaciones. La forma en que una computadora organiza, da nombre, almacena y manipula los archivos se denomina sistema de archivos y suele depender del sistema operativo y del medio de almacenamiento (disco duro, disco óptico, etc)
   -Directorio: En informática un directorio es una agrupación de archivos de datos, atendiendo a su contenido, a su propósito o a cualquier criterio que decida el usuario. Técnicamente el directorio almacena información acerca de los archivos que contiene: como los atributos de los archivos o dónde se encuentran físicamente en el dispositivo de almacenamiento. En el entorno gráfico de los sistemas operativos modernos, el directorio se denomina metafóricamente carpeta y de hecho se representa con un icono con esta figura. Esta imagen se asocia con el ambiente administrativo de cualquier a, donde la carpeta de encierra las hojas de papel (representando a los s de datos) de un expediente.
Operaciones y atributos de archivos:   
Operaciones:
* Lectura (consulta).- Esta operación consiste el leer la información contenida en fichero sin alterarla.
    * Escritura (modificación).- Consiste en actualizar el contenido del fichero bien añadiéndole nuevos datos o borrando parte de los que contenía.
    * Apertura.- Antes de acceder a un fichero, tanto para consultar como para actualizar su información, es necesario abrirlo. Esta operación se debe realizar previamente a las operaciones de lectura o escritura.
    * Cierre.- Cuando se ha terminado de consultar o modificar un fichero, por lo general, del mismo modo que se tuvo que abrir para realizar alguna operación de lectura/escritura sobre él, éste deberá ser cerrado.
Atributos: Un byte de atributos marca las entradas según los códigos listados en el cuadro a continuación.
Prácticamente, los atributos Sistema y Oculto tienen las mismas consecuencias, aunque esto puede cambiar en las futuras versiones del DOS.
Valor del byte Anotado Significación DCB Binario:
00 0000 0000 Ningún atributo.
01 0000 0001 R. Sólo lectura. No puede ser borrado ni modificado.
02 0000 0010 H. Oculto. No listado por un DIR. Ni copiable (salvo con DISKCOPY), ni borrable.
04 0000 0100 S Archivo sistema. No listado por un DIR. Ni copiable (salvo con DISKCOPY), ni borrable.
08 0000 1000 Es una etiqueta de volumen, en 11 caracteres, sin ninguna otra información.
Sólo existe en el archivo raíz. Archivo oculto, de longitud 0.
10 0001 0000 Es un subdirectorio.
20 0010 0000 A Archivo. Posicionado en 1 cuando el archivo fue creado, o modificado, y vuelto a cerrar. Utilizado por BACKUP y RESTORE
40 0100 0000 Vacío. Debe quedar en 0.
80 1000 0000 Vacío. Debe quedar en 0.
Tipos de archivo: En computación existen básicamente dos tipos de archivos, los archivos ascii y los archivos binarios. El vocablo ascii es un acrónimo para American Standard Code for Information Interchange. Es un estándar que asigna un valor numérico a cada carácter, con lo que se pueden representar los documentos llamados de Texto Plano, es decir, los que son legibles por seres humanos. Los archivos binarios son todos los demás. Como ejemplos tenemos:
Archivos binarios:
    * De imagen: .jpg, .gif, .tiff, .bmp (Portable bitmap), .wmf (Windows Meta File), .png (Portable Network Graphics), .pcx (Paintbrush); entre muchos otros
    * De video: .mpg, .mov, .avi, .gif
    * Comprimidos o empaquetados: .zip, .Z, .gz, .tar, .lhz
    * Ejecutables o compilados: .exe, .com, .cgi, .o, .a
    * Procesadores de palabras: .doc
Archivos ascii
    * Archivos fuente: .f, .c, .p
    * Formatos de texto: .tex, .txt, .html
    * Formatos de intercambio: .rtf, .ps, .uu
    * Dentro de los archivos ASCII de uso común por los programas de bioinformática están los siguientes: De secuencias: .seq
    * De secuencias múltiples: .aln, .msf (Multiple Sequence Format, secuencias alineadas), .rsf (Rich Sequence Format, estos archivos pueden incluir una o más secuencias relacionadas o no).
Estructura del sistema de archivos. (FAT, NTFS, I-NODOS): El programa de instalación facilita la conversión de la partición a la nueva versión de NTFS, incluso si antes utilizaba FAT o FAT32. Este tipo de conversión mantiene intactos los archivos (a diferencia de cuando se da formato a una partición). Si no necesita mantener intactos los archivos y dispone de una partición FAT o FAT32, se recomienda que dé formato a la partición con NTFS en lugar de convertirla desde FAT o FAT32. El hecho de dar formato a una partición borra todos los datos de la partición, pero una partición a la que se da formato con NTFS en vez de convertirla desde FAT o FAT32 tendrá menos fragmentación y mejor rendimiento.
Sin embargo, sigue siendo más ventajoso utilizar NTFS, independientemente de si se dio formato a la partición con NTFS o se convirtió. Una partición también puede convertirse después de la instalación mediante Convert.exe. Para obtener más información acerca de Convert.exe, después de finalizar la instalación, haga clic en Inicio, haga clic en Ejecutar, escriba cmd y, a continuación, presione Entrar, en la ventana de comandos, escriba help convert y, a continuación, presione Entrar.
Existe una situación en la que es posible que desee seleccionar FAT o FAT32 como sistema de archivos.
Acceso secuencial, acceso directo:
-Acceso secuencia: En ciencias de la computación, el acceso secuencial significa que un grupo de elementos es accedido en un predeterminado orden secuencial. El acceso secuencial es a veces la única forma de acceder a los datos, por ejemplo en una cinta de casete. También puede ser el método de acceso elegido, para simplemente procesar una secuencia de datos en orden. En las estructuras de datos, se dice que una estructura tiene acceso secuencial si solo podemos visitar los valores contenidos en un determinado orden. El ejemplo trivial, es la lista enlaza.
acceso directo:  Los Accesos directos son pequeños archivos que contienen tan sólo la localización de otro fichero, y en algunos casos ciertos parámetros que se le deben pasar cuando se ejecute. Se ubican habitualmente en el escritorio, menú inicio, y la barra de tareas de varios sistemas operativos, y pueden requerir el uso de la interfaz gráfica de usuario, en lugar de una línea de comandos. Microsoft Windows añade la extensión .lnk (aunque nunca es visible), y muestra una flecha curvada en aquellos ficheros que son accesos directos.
Estructura de directorios: El sistema de archivos (File System) es una gran colección de directorios y archivos que guardan todo tipo de información. En sistemas de muchos usuarios se pueden tener cientos o miles de archivos. Para organizar y proteger todos estos archivos, en los sistemas UNIX, los archivos se organizan en directorios que a la vez pueden contener además de archivos otros directorios subdirectorios).
Estructuras de un solo nivel, múltiples niveles, estructuras de árbol:
Los registros tienen una clave y la operación básica no es obtener el siguiente registro, sino obtener el registro con la clave especificada. 

Métodos de asignación de espacio en disco: Un método de asignación de espacio en disco determina la manera en que un Sistema Operativo controla los lugares del disco ocupados por cada archivo de datos. Se debe controlar básicamente la identificación del archivo, sector de inicio y sector final. Para el control del espacio ocupado en disco se puede utilizar como base alguno de los métodos teóricos: Asignación Contigua, Asignación Ligada, Asignación Indexada.
ASIGNACIÓN CONTIGUA.
Este método consiste en asignar el espacio en disco de tal manera que las direcciones de todos los bloques correspondientes a un archivo definen un orden lineal.
ASIGNACIÓN LIGADA
En este método, cada archivo es una lista ligada de bloques de disco. En el directorio hay un apuntador al bloque de inicio y un apuntador al bloque final para cada archivo. En cada uno de los bloques donde se encuentra un archivo hay un apuntador al siguiente bloque de la lista.
ASIGNACIÓN INDEXADA
Como ya se vio, la asignación ligada resuelve problemas de fragmentación externa, sin embargo, la asignación ligada no soporta eficientemente el acceso directo a los archivos. La asignación indexada resuelve este problema poniendo todos los apuntadores en una sola localidad: El bloque índice. Cada archivo tiene su bloque índice, El cual es un arreglo de direcciones de bloques de disco.
Organización contigua, enlazada, indizada:
Organización contigua: En este apartado veremos esquemas de asignación contigua, es decir, la memoria principal asignada a un proceso es un único bloque de memoria contigua. En el tema siguiente, veremos esquemas de asignación no contigua, es decir, permitimos que el programa este dividido en bloques, o segmentos, que se pueden colocar en zonas no necesariamente contiguas de memoria principal.
Enlazada: Algunos bytes iníciales de los bloques se usan como puntero al siguiente bloque. Las entradas en el directorio sólo tienen que guardar un puntero al primer bloque del disco asignado al archivo.  Escribir en el archivo supone tomar uno de los bloques libres y añadirlo a l final de la lista. Para facilitar esta operación, también suele haber un puntero al último bloque del archivo. Para leer un archivo sólo hay que seguir los punteros de bloque a bloque.
Indizada: Es en la que las grabaciones de un archivo se disponen secuencialmente sobre el soporte, en este caso el fichero puede utilizarse secuencialmente (accesarse), pero además cada grabación posee una clave que se puede utilizar para buscarla directamente, esta búsqueda se realiza recorriendo una sucesión de tablas índice.

Sistemas de respaldo y recuperación de datos:
Respaldo:
Copias de Información (Backups):
Estos respaldos son sólo duplicados de archivos que se guardan en "Tape Drives" de alta capacidad. Los archivos que son respaldados pueden variar desde archivos del sistema operativo, bases de datos , hasta archivos de un usuario común. Existen varios tipos de Software que automatizan la ejecución de estos respaldos, pero el funcionamiento básico de estos paquetes depende del denominado archive bit . Este archive bit indica un punto de respaldo y puede existir por archivo o al nivel de "Bloque de Información" (típicamente 4096 bytes), esto dependerá tanto del software que sea utilizado para los respaldos así como el archivo que sea respaldado. Este mismo archive bit es activado en los archivos (o bloques) cada vez que estos sean modificados y es mediante este bit que se llevan acabo los tres tipos de respaldos comúnmente utilizados :
 Respaldo Completo ("Full"): Guarda todos los archivos que sean especificados al tiempo de ejecutarse el respaldo. El archive bit es eliminado de todos los archivos (o bloques), indicando que todos los archivos ya han sido respaldados.
 Respaldo de Incremento ("Incremental"): Cuando se lleva acabo un Respaldo de Incremento, sólo aquellos archivos que tengan el archive bit serán respaldados; estos archivos (o bloques) son los que han sido modificados después de un Respaldo Completo. Además cada Respaldo de Incremento que se lleve acabo también eliminará el archive bit de estos archivos (o bloques) respaldados.
 Respaldo Diferencial ("Differential"): Este respaldo es muy similar al "Respaldo de Incremento" , la diferencia estriba en que el archive bit permanece intacto.
Recuperación:
  Sistemas de recuperación de lógica difusa
Esta técnica permite establecer consultas con frases normales, de forma que la máquina al realizar la búsqueda elimina signos de puntuación, artículos, conjunciones, plurales, tiempos verbales, palabras comunes (que suelen aparecer en todos los documentos), dejando sólo aquellas palabras que el sistema considera relevantes. La recuperación se basa en proposiciones lógicas con valores de verdadero y falso, teniendo en cuenta la localización de la palabra en el documento
  Técnicas de ponderación de términos
Es común que unos criterios en la búsqueda tenga más valor que otros, por tanto la ponderación pretende darle un valor adecuado a la búsqueda dependiendo de los intereses del usuario. Los documentos recuperados se encuentran en función del valor obtenido en la ponderación. El valor depende de los términos pertinentes que contenga el documento y la frecuencia con que se repita. De forma que, el documento más pertinente de búsqueda sería aquel que tenga representado todos los términos de búsqueda y además el que más valor tenga repetidos más veces, independientemente de donde se localice en el documento.
  Técnica de clustering
Es un modelo probabilístico que permite las frecuencias de los términos de búsqueda en los documentos recuperados. Se atribuyen unos valores (pesos) que actúan como agentes para agrupar los documentos por orden de importancia, mediante algoritmos ranking.
Algoritmos utilizados para realizar la categorización (cluster):
·         Algoritmo K-means
·         COBWEB
·         Algoritmo EM

  Técnicas de retroalimentación por relevancia
Esta técnica pretende obtener el mayor número de documentos relevantes tras establecer varias estrategias de búsqueda. La idea es que, tras determinar unos criterios de búsqueda y observar los documentos recuperados se vuelva a repetir nuevamente la consulta pero esta vez con los elementos interesantes, seleccionados de los documentos primeramente recuperados.
Algoritmo Genético: es el que se ha utilizado para llevar a cabo este tipo de técnicas de recuperación.
  Técnicas de stemming
Morfológicamente las palabras están estructuradas en prefijos, sufijos y la raíz. La técnica de Stemming lo que pretende es eliminar las posibles confusiones semánticas que se puedan dar en la búsqueda de un concepto, para ello trunca la palabra y busca solo por la raíz.
Algoritmos utilizados para desechar prefijos y sufijos:
·         Paice/Husk
·         S-stemmer / n-gramas
·         Técnicas lingüísticas
Pretenden acotar de una manera eficaz los documentos relevantes. Por esta razón, esta técnica lo consigue mediante una correcta indización en el proceso de tratamiento de los documentos con ayuda de índices, tesauros, etc.; evitando las ambigüedades léxicas y semánticas a la hora de establecer las consultas.
Estructura del almacenamiento secundario, pistas y sectores, sector de arranque:
Almacenamiento secundario: Se conoce como almacenamiento secundario a los medios de almacenamiento que están fuera del almacenamiento primario. Las cintas magnéticas, los paquetes de discos, los discos flexibles y los discos de almacenamiento óptico son los ejemplos de medios de almacenamiento secundario. Son más económicos que la RAM y no requieren el suministro continuo de energía para conservar la información almacenada. Sin embargo cabe recalcar que el acceso a la información del almacenamiento secundario es más lento que el acceso a la memoria RAM.
Pistas y sectores: La estructura física de un disco, con sus pistas y sectores se hallan invisibles en el disco. Estas pistas, invisibles, se crean durante el formateo. El formateo consiste en grabar (escribir) magnéticamente los sucesivos sectores que componen cada una de las pistas de un disco o disquete, quedando así ellas magnetizadas. Luego del formateo, en cada sector quedan grabados los campos que lo constituyen, entre los cuales se halla el que permite identificar un sector mediante una serie de números, y el campo de 512 bytes reservado para datos a grabar o regrabar, lo cual tiene lugar cada vez que se ordena escribir dicho sector.
La grabación se logra como en un grabador de audio por la acción de un campo magnético de polaridad reversible (N-S ó S-N), que imanta la pista al actuar dicho campo sobre ella, al salir a través de un corte ("entrehierro") realizado en un diminuto núcleo ferromagnético (núcleo hoy suplantado por una película delgada inductiva). El ancho de este núcleo determina del ancho de la pista (0,1 mm o menos).
Sector de arranque: Al formatear un volumen, el sector de arranque se crea siempre como primer sector del volumen, para que sea fácil de localizar por el DOS. En él se encuentra información acerca del tamaño, de la estructura del volumen y sobre todo del BOOTSTRAP-LOADER, mediante el cual se puede arrancar el PC desde el DOS. A ésta parte se le llama sector de arranque (BOOT).
Políticas para la administración y búsqueda de datos (FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK):
FCFS:
En planificación FCFS (primero que llega, primero que se atiende), la primera solicitud que llega es la primera que se atiende. FCFS es justa en el sentido de que al llegar una solicitud, su lugar en la planificación es fijo. Una petición no puede ser desplazada por la llegada de otra con mayor prioridad; en efecto FCFS realizará una búsqueda larga para atender una petición en espera aunque llegue una solicitud para el mismo cilindro donde esta colocada la cabeza de lectura-escritura. Cuando las peticiones están distribuidas uniformemente en la superficie del disco, la planificación FCFS da como resultado un patrón de búsqueda aleatorio. Hace caso omiso de las relaciones de posición entre las solicitudes pendientes. No hace ningún intento por optimizar el patrón de búsqueda. 
SSTF:
En la planificación SSTF (primero el de menor tiempo de búsqueda), la petición que implica la menor búsqueda es la siguiente en atenderse, aun cuando esta solicitud no sea la primera de la cola. SSTF es un esquema orientado hacia los cilindros. SSTF tiende a favorecer mucho ciertas solicitudes. Los patrones de búsqueda SSTF tienden a estar muy localizados y, en consecuencia, las pistas más exteriores e interiores pueden recibir una atención deficiente en comparación con la que reciben las pistas de la parte media.
SCAN:
Denning desarrolló la estrategia de planificación SCAN para evitar la discriminación y la alta variación en los tiempos de respuesta de SSTF. SCAN elige la solicitud que implica la menor distancia  de búsqueda en una dirección preferida. Si la dirección preferida en un momento dado es hacia afuera, la estrategia SCAN elige la distancia de búsqueda más corta en esa dirección. SCAN no cambia de dirección hasta que llega al cilindro más exterior o hasta que ya no hay solicitudes pendientes en la dirección preferida. En este sentido, se denomina a veces  algoritmo del ascensor. SCAN ha sido la base de la mayor parte de las estrategias de planificación de disco implantadas hasta ahora.
C-SCAN:
Otra modificación de la estrategia SCAN básica se denomina C-SCAN (SCAN circular). C-SCAN elimina la discriminación de las estrategias anteriores contra los cilindros más interiores y exteriores. En la estrategia C-SCAN el brazo se mueve del cilindro exterior hacia el interior, atendiendo solicitudes según un criterio de la búsqueda más corta. Cuando el brazo ha completado su barrido hacia adentro, salta inmediatamente a la solicitud más cercana al cilindro más exterior y luego reinicia su barrido hacia adentro procesando solicitudes.  C-SCAN presenta una varianza muy pequeña de los tiempos de respuesta.  Algunos resultados de simulaciones indican que la mejor política de planificación de disco podría operar en dos etapas. Cuando la carga es ligera,  política SCAN es la mejor. Cuando la carga es mediana o pesada, C-SCAN produce los mejores resultados. C-SCAN con optimización rotacional maneja en forma activa las situaciones de carga pesada.
LOOK:
La planificación Look es una planificación que opera igual a SCAN, pero si hay peticiones sólo llega hasta la última pista que tiene petición sin necesidad de llegar al final (lo que mejora significativamente el desempeño).
C-LOOK:
En la planificación C-Look (Look circular) es una combinación de C -SCAN y LOOK. Al igual que en C -SCAN, C-LOOK mueve el brazo del cilindro exterior hacia el interior, atendiendo solicitudes según un criterio de la búsqueda más corta. El brazo completa su barrido hacia adentro cuando llega hasta la última pista que tiene petición sin necesidad de llegar al final, luego salta a la solicitud más cercana al cilindro más exterior y luego reinicia su barrido hacia adentro.

viernes, 15 de octubre de 2010

Direccion de Memoria y Acceso a Datos Pt. 2

Memoria virtual: Permite ejecutar procesos que podrían no estar totalmente cargados en la memoria.

•  Se utiliza el disco como almacén secundario de procesos.
•  Idea: mantener en memoria principal sólo los fragmentos de cada proceso que se estén utilizando.

Ventaja: Los programas pueden ser más grandes que la memoria física. (Memoria como gran matriz de almacenaje).

Desventaja: No es fácil de implementar y podría reducir sustancialmente el rendimiento si no se usa con cuidado.

(Ventajas de la memoria virtual):

1.- Si consiguiéramos la capacidad de ejecutar programas que no estuvieran todos en la memoria tendríamos ciertas ventajas:
•  Posibilidad de tener cargados más procesos y de mayor tamaño.
•  Programas no limitados por el tamaño de la memoria física. Programación para un espacio de direcciones virtuales extremadamente grande.
•  Como cada programa ocupa menos espacio en memoria, se podrían ejecutar más programas simultáneamente; aumentando el rendimiento de la CPU sin aumentar los tiempos de respuesta y retorno.
•  Mejora del rendimiento (y la multiprogramación).
•  Incremento del uso de la CPU y reducción de la E/S.
•  Transparencia de cara al usuario en la utilización de programas.
•  Facilidad de utilización con paginación.

Trabajando con memoria virtual estamos obligados a:

1.- Elegir cuanta memoria se le asigna a cada proceso.
2.- Comprobar que la información realmente esté en memoria física.
3.- Decidir qué cantidad de información de la memoria virtual se lleva a la memoria física.
4.- Decidir qué información de la memoria física se sustituye si la zona de memoria de un proceso está totalmente ocupada.
5.- La memoria generalmente se implementa con paginación por demanda, aunque también puede implementarse en un sistema con segmentación, segmentación paginada.

Paginación por demanda:

1.- Técnica más habitual y eficaz de implementar MV.
2.- Los procesos residen en memoria secundaria.
3.- Combina paginación con intercambio:
•  Cuando queremos ejecutar un proceso lo pasamos por intercambio a la memoria.
•  En vez de intercambiar un proceso entero, ahora sólo intercambiamos las páginas necesarias.
•  En lugar de un “intercambiador” hablaremos de un “paginador”, que sabe cuales son las páginas que va a usar.
•  Se evita leer y colocar en la memoria páginas que no se usan, reduciendo de esta forma el tiempo de intercambio y la cantidad de memoria física requerida.
4.- Necesitamos un soporte hardware para distinguir entre las páginas que están en la memoria (válidas) y las que están sólo en disco (no válidas) => esquema de bit de validez/ no validez.

• Bit válido => Página en la memoria.
• Bit no válido:
• => la página no está en el espacio de direcciones lógico.
• => es válida pero no está en la memoria.

5.- Idea fundamental:
• Si “adivinamos” y traemos a la memoria sólo las páginas que se necesitan, el proceso se ejecutará exactamente igual que si hubiéramos traído todas las páginas.
6.-  ¿Qué ocurre cuándo un proceso trata de usar una página que no se trajo a la memoria?.
• El acceso a una página no válida causa una trampa de fallo de página. El hardware de paginación, al traducir la dirección utilizando la tabla de páginas se percata de que el bit de no validez está encendido y transfiere el control al SO.
•   El fallo de página provoca que el SO recupere del disco la página requerida. Se actualiza la tabla de páginas y se reintenta la instrucción que ocasionó el fallo.

Pasos para manejar un fallo de página:

1.- Consultamos una tabla interna que recoge si la referencia fue un acceso válido o no válido a la memoria.
2.- Referencia válida => final del proceso.
Referencia no válida => Traemos la página.
3.- Encontramos un marco libre.
4.- Leemos la página deseada y la colocamos en el marco recién asignado.
5.-  Final de la lectura => modificación de la tabla interna y la TDP, de modo que indique que la página ya está en memoria.
6.-  Reinicio de la instrucción interrumpida por la trampa de dirección no válida. Ahora el proceso puede acceder a la página como si siempre hubiera estado en la memoria.

Reemplazo de páginas:

Para su implementación es necesario desarrollar:
•  Algoritmo de asignación de marcos:
•  Si tenemos varios procesos en memoria es necesario decidir cuantos marcos se asignará a cada uno.
•  Algoritmo de reemplazo de páginas:
•  Proceso básico:
                 1. Atender la interrupción de fallo de página.
                 2. Traer la página a memoria y colocarla en un marco libre.
                 3. Reiniciar el proceso.
•  ¿Y si no hay marcos libres? => Reemplazo de páginas.

El reemplazo de páginas actuará del siguiente modo:
•  Si no hay marcos libres buscamos uno que no se esté usando y lo liberamos => el marco liberado puede contener la página por la que ocurrió el fallo.
•  La secuencia de servicio de fallos de página será ahora:
 1. Encontrar la página deseada en el disco.
 2. Hallar un marco libre:

     a) Si hay un marco libre, usarlo.
     b) Si no lo hay => sar un algoritmo de reemplazo para escoger un marco.
     c) Escribir la página “víctima” en el disco; modificar la tabla de páginas y la      tabla de marcos.
3. Leer la página deseada del disco y colocarla en el marco recién liberado; modificar la TDP y la TDM.
4. Finalmente, reiniciar el proceso de usuario.

Algoritmos de reemplazo de páginas:

Objetivo fundamental: “Buscar el algoritmo con la frecuencia de fallos de página más baja posible”.
Evaluamos un algoritmo ejecutándolo con una serie específica de referencias y calculando el número de fallos de página.
Serie (cadena) de referencias:
•   Se utilizan para evaluar la calidad de los algoritmos de reemplazo.
•   La serie de referencia se puede obtener:
•   Generador de números aleatorios.
•   Rastreando la ejecución y grabando una traza de ejecución.
Para determinar el nº de fallos de página de un algoritmo es necesario conocer el nº de marcos disponibles.

Algoritmos de reemplazo de páginas:

1.- Algoritmo FIFO (FirstIn –FirstOut):
•   Sustituimos la página residente que lleve más tiempo en la memoria.
•    Es fácil de implementar (como una cola FIFO de páginas).
•    Su desempeño no siempre es bueno, puesto que la página sustituida podría contener, por ejemplo, una variable muy utilizada desde el principio y que se usa constantemente.
•   Observamos una “Anomalía de Belady”: la frecuencia de fallos de página podría aumentar al aumentar el nº de marcos asignados.

2.- Algoritmo Óptimo:
•   También llamado algoritmo mínimo.
•   Tiene la frecuencia de fallos de página más baja de entre todos los algoritmos y no presenta Anomalía de Belady.
•   Escoge como víctima la página que más tardará en ser usada de nuevo.
•   Difícil de implementar (requiere presciencia), es decir, un conocimiento futuro de la serie de referencias.
•   Se utiliza para efectuar comparaciones.

3.- Algoritmo LRU (Least Recently Used):
•   Aproximación implementable del algoritmo óptimo.
•   Se sustituye la página “menos recientemente usada”. Se recuerda el instante en que cada página se usó por última vez, y en caso de reemplazo se escoge la página que tiene más tiempo sin usarse.
•   Se utiliza mucho y se considera muy bueno (alto rendimiento respecto del óptimo).
•   Requiere un hardware adicional para su implementación:
•   Contadores: Reemplazo de la página con un tiempo más largo.
•   Pila: La base de la pila corresponde con la página LRU.
•   Esta implementación resulta costosa, ya que contadores y pilas deben actualizarse en cada referencia a la memoria => acceso más lento a la memoria.
•   Sistemas reales: implementan aproximaciones a LRU.
•   No presentan la Anomalía de Belady.

4.- Algoritmos de aproximación al LRU:

1. Algoritmos con bits de referencia adicionales:
•   Las técnicas basadas en LRU utilizan un bit de referencia puesto por el hardware.
•   El hardware enciende el bit de referencia (lo pone a 1) de una página cada vez que se hace referencia a ella (lectura o escritura).
•   Examinando este bit no conocemos el orden de uso, pero sí sabemos cuáles páginas se usaron y cuáles no.
•   Es posible obtener información de ordenamiento adicional si registramos los bits de referencia a intervalos adicionales.
•   Byte histórico:
•   Por ej.: 11000100 se usó más recientemente que 01110111.
•   LRU: página con el número más bajo.
•   Si el nº de bits históricos es cero, es decir, dejamos sólo el bit de referencia => Algoritmo de segunda oportunidad.

2. Algoritmo de segunda oportunidad o algoritmo del reloj.
•   Sencillo y efectivo, examina la página más antigua como posible víctima.
•   Comportamiento: FIFO teniendo en cuenta el bit de referencia:
•   Bit de referencia a cero: Reemplazo de página.
•   Bit de referencia a uno: Segunda oportunidad, ponemos el bit de referencia a cero y seleccionamos la siguiente página FIFO.
•   Se puede implementar como una cola circular, donde un puntero indicará cuál es la página a reemplazar a continuación.
•   Cuando se necesita un marco, el puntero avanza hasta encontrar una página cuyo bit de referencia está apagado. Con el avance del puntero los bits de referencia encendidos se van apagando.
•   Una vez hallada una página víctima, se reemplaza y la nueva página se inserta en la cola circular en esa posición.

3. Algoritmo de segunda oportunidad mejorado.
•   Bitde referencia + bitde modificación.
•   Usando estos dos bits tenemos cuatro situaciones posibles:
•   (0, 0): No se ha usado ni modificado recientemente.
•   (0, 1): No se ha usado recientemente, sí se ha modificado.
•   (1, 0): Usada recientemente, no modificada.
•   (1, 1): Usada y modificada recientemente.
•   Se reemplaza la página que encontremos de clase más baja.
•   Se da preferencia a las páginas que han sido modificadas a fin de reducir el nº de operaciones de E/S requeridas.

5.- Algoritmos de conteo:
•   Tienen un contador con el nº de referencias que se hacen a cada página.
•   Dos esquemas:
•   Algoritmo LFU (Least Frequently Used):
•   Reemplaza la página menos frecuentemente usada (cuenta más baja).
•   Problema: páginas que se usaron mucho durante la fase inicial del proceso y luego no se vuelven a usar.
•   Solución: desplazar las cuentas un bit a la derecha a intervalos regulares.
•   Problema serio: páginas traídas recientemente, alta probabilidadde salir (cuenta baja).
•    Algoritmo MFU (Most Frequently Used):
•    Reemplaza la página más frecuentemente usada.
•    Problema: se pueden mantener páginas viejas a las que no se accede.

6.- Algoritmos de colocación de páginas en buffers:
•   Basados en la idea de mantener una reserva de marcos libres.
•   Cuando ocurre un fallo de página:
•   La página deseada se coloca en un marco libre de la reserva antes de escribir la víctima en el disco.
•   Este procedimiento permite al proceso reiniciarse lo más pronto posible, sin esperar a que la página víctima se escriba en el disco.
•   Cuando la página víctima termina de escribirse en el disco, su marco se añade a la reserva de marcos libres.

 Hiperpaginación:

·        Cuando el aprovechamiento es bajo se aumenta el grado de multiprogramación.
·        Es posible reducir el nº de marcos asignados al mínimo, aunque hay cierto nº de páginas que están en servicio activo.
·        Si el proceso no tiene suficientes marcos para estas páginas, pronto causa un fallo de página.
·        En ese momento el proceso deberá reemplazar alguna página y, dado que todas sus páginas están en uso activo, deberá reemplazar unaque volverá a necesitar de inmediato.
·        Resultado: Se genera rápidamente otro fallo de página y otro y otro.
·        Consecuencia: Disminuye el aprovechamiento de la CPU y entonces el planificador de CPU aumenta el grado de multiprogramación, agravando aún más el problema.
·        Hiperpaginación: Si el grado de multiprogramación es excesivo, el sistema puede estar más tiempo paginando que haciendo trabajo productivo. Esta actividad se conoce como hiperpaginación.
·        ¿Cómo evitarla?:
•   Políticas de reemplazo local
•   La hiperpaginación de un proceso puede afectar al resto
•   Concediendo memoria según las necesidades reales (localidades, working set, ...)