You are on page 1of 49

Document1

1 Esquema Bsico
Una computadora debe estar formada por: Procesador Memoria Componentes de E / S

Procesador.- Controla la operacin de la computadora y ejecuta sus funciones de procesamiento de datos. Memoria principal.- Almacena datos y programas. Es tpicamente voltil; se le conoce como memoria real o memoria primaria. Mdulos de E / S.- Mueven datos entre la computadora y su ambiente externo, esto incluye: - Dispositivos de memoria secundaria. - Equipo de comunicaciones. - Terminales. Interconexin del sistema.- Una parte de la estructura y mecanismos que proporcionan comunicacin entre procesadores, memoria principal y mdulos de E / S.

2. Trminos de Hardware y Software


Compaginacin del almacenamiento. Su funcin es para acelerar el acceso al almacenamiento primario. Coloca localidades de memoria adyacentes en diferentes bancos de almacenamiento, de manera que puedan estar en curso varias referencias al mismo tiempo. Registro de relocalizacin. Permite relocalizar de forma dinmica los programas. La direccin base de un programa en la memoria principal se sita en el registro de relocalizacin. Escrutinio. Es una tcnica para permitir que una unidad verifique el estado de otra unidad de funcionamiento independiente. Interrupciones. Evento que altera la secuencia normal de ejecucin de un programa.

Buffer. Es un rea de almacenamiento primario, destinada a contener datos durante la transferencia de entrada / salida. Buffer simple, el canal deposita datos en el buffer, el procesador procesa estos datos, el canal deposita nuevos datos, etc. Mientras el canal deposite datos no puede tener lugar ningn procesamiento de esos datos; mientras los datos estn siendo procesados no pueden ser depositados datos adicionales. Un sistema de buffer doble permite la sobreposicin de las operaciones de entrada / salida con el procesamiento; mientras el canal esta depositando datos en un buffer, el procesador puede estar procesando los datos del otro buffer. Dispositivos perifricos. Equipos de entrada / salida y almacenamiento. En el caso de almacenamiento Permiten almacenar de grandes cantidades de informacin fuera del almacenamiento primario del computador. Los discos son dispositivos de acceso directo, que permiten hacer referencia a grupos de datos individuales sin necesidad de buscar en orden a travs de todos los grupos de datos del disco.

Document1

Proteccin del almacenamiento. Limita el nmero de direcciones que un programa puede referenciar. La proteccin del almacenamiento puede ser implementada por medio de registros de lmites, los cuales define las direcciones superior e inferior del bloque de almacenamiento. Un temporizador de intervalos es til en sistemas de usuarios mltiples para prevenir que un solo usuario monopolice un procesador. Un reloj horario provee los medios para que el computador pueda hacer un seguimiento de la hora del reloj de pared. Algunos dispositivos perifricos estn equipados para operacin en lnea, en la cual estn conectados al procesador, o para operacin fuera de lnea, en la cual son manejados por unidades de control que no estn conectadas al sistema computacional central. Mientras estaba en marcha la entrada/salida, los procesadores estaban incapacitados por su manejo. Un importante adelanto para modificar esta situacin fue el desarrollo de los canales de entrada/salida. Un canal es un sistema computacional de propsito especial, dedicado al maneo de la entrada/salida con independencia del procesador principal. Un canal puede tener acceso directo al almacenamiento principal para almacenar o recuperar informacin. Un punto de conflicto entre los canales y el procesador esta en el acceso al almacenamiento primario. Como no puede estar en marcha ms que un solo acceso de cada vez, se da prioridad a los canales. Esto se llama robo de ciclo; los canales, literalmente, roban ciclos al procesador. Los canales utilizan slo un pequeo porcentaje de ciclos, pero al recibir la prioridad de esta manera, se consigue una mejor utilizacin de los dispositivos de entrada/salida. Al hacerse evidente la necesidad de almacenamientos primarios mayores, la arquitectura de los computadores se modific para acomodar una capacidad muy grande direcciones. Para obtener grades capacidades de direcciones, los sistemas utilizan direccionamiento de base ms desplazamiento, en las cuales todas las direcciones son aadidas al contenido de un registro base. Este esquema tiene la ventaja adicional de hacer a los programas independientes de la localizacin, una propiedad particularmente valiosa para programas dentro de ambientes de usuarios mltiples, en los cuales un programa puede necesitar se situado en diferentes localizaciones de almacenamiento primario cada vez que es cargado. Los sistemas computacionales suelen tener varios estados de ejecucin. Para programas de usuarios, el subconjunto de instrucciones que ste puede ejecutar en estado de problema impide, por ejemplo, la ejecucin directa de instrucciones de entrada/salida. En general, el sistema operativo corre con la categora de usuario de mayor confianza en un estado supervisor o modo kernel; tiene acceso a todas las instrucciones del conjunto de instrucciones del a mquina. Los compiladores e interpretes corren en modo usuario. Intrucciones privilegiadas, aquellas instrucciones a las que no se tiene acceso en estado de problema. Los sistemas de almacenamiento virtual permiten a los programas referenciar direcciones que no necesitan corresponder con las direcciones reales disponibles en el almacenamiento primario. Las direcciones virtuales desarrolladas por los programas en ejecucin son traducidas dinmicamente por el hardware a las direcciones de instrucciones y datos del almacenamiento principal. En los sistemas de multiprocesamiento varios procesadores comparten un almacenamiento primario comn y un solo sistema operativo. El multiprocesamiento crea las posibilidades de cierto tipo de conflictos que no se presentan en sistemas de un solo procesador. Es necesario secuencializar el acceso a una localizacin de almacenamiento compartido de manera que dos procesadores no intente modificarla al mimo tiempo.
2

Document1

Acceso directo a la memoria (DMA) requiere una sola interrupcin por cada bloque de caracteres transferidos durante la operacin de entrada/salida. Canalizacin. Es una tcnica de hardware utilizada en sistemas computacionales de elevado rendimiento, para explotar ciertos tipos de paralelismos durante el procesamiento de instrucciones. Almacenamiento primario, almacenamiento secundario y almacenamiento cache. Para que un programa pueda hacer referencia a ciertas instrucciones y datos, stos deben ser colocados en el almacenamiento primario. El almacenamiento secundario consta de cintas, discos, etc., y otros medios diseados para retener informacin, a la que se tendr acceso eventualmente en el almacenamiento primario. El cache es un almacenamiento muy veloz diseado para aumentar la velocidad de ejecucin de los programas. Lenguaje de mquina es el lenguaje de programacin que un computador puede comprender directamente. Los lenguajes ensambladores utilizan abreviaturas y palabras significativas para reemplazar las hileras de nmeros usadas par escribir los programas en lenguaje de mquina. Se desarrollaron para aumentar la velocidad de proceso de programacin y reducir los errores de codificacin. Un programa llamado ensamblador traduce los programas al lenguaje de mquina. Los lenguajes de alto nivel permiten a los usuarios escribir programas de modo independiente de la mquina. Los lenguaje de alto nivel son traducidos al lenguaje de mquina por medio de programas llamados compiladores. Los compiladores y ensambladores se denominan genricamente traductores. Durante el proceso de traduccin, el programa escrito por el usuario que es introducido al traductor se llama programa fuente; el programa en lenguaje de mquina producido por el traductor se llama programa objeto o programa resultante. El programa supervisor para manejar las complejidades de la entrada/salida eliminando la carga al programa de aplicaciones se denomina sistema de control de entrada/salida. SPOOL. Simultaneos Peripheral Operation On Line. Operacin simultnea de perifricos en lnea. El interprete no produce un programa objeto, ms bien ejecuta directamente un programa fuente. El programa del sistema llamado cargador, es un programa que coloca las instrucciones y datos de un programa dentro de localizaciones del almacenamiento principal. Los cargadores de enlace y editores de enlace se encargar de combinar el programa en lenguaje de mquina producido por un traductor con otros programas en lenguaje de mquina para formar una unidad de ejecucin. La emulacin es una tcnica por medio de la cual se hace que una mquina aparente ser otra.

3. Breve Historia de las computadoras


Antes de la era computacional: Joseph-Marie Jacquard- Almacenamiento de instrucciones en 1801. Telares estampados para producir diferentes dibujos utilizando tarjetas perforadas. Charles Babbage (1791-1871) . Diseo de la mquina analtica diferencial. Idea del almacenamiento fsico de las instrucciones. Ada Lovelace. 1er. Programa informtico para la computadora de Babbage- Sin sistema operativo.

Document1

Generacin 0 (Dcada de los 40s) 1943 Se desarrolla Colosus 1. Computadora totalmente 1946 J. Presper Eckert y John Mauchly crearon ENIAC (Electronic numerical integrator and calculator) capaz de realizar 5000 clculos por segundo, 50 toneladas de peso, 20 m2 de espacio y 18000 tubos de vaco. No hay sistema operativo. Se utiliza lenguaje mquina. Se introducen programas y datos bit por bit mediante switches mecnicos. Introduccin de cintas y tarjetas perforadas. John von Newman, introduce el concepto de software: programa de instruccin que se introducen en la misma forma que los datos numricos. Se comienza el desarrollo del os lenguajes ensambladores.

Generacin 1 (Dcada de los 50s) General Motors Research Laboratories implant el 1er. Sistema operativo en una IBM701 Ejecucin de una sola tarea a la vez. Se inicia el uso de procesamiento por lotes de secuencia nica. Se logra cierta fluidez entre los trabajos.

Generacin 2 (1. Mitad de los 60s) Aparece la multiprogramacin. Inicia el multiprocesamiento. Aparece el tiempo compartido (time-sharing). Se generan lo primeros sistemas de tiempo real. Independencia de dispositivos. En 1965 aparecen las minicomputadoras.

Generacin 3 (2. Mitad de los 60s y 1. Mitad de los70s) Aparece el sistema 360 de la IBM, conocido como el OS/360. Computadoras grandes y costosas. Lentitud y alto porcentaje de error y falla. Aparece la ingeniera de software. Cambios de personal provocan desechar sistemas completos. Surgen los mtodos disciplinados y estandarizados par construir software confiable, comprensible y fcil de entender. Aparecen las microcomputadoras.

Generacin 4 (2. Mitad de los 70s hasta nuestros das). Reafirmacin de la familia de computadoras IBM 360 Separacin de costos del software y hardware Antes: o El software era gratis. o El vendedor no era responsable del software. o Se le entregaba una lista de errores a los clientes
4

Document1

Cambi a : o El vendedor se responsabiliz del software o Se generaron industrias independientes del software (Microsoft, Ashton-Tate, McAffee o Generalizacin de separacin de costo o Seleccin de software por parte de usuario. o Primeras licencias para software. Tendencias futuras: Precio de hardware a la baja. Tamao fsico disminuido. Aumento en velocidad de procesamiento y capacidad de almacenamiento. Muy comn el multiprocesamiento. Funciones del Sistema Operativo realizadas por software migrarn al microcdigo. Estimulacin computacional de usuario final. Aumento de la cultura computacional. Continuacin del desarrollo de sistemas paralelos

Evolucin del Hardware Bulbos -> Transistores -> Circuitos integrados -> Circuitos integrados de muy grande escala.

4. Introduccin
Qu es un sistema operativo? Un sistema operativo es un programa que acta como intermediario entre el usuario de un computador y el hardware de ste. El propsito del sistema operativo es crear un entorno en el que un usuario pueda ejecutar programas. El objetivo primario de un sistema operativo es hacer al sistema de computador cmodo de usar. Un objetivo secundario es utilizar el hardware de computador de forma eficiente. Para entender qu son los sistemas operativos, primero debemos entender cmo se han desarrollado. Los componentes de los sistemas operativos han evolucionado como soluciones naturales a los problemas que aquejaban a los primeros computadores. Componente de un sistema de cmputo: el hardware, el sistema operativo, los programas de aplicacin( o del usuario), y los usuarios. El hardware la unidad central de proceso(CPU), la memoria y los dispositivos de entrada/salida (E/S) proporcionan los recursos de computacin bsicos. Los programas de aplicacin como los compiladores, sistemas de base de datos, juegos y programas de negocios definen las formas en que dichos recursos se utilizan para resolver los problemas de computacin de los usuarios. Puede haber muchos tipos de usuarios (personas, mquinas, otros computadores) tratando de resolver diferentes problemas; por ello, hay muchos tipos de programas de aplicacin. El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicacin de los distintos usuarios. Un sistema operativo es similar a un gobierno. Los componentes de un sistema de computador son su hardware, software y datos. El sistema operativo proporciona los medios para aprovechar adecuadamente esos recursos durante el funcionamiento del sistema de computador. Podemos ver el sistema operativo como un administrador de recursos. Un sistema de computacin tiene muchos recursos (hardware y software) que pueden ser necesarios para resolver un problema: tiempo de CPU, espacio de memoria, espacio de almacenamiento de archivos, dispositivos de E/S, y dems. El
5

Document1

sistema operativo acta como gestor de dichos recursos y los asigna a programa y usuarios especficos segn los necesiten para sus tareas. Debe decidir cules solicitudes atender asignando recursos para operar el sistema de computacin de manera eficiente y justa. El sistema operativo necesita controlar los diversos dispositivos de E/S y programas de usuario. Un sistema operativo es un programa de control, que controla la ejecucin de los programas de los usuarios a fin de evitar errores y el uso incorrecto del computador. El objetivo primario de un sistema operativo es la comodidad del usuario. Los sistema operativos existen porque se supone que es ms fcil realizar tareas de cmputo con ellos que sin ellos. Un objetivo secundario es la operacin eficiente del sistema de computacin. La importancia de este objetivo crece en los sistemas multiusuario compartidos grandes, que suelen ser muy costosos, por lo que es deseable aumentar su eficiencia al mximo posible. Los sistemas operativos y la arquitectura de las computadoras han influido mucho uno sobre el otro. Los sistemas operativos se crearon para facilitar el uso del hardware. A medida que se disearon y usaron los sistemas operativos, se hizo evidente que podran simplificarse si se modificaba el diseo del hardware.

4.1 Tipos de sistemas operativos:


a) b) c) d) e) f) g) Sistemas por lotes sencillos. Sistemas por lotes multiprogramados. Sistemas de tiempo compartido Sistemas de computador personal. Sistemas paralelos. Sistemas distribuidos. Sistemas de tiempo real.

4.1.1 Sistemas por lotes sencillos


Los primeros computadores eran mquinas enormes (fsicamente) que se controlaban desde una consola. Los dispositivos de entrada comunes eran lectores de tarjetas y unidades de cinta. Los dispositivos de salida comunes eran impresoras de lneas, unidades de cinta y perforadoras de tarjetas. Los usuarios de tales sistemas no interactuaban directamente con los computadores: - El usuario preparaba un trabajo que consista en el programa, los datos, y cierta informacin de control acerca de la naturaleza del trabajo (tarjetas de control) - Lo entregaba al operador del computador. - El trabajo casi siempre se presentaba en forma de tarjetas perforadas. - En algn momento posterior (minutos, horas o das despus), apareca la salida, que consista en el resultado del programa junto con un vaciado ( o vuelco de) del a memoria y los registros en caso de haber un error de programa. Funcin del Sistema Operativo: Transferir el control automticamente de un trabajo al siguiente. El sistema operativo siempre estaba (residente) en la memoria. A fin de agilizar el procesamiento, los programas con necesidades similares se agrupaban en lotes y se introducan en el computador como un grupo. As, los programadores dejaban sus programas con el operador; ste acomodaba los programas para formar lotes con necesidades similares y, cuando el computador quedaba disponible, ejecutaba cada lote. La salida de cada trabajo se devolva al programador apropiado. As pues, un sistema operativo por lotes normalmente lee un flujo de trabajos individuales (de un lector de tarjetas, por ejemplo), cada uno con sus propias tarjetas de control que predefinen lo que le trabajo hace. Una vez terminado el trabajo, si salida generalmente se imprime ( en una impresora de lneas, por ejemplo). La caracterstica definitiva de un sistema por lotes es la falta de interaccin entre el usuario y el trabajo mientras ste se ejecuta.
6

Document1

