RSS

viernes, 11 de diciembre de 2009

CUESTIONARIO UNIDAD 5



1. ¿Qué tipo de archivos se utilizan para el modelado de puertos?
Los archivos especiales de caracteres
2. ¿Que son las terminales?
En general se denomina terminal al conjunto formado por un teclado y una pantalla
Conectados a la computadora para producir datos a través del primero y recibirlos a través de la segunda.
Las terminales pueden dividirse en dos categorías las que de conectan a través del estándar RS-232, y los mapeados en memoria.
3. Menciona las 4 capas de los objetivos de software
Manejador de interrupción
Controladores de dispositivos
Software de S.O independiente del software
Software del usuario
4. ¿Cuál es la función del manejador interrupción?
Ocultarse en el S.O con el fin de reducir el mismo aspecto del sistema que tiene conocimiento de ellas
5. ¿Con que están comunicados los manejadores de dispositivos una vez que están listos?
Dispositivos periféricos y sus controladores
6. ¿Cuál es la frontera exacta entre los controladores de dispositivos y el software independiente?
La frontera podría efectuase realmente en los primeros controladores de software por razones de eficiencia y de otro tipo.
7. ¿Qué proporciona el disco RAM?
Proporciona el acceso a cualquier parte de la memoria
8. ¿Cuál es la aplicación principal del controlador?
Reservar una parte de la memoria para ser usada como disco ordinario
9. ¿Cuál es requisito principal para que pueda utilizarse un disco duro?
Debe relacionar el formato de bajo nivel efectuado por el software, en el cual cada pista contiene cierto número de sectores con espacios cortos entre ellos
10. En cuanto al hardware del disco ¿A qué se refiere la planificación?
Implica tener un tiempo de acceso breve y gran ancho de banda en el disco.
11. ¿Para qué sirven los relojes?
Son esenciales para el funcionamiento del sistema de tiempo compartido los relojes mantienen la hora del día y evitan que un proceso se monopolice de la CPU.
12. Mencione las obligaciones que hacen el controlador del reloj:

  • Mantienen la hora del día
  • Evita que los procesos se ejecuten durante el tiempo debido
  • Contabiliza la utilización de la CPU
  • Maneja la llamada del sistema alarm entidad por el proceso del usurario
  • Provee temporizadores de vigilancia aparte del sistema mismo
  • Prepara perfiles, vigila y recaba datos estadísticos

jueves, 10 de diciembre de 2009

UNIDAD 5 ADMINISTRACION DE DISPOSITIVOS DE E/S

PRINCIPIOS DEL HARDWARE DE ENTRADA Y SALIDA (E/S)