Tiempo de retorno: El retardo entre la presentacin de un trabajo y su terminacin (puede ser el resultado del volumen de computo requerido, o de retardos antes de que el sistema operativo comience a procesar el trabajo. En este entorno de ejecucin, la CPU con frecuencia est ociosa. Esta inactividad ocurre porque los dispositivos de E/S mecnicos son intrnsecamente ms lentos que los dispositivos electrnicos. Con el paso del tiempo, las mejoras a la tecnologa dieron pie a dispositivos de E/S ms rpidos. Desafortunadamente, las velocidades de CPU aumentaron a un ritmo an mayor, de modo que le problema no slo no se resolvi, sino que se exacerb. La introduccin de la tecnologa de discos ha sido til en este sentido. En vez, de leer las tarjetas directamente del lector a la memoria, para despus procesar el trabajo, las tarjetas pueden leerse del lector al disco. As mismo, cuando el trabajo solicita la impresin de una lnea, esa lnea se copia en un buffer del sistema y se escribe en el disco. Una vez que el trabajo termina, la salida se imprime realmente. Esta forma de procesamiento, se llama spooling; es un acrnimo de operacin perifrica simultnea en lnea (en ingls, simultaneous peripheral operaton on-line). En esencia, el disco se utiliza como buffer de gran tamao, para leer por adelantado hasta donde sea posible de los dispositivos de entrada, y para guardar los archivos de salida hasta que los dispositivos de salida puedan aceptarlos. El spooling tambin sirve para procesar datos en sitios remotos. El spooling superpone la E/S de un trabajo al cmputo de otros trabajos.

4.1.2 Sistemas por lotes multiprogramados


El spooling da origen a una importante estructura de datos: la reserva de trabajo. Como resultado del spooling, puede haber varios trabajos ya ledos esperando en el disco, listos para ejecutarse. Al tener reserva de trabajos en disco, el sistema operativo puede escoger cul trabajo ejecutar a continuacin, a fin de mejorar el aprovechamiento de la CPU. Si los trabajos llegan directamente en tarjetas o incluso en cinta magntica, no es posible ejecutarlos en un orden distinto. Los trabajos se deben ejecutar secuencialmente, bajo un rgimen de servicio por orden de llegada. En cambio, si varios trabajos estn en un dispositivo de acceso directo, como un disco, es posible la planificacin de trabajos. El aspecto ms importante de la planificacin de trabajos es la capacidad de multiprogramar. La operacin fuera de lnea y el spooling para traslapar la E/S tiene sus limitaciones. En general, un solo usuario no puede mantener ni la CPU ni los dispositivos de E/S ocupados todo el tiempo. La multiprogramacin aumenta el aprovechamiento de la CPU organizando los trabajos de tal forma que la CPU siempre tenga uno que ejecutar. La idea es la siguiente. El sistema operativo mantiene varios trabajos en la memoria a la vez. Este conjunto de trabajos es un subconjuntos de los que se mantienen en la reserva de trabajos. El sistema operativo escoge uno del os trabajos que estn en la memoria y comienza a ejecutarlo. Tarde o temprano, el trabajo tendr que esperar mientras se lleva a cabo alguna tarea, como el montaje de una cinta o la terminacin de una operacin de E/S. En un sistema sin multiprogramacin, la CPU estara ociosa. En un sistema multiprogramado, el sistema operativo simplemente selecciona otra trabajo y lo ejecuta. Cuando ese trabajo necesita esperar, la CPU se conmuta a otro trabajo, y as sucesivamente. En algn momento, el primer trabajo terminar su espera y recuperar la CPU. En tanto haya algn trabajo que ejecutar, la CPU nunca estar ociosa. La multiprogramacin es el primer caso en que el sistema operativo debe tomar decisiones por los usuarios. Todos los trabajos que ingresan en el sistema se mantienen en un rea auxiliar de trabajos. Esta rea auxiliar consiste en todos los procesos que residen en le almacenamiento masivo y que esperan la asignacin de espacio en la memoria principal. Si varios trabajos estn listos para colocarse en la memoria, y no hay espacio suficiente para todos, el sistema deber escoger algunos de entre ellos. La toma de esta decisin es la planificacin de trabajos. Cuando el sistema operativo escoge un trabajo del rea auxiliar, lo carga en la memoria para ejecutarlo. Tener varios programas en la memoria al mismo tiempo requiere alguna forma de gestin de memoria. Adems, si varios trabajos estn listos para ejecutarse al
7

Document1

mismo tiempo, el sistema debe escoger entre ellos. La toma de esta decisin es la planificacin de CPU. La ejecucin concurrente de mltiples trabajos requiere limitar su capacidad para afectarse mutuamente en todas las fases del sistema operativo, incluidos la planificacin de proceso, el almacenamiento en disco y la gestin de memoria.

4.1.3 Sistemas de tiempo compartido


Los sistemas por lotes multiprogramados proporcionan un entorno en el que los distintos recursos del sistema (por ejemplo, CPU, memoria, dispositivos perifricos) se aprovechan de manera efectiva. No obstante, los sistemas por lotes tiene ciertos problemas desde el punto de vista del usuario. - El usuario no puede interactuar con el trabajo durante su ejecucin - Debe preparar las tarjetas de control de modo que manejen todos los resultados posibles. - Puede ser difcil definir cabalmente lo que debe hacerse en todos los casos. - Los programas se deben depurar estticamente, a partir de vuelcos instantneos. - El programador no puede modificar un programa durante su ejecucin a fin de estudiar su comportamiento. - Si el tiempo de retorno es largo, se inhibe la experimentacin con los programas. - Se obliga a tener cierta disciplina en la escritura y prueba de los programas. El tiempo compartido, o multitareas, es una extensin lgica de la multiprogramacin. Se ejecutan mltiples trabajos mientras la CPU se conmuta entre ellos, pero la conmutacin es tan frecuente que los usuarios pueden interactuar con cada programa durante su ejecucin. Un sistema de computador interactivo, o manual, permite la comunicacin en lnea entre el usuario y el sistema. El usuario da instrucciones al sistema operativo o a un programa directamente, y recibe una respuesta inmediata. Cuando el sistema operativo termina de ejecutar una orden, busca el siguiente enunciado de control no de un lector de tarjetas, sino del teclado del usuario. El usuario introduce una orden, espera la respuesta, y decide cul ser la siguiente orden, con base en el resultado anterior. Para el usuario es fcil experimentar, y puede ver los resultados de inmediato. La mayor parte de los sistemas cuenta con un editor de textos interactivo para introducir programas, y un depurador interactivo para ayudar a corregir los errores de los programas. Para que los usuarios puedan acceder con comodidad tanto a los datos como al cdigo, deben contar con un sistema de archivos en lnea. Un archivo es una coleccin de informacin relacionada definida por su creador. Por lo regular, los archivos representan programas (en sus formas tanto fuente como objeto) y datos. Los archivos de datos pueden ser numricos, alfabticos o alfanumricos. Los archivos pueden ser de forma libre, como los de texto, o tener un formato rgido. En general, un archivo es una secuencia de bits, bytes, lneas o registros cuyo significado ha sido definido por su creador y usuarios. El sistema operativo implementa el concepto abstracto de archivo administrando los dispositivos de almacenamiento masivo, como cintas y discos. Los archivos normalmente se organizan en grupos lgicos, o directorios, que facilitan su localizacin y acceso. Puesto que varios usuarios tienen acceso a archivos, es deseable controlar quin puede acceder a los archivos y de qu formas puede hacerlo. Los sistemas por lotes son apropiados para ejecutar trabajos grandes que casi no necesitan interaccin. No es necesario que el usuario espere mientras se procesa el trabajo. Los trabajos interactivos suelen consistir en muchas acciones cortas, y los resultados de la siguiente orden podran ser impredecibles. El usuario introduce la orden y espera los resultados. Por consiguiente, el tiempo de respuesta debe ser corto. Se emplea un sistema interactivo cuando se requiere un tiempo de respuesta corto. Los primeros computadores de un solo usuario fueron sistemas interactivos. Esto es, todo el sistema estaba a la inmediata disposicin del programador/operador. Esta situacin brindaba al programador gran flexibilidad y libertad para probar y desarrollar programas. Este sistema haca que la CPU permaneciera mucho tiempo ociosa mientras esperaba que el programador/operador hiciera algo. En vista del levado
8

Document1

costo de esos computadores, la ociosidad de la CPU era muy indeseable. Se desarrollaron los sistemas operativos por lotes para evitar este problema. Los sistemas de tiempo compartido se crearon para brindar el uso interactivo de un sistema de computador a un costo razonable. Un sistema operativo de tiempo compartido utiliza planificacin de la CPU y multiprogramacin para ofrecer a cada usuario una pequea porcin del tiempo de un computador. Cada usuario tiene por lo menos un programa individual en la memoria. Un programa que est cargado en la memoria y se est ejecutando se conoce como proceso. Los investigadores han intentado fusionar los sistemas por lotes y de tiempo compartido. Muchos sistemas de computador que se disearon primordialmente como sistemas por lotes se han modificado para crear un subsistema de tiempo compartido. Al mismo tiempo, son varios los casos de sistemas de tiempo compartido a los que se ha aadido un subsistema por lotes. Los sistemas operativos de tiempo compartido son todava ms complejos que los multiprogramados. Al igual que en la multiprogramacin, es preciso mantener varios trabajos simultneamente, lo que requiere alguna forma de gestin y proteccin de memoria. Para poder lograr un tiempo de respuesta razonable, podra ser necesario intercambiar trabajos entre la memoria principal y el disco que ahora funciona como almacn de respaldo de la memoria principal. Un mtodo comn para lograr este objetivo es la memoria virtual, una tcnica que permite ejecutar un trabajo que tal vez no est en su totalidad en la memoria principal (Cap. 9 Memoria Virtual Gestin de almacenamiento). La principal ventaja obvia de este esquema es que los programas pueden ser ms grandes que la memoria fsica. Adems, la memoria principal se abstrae como una matriz grande y uniforme de almacenamiento, separando la memoria lgica que el usuario ve, de la memoria fsica. Esta organizacin permite a los programadores olvidarse de las limitaciones de almacenamiento en memoria. Los sistemas de tiempo compartido tambin necesitan un sistema de archivos en lnea (Caps. 10 Interfaz con el sistema de archivos y 11 Implementacin del sistema de archivos Gestin de almacenamiento). El sistema de archivos reside en una coleccin de discos, as que tambin debe incluirse la gestin de discos (Cap. 13 Estructuras del almacenamiento secundario Sistemas de E/S). Adems, los sistemas de tiempo compartido cuentan con un mecanismo de ejecucin concurrente, lo que requiere esquemas de planificacin del a CPU avanzados (Cap. 5 Planificacin de la CPU Gestin de procesos). Para asegurar una ejecucin ordenada, el sistema debe incluir mecanismos para la sincronizacin y comunicacin de los trabajos (Cap. 6 Sincronizacin de procesos Gestin de procesos), y debe asegurar que los trabajos no se atasquen en un bloqueo mutuo, esperando cada uno eternamente a que el otro termine (Cap. 7 Bloqueos mutuos Gestin de procesos).

4.1.4 Sistemas de computador personal


Sistemas de computacin dedicados a un solo usuario. Estos tipos de sistemas se conocen como computadores personales (PC, personal computer). Los computadores personales aparecieron en la dcada de 1970. Se trata de microcomputadores mucho ms pequeos y econmicos que los sistemas de macrocomputador (mainframes). Durante su primera dcada, las CPU de los PC carecan de las funciones necesarias para proteger el sistema operativo de los programas de usuario. Por ello, los sistemas operativos de PC no eran ni multiusuarios ni multitareas. No obstante, los objetivos de estos sistemas operativos han cambiado con el tiempo; en lugar de maximizar el aprovechamiento de la CPU y los perifricos, los sistemas optan por maximizar la comodidad del usuario y la rapidez con que responden a sus necesidades. Los sistemas operativos para estos computadores se han beneficiado con el desarrollo de sistemas de sistemas operativos para macrocomputadores de varias manera. Los microcomputadores pudieron adoptar de inmediato la tecnologa desarrollada para sistemas operativos ms grandes. Por un lado, los costos del hardware de microcomputador son los bastante bajos como para que individuos utilicen exclusivamente el computador, y el aprovechamiento de la CPU ha dejado de ser una preocupacin central. Por ello, algunas de las decisiones de diseo que se toman en los sistemas operativos para macrocomputadores podran no ser apropiadas para sistemas ms pequeos. Por ejemplo, la proteccin de archivos podra no ser necesaria en una mquina personal.
9

Document1

Por ejemplo, aunque aparentemente la proteccin de archivos no es necesaria en computadores personales aislados, es comn que estos computadores se vinculen con otros a travs de lneas telefnicas o redes de rea local. Si otros computadores y otros usuarios pueden acceder a los archivos de un computador personal, la proteccin de archivos vuelve a ser una funcin necesaria de un sistema operativo. La carencia de tal proteccin ha facilitado la destruccin de datos en sistemas como MS-DOS y el sistema operativo por parte de programas mal intencionados. Estos programas pueden ser del tipo que se reproducen a s mismos, y difundirse rpidamente por mecanismos de gusano o virus para daar compaas enteras o incluso redes mundiales. (Cap. 19 y 20 Proteccin y seguridad). Funciones que en otras pocas eran exclusivas de los macrocomputadores han sido adoptadas por los microcomputadores. Al mismo tiempo que la escala de las caractersticas de los sistemas operativos grandes se estaba recudiendo para ajustarlas a los computadores personales, se estaban desarrollando sistemas de hardware ms potentes, rpidos y complejos. A medida que el hardware y el software de los PC se hace ms complejo, la lnea que divide las dos categoras se est desvaneciendo.

4.1.5 Sistemas paralelos


La mayor parte de los sistemas hasta ahora han sido sistemas monoprocesador; es decir, han tenido una sola CPU. Sin embargo, la tendencia actual es hacia los sistemas multiprocesador. Tales sistemas tiene ms de un procesador en comunicacin ntima, los cuales comparten el bus del computador, el reloj y a veces la memoria y los dispositivos perifricos. Decimos que estos sistemas estn fuertemente acoplados. Razones para construir este tipo de sistemas: - Una ventaja es el aumento en el rendimiento. Al incrementar el nmero de procesadores, la proporcin de aumento de la velocidad con n procesadores no es n, sino ms bien n. - Los multiprocesadores tambin pueden ahorrar dinero en comparacin con varios sistemas monoprocesador porque los procesadores pueden compartir perifricos, gabinetes y fuentes de potencia. Si varios programas deben operar con el mismo conjunto de datos, es ms econmico guardar esos datos en un disco y hacer que todos los procesadores los compartan, en vez de tener muchos computadores con discos locales y hacer copias de los datos. - Los sistemas multiprocesador mejoran la confiabilidad. Si es posible distribuir las funciones correctamente entre varios procesadores, el fallo de un procesador no detendr el sistema, solo lo har ms lento. La capacidad para seguir dando un servicio proporcional al nivel de hardware que sobrevive se denomina degradacin gradual. Los sistemas diseados para degradarse gradualmente tambin se conocen como tolerantes a fallos (fault-tolerant). El funcionamiento continuado en presencia de fallos requiere un mecanismo para detectar, diagnosticar y corregir (si es posible) el fallo. El sistema Tandem utiliza duplicacin tanto de hardware como de software para asegurar una operacin continuada a pesar de los fallos. El sistema consiste en dos procesadores idnticos, cada uno con su propia memoria local. Los procesadores se conectan con un bus. Un procesador es el primario, y el otro es el de respaldo. Se mantienen dos copias de cada proceso; una en la mquina primaria y otra en el respaldo. En puntos de verificacin (checkpoints) fijos durante la ejecucin del sistema, la informacin de estado de cada trabajo (incluida una copia de la imagen de memoria) se copia de la mquina primaria a la de respaldo. Si se detecta un fallo, se activa la copia de respaldo, y se reinicia a partir del punto de verificacin ms reciente. Esta solucin obviamente es costosa, ya que hay mucha duplicacin de hardware. Los sistemas de mltiple procesador ms comunes en la actualidad siguen el modelo de multiprocesamiento simtrico, en el que cada procesador ejecuta una copia idntica del sistema operativo, y estas copias se comunican entre s cuando es necesario. Algunos sistemas utilizan multiprocesamiento asimtrico, en el que a cada procesador se asigna a una tarea especfica. Un procesador controla el sistema; los dems procesadores obtienen sus instrucciones del maestro o bien tiene tareas predefinidas.
10

Document1

Este esquema define una relacin maestro-esclavo. El procesador maestro planifica y asigna trabajo a los procesadores esclavos. Ejemplo: La ventaja de este modelo es que muchos procesos pueden ejecutarse simultneamente (N procesos si hay N CPU) sin que haya deterioro del desempeo. Sin embargo, es preciso controlar cuidadosamente la E/S para asegurar que los datos lleguen al procesador apropiado. Adems, dado que las CPU son independientes una podra estar ociosa mientras otra est sobrecargada, con la siguiente ineficiencia. A fin de evitar esto, los procesadores pueden compartir ciertas estructuras de datos. Un sistema multiprocesador de este tipo permite compartir dinmicamente trabajos y recursos entre los distintos procesadores, y puede reducir la varianza entre los sistemas. (Cap. 6 Sincronizacin de procesos Gestin de procesos). El multiprocesamiento asimtrico es ms comn en los sistemas extremadamente grandes, donde una de las actividades que ms tiempo consume es el procesamiento de E/S. En los sistemas por lotes ms antiguos, se utilizaban procesadores pequeos, situados a cierta distancia de la CPU principal, para operar los lectores de tarjetas e impresoras de lneas y transferir estos trabajos a y de el computador principal. Estos puntos se denominan sitios de entrada remota de trabajos (RJE, remote-job-entry). En un sistema de tiempo compartido, una de las principales actividades de E/S es procesar la E/S de caracteres entre las terminales y el computador. Si es preciso interrumpir la CPU principal cada vez que se transfiere un carcter a o de una terminal, la CPU podra pasar todo su tiempo procesando caracteres. Para evitar esta situacin, la mayor parte de los sistemas cuenta con un procesador de extremo frontal (front-end) aparte que se encarga de toda la E/S de terminales. Es importante darse cuenta de que la diferencia entre multiprocesamiento simtrico y asimtrico puede deberse al hardware o la software. Podra existir hardware especial para diferenciar los mltiples procesadores, o podra escribirse software que permita un solo maestro y varios esclavos. A medida que baja el precio y aumenta la potencia de los microprocesadores, ms y ms funciones del sistema operativo se delegan a procesadores esclavos, tambin llamados back-ends o procesadores de servicios. Por ejemplo, es fcil aadir un procesador con su propia memoria para administrar un sistema de disco. El microprocesador podra recibir una secuencia de solicitudes de la CPU principal e implementar su propia cola de disco y algoritmo de planificacin. Esta organizacin evita a la CPU principal el trabajo extra que implica la planificacin de disco. Los PC contienen un microprocesador en el teclado que convierte las digitaciones en cdigos que se envan a la CPU. De hecho, este uso de los microprocesadores se ha vuelto tan comn que ya no se considera como multiprocesamiento.

4.1.6 Sistemas distribuidos


Una tendencia en los sistemas de computador es distribuir el cmputo entre varios procesadores. En los cuales los procesadores no comparten la memoria ni el reloj. En vez de ello, cada procesador tiene su propia memoria local. Los procesadores se comunican entre s a travs de diversas lneas de comunicacin, como buses de alta velocidad o lneas telefnicas. Solemos decir que tales sistemas estn dbilmente acoplados o distribuidos. Los procesadores de un sistema distribuido pueden tener diferentes tamaos y funciones; pueden incluir microprocesadores pequeos, estaciones de trabajo, minicomputadores y sistema de computador de propsito general grandes. Tales procesadores reciben varios nombres distintos, como sitios, nodos, computadores, etc., dependiendo del contexto en el que se mencionan. Razones para construir sistemas distribuidos: Recursos compartidos. Si varios sitios distintos (con diferentes capacidades) se conectan entre s, un usuario de un sitio prodra aprovechar los recursos disponibles. Computacin ms rpida. Si un calculo se puede dividir en varios subclculos susceptibles de ejecucin concurrente, un sistema distribuido podra permitirnos distribuir el clculo entre los distintos sistios, y ejecutarlo de forma concurrente.
11

Document1

Confiabilidad. Si un sitio de un sistema distribuido falla, los sistemas restantes podran seguir funcionando. Comunicacin. Si muchos sitios estn conectados a travs de una red de comunicaciones, los procesos de diferentes sitios tiene la oportunidad de intercambiar informacin. (Cap. 15 Estructuras de redes, Cap. 16 Estructuras de sistemas distribuidos, Cap. 17 sistemas de archivos distribuidos, Cap. 18 Coordinacin distribuida)

4.1.7 Sistemas de tiempo real


Se usa un sistema de tiempo real cuando los requisitos de tiempo de la operacin de un procesador o del flujo de datos son estrictos, se utilizan como dispositivos de control en aplicaciones dedicadas. Los sensores envan datos al computador, el cual debe analizar estos datos y posiblemente ajustar controles a fin de modificar las entradas de los sensores. Los sistemas que controlan experimentos cientficos, los que producen imgenes mdicas, los de control industrial y algunos sistemas de exhibicin son sistemas de tiempo real. Esta clasificacin tambin incluye algunos sistemas de inyeccin de combustible para motores de automviles, controladores de aparatos domsticos y sistemas de armamentos. Un sistema operativo de tiempo real tiene restricciones de tiempo fijas bien definidas. El proceso debe efectuarse dentro de los intervalos definidos, o el sistema fallar. Se considera que un sistema de tiempo real est funcionando correctamente slo si produce el resultado correcto dentro de los intervalos de tiempo estipulados. Podemos contrastar este requisito con un sistema de tiempo compartido, en el que es deseable (pero no obligatorio) responder rpidamente, o con un sistema por lotes, en el que tal vez no haya restricciones de tiempo. Hay dos tipos de sistemas de tiempo real. Un sistema de tiempo real duro garantiza que las tareas crticas se terminarn a tiempo. Este objetivo requiere que todos los retardos del sistema estn limitados, desde la obtencin de datos almacenados hasta el tiempo que el sistema operativo tarda en atender cada solicitud que se le presenta. Tales restricciones de tiempo determinan los recursos que estn disponibles en este tipo de sistemas. El almacenamiento secundario de cualquier ndole suele estar limitado o ausente, y los datos se almacenan de preferencia en memoria de corto plazo o en memoria slo de lectura (ROM, read-only memory). La ROM se encuentra en dispositivos de almacenamiento no voltil que conserva su contenido aun en caso de fallar el suministro de electricidad; casi todos los dems tipos de memoria son voltiles. Tambin est ausente la mayor parte de las funciones avanzadas de los sistemas operativos, ya que tienden a separar al usuario an ms del hardware, y tal separacin causa incertidumbre acerca del tiempo que una operacin tarda. Por ejemplo, los sistemas de tiempo real casi nunca tienen memoria virtual. Por ello, los sistemas de tiempo real duros son incompatibles con el funcionamiento de los sistemas de tiempo compartido, y no pueden combinarse con ellos. Un tipo menos restrictivo de sistema de tiempo real es el de tiempo real blando, en el que una tarea de tiempo real crtica goza de prioridad respecto a otras tareas, y conserva esa prioridad hasta que se lleva a cabo. Al igual que en los sistemas de tiempo real duros, es preciso limitar los retardos del ncleo; no es posible mantener a una tarea de tiempo real esperando indefinidamente a que le ncleo la ejecute. El tiempo real blando es una meta alcanzable que puede combinarse con otros tipos de sistemas. reas que pueden ser tiles, como multimedia, realidad virtual y proyectos cientficos avanzados como la exploracin submarina y planetaria. La proliferacin del uso de funciones de tiempo real blando ha hecho que se incluyan en la mayor parte de los sistemas operativos actuales.

5 Estructuras del Sistema Operativo


Hay varias perspectivas desde las que podemos considerar un sistema operativo. Una consiste en examinar los servicios que proporciona. Otra es explorar la interfaz que ofrece a los usuarios y programadores. Una tercera consiste en desglosar el sistema en sus componentes y estudiar sus interconexiones. Veremos qu
12

Document1

servicios proporciona un sistema operativo, cmo los proporciona y qu metodologas se emplean para disear tales sistemas.

5.1 Componentes del sistema 5.1.1 Gestin de procesos


Un programa no puede hacer nada si la CPU no ejecuta sus instrucciones. Podemos pensar en un proceso como una porcin de un programa en ejecucin o todo el programa. Un trabajo por lotes es un proceso. Un programa de usuario de tiempo compartido es un proceso. Una tarea del sistema, como poner un spool las salidas a una impresora, tambin es un proceso. Podemos considerar que un proceso es un trabajo que se ejecuta por lotes o un programa que se ejecuta en tiempo compartido. Un proceso necesita ciertos recursos, incluidos tiempo de CPU, memoria, archivos y dispositivos de E/S, para llevar a cabo su tarea. El sistema operativo se encarga de las siguientes actividades relacionadas con la gestin de procesos: Crear y eliminar procesos tanto de usuarios como del sistema. Suspender y reanudar procesos. Proveer mecanismos para la sincronizacin de procesos. Proveer mecanismos para la comunicacin entre procesos. Proveer mecanismos para manejar bloqueos mutuos (deadlocks)

5.1.2 Gestin de la memoria principal


La memoria principal es crucial para el funcionamiento de un sistema de computacin moderno. La memoria principal es un depsito de datos a los que se puede acceder rpidamente y que son compartidos por la CPU y los dispositivos de E/S. El procesador central lee instrucciones de la memoria principal durante el ciclo de obtencin de instrucciones, y lee y escribe datos de la memoria principal durante el ciclo de obtencin de datos. Las operaciones de E/S implementadas por DMA tambin leen y escriben datos en la memoria principal. Por lo regular, la memoria principal es el nico dispositivo de almacenamiento grande que la CPU puede direccionar y acceder directamente. El sistema operativo se encarga de las siguientes actividades relacionadas con la gestin de memoria: Saber cules partes de la memoria se estn usando actualmente, y quin las est usando. Decidir cules procesos se cargarn en la memoria cuando se disponga de espacio. Asignar y liberar espacio de memoria segn se necesite.

5.1.3 Gestin de archivos


La gestin de archivos es uno de los componentes ms visibles de un sistema operativo. Los computadores pueden almacenar informacin en varios tipos distintos de medios fsicos. Los medios ms comunes son cinta magntica, disco magntico y disco ptico. A fin de hacer ms cmodo del uso del sistema de computacin, el sistema operativo presenta una perspectiva lgica uniforme del almacenamiento de informacin, abstrayendo las propiedades fsicas de sus dispositivos de almacenamiento para definir una unidad de almacenamiento lgico, el archivo. El sistema operativo establece la correspondencia entre los archivos y los medios fsicos, y accede a los archivos a travs de los dispositivos de almacenamiento. El sistema operativo implementa el concepto abstracto de archivo administrando los medios de almacenamiento masivo, como cintas y discos, y los dispositivos que los controlan. Adems, los archivos normalmente se organizan en directorios con objeto de facilitar su uso. Por ltimo, si varios usurarios
13

Document1

tiene acceso a los archivos, podra ser deseable controlar quin y de qu modo puede acceder a los archivos. El sistema operativo se encarga de las siguientes actividades relacionadas con la gestin de archivos: Crear y eliminar archivos. Crear y eliminar directorios. Proveer las primitivas para manipulacin de archivos y directorios. Establecer la correspondencia de los archivos con el almacenamiento secundario. Resguardar los archivos en medios de almacenamiento estables (no voltiles).

5.1.4 Gestin del sistema de E/S


Uno de los objetivos de un sistema operativo es ocultar las peculiaridades de dispositivos de hardware especficos de modo que el usuario no las perciba.

5.1.5 Gestin de almacenamiento secundario


El propsito de un sistema de computador es ejecutar programas. Estos programas, junto con los datos a los que acceden, deben estar alojados en la memoria principal (almacenamiento primario) durante la ejecucin. Dado que la memoria principal es demasiado pequea para dar cabida a todos los datos y programas, y que pierde su informacin cuando deja de recibir corriente elctrica, el sistema de computacin debe contar con algn almacenamiento secundario para respaldar la memoria principal. El sistema operativo se encarga de las siguientes actividades relacionadas con la gestin de discos: - Administracin del espacio libre. - Asignacin del almacenamiento. - Planificacin del disco.

5.1.6 Trabajo con redes


Un sistema distribuido es una coleccin de procesadores que no comparten memoria, dispositivos perifricos ni el reloj. Los procesadores del sistema se conectan por medio de una red de comunicaciones. Los sistemas operativos normalmente generalizan el acceso por red como una forma de acceso a archivos; los detalles del trabajo con la red estn contenidos en el driver de la interfaz con la red.

5.1.7 Sistema de proteccin


Si un sistema de computacin tiene mltiples usuarios y permite la ejecucin concurrente de mltiples procesos, es preciso proteger cada proceso de las actividades de los dems. Con ese fin, se incluyen mecanismos para asegurar que slo aquellos procesos que hayan obtenido la autorizacin debida del sistema operativo puedan operar con los archivos, segmentos de memoria, procesadores y dems recursos. El trmino proteccin se refiere a un mecanismo para controlar el acceso de programas, procesos o usuarios a recursos definidos por un sistema de computador. Este mecanismo debe incluir alguna forma de especificar los controles que se impondrn, junto con alguna forma de hacerlos cumplir. La proteccin puede mejorar la confiabilidad mediante la deteccin de errores latentes en las interfaces entre los subsistemas componentes. La deteccin temprana de errores de interfaz a menudo puede evitar la contaminacin de un subsistema saludable por un subsistema que est fallando. Un sistema orientado hacia la proteccin permite distinguir entre el uso autorizado y no autorizado.

14

Document1

5.1.8 Sistema de interpretacin de rdenes


Uno de los programas del sistema ms importantes de un sistema operativo es el intrprete de rdenes o de comandos, que es la interfaz entre el usuario y el sistema operativo. Muchas de las rdenes que se dan al sistema operativo viene en enunciados de control. Cuando se inicia un trabajo nuevo en un sistema por lotes, o cuando un usuario ingresa en un sistema de tiempo compartido, se ejecuta automticamente un programa que lee e interpreta estos enunciados de control. Dicho programa tambin se conoce como intrprete de tarjetas de control o intrprete de lnea de comandos y recibe el nombre comn de shell. La funcin del shell es muy sencilla: obtener la siguiente orden y ejecutarla.

5.2 Servicios del sistema operativo


Un sistema operativo crea un entorno para la ejecucin de programas. El sistema operativo proporciona ciertos servicios a los programas y a los usuarios de dichos programas. Estos servicios se proporcionan para comodidad del programador, a fin de facilitar la tarea de programacin. Clases comunes de servicios proporcionados: - Ejecucin de programas. El sistema debe poder cargar un programa en la memoria y ejecutarlo. El programa debe terminar su ejecucin, sea normal o anormalmente (indicando un error). - Operaciones de E/S. Un programa en ejecucin podra requerir E/S. sta podra implicar el uso de un archivo o un dispositivo de E/S. Por cuestiones de eficiencia y seguridad, los usuarios casi nunca pueden controlar los dispositivos de E/S directamente; por lo tanto, el sistema operativo debe incluir un mecanismo para realizar E/S. - Manipulacin del sistema de archivos. El sistema de archivos tiene particular inters. Es evidente que los programas necesitan leer y escribir archivos, y tambin crear y eliminar archivos especificando su nombre. - Comunicaciones. Hay muchas circunstancias en las que un proceso necesita intercambiar informacin con otro, y hay dos formas principales de llevar a cabo tal comunicacin. La primera ocurre entre procesos que se ejecutan en el mismo computador; la segunda implica procesos que se ejecutan en computadores distintos conectados a una red. La comunicacin puede implementarse mediante memoria compartida o con la tcnica de transferencia de mensajes, en la que el sistema operativo transfiere paquetes de informacin entre procesos. - Deteccin de errores. El sistema operativo necesita estar pendiente en todo momento de los posibles errores. Pueden ocurrir errores en el hardware de la CPU y la memoria (como un error de memoria o un corte de alimentacin elctrica), en los dispositivos de E/S (como un error de paridad en cinta, un fallo de conexin en una red o falta de papel en una impresora) o en el programa de usuario(como un desbordamiento en una operacin aritmtica, un intento de acceder a una posicin de memoria no permitida o un uso excesivo de tiempo de CPU). Para cada tipo de error, el sistema operativo debe emprender la accin apropiada para asegurar un funcionamiento correcto y consistente del sistema de computacin. Otras funciones del sistema operativo cuyo objetivo no es ayudar al usuario, sino asegurar el funcionamiento del sistema mismo: - Asignacin de recursos. Si hay varios usuarios o varios trabajos ejecutndose al mismo tiempo, es preciso asignar recursos a cada uno. - Contabilizacin. Es importante mantenerse al tanto de qu usuarios usan cuntos recursos del computador y de qu tipo. Para facturacin o estadstica. - Proteccin. Los dueos de la informacin almacenada en un sistema de computador multiusuarios podran querer controlar su uso. La proteccin implica asegurar que todos los accesos a los recursos del sistema sean controlados. La seguridad del sistema tambin es importante, y comienza con obligar a cada usuario a identificarse ante el sistema, por lo regular con una contrasea, antes de poder acceder a los recursos. La seguridad se extiende a defender los dispositivos de E/S externos,
15

Document1

incluidos mdems y adaptadores de red, contra intentos de acceso no autorizado, y registrar todas las conexiones para detectar incursiones.

5. 3 Llamadas al sistema
Las llamadas al sistema son la interfaz entre un procesos y el sistema operativo. Estas llamadas generalmente estn disponibles como instrucciones en lenguaje ensamblador, y casi siempre se listan en los manuales empleados por quienes programan en ese lenguaje. Algunos sistemas permiten emitir llamadas al sistema directamente desde un programa escrito en un lenguaje de alto nivel, en cuyo caso las llamadas casi siempre semejan llamadas predefinidas a funciones o subrutinas. Las llamadas al sistema se pueden agrupar a grandes rasgos en cinco categoras principales: control de procesos, manipulacin de archivos, manipulacin de dispositivos, mantenimiento de informacin y comunicaciones. Tipos de llamadas al sistema: - Control de procesos o Fin, abortar o Cargar, ejecutar o Crear proceso, terminar proceso o Obtener atributos de procesos, establecer atributos de procesos. o Esperar un lapso de tiempo o Esperar suceso, indicar la ocurrencia del suceso o Asignar y liberar memoria - Manipulacin de archivos o Crear archivo, eliminar archivo o Abrir, cerrar o Leer, escribir, reposicionar o Obtener atributos de archivo, establecer atributos de archivo - Manipulacin de dispositivos o Solicitar dispositivo, liberar dispositivo o Leer, escribir, reposicionar o Obtener atributos de dispositivo, establecer atributos de dispositivo o Conectar o desconectar lgicamente dispositivos. - Mantenimiento de informacin o Obtener hora o fecha, establecer hora o fecha o Obtener datos del sistema, establecer datos del sistema o Obtener atributos de un proceso, archivo o dispositivo o Establecer atributos de un proceso, archivo o dispositivo - Comunicaciones - Crear, eliminar conexin de comunicacin - Enviar, recibir mensajes - Transferir informacin de estado - Conectar o desconectar dispositivos remotos.

5.4 Estructura del sistema


Un sistema tan grande y complejo como un sistema operativo moderno debe disearse con cuidado para que funcione correctamente y sea fcil de modificar. Una estrategia comn consiste en dividir la tarea en componentes pequeos, en lugar de tener un sistema monoltico.
16

Document1

5.4.1 Estructura simple


Hay muchos sistemas comerciales que no tienen una estructura bien definida. A esta estructura se conoce como monoltica. El sistema operativo se escribe como un conjunto de procedimientos, cada uno de los cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos parmetros y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la ltima ofrece algn clculo que la primera necesite. Para construir el programa objeto real del sistema operativo cuando se usa este mtodo, se compilan todos los procedimientos individuales o archivos que contienen los procedimientos y despus se combinan todos en un solo archivo objeto con el enlazador. En trminos de ocultamiento de informacin, esencialmente no existe ninguno; todo procedimiento es visible para todos (al contrario de una estructura que contiene mdulos o paquetes, en los cuales mucha de la informacin es local a un mdulo y slo se pueden llamar puntos de registro designados oficialmente del exterior del mdulo).

5.4.2 Enfoque por capas


El enfoque de capas consiste en dividir el sistema operativo en varias capas (niveles), cada una construida sobre las capas inferiores. La capa inferior (capa 0) es el hardware; la capa ms alta (capa N) es la interfaz con el usuario. Una capa del sistema operativo es una implementacin de un objeto abstracto que es el encapsulamiento de datos y de operaciones que pueden manipular esos datos. Por ejemplo, representemos una capa de un sistema operativo, designndola como capa M. Esta capa consiste en algunas estructuras de datos y un conjunto de rutinas que las capas de nivel superior pueden invocar. La capa M, a su vez, puede invocar operaciones de capas de niveles ms bajos. La principal ventaja del enfoque de capas es la modularidad. Las capas se escogen de modo que cada una utilice slo funciones (operaciones) y servicios de capas de los niveles inferiores. Esto implica la depuracin y la verificacin del sistema. Podemos depurar la primera capa sin preocuparnos por el resto del sistema porque, por definicin, slo utiliza el hardware bsico (que se supone correcto) para implementar sus funciones. Una vez depurada la primera capa, se puede dar por sentado su funcionamiento correcto mientras se trabaja con la segunda capa, y as sucesivamente. Si se encuentra un error durante la depuracin de una capa en particular, sabremos que el error est en esa capa, porque las capas inferiores ya estn depuradas. Cada capa se implementa utilizando slo operaciones provistas por capas del nivel inferior. Una capa no necesita saber cmo se han implementado dichas operaciones; slo se necesita saber qu hacen. De este modo, cada capa oculta la existencia de ciertas estructuras de datos, operaciones y hardware, de las capas de niveles ms altos. El principal problema de l enfoque de capas tiene que ver con la definicin apropiada de las distintas capas. Puesto que una capa slo puede usar las capas que estn en un nivel ms bajo, la planificacin debe ser muy cuidadosa. Otras necesidades podran ser menos obvias. Por ejemplo, el controlador del almacenamiento auxiliar normalmente estara arriba del planificador de la CPU, porque el controlador podra tener que esperar a que termine una operacin de E/S, y la CPU podra replanificarse durante este tiempo. Un ltimo problema de las implementaciones de capas es que tienden a ser menos eficientes que otros tipos. En cada capa, los parmetros podran modificarse, podra haber necesidad de pasar datos, etc. Cada capa implica un gasto extra por el procesamiento de la llamada al sistema, y el resultado neto es una llamada que tarda ms que en un sistema sin capas.

17

Document1

5.5 Mquinas virtuales


Conceptualmente, un sistema de computador se compone de capas. El hardware es el nivel ms bajo en todos estos sistemas. El ncleo que se ejecuta en el siguiente nivel utiliza las instrucciones del hardware para crear un conjunto de llamadas al sistema que las capas exteriores pueden usar. As, los programas del sistema que estn arriba del ncleo pueden usar llamadas al sistema o instrucciones de hardware, y en ciertos sentidos estos programas no distinguen entre las dos. Algunos sistemas llevan este esquema un paso ms all permitiendo a los programas de aplicacin invocar fcilmente los programas del sistema. Aqu tambin, aunque los programas del sistema estn en un nivel ms alto que las dems rutinas, los programas de aplicacin podran ver todo lo que est debajo de ellos en la jerarqua como si formar parte de la mquina misma. Este enfoque de capas se lleva a su conclusin lgica en el concepto de mquina virtual. Utilizando planificacin de CPU y tcnicas de memoria virtual, un sistema operativo puede crear la ilusin de que mltiples procesos se ejecutan cada uno en su propio procesador con su propia memoria (virtual). El enfoque de mquina presenta una interfaz que es idntica al hardware desnudo subyacente. Cada proceso recibe una copia (virtual) del computador subyacente. Los recursos del computador fsico se comparten para crear las mquinas virtuales. Se puede usar planificacin de CPU para compartir la CPU y crear la ilusin de que los usuarios tiene su propio procesador. Un problema importante del enfoque de mquina virtual tiene que ver con los sistemas de discos. En este caso, la solucin es ofrecer discos virtuales, que son idnticos en todo sentido con excepcin del tamao. stos se denominan minidiscos en el sistema operativo VM de IBM. El sistema implementa cada minidisco asignando tantas pistas de los discos fsicos como el minidisco necesite.

5.5.1 Java
Otro ejemplo de la persistente utilidad de las mquinas virtuales se relaciona con el lenguaje Java. Java es un lenguaje que goza de gran popularidad, diseado por Sun Microsystems, y que se implementa con un compilador que genera cdigos de bytes como salida. stos cdigos de bytes son las instrucciones que se ejecutan en la Mquina virtual Java (JVM, Java Virtual Machine). Para que los programas Java se ejecuten en una plataforma, es necesario que dicha plataforma est ejecutando una JVM. La JVM se ejecuta en muchos tipos de computadores, incluidos los compatibles con IBM-PC, Macintosh, estaciones de trabajo y servidores Unix, y minicomputadores y macrocomputadores IBM. La JVM tambin se implementa dentro de navegadores de Web como Microsoft Internet Explorer y Netscape Comunicator. Estos navegadores, a su vez, se ejecutan en diferentes equipos y sistemas operativos. La JVM tambin se implementa en el pequeo JAVAOS, pero aqu la implementacin es directamente en hardware para evitar el gasto extra que implica ejecutar Java en sistemas operativos de propsito general. Por ltimo, dispositivos de propsito especfico, como los telfonos celulares, se pueden implementar a travs de Java utilizando microprocesadores que ejecutan cdigos de bytes Java como instrucciones nativas. La Mquina Virtual Java implementa un conjunto de instrucciones basados en pila que incluye las instrucciones aritmticas, lgicas, de movimiento de datos y de control de flujo que cabe esperar. Al ser una mquina virtual, tambin puede implementar instrucciones que son demasiado complejas para incorporarse en hardware, incluidas instrucciones para crear y manipular objetos, e invocar mtodos. Los compiladores de Java se limitan a emitir estas instrucciones de cdigos de bytes, y la JVM debe implementar la funcionalidad necesaria para cada plataforma. El diseo de Java aprovecha el entorno completo que una mquina virtual implementa. Por ejemplo, se verifica que los cdigos de bytes no incluyan instrucciones que pudieran poner en peligro la seguridad o confiabilidad de la mquina subyacente. Si el programa Java no satisface esta verificacin, no se permitira su ejecucin. Mediante la implementacin de Java como lenguaje que se ejecuta en una mquina virtual, Sun ha creado un recurso orientado a objetos eficiente, dinmico, seguro y transportable. Si bien los programas Java no son tan rpidos como los que se compilan para el conjunto de instrucciones
18

Document1

del hardware nativo, s son ms eficientes que los programas interpretados y tienen varias ventajas respecto a los lenguajes de compilacin nativa como C.

6 Gestin de procesos
Podemos considerar un proceso como un programa en ejecucin. Un proceso necesita ciertos recursos, como tiempo de CPU, memoria, archivos y dispositivos de E/S, para realizar su tarea. Estos recursos se asignan al proceso cuando se crea o bien durante su ejecucin. El sistema operativo tiene las siguientes obligaciones en lo tocante a la gestin de procesos: creacin y eliminacin de procesos tanto del usuario como del sistema; planificacin de procesos; y establecimiento de mecanismos para la sincronizacin y comunicacin de procesos, y el manejo de bloqueos mutuos.

6.1 El concepto de proceso


Un obstculo para tratar los sistemas operativos es la cuestin de cmo debemos referirnos a todas las actividades de la CPU. Un sistema por lotes ejecuta trabajos, en tanto que un sistema de tiempo compartido tiene programas de usuario, o tareas. En muchos sentidos, todas estas actividades son similares, as que a todas las llamamos procesos.

6.1.1 El proceso
Informalmente, un proceso es un programa en ejecucin. La ejecucin de un proceso debe proceder de manera secuencial. Es decir, en cualquier instante, cuando ms una instruccin se estar ejecutando a nombre del proceso. Un proceso es ms que el cdigo del programa (tambin conocido como seccin de texto); tambin incluye la actividad actual, representada por el valor del contador de programa y el contenido de los registros del procesador. Generalmente, un proceso tambin incluye la pila (stack) del proceso, que contiene datos temporales (como los parmetros de subrutinas, direcciones de retorno y variables temporales), y una seccin de datos que contiene variables globales). Hacemos hincapi en que un programa por s solo no es un proceso; un programa es una entidad pasiva, como el contenido de un archivo guardado en disco, mientras que un proceso es una entidad activa, con el contador de programa especificando la siguiente instruccin que se ejecutar, y un conjunto de recursos asociados.

6.1.2 Estado de un proceso


A medida que un proceso se ejecuta, cambia de estado. El estado de un proceso est definido en parte por la actividad actual de ese proceso. Cada proceso puede estar en uno de los siguientes estados: Nuevo (New): El proceso se est creando. En ejecucin (Running): Se estn ejecutando instrucciones. En espera o bloqueado (waiting): El proceso est esperando que ocurra algn suceso (como la terminacin de una operacin de E/S o la recepcin de una seal). Listo (Ready): El proceso est esperando que se le asigne a un procesador. Terminado (Teminated): el proceso termino su ejecucin.

Se dice que un proceso est en estado de ejecucin si tiene asignado el CPU. Se dice que un proceso est en estado listo si pudiera utilizar un CPU en caso de haber uno disponible. Un proceso est en estado bloqueado si esta esperando algn evento antes de proseguir su ejecucin.
19

Document1

Cuando se admite una tarea en el sistema, se crea el proceso correspondiente y se inserta normalmente al final de la lista de procesos listos. El proceso se desplaza poco a poco hacia el frente de la lista de procesos listos, a medida que los procesos que se encuentran antes que l completan su turno de uso del CPU. Despachar(x_proceso): Listo Ejecucin. Cuando el proceso llega al principio de la lista, se le asigna el CPU cuando este queda disponible y entonces se dice que hay una transicin de estado del estado listo al estado de ejecucin. A la asignacin del procesador al primer proceso de la lista de procesos listos se le llama despacho. Tiempo Expirado(x_proceso): Ejecucin Listo. Para evitar que un proceso monopolice el sistema, en forma accidental o intencional, el sistema operativo utiliza un reloj de interrupcin por hardware (tambin llamado cronmetro de intervalos) para que las tareas de ese usuario se ejecuten durante un intervalo especfico de tiempo o cuanto (quantum). Si el proceso no libera voluntariamente el CPU antes de que expire el cuanto, el reloj genera una interrupcin, haciendo que el sistema operativo retome el control. El sistema operativo enva al proceso que se estaba ejecutando a la lista de procesos listo y procede a ejecutar el primero de la lista de procesos listos. Bloquear(x_proceso): Ejecucin Bloqueado. Si el proceso que se est ejecutando inicia una operacin de entrada/salida antes de que expire su cuanto, libera voluntariamente al CPU, es decir, el proceso se bloquea a s mismo esperando que se complete la operacin de entrada salida. Despertar(x_proceso): Bloqueado Listo. Cuando se completa una operacin de entrada/salida o algn otro evento que espere un proceso. El proceso realiza la transicin del estado bloqueado al estado listo.