Distintas personas analizan de varias maneras el hardware de Entrada y Salida. Los ingenieros eléctricos lo hacen en términos de chips, cables, fuentes de poder, etc. Los programadores se fijan en la interfaz que se presenta al software (los comandos que acepta el hardware, las funciones que realiza y los errores que puede informar. En este trabajo nos interesaremos por la programación de los dispositivos de entrada y salida no por su diseño, construcción o mantenimiento, así nuestro interés estará restringido a la forma de programar el hardware y no su funcionamiento interno. Sin embargo es frecuente que la programación de muchos dispositivos de entrada y salida este íntimamente ligada con su operación interna.

DISPOSITIVOS DE ENTRADA Y SALIDA



Los dispositivos de entrada y saluda se pueden dividir de manera general en dos categorías: dispositivos de bloque y dispositivos de carácter.
Dispositivo de Bloque: Es aquel que almacena la información en bloques de tamaño fijo, cada uno con su propia dirección. Los tamaños comunes de los bloques van desde 128 bytes hasta 1024 bytes. La propiedad esencial de un dispositivo de bloque es la posibilidad de leer o escribir en un bloque de forma independiente de los demás, es decir, el programa puede leer o escribir en cualquiera de los bloques.
Entre los dispositivos de bloque se pueden encontrar:
• CD - ROM: Acrónimo de Compact Disc-Read Only Memory. Estándar de almacenamiento de archivos informáticos en disco compacto. Se caracteriza por ser de sólo lectura. Otros estándares son el CD-R o WORM (permite grabar la información una sola vez), el CD-DA (permite reproducir sonido), el CD-I (define una plataforma multimedia) y el PhotoCD (permite visualizar imágenes estáticas).
• Disco Duro: Los discos duros proporcionan un acceso más rápido a los datos que los discos flexibles y pueden almacenar mucha más información. Al ser las láminas rígidas, pueden superponerse unas sobre otras, de modo que una unidad de disco duro puede tener acceso a más de una de ellas. La mayoría de los discos duros tienen de dos a ocho láminas. Un disco duro normal gira a una velocidad de 3.600 revoluciones por minuto y las cabezas de lectura y escritura se mueven en la superficie del disco sobre una burbuja de aire de una profundidad de 10 a 25 millonésimas de pulgada. El disco duro va sellado para evitar la interferencia de partículas en la mínima distancia que existe entre las cabezas y el disco.
• Disquete o Disco flexible: Es un elemento plano de mylar recubierto con óxido de hierro que contiene partículas minúsculas capaces de mantener un campo magnético, y encapsulado en una carcasa o funda protectora de plástico. La información se almacena en el disquete mediante la cabeza de lectura y escritura de la unidad de disco, que altera la orientación magnética de las partículas. La orientación en una dirección representa el valor binario 1, y la orientación en otra el valor binario 0. Dependiendo de su capacidad, un disco de este tipo puede contener desde algunos cientos de miles de bytes de información hasta casi tres millones (2,88 Mb). Un disco de 3y pulgadas encerrado en plástico rígido se denomina normalmente disquete pero puede llamarse también disco flexible.
Dispositivo de Carácter: Es aquel que envía o recibe un flujo de caracteres, sin sujetarse a una estructura de bloques. No se pueden utilizar direcciones ni tienen una operación de búsqueda.
Entre los dispositivos de carácter se pueden mencionar:
• Mouse: Es el segundo dispositivo de entrada más utilizado. El mouse o ratón es arrastrado a lo largo de una superficie para maniobrar un apuntador en la pantalla del monitor. Fue inventado por Douglas Engelbart y su nombre se deriva por su forma la cual se asemeja a la de un ratón.
• Monitores: El monitor ó pantalla de vídeo, es el dispositivo de salida más común. Hay algunos que forman parte del cuerpo de la computadora y otros están separados de la misma. Existen muchas formas de clasificar los monitores, la básica es en término de sus capacidades de color, pueden ser: Monocromáticos, despliegan sólo 2 colores, uno para el fondo y otro para la superficie. Los colores pueden ser blanco y negro, verde y negro ó ámbar y negro. Escala de Grises, un monitor a escala de grises es un tipo especial de monitor monocromático capaz de desplegar diferentes tonos de grises. Color: Los monitores de color pueden desplegar de 4 hasta 1 millón de colores diferentes
• Impresoras de Línea: de línea: Son rápidas y ruidosas. Tienen la desventaja de estar limitadas a la impresión de caracteres, por lo que no son apropiadas para aplicaciones donde los gráficos son un ingrediente esencial del producto acabado. imprimen una línea de puntos a la vez. Se alinean martillos similares a agujas sobre el ancho del papel.
• Tarjetas Perforadas: Habían, sido inventada en los años de la revolución industrial (finales del siglo XVIII) por el francés Jacquard y perfeccionado por el estadounidense Hermand Hollerith en 1890. Se usaron para acumular y procesar automáticamente gran cantidad de datos. Durante décadas, desde mediados de los cincuentas la tecnología de las tarjetas perforadas se perfeccionó con la implantación de más dispositivos con capacidades más complejas. Dado que cada tarjeta contenía en general un registro (Un nombre, dirección, etc.) el procesamiento de la tarjeta perforada se conoció también como procesamiento de registro unitario.

5.1.2 CONTROLADOR DE DISPOSITIVOS

Las unidades de entrada y salida constan por lo general de un componente mecánico y otro electrónico. El componente electrónico se llama controlador de dispositivo de adaptador.
La tarjeta controladora tiene por lo general un conector, en el que se puede conectar el cable que va al dispositivo en sí. Muchos controladores pueden manejar dos, cuatro y hasta ocho dispositivos idénticos. Si la interfaz entre el controlador y el dispositivo es estándar, ya sea un estándar oficial, de tipo ANSI, IEEE o ISO, o bien un estándar de hecho, entonces las compañías pueden fabricar controladores o dispositivos que se ajusten a esa interfaz.
Mencionamos esa distinción entre controlado y dispositivo por que el sistema operativo casi siempre trabaja con el controlador y no con el dispositivo. Casi todas las micro y mini computadoras utilizan el modelo de un bus para la comunicación entre la CPU y los controladores. Los grandes mainframes utilizan con frecuencia otro modelo, con varios buses y computadoras especializadas en Entrada y Salida llamadas canales de entrada y salida que toman cierta carga de entrada y salida fuera de la CPU principal.
La labor del controlador es convertir el flujo de bits en serie en un bloque de bytes y llevar a cabo cualquier corrección de errores necesaria. Lo común es que el bloque de bytes ensamble, bit a bit, en un buffer dentro del controlador. Después a verificar la suma y declarar al bloque libre de errores, se le puede copiar en la memoria principal.
El controlador de una terminal CRT también funciona como un dispositivo de bits en un nivel igual de bajo. Lee bytes que contienen caracteres a exhibir en la memoria y genera las señales utilizadas para modular la luz CRT para que esta se escriba en la pantalla. El controlador también genera las señales para que la luz CRT vuelva a realizar un trazo horizontal después de terminar una línea de rastreo, así como las señales para que se vuelva a hacer un trazo vertical después de rastrear en toda la pantalla. De no ser por el controlador CRT, el programador del sistema operativo tendría que programar en forma explicita el rastreo análogo del tubo de rayos catódicos. Con el controlador, el sistema operativo inicializa éste con pocos parámetros, tales como el número de caracteres por línea y el número de líneas en la pantalla, para dejar que el controlador se encargue de dirigir en realidad el rayo de luz.
Cada controlador tiene unos cuantos registros que se utiliza para la comunicación con la CPU. En ciertas computadoras, estos registros son parte del espacio normal de direcciones de la memoria.
El sistema operativo realiza la entrada y salida al escribir comandos en los registros de los controladores. Muchos de los comandos tienen parámetros, los cuales también se cargan de los registros del controlador. Al aceptar un comando, la CPU puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca la interrupción para permitir que el sistema operativo obtenga el control de la CPU y verifique los resultados de la operación. La CPU obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlado
El S. O. realiza la e / s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.
Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:
• Obtenga el control de la cpu.
• Verifique los resultados de la operación.
La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.
Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en la PC IBM pueden verse en la Tabla 5.1

5.2 PRINCIPIOS DE SOFTWARE DE ENTRADA-SALIDA

Los objetivos más importantes del software de E/S son:
Ocultar la complejidad del hardware a los procesos que se ejecutan por encima del sistema operativo.
Presentar una interfaz de E/S sencilla.
Para conseguir estos objetivos se estructura el software de E/S en capas, de forma que las capas inferiores ocultan la complejidad del hardware a las capas superiores y éstos se encargan de conseguir una interfaz sencilla.


Soft. de E/S a nivel de usuario
Soft. de E/S independiente del dispositivo
Manejadores de Dispositivos (driver)
Manejadores de Interrupciones
HARDWARE











MANEJADORES DE INTERRUPCIONES: Su principal objetivo es que el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar algunas tareas.

MANEJADORES DE DISPOSITIVOS: El driver es el software que se comunica con el hardware de E/S. Existe un driver para cada controlador que tengamos conectado a la computadora.
El driver:
Es el único software que conoce las características del dispositivo.
Programa al controlador imprimiendo en sus registros.
Se encarga de traducir peticiones del nivel superior
Encola las peticiones que van llegando para que el driver las trate más tarde.
Por ejemplo, si el sistema tiene tipos diferentes de discos duros, al usuario las diferencias técnicas entre ellos no le deben importar, y los drivers le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos.

SOFTWARE DE E/S INDEPENDIENTE DEL DISPOSITIVO: En esta capa se agrupa la mayor parte del software de E/S. Las funciones básicas de este nivel son:

Presentar una interfaz uniforme a los programas de usuario; la misma operación de entrada o de salida independientemente del dispositivo al que se desea acceder.
Identificar al dispositivo a partir del nombre simbólico; asignándoles nombres a los dispositivos.
Protección de los dispositivos; debe disponer de un sistema que permita determinar quien tiene acceso a qué dispositivos.
Tamaño de bloque; a los dispositivos de bloque los trata como si todos tuvieran el mismo tamaño de bloque (conocido como bloque lógico). El driver de cada uno de ellos es el encargado de comprobar si a cada uno de ellos le corresponde 1 o más sectores del disco.
Almacenamiento Intermedio; Si se solicita información de un bloque que está cargado en el caché su lectura no se ordena al driver pero si no está cargado en caché se ordena la lectura del bloque completo. (lecturas por adelantado).

SOFTWARE DE E/S EN ESPACIO DE USUARIO: Una porción pequeña del software de E/S se ejecuta a nivel de usuario. Consiste en bibliotecas que se enlazan con los programas de usuario. También el sistema de spooling o áreas de trabajo encolados, permite conseguir una explotación concurrente de dispositivos de acceso exclusivo, como por ejemplo la impresora.

5.2.1 OBJETIVOS DEL SOFTWARE DE E / S


Un concepto clave es la independencia del dispositivo:
• Debe ser posible escribir programas que se puedan utilizar con archivos en distintos dispositivos, sin tener que modificar los programas para cada tipo de dispositivo.
• El problema debe ser resuelto por el S. O.
El objetivo de lograr nombres uniformes está muy relacionado con el de independencia del dispositivo.
Todos los archivos y dispositivos adquieren direcciones de la misma forma, es decir mediante el nombre de su ruta de acceso.
Otro aspecto importante del software es el manejo de errores de e / s:
• Generalmente los errores deben manejarse lo más cerca posible del hardware.
• Solo si los niveles inferiores no pueden resolver el problema, se informa a los niveles superiores.
• Generalmente la recuperación se puede hacer en un nivel inferior y de forma transparente.
Otro aspecto clave son las transferencias síncronas (por bloques) o asíncronas (controlada por interruptores):
• La mayoría de la e / s es asíncrona: la cpu inicia la transferencia y realiza otras tareas hasta una interrupción.
• La programación es más fácil si la e / s es síncrona (por bloques): el programa se suspende automáticamente hasta que los datos estén disponibles en el buffer.
El S. O. se encarga de hacer que operaciones controladas por interruptores parezcan del tipo de bloques para el usuario.
También el S. O. debe administrar los dispositivos compartidos (ej.: discos) y los de uso exclusivo (ej.: impresoras).
Generalmente el software de e / s se estructura en capas (ver Figura 5.3 [23, Tanenbaum]):
• Manejadores de interrupciones.
• Directivas de dispositivos.
• Software de S. O. independiente de los dispositivos.
• Software a nivel usuario.

5.2.2 MANEJADORES DE INTERRUPCIÓN

Manejadores de interrupción

(interrupt handler). Un manejador de interrupciones, también conocido como ISR (interrupt service routine o rutina de servicio de interrupción), es una subrutina callback en un sistema operativo o en un controlador de dispositivo cuya ejecución es desencadenada por la recepción de una interrupción. Los manejadores de instrucciones tienen una multitud de funciones, que varían basadas en el motivo por el cual la interrupción fue generada y la velocidad en la cual el manejador de interrupciones completa su tarea.

Estos manejadores pueden ser iniciados por interrupciones de hardware o de software, y son usados para servir a los dispositivos de hardware y transiciones entre modos protegidos de operación como los llamados de sistema.


Las interrupciones deben ocultarse en el S. O.:
• Cada proceso que inicie una operación de e / s se bloquea hasta que termina la e / s y ocurra la interrupción.
• El procedimiento de interrupción realiza lo necesario para desbloquear el proceso que lo inicio.

5.2.3 MANEJADORES DE DISPOSITIVOS

Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.
Cada controlador posee uno o más registros de dispositivos:
• Se utilizan para darle los comandos.
• Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:
• Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
• Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a términos concretos:
• El manejador de disco debe:
o Estimar el lugar donde se encuentra en realidad el bloque solicitado.
o Verificar si el motor de la unidad funciona.
o Verificar si el brazo está colocado en el cilindro adecuado, etc.
o Resumiendo: debe decidir cuáles son las operaciones necesarias del controlador y su orden.
o Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
o Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
o Al finalizar la operación debe verificar los errores.
o Si todo esta o.k. transferirá los datos al software independiente del dispositivo.
o Regresa información de estado sobre los errores a quien lo llamó.
o Inicia otra solicitud pendiente o queda en espera.

5.2.4 SOFTWARE DE E / S INDEPENDIENTE DEL DISPOSITIVO

Funciones generalmente realizadas por el software independiente del dispositivo:
• Interfaz uniforme para los manejadores de dispositivos.
• Nombres de los dispositivos.
• Protección del dispositivo.
• Proporcionar un tamaño de bloque independiente del dispositivo.
• Uso de buffers.
• Asignación de espacio en los dispositivos por bloques.
• Asignación y liberación de los dispositivos de uso exclusivo.
• Informe de errores.
Las funciones básicas del software independiente del dispositivo son:
• Efectuar las funciones de e / s comunes a todos los dispositivos.
• Proporcionar una interfaz uniforme del software a nivel usuario.
El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado.
Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:
• Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.
• El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.
El software independiente del dispositivo debe:
• Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.
• Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico

5.2.5 ESPACIO DEL USUARIO PARA SOFTWARE DE E/S


Una pequeña porción de código se encuentra en espacio de usuario. Este código se presenta en forma de bibliotecas y archivos especiales (spooling).
Bibliotecas de Funciones
Entregan a los programas los métodos reales que provocan I/O. Estos pueden realizar una simple llamada a la syscall que aplica la operación, o pueden aplicar transformaciones a la entrada o salida según establezca el programador.
Ejemplos en stdio.h:
int cantidad = write(fd, buffer, numeroBytes);

printf(“Se han impreso %d bytes”, cantidad);
Una forma de realizar spooling es utilizar un directorio especial conocido como directorio de spooling, en conjunto con un proceso demonio llamado proceso de spooling.
Si se permitiese acceso al dispositivo directamente, un proceso podría adquirirlo y nunca liberarlo. Para evitar esto, se utiliza el modelo que los procesos escriben los datos en el directorio de spooling, el cual es luego leído por el proceso de spooling, el cual es el único autorizado para utilizar el dispositivo en cuestión.

5.3 DISCOS RAM



Un disco RAM o unidad RAM es una unidad de disco que usa una zona de memoria RAM del sistema como almacenamiento secundario en lugar de un medio magnético (como los discos duros y las disqueteras) o memoria flash, implementada como un controlador de dispositivo más. El tiempo de acceso mejora drásticamente, debido a que la memoria RAM es varios órdenes de magnitud más rápida que las unidades de disco reales. Sin embargo, la volatilidad de la memoria RAM implica que los datos almacenados en un disco RAM se perderán si falla la alimentación (por ejemplo, cuando el ordenador se apaga). Los discos RAM suelen usarse para almacenar datos temporales o para guardar programas descomprimidos durante cortos periodos.

Los discos RAM fueron populares como unidades de arranque en los años 1980, cuando los discos duros eran caros y las disqueteras demasiado lentas, por lo que unos pocos sistemas, como el Amiga y el Apple IIgs, soportaban arrancar desde un disco RAM. A cambio de dedicar un poco de memoria principal, el sistema podía realizar un reinicio en caliente y volver al sistema operativo en pocos segundos en lugar de minutos. Algunos sistemas contaban con discos RAM alimentados por baterías, de forma que sus contenidos no se perdían cuando el sistema se apagaban.

La adecuada implementación de un caché de disco suele obviar las motivaciones relacionadas con el rendimiento que impulsan a usar un disco RAM, adoptando un papel parecido (acceso rápido a los datos que en realidad residen en un disco) sin sus varias desventajas (pérdida de datos en caso de apagado, particionado estático, etcétera). Los discos RAM son, sin embargo, indispensables en situaciones en las que un disco físico no está disponible o en las que el acceso o cambios a éste no es deseable (como en el caso de un LiveCD). También pueden usarse en dispositivos de tipo quiosco, en los que los cambios hechos al sistema no se guardan en el disco físico y la configuración original del sistema se carga de éste cada vez que el sistema es reiniciado.

Otra forma de usar memoria RAM para almacenar ficheros es el sistema de ficheros temporal. La diferencia entre éste y un disco RAM es que el segundo es de tamaño fijo y funciona como una partición más, mientras el sistema de ficheros temporal cambia su tamaño bajo demanda para ajustarse al espacio necesario para albergar los ficheros guardados en él.

5.4 DISCOS DUROS


Un disco duro o disco rígido (en inglés hard disk drive) es un dispositivo no volátil, que conserva la información aun con la pérdida de energía, que emplea un sistema de grabación magnética digital. Dentro de la carcasa hay una serie de platos metálicos apilados girando a gran velocidad. Sobre los platos se sitúan los cabezales encargados de leer o escribir los impulsos magnéticos. Hay distintos estándares para comunicar un disco duro con la computadora; las interfaces más comunes son Integrated Drive Electronics (IDE, también llamado ATA) , SCSI generalmente usado en servidores, SATA, este último estandarizado en el año 2004 y FC exclusivo para servidores.
Tal y como sale de fábrica, el disco duro no puede ser utilizado por un sistema operativo. Antes se deben definir en él un formato de bajo nivel, una o más particiones y luego hemos de darles un formato que pueda ser entendido por nuestro sistema.
También existe otro tipo de discos denominados de estado sólido que utilizan cierto tipo de memorias construidas con semiconductores para almacenar la información. El uso de esta clase de discos generalmente se limitaba a las supercomputadoras, por su elevado precio, aunque hoy en día ya se puede encontrar en el mercado unidades mucho más económicas de baja capacidad (hasta 5121 GB) para el uso en computadoras personales (sobre todo portátiles). Así, el caché de pista es una memoria de estado sólido, tipo memoria RAM, dentro de un disco duro de estado sólido.
Su traducción del inglés es unidad de disco duro, pero este término es raramente utilizado, debido a la practicidad del término de menor extensión disco duro (o disco rígido)VER IMAGEN 5.5.

5.5.1 SOFTWARE PARA DISCOS

Todos los discos reales están organizados en cilindros, donde cada uno contiene tantas pistas como haya cabezas apiladas verticalmente. Las pistas se dividen en sectores, donde el número de sectores en torno a la circunferencia en comúnmente de 8 a 32. Todos los sectores contienen el mismo número de bytes. Los parámetros de un disco flexible de la IBM PC se muestran en la tabla siguiente.
Número de cilindros 40 Tiempo de localización (cilindros adyacentes) 6ms
Pistas por cilindro 2 Tiempo de localización (caso promedio) 77ms
Sectores por pista 9 Tiempo de rotación 200ms
Sectores por disquete 720 Tiempo de arranque/detención del motor 250ms
Bytes por sector 512 Tiempo para transferir un sector 22ms
Bytes por disquete 368640

5.4.2 HARDWARE DE DISCOS


Los discos están organizados en cilindros, pistas y sectores.
El número típico de sectores por pista varía entre 8 y 32 (o más).
Todos los sectores tienen igual número de bytes.
Los sectores cercanos a la orilla del disco serán mayores físicamente que los cercanos al anillo.
Un controlador puede realizar búsquedas en una o más unidades al mismo tiempo:
• Son las búsquedas traslapadas.
• Mientras el controlador y el software esperan el fin de una búsqueda en una unidad, el controlador puede iniciar una búsqueda en otra.
Muchos controladores pueden:
• Leer o escribir en una unidad.
• Buscar en otra.
Los controladores no pueden leer o escribir en dos unidades al mismo tiempo.
La capacidad de búsquedas traslapadas puede reducir considerablemente el tiempo promedio de acceso.
Operación de Almacenamiento de Disco de Cabeza Móvil
Los datos se graban en una serie de discos magnéticos o platos
El eje común de los discos gira a una velocidad del orden de las 4.000 o más revoluciones por minuto.

Se lee o escribe mediante una serie de cabezas de lectura - escritura (ver Figura 5.4 []):
• Se dispone de una por cada superficie de disco.
• Solo puede acceder a datos inmediatamente adyacentes a ella:
o La parte de la superficie del disco de donde se leerá (o sobre la que se grabará) debe rotar hasta situarse inmediatamente debajo (o arriba) de la cabeza de lectura - escritura.
o El tiempo de rotación desde la posición actual hasta la adyacente al cabezal se llama tiempo de latencia.
Todas las cabezas de lectura - escritura están montadas sobre una barra o conjunto de brazo móvil:
• Puede moverse hacia adentro o hacia afuera, en lo que se denomina operación de búsqueda.
• Para una posición dada, la serie de pistas accesibles forman un cilindro vertical.
A los tiempos de búsqueda y de latencia se debe agregar el tiempo de transmisión propiamente dicha
El tiempo total de acceso a un registro particular:
• Involucra movimientos mecánicos.
• Generalmente es del orden de centésimas de segundo, aunque el tiempo de latencia sea de algunas milésimas de segundo (7 a 12 aproximadamente).

5.5 RELOJES

Los relojes o cronómetros son esenciales para la operación de sistemas de tiempo compartido .
Registran la hora del día.
Evitan que un proceso monopolice la cpu.
El software para reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque ni de caracter.
Los relojes más sencillo trabajan con la línea de corriente eléctrica de 110 o 220 voltios y provocan una interrupción por cada ciclo de voltaje, a 50 o 60 hz.
Otro tipo de relojes consta de tres componentes:
• Un oscilador de cristal, un contador y un registro.
• Una pieza de cristal de cuarzo se monta en una estructura bajo tensión:
o Genera una señal periódica de muy alta precisión, generalmente entre 5 y 100 mhz.
o La señal se alimenta en el contador para que cuente en forma descendente hasta cero.
o Cuando el contador llega a cero, provoca una interrupción de la cpu.
Los relojes programables tienen varios modos de operación:
• Modo de una instancia:
o Cuando el reloj se inicializa, copia el valor del registro en el contador.
o Decrementa el contador en cada pulso del cristal.
o Cuando el contador llega a cero provoca una interrupción y se detiene hasta ser nuevamente inicializado por el software.
• Modo de onda cuadrada:
o Luego de llegar a cero y provocar la interrupción, el registro se copia de manera automática en el contador.
o Todo el programa se repite en forma indefinida.
o Las interrupciones periódicas se llaman marcas del reloj.
La ventaja del reloj programable es que su frecuencia de interrupción puede ser controlada por el software.
Las principales funciones del software manejador del reloj son:
• Mantener la hora del día o tiempo real.
• Evitar que los procesos se ejecuten durante más tiempo del permitido.
• Mantener un registro del uso de la cpu.
• Controlar llamadas al sistema tipo “alarm” por parte de los procesos del usuario.
• Proporcionar cronómetros guardianes de partes del propio sistema.
• Realizar resúmenes, monitoreo y recolección de estadísticas.
El software manejador del reloj puede tener que simular varios relojes virtuales con un único reloj físico.

5.5.2 SOFTWARE DE RELOJ

El software para reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque ni de caracter.
Las principales funciones del software manejador del reloj son:
• Mantener la hora del día o tiempo real.
• Evitar que los procesos se ejecuten durante más tiempo del permitido.
• Mantener un registro del uso de la cpu.
• Controlar llamadas al sistema tipo “alarm” por parte de los procesos del usuario.
• Proporcionar cronómetros guardianes de partes del propio sistema.
• Realizar resúmenes, monitoreo y recolección de estadísticas.

5.5.3 MANEJADOR DEL RELOJ

El software manejador del reloj puede tener que simular varios relojes virtuales con un único reloj físico.

Las funciones del manejador de reloj son, entre otras:

1. Conservación de la hora del día.

2. Prevención de que los procesos se ejecuten más tiempo del que tienen autorizados.

3. Conteo para uso de la CPU.

4. Manejo de la llamada al sistema alarm que hacen los procesos de los usuarios.

5. Provisión de cronómetros guardianes para cuidar partes del sistema en sí.

6. Realización de perfiles, monitoreo y recolección de estadísticas.

5.6 TERMINALES

Las terminales tienen gran número de formas distintas:
• El manejador de la terminal debe ocultar estas diferencias.
• La parte independiente del dispositivo en el S. O. y los programas del usuario no se tienen que reescribir para cada tipo de terminal.
Desde el punto de vista del S. O. se las puede clasificar en:
• Interfaz RS-232:
o Hardcopy (terminales de impresión).
o TTY “de vidrio” (terminales de video).
o Inteligente (computadoras con cpu y memoria).
• Interfaz mapeada a memoria:
o Orientada a caracteres.
o Orientada a bits.
Las terminales RS-232 poseen un teclado y un monitor que se comunican mediante una interfaz serial, un bit a la vez; las conversiones de bits a bytes y viceversa las efectúan los chips uart (transmisores - receptores asíncronos universales).
Las terminales mapeadas a memoria:
• No se comunican mediante una línea serial.
• Poseen una interfaz mediante una memoria especial llamada video RAM:
o Forma parte del espacio de direcciones de la computadora.
o La cpu se dirige a ella como al resto de la memoria.
o En la tarjeta de video RAM hay un chip llamado controlador de video:
 Extrae bytes del video RAM y genera la señal de video utilizada para manejar la pantalla.
 El monitor genera un rayo de electrones que recorre la pantalla pintando líneas.
 Cada línea está constituida por un cierto número de puntos o pixeles.
 La señal del controlador de video modula el rayo de electrones y determina si un pixel debe estar o no iluminado.
 Los monitores de color poseen tres rayos (rojo, verde y azul) que se modulan independientemente.
En las pantallas mapeadas a caracteres:
• Cada caracter en la pantalla equivale a dos caracteres de RAM:
o Uno aloja al código (ASCII) del caracter por exhibir.
o Otro es el byte de atributo, necesario para determinar el color, el video inverso, el parpadeo, etc.
En las terminales mapeadas a bits:
• Se utiliza el mismo principio.
• Cada bit en el video RAM controla en forma directa un solo pixel de la pantalla.
• Permite una completa flexibilidad en los tipos y tamaños de caracteres, varias ventanas y gráficos arbitrarios.
Con las pantallas mapeadas a memoria, el teclado se desacopla totalmente de la pantalla:
• El teclado dispone de su propio manejador.
• El manejador del teclado puede operar en modo caracter o en modo línea.
Las terminales pueden operar con una estructura central de buffers o con buffers exclusivos para cada terminal.

5.6.1 HARDWARE DE TERMINALES

HARDWARE DE TERMINALES
Frecuentemente los manejadores de terminales soportan operaciones tales como:
• Mover el cursor hacia arriba, abajo, a la izquierda o a la derecha una posición.
• Mover el cursor a x,y.
• Insertar un caracter o una línea en el cursor.
• Eliminar un caracter o una línea en el cursor.
• Recorrer la pantalla hacia arriba o hacia abajo “n” líneas.
• Limpiar la pantalla desde el cursor hacia el final de la línea o hasta el final de la pantalla.
• Trabajar en modo de video inverso, subrayado, parpadeo o normal.
• Crear, construir, mover o controlar las ventanas.

5.6.2 MANEJADORES

Proporcionan operaciones de alto nivel sobre los dispositivos y las traducen en su ámbito interno a operaciones de control de cada dispositivo particular.

Cada uno de estos componentes se considera un objeto del sistema, por lo que habitualmente todos los sistemas operativos permiten modificar el sistema operativo de forma estática o dinámica para reemplazar, añadir o quitar manejadores de dispositivos. Sin embargo, por razones de seguridad no se permite a las aplicaciones de usuario acceder directamente a los dispositivos, sino a través de la interfaz de llamadas al sistema.

jueves, 19 de noviembre de 2009

UNIDAD 4: ADMINISTRACION DE LA MEMORIA

4.1GESTION DE MEMORIA
• Memoria Principal


– Área de almacenamiento dividido en unidades a las que se puede referenciar a través de una dirección.

– Recurso básico: Para que un programa se ejecute debe encontrarse en memoria principal, al menos, una parte

• Gestor de Memoria

– Parte del Sistema Operativo que se encarga de las tareas relacionadas con la administración de la Memoria Principal.

– Dependencia total del Hardware

• Según sea este, será el tipo de gestión de memoria

• Tareas del Gestor de Memoria

– Asignación de Memoria Principal a los procesos que la solicitan

– Localización de espacios libres, y ocupados

– Aprovechamiento máximo de dicha memoria

• Relación con otras partes del sistema operativo

Planificadores

2. Requisitos de un Sistema de Gestión de Memoria

• Reubicación o Correspondencia

– El programador debe trabajar al margen de la localización de su código en memoria

– El gestor de memoria (HW+SW) debe establecer la correspondencia de direcciones lógicas y físicas

• Protección

– El gestor de memoria debe proteger las zonas asignadas a cada proceso de accesos por parte de terceros.

• Compartición

– El gestor de memoria debe permitir compartición de memoria entre varios procesos.

• Organización lógica

– El gestor de memoria debe comprender la organización lógica formada por módulos que tienen los programas (texto, datos, procedimientos, pila...)

• Organización física

– Debe encargarse de la localización de espacios libres en memoria principal donde cargar los programas.

– Debe poder proporcionar un mecanismo para poder ejecutar programas cuyo tamaño supere el de la propia memoria principal (Memoria Virtual)

4.1.1 ORGANIZACION DE LA MEMORIA



En primer lugar tenemos que distinguir claramente entre tres tipos de memoria:


Una: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podrá ser leida por el pic (el pic va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra. Dos: la memoria RAM en cuyos registros se irán almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra. Tres: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratará aquí por ser una memoria mas difícil de emplear.



El límite original de direccionamiento de la PC-XT, basado en el procesador

8088, era de 1 MB (AB = 20 bits). Por otra parte el procesador Motorola 68000

(usada en la Mac y Amiga, por ejemplo) contó desde sus comienzos con un límite de

memoria de 16 MB. Estas cotas fijaban la capacidad de ambos procesadores de

direccionar tanto Memoria de Datos como Memoria de Programa.

Los primeros 640 KB (en el caso de la línea Intel) de la memoria RAM se

transformaron en el área de memoria para el Sistema Operativo (S.O.) y los programas

de aplicación, conocida como la memoria convencional.

Figura 4.1

La diferencia entre el límite fijado por los 20 bits del bus de direcciones y la

memoria convencional, es lo que se conoce como memoria superior. Se trataba de un

área asignada a diferentes dispositivos periféricos tales como extensiones de la ROM,

buffer de video, adaptadores para dispositivos periféricos, controladores de red, etc.

Sin embargo gran parte de esta zona quedaba en la mayoría de los casos

desaprovechada, lo que indujo a que posteriores versiones del MS-DOS (versión 5.0

en adelante) hicieran uso de estos bloques libres, cargando el S.O., controladores de

dispositivos y programas residentes en los mismos (dichos bloques son conocidos

como UMB).

Los procesadores 80286 en adelante permiten trabajar en lo que se llama modo

protegido para alcanzar direcciones mayores al megabyte. O sino, bajo un esquema de

mapeo de memoria similar al del 8088, se torna al modo real.

La memoria que se puede acceder en modo real, con el uso de lo que se conoce

como manejadores de memoria, se llama memoria extendida (XMS). Ésta es

sumamente necesaria, por ejemplo, para correr aplicaciones for Windows. Los

primeros 64 KB de memoria extendida es lo que se denomina memoria alta (HMA).

La memoria expandida (EMS) se instala en una tarjeta de EMS y viene

incorporada a su administrador. Los programas emplean EMS en bloques de 64 KB

dirigiéndose a una parte del área de memoria superior llamada marco de página EMS,

debido a que un administrador de memoria EMS proporciona acceso sólo a una

cantidad limitada de memoria expandida.

4.1.2 ADMINISTRADOR DE LA MEMORIA

El Administrador De Memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible.



Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria más extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.



Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.



Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilización del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común.



La administración de memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor forma posible el espacio disponible. Existen cuatro tipos de esquema s de asignación de memoria, estos esquemas de la administración de la memoria rara vez se utilizan en los sistemas operativos actuales.
Configuración de un solo usuario
Particiones fijas
Particiones dinámicas
Particiones dinámicas reubicables
Ya que estos eran utilizados en los primeros sistemas de computo. Pero es importante su estudio, ya que cada uno introdujo conceptos fundamentales que ayudaron a la evolución de la administración de la memoria.

ESQUEMA CONTIGUO DE USUARIO UNICO
El primer esquema de asignación de la memoria funcionaba de la siguiente manera:
Si el programa era demasiado grande y no cabía en el espacio de memoria disponible, no se podía ejecutar. A pesar de que las primeras computadoras eran demasiado grandes tenían muy poca memoria.
Esto demuestra un factor limitante para todas las computadoras, tiene una cantidad finita de memoria y si un programa no cabe, hay que incrementar el tamaño de la memoria principal o modificar el programa.
PARTICIONES FIJAS
El primer intento para posibilitar la multiprogramación fue la creación de las particiones fijas o estáticas, en la memoria principal, una partición para cada tarea. El tamaño de la partición se especificaba al encender el sistema, cada partición podía reconfigurarse al volver encender el sistema o reiniciar el sistema.
Este esquema introdujo un factor esencial, la protección del espacio de memoria para la tarea. Una vez asignada una partición a una tarea, no se permitía que ninguna otra tarea entrara en sus fronteras.
Este esquema de partición es mas flexible que la de usuario único, por que permite que varios programas estén en memoria al mismo tiempo.
PARTICIONES DINÁMICAS
Con las particiones dinámicas, la memoria principal disponible aun se conserva en bloques contiguos, pero a las tareas nada mas se les da memoria que solicitan cuando se cargan para su procesamiento. Aunque es una mejoría significativa en relación con las particiones fijas, no se elimina el problema de las mismas.
Un esquema de particiones dinámicas utiliza toda la memoria al cargar las primeras tareas, pero conforme entran nuevas tareas en el sistema que no son del mismo tamaño de las que acaban de salir de la memoria se acomodan en los espacios disponibles de acuerdo con su prioridad.
PARTICIONES DINÁMICAS RE LOCALIZABLES
Con este esquema de asignación de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacios y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar.
La compactación no es una tarea sencilla. Primero, todos los programas en memoria se deben relocalizar, de manera que queden contiguos; luego hay que ajustar cada dirección y cada referencia a una dirección en todo programa para tomar en consideración la nueva localización del programa en memoria.
ADMINISTRACIÓN DE LA MEMORIA SISTEMAS RECIENTE
ASIGNACIÓN DE LA MEMORIA EN PÁGINAS
Se basa en el concepto de dividir cada tarea de llegada en páginas de igual tamaño. Algunos sistemas operativos escogen el tamaño de la página igual al tamaño de bloque de memoria. Que es el tamaño de las secciones de disco en las cuales se almacena la tarea.

Las secciones de un disco se conocen como “sectores”. Y los sectores de la memoria principal se denominan marcos de página.

Antes de ejecutar un programa, el administrador de la memoria lo prepara mediante:

1.-la determinación del número de páginas del programa.

2.-la ubicación de suficientes marcos de pagina vacios en la memoria principal.

3.-la carga de todas las páginas del programa de los mismos.



PAGINACIÓN POR DEMANDA
La paginación por demanda introdujo la idea de cargar nada más una porción del programa en la memoria para su procesamiento. Fue el primer esquema ampliamente utilizado que elimino la necesidad de colocar toda la tarea en la memora desde el principio hasta el final.
Ejemplo: cuando los usuarios escogen la primera opción del menú de un programa de aplicación, los otros módulos que no se requieren en ese momento se pueden extraer de la memoria y cargar de nuevo cuando sean llamados. No requiere todas las páginas al mismo tiempo.
1.- Los módulos de manejo de errores escritos por el usuario se procesan solo cuando se detectan un error específico durante la ejecución.
2.-Muchos módulos son mutuamente excluyentes.
3.- Ciertas opciones de programa son excluyentes entre si o no resultan siempre accesibles.

ASIGNACIÓN DE MEMORIA EN SEGMENTOS
El concepto de segmentación se basa en la práctica común entre los programadores de estructurar programas en módulos, agrupamientos lógicos de código. Con la asignación de memoria en segmentos, cada tarea se divide en varios segmentos de tamaños diferentes, uno por cada modulo que contiene piezas que ejecutan funciones relacionadas.
La tabla de tareas lista todas las tareas en proceso.
La tabla de mapa de segmentos lista detalles sobre cada segmento.
La tabla de mapa de memoria vigila la asignación de la memoria.
Es una combinación de segmentos y de paginación por demanda y ofrece los beneficios lógicos de la segmentación y las ventajas físicas de la paginación.

4.1.3 JERARQUIA DE MEMORIA



Jerarquía de memorias


En el diseño del sistema informático, en lo que a la decisión de la memoria a utilizar, se ha de encontrar un compromiso entre su capacidad y su velocidad. Ocurre que en algunas situaciones se necesita una gran capacidad de almacenamiento (es el caso de la memoria secundaria) y en otros es conveniente una mayor velocidad (memoria principal, caché, etc..).

La memoria secundaria trata de proveer una gran capacidad de almacenamiento (sacrificando la velocidad), mientras que la memoria que almacena la información que se está procesando en un determinado momento ha de ser rápida aunque no cuente con una gran capacidad.

Desde el punto de vista de la ejecución de un programa, no todos los datos son accedidos con la misma frecuencia estadística. Datos próximos (e instrucciones próximas) tienen una mayor probabilidad de ser accedidos. Por esta razón las cachés, aunque no cuentan con una capacidad suficiente como para almacenar un proceso en ejecución, aumentan notablemente la velocidad del sistema informático.

Actualmente se suelen utilizar dos niveles de caché en los ordenadores domésticos. La caché de primer nivel está integrada en el interior del µP, la caché de segundo nivel normalmente está integrada en la placa base o bien en el circuito impreso que contiene a la CPU.

4.1.4 ESTRATEGIAS PARA LA ADMINISTRACION DE MEMORIA

Se dividen en las siguientes categorías:

• Estrategias de búsqueda:

o Estrategias de búsqueda por demanda.
o Estrategias de búsqueda anticipada.
• Estrategias de colocación.
• Estrategias de reposición.

Las “estrategias de búsqueda” están relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.

En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia.

Se considera que la “búsqueda anticipada” puede producir un mejor rendimiento del sistema.

Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.

Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.


4.1.5 MULTIPROGRAMACIÓN DE PARTICIÓN FIJA, PARTICIÓN VARIABLE CON INTERCAMBIO DE ALMACENAMIENTO.



MULTIPROGRAMACIÓN CON PARTICIONES FIJAS

El sistema de multiprogramación en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema. El trabajo está esperando la terminación de una operación E/S cederá la CPU a otro trabajo que este listo para realizar cálculos. Si es que hay una espera. De esta forma pueden efectuarse simultáneamente las operaciones de E/S y cálculos de la CPU.
PROTECCION EN LOS SISTEMAS CON MULTIPROGRAMACIÓN.

En os sistemas con multiprogramación contigua, la protección se logra a menudo con varios registros de limites. Con dos registros se puede establecer los límites superior e inferior de la partición de un usuario o se puede indicar el límite inferior y la longitud de la región.


FRAGMENTACIÓN EN LA MULTIPROGRAMACIÓN CON PARTICIONES FIJAS.
La fragmentación de almacenamiento ase presenta en todos los sistemas de cómputo, sea cual sea la organización de su almacenamiento. En los sistemas con multiprogramación y particiones fijas, la fragmentación ocurre porque los trabajos de los usuarios no llenan por completo las particiones designadas o porque una partición se queda sin utilizar por ser demasiado pequeña para contener un trabajo en espera.

MULTIPROGRAMACIÓN CON PARTICIONES VARIABLES

Esta hace suposiciones sobre el tamaño de los trabajos. Llega un espacio cuando lo necesite. No hay desperdicio, pues la partición de un trabajo tiene exactamente el tamaño del trabajo.
COMPACTACION DE ALMACENAMIENTO

La técnica de compactación del almacenamiento implica trasladar todas las áreas ocupadas del almacenamiento a algún extremo de la memoria principal. Esto deja un gran vació único de almacenamiento libre, en lugar de los numerosos vacíos pequeños característicos de la multiprogramación con particiones variables. Ahora todo el almacenamiento libre está contiguo, así que un trabajo en espera puede ejecutarse si sus necesidades de memoria son satisfechas por el hueco único resultante de la compactación.


MULTIPROGRAMACIÓN CON INTERCAMBIO DE ALMACENAMIENTO

En el esquema de “intercambio” los programas del usuario no requieren permanecer en la memoria principal hasta su terminación. Una variante consiste en que un trabajo se ejecuta hasta que ya no pueda continuar: Cede el almacenamiento y la CPU al siguiente trabajo. La totalidad del almacenamiento se dedica a un trabajo durante un breve periodo de tiempo. Los trabajos son “intercambiados”, dándose que un trabajo puede ser intercambiado varias veces antes de llegar a su terminación.

Los sistemas de intercambio fueron los predecesores de los sistemas de paginación.

Manteniendo al mismo tiempo varias “imágenes de usuario o imágenes de memoria” en la memoria principal.

Retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento para una nueva imagen.

Incrementando la cantidad de memoria principal disponible en el sistema.

Las imágenes de usuario (imágenes de memoria) retiradas del almacenamiento principal se graban en el almacenamiento secundario (discos)


4.2 MEMORIA VIRTUAL

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. 


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

4.2.1 Administracion de memoria con mapas de bits

Administración de la memoria con mapas de bits



Podemos dividir la memoria en pequeñas unidades, y registrar en un mapa de bits las unidades ocupadas y desocupadas. Las unidades pueden ser de unas pocas palabras cada una, hasta de un par de KB. A mayor tamaño de las unidades, menor espacio ocupa el mapa de bits, pero puede haber mayor fragmentación interna. Desventaja: para encontrar hoyo de n unidades hay que recorrer el mapa hasta encontrar n ceros seguidos (puede ser caro).










Con un mapa de bits, la memoria se divide en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y El tamaño de la unidad de asignación es un aspecto importante del diseño. Mientras más pequeña sea esta unidad, más grande será el mapa de bits. Una memoria de 32n bits utilizará n bits del mapa, de forma que dicho mapa sólo ocupa 1/33 de la memoria. Si la unidad de asignación es grande el mapa de bits será pequeño, pero se podría desperdiciar una parte valiosa de la memoria en la última unidad si el tamaño del proceso no es un múltiplo exacto de la unidad de asignación.


Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamaño del mapa sólo depende del tamaño de la memoria y del tamaño de la unidad de asignación. El problema principal de esto es que, cuando se decide traer a la memoria un proceso de k unidades, el administrador de la memoria debe buscar en el mapa una cadena de k ceros consecutivos.

La búsqueda en un mapa de bits de ciertas cadenas es una operación lenta, por lo que los mapas no se utilizan con frecuencia.




4.2.2 Administracion de memoria con listas enlazadas





Otra forma es con una lista enlazadas: estado (ocupado o en uso), dirección (de inicio), tamaño. Cuando un proceso termina o se pasa a disco, si quedan dos hoyos juntos, se funden en un solo segmento. Si la lista se mantiene ordenada por dirección, podemos usar uno de los siguientes algoritmos para escoger un hoyo donde poner un nuevo proceso.













 First-fit.
Asignar el primer hoyo que sea suficientemente grande como para contener al proceso.


Best-fit.
Asignar el menor hoyo en el que el proceso quepa.


Worst-fit.
 Asignar el mayor hoyo.


Cada vez que se asigna un hoyo a un proceso, a menos que quepa exactamente, se convierte en un segmento asignado y un hoyo más pequeño. Best-fit deja hoyos pequeños y worst-fit deja hoyos grandes. Simulaciones han mostrado que first-fit y best-fit son mejores en términos de utilización de la memoria. First-fit es más rápido .

 

 



Cada entrada de la lista especifica un hueco (H) o un proceso (P), la dirección donde comienza, su longitud y un apuntador a la siguiente entrada.


La lista de segmentos está ordenada por direcciones. Este orden tiene la ventaja de que al terminar o intercambiar un proceso, la actualización de la lista es directa.


Cuando los procesos y los huecos se mantienen en una lista ordenada por direcciones, se pueden utilizar diversos algoritmos para asignar la memoria para un proceso de reciente creación o intercambio


Algoritmo primero en ajustarse.

El administrador de la memoria revisa toda la lista de segmentos hasta encontrar un espacio lo suficientemente grande. El espacio se divide entonces en dos partes, una para el proceso y otra para la memoria no utilizada, excepto por el caso poco probable de un ajuste exacto. Este algoritmo es rápido, puesto que busca lo menos posible.

4.2.3 Distribucion del espacio para el intercambio

Los grupos de software son colecciones de paquetes que admiten distintas funciones y controladores de hardware.



Para una instalación inicial, debe seleccionar el grupo de software que se va a instalar basándose en las funciones que desea realizar en el sistema.


En el caso de una modernización, deberá realizarla al grupo de software instalado en el sistema. por ejemplo, si ha instalado previamente en el sistema el grupo de software Usuario final, no puede usar la opción de modernización especificando el grupo de software. Sin embargo, durante la modernización puede agregar software al sistema que no forme parte del grupo de software instalado en ese momento.

Al instalar el software, puede elegir, agregar o suprimir paquetes del grupo de software que haya seleccionado. Para ello es necesario que conozca las dependencias de software y la manera como está empaquetado el software.


La compatibilidad reducida de red contiene el número mínimo de paquetes y el grupo completo de software más compatibilidad contiene todos los paquetes.








Las recomendaciones sobre el espacio de disco


  • Espacio de intercambio 
  • Modificaciones 
  • Paquetes adicionales de software
Es posible que descubra que los grupos de software necesitan menos espacio en disco







4.3 MEMORIA VRTUAL

La memoria virtual es una técnica para proporcionar la ilusión de un espacio de memoria mayor que la memoria física, sin tener en cuenta el tamaño de la memoria física.



Está soportada por el mecanismo de traducción de memoria, junto con un almacenamiento rápido en disco duro (swap).


El espacio de direcciones virtual, está mapeado de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco.


4.3.1 Paginacion memoria virtual

  • Igual que la paginación simple.
  • No es necesario cargar todas las páginas.
  • Las páginas no residentes se cargan por demanda.







Ventajas.

No fragmentación externa. Alto grado de multiprogramación. Gran espacio virtual para el proceso.



Desventaja.

Sobrecarga por gestión compleja de memoria.




Cada proceso tiene su propia tabla de paginas.








Si la pagina no se modifica, al realizarse el swap a disco no se necesitara copiar desde la memoria principal a la memoria secundaria.



Ocurre cuando se referencia a una dirección virtual y ella no reside en la memoria real, se presenta una interrupción fallo de página.

TAMAÑO DE PAGINAS

Páginas pequeñas



Menos fragmentación interna.


Más páginas para el proceso.


Muchas páginas por proceso.


La tabla de paginas crecerá en tamaño.


Se necesita mas MV para carga la tabla.


El fallo de página se reduce.


Páginas grandes


Mas fragmentación interna.


C/página contiene mas porciones del proceso.


Se ocupa memoria innecesariamente.


El fallo de página se incrementa.


4.3.2 Segmentacion memoria virtual

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. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. La segmentación permite alcanzar los siguientes objetivos:




1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.


2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.


3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.


4. Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.


5. Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.








  • Igual que la segmentación simple.
  • No es necesario cargar todos los segmentos. 
  • Las segmentos se cargan por demanda. 
  • Segmentos de tamaño dinámico, según la demanda.
  • Se puede alterar los programas y recompilarlos independientemente.


Tabla de Segmentos


El SO debe mantener una lista de huecos libres.

Un bit expresa si el segmento se encuentra ya en memoria.
Un bit expresa si el segmento ha sido modificado.





 






4.3.3 Algoritmos de Sustitución de Páginas

El SO perfecto eliminaría siempre la página menos necesaria, aquella que en el futuro resultará ser la última en ser usada de todas las existentes en la tabla




En la práctica, la mejor estrategia es aquella que tenga el menor número de fallas-de-página, i.e. page-fault rate








 
Primera en entrar, primera en salir (FIFO, First In, First Out)
 
 
En este método el sistema operativo sólo tiene que guardar en qué orden las páginas fueron cargadas, de modo que al necesitar hacer espacio pueda fácilmente elegir la primera página cargada. Se usa una cola, al cargar una página nueva se ingresa en el último lugar. Aunque las colas FIFO son simples e intuitivas, no se comportan de manera aceptable en la aplicación práctica, por lo que es raro su uso en su forma simple. Uno de los problemas que presentan es la llamada Anomalía FIFO o Anomalía de Belady. Belady encontró ejemplos en los que un sistema con un número de marcos de páginas igual a tres tenía menos fallos de páginas que un sistema con cuatro marcos de páginas. El problema consiste en que podemos quitar de memoria una página de memoria muy usada, sólo porque es la más antigua.





Segunda oportunidad

Es una pequeña modificación al algoritmo FIFO, que funciona bastante mejor que aquel. En este caso cuando una página debe ser sacada se toma la primera en la cola, y en vez de sacarla, consulta el valor de un bit de referencia. En caso de estar fijado (en 1) se cambia el bit a 0 y se lo coloca al final de la cola, actualizando su tiempo de carga como si recién hubiera llegado a la memoria. De esta forma, se le da una segunda oportunidad. Si el bit se encuentra sin fijar(en 0), la página se saca de memoria. Cada vez que la MMU accede a una página, fija su bit de referencia a 1. Para esto es necesario soporte para bit de referencia por hardware.











Reloj

Existe una variante de este algoritmo que sobre la misma idea presenta una mejora en la implementación. Es el algoritmo del reloj, que lo que hace es tener una lista circular, de forma que al llegar al último elemento de la lista, pasa automáticamente al primero. Los elementos no se mueven al final de la cola cuando son accedidos, simplemente se pone su bit de referencia a 1. Esto nos evita tener que hacer movimientos de punteros en el caso de implementarlo con una lista enlazada. De hecho, se puede implementar con un array perfectamente, ahorrando así memoria.








No usada recientemente (Not Recently Used, NRU)

Este algoritmo favorece a las páginas que fueron usadas recientemente. Funciona de la siguiente manera: cuando una página es referenciada, fija el bit de referencia para esa página. Similarmente, cuando una página es modificada, fija su bit de modificación. Usualmente estas operaciones son realizadas por el hardware, aunque puede hacerse también por software. En un tiempo fijo, el sistema operativo pone en 0 los bits de referencia de todas las páginas, de modo que las páginas con su bit de referencia en 1 son las que fueron referenciadas dentro del último intervalo de reloj. Cuando una página debe ser reemplazada, el sistema operativo divide las páginas en cuatro categorías:






  • Categoría 0: no referenciada, no modificada


  • Categoría 1: no referenciada, modificada


  • Categoría 2: referenciada, no modificada


  • Categoría 3: referenciada, modificada



Las mejores páginas para cambiar son las que se encuentran en la categoría 0, mientras que las peores son las de la categoría 3. Se desaloja al azar una página de la categoría más baja que no esté vacía. Este algoritmo se basa en la suposición de que es mejor desalojar una página modificada a la que no se ha hecho referencia en al menos un tic de reloj, en vez de una página limpia que se está usando mucho.




Menos usada recientemente (Least Recently Used, LRU)


Este algoritmo difiere del de 'No usada recientemente' en el hecho de que aquel sólo se fija en el intervalo de tiempo desde que se pusieron en 0 los bits de referencia de las páginas, mientras que el algoritmo de 'Menos usada recientemente' intenta proveer un comportamiento casi óptimo mediante la observación de las páginas que menos fueron usadas recientemente. Este tipo de páginas, estadísticamente son las que tienen menor probabilidad de ser usadas nuevamente.