6.1.3 Bloque de control de proceso


Cada proceso se presenta en el sistema operativo con un bloque de control de proceso (PCB, process control block), tambin llamado bloque de control de tarea. El PCB es una estructura de datos que contiene muchos elementos de informacin asociados a un proceso especfico, incluidos los siguientes: Estado del proceso: El estado puede ser, nuevo, listo, en ejecucin, en espera, detenido, etc. Contador de programa: El contador indica la direccin de la siguiente instruccin que se ejecutar para este proceso. Registros de CPU: El nmero y el tipo de los registros vara dependiendo de la arquitectura del computador. Los registros incluyen acumuladores, registros ndice, punteros de pila y registros de propsito general, as como cualesquier informacin de cdigos de condicin que haya. Junto con el contador de programa, esta informacin de cdigos de estado se debe guardar cuando ocurre una interrupcin, para que le proceso pueda continuar correctamente despus. Informacin de planificacin de CPU: Esta informacin incluye una prioridad del proceso, punteros a colas de planificacin y cualesquier otros parmetros de planificacin que haya. Informacin de gestin de memoria: Esta informacin puede incluir datos tales como el valor de los registros de base y lmite, las tablas de pginas o las tablas de segmentos, dependiendo del sistema de memoria empleado por el sistema operativo. Informacin contable: Esta informacin incluye la cantidad de tiempo de CPU y tiempo real consumida, lmites de tiempo, nmeros de cuenta, nmeros de trabajo o proceso, y dems. Otra informacin relevante: Un apuntador hacia el padre del proceso (hacia el proceso que lo cre), apuntadores a los hijos del proceso en el caso de tener procesos creados por l, apuntadores a
20

Document1

los recursos asignados del proceso, un rea para salvaguarda de los registros, el procesador en que se est ejecutando el proceso (en el caso de mltiples procesadores).

6.2 Operaciones sobre procesos


Los proceso del sistema se pueden ejecutar en forma concurrente, y se deben crear y eliminar dinmicamente. Por ello, el sistema operativo debe contar con un mecanismo para crear y terminar procesos.

6.2.1 Creacin de procesos


Un proceso pude crear varios procesos nuevos, a travs de una llamada al sistema de crear procesos, durante el curso de su ejecucin. El proceso creador se denomina proceso padre, y los nuevos procesos son los hijos de ese proceso. Cada uno de estos procesos nuevos puede a su vez crear otros procesos, formando un rbol de procesos. En general, un proceso necesita ciertos recursos (tiempo de CPU, memoria, archivos, dispositivos de E/S) para efectuar su tarea. Cuando un proceso crea un subproceso, ste tal vez pueda obtener sus recursos directamente del sistema operativo, pero podra estar restringido a un subconjunto de los recursos del proceso padre. El padre quiz tenga que dividir sus recursos entre sus hijos, o tal vez varios de sus hijos puedan compartir algunos recursos (como memoria o archivos). La restriccin de un proceso hijo a un subconjunto de los recursos del padre impide que cualquier proceso sobrecargue el sistema creando demasiados subprocesos. Adems de los diversos recursos fsicos y lgicos que un proceso obtiene cuando se crea, el proceso padre podra pasar a su hijo datos de iniciacin (entrada). Cuando un proceso crea un proceso nuevo, hay dos posibilidades en trminos de ejecucin: - El padre sigue ejecutndose de forma concurrente con sus hijos. - El padre espera hasta que algunos de sus hijos, o todos, han terminado. Tambin hay dos posibilidades en trminos del espacio de direcciones del nuevo proceso: - El proceso hijo es un duplicado del proceso padre. - Se carga un programa del proceso hijo.

6.2.2 Terminacin de procesos


Un proceso acaba cuando termina de ejecutar su ltimo enunciado y le pide al sistema operativo que lo elimine. En ese momento, el proceso podra devolver datos (salidas) a su proceso padres. El sistema operativo liberar todos los recursos del proceso, incluidos memoria fsica y virtual, archivos abiertos y buffers de E/S. Hay otras circunstancias en las que ocurre la terminacin. Un proceso puede causar la terminacin de otro con una llamada apropiada al sistema (por ejemplo, abortar). Normalmente, slo el padre del proceso que se terminar puede emitir la llamada. De otro modo, los usuarios podran matar arbitrariamente los trabajos de otros usuarios. Un padre podra terminar la ejecucin de unos de sus hijos por diversas razones como: - El hijo se ha excedido en la utilizacin de algunos de los recursos que se le asignaron. - La tarea que se asign al hijo ya no es necesaria. - El padre va a salir, y el sistema operativo no permite que un hijo contine si su padre termina. En muchos sistemas, si un proceso termina (sea normal o anormalmente), todos sus hijos tiene que terminar. Este fenmeno se denomina terminacin en cascada y por lo regular es el sistema operativo quien lo inicia.
21

Document1

Los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre procesos: 1. 2. 3. 4. 5. 1. 2. 3. Crear un proceso implica: Darle un nombre al proceso. Dar de alta en la lista de procesos conocidos del sistema o de la tabla de procesos (insertar). Determinar la prioridad inicial del proceso. Crear el PCB de ese proceso. Asignar recursos al proceso. Destruir un proceso implica: Eliminarlo de la lista de procesos, no solamente del sistema. Los recursos que estaba utilizando se devuelven al sistema. El PCB se borra. Suspender un proceso. Un proceso suspendido no puede proseguir hasta que los reanuda otro proceso. La suspensin dura por lo regular breves momentos o breves periodos de tiempo. El sistema efecta suspensiones par eliminar temporalmente ciertos procesos y as reducir la carga del sistema durante situaciones de carga mxima. Cuando hay suspensiones largas se deben liberar los recursos del proceso. Reanudar un proceso. Reanuda o activar un proceso implica reiniciarlo a partir del punto en le que se suspendi. Bloquear un proceso. Despertar un proceso. Despachar un proceso. Permitir que proceso se comunique con otros (comunicacin entre procesos). Cambiarle la prioridad a un proceso.

6.2.3 Suspensin de un proceso


Razones por las que se puede suspender un proceso: - Si un sistema est funcionando mal y es probable que falle se puede suspender los procesos activos para reanudarlos cuando se haya corregido el problema. - Un usuario que desconfe de los resultados parciales de un proceso puede suspenderlo en lugar de abortarlo hasta que verifique si el proceso funciona correctamente o no. - Algunos procesos se pueden suspender como respuesta a las fluctuaciones a corto plazo de la carga del sistema y reanudarse cuando las cargas regresen a niveles normales.

6.2.3.1 Estados de Suspensin


Se ha aadido dos nuevos estados denominados: Suspendido_Listo y Suspendido_Bloqueado, por lo que contaremos con estados activos que vimos con anterioridad, y estados de suspensin. Tenemos que, una suspensin puede ser iniciada por el propio proceso o por otro. En un sistema con un solo procesador, el proceso en ejecucin puede suspenderse a s mismo, ningn otro proceso podra estar en ejecucin para realizar la suspensin. Suspender(x_proceso): Listo Suspendido_Listo. Solamente otro proceso puede suspender un proceso listo.

22

Reanudar(x_proceso): Suspendido_listo Listo Un proceso puede hacer que otro proceso que se encuentre en estado suspendido_listo pase al estado listo. Suspender(x_proceso)Bloqueado Suspendido_Bloqueado Un proceso puede suspender a otro que este bloqueado. Reanudar(x_proceso): Suspendido_Bloqueado Bloqueado Un proceso puede reanudar otro proceso que este Suspendido_Bloqueado. Transacciones: Suspender(x_proceso): Listo Suspendido_Listo Despachar(x_proceso): Listo Ejecucin. Suspender(x_proceso): Ejecucin Suspendido_Listo Reanudar(x_proceso): Suspendido_Listo Listo Tiempo execedido(x_proceso) Ejecucin Listo Suspender(x_proceso): Bloqueado Suspendido_Bloqueado Completar(x_proceso): Bloqueado Listo Reanudar(x_proceso): Suspendido_Bloqueado Bloqueado Completar(x_proceso): Suspendido_Bloqueado Suspendido_Listo Espera(x_proceso): Ejecucin Bloqueado

Document1

6.3 Interrupciones
Interrupcin. Es un evento que altera la secuencia en que le procesador ejecuta las instrucciones. La interrupcin es generada por el hardware del sistema Cmo puede hacerse una llamada al sistema: 1) 2) 3) 4) El programa del usuario captura el kernel El sistema operativo determina el nmero de servicio que se pide El sistema operativo localiza y llama a un procedimiento de servicio El control se devuelve al programa del usuario

Cuando se genera una interrupcin: 1. El sistema operativo toma el control, es decir, el hardware pasa el control al sistema operativo. 2. El sistema operativo guarda el estado del proceso interrumpido, en muchos sistemas esta informacin se guarda en el PCB del proceso interrumpido. 3. El sistema operativo analiza la interrupcin y transfiere el control a la rutina apropiada para atenderla. En algunos sistemas el hardware se encarga de esto automticamente. 4. La rutina del manejador de interrupciones procesa la interrupcin. 5. Se restablece el estado del proceso interrumpido o del siguiente proceso. 6. Se ejecuta el proceso interrumpido o el siguiente proceso. Una interrupcin puede ser generada especficamente por un proceso en ejecucin en cuyo caso le suele denominar trampa o trap y se dice que est sincronizada con la operacin del proceso o bien puede ser causada por algn evento que puede estar relacionado o no con el proceso en ejecucin en cuyo caso se dice que es asncrona con la operacin en proceso.
23

Document1

6.3.1 Tipos de interrupciones


Interrupcin SVC (Supervisor Call). Son iniciadas por un proceso en ejecucin que ejecute una instruccin SVC. Una interrupcin SVC es una peticin generada por el usuario de un servicio en particular del sistema. Puede ser ejecutar una operacin de E/S, obtener ms memoria, o comunicarse con el operador del sistema. Un usuario no puede entrar arbitrariamente al sistema operativo, debe solicitar permiso por medio de una SVC. El sistema operativo esta enterado de los usuarios que intentan rebasar sus lmites y puede rechazar ciertas peticiones si el usuario no cuenta con los privilegios necesarios. Interrupciones de E/S. Son iniciadas por hardware de E/S. Este tipo de interrupciones indican al CPU el cambio de estado de algn canal o un dispositivo. Se producen cuando finaliza una operacin de entrada/salida o cuando un dispositivo pasa al estado listo. Interrupciones externas. Son causadas por diversos eventos, incluyendo la expiracin de un cuanto (quantum de reloj) que interrumpe, cuando pulsamos la tecla de interrupcin de la consola o bien cuando recibimos la seal de otro procesador, esto en el caso un sistema de mltiples procesadores. Interrupciones de reinicio. Cuando se oprime el botn de reinicio de la consola o se llegara desde otro procesador una seal de reinicio. Interrupciones de verificacin del programa. Son causadas por una amplia gama de problemas que pueden ocurrir cuando se ejecutan las instrucciones en lenguaje de mquina de un programa, dichos problemas incluyen: o Una divisin entre cero. o El exceso o defecto de los nmeros que pueden ser manejados por las operaciones aritmticas. o La presencia de datos con formato errneo. o EL intento de ejecutar un cdigo de operacin invlido. o El intento de hacer referencia a una localidad de memoria que este fuera de los lmites de la memoria real. o El intento por parte de un usuario no privilegiado de hacer uso de una instruccin privilegiada o el intento de hacer uso de un recurso protegido. Interrupciones por Verificacin de mquina. Son ocasionadas por el mal funcionamiento del hardware.

6.3.2 Cambio de contexto


En el esquema de las interrupciones de los procesadores a alta escala se maneja mediante el sistema operativo rutinas denominadas manejadores de interrupciones de primer nivel o FLIH (First Level Interrup Handlers) para procesar las diferentes clases de interrupciones. Existe un manejador de interrupciones de primer nivel por cada tipo de interrupcin. Cuando ocurre una interrupcin, el sistema operativo guarda el estado del proceso interrumpido y transfiere el control al manejador de interrupciones del primer nivel apropiado. El cambio de la CPU a otro proceso se denomina conmutacin de contexto (context switch). Los manejadores de primer nivel deben distinguir entre interrupciones de la misma clase; el procesamiento de estas interrupciones es realizado entonces por alguno de los manejadores de interrupciones de segundo nivel.

6.3.3. Palabras de Estado o PSW (Program Status Word)


Las palabras de estado del programa controlan el orden de ejecucin de las instrucciones y contienen informacin acerca del estado de un proceso. Hay tres tipos de PSW: nuevas, actuales y antiguas.
24

Document1

La direccin de la siguiente instruccin que se debe ejecutar se almacena en la PSW actual que indica tambin los tipos de interrupciones habilitadas e inhabilitadas de ese momento. El CPU permite que ocurran las interrupciones habilitadas; las interrupciones inhabilitadas permanecern pendientes y slo en algunos casos se pasarn por alto. El procesador nunca puede estar inhabilitado para una interrupcin SVC o para una de reinicio o para ciertas interrupciones de verificacin del programa. En un sistema de un procesador solo hay una PSW actual, seis nuevas y seis antiguas, una por cada tipo de interrupcin. La PSW nueva para algn tipo de interrupcin contiene la direccin permanente de la memoria principal en la que reside el manejador de interrupciones correspondiente. Cuando ocurre una interrupcin, si el procesador no est inhabilitado para este tipo de interrupcin, el hardware automticamente cambia la PSW como sigue: 1. Se guarda la PSW actual en la PSW antigua de este tipo de interrupcin. 2. Se guarda la PSW nueva de este tipo de interrupcin en la PSW actual. Despus de este intercambio de PSW, la PSW actual contendr la direccin del manejador de interrupciones apropiado y este ejecutar y procesar la interrupcin.

6.4 Ncleo del Sistema Operativo (Nucelos/Kernel/Core)


Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo llamada ncleo. El ncleo normalmente representa solo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo pero tambin es el cdigo que ms se utiliza. Reside por lo regula en la memoria principal mientras que otras partes del sistema operativo son cargadas solo cuando se necesitan. Una de las funciones ms importantes incluidas en ese ncleo es el procesamiento de interrupciones. El ncleo inhabilita las interrupciones cuando atiende una interrupcin y las habilita nuevamente una vez que ha completado el procesamiento de la interrupcin. Cuando se da un flujo continuo de interrupciones, es posible que el ncleo deje inhabilitadas las interrupciones por un periodo largo, esto puede ocasionar un elevado tiempo de respuesta a las interrupciones. Por esta razn los ncleos son diseados para realizar el mnimo posible de procesamiento en cada interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras operaciones. Lo que se traduce en que las interrupciones permanecen habilitadas un porcentaje mucho mayor del tiempo y que el sistema responde mejor. Resumen de las funciones del ncleo del sistema operativo 1. Manejo de interrupciones. 2. Crear y destruir procesos. 3. El cambio de los estados de los procesos. 4. El despacho de los procesos. 5. Suspender y reanudar un proceso. 6. Sincronizacin de los procesos. 7. La comunicacin entre procesos. 8. EL manejo de los bloques de control de procesos. 9. Apoyo a las actividades de entrada/salida. 10. Asignacin y liberacin de memoria. 11. El apoyo para el sistema de archivos. 12. Apoyo para el mecanismo de llamada y retorno de un procedimiento. 13. Apoyo para ciertas funciones de contabilidad del sistema.

25

Document1

6.4.1 Habilitacin e Inhabilitacin de Interrupciones


Al ncleo del sistema operativo solo puede llegarse mediante una interrupcin. El ncleo inhabilita las interrupciones mientras responde a la interrupcin que est procesando. Una vez que se determina la causa de la interrupcin, el ncleo pasa el tratamiento de la interrupcin a un proceso especfico del sistema que se ha diseado para manejar ese tipo de interrupciones.

7 Planificacin de trabajos y del procesador


En la planificacin del procesador se estudian los problemas de cundo asignar procesadores y a cules procesos asignarlos, tambin se considera la admisin de nuevas tareas en el sistema, la suspensin y reactivacin de procesos para ajustar la carga del sistema. 7.1 Niveles de planificacin Planificacin de Alto Nivel. Planificacin de trabajo. Determina cules trabajos podrn competir activamente por los recursos del sistema o bien cuales trabajos deben admitirse por lo que tambin la llamamos planificacin de admisin. Planificacin de Nivel Intermedio. Determina que procesos pueden competir por el CPU. Responde a las fluctuaciones temporales en la carga del sistema mediante la suspensin temporal y la activacin (reanudacin) de procesos para lograr una operacin ms fluida del sistema y ayuda a alcanzar ciertas metas globales del rendimiento del sistema. Acta como amortiguador entre la admisin de los trabajos y la asignacin del CPU a esos trabajos. Planificacin de Bajo Nivel. Determina a cul proceso listo se le asignar el CPU cuando ste se encuentre disponible y se encargar de asignar el CPU a ese proceso. Se lleva a cabo mediante el despachador y este debe residir en la memoria principal.

7.1.2 Objetivos de la planificacin En el diseo de un disciplina de planificacin deben ser considerados varios objetivos, mismos que suelen caer en conflicto haciendo esto un tanto ms complejo. Ser justa.- Una disciplina de planificacin es justa si todos los procesos se tratan de la misma forma y ningn proceso se queda en aplazamiento indefinido. Elevar al mximo la produccin y el rendimiento. Una disciplina de planificacin debe de tratar de atender el mayor nmero posible de procesos por unidad de tiempo. Aumentar al mximo el nmero de usuarios interactivos que reciben respuesta en tiempo aceptables (segundos). Ser predecible.- Una tarea debe ejecutarse aproximadamente en el mismo tiempo y casi al mismo costo sea cual sea la carga del sistema. Equilibrar el aprovechamiento de los recursos.- Los mecanismos de planificacin deben mantener ocupados los recursos del sistema. Deben favorecer los procesos que requieren los recursos poco utilizados. Evitar el Aplazamiento Indefinido.- La mejor manera de evitarlo es el empleo del envejecimiento, es decir, mientras un proceso espera un recurso, su prioridad debe crecer. En algn momento, la prioridad ser tan alta que el recurso se asignar al proceso. Imponer prioridades.- En los ambientes en que se asignan prioridades a los procesos, los mecanismos de planificacin deben favorecer a los procesos de alta prioridad. Degradarse paulatinamente con las cargas pesadas.- Un mecanismo de planificacin no debe desplomarse bajo el peso de una carga fuerte en el sistema. Debe evitar la carga excesiva
26

Document1

impidiendo la creacin de procesos nuevos cuando la carga es pesada, o bien debe dar servicio a la carga mayor con una reduccin moderada del nivel de atencin a todos los procesos.

____ 7.1.3 Planificacin no expropiativa y expropiativa Una disciplina de planificacin es no expropiativa si una vez que le ha sido asignado el CPU a un proceso, ya no se le puede arrebatar. En los sistemas no expropiativos, los trabajos largos retrasan a los cortos, pero el tratamiento para todos los procesos es ms justo. Una disciplina de planificacin es expropiativa si al proceso se le puede arrebatar el CPU. La planificacin expropiativa es importante en aquellos sistemas de planificacin en los cuales los procesos de alta prioridad requieren atencin rpida. 7.1.4 Prioridades Las prioridades pueden ser asignadas en forma automtica por el sistema, o bien se pueden asignar externamente. Pueden ganarse o comprarse. Pueden ser estticas o dinmicas. Pueden asignarse en forma racional, o de manera arbitraria en situaciones en la que un mecanismo del sistema necesita distinguir entre procesos pero no le importa cual de ellos es en verdad ms importantes. Prioridades estticas.- Son aquellas prioridades que no cambian, es decir, no responden a los cambios en el ambiente que podran hacer necesario un ajuste de prioridades. Se mantienen constantes mientras dura el proceso. Prioridades dinmicas.- Son aquellas prioridades que responden a los cambios. La prioridad inicial asignada a un proceso tiene una duracin corta, despus de lo cual se ajusta a un valor ms apropiado. Cambian en respuesta a los cambios del as condiciones del sistema. Prioridades compradas.- Son aquellas que tienen un precio monetario, en la cual el usuario compra un nivel ms alto de servicio.

7.1.5 Planificador de CPU Siempre que la CPU est ociosa, el sistema operativo debe escoger uno del os procesos que estn en la cola de procesos listos para ejecutarlo. El proceso de seleccin corre por cuenta del planificador a corto plazo (o planificador de CPU), el cual escoge uno de los procesos que estn en la memoria y listos para ejecutarse, y le asigna la CPU. 7.1.6 Despachador Otro componente que interviene en la funcin de planificacin de la CPU es el despachador (dispatcher). ste es el mdulo que cede el control de la CPU al proceso seleccionado por el planificador a corto plazo. Esta funcin implica: - Cambiar de contexto. - Cambiar a modo de usuario. - Saltar al punto apropiado del programa del usuario para reiniciar ese programa. El despachador debe ser lo ms rpido posible, porque se invoca en cada conmutacin de proceso. El tiempo que el despachador tarda en detener un proceso y poner otro en ejecucin se denomina latencia del despachador.
27

Document1

7.2 Criterios de planificacin Los diferentes algoritmos de planificacin de la CPU tienen diferentes propiedades y podran favorecer a una clase de procesos ms que a otra. Se han sugerido muchos criterios para comparar los algoritmos de planificacin de la CPU. Los criterios empleados son, entre otros: Utilizacin de la CPU: Queremos mantener la CPU tan ocupada como se pueda. La utilizacin de la CPU puede variar entre 0% y 100%. En un sistema real, deber variar entre el 40% (en un sistema con poca carga) y el 90% (en un sistema muy cargado). Rendimiento: Si la CPU est ocupada ejecutando procesos, se est efectuando trabajo. Una medida del trabajo es el nmero de procesos que se completan por unidad de tiempo: el rendimiento. En el caso de procesos largos, esta tasa podra ser de un proceso por hora; en el caso de transacciones cortas, el rendimiento podra ser de 10 procesos por segundo. Tiempo de retorno: Desde el punto de vista de un proceso en particular, el criterio importante es el tiempo que tarda la ejecucin de ese proceso. El intervalo entre el momento de presentacin de un proceso y el momento en que se termina es el tiempo de servicio, y es la suma de los periodos durante los cuales espera entrar en la memoria, espera en la cola de procesos listos, se ejecuta en la CPU y realiza E/S. Tiempo de espera: el algoritmo de planificacin de la CPU no afecta la cantidad de tiempo que un proceso pasa ejecutndose o realizando E/S; slo afecta el tiempo que un proceso pasa esperando en la cola de procesos listos. El tiempo de espera es la suma de los periodos que el proceso pasa esperando en dicha cola. Tiempo de respuesta: En un sistema interactivo, el tiempo de retorno tal vez no sea el mejor criterio. Es comn que un proceso pueda producir algunas salidas en poco tiempo, y pueda seguir calculando nuevos resultados mientras los anteriores se estn presentando al usuario. Por ello, otra medida es el tiempo que transcurre entre la presentacin de una solicitud y la produccin de la primera respuesta. Esta medida, llamada tiempo de respuesta, es el tiempo que el proceso tarda en comenzar a responder, pero no incluye el tiempo que toma exhibir la respuesta. El tiempo de retorno generalmente est limitado por la velocidad del dispositivo de salida.

___ 7.3 Algoritmos de planificacin La planificacin de la CPU se ocupa del problema de decidir cul de los procesos que estn en la cola de procesos listos debe recibir la CPU. 7.3.1 Planificacin a plazo fijo Se programan ciertos trabajos para terminarse en un tiempo especfico. Los trabajos pueden tener un gran valor si son entregados a tiempo y carecer de l si son entregados fuera del plazo, por lo que algn usuario puede estar dispuesto a pagar extra para asegurar que sus trabajos sean entregados a tiempo. 7.3.2 Planificacin de servicios por orden de llegada Por mucho, el algoritmo de planificacin del a CPU ms sencillo es el de servicio por orden de llegada (FCFS, first-come, first served). Con este esquema, el proceso que primero solicita la CPU la recibe primero. Los procesos se despachan de acuerdo a su tiempo de llegada a la cola de procesos listos. Es una disciplina no exapropiativa. La implementacin de la poltica FCFS es fcil con una cola FIFO. Cuando un proceso ingresa en la cola de procesos listos, su PCB se enlaza al final de la cola. Cuando la CPU
28

Document1

queda libre, se asigna al proceso que est a la cabeza de la cola. Acto seguido, el proceso en ejecucin se saca de la cola. 7.3.3 Planificacin de primero el trabajo ms corto Un enfoque de planificacin de la CPU diferente es el algoritmo de primero el trabajo ms corto (SJF, shortest job first), que asocia a cada proceso la longitud de la siguiente rfaga de CPU de ese proceso. Cuando la CPU queda disponible, se asigna al proceso cuya siguiente rfaga de CPU sea ms corta. Si hay dos procesos cuyas siguientes rfagas de CPU tienen la misma duracin, se emplea planificacin FCFS para romper el empate. Es una disciplina no expropiativa utilizada sobre todo para trabajos por lotes. 7.3.4 Planificacin por prioridad El algoritmo SJF es un caso especial del algoritmo de planificacin por prioridad general. Se asocia una prioridad a cada proceso, y la CPU se asigna al proceso que tiene la prioridad ms alta. Los procesos con la misma prioridad se planifican en orden FCFS. Un problema importante de los algoritmos de planificacin por prioridad es el bloqueo indefinido o inanicin (starvation). Podemos considerar que un proceso que est listo para ejecutarse pero que no tiene la CPU est bloqueado en espera de la CPU. Un algoritmo de planificacin por prioridad podra dejar a algunos procesos de baja prioridad esperando indefinidamente la CPU. Una solucin al problema del bloqueo indefinido de procesos de baja prioridad es el envejecimiento (aging): una tcnica que consiste en aumentar gradualmente la prioridad de los procesos que esperan mucho tiempo en el sistema. Un ejemplo del uso de esta solucin es la planificacin por prioridad de la tasa de respuesta ms alta. Siendo una disciplina no expropiativa en la cual la prioridad de cada trabajo no slo es funcin del tiempo de servicio, sino tambin del tiempo que ha esperado el trabajo para ser atendido. ____ 7.3.5 Planificacin por turno circular (RR, round-robin) Es una disciplina expropiativa. Los procesos se despachan en forma Primero en Entrar Primero en Salir, pero se les asigna una cantidad limitada de tiempo de CPU conocida como cuanto o quantu,. Si un proceso no termina antes de que expire su tiempo de CPU, se le quitar el CPU y ste se le asignar al siguiente proceso en espera, el proceso desposedo se colocar al final de la cola de procesos listos.

7.3.5 Planificacin por tiempo restante ms corto ( SRT, Shortest-remaining-time scheduling) Es la contraparte expropiativa de SJF. En SRT, el proceso con el menor tiempo estimado de ejecucin para terminar es el primero en ejecutarse, incluyendo los procesos nuevos. Un proceso en ejecucin puede ser despojado por un proceso nuevo con un tiempo estimado de ejecucin ms pequeo. 7.3.6 Planificacin con colas de mltiples niveles Se ha creado otra clase de algoritmos de planificacin para situaciones en las que es fcil clasificar los procesos en diferentes grupos. Por ejemplo, suele hacerse una divisin entre los procesos que se ejecutan en primer plano (interactivos) y los que lo hacen en segundo plano (por lotes). Estos dos tipos de procesos tienen diferentes necesidades en cuanto al tiempo de respuesta, as que podran tener diferentes necesidades de planificacin. Adems, los procesos de primer plano podran tener mayor prioridad (definida externamente) que los de segundo plano. Un algoritmo de planificacin con colas de mltiples niveles divide la cola de procesos listos en varias colas distintas. Los procesos se asignan permanentemente a una cola, casi siempre con base a alguna
29

Document1

propiedad del proceso, como tamao de memoria, prioridad del proceso o tipo de proceso. Cada cola tiene su propio algoritmo de planificacin. Adems, debe haber planificacin entre las colas. Ejemplo de algoritmo de planificacin con colas mltiples niveles: 1. 2. 3. 4. 5. Procesos del sistema Procesos interactivos Procesos de edicin interactiva Procesos por lotes Procesos de estudiantes

Ya que la cola de primer plano podra tener prioridad absoluta sobre la cola de segundo plano, en el ejemplo, ningn proceso de la cola de procesos por lotes se podr ejecutar si no estn vacas las colas de los procesos del sistema, procesos interactivos y procesos de edicin interactivo. Si un proceso de edicin interactiva ingresa en la cola de procesos listos mientras se est ejecutando un proceso por lotes, ste ser desalojado. 7.3.7 Planificacin con colas de mltiples niveles y realimentacin En un algoritmo de planificacin con colas de mltiples niveles, lo normal es que los procesos se asignen permanentemente a una cola al ingresar en el sistema. Los procesos no se mueven de una cola a otra. Por ejemplo, si hay colas distintas para los procesos de primer y segundo plano, los procesos no se pasarn de una cola a la otra, ya que su naturaleza ( de primer o segundo plano ) no cambia. ste mtodo es inflexible. La planificacin con colas de mltiples niveles y realimentacin, en cambio, permite a un proceso pasar de una cola a otra. La idea es separar procesos con diferentes caractersticas en cuanto a sus rfagas de CPU. Si un proceso gasta demasiado tiempo de CPU, se le pasar a una cola con menor prioridad. Este esquema deja los procesos limitados por E/S y los procesos interactivos en las colas de ms alta prioridad. As mismo, si un proceso espera demasiado tiempo en una cola de baja prioridad podra pasarse a una de mayor prioridad. Esta forma de envejecimiento evita la inanicin. ___ 7.4 Comunicacin entre procesos Los procesos con frecuencia necesitan comunicarse con otros procesos. Cuando un proceso del usuario desea leer el contenido de un archivo, ste debe sealar al proceso del archivo lo que desea. Despus el procesos del archivo tiene que indicar al proceso del disco que lea el bloque que se pide. En algunos sistemas operativos, los procesos que trabajan en conjunto con frecuencia comparten algn almacenamiento comn que cada uno puede leer y escribir. El almacenamiento compartido puede ubicarse en la memoria o bien puede ser un archivo compartido; la localidad de la memoria compartida no altera la naturaleza de la comunicacin o los problemas que se presentan. Situaciones donde dos o ms procesos leen o escriben algunos datos compartidos y el resultado final depende de cul se ejecuta en un momento preciso, se denominan condiciones de concurso. Cmo se evitan las condiciones de concurso? La clave para prevenir el problema aqu y en muchas otras situaciones en que interviene la memoria compartida, archivos compartidos y todo lo dems que se comparte, consiste en determinar alguna manera de prohibir que un procesos lea y escriba los datos compartidos al mismo tiempo. La exclusin mutua se llama a la situacin en la cual los procesos cooperan de tal forma que, mientras un proceso obtiene acceso a datos compartidos modificables, los dems procesos no pueden hacer los mismo. La seccin crtica de un procesos es aquella parte del programa donde se accesa la memoria compartida.
30

Document1

Las diversas proposiciones para lograr la exclusin mutua con espera ocupada son: desactivacin de interrupciones, variables de cierre, alternancia estricta, solucin de Peterson, instruccin de TSL.

___

8 Almacenamiento Real
La organizacin y administracin de la memoria principal o memoria primaria o memoria real de un sistema de computacin ha sido uno de los factores ms importantes en el diseo de los sistemas operativos. 8.1 Organizacin del almacenamiento Por organizacin del almacenamiento se entiende la manera de considerar este almacenamiento,. Se coloca un solo usuario en la memoria principal o se colocan varios al mismo tiempo? Si se encuentran varios programas del usuario en el almacenamiento principal, se concede a cada uno la misma cantidad de espacio o se divide el almacenamiento en varias porciones, llamadas particiones, de diferentes tamaos? Se harn las particiones del almacenamiento principal de una manera rgida, con las particiones definidas para un largo periodo de tiempo, o se proporciona una particin mas dinmica que permita a los sistemas de computacin adaptarse rpidamente a los cambios impuestos por las necesidades de los trabajos de los usuarios? Se requerir que los trabajos de los usuarios sean diseados para funcionar en una particin especfica, o se permitir que los trabajos se ejecuten en cualquier parte donde quepan? Se requerir que cada trabajo sea colocado en un bloque contiguo de localizacin de almacenamiento o se permitir dividir los trabajos entre varios bloques separados y colocarlos en cualesquiera ranuras disponibles del almacenamiento principal? 8.2 Administracin del almacenamiento Con independencia del esquema de organizacin del almacenamiento que se adopte para un sistema determinado, hay que decidir las estrategias que se van a usar para obtener un rendimiento ptimo. Las estrategias de administracin del almacenamiento determinan el rendimiento de una organizacin del almacenamiento con varias estrategias: Cundo se consigue un nuevo programa para colocar en la memoria? Se consigue cuando el sistema lo pide de forma especfica o se intenta anticiparse a las peticiones del sistema? dnde, dentro del almacenamiento principal colocaremos el programa que va a ser ejecutado a continuacin? Colocamos los programas lo ms apretados posibles dentro de las ranuras disponibles de la memoria para reducir al mnimo el desperdicio de espacio, o se colocan los programas lo ms rpido posible para ahorrar tiempo de ejecucin? Si un nuevo programa necesita ser colocado en el almacenamiento principal y ste est lleno, cul de los otros programas se desplazar? Deben reemplazarse los programas ms antiguos, aquellos que se utilizan con menor frecuencia, o aquellos que se han utilizado hace ms tiempo? 8.3 Estrategias de administracin del almacenamiento Las estrategias de administracin del almacenamiento se dividen en las categoras siguientes: 1. Estrategias de bsqueda: a) Estrategias de bsqueda por demanda
31

Document1

b) Estrategias de bsqueda anticipada 2. Estrategias de colocacin 3. Estrategias de reposicin Las estrategias de bsqueda estn relacionadas con el hecho de cundo obtener el siguiente fragmento de programa, o de datos, para su insercin en el almacenamiento principal. La estrategia convencional de bsqueda por demanda, donde el siguiente fragmento de programas, o de datos, es trado al almacenamiento principal cuando algn programa en ejecucin hace referencia a l; en oposicin a la estrategia de bsqueda anticipada donde se intenta predecir adnde ir el control del programa en el paso siguiente para traer esa porcin al almacenamiento principal. Las estrategias de colocacin estn relacionadas con la determinacin del lugar dentro del almacenamiento principal, donde va a ser colocado un programa nuevo. Las estrategias de colocacin del almacenamiento de primer ajuste, mejor ajuste y peor ajuste. Las estrategias de reposicin estn relacionadas con la determinacin de qu fragmentos de programa, o de datos, desplazar, para dejar sitio a los programas nuevos. ___ 8.4 Asignacin contigua de almacenamiento VS. No contigua Los primeros sistemas computacionales requeran una asignacin contigua de almacenamiento; cada programa tena que ocupar un bloque sencillo y contiguo de localizaciones de almacenamiento. En la asignacin no contigua de almacenamiento, un programa es dividido en varios bloques o segmentos que pueden ser colocados a lo largo del almacenamiento principal en partes que no tienen que ser necesariamente adyacentes. 8.4.1 Asignacin contigua de almacenamiento de un solo usuario Los primeros sistemas de computacin slo permitan usar la mquina a una persona a la vez. Todos sus recursos estaban a disposicin del usuario. El tamao de los programas est limitado por la cantidad de almacenamiento principal, pero es posible ejecutar programas ms grandes que ste ltimo por medio de recubrimientos. Si una seccin particular del programa no es necesaria durante todo el transcurso de su ejecucin, entonces puede traerse otra seccin desde el almacenamiento secundario, para ocupar el almacenamiento utilizado por la seccin que ya no se necesita. En los sistemas de asignacin contigua de un solo usuario, ste tiene un completo control sobre la totalidad del almacenamiento principal. El almacenamiento est divido en una porcin que contiene las rutinas del sistema operativo, otra que contiene el programa del usuario, y una porcin sin usar.. La cuestin de la proteccin es simple: Cmo puede protegerse el sistema operativo contra su destruccin por el programa del usuario? La proteccin se implementa mediante un registro de lmites, incorporado al CPU. Cada vez que el programa de un usuario hace referencia a una direccin de almacenamiento, se comprueba el registro de lmites para asegurarse que el usuario no va a destruir el sistema operativo. El registro de lmites contiene la direccin de la instruccin ms alta utilizada por el sistema operativo. Si el usuario intenta entrar en el sistema operativo, entonces la instruccin es interceptada y el trabajo se termina con un mensaje de error apropiado. 8.4.2 Procesamiento por lotes de flujo nico Los sistemas de un solo usuario se dedican a un trabajo durante ms tiempo del que toma su ejecucin. Los trabajos requieren, en general, un tiempo considerable de instalacin durante el cual se carga al sistema operativo, se montan las cintas y paquetes de disco, las tarjetas se colocan en la lectora, los formatos apropiados se colocan en la impresora, las tarjetas de tiempo se perforan, etc. Cuando los
32

Document1

trabajos terminan, requieren de una cantidad considerable de tiempo de descarga, mientras se retiran las cintas, tarjetas, paquetes de discos, formas de impresoras, etc. Durante la instalacin y descarga de los trabajos, el computador esta ocioso. Los diseadores comprendieron que si podan automatizar la transicin de trabajo a trabajo, entonces podran reducir de forma considerable la cantidad de tiempo permitido entre trabajos. Esto llev al desarrollo de sistemas de procesamiento por lotes. En el procesamiento por lotes de flujo nico, los trabajos se agrupan en lotes, colocando sus tarjetas de control reverso con reverso en la lectora de tarjetas ( o cargando los trabajos consecutivamente en una cinta o disco). Un procesador de flujos de trabajos lee las instrucciones del lenguaje de control de trabajos y facilita la preparacin del trabajo siguiente. Emite directrices al operador del sistema y ejecuta de forma automtica muchas de las funciones que antes eran de ejecucin manual. Cuando termina el trabajo actual, el lector de flujos de trabajos lee automticamente las instrucciones del lenguaje de control para el siguiente trabajo y realiza una operacin de mantenimiento apropiada para facilitar la transicin del siguiente trabajo. ___ 8.5 Multiprogramacin de Particin Fija An con los sistemas operativos de procesamiento por lotes, los sistemas de un solo usuario siguen desperdiciando una considerable cantidad de recursos computacionales. Los diseadores comprendieron de nuevo que podan incrementar de forma considerable la utilizacin del CPU por medio de la administracin intensiva. Esta vez, implementando los sistemas de multiprogramacin, en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema. Para aprovechar al mximo las ventajas de la multiprogramacin, es necesario que varios trabajos residan a la vez en el almacenamiento principal del computador. Entonces, cuando un trabajo pida una operacin de entrada/salida, el CPU puede ser cambiado de inmediato a otro trabajo y realizar los clculos sin dilacin. 8.5.1 Multiprogramacin de particin fija: traduccin y carga absolutas En los primeros sistemas de multiprogramacin, el almacenamiento principal estaba dividido en una serie de particiones de tamao fijo. Cada particin poda mantener un solo trabajo. El CPU se cambiaba rpidamente entre los usuarios para crear la ilusin de simultaneidad. Los trabajos se traducan con ensambladores y compiladores absolutos para ser ejecutados slo dentro de una particin especfica. Si un trabajo estaba listo para su ejecucin y se ocupaba su particin, entonces ese trabajo deba esperar, an cuando estuvieran disponibles otras particiones. 8.5.2 Multiprogramacin de particin fija: traduccin y carga relocalizables Los compiladores, ensambladores y cargadores de relocalizacin se usan para producir programas relocalizables que puedan ser ejecutados en cualquier particin disponible de tamao suficiente para aceptarlos. 8.5.3 Proteccin en los sistemas de multiprogramacin En los sistemas de multiprogramacin de asignacin contigua, la proteccin suele implementarse con varios registros de lmites. Los extremos superior e inferior de una particin del usuario pueden ser delineados con dos registros o pueden indicarse el lmite inferior (o superior) y la longitud de la regin. El usuario que necesita llamar al sistema operativo tiene que utilizar una instruccin de llamada al supervisor. Esto permite al usuario cruzar el lmite del sistema operativo y pedir sus servicios. 8.5.4 Fragmentacin en la multiprogramacin de particin fija
33

Document1

La fragmentacin de almacenamiento ocurre en todos los sistemas de computacin con independencia de su organizacin de almacenamiento. En los sistemas de multiprogramacin de particin fija, la fragmentacin se produce cuando los trabajos del usuario no llenan completamente sus particiones designadas, o cuando una particin permanece sin usar porque es demasiado pequea par alojar un trabajo que se encuentra en espera.

___ 8.6 Multiprogramacin de Particin Variable Los diseadores de sistemas operativos, al observar los problemas de la multiprogramacin de particin fija, decidieron que una mejora notable sera permitir que los trabajos ocuparan tanto espacio (menor que la totalidad del rea de almacenamiento real) como necesitaran. No habra lmite fijo. Este esquema se denomina multiprogramacin de particin variable. En todos los esquemas de organizacin del almacenamiento implican algn grado de desperdicio. En la multiprogramacin de particin variable, el desperdicio no se evidencia hasta que los trabajos comienzan a terminar y dejan agujeros en el almacenamiento principal. Estos agujeros pueden ser usados por otros trabajos, pero aunque suceda esto, los agujeros restantes van haciendose ms pequeos. 8.6.1 Combinacin de agujeros Cuando un trabajo termina en un sistema de multiprogramacin de particin variable, podemos comprobar si el almacenamiento que libera tiene lmites con otras reas libres de almacenamiento (agujeros). Si ocurre esto, entonces podemos registrar en el almacenamiento libre: 1) un agujero adicional, o 2) un solo agujero que representa la fusin del agujero existente con el nuevo adyacente. El proceso de fusionar agujeros adyacentes para formar uno sencillo ms grande se llama combinacin. 8.6.2 Compresin (o compactacin) de almacenamiento Aunque los agujeros estn combinados, suele suceder que los agujeros separados, distribuidos por todo el almacenamiento principal, constituyen una cantidad significativa de almacenamiento. La tcnica de compresin de almacenamiento implica pasar todas las reas ocupadas del almacenamiento a uno de los extremos del almacenamiento principal. De manera convencional la compresin de almacenamiento se denomina recogida de residuos. ___ 8.6.3 Estrategias de colocacin del almacenamiento Las estrategias de colocacin del almacenamiento se utilizan para determinar, en el almacenamiento principal, el lugar donde sern colocados los programas y datos que van llegando. Estrategia de mejor ajuste. Un trabajo nuevo, al llegar al almacenamiento principal, es colocado en el agujero en el cual quepa de forma ms ajustada y deje el menor espacio sin usar. Lista de almacenamiento libre: mantiene en orden ascendente por tamao de agujero. Estrategia de primer ajuste. Un trabajo nuevo, al llegar al almacenamiento principal, es colocado en el primer agujero disponible con tamao suficiente para acogerlo. Lista de almacenamiento libre : mantiene en orden las direcciones de almacenamiento o, a veces, en orden aleatorio. Estrategia de peor ajuste. El peor ajuste consiste en colocar un programa en el almacenamiento principal, en el agujero en el que quepa de la peor manera, es decir, en el agujero ms grande posible. Lista de almacenamiento libre: mantiene en orden descendente por tamao de agujero.

34

Document1

8.7 Multiprogramacin con intercambio de almacenamiento En cada uno de los esquemas de multiprogramacin estudiados hasta el momento, los programas del usuario permanecen en la memoria principal hasta su terminacin. Otro esquema, llamado intercambio, no requiere esto. En algunos sistemas de intercambio, un trabajo ocupa el almacenamiento principal de inmediato. Este trabajo se ejecuta hasta que ya no puede continuar y entonces cede el almacenamiento y el CPU al siguiente trabajo. Con esto, la totalidad del almacenamiento se dedica a un trabajo durante un breve periodo, ese trabajo es entonces retirado (es decir, intercambiado) y entra el nuevo. Un trabajo puede ser intercambiado varias veces, antes de llegar a su terminacin. __

9 Organizacin del almacenamiento virtual


9.1 Introduccin La memoria es una gran matriz de palabras o bytes, cada uno con su propia direccin. La CPU obtiene instrucciones de la memoria segn el valor del contador de programa. Estas instrucciones pueden hacer que se carguen valores de direcciones de memoria especfica o que se guarden en ellas. Un ciclo de ejecucin de instruccin representativo primero obtiene una instruccin de la memoria. Acto seguido, la instruccin se decodifica y podra causar la obtencin de operandos de la memoria. Una vez que se ha ejecutado la instruccin con los operandos, podra almacenarse resultados en la memoria. Cabe sealar que la unidad de memoria slo ve una corriente de direcciones de memoria; no sabe cmo se generan (contador de instrucciones, etc.) ni para qu son (instrucciones o datos). Por tanto, podemos olvidarnos de cmo un programa genera una direccin de memoria; slo nos interesa la secuencia de direcciones de memoria generada por el programa en ejecucin. 9.1.1 Vinculacin de direcciones Normalmente, un programa reside en un disco como archivo binario ejecutable. Es proceso traer el programa a la memoria y colocarlo dentro de un proceso para que se ejecute. Dependiendo de la gestin de memoria empleada, el proceso podra transferirse entre el disco e y la memoria durante su ejecucin. La coleccin de procesos que estn en el disco esperando que se les transfiera a la memoria para ejecutarse forma la cola de entrada. La mayor parte de los sistemas permiten a un proceso de usuario residir en cualquier parte de la memoria fsica. As, aunque el espacio de direcciones del computador comience en 00000, la primera direccin del proceso de usuario no tiene que ser 00000. Esta organizacin afecta las direcciones que el programa de usuario puede utilizar. En la mayor parte de los casos, un programa de usuario pasar por varias etapas (algunas de las cuales podran ser opcionales) antes de ejecutarse. Las direcciones podran representarse de diferentes maneras en dichas etapas,. Las direcciones del programa fuente generalmente son simblicas (como CUENTA). Un compilador por lo regular vincula tales direcciones simblicas con direcciones reubicables ( como 14 bytes a partir del principio de este mdulo). El editor de enlace o cargador, a su vez, vincular estas direcciones reubicables con direcciones absolutas (como 75014). Cada vinculacin es un a trasformacin de un espacio de direcciones a otro. Tradicionalmente, la vinculacin de instrucciones y datos con direcciones de memoria se puede efectuar en cualquier etapa del camino: Compilacin: Si en el momento de la compilacin se sabe en qu parte de la memoria va a residir el proceso, es posible generar cdigo absoluto. Por ejemplo, si se sabe a priori que un proceso de usuario residir a partir de la posicin R, el cdigo generado por el compilador empezar en esa posicin y se extender de ah hacia arriba. Si posteriormente la posicin de inicio cambia, ser
35

Document1

necesario recompilar el cdigo. Los programas con formato .COM de MS-DOS son cdigo absoluto vinculado en el momento de la compilacin. Carga: Si al compilar el programa no se sabe en qu parte de la memoria va a residir el proceso, el compilador deber generar cdigo reubicable. En este caso la vinculacin final se posterga hasta el momento del a carga. Si la direccin de inicio cambia, bastar con volver a cargar el cdigo de usuario para incorporar este valor modificado. Ejecucin: Si, durante su ejecucin, un proceso se podra pasar de un segmento de la memoria a otro, la vinculacin deber postergarse hasta el momento de la ejecucin. Se requiere de hardware especial para que este esquema funcione.

9.1.2 Carga dinmica Hasta aqu hemos supuesto que todo el programa y todos los datos de un proceso deben estar en la memoria fsica para que el proceso se ejecute. El tamao de un proceso est limitado al tamao de la memoria fsica. La carga dinmica es una tcnica donde las rutinas no se cargan sino hasta que se invocan. Todas las rutinas se mantienen en el disco en un formato de carga reubicable. El programa principal se carga en la memoria y se ejecuta. Cuando una rutina necesita llamar a otra, lo primero que hace es ver si la otra rutina ya se carg. Si no es as, se invoca al cargador de enlace reubicable para que cargue la rutina deseada en la memoria y actualice las tablas de direcciones del programa de modo que reflejen este cambio. Luego se transfiere el control a la rutina que se acaba de cargar. La ventaja de la carga dinmica es que una rutina que no se utiliza nunca se carga. 9.1.3 Enlace dinmico El enlace esttico es aquel en el que las bibliotecas de lenguaje del sistema se tratan como cualquier otro mdulo objeto que el cargador combina dentro de la imagen binaria del programa. El concepto de enlace dinmico es similar al de carga dinmica. En lugar de posponer la carga hasta el momento de la ejecucin, lo que se pospone es el enlace. Esta caracterstica suele usarse con las bibliotecas del sistema, como las bibliotecas de subrutinas de un lenguaje. Si no se cuenta con este recurso, todos los programas de un sistema requerirn la inclusin de una copia de su biblioteca de lenguaje (o al menos de las rutinas a las que el programa hace referencia) en su imagen ejecutable. Este requisito desperdicia tanto espacio en disco como memoria principal. Con enlace dinmico, se incluye un fragmento (stub) en la imagen por cada referencia a una rutina de biblioteca. Este fragmento es una seccin pequea de cdigo que indica cmo localizar la rutina de biblioteca apropiada, que reside en la memoria, o cmo cargar la biblioteca si la rutina no est ya presente. Cuando este fragmento se ejecuta, verifica si la rutina que necesita ya est en la memoria. Si no es as, el programa la carga en la memoria. De cualquier manera, el fragmento se sustituye a si mismo por la direccin de la rutina, y ejecuta la rutina. As, la prxima vez que se llega al segmento de cdigo la rutina de biblioteca se ejecuta directamente, sin incurrir en el costo del enlace dinmico. Con este esquema, todos los procesos que utilizan una biblioteca de lenguaje ejecutan una sola copia del cdigo de la biblioteca. Esta caracterstica se puede extender a la actualizacin de bibliotecas (como cuando se corrigen errores). Una biblioteca podra sustituirse por una versin nueva, y todos los programas que hagan referencia a la biblioteca usarn automticamente la nueva versin. Sin enlace dinmico, habra que volver a enlazar todos esos programas para tener acceso a la biblioteca nueva. Para que los programas no ejecuten accidentalmente versiones nuevas e incompatibles de las bibliotecas, se incluye informacin de versin tanto en los programas como en las bibliotecas. Se podra cargar en memoria ms de una versin de una biblioteca, y cada programa utilizar su informacin de versin para decidir cul copia de la biblioteca usar. Si los cambios son menores, se conserva el mismo nmero de versin; si los cambios son importantes, el nmero de versin se incrementa. As, slo los programas que se compilan con la versin
36

Document1

nueva de una biblioteca son afectados por los cambios incompatibles incorporados en ella. Los programas que se enlazaron antes de que se instalara la nueva biblioteca seguirn usando la biblioteca vieja. Este sistema se conoce como de bibliotecas compartidas. 9.1.4 Superposiciones (Overlays) Para que un proceso pueda ser mayor que la cantidad de memoria que se le ha asignado, a veces se emplea una tcnica llamada de superposiciones. Lo que se busca es mantener en la memoria slo las instrucciones y datos que se necesitan en cualquier momento dado. Si se requieren otras instrucciones, se cargan en un espacio que antes estaba ocupado por instrucciones que ya no se necesitan. Las superposiciones no requieren soporte especial por parte del sistema operativo; el usuario las puede implementar en su totalidad. ___ 9.2. Espacio de direcciones lgico y fsico Una direccin generada por la CPU, se denomina direccin lgica, en tanto que la percibida por la unidad de memoria ( esto es, la que se carga en el registro de direccin de memoria de la memoria) se conoce como direccin fsica. Los esquemas de vinculacin de direcciones durante la compilacin y durante la carga dan pie a un entorno en el que las direcciones lgicas y fsicas son las mismas. En cambio, la ejecucin del esquema de vinculacin de direcciones durante la ejecucin produce un entorno en el que las direcciones lgicas y fsicas difieren. En este caso, solemos llamar a la direccin lgica direccin virtual. Aqu los usaremos indistintamente. El conjunto de todas las direcciones lgicas generadas por un programa es su espacio de direcciones lgicas; el conjunto de todas las direcciones fsicas que corresponden a esas direcciones lgicas es un espacio de direcciones fsicas. La transformacin de direcciones virtuales a fsicas en el momento de la ejecucin corre por cuenta de la unidad de gestin de memoria (MMU, memory-management unit), que es un dispositivo de hardware. El registro base ahora se llama registro de reubicacin, y el valor que contiene se suma a todas las direcciones generadas por un proceso de usuario en el momento en que se envan a la memoria. Por ejemplo, si la base est en 14000 y el usuario intenta direccionar la posicin 0, la direccin se reubicar dinmicamente a la posicin 14000; un acceso a la posicin 346 se transforma en la posicin 14346. Cabe sealar que el programa de usuario nunca ve las direcciones fsicas reales. El programa puede crear un puntero a la posicin 346, almacenarlo en memoria, manipularlo, compararlo con otras direcciones, etc., todo como el nmero 346. Slo cuando este nmero se usa como direccin de memoria (digamos en una carga o un almacenamiento indirecto) se le reubica relativo al registro base. El programa de usuario maneja direcciones lgicas. El hardware de transformacin de memoria convierte direcciones lgicas en direcciones fsicas. La posicin final de una direccin de memoria a la que se hace referencia no se determina sino hasta que se hace dicha referencia. Observe tambin que ahora tenemos dos tipos de direcciones distintos: direcciones lgicas (en el intervalo 0 a max) y direcciones fsicas (en el intervalo R + 0 a R + max si el valor base es de R). El usuario genera nicamente direcciones lgicas y piensa que el proceso se ejecuta en las posiciones de 0 a max. EL programa de usuario proporciona direcciones lgicas, las cuales deben transformarse en direcciones fsicas antes de usarse. 9.3 Almacenamiento virtual El trmino almacenamiento virtual suele asociarse con la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computacin. Los dos mtodos ms comunes de implementacin del almacenamiento virtual son la paginacin y la segmentacin.
37

Document1

Evolucin en las organizaciones de almacenamiento: Real Real Sistema Sistemas de multiprogramacin en almacenamiento real dedicado a un solo usuario. Multiprogramacin en particin fija Absoluta Relocalizable Multiprogramacin en particin variable

Virtual Multiprogramacin en almacenamien virtual

Paginacin pura

Segmenta Combinacin cin pura paginacin / segmentacin

9.3.1 Almacenamiento virtual: Conceptos bsicos La clave del concepto de almacenamiento virtual est en la disociacin de las direcciones a las que hace referencia un programa de las direcciones disponibles en el almacenamiento primario. Las direcciones referidas por un proceso en ejecucin se denominan direcciones virtuales. Las direcciones disponibles dentro del almacenamiento primario se denominan direcciones reales. El nmero de direcciones virtuales a que puede hacer referencia un procesos, se llama espacio de direcciones virtuales, V, de ese proceso. El nmero de direcciones reales disponibles en un sistema computacional determinado se llama espacio de direcciones reales, R, de ese computador. Aun cuando los procesos slo hacen referencia a direcciones virtuales, stas deben ejecutarse en el almacenamiento real. Por esto, las direcciones virtuales deben ser transformadas dentro de las direcciones reales, mientras el procesos est en ejecucin. Los mecanismos de traduccin dinmica de direcciones (DAT) convierten las direcciones virtuales en reales al ejecutarse el proceso. Todos estos sistemas exhiben la propiedad de que las direcciones contiguas dentro del espacio de direcciones virtuales de un procesos, no tiene por qu ser contiguas dentro del almacenamiento real; eso se llama contigidad artificial. 9.3.2 Organizacin del almacenamiento de niveles mltiples Si se va a permitir que el espacio de direcciones virtuales de un usuario sea mayor que el espacio de direcciones reales y si se va a multiprogramar de forma efectiva un sistema con muchos usuarios que compartan el recurso del almacenamiento real, entonces hay que proporcionar los medios para retener programas y datos en un gran almacenamiento auxiliar. Esto suele realizarse utilizando un esquema de almacenamiento de dos niveles. El primer nivel es el de almacenamiento real, donde se ejecutan los procesos y donde deben estar los datos para que un proceso pueda referirse a ellos. El segundo nivel consta de un medio de almacenamiento de gran capacidad, como discos, que pueden mantener los programas y datos que no caben al mismo tiempo en el limitado almacenamiento real. Este segundo nivel de almacenamiento recibe los nombres de almacenamiento auxiliar, secundario o adicional.

38

Document1

9.3.3 Transformacin de bloques Los mecanismos de traduccin dinmica de direcciones deben mantener mapas que ilustren qu direcciones del almacenamiento virtual se encuentran en el almacenamiento real y dnde se encuentran. No es rentable transformar los elementos individualmente. As pues, la informacin se agrupa en bloques, y el sistema est informado del lugar del almacenamiento real donde han sido colocados los bloques de almacenamiento virtual. Cuando los bloques son del mismo tamao, reciben el nombre de pginas, y la organizacin de almacenamiento virtual asociada se denomina paginacin. Cuando los bloques pueden tener diferentes tamaos, se llaman segmentos, y la organizacin de almacenamiento virtual asociada se conoce como segmentacin. Algunos sistemas combinan las dos tcnicas, implementando los segmentos como entidades de tamao variable compuestas de pginas de tamao fijo. __ 9.4 Paginacin 9.4.1 Mtodo bsico La memoria fsica se divide en bloques de tamao fijo llamados marcos ( frames ). La memoria lgica tambin se divide en bloques del mismo tamao llamados pginas. Cuando se va a ejecutar un proceso, sus pginas se cargan desde el almacenamiento auxiliar, en cualesquier marcos de memoria que estn disponibles. El almacenamiento auxiliar se divide en bloques de tamao fijo que tienen el mismo tamao que los marcos de memoria. Cada direccin generada por la CPU se divide en dos partes: un nmero de pgina (p) y un desplazamiento en la pgina (d). El nmero de pgina se utiliza como ndice de una tabla de pginas, la cual contiene la direccin base de cada pgina en la memoria fsica. Esta direccin base se combina con el desplazamiento en la pgina para definir la direccin de memoria fsica que se enva a la unidad de memoria. El tamao de pgina (al igual que el de marco) esta definido por el hardware, y suele ser una potencia de dos que vara entre 512 bytes y 16 Mbytes por pgina, dependiendo de la arquitectura del computador. La seleccin de una potencia de dos para el tamao de las pginas facilita mucho la traduccin de una direccin lgica a un nmero de pgina y desplazamiento en la pgina, si el tamao del espacio de direcciones lgico es de 2m, y una pgina contiene 2n unidades de direccionamiento (bytes o palabras), los m-n bits de orden alto de una direccin lgica designan el nmero de pgina, y los n bits de orden bajo designan el desplazamiento en la pgina. Cabe sealar que la paginacin es realmente una forma de reubicacin dinmica. Cuando un proceso ingresa en el sistema para ejecutarse, se examina su tamao expresado en pginas. Cada pgina del proceso requiere un marco, as que si un proceso tiene n pginas, deber haber al menos n marcos disponibles en la memoria. Si los hay, se asignan al proceso entrante. La primera pgina del procese se asigna a uno de los marcos asignados, y el nmero de marco se asienta en la tabla de pginas para este proceso. La siguiente pgina se carga en otro marco, su nmero de marco se coloca en la tabla de pginas, y as sucesivamente. Un aspecto importante de la paginacin es la marcada separacin entre la visin que el usuario tiene de la memoria y la memoria fsica real. El programa de usuario ve la memoria como un solo espacio contiguo, que slo contiene este programa. En realidad, el programa de usuario est disperso por toda la memoria fsica, que tambin contiene otros programas. El hardware de traduccin de direcciones concilia la diferencia entre la visin del usuario y la memoria fsica real. Las direcciones lgicas se traducen en direcciones fsicas. El usuario no ve esta transformacin, que est bajo el control del sistema operativo. Recuerde que, por definicin, el proceso de usuario no puede acceder a memoria que no posee; no tiene manera de direccionar memoria que no est en su tabla de pginas, la cual slo incluye las pginas propiedad de ese proceso.
39

Document1

Puesto que el sistema operativo administra la memoria fsica, debe tener conciencia de los detalles de su asignacin: cuales marcos estn asignados, cules estn libres, cuntos marcos hay en total, etc. Esta informacin generalmente se guarda en una estructura de datos llamada tabla de marcos, la cual tiene, por cada marco de pgina fsico, una entrada en la que se indica si el marco est libre o asignado y, si est asignado, a qu pgina de qu proceso se asign.

__ 9.4.2 Estructura de la tabla de pginas Cada sistema operativo tiene sus propios mtodos para almacenar tablas de pginas. Casi todos asignan una tabla de pginas para cada proceso. Un puntero a la tabla se guarda junto con los valores de los dems registros (como el contador de instrucciones) en el bloque de control del proceso. 9.4.2.1 Soporte de hardware La implementacin en hardware de la tabla de pginas se puede efectuar de varias formas distintas. En el caso ms sencillo, la tabla se implementa como un conjunto de registros dedicados. El empleo de registros para la tabla de pginas es satisfactorio si la tabla es razonablemente pequea. Cuando la tabla es muy grande se mantiene en la memoria principal, y un registro base de tabla de pginas (PTBR, page-table base register) apunta a ella. El problema de este enfoque es el tiempo requerido para acceder a una posicin de memoria de usuario. La solucin es usar un pequeo cach especial en hardware, de consulta rpida, que se conoce como registros asociativos o buffers de traduccin de mirada rpida (TLB, translation look-aside buffers). Cada registro consta de dos partes: una clave y un valor. Cuando se presenta un elemento a los registros asociativos, se compara con todas las claves simultneamente. Si se encuentra el elemento, se devuelve el campo de valor correspondiente. Los registros asociativos se utilizan con las tablas de pginas de la siguiente forma. Los registros contiene slo unas cuantas de las entradas de la tabla. Cuando la CPU genera una direccin lgica, su nmero de pgina se presenta a un conjunto de registros asociativos que contiene nmeros de pginas y sus nmeros de marco correspondiente. Si el nmero de pgina est en un registro asociativo, se obtiene de inmediato su nmero de marco y se usa para acceder a la memoria. Si el nmero de pgina no est en los registros asociativos, ser preciso hacer una referencia a la tabla de paginas en memoria. Una vez obtenido el nmero de marco, servir para acceder a la memoria. Adems, se agrega el nmero de pgina y el de marco a los registros asociativos para poder encontrarlos rpidamente en la siguiente referencia. Si el TLB ya est lleno de entradas, el sistema operativo deber escoger una para sustituirla. Cada vez que se escoge una tabla de pginas nuevas es preciso desalojar (borrar) el RLB para asegurar que el siguiente proceso que se ejecute no emplee la informacin de traduccin equivocada. 9.4.2.2 Proteccin La proteccin de la memoria en un entorno paginado se logra con bits de proteccin asociados a cada marco. Normalmente, estos bits se mantienen en la tabla de pginas. Un bit puede definir si la pgina es de lectura y escritura o slo de lectura. Cada referencia a la memoria pasa por la tabla de pginas para obtener el nmero de marco correcto. Al mismo tiempo que se est calculando la direccin fsica, se pueden examinar los bits de proteccin para comprobar que no se est tratando de escribir en una pgina en la que slo se permite leer. Semejante intento causara la transferencia de control al sistema operativo a travs de una trampa (violacin de la proteccin de memoria).
40

Document1

Tal estrategia de proteccin se puede ampliar fcilmente para ofrecer un nivel ms detallado de proteccin. Generalmente se aade un bit ms a cada entrada de la tabla de pginas: un bit de validez /no validez. Si este bit indica vlido, es que la pgina correspondiente est en el espacio de direcciones lgico del proceso, y por ende es vlida. Si el bit indica no vlido, la pgina no est en el espacio de direcciones lgico del proceso. Las direcciones no vlidas se atrapan empleando el bit de validez /no validez. El sistema operativo establece este bit para cada pgina a fin de permitir o prohibir el acceso a ella.

___ 9.4.3 Paginacin multinivel La generalidad de los sistemas de computador modernos maneja un espacio de direcciones lgicos muy grande (232 a 264). En un entorno as, la tabla de pginas crece demasiado. Una solucin sencilla es dividir la tabla en fragmentos ms pequeos. Hay varias formas de efectuar esto. Una de ellas es adoptar un esquema de paginacin de dos niveles, en el que la tabla de pginas misma tambin se pagina. Apropiado en una mquina de 32 bits. En un sistema con un espacio de direcciones lgico de 64 bits, un esquema de paginacin de dos niveles ya no es apropiado. El mtodo obvio para evitar una tabla de pginas tan grande es dividir la tabla de pginas exterior en fragmentos ms pequeos. Podemos paginar la tabla de pginas exterior y tener un esquema de paginacin de tres niveles, lo cual sigue siendo enorme. El siguiente paso sera un esquema de paginacin de cuatro niveles, el que la tabla de pginas exterior de segundo nivel tambin se pagina. 9.4.4 Tabla de pginas invertida Por lo regular, cada proceso tiene su propia tabla de pginas, la cual tiene una entrada por cada pgina que el proceso est usando ( o una ranura por cada direccin virtual, sin importar la validez de esta ltima). Una de las desventajas de este esquema es que cada tabla de pginas podra contener millones de entradas. Para resolver este problema, podemos usar una tabla de pginas invertidas. Una tabla de pginas invertida tiene una entrada por cada pgina (marco) real de la memoria. Cada entrada consiste en la direccin virtual de la pgina almacenada en esa posicin de memoria real, con informacin acerca del proceso dueo de esa pgina. As, solo hay una tabla de pginas en el sistema, y slo tiene una entrada por cada pgina de memoria fsica. Para ilustrar este esquema, describiremos una versin simplificada de la implementacin de la tabla de pginas invertida que se usa ene el IBM RT. Cada direccin virtual del sistema consiste en una tripleta <id-proceso, nm-pgina, desplazamiento>. Cada entrada de la tabla de pginas invertida es un par <id-proceso, nm-pgina>. Cuando ocurre una referencia a la memoria, una parte de la direccin virtual, que consiste en <id-proceso, nm-pgina>, se presenta al subsistema de memoria. A continuacin se busca en la tabla de pginas invertidas un valor igual. Si se encuentra dicho valor digamos la entrada i se genera la direccin fsica <i, desplazamiento>. Si ninguna entrada coincide, es que se intent un acceso a una direccin no vlida. Aunque este esquema reduce la cantidad de memoria necesaria para almacenar las tablas de pginas, aumenta el tiempo que toma realizar la bsqueda en la tabla cuando ocurre una referencia a una pgina. Puesto que la tabla est ordenada por direccin fsica, y lo que se busca es una direccin virtual, cabe la posibilidad de tener que examinar toda la tabla para encontrar un valor coincidente. 9.4.5 Pginas compartidas Otra ventaja de la paginacin es la posibilidad de compartir cdigo comn. Esta consideracin es importante sobre todo en un entorno de tiempo compartido, en la que se tiene un programa de cdigo
41

Document1

reentrante que puede ser utilizado por varios usuarios. El cdigo reentrante (tambin llamado cdigo puro) es cdigo que no puede modificarse a s mismo. Si el cdigo es reentrante, nunca cambia durante su ejecucin. As, dos o ms procesos pueden ejecutar el mimo cdigo al mismo tiempo. Cada proceso tiene su copia de los registros y el almacenamiento de datos que contienen la informacin para la ejecucin del proceso. Desde luego, los datos de dos procesos distintos son diferentes. Slo hay que mantener una copia del editor en la memoria fsica. La tabla de pginas de cada usuario establece una correspondencia con la misma copia fsica del cdigo reentrante, pero las pginas de datos corresponden a marcos distintos. ___ 9.5 Segmentacin Un aspecto importante de la gestin de memoria que se hizo inevitable al surgir la paginacin es la separacin entre la visin que el usuario tiene de la memoria y la memoria fsica real. La visin del usuario no es igual a la memoria fsica real; slo tiene una correspondencia con ella. La correspondencia permite diferenciar entre la memoria lgica y la fsica. 9.5.1 Mtodo bsico cmo ve el usuario la memoria? el usuario la considera una formacin lineal de bytes, algunos de los cuales contiene instrucciones y otros datos, o hay alguna otra visin preferida de la memoria? En general, se considera que el usuario o programador de un sistema no ve la memoria como una formacin lineal de bytes, ms bien, la ve como una coleccin de segmentos de tamao variable, sin algn ordenamiento necesario entre los segmentos. Pensemos en cmo visualizamos un programa cuando lo estamos escribiendo; lo vemos como un programa principal con una serie de subrutinas, procedimientos, funciones o mdulos. Tambin podra haber diversas estructuras de datos; tablas, arreglos, pilas, variables, etc. Hacemos referencia a cada uno de estos mdulos o elementos de datos por su nombre, sin que nos importe qu posicin en la memoria ocupan tales elementos. No nos interesa si el mdulo 1 esta antes o despus del mdulo 2. Cada uno de estos segmentos tiene longitud variable; la longitud est definida intrnsecamente por el propsito del segmento en el programa. Los elementos dentro de un segmento se identifican mediante su distancia al inicio del segmento. La segmentacin es un esquema de gestin de memoria que apoya esta visin que el usuario tiene de la memoria. Un espacio de direcciones lgicas es una coleccin de segmentos, cada uno de los cuales tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como las distancia dentro del segmento. As, el usuario especifica cada direccin con dos cantidades: un nombre de segmento y un desplazamiento.(Contrstese este esquema con el de paginacin, donde el usuario especificaba una sola direccin, que el hardware divida en un nmero de pgina y un desplazamiento, todo ello invisible par el programador.) Para simplificar la implementacin, los segmentos se numeran y se hace referencia a ellos por un nmero de segmento, no por su nombre. As, una direccin lgica consiste en una dupla <nm-segmento, desplazamiento> Normalmente, el programa de usuario se compila, y el compilador construye automticamente segmentos que reflejan al programa que se le aliment. 9.5.2 Hardware Aunque el usuario ahora puede referirse a los objetos del programa con una direccin bidimensional, la memoria fsica real sigue siendo una secuencia unidimensional de bytes. Por ello, es preciso definir una
42

Document1

implementacin que transforme las direcciones bidimensionales definidas por el usuario en direcciones fsicas unidimensionales. Esta transformacin se efecta con una tabla de segmentos. Cada entrada de la tabla tiene una base de segmento y un lmite de segmento. LA base contiene la direccin fsica inicial donde el segmento reside en la memoria, mientras que el lmite especifica la longitud del segmento. Una direccin lgica consta de dos partes: un nmero de segmento, s, y un desplazamiento dentro de ese segmento, d. El nmero de segmento sirve como ndice para consultar la tabla de segmentos. El desplazamiento d de la direccin lgica debe estar entre 0 y el lmite del segmento; si no, transferimos el control al sistema operativo por una trampa (intento de direccionamiento lgico ms all del final del segmento). Si el desplazamiento es vlido, se suma a la base del segmento para producir la direccin del byte deseado en la memoria fsica. 9.5.3 Implementacin de las tablas de segmentos Al igual que la tabla de paginacin, la tabla de segmentos se puede colocar en registros rpidos o bien en la memoria. Una tabla de segmentos que se mantiene en registros se puede consultar rpidamente. Si un programa puede tener un gran nmero de segmentos, no es factible mantener la tabla de segmentos en registros , y hay que mantenerla en la memoria. Un registro base de la tabla de segmentos (STBR, segment-table base register) apunta a la tabla de segmentos. Tambin, dado que el nmero de segmentos que un programa usa puede variar mucho, se mantiene un registro de longitud de la tabla de segmentos (STLS, segment-table length register). Para una direccin lgica (s, d), primero se verifica que el nmero de segmento sea legal (es decir, s< STLR); luego se suma el nmero de segmento al STBR para obtener la direccin en memoria (STBR + s) de la entrada de la tabla de segmento. Se lee dicha entrada de la memoria y se procede igual que antes: se coteja el desplazamiento con la longitud del segmento y se calcula la direccin fsica del byte deseado como la suma de la base del segmento y el desplazamiento. Como ocurre con la paginacin, esta transformacin hace al sistema de computacin ms lento. La solucin normal es utilizar un conjunto de registros asociativos para guardar las entradas de la tabla de segmentos que se usaron ms recientemente. 9.5.4 Proteccin y compartimiento Una ventaja especfica de la segmentacin es que podemos asociar la proteccin con los segmentos. Dado que los segmentos representan porciones semnticamente definidas de un programa, es probable que todas las entradas del segmento se usen del mismo modo. As, tendremos algunos segmentos que contiene instrucciones, mientras que otros contienen datos. En una arquitectura moderna, las instrucciones no se pueden modificar a s mismas, as que los segmentos de instrucciones se pueden definir como slo para lectura o slo para ejecucin. El hardware de transformacin de la memoria examina los bits de proteccin asociados a cada entrada de la tabla de segmentos y evita los accesos no permitidos a la memoria, como los intentos de escribir en un segmento que slo puede leerse, o de usar como datos un segmento que slo puede ejecutarse. Si colocamos un arreglo en su propio segmento, el hardware de gestin de memoria verificar automticamente que los ndices del arreglo sean vlidos y no se salgan de los lmites del arreglo. Otra ventaja de la segmentacin tiene que ver con el compartimiento de cdigo o datos. Cada proceso tiene asociada una tabla de segmentos, que el despachador usa para definir la tabla de segmentos en hardware cuando se asigna la CPU a ese proceso. Los segmentos se comparten cuando estradas de las tablas de segmentos de dos procesos distintos apuntan a las mismas posiciones fsicas. El compartimiento se hace en el nivel de segmentos. As, cualquier informacin puede compartirse si se define como un segmento. Es posible compartir varios segmentos, as que un programa compuesto por varios segmentos puede compartirse. 9.5 Segmentacin con paginacin

43

Document1

En este mtodo se pagina los segmentos. La diferencia entre esta solucin y la segmentacin pura es que la entrada segmentable no contiene la direccin base del segmentos, sino la direccin base de una tabla de pginas para este segmento. Ahora debemos tener una tabla de pginas individual para cada segmento. Sin embargo, dado que la longitud de cada segmento est limitada por su entrada en la tabla de segmentos, no es necesaria que la tabla de pginas sea grande; slo tendr tantas entradas como realmente se necesiten.. 10 Memoria virtual La memoria vitual es una tcnica que permite ejecutar procesos que podran no estar totalmente en la memoria. La principal ventaja tangible de este esquema es que los programas pueden ser ms grandes que la memoria fsica. Adems, dicho esquema hace una abstraccin de la memoria considerndola como una matriz uniforme y extremadamente grande de almacenamiento, con lo que separa la memoria lgica que el usuario ve, de la memoria fsica. 10.1 Antecedentes Los algoritmos de gestin de memoria vistos anteriormente son necesarios a causa de un requisito bsico: las instrucciones que se estn ejecutando deben estar en la memoria fsica. La primera estrategia para satisfacer este requisito es colocar todo el espacio de direcciones lgico en la memoria fsica. Las superposiciones y la carga dinmica pueden ayudarnos a hacer menos limitante esta restriccin. Esta restriccin limita el tamao de los programas al tamao de la memoria. De hecho, si examinamos programas reales, veremos que en muchos casos no se necesita todo el programa. La capacidad para ejecutar un programa que no est todo en la memoria tendra muchas ventajas: Los programas ya no estaran limitados por la cantidad de memoria fsica con que se cuenta. Los usuarios podran escribir programas para un espacio de direcciones virtual extremadamente grande, lo que simplificara la tarea de programacin. Puesto que cada programa de usuario ocupara menos memoria fsica, se podran ejecutar ms programas al mismo tiempo. Esto aumentara el aprovechamiento de la CPU y la productividad sin aumentar el tiempo de respuesta ni el de retorno. Se requerira menos E/S para cargar o intercambiar cada programa de usuario, por lo que su ejecucin sera ms rpida.

La memoria virtual generalmente se implementa con paginacin por demanda. 10.2 Paginacin por demanda Un sistema de paginacin por demanda es similar a un sistema de paginacin con intercambio. Los procesos residen en memoria secundaria (generalmente un disco). Cuando queremos ejecutar un proceso, lo pasamos por intercambio a la memoria; sin embargo, en ligar de intercambiar todo el proceso, usamos un intercambiados perezoso. Un intercambiador perezoso nunca intercambia una pgina a la memoria si no se va a necesitar. Dado que ahora visualizamos un proceso como una secuencia de pginas, y no como un espacio de direcciones contiguo de gran tamao, el uso del trmino intercambiador es tcnicamente incorrecto. Un intercambiador manipula proceso enteros, mientras que un paginador se ocupa de las pginas individuales de un proceso. Por ello, usaremos el trmino paginador en lugar de intercambiador al hablar de paginacin por demanda. Cuando un proceso se va a traer a la memoria, el paginador adivina cules son las pginas que se usarn antes de que el programa se intercambie de vuelta al disco. En lugar de traer a la memoria todo el proceso, el paginador slo trae las pginas necesarias; as, evita leer y colocar en la memoria pginas que de todos
44

Document1

modos no se usarn, con lo que se reduce el tiempo de intercambio y la cantidad de memoria fsica requerida. Con este esquema, necesitamos alguna forma de soporte de hardware para distinguir entre las pginas que estn en la memoria y las que estn en disco. Podemos usar para este fin el esquema de bit de validez-no validez, donde ahora el valor de vlido del bit indica que la pgina correspondiente es vlida y est en la memoria. Si el bit tiene el valor no vlido, quiere decir que la pgina o bien no es vlida (es decir, no est en el espacio de direcciones lgico del procesos) o es vlida pero no est en la memoria. La entrada de la tabla de pginas correspondiente a una pgina que se trajo a la memoria se establece de la forma acostumbrada, pero la correspondiente a una pgina que actualmente no est en la memoria simplemente se marca como no vlida, o bien contiene la direccin de la pgina en el disco. Cabe sealar que marcar una pgina como no vlida no tiene efecto alguno si el procesos nunca intenta acceder a esa pgina. Por tanto, si adivinamos correctamente y traemos a la memoria todas las pginas que en verdad se necesitan, y nicamente esas, el proceso se ejecutar exactamente igual que si hubiramos trado todas las pginas. Muestra el proceso ejecute y acceda a pginas residentes en memoria, la ejecucin se realizar normalmente. Pero, qu sucede si el proceso trata de usar una pgina que no se trajo a la memoria? El acceso a una pgina marcada como no vlida causa una trampa de fallo de pgina (page fault). El hardware de paginacin, al traducir la direccin utilizando la tabla de pginas, se percatar de que el bit de no validez est encendido y causar una transferencia de control al sistema operativo. Esta trampa ocurre porque el sistema operativo no pudo traer la pgina deseada a la memoria (en un intento por minimizar el gasto extra de transferencia del disco y las necesidades de memoria), no es un error de direccin no vlida causado por un intento de usar una direccin de memoria no permitida (como cuando se usa un subndice de arreglo incorrecto). El procedimiento para manejar este fallo es: 1. Consultar una tabla interna (que usualmente se guarda junto con el bloque de control de proceso) de este proceso, para determinar si la referencia fue un acceso vlido o no vlido a la memoria. 2. Si la referencia no era vlida, se termina el proceso; si era vlida, pero todava no se ha trado esa pgina, proceder a traerla. 3. Encontrar un marco libre (tomando uno de la lista de marcos libres). 4. Planificar una operacin de disco para leer la pgina deseada y colocarla en el marco recin asignado. 5. Al terminar la lectura del disco, modificar la tabla interna que se guarde junto con el proceso y la tabla de pginas, d modo que indiquen que la pgina ya est en la memoria. 6. Reiniciar la instruccin que se interrumpi por la trampa de direccin no vlida. Ahora el proceso puede acceder a la pgina como si siempre hubiera estado en la memoria. 10.3 Reemplazo de pginas En estos esquemas, la frecuencia de fallos de pgina no ha representado un problema grave porque una pgina dada puede dar pie cuando ms a un solo fallo de pgina, el cual, si ocurre, lo har la primera vez que se haga referencia a esa pgina. AL aumentar el grado de multiprogramacin, estaremos sobreasignando la memoria. La sobreasignacin se hace evidente como sigue. Mientras se est ejecutando un proceso de usuario, ocurre un fallo de pgina. El hardware transfiere el control la sistema operativo por una trampa, y ste examina sus pginas internas para comprobar que se trat de un fallo de pgina y no de un acceso a memoria no vlido. El sistema operativo determina en qu parte del disco reside la pgina deseada, pero luego se da cuenta de que no hay marcos libres en la lista de marcos libres; se est usando toda la memoria. Al llegar a este punto, el sistema operativo tiene varias opciones. Una de ellas sera terminar el proceso de usuario. O se podra intercambiar a disco un proceso para liberar todos sus marcos y reducir el nivel de programacin. O se podra hacer el reemplazo de pginas.
45

Document1

El reemplazo de pginas adopta el siguiente enfoque: si no hay marcos libres, encontramos uno que no se est usando y lo liberamos. Podemos liberar un marco escribiendo su contenido en el espacio de intercambio y modificando la tabla de pginas (y todas las dems tablas) de modo que indiquen que la pgina ya no est en la memoria. Ahora, el marco liberado puede servir para contener la pgina por la cual ocurri el fallo. La rutina de servicio de fallos de pgina se modifica as para incluir el reemplazo de pginas: 1. Encontrar la pgina deseada en el disco. 2. Hallar un marco libre: a. Si hay un marco libre, usarlo. b. Si no, usar un algoritmo de reemplazo de pginas para escoger un marco vctima. c. Escribir la pgina vctima en el disco; modificar de manera acorde las tablas de pginas y de marcos. 3. Leer la pgina deseada y colocarla en el marco recin liberado; modificar las tablas de pginas y de marcos. 4. Reiniciar el proceso de usuario. Observe que, si no hay marcos libres, se requieren dos transferencias de pgina. Este gasto extra pude reducirse empleado un bit de modificacin, o bit sucio. Cada pgina o marco pude tener en hardware un bit de modificacin asociado a ella. El hardware enciende (pone en 1) el bit de modificacin de una pgina siempre que se escribe una palabra o byte de la pgina, e indica que la pgina se modific. Cuando seleccionamos una pgina para reemplazarla, examinamos su bit de modificacin. Si el bit est encendido, sabemos que la pgina se modific despus de haberse ledo del disco. En este caso es preciso escribir la pgina en el disco. Si el bit de modificacin est apagado, la pgina no se ha modificado desde que se trajo a la memoria. Por tanto, si la copia de la pgina que est en el disco no se ha sobrescrito (con alguna otra pgina, por ejemplo) podemos evitar la escritura en disco de la pgina que est en la memoria, pues ya est en el disco. Esta tcnica tambin aplica a las pginas que slo pueden leerse. Tales pginas no pueden modificarse, as que pueden desecharse cuando se desee. Por lo tanto es necesario resolver el problema de cmo reemplazar las pginas. 10.4 Algoritmos de reemplazo de pginas 10.4.1 Algoritmo FIFO El algoritmo de reemplazo de pginas ms sencillo es del tipo primero en entrar, primero en salir (FIFO, first-in, first-out). Un algoritmo de reemplazo FIFO asocia a cada pgina el instante en que esa pgina se trajo a la memoria. Si es necesario reemplazar una pgina, se escoge la ms vieja. Cabe sealar que no es estrictamente necesario registrar el instante en que se trae una pgina. Podemos crear una cola FIFO que contenga todas las pginas que estn en la memoria, y reemplazar la pgina que est a la cabeza de la cola. Cuando traemos una pgina a la memoria, la insertamos al final de la cola. 10.4.2 Algoritmo ptimo La anomala de Belady refleja el hecho de que, con algunos algoritmos de reemplazo de pginas, la frecuencia de fallos de pgina podra aumentar al aumentar el nmero de marcos asignados. Esperaramos que conceder ms memoria a un proceso mejorara su desempeo, lo cual no siempre se cumple. Un resultado del descubrimiento de la anomala de Belady fue la bsqueda de una algoritmo de reemplazo de pginas ptimo. Un algoritmo ptimo tiene la frecuencia de fallos de pgina ms bajo de todos los algoritmos de reemplazo de pginas, y nunca exhibe la anomala de Belady. Existe un algoritmo de reemplazo de pginas ptimo, que se ha denominado OPT o MIN, y es sencillamente
46

Document1

Reemplazar la pgina que no se usar durante ms tiempo El empleo de este algoritmo de reemplazo de pginas garantiza la frecuencia de fallos de pgina ms baja para un nmero fijo de marcos. 10.4.3 Algoritmo LRU Si el algoritmo ptimo no es factible, tal vez podra lograrse una aproximacin. La distincin clave entre los algoritmos FIFO y OPT (aparte de mirar hacia atrs y hacia delante en el tiempo) es que el primero usa el instante en que una pgina se trajo a la memoria, mientras que el segundo usa el instante en que se usar una pgina. Si utilizamos el pasado reciente como una aproximacin del futuro cercano, sustituiremos la pgina que no se ha usado durante ms tiempo. La estrategia es el algoritmo de menos recientemente usada (LRU, least recently used). El reemplazo LRU asocia a cada pgina el instante en que se us por ltima vez. Si es necesario reemplazar una pgina, LRU escoge la pgina que tiene ms tiempo sin usarse. Esta estrategia es el algoritmo de reemplazo ptimo mirando hacia atrs en el tiempo en vez de hacia delante. La poltica LRU se usa mucho como algoritmo de reemplazo de pginas y se considera excelente; el problema principal es cmo implementarla. Hay dos implementaciones factibles: Contadores: En el caso ms sencillo, asociamos a cada entrada de la tabla de pginas un campo de tiempo de uso, y aadimos a la CPU un reloj lgico o contador. El reloj se incrementa en cada referencia a la memoria. Cada vez que se hace referencia a una pgina, el contenido del registro de reloj se copia en el campo de tiempo de uso de la entrad de tabla de pginas para esa pgina. Reemplazamos la pgina que tiene el valor de tiempo ms pequeo. Pila: Otra estrategia para implementar el reemplazo LRU es mantener una pila de nmeros de pgina. Cuando se hace referencia a una pgina, se saca de la pila y se la coloca arriba. De este modo, el tope de la pila siempre es la pgina ms recientemente utilizada, y la base es la pgina LRU

10.4.4 Algoritmo de aproximacin a LRU Pocos sistemas de computacin ofrecen suficiente soporte de hardware para el verdadero reemplazo de pginas LRU. Muchos sistemas proporcionan un poco de ayuda, en forma de un bit de referencia. El hardware enciende (pone en 1) el bit de referencia de una pgina de cada vez que se hace referencia a ella (sea para leer o escribir cualquier byte de la pgina). Cada entrada de la tabla de pginas tiene asociado un bit de referencia. Inicialmente, el sistema operativo apaga (pone en 0) todos los bits. A medida que un proceso se ejecuta, el hardware enciende el bit asociado a cada pgina a la que se hace referencia. Despus de cierto tiempo, podremos determinar cules pginas se han usado y cules no examinando los bits de referencia. 10.4.4.1 Algoritmo con bits de referencia adicionales Podemos obtener informacin de ordenamiento adicional si registramos los bits de referencia a intervalos adicionales. Podemos mantener un byte histrico de ocho bits para cada pgina de una tabla que est en memoria. A intervalos regulares, una interrupcin del temporizador transfiere el control al sistema operativo, el cual introduce el bit de referencia de cada pgina en el bit de orden alto de su byte histrico, desplazando los dems bits de una posicin hacia la derecha y desechando el bit de orden bajo. Estos registros de desplazamiento de ocho bits contienen la historia de uso de la pgina durante los ltimos ocho periodos del temporizador. Si el registro de desplazamiento contiene 0000000, la pgina no se ha usado
47

Document1

durante ocho periodos del temporizador; una pgina que se ha usado al menos una vez cada periodo tendr un valor de 11111111 en el registro de desplazamiento. Una pgina cuyo registro histrico contiene el valor 11000100 se us ms recientemente que uno cuyo registro contiene 01110111. Si interpretamos estos byte como enteros sin signo, la pgina que contiene el nmero ms bajo es la pgina LRU, y se puede sustituir. Cabe sealar que no est garantizado la unicidad de dichos nmeros. Podemos optar por reemplazar (intercambiar a disco) todas las pginas que tiene el valor ms bajo, o bien usar unas seleccin FIFO entre ellos. Se puede variar el nmero de bits histricos, con un caso extremo de reducir el nmero a cero, dejando slo el bit de referencia. En este caso el algoritmo de reemplazo de pginas se denomina de segunda oportunidad. 10.4.4.2 Algoritmo de segunda oportunidad El algoritmo bsico de reemplazo de segunda oportunidad es un algoritmo FIFO, excepto que una vez que se ha seleccionado una pgina se examina su bit de referencia. Si el valor es cero, procedemos a reemplazar la pgina, pero si es 1, damos a esa pgina una segunda oportunidad y seleccionamos la siguiente pgina FIFO. Cuando se da una pgina una segunda oportunidad, su bit de referencia se pone en cero y su hora de llegada se restablece a la hora actual. As, una pgina a la que se le dio una segunda oportunidad no ser reemplazada hasta que todas las dems pginas se reemplacen (o reciban una segunda oportunidad). Adems, si una pgina se usa con la suficiente frecuencia como para mantener encendido su bit de referencia, nunca ser reemplazada. Una forma de implementar el algoritmo de segunda oportunidad (tambin conocido como algoritmo de reloj) es con una cola circular. Un puntero indica cul pgina se debe reemplazar a continuacin. Cuando se necesita un marco, el puntero avanza hasta encontrar una pgina cuyo bit de referencia est apagado. Al avanzar el puntero, los bits de referencia encendidos se van apagando. Una vez hallada una pgina vctima, se reemplaza y la nueva pgina se inserta en la cola circular en esa posicin. Observe que, en el peor de los casos, en el que todos los bits estn encendidos, el puntero recorre toda la cola, dando a cada pgina una segunda oportunidad, y todos los bits de referencia se apagan antes de seleccionarse la siguiente pgina a reemplazar. El reemplazo de segunda oportunidad degenera a reemplazo FIFO si todos los bits estn encendidos. 10.4.4.3 Algoritmo de segunda oportunidad mejorado El algoritmo de segunda oportunidad puede mejorarse si consideramos tanto el bit de referencia como el bit de modificacin como un par ordenado. Con estos dos bits, tenemos las cuatro clases posibles siguientes: 1. (0,0) ni se us recientemente ni se modific; es la mejor pgina que se puede reemplazar. 2. (0,1) no se us recientemente pero si se modific; no es tan buena, porque habr que escribir en disco la pgina antes de reemplazarla. 3. (1,0) se us recientemente pero no se ha modificado, probablemente se usar otra vez pronto. 4. (1,1) se us recientemente y se modific; probablemente se usar otra vez, y ser necesario escribirla en disco antes de reemplazarla. Si es preciso reemplazar una pgina, todas las pginas pertenecen a una de estas cuatro clases. Utilizamos el mismo esquema que en el algoritmo de reloj, pero en lugar de ver si el bit de referencia de la pgina a la que apunta el puntero est encendido, se determina a la calase a la que la pgina pertenece. Reemplazaremos la primera pgina que encontremos en la clase ms baja que no est vaca. 10.4.5 Algoritmos de conteo

48

Document1

Otros algoritmos que se pueden usar son aquellos en que se mantiene un contador del nmero de referencias que se han hecho a cada pgina, por ejemplo: Algoritmo LFU: El algoritmo de reemplazo de pginas menos frecuentemente usadas (LFU, least frequently used) exige reemplazar la pgina que tiene la cuenta ms baja. La razn de esta seleccin es que una pgina que se ha usado activamente debe tener una cuenta de referencias grandes. Este algorimo no es eficiente en el caso de pginas que se usaron mucho durante la fase inicial del proceso y luego nunca se vuelven a usar. Al haberse usado mucho, tiene una cuenta grande y permanecern en memoria aunque ya no se necesiten. Una solucin sera desplazar alas cuentas un bit a la derecha a intervalos regulares par formar una cuenta de uso promedio con decaimiento exponencial. Algoritmo MFU: El algoritmo de reemplazo de pginas ms frecuentemente usadas (MFU, most frequently used) se basa en el argumento de que la pgina con la cuenta ms baja probablemente se acaba de traer a la memoria y todava no se usa.

10.4.5 Algoritmo de colocacin de pginas en buffers Es comn utilizar otros procedimientos adems de un algoritmo de reemplazo de pginas especfico. Por ejemplo, muchos sistemas mantienen una reserva de marcos libres. Cuando ocurre una fallo de pgina, se escoge un marco de vctima igual que antes. Sin embargo, la pgina deseada se coloca en un marco libre de la reserva antes de escribir la vctima en el disco. Este procedimiento permite al proceso reiniciarse lo ms pronto posible, sin esperar a que la pgina vctima se escriba en el disco. Cuando la vctima termina de escribirse en el disco, su marco se aade a la reserva de marcos libres. Una expansin de esta idea es mantener una lista de pginas modificadas. Siempre que el dispositivo de paginacin est ocioso, se escoge una pgina modificada y se escribe en el disco, despus de lo cual se apaga su bit de modificacin. Este esquema aumenta la probabilidad de que una pgina est limpia cuando se le escoja para ser reemplazada, y no tenga que escribirse. Otra modificacin consiste en mantener una reserva de marcos libres, pero recordar cul pgina estaba en cada marco. Puesto que el contenido de un marco no se modifica cuando la pgina que contiene se escribe en el disco, es posible reutilizar la pgina vieja directamente de la reserva de marcos libres si llega a necesitarse antes de que vuelva a usarse ese marco.

49

You might also like