You are on page 1of 233

Sistemas Operativos

Unidad Temas 1 Introduccin a los sistemas operativos. Subtemas 1.1 Definicin y concepto. 1.2 Funciones y caractersticas. 1.3 Evolucin histrica. 1.4 Clasificacin. 1.5 Estructura (niveles o estratos de diseo). 1.6 Ncleo. 1.6.1 Interrupciones (FLIH). 1.6.2 Despachador(Scheduler). 1.6.3 Primitivas de comunicacin(IPC). 2.1 Concepto de proceso. 2.2 Estados y transiciones de los procesos 2.3 Procesos ligeros (Hilos o hebras). 2.4 Concurrencia y secuenciabilidad. 2.4.1 Exclusin mutua de secciones criticas. 2.4.2 Sincronizacin de procesos en S.C. 2.4.2.1 Mecanismo de semforos. 2.4.2.2 Mecanismo de monitores. 2.4.3 Interbloqueo (DeadLock). 2.4.3.1 Prevencin. 2.4.3.2 Deteccin. 2.4.3.3 Recuperacin. 2.5 Niveles, objetivos y criterios de planificacin. 2.6 Tcnicas de administracin del planificador. 2.6.1 FIFO 2.6.2 SJF 2.6.3 RR 2.6.4 Queves multi-level. 2.6.5 Multi-level feedback queves. 3.1 Poltica y filosofa. 3.2 Memoria real. 3.2.1 Administracin de almacenamiento.

Administracin de procesos y del procesador.

Administracin de memoria.

3.2.2 Jerarqua. 3.2.3 Estrategia de administracin de memoria. 3.2.4 Asignacin contigua v.s. no contigua. 3.2.5 Multiprogramacin de particin fija, particin variable, con intercambio de almacenamiento. 3.3 Organizacin de memoria virtual. 3.3.1 Evaluacin de las organizaciones de almacenamiento. 3.3.2 Paginacin. 3.3.3 Segmentacin. 3.3.4 Sistemas de paginacin segmentacin. 3.4 Administracin de memoria virtual. 3.4.1 Estrategias de administracin. 3.4.2 Tcnicas de reemplazo de pginas. 3.4.3 Paginacin por demanda. 3.4.4 Paginacin anticipada. 3.4.5 Liberacin de pgina. 3.4.6 Tamao de pgina. 4 Administracin de entrada/salida. 4.1 Dispositivos y manejadores de dispositivos (device drivers). 4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers). 4.3 Estructuras de datos para manejo de dispositivos. 4.4 Operaciones de Entrada /salida. 5.1 Concepto. 5.2 Nocin de archivo real y virtual. 5.3 Componentes de un sistema de archivos. 5.4 Organizacin lgica y fsica. 5.5 Mecanismos de acceso a los archivos. 5.6 Manejo de espacio en memoria secundaria. 5.7 Modelo jerrquico.

Sistema de archivos.

5.8 Mecanismos de recuperacin en caso de falla. 6 Proteccin y seguridad. 6.1 Concepto y objetivos de proteccin. 6.2 Funciones del sistema de proteccin. 6.3 Implantacin de matrices de acceso. 6.4 Proteccin basada en el lenguaje. 6.5 Concepto de seguridad. 6.6 Clasificaciones de la seguridad. 6.7 Validacin y amenazas al sistema. 6.8 Cifrado.

Unidad 1 Introduccin a los sistemas operativos.


1.7 Definicin y concepto.
Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una vista simple y agradable de los archivos nominados que pueden leerse y escribirse. Es sistema operativo resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo, tambin disimula mucho del trabajo concerniente a interrupciones, relojes o cronmetros, manejo de memoria y otras caractersticas de bajo nivel.

Desde su creacin, las computadoras digitales han utilizado un sistema de codificacin de instrucciones en sistema de numeracin binaria, es decir con los 0S. Esto se debe a que los circuitos integrados funcionan con este principio, es decir, hay corriente o no hay corriente. En el origen de la historia de las computadoras ( hace unos cuarenta aos), los sistemas operativos no existan y la introduccin de un programa para ser ejecutado se converta en un increble esfuerzo que solo poda ser llevado a cabo por muy pocos expertos. Esto hacia que las computadoras fueran muy complicadas de usar y que se requiriera tener altos conocimientos tcnicos para operarlas. Era tan complejo su manejo, que en algunos casos el resultado llegaba a ser desastroso. Adems, el tiempo requerido para introducir un programa en aquellas grandes mquinas de lento proceso superaba por mucho el de ejecucin y resultaba poco provechosa la utilizacin de computadoras para resolucin de problemas prcticos. Se buscaron medios ms elaborados para manipular la computadora, pero que a su vez simplificaran la labor del operador o el usuario. Es entonces cuando surge la idea de crear un medio para que el usuario pueda operar la computadora con un entorno, lenguaje y operacin bien definido para hacer un verdadero uso y explotacin de esta. Surgen los sistemas operativos. Un sistema operativo es el encargado de brindar al usuario una forma amigable y sencilla de operar, interpretar, codificar y emitir las ordenes al procesador central para que este realice las tareas necesarias y especificas para completar una orden.

El sistema operativo, es el instrumento indispensable para hacer de la computadora un objeto til. Bajo este nombre se agrupan todos aquellos programas que permiten a los usuarios la utilizacin de este enredo de cables y circuitos, que de otra manera serian difciles de controlar. Un sistema operativo se define como un conjunto de procedimientos manuales y automticos, que permiten a un grupo de usuarios compartir una instalacin de computadora eficazmente.

Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin exacta, es decir una que sea estndar; a continuacin se presentan algunas: 1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cmputo"; los sistemas operativos ponen dicha capacidad de cmputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento. 2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;adems de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los datos. 3.- Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware del computador y su propsito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema. En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son: o o Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. Facilitar el trabajo al usuario.-Permite una comunicacin con los dispositivos de la mquina.

El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de cdigo que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software variado.

1.2 Funciones y caractersticas.


La funcin del sistema operativo es la de presentar al usuario con el equivalente de una mquina ampliada o mquina virtual que sea ms fcil de programar que el hardware implcito. Interpreta los comandos que permiten al usuario comunicarse con el ordenador. Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse. Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnticas.

Gestiona los errores de hardware y la prdida de datos. Servir de base para la creacin del software logrando que equipos de marcas distintas funcionen de manera anloga, salvando las diferencias existentes entre ambos. Configura el entorno para el uso del software y los perifricos; dependiendo del tipo de mquina que se emplea, debe establecerse en forma lgica la disposicin y caractersticas del equipo. Como por ejemplo, una microcomputadora tiene fsicamente dos unidades de disco, puede simular el uso de otras unidades de disco, que pueden ser virtuales utilizando parte de la memoria principal para tal fin. En caso de estar conectado a una red, el sistema operativo se convierte en la plataforma de trabajo de los usuarios y es este quien controla los elementos o recursos que comparten. De igual forma, provee de proteccin a la informacin que almacena.

Funciones de los sistemas operativos. 1.- Aceptar todos los trabajos y conservarlos hasta su finalizacin. 2.- Interpretacin de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador. 3.- Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse. 4.- Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnticas. 5.- Manejo de errores: Gestiona los errores de hardware y la prdida de datos. 6.- Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien despus). 7.- Proteccin: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario. 8.- Multiacceso: Un usuario se puede conectar a otra mquina sin tener que estar cerca de ella. 9.- Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos. Caractersticas de los sistemas operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas: Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. El software de aplicacin son programas que se utilizan para disear, tal como el procesador de palabras, lenguajes de programacin, hojas de clculo, etc. El software de base sirve para interactuar el usuario con la mquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseo del mismo.

El Software de base est compuesto por : o o o o Cargadores. Compiladores. Ensambladores. Macros.

1.3 Evolucin histrica.


Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones. En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de vlvulas ( primera generacin ) a transistores ( segunda generacin ), a circuitos integrados ( tercera generacin), a circuitos integrados de gran y muy gran escala (cuarta generacin). Cada generacin Sucesiva de hardware ha ido acompaada de reducciones substanciales en los costos, tamao, emisin de calor y consumo de energa, y por incrementos notables en velocidad y capacidad. Generacion Cero (dcada de 1940) Los primeros sistemas computacionales no posean sistemas operativos. Los usuarios tenan completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano. Primera Generacion (dcada de 1950) Los sistemas operativos de los aos cincuenta fueron diseados para hacer mas fluida la transicin entre trabajos. Antes de que los sistemas fueran diseados, se perda un tiempo considerable entre la terminacin de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunan por grupos o lotes. Cuando el trabajo estaba en ejecucin, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y lea e iniciaba el trabajo siguiente. Al inicio de los 50's esto haba mejorado un poco con la introduccin de tarjetas perforadas (las cuales servan para introducir los programas de lenguajes de mquina), puesto que ya no haba necesidad de utilizar los tableros enchufables. Adems el laboratorio de investigacin General Motors implement el primer sistema operativo para la IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transicin entre tareas se suavizaba para lograr la mxima utilizacin del sistema. Esto se conoce como sistemas de procesamiento por lotes de un slo flujo, ya que los programas y los datos eran sometidos en grupos o lotes. La introduccin del transistor a mediados de los 50's cambi la imagen radicalmente. Se crearon mquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque slo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podan dar el lujo de tenerlas. Para poder correr un trabajo (programa), tenan que escribirlo en papel (en Fortran o en lenguaje ensamblador) y despus se perforara en tarjetas. Enseguida se llevara la pila de tarjetas al cuarto de introduccin al sistema y la entregara a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigira a la impresora y desprendera la salida y la llevara al cuarto de salida, para que la recogiera el programador. Segunda Generacion (a mitad de la dcada de 1960)

La caracterstica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramacin, y los principios del multiprocesamiento. En los sistemas de multiprogramacin, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se cambia rpidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina. La independencia de dispositivos aparece despus. Un usuario que desea escribir datos en una cinta en sistemas de la primera generacin tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generacin, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad. Se desarrollo sistemas compartidos, en la que los usuarios podan acoplarse directamente con el computador a travs de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata. Tercera Generacion (mitad de dcada 1960 a mitad dcada de 1970) Se inicia en 1964, con la introduccin de la familia de computadores Sistema/360 de IBM. Los computadores de esta generacin fueron diseados como sistemas para usos generales . Casi siempre eran sistemas grandes, voluminosos, con el propsito de serlo todo para toda la gente. Eran sistemas de modos mltiples, algunos de ellos soportaban simultneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se haba construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho despus de lo que el planificador marcaba como fecha de terminacin. Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios. Cuarta Generacion (mitad de dcada de 1970 en adelante) Los sistemas de la cuarta generacin constituyen el estado actual de la tecnologa. Muchos diseadores y usuarios se sienten aun incmodos, despus de sus experiencias con los sistemas operativos de la tercera generacin. Con la ampliacin del uso de redes de computadores y del procesamiento en lnea los usuarios obtienen acceso a computadores alejados geogrficamente a travs de varios tipos de terminales. Los sistemas de seguridad se ha incrementado mucho ahora que la informacin pasa a travs de varios tipos vulnerables de lneas de comunicacin. La clave de cifrado esta recibiendo mucha atencin; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados. El porcentaje de la poblacin que tiene acceso a un computador en la dcada de los ochenta es mucho mayor que nunca y aumenta rpidamente. El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles fsicos de; sistema de computacin que esta siendo accedida. En su lugar, el usuario ve un panorama llamado maquina virtual creado por el sistema operativo.

Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la informacin, y el trabajo de las bases de datos es hacer que esta informacin sea conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso. Historia de los Sistemas Operativos. Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales caractersticas de un Sistema Operativo contemporneo, es til considerar como han ido evolucionando stos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podra ser esta: En los 40's, se introducen los programas bit a bit, por medio de interruptores mecnicos y despus se introdujo el leng. mquina que trabajaba por tarjetas perforadas. Con las primeras computadoras, desde finales de los aos 40 hasta la mitad de los aos 50, el programador interactuaba de manera directa con el hardware de la computadora, no exista realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a travs del lenguaje mquina (bits) o a travs de interruptores. Durante los aos 50's y 60's.- A principio de los 50's, la compaa General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseadores, capturistas, etc.), se encarguen de modificar sus programas. Establecan o apartaban tiempo, metan o introducan sus programas, corregan y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traduca en prdida de tiempo y tiempos de programas excesivos. En los aos 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta poca surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inici el auge de la INTERNET en los Estados Unidos de Amrica. A finales de los aos 80's comienza el gran auge y evolucin de los Sistemas Operativos. Se descubre el concepto de multiprogramacin que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales. Los 90's y el futuro, entramos a la era de la computacin distribuida y del multiprocesamiento a travs de mltiples redes de computadoras, aprovechando el ciclo del procesador. Se tendr una configuracin dinmica con un reconocimiento inmediato de dispositivos y software que se aada o elimine de las redes a travs de procesos de registro y localizadores. La conectividad se facilita gracias a estndares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundacin de software abierto, todo estar mas controlado por los protocolos de comunicacin OSI y por la red de servicios digital ISDN. Se ha desarrollado otra versin, la cual se ha hecho en base a etapas o generaciones: 1a. Etapa (1945-1955) : Bulbos y conexiones.

Despus de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccin de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la dcada de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), as como Conrad Zuse (Alemania), entre otros lograron construir mquinas de clculo mediante bulbos. Estas mquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho ms lentas que la computadora casera ms econmica en nuestros das. Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos (incluso el lenguaje ensamblador). No se oa de los Sistemas Operativos el modo usual de operacin consista en que el programador reservaba cierto perodo en una hoja de reservacin pegada a la pared, iba al cuarto de la mquina, insertaba su conexin a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o ms bulbos se quemara durante la ejecucin. La inmensa mayora de los problemas eran clculos numricos directos, por ejemplo, el clculo de valores para tablas de senos y cosenos. A principio de la dcada de los 50's la rutina mejoro un poco con la introduccin de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo dems el proceso era el mismo. 2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes. La introduccin del transistor a mediados de los aos 50's modific en forma radical el panorama. Las computadoras se volvieron confiables de forma que podan fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por dems rpidas vas para reducir el tiempo invertido. La solucin que, por lo general se adopt, fue la del sistema de procesamiento por lotes. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramacin. La 360 de IBM fue la primera lnea principal de computadoras que utiliz los circuitos integrados, lo que proporcion una gran ventaja en el precio y desempeo con respecto a las mquinas de la segunda generacin, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamao y sus problemas el sistema operativo de la lnea IBM 360 y los sistemas operativos similares de esta generacin producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayora de sus clientes. Tambin popularizaron varias tcnicas fundamentales, ausentes de los sistemas operativos de la segunda generacin, de las cuales la ms importante era la de multiprogramacin. Otra caracterstica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cmputo. As, siempre que concluyera un trabajo el sistema operativo poda cargar un nuevo trabajo del disco en la particin que quedara desocupada y ejecutarlo. 4ta Etapa (1980-Actualidad) : Computadoras personales. Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos.

En los sistema operativo de red, los usuarios estn conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario. Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando est compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automtica y eficaz por el sistema operativo.

1.4 Clasificacin.
Sistema Operativo Multitareas. Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutacin de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o ms aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicacin que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicacin. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicacin esta esperando informacin del usuario), y siempre que esta aplicacin lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atencin del microprocesador durante una fraccin de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho ms lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultneas. Sistema Operativo Monotareas. Los sistemas operativos monotareas son ms primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresin. Sistema Operativo Monousuario. Los sistemas monousuarios son aquellos que nada ms puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicacin que se este ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y estn orientados principalmente por los microcomputadores. Sistema Operativo Multiusuario.

Es todo lo contrario a monousuario; y en esta categora se encuentran todos los sistemas que cumplen simultneamente las necesidades de dos o ms usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Secuencia por Lotes. La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la ejecucin de una lista de comandos del sistema operativo uno tras otro sin intervencin del usuario. En los ordenadores ms grandes el proceso de recogida de programas y de conjuntos de datos de los usuarios, la ejecucin de uno o unos pocos cada vez y la entrega de los recursos a los usuarios. Procesamiento por lotes tambin puede referirse al proceso de almacenar transacciones durante un cierto lapso antes de su envo a un archivo maestro, por lo general una operacin separada que se efecta durante la noche. Los sistemas operativos por lotes (batch), en los que los programas eran tratados por grupos (lote) en ves de individualmente. La funcin de estos sistemas operativos consista en cargar en memoria un programa de la cinta y ejecutarlo. Al final este, se realizaba el salto a una direccin de memoria desde donde reasuma el control del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminua considerablemente. Tiempo Real. Un sistema operativo en tiempo real procesa las instrucciones recibidas al instante, y una vez que han sido procesadas muestra el resultado. Este tipo tiene relacin con los sistemas operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador entre varias solicitudes. Su caracterstica principal es dar respuestas rpidas; por ejemplo en un caso de peligro se necesitaran respuestas inmediatas para evitar una catstrofe. Tiempo Compartido. El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por ms de una persona al mismo tiempo. El tiempo compartido ejecuta programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de multitareas que es comn en la mayora de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios a computadoras ms grandes y a organizaciones de servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realizacin de mltiples tareas por un solo usuario.

CLASIFICACIN DE LOS SISTEMAS OPERATIVOS Los sistemas operativos se clasifican en: Sistemas operativos por lotes. Sistemas operativos multiprogramacin o de multitarea. Sistemas operativos multiusuario. Sistemas operativos de tiempo compartido.

Sistemas operativos de tiempo real. Sistemas operativos distribuidos. Sistemas operativos de red. Sistemas operativos paralelos. Sistemas operativos por lotes.

Los sistemas operativos por lotes requieren que la informacin est reunida en bloque o "lote" (el programa, los datos, y las instrucciones). Los trabajos son procesados en el orden de admisin, segn el modelo de "primero en llegar primero en ser atendido". En estos sistemas la memoria se divide en dos zonas. Una de ellas es ocupada por el sistema operativo, y la otra se usa para cargar programas transitorios para su ejecucin. Cuando termina la ejecucin de un programa se carga un nuevo programa en la misma zona de memoria. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (Ej., anlisis estadsticos, nminas de personal, etc.). Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo.

Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso.

Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes. Sistemas operativos multiprogramacin o de multitareas. Los sistemas de multiprogramacin son capaces de soportar dos o ms procesos concurrentes mltiples, permiten que residan al mismo tiempo en la memoria primaria las instrucciones y los datos procedentes de dos o ms procesos. Estos sistemas implican la operacin de multiproceso, para el manejo de la informacin. Se caracterizan principalmente por un gran nmero de programas activos simultneamente que compiten por los recursos del sistema, como el procesador, la memoria, y los "dispositivos de E/S". Estos sistemas monitorean el estado de todos los programas activos y recursos del sistema. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes:

Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios individuales. Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios.

Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos.

Sistemas operativos multiusuario. Los sistemas operativos multiusuario permiten acceder simultneamente a un sistema de computadoras a travs de dos o ms terminales. Este tipo de sistema operativo es fundamental en el manejo de redes de computadoras actualmente. Sistemas operativos de tiempo compartido Los sistemas operativos de tiempo compartido tratan de proporcionar un reparto equitativo de los recursos comunes para dar la impresin a los usuarios de que poseen una computadora independiente. En estos sistemas el administrador de memoria proporciona aislamiento y proteccin de los programas, ya que generalmente no tienen necesidad de comunicarse entre ellos. El control de E/S se encarga de proporcionar o retirar la asignacin a los dispositivos de forma que se preserve la integridad del sistema y se proporcione servicio a todos los usuarios. El administrador de archivos proporciona proteccin y control en el acceso de la informacin, dada la posibilidad de concurrencia y conflictos al tratar de acceder a los archivos.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, Ej.: sistemas de diseo asistido por computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. Evitan monopolizacin procesador (time slot). Gestin de residentes. memoria del sistema asignando proteccin a tiempos de

proporciona

programas

Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando a un mismo archivo.

Sistemas operativos de tiempo real

Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes. Telecomunicaciones. Sistemas de fabricacin integrada. Produccin y distribucin de energa elctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa interrupcin. tras ocurrencia de suceso, mediante

Proceso de mayor prioridad expropia recursos.

Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poblacin de procesos esttica en gran medida. Poco movimiento de secundario y memoria. programas entre almacenamiento

Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente del recurso.

Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es transparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caractersticas de los Sistemas Operativos distribuidos:

Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software. Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos. Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red.

Son aquellos sistemas que mantienen a dos o ms computadoras unidas a travs de algn medio de comunicacin (fsico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red ms ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Figura. Se muestra un Sistema Operativo en red. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecucin de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son: Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos, nminas de personal, etc.) Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso.

Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los

procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes: Control de trenes. Telecomunicaciones. Sistemas de fabricacin integrada. Produccin y distribucin de energa elctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas: Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos. Se utlizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestin de archivos se orienta ms a velocidad de acceso que a utlizacin eficiente del recurso.

Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos (que se estn ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al mximo su utilizacin. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes: Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios inndividuales.

Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos.

Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido: Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria proporciona proteccin a programas residentes. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, SolarisMC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caracteristicas de los Sistemas Operativos distribuidos:

Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos. Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas atravs de algn medio de comunicacin (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

1.5 Estructura (niveles o estratos de diseo).


Internamente los sistemas operativos estructuralmente de se clasifican segn como se hayan organizado intrnamente en su diseo, por esto la clasificacin ms comn de los S.O. son: Sistemas monolticos: En estos sistemas operativos se escriben 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 de parmetros y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la ltima ofrece algn clculo til que la primera necesite. Para construir el programa objeto real del sistema operativo cuando se usa este mtodo, se compilan todos los procedimientos individuales a 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 informacin es local a un mdulo y slo pueden llamar puntos de registro designados oficialmente del exterior del mdulo) Esta organizacin sugiere una estructura bsica del sistema operativo: 1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel) 2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema. 3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio Sistemas en estratos: Estos sistemas operativos se organizan como una jerarqua de estratos, cada uno construido arriba del que est debajo de l. El primer sistema construido en esta forma fuel el sistema THE que se fabric en Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE era un sistema de lote para una computadora alemana, la Electrolgica X8, que tena 32K de palabras de 27 bits ( los bits eran costosos en aquellos das) El sistema tena 6 estratos, estos se muestran en la siguiente tabla:

5 4 3 2 1 0

Operador de THE Programas del usuario Administracin de Entrada/Salida Comunicacin entre el operador y el proceso Administracin de la memoria y el tambor magntico Distribucin del procesador y multiprogramacin

- El estrato 0 trabajaba con la distribucin del procesador, cambiando entre procesos cuando ocurran interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos secuenciales, cada uno de los cuales poda programarse sin tener que preocuparse por el hecho de que mltiples procesos estuvieran corriendo en un solo procesador. En otras palabras, el estarto 0 ofreca la multiprogramacin bsica de la CPU. El estrato 1 realizaba el manejo de memoria. Este distribua espacio para procesos contenidos en la memoria central y en un tambor de 512K palabras que se usaba para contener partes de procesos (pginas) para las cuales no haba espacio en la memoria central. Sobre el estrato 1, los procesos no tena que preocuparse de si estaban en la memoria o en el tambor; el software del estrato 1 se haca cargo de asegurar que las pginas se trajeran a la memoria siempre que se necesitaran.

El estrato 2 manejaba la comunicacin entre cada proceso y la consola de operador. El estrato 3 se haca cargo de manejar los dispositivos de E/S y de separar la informacin en flujo que entraba y sal de ellos. Sobre el estrato 3 cada proceso poda trabajar con dispositivos de E/S abstractos con propiedades agradables, en vez de dispositivos reales con muchas peculiaridades El estrato 4 era donde se encontraban los programas de los usuarios. No tenan que preocuparse por el manejo de los procesos, memoria, consola o E/S. El proceso operador del sistema se localizaba en el estrato 5.

En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener una idea ms extensa de cmo esta estructurado el sistema operativo. Veremos brevemente algunas estructuras de diseos de sistemas operativos. Estructura modular. Tambin llamados sistemas monolticos. Este tipo de organizacin es con mucho la mas comn; bien podra recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una coleccin de procedimientos, cada uno de los cuales puede llamar a los dems cada vez que as lo requiera. Cuando se usa esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de parmetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto clculo til para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien definidos, como en los registros o en la pila, para despus ejecutar una instruccin especial de trampa de nombre "llamada al ncleo" o "llamada al supervisor". Esta instruccin cambia la mquina del modo usuario al modo ncleo y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los parmetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento (2) de la figura 1. A continuacin, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operacin que se muestra en (3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario. Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atrado hacia el ncleo. (2) el sistema operativo determina el nmero del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario. Esta organizacin sugiere una organizacin bsica del sistema operativo: 1.- un programa principal que llama al procedimiento del servicio solicitado. 2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio. En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de l. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario.

Estructura por microkernel. Las funciones centrales de un SO son controladas por el ncleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte ms importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el cdigo mquina de bajo nivel para manejar la administracin de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos Las funciones de bajo nivel del SO y las funciones de interpretacin de comandos estn separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de lnea de comandos con una interfaz grfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versin 5.0 incluy un Shell llamado DOS SHELL.

Estructura por anillos concntricos (capas). El sistema por "capas" consiste en organizar el sistema operativo como una jerarqua de capas, cada una construida sobre la inmediata inferior. El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignacin del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronmetros.

Sobre la capa 0, el sistema consta de procesos secunciales, cada uno de los cuales se podra programar sin importar que varios procesos estuvieran ejecutndose en el mismo procesador, la capa 0 proporcionaba la multiprogramacin bsica de la CPU. La capa 1 realizaba la administracin de la memoria. Asignaba el espacio de memoria principal para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (pginas) para las que no exista lugar en la memoria principal. Por encima de la capa 1, los procesos no deban preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba de garantizar que las pginas llegaran a la memoria cuando fueran necesarias. La capa 2 se encargaba de la comunicacin entre cada proceso y la consola del operador. Por encima de esta capa, cada proceso tiene su propia consola de operador. La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de informacin entre ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenan que preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del sistema se localizaba en la capa 5 Una generalizacin mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos concntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debi hacer el equivalente a una llamada al sistema Mientras que el esquema de capas de THE era en realidad un apoyo al diseo, debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecucin y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensin para estructurar subsistemas del usuario.

5 4 3 2 1 0

El operador Programas del usuario Control de entrada/salida Comunicacin operador-proceso Administracin de la memoria y del disco Asignacin del procesador y multiprogramacin

Figura 3. Estructura del sistema operativo THE. Estructura cliente servidor Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el cdigo a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un ncleo mnimo. El punto de vista usual es el de implantar la mayora de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) enva la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo nico que hace el ncleo es controlar la comunicacin entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos,

servicio a terminales o servicio a la memoria, cada parte es pequea y controlable. Adems como todos los servidores se ejecutan como procesos en modo usuario y no en modo ncleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, ste puede fallar, pero esto no afectar en general a toda la mquina.

Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptacin para su uso en los sistemas distribuidos Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su mquina, o si se enva por medio de una red a un servidor en una mquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envi una solicitud y se recibi una respuesta.

Sistemas Operativos por su Estructura (Visin Interna). Segn, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son: Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al que se le quiere destinar. Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operacin, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad. A continuacin se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener. Estructura Monoltica. Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las caractersticas fundamentales de este tipo de estructura son: Construccin del programa final a base de mdulos compilados separadamente que se unen a travs del ligador. Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento. Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc.

Generalmente estn hechos a medida, por lo que son eficientes y rpidos en su ejecucin y gestin, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones. Estructura Jerrquica. A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organizacin del software, del sistema operativo, donde una parte del sistema contena subpartes y esto organizado en forma de niveles. Se dividi el sistema operativo en pequeas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Se constituy una estructura jerrquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utiliz con fines didcticos. Se puede pensar tambin en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categora.

En la estructura anterior se basan prcticamente la mayora de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concntricos o "rings".

En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas ms internas del sistema operativo o ncleo del sistema estarn ms protegidas de accesos indeseados desde las capas ms externas. Las capas ms internas sern, por tanto, ms privilegiadas que las externas.

Mquina Virtual. Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una mquina que parece idntica a la mquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramacin y la mquina extendida. El objetivo de los sistemas operativos de mquina virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias mquinas diferentes. El ncleo de estos sistemas operativos se denomina monitor virtual y tiene como misin llevar a cabo la multiprogramacin, presentando a los niveles superiores tantas mquinas virtuales como se soliciten. Estas mquinas virtuales no son mquinas extendidas, sino una rplica de la mquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que ser el que ofrezca la mquina extendida al usuario

Cliente-Servidor(Microkernel). El tipo ms reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayora de las computadoras, ya sean grandes o pequeas. Este sistema sirve para toda clase de aplicaciones por tanto, es de propsito general y cumple con las mismas actividades que los sistemas operativos convencionales. El ncleo tiene como misin establecer la comunicacin entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicacin normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operacin de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro." [Alcal92]. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el ncleo provee solamente funciones muy bsicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayora que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y proteccin que, a su vez, sern filtrados por el ncleo que controla el hardware. Actualmente se est trabajando en una versin de UNIX que contempla en su diseo este paradigma.

1.6 Ncleo.
El Ncleo del Sistema Operativo. Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada ncleo (nucleus, core o kernel, en ingls). El ncleo normalmente representa slo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que ms se utiliza. Por esta razn, el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal slo cuando se necesitan. Los ncleos se disean 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 interrupciones. El ncleo de un sistema operativo normalmente contiene el cdigo necesario para realizar las siguientes funciones: Manejo de interrupciones. Creacin y destruccin de procesos. Cambio de estado de los procesos. Despacho. Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicacin entre procesos. Manipulacin de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignacin y liberacin de memoria. Apoyo para el sistema de archivos. Apoyo para el mecanismo de llamada y retorno de un procedimiento. Apoyo para ciertas funciones de contabilidad del sistema. Ncleo o Kernel y niveles de un Sistema Operativo. El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas: Nivel 1. Gestin de Memoria: que proporciona las facilidades de bajo nivel para la gestin de memoria secundaria necesaria para la ejecucin de procesos. Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. Nivel 4. Informacin o Aplicacin o Interprete de Lenguajes: Facilita la comunicacin con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacin de archivos con nombre, va asignando espacio y acceso de datos en memoria. El ncleo y los procesos. El ncleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misin es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalacin. Toda esta gestin la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. Los procesos relacionados con la entidad bsica de los sistemas operativos actuales: Los procesos. El esquema general del mismo es el siguiente: Definicin y concepto de proceso. El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. Estados por los que pasa un proceso a lo largo de su existencia en la computadora. Operaciones que se pueden realizar sobre un proceso. Clasificacin de los procesos segn su forma de ejecucin, de carga, etc.

1.6.1 Interrupciones (FLIH).


El GESTOR DE INTERRUPCIONES DE PRIMER NIVEL: FLIH

(First Level Interruption Handler): `Algo' que gestione las interrupciones EL CONTROLADOR DE INTERRUPCIONES DE PRIMER NIVEL: EL FLIH En principio, una seal es una indicacin por la que se altera la secuencia de ejecucin. Hay varios tipos de interrupcin, que se clasifican en funcin de su origen: ! EXTERNAS: Se producen fuera del procesador ! INTERNAS: Se producen dentro del procesador Si precisamos ms: Las interrupciones EXTERNAS, las denominamos: INTERRUPCIONES Las interrupciones INTERNAS, pueden ser:

EXTRACDIGOS: Operaciones que manipulan elementos internos del

procesador

TRAPS o EXCEPCIONES

La misin del FLIH, est en el ncleo, para dar una respuesta a cualquier tipo de seal que se produce en el sistema. Al producirse una seal, la atrapa el Hardware de interrupciones, que como mnimo, salva el contenido del PC en el PCB del proceso. Adems, puede que tambin salve el resto del entorno voltil (tambin en el PCB). Tambin direcciona al FLIH, es decir, pone en el PC la direccin del FLIH. Por lo tanto, podemos decir, que el FLIH es un elemento software, es un proceso. Ya hemos dicho que el FLIH es Software, pues se trata de un sencillo programa definido sobre un rea de memoria dedicada a l, un rea de memoria especfica; es decir, el FLIH siempre est en la misma parte de la memoria. El FLIH hace dos cosas: 1) Determina el origen de la interrupcin (Averigua qu interrupcin se ha producido) 2) Direcciona la rutina que trata esa interrupcin Si el FLIH es un programa, necesita parte del entorno voltil: PC, ACC, ... Por ello, debe salvarse el entorno voltil del proceso interrumpido. El entorno voltil del proceso interrumpido, se puede salvar en dos momentos: Puede salvarlo el Hardware de interrupciones Si no lo salva el Hardware de interrupciones, ser lo primero que haga el FLIH, antes incluso de determinar el origen de la interrupcin NOTA: Hay sistemas que definen unos registros mquina para uso exclusivo por parte del Sistema Operativo, para evitar tener que estar salvando y restaurando el contenido del entorno voltil.

Formas de determinar el origen de una interrupcin: MEDIANTE SOFTWARE: Mediante una cadena de saltos o IFs (o con una CASE) El FLIH, tiene un nico punto de entrada: Ventaja: ! Es muy sencillo Desventaja: ! Rendimiento muy pobre (Cuantas ms interrupciones, peor rendimiento) Posible solucin:

Poner al principio de la cadena de saltos las comprobaciones de las

interrupciones ms frecuentes. MEDIANTE HARDWARE: Mediante el uso de un comparador simultneo, incluido en el Hardware de interrupciones. El origen de la interrupcin, no lo va a detectar el FLIH, lo va a detectar el Hardware de interrupciones. El FLIH, tiene N puntos de entrada, siendo N el nmero de interrupciones que reconoce el sistema. Ventaja: ! Es casi simultneo, mucho ms rpido que la secuencia de IFs Desventaja: ! Coste Elevado: Un comparador para muchas interrupciones es muy caro COMBINANDO SOFTWARE Y HARDWARE: El comparador distingue los TIPOS de interrupcin. Las interrupciones se agrupan por tipos. EL Hardware de interrupciones: 1) Salva el contenido del entorno voltil 2) Mediante un comparador simultneo, determina el tipo al que pertenece la interrupcin producida 3) Se direcciona al FLIH, donde una pequea cadena de saltos determina la interrupcin en concreto que se ha producido Si N es el nmero de tipos de interrupciones, el FLIH tiene N puntos de entrada. Cuando el FLIH est atendiendo una interrupcin, pueden producirse otras.

Qu hacemos con esas otras interrupciones que se producen?

Inhibir (ignorar) el resto de interrupciones mientras se atiende una. Pero esto no puede hacerse siempre Las interrupciones ms prioritarias deben tratarse nada ms producirse

Posible solucin:

Definir niveles de prioridad entre las interrupciones, de forma que si

se est atendiendo una interrupcin, quedarn pendientes (o inhibidas) las de menor o igual prioridad. Problema:

Si se produce una interrupcin ms prioritaria que la que se est atendiendo, debe dejarse de atender la que se estaba atendiendo para atender la ms prioritaria. Por lo tanto, debe guardarse el entorno voltil de la interrupcin que estaba atendiendo. La interrupcin que pasa a ser atendida, tambin puede tener que dejarse, al llegar otra de mayor prioridad ... Por tanto, es necesario un lugar a para almacenar entornos voltiles, es decir, un PCB, por cada prioridad de interrupcin - 1.

Inicio del servicio de una interrupcin: Las interrupciones no pueden estar inhibidas mucho tiempo, es decir, el tiempo de tratamiento del FLIH debe ser corto. Problema:

Hay interrupciones cuyo tratamiento lleva mucho tiempo. En ese caso, el FLIH, slo inicia su tratamiento, y luego, lama a otra rutina ajena o externa a l, que realiza el resto del tratamiento.

Una interrupcin puede implicar cambio(s) de estado en algn(os) proceso(s). TIPOS DE INTERRUPCIONES:

Interrupciones que provocan cambios de estado del proceso en ejecucin Algunos extracdigos: Peticiones de E/S Seales de error para suspensin Interrupciones de reloj: Interrupciones por expiracin del temporizador Interrupciones que provocan cambios de estado en procesos que no estn en ejecucin Interrupciones de E/S

http://html.rincondelvago.com/sistemas-operativos_29.html 1.6.2 Despachador(Scheduler).

Schedulling.-

Colas de Schedulling: Los procesos que estn en estado de espera se quedan en una lista llamada lista o cola de ready. Los procesos que hacen uso de E/S se guardan en una cola de E/S. Hay una cola de E/S por cada dispositivo. Schedullers: Componente del sistema operativo responsable de decidir quien hara uso de la CPU.
Algoritmos de Schedulling.FCFS (First Come First Served)

Cuando un proceso llega a la cola de ready su PCB es agregado al final de la lista. El uso de la CPU es otorgado al primero de la lista y una vez que un proceso comienza a ejecutar no deja de hacerlo hasta que se termina. El tiempo medio de espera para este algoritmo suele ser bastante alto.
SJF (Shortest Job First)

Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de estado (no hay interrupcin por tiempo). Asocia a cada proceso el tiempo de CPU que habr de usar en su prxima vuelta y va a decidir por el ms pequeo. Si hubiera mas de uno utiliza FCFS para desempatar. El mayor problema de este algoritmo radica en el clculo de tiempo de uso de CPU. Este se puede aproximar a: Tn+1= .tn+(1- )Tn 0< <1 Tiempo calculado en la vuelta n Prximo uso de CPU Tiempo usado en la vuelta n El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser demasiado largo. Constantemente se estn entregando los procesos mas cortos y el ms grande nunca ser ejecutado. El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTIVO o NO PREEMPTIVO Preemptivo significa que si mientras un proceso se esta ejecutando, entra a la cola de ready un proceso mas corto, el proceso en la cola de ready se apropia de la CPU y comienza su ejecucin.
Priority Schedulling

Asocia a cada proceso una prioridad. Luego selecciona el proceso con mas prioridad para desempatar. En caso de que hubieran dos o mas procesos con la misma prioridad, se usa FCFS para desempatar. Hay dos tipo de prioridad en los procesos: la prioridad externa definidas a travs del sistema operativo y la prioridad interna definida por el tiempo de uso de la CPU, el control de E/S, etc. Este algoritmo tambin se puede ejecutar de dos maneras: preemptivo y no preemptivo. El algoritmo soluciona el problema del looping pero el problema es que los procesos con prioridad muy baja tienen chance de no ejecutarse nunca. Para solucionar este problema de espera infinita el envejecimiento de un proceso eleva su prioridad.
Round Robin

Este es un algoritmo basado en FCFS. Trata la cola de ready como una lista circular. Introduce el concepto de "Quantum" o "Time slice" : mayor tiempo de cpu que podr hacer uso un proceso en cada

vuelta. Si el valor del Quantum fuese muy grande, el algoritmo funcionara como un FCFS. Si el Quantum fuera muy chico se produce un overhead por context switch (significa que el Quantum se setea en un tiempo menor al que demora el context switch). Este algoritmo es fuertemente dependiente del Quantum o Time Slice. El Quantum debe ser mayor que el 80% de los tiempos de CPU que hagan uso los procesos, pero no el proceso entero sino por cada burst.
MQS (Multilevel Queue Schedulling)

Este algoritmo parte la cola de ready en un numero de colas n. Luego existe un criterio para clasificar en que cola ser colocado un proceso cuando que queda en estado de ready. Cada cola puede manejar su propio algoritmo de schedulling
MFQS (Multilevel Feed Back Queue Schedulling)

Define los siguientes parmetros: Numero de colas Algoritmo de schedulling usado en cada cola Mtodo para decidir a que cola entrara un proceso cuando entre a estado de ready Mtodo para decidir cuando un proceso ser enviado a una cola de menor prioridad.
Mltiple CPU

Para que mas de una CPU no tomen el mismo proceso de la cola de ready se utilizan mecanismos de sincronizacin. Otro mecanismo seria partir la cola en n colas (n CPUs), pero si se hiciera esto podra llegar a suceder que los procesos de una CPU fueran todos cortos y los de otra fueran largos por lo cual habra una CPU que quedara libre y otra ejecutando. Otra forma sera que una CPU decidiera cual CPU va a ejecutar cual proceso. Esto puede llevar a que la CPU que esta seleccionando quede un poco mas cargada porque en algn momento estar ejecutando el algoritmo de seleccin y un proceso asignado a ella.

1.6.3 Primitivas de comunicacin(IPC).


Hay varias primitivas de comunicacin entre procesos (IPC abreviadamente). La mayora de ellas requieren algn tipo de modificacin a los programas para poder usarlas, pero hay una que es fcilmente accesible desde la lnea de comandos usando la metfora de ficheros estndar en UNIX y que no requiere modificacin alguna a los programas. Se trata de las tuberas. Siguiendo la metfora, UNIX nos permite manejar tuberas como si fueran ficheros normales. http://www.es.embnet.org/Doc/ECJ/ECJ-1998-02/dbpipes.es.html Primitivas de comunicacin Algunos kernel tienen operaciones especficas ajustadas a la invocacin remota. Amoeba, por ejemplo, tiene DoOperation/GetRequest--SendReply. Es ms eficiente que el simple Send-Receive (y ms fiable y legible).

Amoeba y otros sistemas tienen tambin comunicacin con grupos o radiado (parcial) (broadcast). Es importante para tolerancia de fallos, mejora de rendimiento y reconfigurabilidad. Diversas variantes: como mensajes, como mltiples RPCs, con un slo valor devuelto, con varios valores devueltos (todos juntos o pidiendo uno a uno), etc. En la prctica, mecanismos de comunicacin de alto nivel tales como RPC/RMI, radiado y notificacin de sucesos (parecido a los manejadores de interrupciones), se implementan en middleware y no en el kernel. Normalmente, sobre un nivel TCP/IP, por razones de transportabilidad, (aunque resulta ``caro").

La IPC ofrece un mecanismo que permite a los procesos cumunicarse y sincronizar sus acciones. La mejor forma de proveer la comunicacin entre procesos es mediante un sistema de mensajes. La funcin de un sistema de mensaje es permitir a los procesos comunicarse entre s sin tener que recurrir a variables compartidas. Un recurso IPC ofrece por los menos 2 operaciones: enviar (mensaje) (send) y recibir (mesanje) (receive). Sea P y Q dos procesos que requieren comunicarse debern enviarse mensajes; para ello debe existir un enlace de comunicacin entre ellos. Este enlace puede implementarse de diversas maneras. Los mtodos para implementar lgicamente un enlace y las operaciones de enviar / recibir son:

Comunicacin directa o indirecta Uso de buffer automtico o explcito Envo por copia o envo por referencia Mensajes de tamao fijo o variables

Comunicacin directa: Aqu cada proceso que desee comunicarse debe nombrar explcitamente el destinatario o el remitente de la comunicacin. Este esquema se define las primitivas de la sig. manera: Enviar(P,mensaje): Enviar un mensaje al proceso P. Recibir(Q. Mensaje): Recibir un mensaje del proceso Q. Con las siguientes propiedades:

Se establece automticamente el enlace entre cada par de procesos. Lo procesos slo necesitan conocer la identidad de otro para la comunicacin.

Solo hay un enlace entre cada par de procesos. El enlace puede ser unidireccional o bidireccional.

Este esquema exhibe un simetra de direccionamiento; es decir, los procesos tanto emisor como receptor necesitan nombrar al otro para comunicarse. Otra variante de este esquema es utilizar asimetra de direccionamiento, con la sig. primitivas: Enviar(P,mensaje): enviar un mensaje al proceso P. Recibir(Id,mensaje) : recibir un mensaje de cualquier proceso con el que hubo comunicacin. Aqu slo el emisor nombra al destinatario; el destinatario no sta obligado a nombrar al emisor. Comunicacin indirecta: Aqu los mensajes se envan a, y se reciben de, buzones (tambin llamados PUERTOS). Un buzn puede considerarse en lo abstracto como un objeto en el que los procesos pueden colocar mensajes y del cual se pueden sacar mensajes. Cada buzn tiene una identificacin nica. Aqu dos proceso se pueden comunicarse slo si comparten un buzn. Las primitivas se definen como: Enviar (A,mensaje): enviar un mensaje al buzn A. Recibir (A,mensaje): recibir un mensaje del buzn A. Un enlace de comunicacin tiene las sig. propiedades:

Se establece un enlace entre un par de procesos slo si tienen un buzn compartido. Un enlace puede estar asociado a ms de dos procesos. Entre cada par de procesos en comunicacin puede haber varios enlaces distintos, cada uno de los cuales corresponder a un buzn. Los enlaces pueden ser unidireccionales o bidereccionales.

Hay varias formas de designar el dueo de y los usuarios de un buzn dado. Una posibilidad es permitir que un proceso declare variables de tipo buzn. El proceso que declara un buzn es el dueo de ese buzn. Cualquier otro proceso que conozca el nombre de dicho buzn podr usarlo. Por otro lado, un buzn propiedad del S.O tiene existencia propia; es independiente y no est unido a ningn proceso especfico. El S.O establece un mecanismo que permite a un proceso:

Crear un buzn nuevo Enviar y recibir mensajes a travs del buzn Destruir un buzn.

http://html.rincondelvago.com/sistemas-operativos_26.html

Comunicacin entre procesos (IPC)


Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. Por tanto, hay que establecer algn mecanismo en caso de que se quiera comunicar informacin entre procesos concurrentes. El sistema operativo UNIX define tres clases de herramientas de comunicacin entre procesos (IPC): los semforos, la memoria compartida y los mensajes. El tipo de llamadas al sistema para estos IPCs es anlogo al de los semforos: existen sendas funciones shmget y msgget para crear o enlazarse a un segmento de memoria compartida o a una cola de mensajes, respectivamente. Para alterar propiedades de estos IPCs, incluyendo su borrado, estn las funciones shmctl y msgctl. Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv. En este apartado se describirn brevemente algunas llamadas al sistema disponibles para el uso de las IPCs dentro de la programacin en C.

Semforos
Qu es un semforo para el UNIX? Formalmente es muy similar a la definicin clsica de Dijkstra, en el sentido de que es una variable entera con operaciones atmicas de inicializacin, incremento y decremento con bloqueo. El UNIX define tres operaciones fundamentales sobre semforos: * semget Crea o toma el control de un semforo * semctl Operaciones de lectura y escritura del estado del semforo. Destruccin del semforo * semop Operaciones de incremento o decremento con bloqueo Como el lenguaje C no tiene un tipo "semforo" predefinido, si queremos usar semforos tenemos que crearlos mediante una llamada al sistema (semget). Esta llamada permite crear un conjunto de semforos, en lugar de uno solo. Las operaciones se realizan atmicamente sobre todo el conjunto; esto evita interbloqueos y oscuras programaciones en muchos casos, pero para esta prctica es ms bien un engorro. Al crear un semforo se nos devuelve un nmero identificador, que va a funcionar casi igual que los identificadores de fichero de las llamadas open, creat, etc. La funcin semget nos permite adems "abrir" un semforo que ya est creado. As, por ejemplo, si un proceso crea un semforo, otros procesos pueden sincronizarse con aqul (con ciertas restricciones) disponiendo del semforo con semget. Para darle un valor inicial a un semforo, se utiliza la funcin semctl.

El UNIX no ofrece las funciones clsicas P y V o equivalentes, sino que dispone de una funcin general llamada semop que permite realizar una gama de operaciones que incluyen las P y V.
semctl

tambin se emplea para destruir un semforo.

Llamadas al sistema para semforos


Esta es una descripcin resumida de las tres llamadas al sistema para operar con semforos (semget, semctl y semop). Para una informacin ms completa y fidedigna, dirjanse al manual de llamadas al sistema (seccin 2). Para el correcto uso de todas estas funciones, han de incluir el fichero cabecera <sys/sem.h> Las tres funciones devuelven -1 si algo ha ido mal y en tal caso la variable errno informa del tipo de error.

Apertura o creacin de un semforo


Sintaxis:
int semget ( key_t semget

key, int nsems, int semflg );

devuelve el identificador del semforo correspondiente a la clave key. Puede ser un semforo ya existente, o bien semget crea uno nuevo si se da alguno de estos casos: a) key vale IPC_PRIVATE. Este valor especial obliga a semget a crear un nuevo y nico identificador, nunca devuelto por ulteriores llamadas a semget hasta que sea liberado con semctl. b) key no est asociada a ningn semforo existente, y se cumple que (semflg & IPC_CREAT) es cierto. A un semforo puede accederse siempre que se tengan los permisos adecuados. Si se crea un nuevo semforo, el parmetro nsems indica cuntos semforos contiene el conjunto creado; los 9 bits inferiores de semflg contienen los permisos estilo UNIX de acceso al semforo (usuario, grupo, otros). semflg es una mscara que puede contener IPC_CREAT, que ya hemos visto, o IPC_EXCL, que hace crear el semforo, pero fracasando si ya exista. Ejemplo:
int semid = semget ( IPC_PRIVATE, 1, IPC_CREAT | 0744 );

Operaciones de control sobre semforos


Sintaxis:
int semctl ( int

semid, int semnum, int cmd... );

Esta es una funcin compleja (y de interfaz poco elegante) para realizar ciertas operaciones con semforos. semid es un identificador de semforo (devuelto previamente por semget) y semnum, el semforo del conjunto sobre el que quieren trabajar. cmd es la operacin aplicada; a continuacin puede aparecer un parmetro opcional segn la operacin definida por cmd. Las operaciones que les interesan a ustedes son
GETVAL semctl SETVAL

retorna el valor actual del semforo

se modifica el valor del semforo (un cuarto parmetro entero da el nuevo valor) destruye el semforo

IPC_RMID

Ejemplos:
valor = semctl (semid,semnum,GETVAL); semctl (semid,semnum,SETVAL,nuevo_valor);

Operaciones sobre semforos


Sintaxis:
int semop ( int

semid, struct sembuf* sops, unsigned nsops );

Esta funcin realiza atmicamente un conjunto de operaciones sobre semforos, pudiendo bloquear al proceso llamador. semid es el identificador del semforo y sops es un apuntador a un vector de operaciones. nsops indica el nmero de operaciones solicitadas. La estructura sembuf tiene estos campos:
struct sembuf { unsigned short sem_num; // nmero del semforo dentro del conjunto short sem_op; // clase de operacin // segn sea >0, <0 o ==0 short sem_flg; // modificadores de operacin };

Cada elemento de sops es una operacin sobre algn semforo del conjunto de semid. El algoritmo simplificado de la operacin realizada es ste (semval es el valor entero contenido en el semforo donde se aplica la operacin).

si semop<0 si semval >= |semop| semval -= |semop| si semval < |semop| si (semflag & IPC_NOWAIT)!=0 la funcin semop() retorna si no bloquearse hasta que semval >= |semop| semval -= |semop| si semop>0 semval += semop si semop==0 si semval = 0 SKIP si semval != 0 si (semflag & IPC_NOWAIT)!=0 la funcin semop() retorna si no bloquearse hasta que semval == 0

Resumiendo un poco, si el campo semop de una operacin es positivo, se incrementa el valor del semforo. Asimismo, si semop es negativo, se decrementa el valor del semforo si el resultado no es negativo. En caso contrario el proceso espera a que se d esa circunstancia. Es decir, semop==1 produce una operacin V y semop==-1, una operacin P.

Ejemplos de uso
Para ilustrar de forma concreta el empleo de semforos bajo UNIX, les mostramos unos ejemplos de subrutinas en C que les pueden servir como modelos para elaborar sus rutinas de sincronizacin en las prcticas de la asignatura. En concreto, son unas funciones que implementan las operaciones P y V de un semforo clsico (inicializacin, incremento y decremento con posible bloqueo del proceso llamador). As definidas, o con pocas modificaciones, les pueden servir como la interfaz para uso de semforos en sus aplicaciones.
#include <sys/types.h> /* para key_t */ /* Crea un semforo con un valor inicial, dada una clave */ /* Devuelve el identificador (vlido o no) del semforo */ int crea_sem ( key_t clave, int valor_inicial ); /* Operaciones P y V sobre un semforo */ void sem_P ( int semid ); void sem_V ( int semid ); /***********************************/ /******** IMPLEMENTACIN *******/ /***********************************/ #include <sys/ipc.h>

#include <sys/sem.h> #define PERMISOS 0644 /* crea_sem: abre o crea un semforo */ int crea_sem ( key_t clave, int valor_inicial { int semid = semget( /* Abre o crea clave, 1, */ IPC_CREAT|PERMISOS ); if ( semid==-1 ) return -1; /* Da el valor inicial al semforo */ semctl ( semid, 0, SETVAL, valor_inicial ); return semid; } /* abre_sem: Abrir un semforo que otro proceso ya cre */ int abre_sem (key_t clave) { return semget(clave,1,0); } /* Operaciones P y V */ void sem_P ( int semid ) /* Operacin P */ { struct sembuf op_P [] = { 0, -1, 0 /* Decrementa semval o bloquea si cero */ }; semop ( semid, op_P, 1 ); } void sem_V ( int semid ) /* Operacin V */ { struct sembuf op_V [] = { 0, 1, 0 /* Incrementa en 1 el semforo */ }; semop ( semid, op_V, 1 ); } ) un semforo... */ /* con una cierta clave */ /* con un solo elemento /* lo crea (IPC_CREAT) con unos PERMISOS */

http://labsopa.dis.ulpgc.es/prog_c/IPC.HTM

Unidad 2 Administracin de procesos y del procesador.


Ver archivo: Unidad2.pdf 2.7 Concepto de proceso.
Un proceso es un programa en ejecucin. Un proceso simple tiene un hilo de ejecucin, por el momento dejemos esta ltima definicin como un concepto, luego se ver en ms detalle el concepto de hilo. Una vez definido que es un proceso nos podramos preguntar cul es la diferencia entre un programa y un proceso, y bsicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa, entradas salidas y estados. Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactan entre s y pertenecen a una misma aplicacin. En el caso de procesos independientes en general se debe a que no interactan y un proceso no requiere informacin de otros o bien porque son procesos que pertenecen a distintos usuarios. Proceso - un programa en ejecucin; la ejecucucin del proceso debe progresar de manera secuencial. Un proceso incluye: program counter stack data section

Estados de los procesos Nuevo: El proceso es creado. Ejecucin: Se ejecutan instruccines. Espera: El proceso esta en espera por la ocurrencia de algn evento. Listo: El proceso esta esperando a que le asignen el procesador. Terminado: El proceso finaliza su ejecucin. Diagrama de estados de los procesos.

Informacin asociada con cada proceso: Estado del proceso Program counter Registros del CPU Informacin de planificacin del CPU Memoria

Informacin para administracin Informacin de estatus de E/S

Proceso: programa o comando en ejecucin. Caractersticas: Un proceso consta de cdigo, datos y pila. Los procesos existen en una jerarqua de rbol (varios Hijos, un slo padre). El sistema asigna un identificador de proceso (PID) nico al iniciar el proceso. El planificador de tareas asigna un tiempo compartido para el proceso segn su prioridad (slo root puede cambiar prioridades). Ejecucin en 1er plano: proceso iniciado por el usuario o interactivo. Ejecucin en 2o plano: proceso no interactivo que no necesita ser iniciado por el usuario. Demonio: proceso en 2o plano siempre disponible, que da servicio a varias tareas (debe ser propiedad del usuario root). Proceso zombi: proceso parado que queda en la tabla de procesos hasta que termine su padre. Este hecho se produce cuando el proceso padre no recoge el cdigo de salida del proceso hijo. Proceso hurfano: proceso en ejecucin cuyo padre ha finalizado. El nuevo identificador de proceso padre (PPID) coincide con el identificador del proceso init (1).

Concepto de proceso.
Un proceso es bsicamente como un programa en ejecucin. Consta del programa ejecutable, los datos y la pila del programa, su contador de programa, apuntador de pila y otros registros, y la otra informacin que se necesita para ejecutar el programa. La manera sencilla de tener una nocin intuitiva de lo que es un proceso consiste en pensar en los sistemas con tiempo compartido. En forma peridica el sistema operativo decide suspender la ejecucin de un proceso y dar inicio a la ejecucin de otro, por ejemplo, porque el primero haya tomado ya ms de su parte del tiempo del CPU, en terrenos del segundo. Cuando un proceso se suspende temporalmente como ste, debe reiniciarse despus exactamente en el mismo estado en que se encontraba cuando se detuvo. Esto significa que toda la informacin relativa al proceso debe guardarse en forma explcita en algn lugar durante la suspensin. En muchos sistemas operativos, toda la informacin referente a cada proceso, diferente del contenido de su espacio de direcciones, se almacena en una tabla de sistema operativo,

llamada tabla de procesos, la cual es un arreglo o lista enlazada de estructuras, una para cada proceso en existencia corriente. Si un proceso puede crear uno o ms procesos diferentes (conocidos como proceso hijo) y estos procesos a la vez originan procesos hijos, se llega rpidamente a la estructura del rbol de procesos, observe figura # 14.

Figura # 14. Estructura de rbol. Proceso Padre - Hijo. El proceso A cre dos procesos derivados, B y C. El proceso B cre tres derivados, D, E y F. Se dispone de otras llamadas al sistema para solicitar ms memoria ( o para liberar memoria no utilizada), esperar a que termine un proceso hijo y cubrir su programa con uno diferente. En un sistema de multiprogramacin, el (CPU) tambin cambia de un programa a otro, ejecutando cada uno en decenas o cientos de milisegundos. En tanto que, en rigor, en cualquier instante de tiempo, el CPU est ejecutando slo un programa, en el curso de un segundo puede trabajar en varios programas, con la ilusin de paralelismo. Proceso: Informalmente se define como la actividad que resulta cuando un proceso ejercita un programa, y formalmente consiste en un vector formado por lo siguiente, figura # 15:

P = < C, Co, E, S, A > Algoritmo Datos de salida Conjunto de datos de entrada {E1, E2, ... En} Contexto inicial Conjunto de contexto inicial {C0, C1, C2, ... Cn}

Figura # 15. Un proceso puede tomar diferentes estados, puede estar corriendo, puede estar libre o puede estar detenido. Si consideramos que todo proceso esta constituido de una serie finita de actividades elementales una regin crtica de un proceso se define como el conjunto de actividades elementales cuya ejecucin exige el monopolio de recursos compartidos. Formalmente se define como el conjunto de partes de los contextos internos compartidos. Figura # 16

Figura # 16. Regiones crticas.

Los problemas que deben resolverse en un contexto de procesos concurrentes (como regiones crticas) son los siguientes: - Exclusin mutua. - Sincronizacin. - Dead lock (Abraso mortal Interbloqueo)

http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_211.html

2.8 Estados y transiciones de los procesos


Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecucin y Bloqueado. Los procesos en el estado listo son los que pueden pasar a estado de ejecucin si el planificador los selecciona. Los procesos en el estado ejecucin son los que se estn ejecutando en el procesador en ese momento dado. Los procesos que se encuentran en estado bloqueado estn esperando la respuesta de algn otro proceso para poder continuar con su ejecucin. Por ejemplo operacin de E/S. Un proceso puede variar entre 5 distintos estados: New: cuando el proceso esta siendo creado. Running: cuando el proceso se esta ejecutando. Waiting: cuando el proceso esta esperando que se cumpla algn otro evento. Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU. Terminated: cuando el proceso esta terminado. Estado de los Procesos. Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario. Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos. 1.- Estados activos: Son aquellos que compiten con el procesador o estn en condiciones de hacerlo. Se dividen en: Ejecucin. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado slo lo puede tener un proceso. Preparado. Aquellos procesos que estn dispuestos para ser ejecutados, pero no estn en ejecucin por alguna causa (Interrupcin, haber entrado en cola estando otro proceso en ejecucin, etc.). Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algn recurso no disponible (generalmente recursos de entrada/salida). 2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. Son de dos tipos: Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo. Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

Estados de los procesos

Nuevo: El proceso es creado. Ejecucin: Se ejecutan instruccines. Espera: El proceso esta en espera por la ocurrencia de algn evento. Listo: El proceso esta esperando a que le asignen el procesador. Terminado: El proceso finaliza su ejecucin. Diagrama de estados de los procesos.

Informacin asociada con cada proceso: Estado del proceso Program counter Registros del CPU Informacin de planificacin del CPU Memoria Informacin para administracin Informacin de estatus de E/S

Creacin de Procesos.
En UNIX el lanzamiento de procesos se realiza a travs de la llamada al sistema fork(). Para utilizar esta llamada al sistema se emplea el header <unistd.h>. Su sintaxis es: Pid=fork(); Una llamada exitosa a fork() crea un proceso que es una copia del proceso que lo invoco. Duplica las variables del proceso original con una excepcin, el nuevo proceso creado recibe le nombre de proceso hijo. El proceso que lo creo se denomina proceso padre, y el sistema devuelve un 0 al proceso hijo y un valor positivo distinto de 0 (pid del hijo) al proceso padre. Despus de la llamada exitosa a fork(), tanto el proceso padre como el hijo corren en forma simultanea a partir del punto siguiente a la invocacin del fork. La figura siguiente muestra esta situacin:

.. Printf(Antes del fork \n); Pid=fork(); Printf(Despus del fork\n); . A

AC

Antes ------------------------------------------ fork -----------------------------------------------------------Despus .. Printf(Antes del fork \n); Pid=fork(); Printf(Despus del fork\n); . A
AC

.. Printf(Antes del fork \n); Pid=fork(); Printf(Despus del fork\n); . B


AC

En la figura se muestran 3 lneas de cdigo de un proceso; un printf, un fork y otro printf. Hay 2 secciones en la figura: antes y despus. La seccin antes muestra la situacin antes de la invocacin al fork. Slo existe el proceso A. El Apuntador AC (apuntador de cdigo) seala a la instruccin que se est ejecutando. Como se est indicando el primer printf Imprime el texto Antes del fork. La seccin despus muestra la situacin inmediatamente despus de la llamada a fork. Existen ahora 2 procesos: Ay B. A es el proceso original, es decir, el proceso padre. B es una copia de A, es decir el proceso hijo. Ambos corren en forma simultnea. Dado que el apuntador AC, seala al ltimo printf, se imprime el texto Despus del fork. Se imprime 2 veces, una por parte del padre y la otra por parte del hijo.
http://www.ittehuacan.edu.mx/lolguin/Procesos_final.doc

Descriptor de procesos y recursos.


Es una estructura de datos asociada a una entidad informtica ya sea un (Recurso o Proceso), en la cual se indica y actualiza todas las informaciones relativas a dicha entidad. En el caso de un proceso la informacin general que contiene es: 1).Identificador: Que puede ser interno y externo. - Interno: Sistemas. - Externo: Usuario. 2).Descripcin de la mquina virtual asociada : como espacio virtual asignado, tipo de mapeo, tipo de acceso. 3).Descripcin de los recursos de la mquina que usa como : Lista de recursos que el proceso tiene derecho a solicitar, direccin real en la memoria principal, estado de las variables internas del CPU, prioridad, etc. 4).Estados funcionales del proceso: Los estados de los procesos son internos del sistema operativo y transparente al usuario. Para ste, su proceso estar siempre en ejecucin independientemente del estado en que se encuentre internamente el sistema.

Los procesos se pueden encontrar en tres estados, observe figura # 34.

Figura # 34. Estados de los procesos. Un proceso puede encontrarse en estado de ejecucin, bloqueado o listo (que tambin se llama ejecutable). De estos estados de los procesos se derivan las siguientes transiciones y estados: Transicin: El paso de un estado a otro. Transiciones: 1. El proceso se bloquea en la entrada. 2. El planificador elige otro proceso. 3. El planificador elige este proceso. 4. La entrada se vuelve disponible. Estados: 1. Ejecucin (que en realidad hace uso del CPU en ese instante). 2. Bloqueado (incapaz de correr hasta que suceda algn evento externo. 3. Listo (ejecutable; se detiene temporalmente para permitir que se ejecute otro proceso). En estos tres estados son posibles cuatro transiciones: 1. Ocurre cuando un proceso descubre que no puede continuar. En algn sistema el proceso debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.

2 y 3. Son ocasionadas por el planificador del proceso, que es parte del sistema operativo sin que el proceso llegue a saber de ella. 2. Ocurre cuando el planificador decide que el proceso en ejecucin ya ha corrido el tiempo suficiente y es tiempo de permitir que otro proceso tome tiempo de CPU. 3. Ocurre cuando todos los procesos han utilizado su parte del tiempo y es hora de que el primer proceso vuelva a correr. 4. Ocurre cuando aparece el evento externo que estaba esperando un proceso (como el arribo de alguna entrada). Si ningn otro proceso corre en ese instante, la transicin 3 se activar de inmediato y el proceso iniciara su ejecucin, de lo contrario tendr que esperar, en estado listo. Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.

Estados activos. Son aquellos que compiten por el procesador o estn en condiciones de hacerlo. Se dividen en, observe la figura # 35.

Figura # 35. Estados de un proceso y sus transiciones.

. Ejecucin.

. Listo.

. Bloqueados.

Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado slo lo puede tener proceso. Aquellos procesos que estn dispuestos para ser ejecutados, pero no estn en ejecucin por alguna causa (interrupcin, haber entrado, en la cola estando otro proceso en ejecucin, etc. Son los procesos que no pueden ejecutarse de momento por necesitar algn recurso no disponible (generalmente recursos de E/S).

* Estados inactivos. Son aquellos que no pueden competir por el procesador, pero que puedan volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso suspendido hasta que vuelva a ser activado. Son de dos tipos: Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo. Suspendido preparado. Es el proceso que ha sido suspendido, pero no tiene causa para estar bloqueado.

Transiciones de estado. Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno de estos cambios se denomina transicin de estado. Transiciones de estado de proceso, figura # 36.

Figura # 36. Transiciones de estado. La asignacin del CPU al primer proceso de la lista de listos es llamada despacho, y es ejecutado por la entidad del sistema llamada despachador. Indicamos esta transicin de la manera siguiente: Despacho (nombre del proceso): Listo en ejecucin. Mientras el proceso tenga CPU, se dice que esta en ejecucin. Para prevenir que cualquier proceso monopolice el sistema, ya sea de manera accidental o maliciosamente el sistema operativo ajusta un reloj de interrupcin del hardware para permitir al usuario ejecutar su proceso durante un intervalo de tiempo especifico o cuanto. Si el proceso no abandona voluntariamente el CPU, antes de que expire el intervalo, el reloj genera una interrupcin, haciendo que el sistema operativo recupere el control. El sistema operativo hace que el proceso que anteriormente se hallaba en estado de ejecucin pase al de listo, y hace que el primer proceso de la lista de listos pase al estado de ejecucin. Estas transiciones de estado se indican como: - tiempo excedido (nombre del proceso): en ejecucin - bloqueado (nombre del proceso): en ejecucin El proceso cambia del estado bloqueado al estado listo: Listo bloqueado

- despertar ( nombre del proceso): bloqueado Con esto tenemos definidas 4 transacciones de estado. - despacho ( nombre del proceso): Listo - tiempo excedido ( nombre del proceso): en ejecucin - bloqueado ( nombre del proceso): en ejecucin - despertar ( nombre del proceso ): bloqueado

Listo.

en ejecucin Listo bloqueado Listo.

Suspensin y Reanudacin.
Un proceso suspendido no puede proseguir sino hasta que lo reanuda otro proceso. Reanudar (o activar) un proceso implica reiniciarlo a partir del punto en el que se suspendi. Las operaciones de suspensin y reanudacin son importantes por diversa razones: * 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 vez de abortarlo) hasta que verifique si el proceso funciona correctamente o no. * Algunos procesos se puede suspender como respuesta a las fluctuaciones a corto plazo de la carga del sistema y reanudarse cuando las cargas regresen a niveles normales.

La figura # 37. Muestra los procesos con suspensin y reanudacin.

Figura # 37. Transiciones de estados de los procesos con suspensin y reanudacin. La figura # 37, muestra el diagrama de transiciones de estado de los procesos, modificado para incluir las operaciones de suspensin y reanudacin. Se han aadido dos nuevos estados, denominados suspendido-listo y suspendido bloqueado; no hay necesidad de un estado suspendido-ejecutado. Sobre la lnea discontinua se encuentran los estados activos, y debajo de ella los estados suspendidos. 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 si mismo; ningn otro proceso podra estar en ejecucin al mismo tiempo para realizar la suspensin (aunque otro proceso s podra solicitar la suspensin cuando se ejecute). En un sistema de mltiples procesadores, un proceso en ejecucin puede suspender a otro que se est ejecutando en ese mismo momento en un procesador diferente. Solamente otro proceso puede suspender un proceso listo. La transicin correspondiente es: 1) Suspender (nombre_del_proceso): Listo Suspendido-Listo.

Un proceso puede hacer que otro proceso que se encuentre en el estado suspendido-listo pase al estado listo. La transicin correspondiente es:

2)

reanudar ( nombre_del_proceso): Suspendido-Listo

Listo.

Un proceso puede suspender a otro proceso que est bloqueado. La transicin correspondiente es: 3) suspender ( nombre_del_proceso): Bloqueado Suspendido-Bloqueado.

Un proceso puede reanudar otro proceso que est suspendido-bloqueado. La transicin correspondiente es: 4) reanudar ( nombre_del_proceso): Suspendido-Bloqueado Bloqueado.

Como la suspensin es por lo general una actividad de alta prioridad, se debe realizar de inmediato. Cuando se presenta finalmente el trmino de la operacin ( si es que termina), el proceso suspendido-bloqueado realiza la siguiente transicin. 5) 6) completar(nombre_del _proceso): suspendido-bloqueado suspender (nombre_del_proceso): Ejecucin suspendido-listo. Suspendido-Listo.

En conclusin los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre procesos y con ellos. Tales operaciones incluyen: - Crear un proceso. - Destruir un proceso. - Suspender un proceso. - Reanudar un proceso. - Cambiar la prioridad de un proceso. - Bloquear un proceso. - Despertar un proceso. - Despachar un proceso. - Permitir que un proceso se comunique con otro (esto se denomina comunicacin entre procesos). Crear un proceso implica operaciones como: - Dar un nombre a un proceso. - Insertarlo en la lista de procesos conocidos del sistema ( o tabla de procesos) - Determinar la prioridad inicial de proceso. - Crear el bloque de control de proceso. - Asignar los recursos iniciales al proceso. Un proceso puede crear un nuevo proceso. Si lo hace el proceso creador se denomina proceso padre, y el proceso creado, proceso hijo. Slo se necesita un padre para crear un hijo. Tal

creacin origina una estructura jerrquica de procesos. No se puede destruir un proceso cuando este ha creado otros procesos. Destruir un proceso implica eliminarlo del sistema. Se le remueve de la tabla o listas del sistema, sus recursos se devuelven al sistema y su bloque de control de proceso se borra (es decir, el espacio de memoria ocupado por su PCB se devuelve al espacio de memoria disponible.
http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_411.html

Operaciones de procesos y recursos.


Los sistemas operativos poseen una serie de funciones cuyo objetivo es el de la manipulacin de los procesos. En general las operaciones que se pueden hacer sobre un proceso son las siguientes: . Crear el proceso. Se produce con la orden de ejecucin del programa y suele varios argumentos, como el nombre y la prioridad del proceso, figura # 37. necesitar

Figura # 37. Creacin de un proceso. La creacin de un proceso puede ser de dos tipos: . Jerrquica. En ella cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecucin de su padre. El primer proceso que ejecuta un usuario ser hijo del intrprete de comandos con el que interacta, figura # 39.

Figura # 39. Jerarqua de procesos.

. No jerrquico. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creacin que no suele darse en los sistemas operativos actuales. Adems de los dos tipos anteriores se pueden realizar las operaciones siguientes: . Destruir un proceso. Se trata de la orden de eliminacin del proceso con la cual el sistema operativo destruye su PCB ( Proces control Block). . Suspender un proceso. Es una operacin de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema. . Reanudar un proceso. Trata de activar un proceso que ha sido previamente suspendido. . Cambiar la prioridad de un proceso. . Temporizar la ejecucin de un proceso. Hace que un determinado proceso se ejecute cada cierto tiempo (segundos, minutos, horas,...) por etapas o de una sola vez, pero transcurrido un periodo de tiempo fijo.

. Despertar un proceso. Es una forma de desbloquear un proceso que habr sido bloqueado previamente por temporizacin o cualquier otra causa.
http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_412.html

2.9 Procesos ligeros (Hilos o hebras).


Procesos ligeros Los procesos ligeros son programas en ejecucin son bsicamente procesos pero a diferencia de stos ltimos que solo tienen un hilo de ejecucin los primeros tienen el hilo principal ms hilos secundarios o hijos, en ste caso todos los procesos hijos comparten la informacin del hilo principal pero adems puede cada hilo tener su informacin privada. Dentro de la informacin propia tenemos: Contador de programa Pila Registros. Estado del proceso ligero. Dentro de la informacin compartida tenemos: Variables globales. Archivos abiertos Seales Semforos. Contabilidad.

Los hilos o procesos ligeros son una parte de cdigo o miniprograma que puede ser ejecutada independientemente, de forma que una aplicacin o un applet puede tener varios hilos ejecutndose simultneamente y efectuando distintas tareas; estos hilos se encuentran dentro de un programa y son parte de l. Los hilos, a veces tambin llamados contextos de ejecucin, pueden ser utilizados para la implementacin de algoritmos paralelos o procesos concurrentes, sin ser necesario disponer de equipos con estructura de multiprocesador. En el caso de un solo procesador, los procesos ligeros incorporan mecanismos para compartirlo, establecindose prioridades entre ellos y tambin facilidades de sincronizacin, cuando es necesario. Multiproceso se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del sistema operativo. Multihilo se refiere a que dos o mas tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa.

http://www.monografias.com/trabajos20/paradigmas-deprogramacion/paradigmas-de-programacion.shtml

ver archivo: procesosligeros.doc e hilos.pdf 2.10 Concurrencia y secuenciabilidad.

Procesos concurrentes.
Los procesos son concurrentes si existen simultneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asncronos, lo cual significa que en ocasiones requiere cierta sincronizacin y cooperacin. Las siguientes definiciones son esenciales para comprender los conceptos de concurrencia y secuencialidad. * Actividad. . Procesos: Es un programa en ejecucin. . Tarea: Son las distintas partes de un proceso que se ejecutan simultneamente.

* Sistemas: . Multiprogramacin: Admiten varias actividades que comparten el procesador, pero slo una puede estar ejecutndose en un momento dado. . Multiproceso: Las actividades se ejecutan en sus propios procesadores, conectados a travs de una red de comunicaciones. * Paralelismo: Es la ejecucin de diversas actividades simultneamente en varios procesadores. Si slo existe un procesador gestionando multiprogramacin, se puede decir que existe pseudoparalelismo. Se trata de un concepto fsico producido por la existencia de varios procesadores. * Concurrencia: Es la existencia de varias actividades ejecutndose simultneamente, y necesitan sincronizarse para actuar conjuntamente. Se trata, en este caso, de un concepto lgico, ya que slo hace referencia a las actividades, sin importar el nmero de procesadores presentes.

Para que dos actividades, sean concurrentes, es necesario que tengan relacin entre s, como puede ser la cooperacin en un trabajo determinado o el uso de informacin compartida. En un sistema monoprocesador, la existencia de multiprogramacin es condicin necesaria, pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse independientemente. Por ejemplo, un editor y un compilador pueden estar ejecutndose simultneamente en una computadora sin que exista concurrencia entre ellos. Por otro lado si un programa se est ejecutando y se encuentra grabando datos en un archivo, y otro programa tambin en ejecucin est leyendo datos de ese mismo archivo, s existe concurrencia entre ellos, pues el funcionamiento de uno interfiere en el funcionamiento de otro. Si un sistema es multiprocesador, tambin pueden presentarse situaciones de concurrencia siempre y cuando las actividades necesiten actuar entre s, bien por utilizar informacin comn, o por cualquier otra causa. Los procesos del sistema pueden ejecutarse concurrentemente, puede haber mltiples tareas en el CPU con varios procesos. Existen varias razones para permitir la ejecucin concurrente: * Compartir recursos fsicos. Ya que los recursos del hardware de la computadora son limitados, nos podemos ver obligados a compartirlos en un entorno multiusuario. * Compartir recursos lgicos. Puesto que varios usuarios pueden interesarse en el mismo elemento de informacin (por ejemplo un archivo compartido), debemos proporcionar un entorno que permita el acceso concurrente a estos tipos de recursos.

* Acelerar los clculos. Si queremos que una tarea se ejecute con mayor rapidez, debemos dividirla en subtareas, cada una de las cuales se ejecutara, en paralelo con las dems. * Modularidad.

Podremos construir el sistema en forma modular, dividiendo las funciones del sistema en procesos separados. * Comodidad. Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo puede editar, imprimir y compilar en paralelo. La ejecucin concurrente que requiere la cooperacin entre procesos necesita un mecanismo para la sincronizacin y comunicacin de procesos, exclusin mutua y sincronizacin.
http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_212.html Problemas de Concurrencia En los sistemas de tiempo compartido (aquellos con varios usuarios, procesos, tareas, trabajos que reparten el uso de CPU entre estos) se presentan muchos problemas debido a que los procesos compiten por los recursos del sistema. Imagine que un proceso est escribiendo en la unidad de cinta y se le termina su turno de ejecucin e inmediatamente despus el proceso elegido para ejecutarse comienza a escribir sobre la misma cinta. El resultado es una cinta cuyo contenido es un desastre de datos mezclados. As como la cinta, existen una multitud de recursos cuyo acceso debe der controlado para evitar los problemas de la concurrencia. El sistema operativo debe ofrecer mecanismos para sincronizar la ejecucin de procesos: semforos, envo de mensajes, 'pipes', etc. Los semforos son rutinas de software (que en su nivel ms interno se auxilian del hardware) para lograr exclusin mutua en el uso de recursos. Para entender este y otros mecanismos es importante entender los problemas generales de concurrencia, los cuales se describen enseguida. Condiciones de Carrera o Competencia: La condicin de carrera (race condition) ocurre cuando dos o ms procesos accesan un recurso compartido sin control, de manera que el resultado combinado de este acceso depende del orden de llegada. Suponga, por ejemplo, que dos clientes de un banco realizan cada uno una operacin en cajeros diferentes al mismo tiempo. El usuario A quiere hacer un depsito. El B un retiro. El usuario A comienza la transaccin y lee su saldo que es 1000. En ese momento pierde su turno de ejecucin (y su saldo queda como 1000) y el usuario B inicia el retiro: lee el saldo que es 1000, retira 200 y almacena el nuevo saldo que es 800 y termina. El turno de ejecucin regresa al usuario A el cual hace su depsito de 100, quedando saldo = saldo + 100 = 1000 + 100 = 1100. Como se ve, el retiro se perdi y eso le encanta al usuario A y B, pero al banquero no le convino esta transaccin. El error pudo ser al revs, quedando el saldo final en 800. Postergacin o Aplazamiento Indefinido(a): Esto se mencion en el apartado anterior y consiste en el hecho de que uno o varios procesos nunca reciban el suficiente tiempo de ejecucin para terminar su tarea. Por ejemplo, que un proceso ocupe un recurso y lo marque como 'ocupado' y que termine sin marcarlo como 'desocupado'. Si algn otro proceso pide ese recurso, lo ver 'ocupado' y esperar indefinidamente a que se 'desocupe'. Condicin de Espera Circular: Esto ocurre cuando dos o ms procesos forman una cadena de espera que los involucra a todos. Por ejemplo, suponga que el proceso A tiene asignado el recurso 'cinta' y el proceso B tiene asignado el recurso 'disco'. En ese momento al proceso A se le ocurre pedir el

recurso 'disco' y al proceso B el recurso 'cinta'. Ahi se forma una espera circular entre esos dos procesos que se puede evitar quitndole a la fuerza un recurso a cualquiera de los dos procesos. Condicin de No Apropiacin: Esta condicin no resulta precisamente de la concurrencia, pero juega un papel importante en este ambiente. Esta condicin especifica que si un proceso tiene asignado un recurso, dicho recurso no puede arrebatrsele por ningn motivo, y estar disponible hasta que el proceso lo 'suelte' por su voluntad. Condicin de Espera Ocupada: Esta condicin consiste en que un proceso pide un recurso que ya est asignado a otro proceso y la condicin de no apropiacin se debe cumplir. Entonces el proceso estar gastando el resto de su time slice checando si el recurso fue liberado. Es decir, desperdicia su tiempo de ejecucin en esperar. La solucin ms comn a este problema consiste en que el sistema operativo se d cuenta de esta situacin y mande a una cola de espera al proceso, otorgndole inmediatamente el turno de ejecucin a otro proceso. Condicin de Exclusin Mutua: Cuando un proceso usa un recurso del sistema realiza una serie de operaciones sobre el recurso y despus lo deja de usar. A la seccin de cdigo que usa ese recurso se le llama 'regin crtica'. La condicin de exclusin mutua establece que solamente se permite a un proceso estar dentro de la misma regin crtica. Esto es, que en cualquier momento solamente un proceso puede usar un recurso a la vez. Para lograr la exclusin mutua se ideo tambin el concepto de 'regin crtica'. Para logar la exclusin mutua generalmente se usan algunas tcnicas para lograr entrar a la regin crtica: semforos, monitores, el algoritmo de Dekker y Peterson, los 'candados'. Para ver una descripcin de estos algoritmos consulte Condicin de Ocupar y Esperar un Recurso: Consiste en que un proceso pide un recurso y se le asigna. Antes de soltarlo, pide otro recurso que otro proceso ya tiene asignado. Los problemas descritos son todos importantes para el sistema operativo, ya que debe ser capaz de prevenir o corregirlos. Tal vez el problema ms serio que se puede presentar en un ambiente de concurrencia es el 'abrazo mortal', tambin llamado 'trabazn' y en ingls deadlock. El deadlock es una condicin que ningn sistema o conjunto de procesos quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones necesarias: La condicin de no apropiacin, la condicin de espera circular, la condicin de exclusin mutua y la condicin de ocupar y esperar un recurso. Ante esto, si el deadlock involucra a todos los procesos del sistema, el sistema ya no podr hacer algo productivo. Si el deadlock involucra algunos procesos, stos quedarn congelados para siempre.

2.10.1
Exclusin Mutua.

Exclusin mutua de secciones criticas.

Consiste en garantizar que durante la ejecucin de una regin crtica los recursos compartidos solo se asignen a uno y solo a uno de los procesos. Si un recurso compartido es una variable, la exclusin mutua asegura que a lo ms un proceso a la vez ha accedido a ella durante la actualizacin crtica que conduce a valores temporalmente inestables. Consecuentemente los otros procesos ven solamente valores estables de las variables compartidas. Con los dispositivos compartidos la necesidad para la exclusin mutua puede ser incluso ms obvia cuando uno considera el problema que puede provocar sus usos. Por ejemplo, supongamos que en el sistema existe un archivo formado por registros compuestos por 5 campos, figura # 18:

Figura # 18. Registro de 5 campos.

Para que un registro sea valido debe estar totalmente actualizado, es decir, si se modifica el valor del campo A, el resto de los campos deben ser coherentes con el nuevo valor de dicho campo, ya que de otro modo el registro sera inconsistente. Si en el momento en que un proceso escribe o modifica un registro y existe otro proceso que realiza la lectura de ese mismo registro, y el primero de ellos slo hubiese tenido tiempo de modificar el campo A, la informacin obtenida por el segundo proceso seria inconsistente. Para evitar esto se deben sincronizar los procesos de manera que mientras uno escribe, otro pueda leer. Esto no ocurre en aquellos casos en que dos procesos tratan de leer en el mismo archivo, an coincidiendo en el mismo registro. Generalizando. Supongamos que los dos procesos que coinciden en el mismo registr, uno esta escribiendo y el otro leyendo, llamados ESCRIBIR y LEER, se encuentran en un sistema monoprocesador multiprogramado y son los nicos presentes en ese momento, ver figura # 19

Figura # 19. Concurrencia En el momento de un cambio de proceso del uno al otro se pueden producir las siguientes situaciones: . Sin sincronizacin entre procesos. Puede darse el caso de que ESCRIBIR est actualizando un registro y se quede a medas, sorprendindole el cambio de proceso, por tanto, terminar de escribirlo cuando vuelva a hacer uso del procesador. Con el cambio le tocar el turno al proceso LEER, que acceder a dicho registro pudiendo leerlo completamente. Es evidente que los datos ledos sern inconsistentes. . Con sincronizacin entre procesos. Supongamos algn mecanismo que prohba la lectura (bloqueo de registros) a cualquier proceso, mientras el proceso ESCRIBIR est realizando alguna operacin. En este caso, LEER, al hacer uso del procesador que se encuentra bloqueado, quedara en espera de que el registro quede totalmente escrito y se proceda a su desbloqueo, LEER pasara a estado bloqueado, ESCRIBIR terminara su trabajo sobre el registro y en el siguiente cambio LEER procedera a hacer el suyo. Esta sincronizacin por la cual una actividad impide que otras puedan tener acceso a un dato mientras se encuentra realizando una operacin sobre el mismo es lo que se conoce como exclusin mutua.

La zona de cdigo de un proceso que no puede ser interrumpida por otro, por los motivos expuestos anteriormente se le llama Regin Crtica.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_214.html Regiones crticas.

Es el conjunto de actividades elementales cuya ejecucin exige el monopolio de recursos. Por ejemplo, para indicar que alguna accin se realizar con acceso exclusivo a ciertos datos compartidos. Regin datos - compartidos do accin

Como evitar la regin critica?. La clave para prevenir el problema aqu y en muchas otras situaciones en que interviene la memoria compartida, archivos compartidos y todo lo que se comparte, consiste en determinar alguna manera de prohibir que un proceso lea y escriba los datos compartidos al mismo tiempo.

De otra manera lo que se necesita es la sincronizacin. Una manera de asegurar de que si un proceso sta utilizando una variable o archivo compartido, es que los otros procesos no pueden hacer lo mismo.

Para tener una solucin adecuada a la regin crtica se necesita que se cumplan cuatro condiciones:

1. Nunca dos procesos pueden encontrarse simultneamente dentro de sus regiones crticas. 2. No se hacen suposiciones acerca de las velocidades relativas de los procesos o del Nmero de CPU. 3. Ningn proceso suspendido fuera de la regin crtica debe bloquear a otros procesos.

4. Nunca un proceso debe querer entrar en forma arbitraria en su regin crtica. Representacin de regiones criticas, observe figura # 17

Figura # 17. Representacin de regiones criticas

Cuando se disea un proceso que debe contener una o varias regiones crticas se deben de tomar en cuenta las siguientes consideraciones: . La regin crtica debe ser ejecutada lo ms rpido posible. . Un programa no debe nter bloquearse en una regin crtica. . Las regiones crticas deben ser programadas con mucho cuidado (no se permiten Ciclos indefinidos). . Mientras un proceso est en su regin crtica otros procesos pueden continuar Ejecutndose fuera de las regiones crticas. . Cuando se tienen procesos que comparten datos, si un proceso deja la regin Crtica otro de los procesos que espera a entrar en su regin crtica puede proceder.

Cuando el proceso termina, voluntaria o involuntariamente, el sistema operativo debe de realizar la limpieza propia de fin de proceso y liberar la exclusin mutua de otros procesos.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_213.html La exclusin mutua: Forma de asegurar que si un proceso est usando una variable o archivo compartido, los otros procesos quedarn excluidos de hacer lo mismo. Los procesos pueden tener en su cdigo secciones en que realizan clculos internos y operaciones que no dan lugar a condiciones de competencia. Sin embargo existen secciones de programa en que el proceso est accediendo a recursos compartidos que pueden dar pi a condiciones de competencia. La parte del programa en que se accede a un recurso compartido se denomina seccin o regin crtica (requisito necesario, pero no suficiente). Los requisitos para que procesos paralelos cooperen de manera correcta usando datos compartidos son los siguientes:

Dos procesos nunca pueden estar simultneamente dentro de sus regiones crticas. No se puede suponer nada acerca de las velocidades de ejecucin de los procesos o el nmero de las CPU. Ningn proceso que se ejecute fuera de su regin crtica puede bloquear a otros procesos. Ningn proceso deber tener una espera indefinida para entrar en su regin crtica.

La exclusin mutua debe ponerse en prctica slo cuando los procesos obtienen acceso a datos compartidos modificables; cuando los procesos realizan operaciones que no entran en conflicto con otras, deben permitirse que procedan concurrentemente. Cuando un proceso obtiene acceso a datos compartidos modificables, se dice que se encuentra en una seccin crtica. Es evidente que, para evitar la clase de problemas observados en la seccin anterior, debe asegurarse que cuando un proceso se encuentre en una seccin crtica, los dems procesos (o al menos los que tengan acceso a los datos compartidos) no pueden entrar a sus propias secciones crticas. Mientras un proceso se encuentra en su seccin crtica, otros procesos pueden, claro est, seguir ejecutndose fuera de sus secciones crticas. Cuando un proceso abandona su regin crtica, otro proceso que espera entrar en su propia seccin crtica (si existe algn proceso en espera). Lograr que se cumpla la exclusin mutua es uno de los problemas fundamentales de la programacin concurrente. Se han propuesto muchas soluciones, algunas de software y otras de hardware, algunas sencillas y otras complejas, y algunas que requieren la cooperacin voluntaria de los procesos y otras que exigen un escrito ajuste a rgidos protocolos. Encontrarse dentro de una regin crtica es un estado especial concedido a un proceso. El proceso tiene acceso exclusivo a los datos compartidos y los dems procesos que requieran acceso a los datos en ese momento deben esperar. As pues, las secciones crticas deben ejecutarse tan rpido como sea posible; un proceso no se debe bloquear

dentro de su propia seccin crtica y las secciones crticas deben codificarse con mucho cuidado (para evitar, por ejemplo, la posibilidad de ciclos infinitos). Si un proceso de una seccin crtica termina, ya sea voluntaria o involuntariamente, el sistema operativo, al realizar su mantenimiento de terminaciones, debe liberar la exclusin mutua de manera que otros procesos puedan entrar en sus regiones crticas. El problema de la Seccin Crtica

n procesos compitiendo para utilizar algn dato compartido. Cada proceso tiene un segmento de cdigo, llamado seccin crtica, en el que se accede al dato compartido. Problema asegurarse de que cuando un proceso esta ejecutndose en su seccin crtica, a ningn otro proceso se le permite ejecutar la suya. Estructura del proceso Pi

repeat entry section seccin crtica exit section seccin restante until false; Solucin al problema de la Seccin Crtica

Una solucin al problema de la seccin crtica debe satisfacer los siguientes tres requerimientos: 1. Exclusin Mtua. Si un proceso Pi esta ejecutandose en su seccin crtica, entonces ninguno de los otros procesos puede estar en su seccin crtica 2. Progreso. Si ningn proceso esta ejecutndose en su seccin crtica y existen procesos que quieren entrar en su seccin crtica, entonces la seleccin del prximo proceso que entrar a la seccin crtica no puede ser pospuesta indefinidamente. 3. Espera limitada. Debe existir un lmite del nmero de veces que se les permite a otros procesos entrar en sus secciones crticas en el intervalo entre que un proceso ha hecho un requerimiento para entrar en su seccin crtica y que se le concede el permiso. Se supone que cada proceso se ejecuta a velocidad distinta de cero. Ninguna suposicin respecto a la velocidad relativa de los n procesos.

Intentos iniciales para resolver el problema


Inhibir las interrupciones. Solo dos procesos, P0 and P1

Estructura general del proceso Pi

repeat entry section seccin crtica exit section seccin restante until false;

Los procesos pueden compartir algunas variables comunes para sincronizar sus acciones.

Algoritmo 1 Variables compartidas: var turn: (0..1); inicialmente turn = 0 turn = i ? Pi puede entrar en su seccin crtica Proceso Pi repeat while turn ? i do no-op; seccin crtica turn := j; seccin restante until false; Satisface la condicin de exclusin mtua, pero no la de progreso (si turn=0 y P1 esta listo para entrar en su seccin crtica, P1 no puede hacerlo, incluso aunque P0 este en la seccin restante) Algoritmo 2 Variables compartidas var flag: array [0..1] of boolean; inicialmente flag [0] = flag [1] = false. flag [i] = true ? Pi listo para entrar en su seccin crtica Proceso Pi repeat flag[i] := true; while flag[j] do no-op; seccin crtica flag [i] := false; seccin restante until false;

Satisface la exclusin mtua, pero no el requerimiento de progreso. (P0 pone flag[0 ] =true y P1 pone flag[1 ] =true; cada uno esperando al otro indefinidamente) Algoritmo 3 - Combinacin de las variables compartidas de los algoritmos 1 y 2. - Proceso Pi repeat flag [i] := true; turn := j; while (flag [j] and turn = j) do no-op; seccin crtica flag [i] := false; seccin restante until false; - Cumple los tres requerimientos; resuelve el problema de la seccin crtica para dos procesos. Algoritmo del panadero

Antes de entrar a su seccin crtica, los procesos reciben unnmero. El que posea el nmero menor entra en la seccin crtica. Si los procesos Pi y Pj reciben el mismo nmero, si i < j, entonces Pi es servido primero; si no lo es Pj . El esquema de numeracin siempre genera nmeros en orden creciente; por ejemplo 1,2,3,3,3,3,4,5...

2.10.2
Sincronizacin.

Sincronizacin de procesos en S.C.

En procesos concurrentes, la ejecucin de un proceso se desarrolla en forma asncrona respecto a los otros. Sin embargo cuando dos, o ms procesos necesitan entrar en regin crtica, es necesario que exista una sincronizacin entre ellos a fin de garantizar que al menos uno y solo un proceso entrar en regin crtica. Si una actividad desea impedir que otra acceda a ciertos datos compartidos, mientras no se cumpla una determinada condicin, debemos sincronizar las actividades con dicha condicin. Por tanto, la sincronizacin es un elemento necesario para asegurar la exclusin mutua.

Existen tres algoritmos diseados para este fin, son los siguientes: Espera Activa. Espera no Activa Mecanismos de Hardware.

Algoritmo de Espera activa. Estos algoritmos establecen la espera de entrada a la regin crtica con un bucle que ser roto en el momento en que se cumpla una determinada condicin. Se, les llama as por que el proceso no queda bloqueado en su ejecucin, sino que constantemente compite por el procesador. Entre los distintos algoritmos de este tipo existentes podemos citar: . Espera con mutex. Algoritmo que utiliza un switch (MUTEX) a travs del cual se produce la sincronizacin. . Alternancia. Ligeramente mejor que el anterior, utiliza tambin una variable turno para realizar el sincronismo entre los Procesos. . Algoritmo de DEKKER. Resuelve el problema mediante la solucin propuesta por DEKKER, basando su funcionamiento en una Tabla unidimensional de dos elementos lgicos (Switches).

Algoritmo de Espera no activa. Son los algoritmos que establecen la espera para entrar en la regin crtica bloqueando, el proceso, haciendo que deje de competir por el procesador hasta que se cumpla la condicin de desbloqueo. Entre estos algoritmos existen los siguientes:

. Semforos: Para eliminar los problemas que se producen con los algoritmos de espera activa, fundamentalmente los referidos a la sobrecarga que producen en el sistema, Dijkstra(1965) diseo un mecanismo basado en una variable entera utilizada como contador de peticiones de entrada a una seccin crtica. Esta variable es compartida por todos los procesos del sistema. Este nuevo tipo de variable se denomin semforo, por su capacidad de gestionar el trfico de los proceso que desean acceder a datos compartidos. Con este sistema, cuando un proceso intente entrar en una regin crtica mientras otro est accediendo a los datos compartidos, se bloquear de igual manera que cuando un proceso accede a un recurso que est ocupado. Un semforo se define como una variable entera que puede inicializarse y su valor no debe ser negativo y solo puede ser manipulada por las operaciones P y V. . Operaciones P y V. Estas operaciones son indivisibles, es decir que cuando un proceso ejecuta una de ellas no puede ser interrumpida. Operacin V: Esta operacin consiste en incrementar en uno el valor del semforo sobre el que acta, tambin es conocida como signal. Es una operacin de liberacin. As, si se tiene un semforo S, V de S V(S) o signal(S) causara S=S+1. V(MUTEX) libera Operacin P: Bloqueo, decrementa en uno el valor del semforo sobre el que acta siempre y cuando el valor del semforo es >=0 (positivo) tambin se le conoce en la literatura inglesa como Wait. Por ejemplo si tenemos P(S), Wait(S) si S=S-1. P(MUTEX) - Espera el proceso. De las definiciones anteriores se puede observar que el valor de un semforo esta relacionado con el nmero de veces que se ejecutan, dichas operaciones es decir, el valor del semforo S es igual a su valor inicial ms nmero de operaciones V menos nmero de operaciones P realizadas por ese semforo. VAL(S) = C(S) + NV(S) - NP(S)
VALOR VALOR INICIAL

NP( ) <= NV( ) +1

Por definicin se tiene que el valor del semforo debe ser mayor que cero, VAL(S)>0. En el caso cuando el valor del semforo es cero que relacin nos queda:

NP(S) = C(S) + NV(S) Es importante sealar que la relacin anterior ser siempre valida independientemente del nmero de operaciones P y V ejecutadas sobre el semforo.

. Regiones crticas: Son sistemas que permiten establecer protecciones contra una mala utilizacin de los usuarios. Para ello slo permiten que los datos compartidos se puedan acceder desde determinadas regiones quedando transparentes desde el resto. Tiene inconvenientes relacionados con la sincronizacin y no permite que varias actividades puedan realizar operaciones de lectura simultnea. . Regiones criticas condicionales: Es una mejora del mtodo anterior tratando de resolver algunos problemas de sincronizacin que se presentan. . Monitores: Uno de los problemas en los mecanismos anteriores es que el programador tiene que proporcionar de forma explcita el modo de sincronizacin. Para evitarlo B. Hansen y C.A.R. Hoare desarrollarn un nuevo mecanismo denominado Monitor, que debe ser soportado por el lenguaje correspondiente. Un monitor permite compartir, segura y eficientemente, datos entre varias actividades, garantizando la exclusin mutua, sin necesidad de que el programador tenga que suministrarla explcitamente. Se basa en dos premisas: la primera es la abstraccin de datos consistente en una tcnica capaz de separar las operaciones a ejecutar sobre los datos, de los detalles de diseo propio de los mismos (los lenguajes Modula y Ada soportan este tipo de estructuras). La segunda es que realizan la exclusin mutua de forma implcita. La finalidad ms til de los monitores es reunir todas las funciones que operan sobre un conjunto de datos compartidos en un slo mdulo, de manera que todos los accesos a esos datos estarn forzados a utilizar dichas funciones. . Contadores de eventos: Es un mecanismo para sincronizar actividades sin que sea necesario forzar la exclusin mutua, ya sea por que no deseamos limitar la concurrencia de las actividades,

o simplemente porque no lo necesitamos. Se basa en una variable entera que cuenta determinadas operaciones. . Mensajes: Mecanismo que permite intercambiar informacin necesaria durante el desarrollo normal de un proceso en ejecucin. Es ms un mecanismo de cooperacin que de sincronizacin.

Existen dos tipos de comunicacin entre procesos: - Directa: Envi y recepcin de mensajes entre si; de manera que se asocia un enlace vi direccional nico entre cada dos procesos. - Indirecta: Mensajes enviados y recibidos a travs de mail boxees o buzones de correo. Con este mtodo cada proceso puede estar relacionado con tantos buzones como desee consiguiendo comunicarse con tantos procesos como sea necesario. Mecanismos de Hardware Son instrucciones hardware que aseguran la exclusin mutua. Entre las ms utilizadas son las siguientes: . Deshabilitar interrupciones. Se puede forzar la exclusin mutua deshabilitando las interrupciones mientras haya alguna actividad en la regin crtica. De este modo, dicha actividad no podr ser interrumpida y, por tanto, no se podr producir ningn cambio de proceso. La habilitacin y deshabilitacin se realiza con una instruccin mquina, es una operacin rpida. . Instruccin TEST-AND-SET. Forza la exclusin mutua. La ventaja es que no puede ser interrumpida por que no muchas computadoras la poseen. . Lock. Se basa en la instruccin anterior y permite el acceso a la regin crtica a un proceso en caso de no existir otra actividad dentro de su regin crtica, no permitiendo en caso contrario. Como resolver la exclusin mutua usando semforos?.

Para resolver el problema de debe hacer lo siguiente: 1.- Identificar todas las regiones crticas. 2.- Definir tantos semforos como regiones crticas se tengan, dichos semforos se inicializarn con 1. 3.- C/U de las regiones crticas ser antecedida por la operacin P y precedida por la operacin V. Ejemplo: MUTEX es el semforo Regin crtica. Con lo anterior solo un proceso podr entrar a la regin crtica con lo que se esta asegurando la exclusin mutua. MUTEX = 1 * Que pasa si se tiene: A) P(MUTEX) SECCION CRITICA P(MUTEX) Entra el proceso, se decrementa en uno el semforo pero no libera, por lo tanto hay un dead lock, no hay sincronizacin entre procesos ni exclusin mutua Sale el proceso se incrementa en uno el semforo libera el proceso, por lo tanto no hay dead lock, no origina proceso de exclusin mutua. Sale el proceso se incrementa en uno el semforo pero no libera, por lo tanto no hay dead lock.

B)

V(MUTEX) SECCION CRITICA V(MUTEX) V(MUTEX) SECCION CRITICA P(MUTEX) P(MUTEX) SECCION CRITICA V(MUTEX)

C)

D)

Entra el proceso consume y libera, por lo tanto no hay dead lock, y da solucin a la exclusin mutua y a la sincronizacin.

Pregunta. * Varios procesos actualizan en forma concurrente a una lista ligada.

a) Que problema se puede producir. R.- Se puede producir un problema de sincronizacin y no hay exclusin mutua. b) Es un problema de exclusin mutua. R.- Exclusin mutua. c) Como resolver el problema. R.- Dando solucin a la exclusin mutua. * Si las operaciones P y V no fueran atmicas, la exclusin mutua seria violada. R.- Si por que los procesos pueden tomar el mismo valor y no se incrementa dos veces sino solo una. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_215.html

Problemas clsicos de sincronizacin.


Este tipo de problemas constituyen ejemplos de una amplia clase de problemas de control de concurrencia. Estos problemas se utilizan para probar casi todos los esquemas de sincronizacin propuestos. En las soluciones se emplean semforos para la solucin. * El problema de buffer limitado. Supongamos que el depsito consiste en n buffers, cada uno capaz de almacenar un elemento. El semforo MUTEX proporciona la exclusin mutua para los accesos al depsito de buffers y se le asigna un valor inicial de 1. Los semforos vacos y llenos cuentan el nmero de buffers vacos y llenos, respectivamente. El semforo vaco recibe 1 un valor inicial n; al semforo lleno se le asigna el valor inicial 0. * El problema de los lectores y escritores. Un objeto de datos (como un archivo o un registro) va a ser compartido por varios procesos concurrentes. Algunos de estos procesos slo quieren leer el contenido del objeto compartido, mientras que otros quieren actualizarlos (o sea, leerlo y escribirlo), hacemos una distincin entre estos dos tipos de procesos refirindonos a los procesos interesados slo en leer como lectores y escritores y a los dems como escritores. Obviamente, el que dos lectores tengan acceso simultneo al objeto de datos compartido no tendr ningn efecto adverso; sin embargo, si un escritor y otro proceso (ya sea lector o escritor) tiene acceso simultneo al objeto compartido, puede surgir el caos. Para asegurar que no surjan estas dificultades, es necesario que los escritores tengan acceso exclusivo al objeto compartido. A este problema de sincronizacin se le conoce como

problema de los lectores y escritores, el cual es ha utilizado para probar casi todas las nuevas primitivas de sincronizacin. * El problema de los filsofos comensales. Cinco filsofos pasan su vida comiendo u pensando. Los filsofos comparten una mesa circular rodeada por cinco sillas, una para cada uno de ellos. En el centro de la mesa se encuentra una fuente de arroz, y tambin sobre la mesa hay cinco palillos chinos. Cuando un filsofo piensa, no interacta con sus colegas. Ocasionalmente, un filsofo tiene hambre y trata de coger los dos palillos que estn ms cerca de l (los palillos colocados entre l y sus vecinos de la derecha y de la izquierda). Un filsofo slo puede coger un palillo a la vez y, obviamente, no puede ser el que esta en la mano de un vecino. Cuando un filsofo ambiento tiene sus dos palillos al mismo tiempo come sin soltarlos. Cuando termina de comer, coloca ambos palillos sobre la mesa y comienza a pensar otra vez. * Problema del productor consumidor. En un contexto de procesos concurrentes, se tiene un conjunto de procesos productores de mensajes y otro conjunto de procesos consumidores de mensajes. La zona donde se depositarn y recogern los mensajes es un buffer de tamao n (n localidades). Tanto productores como consumidores ejecutaran cclicamente los siguientes algoritmos. Ver figura # 20.

Figura # 20. Productor consumidor.

El recurso que se va a compartir es el buffer por lo tanto la seccin critica ser el acceso y manipulacin de dicho buffer.

* Para resolver el problema de exclusin mutua ser necesario definir un semforo para controlar el acceso al buffer, figura # 21.

Figura # 21. Definicin de un semforo para controlar el accedo a buffer. - Cuando el consumidor se apodera del buffer P ( ) !Sorpresa esta vaco Productor gana se apodera del buffer sorpresa el buffer esta lleno!!! no va a poder depositar y por lo tanto va a liberar el buffer nunca hace V( ). Productor consumidor utilizando espera activa, figura # 22. Productor Produce msg. Lock (espacio disponible) Lock (acceso a buffer) Deposita msg. Unlock (acceso a buffer) Unlock (existe msg.) Figura # 22. Consumidor Lock (existe msg.) Lock (acceso a buffer) extrae msg. Unlock (acceso a buffer) Unlock (espacio disponible) Consume msg.

Problema de sincronizacin. La sincronizacin entre productor y consumidor es necesaria debido a lo siguiente: Los productores no deben depositar mensajes si el buffer se encuentra lleno y los consumidores no deben accesar el buffer cuando este se encuentre vaci. Para resolver el problema de definir un semforo que defina el espacio disponible y ser inicializado con un valor igual a n y un semforo que defina la existencia de mensaje el cual ser inicializado con un 0. Productor produce msg. P (espacio disponible) P (acceso a buffer) deposita msg V (acceso a buffer) V (existe msg) Consumidor P (existe msg.) P (acceso s buffer) extrae msg. V (acceso a buffer) V (espacio disponible) Consume msg.

X * X

Solucin a la exclusin mutua X - Solucin de la sincronizacin - Buffer lleno Casos crticos - Buffer vaco http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_216.html Espacio disponible=N, existe msg=0.

2.10.2.1 Mecanismo de semforos.


Semforos

Son una herramienta de sincronizacin. Es una variable protegida que solo puede ser modificada por la rutina de inicializacin y por otras dos operaciones atmicas: P( ) <- wait V( ) <- signal Las operaciones a las cuales se puede acceder son: Inicializacin: Crea un nuevo semforo asignndole un valor inicial P(s): while (s=0) do no_op ATMICA s:=s-1

V(s): s:=s+1 ATMICA Existen bsicamente dos tipos de semforos: Semforos contadores: Toman valores positivos mayores o iguales a 0. Se utilizan para sincronizacin de procesos. Semforos binarios: Toman los valores 0 1 y se utilizan para exclusin mutua. A continuacin se presenta una solucin mediante semforos del problema productor/consumidor. #define N 100 semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void productor(void) {int item; while(1){ produce_item(item); down(empty); down(mutex); enter_item(item); up(mutex); up(full);} } void consumidor(void) { int item; while(1){ down(full); down(mutex); remove_item(&item); up(mutex);

up(empty); consume_item(item);} } En este caso tenemos la utilizacin de 3 semforos, uno destinado al control de la exclusin mutua y los otros dos destinados a la sincronizacin de los procesos para el control de buffer lleno y vaco. Podramos utilizar semforos para un algoritmo de espera ocupada con n procesos, pero los n procesos que estn ejecutando el while de la funcin P(s) van a la cola de ready en un instante de tiempo reduciendo la performance general del equipo. Para evitar la espera ocupada se crea un semforo que sea un registro de un nuevo tipo: Semforo = Record Valor:Integer L:Lista_de_Procesos End P(s) { s.Valor:= s.valor - 1 if s.Valor < 0 then agregar este proceso a s.L bloquear; end} V(s){ s.Valor:=s.Valor + 1 if s.Valor 0 then quitar un proceso y a s.L despertar(y) }

Semforos
Un semforo es un tipo de datos abstracto que permite el uso de un recurso de manera exclusiva cuando varios procesos estn compitiendo. El tipo de datos abstracto cumple la siguiente semntica:

El estado interno del semforo cuenta cuantos procesos todava pueden utilizar el recurso. Se puede realizar, por ejemplo, con un nmero entero que nunca llega a ser negativo. Exiten tres operaciones con un semforo: init(), wait(), y signal() que realizan lo siguiente:
init()

: Inicializa el semforo antes de que cualquier proceso haya ejecutado ni una operacin wait() ni una operacin signal() al lmite de nmero de procesos que tengan derecho a acceder el recurso. Si se inicializa con 1, se ha contruido un semforo binario.
wait()

: Si el estado indica cero, el proceso se queda atrapado en el semforo hasta que sea despertado por otro proceso. Si el estado indica que un proceso ms puede acceder el recurso se decrementa el contador y la operacin termina con exito. La operacin wait() tiene que estr implementada como una instruccin atmica. Sin embargo, en muchas implementaciones la operacin wait() puede ser interrumpida. Normalmente existe una forma de comprobar si la salida del wait() es debido a una interrupcin o porque se ha dado acceso al semforo.
signal()

: Una vez se ha terminado el uso del recurso, el proceso lo sealiza al semforo. Si queda algn proceso bloqueado en el semforo uno de ellos sea despertado, sino se incrementa el contador. La operacin signal() tambin tiene que estr implementada como instruccin atmica. En alguns implementaciones es posible comprobar si se haya despertado un proceso con exito en caso que hubiera alguno bloqueado. Para despertar los procesos se puede implementar varias formas que se destinguen en sus grados de justicia, por ejemplo con un simple sistema tipo FIFO. El acceso mutuo a regiones crticas se arregla con un semforo que permita el acceso a un slo proceso
S.init(1) P1 a: loop b: S.wait() c: critical region d: S.signal() e: non-critical region f: endloop P2 loop S.wait() critical region S.signal() non-critical region endloop

Observamos los siguiente detalles:

Si algn proceso no libera el semforo, se puede provocar un bloqueo.

No hace falta que un proceso libere su propio recurso, es decir, la operacin signal() puede sea ejecutada por otro proceso. Con simples semforos no se puede imponer un orden en los procesos accediendo a diferentes recursos.

Si existen en un entorno solamente semforos binarios, se puede simular un semforo general usando dos semforos binarios y un contador, por ejemplo, con las variables delay, mutex y count. La operacin init() inicializa el contador al nmero mximo permitido. El semforo mutex asegura acceso mutuamente exclusivo al contador. El semforo delay atrapa a los procesos que superan el nmero mximo permitido. La operacin wait() se implementa de la siguiente manera:
delay.wait() mutex.wait() decrement count if count greater 0 then delay.signal() mutex.signal()

y la operacin signal() se implementa de la siguiente manera:


mutex.wait() increment count if count equal 1 then delay.signal() mutex.signal()

Unas principales desventajas de semforos son:


no se puede imponer el uso correcto de los wait()s y signal()s no existe una asociacin entre el semforo y el recurso entre wait() y signal() el usuario puede realizar cualquier operacin con el recurso

http://trevinca.ei.uvigo.es/~formella/doc/cd04/node64.html

2.10.2.2 Mecanismo de monitores.

Monitores
Todas las estructuras que hemos visto hasta ahora siguen provocando problemas para el programador:

el control sobre los recursos est distribuido por varios puntos de un programa no hay proteccin de las variables de control que siempre fueron globales

Por eso se usa el concepto de monitores que implementan un nivel an ms alto de abstraccin facilitando el acceso a recursos compartidos. Un monitor es un tipo de datos abstracto que contiene

un conjunto de procedimientos de control de los cuales solamente un subconjunto es visible desde fuera un conjunto de datos privados, es decir, no visibles desde fuera

El acceso al monitor est permitido solamente a travs de los procedimientos pblicos y el compilador garantiza exclusin mutua para todos los procedimientos. La implementacin del monitor controla la exclusin mutua con colas de entrada que contengan todos los procesos bloqueados. Pueden existir varias colas y el controlador del monitor elige de cual cola se va a escoger el siguiente proceso para actuar sobre los datos. Un monitor no tiene acceso a variables exteriores con el resultado de que su comportamiento no puede depender de ellos. Una desventaja de los monitores es la exclusividad de su uso, es decir, la concurrencia est limitada si muchos procesos hacen uso del mismo monitor. Un aspecto que se encuentra en muchas implementaciones de monitores es la sincronizacin condicional, es decir, mientras un proceso est ejecutando un procedimiento del monitor (con exclusin mutua) puede dar paso a otro proceso liberando el cerrojo. Estas operaciones se suele llamar wait() o delay(). El proceso que ha liberado el cerrojo se queda bloqueado hasta que otro proceso le despierta de nuevo. Este bloqueo temporal est realizado dentro del monitor (dicha tcnica se refleja en Java con wait() y notify()). La tcnica permite la sincronizacin entre procesos porque actuando sobre el mismo recurso los procesos pueden cambiar el estado del recurso y pasar as informacin de un proceso al otro. Lenguajes de alto nivel que facilitan la programacin concurrente suelen tener monitores implementados dentro del lenguaje (por ejemplo refJavaMonitoresJava usa el concepto de monitores para realizar el acceso mutuamente exclusivo a sus objetos). El uso de monitores es bastante costoso, porque se pierde eficiencia por tanto bloqueo de los prosesos. Por eso se intenta aprovechar de primitivas ms potentes para aliviar este problema, como vemos en la siguiente seccin.
http://trevinca.ei.uvigo.es/~formella/doc/cd04/node67.html

Monitores

Es un tipo de procedimientos, variables y estructuras de datos que se agrupan en un tipo de modulo especial. Tienen una propiedad importante: solo un proceso puede estar activo en un monitor en un instante de tiempo.

Los monitores proveen un nuevo tipo de variables de condicin con dos operaciones que operan sobre el (solo se usan dentro del procedimiento de el monitor). Wait -> wait(a) : produce que el proceso que ejecuta la instruccin sea interrumpido y removido de la cola de ready hasta que otro proceso lo habilite ejecutando la instruccin signal( )con la misma variable de condicin. Signal -> signal(a) : Habilita la ejecucin de algn proceso en espera por la ejecucin de la instruccin wait con la misma variable de condicin.

2.10.3
Deadlocks

Interbloqueo (DeadLock).

Si un conjunto de procesos esta en estado de espera por recursos y nunca cambia de estado porque los recursos por los que espera estn siendo utilizados por otros procesos en estado de espera tenemos un DEADLOCK. Los recursos son la memoria, dispositivos de E/S, semforos, archivos, etc. La forma en que un proceso hace uso de un recurso es: Solicitud: si el recurso esta disponible se le otorga, si no el proceso pasa a estado de espera. Uso: El proceso utiliza el recurso Liberacin: el proceso debe liberar el recurso.
Condiciones Necesarias para que se produzca DEADLOCK

Si se presentan simultneamente las cuatro siguientes condiciones el sistema esta en DEADLOCK. 1. EXCLUSION MUTUA: Por lo menos un proceso que tenga otorgado un recurso en forma exclusiva. 2. USO Y ESPERA: Debe existir al menos un proceso que este haciendo uso de un recurso y que este esperando por otros recursos asignados a otros procesos. 3. NO INTERRUPCION: Los recursos no pueden ser retirados al proceso. Si un proceso hace uso de un recurso no le podr ser retirado hasta que voluntariamente el proceso lo libere. 4. ESPERA CIRCULAR: Debe existir un conjunto de procesos {P1.....Pn} tal que P1 espera por un recurso utilizado por P2,......,Pn espera por un recurso utilizado por P1.
Resourse Allocation Graph(Grafo de utilizacion de recursos)

Conjunto de Vrtices: U =P U R P={P1,P2,....,Pn} R={R1,R2,...,Rn} Conjunto de Aristas: Una arista de un proceso Pi a un Recurso Rj significa que el proceso i esta haciendo una solicitud por el recurso Rj.

Una arista del recurso Rj al proceso Pi, significa que el recurso esta asignado al proceso. Si un RAG no tiene ciclos el sistema no esta en DEADLOCK, sis si los tiene no se puede afirmar nada.
Mecanismos para tratar con Deadlocks Evasion de Deadlocks

Si se tiene cuidado al en la forma de asignar los recursos se pueden evitar situaciones de Deadlock. Supongamos un ambiente en el que todos los procesos declaren a priori la cantidad mxima de recursos que hab de usar. Estado Seguro: un estado es seguro si se pueden asignar recursos a cada proceso (hasta su mximo) en algn orden sin que se genere Deadlock. El estado es seguro si existe un ordenamiento de un conjunto de procesos {P1...Pn} tal que para cada Pi los recursos que Pi podr utilizar pueden ser otorgados por los recursos disponibles mas los recursos utilizados por los procesos Pj,j<i. Si los recursos solicitados por Pi no pueden ser otorgados, Pi espera a que todos los procesos Pj hayan terminado.
Algoritmo del banquero de Dijkstra

Asigna peticiones de recursos siempre que las mismas den como resultado estados seguros. Solicitudes que den como resultado estados inseguros sern negadas hasta que puedan ser satisfechas. Este algoritmos evita situaciones de Deadlock asignando los recursos en forma correcta. Las debilidades del algoritmo son: que requiere que la cantidad de recursos del sistema sea constante, requiere una cantidad de procesos constante y requiere que los procesos garanticen que los recursos van a ser devueltos en un intervalo finito de tiempo.

En el rea de la informtica, el problema del deadlock ha provocado y producido una serie de estudios y tcnicas muy tiles, ya que ste puede surgir en una sola mquina o como consecuencia de compartir recursos en una red. En el rea de las bases de datos y sistemas distribuidos han surgido tcnicas como el 'two phase locking' y el 'two phase commit' que van ms all de este trabajo. Sin embargo, el inters principal sobre este problema se centra en generar tcnicas para detectar, prevenir o corregir el deadlock. Las tcnicas para prevenir el deadlock consisten en proveer mecanismos para evitar que se presente una o varias de las cuatro condiciones necesarias del deadlock. Algunas de ellas son: Asignar recursos en orden lineal: Esto significa que todos los recursos estn etiquetados con un valor diferente y los procesos solo pueden hacer peticiones de recursos 'hacia adelante'. Esto es, que si un proceso tiene el recurso con etiqueta '5' no puede pedir recursos cuya etiqueta sea menor que '5'. Con esto se evita la condicin de ocupar y esperar un recurso. Asignar todo o nada: Este mecanismo consiste en que el proceso pida todos los recursos que va a necesitar de una vez y el sistema se los da solamente si puede drselos todos, si no, no le da nada y lo bloquea. Algoritmo del banquero: Este algoritmo usa una tabla de recursos para saber cuntos recursos tiene de todo tipo. Tambin requiere que los procesos informen del mximo de recursos que va a usar de cada tipo. Cuando un proceso pide un recurso, el algoritmo verifica si asignndole ese recurso todava le quedan otros del mismo tipo para que alguno de los procesos en el sistema todava se le pueda dar hasta su mximo. Si la respuesta es afirmativa, el sistema se dice que est en 'estado seguro' y se otorga el

recurso. Si la respuesta es negativa, se dice que el sistema est en estado inseguro y se hace esperar a ese proceso. Para detectar un deadlock, se puede usar el mismo algoritmo del banquero, que aunque no dice que hay un deadlock, s dice cundo se est en estado inseguro que es la antesala del deadlock. Sin embargo, para detectar el deadlock se pueden usar las 'grficas de recursos'. En ellas se pueden usar cuadrados para indicar procesos y crculos para los recursos, y flechas para indicar si un recurso ya est asignado a un proceso o si un proceso est esperando un recurso. El deadlock es detectado cuando se puede hacer un viaje de ida y vuelta desde un proceso o recurso. Por ejemplo, suponga los siguientes eventos: evento 1: Proceso A pide recurso 1 y se le asigna. evento 2: Proceso A termina su time slice. evento 3: Proceso B pide recurso 2 y se le asigna. evento 4: Proceso B termina su time slice. evento 5: Proceso C pide recurso 3 y se le asigna. evento 6: Proceso C pide recurso 1 y como lo est ocupando el proceso A, espera. evento 7: Proceso B pide recurso 3 y se bloquea porque lo ocupa el proceso C. evento 8: Proceso A pide recurso 2 y se bloquea porque lo ocupa el proceso B. En la figura 5.1 se observa como el 'resource graph' fue evolucionando hasta que se present el deadlock, el cual significa que se puede viajar por las flechas desde un proceso o recurso hasta regresar al punto de partida. En el deadlock estn involucrados los procesos A,B y C. Una vez que un deadlock se detecta, es obvio que el sistema est en problemas y lo nico que resta por hacer es una de dos cosas: tener algn mecanismo de suspensin o reanudacin [Deitel93] que permita copiar todo el contexto de un proceso incluyendo valores de memoria y aspecto de los perifricos que est usando para reanudarlo otro da, o simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la prdida de datos y tiempo.

Deadlock

Un S.O. tiene un nmero limitado de recursos y procesos que solicitan los recursos. Como diseador de un sistema operativo, cul es el problema para ti si algunos procesos un tu sistema estn en deadlock esperando recursos? Los recursos retenidos por los procesos en deadlock no estn disponibles para otros procesos, y los procesos en deadlock no pueden avanzar (es mal para los dueos de los procesos). Muchos SS.OO. modernos no tienen apoyo especial para prevenir deadlock (porque cuesta), pero es comn en programacin de sistemas en general (e.g., en programacin distribuida).

Caractersticas de deadlock

El sistema tiene recursos de varios tipos: memoria, archivos, grabadores, impresoras, etc. Podemos tener ms de un ejemplar de un tipo de recurso (e.g., tres impresoras). Cada uno de los ejemplares pueden satisfacer un solicitud de un proceso para el recurso. Los recursos son compartibles y permiten acceso a muchos procesos (e.g., los archivos de slo lectura) o no compartibles (e.g., un grabador). Ejemplo: Tres procesos en un sistema con tres grabadores, cada proceso tiene un grabador y cada uno necesita uno ms.

Condiciones necesarias de deadlock: o Exclusin mutua. Por lo menos un recurso debe retenerse no compartido. Por qu? o Retencin y espera. Debe haber un proceso que retenga por lo menos un recurso y espere adquirir ms recursos retenidos por otros. o No apropiacin. Los recursos no se pueden expropiar. Los procesos liberan recursos slo voluntariamente. o Espera circular. Debe haber un conjunto {P0, P1, ..., Pn} de procesos en espera tales que P0 espere un recurso de P1, P1 un recurso de P2, ..., y Pn un recurso de P0. Podemos usar un grafo de asignacin de recursos para describir deadlock. Tenemos procesos (crculos), recursos (rectngulos con un punto para cada ejemplar), aristas de solicitud y de asignacin (cambio instantneamente). Un grafo sin ciclos implica que no hay deadlock. Si hay un ciclo, es posible que exista deadlock. Un ciclo es una condicin necesaria pero no suficiente para deadlock.

http://www.cs.virginia.edu/~knabe/iic2332/notes07.html

Anlisis.
Definicin. Abraso Mortal (Dead lock) o tambin llamado nter bloqueo. En un contexto de procesos concurrentes, si el anlisis de recursos a compartir no se hace cuidadosamente, se puede tener el riesgo de que dos o ms procesos acaparen algn recurso y que se pongan en espera de que otro u otros liberen los recursos para poder continuar su ejecucin, de tal manera que cada proceso permanecer en una espera indefinida (infinita), observe el ejemplo de la figura # 23 Ejemplo: Se tienen 2 procesos P1 y P2. Se tiene 2 recursos Impresora y Unidad de disco:

Figura # 23. Dead Lock. Cuando un proceso espera un evento que nunca se va a dar y el otro tambin lo espera Dead lock de un recurso simple. Muchos de los dead lock se deben a que un proceso retiene un recurso que debe ser usado en forma exclusiva. Es decir, el proceso tiene un recurso que slo puede ser usado por un usuario a la vez. A estos recursos se les conoce como reutilizables en serie. Dead lock en sistemas de spool. Los sistemas de spool suelen ser los ms propensos al dead lock. Varios trabajos parcialmente complejos que generan lneas de impresin a un archivo de spool pueden interbloquearse si el espacio disponible para trabajar se llena antes de completarse alguno de esos trabajos. La solucin ms comn es limitar los spoolers de entrada de modo que no se lean ms archivos cuando se llega al lmite de su capacidad. Postergacin indefinida. En los sistemas que mantienen procesos en espera mientras realizan la asignacin de recursos y/o procesan la planificacin de decisiones, es posible que un proceso sea postergado de manera indefinida mientras otro reciben la atencin del sistema. A esta situacin se le conoce

como postergacin indefinida, es diferente del dead lock pero sus consecuencias son igual de negativas. En algunos sistemas la postergacin indefinida se evita aumentando la prioridad de un proceso mientras espera por un recurso, a esto se le llama envejecimiento. Conceptos sobre recursos. Un sistema operativo es sobre todo un administrador de recursos, existen bsicamente dos tipos de recursos: * Recursos no apropiativos. Un recurso que no se puede liberar antes de completar su actividad sin perder la validez del proceso que lo usa, se dice que un recurso no apropiativo. Una impresora o una unidad de cinta no pueden ser liberados hasta que no termine su trabajo. * Recursos apropiativos. Un recurso que puede ser usado temporalmente por varios procesos sin comprometer el correcto funcionamiento de dichos procesos se dice que es un recurso apropiativo. El CPU y la memoria principal (mediante las tcnicas de paginacin) son recursos que pueden ser asignados temporalmente por varios procesos. La apropiatividad de recursos es extremadamente importante en los sistemas de multiprogramacin. Los datos y los programas son recursos que tienen caractersticas especiales. En un sistema multiusuario donde se pueden compartir editores, compiladores y programas en general, es ineficiente cargar una copia de ellos para cada usuario que lo solicite. En lugar de ello se carga una sola vez a la memoria y se hacen varias copias de los datos, una por cada usuario. El cdigo que no cambia mientras est en uso se llama cdigo rentrate. El cdigo que puede ser cambiado pero que se inicializa cada vez que se usa se llama reutilizable en serie. El cdigo rentrate puede ser compartido simultneamente por varios procesos mientras que el reutilizable en serie slo puede ser usado por un proceso a la vez. Mtodos para manejar los Dead Lock, figura # 24. - Prevencin - No permitirlos - Evitarlos - Difcil y caro - Por perdida - de informacin

- Permitirlos y recuperarlos

Figura # 24. Prevencin de Dead Lock. En principio existen cuatro reas importantes en la investigacin del dead lock, a saber: 1) Prevencin: En las tcnicas de prevencin el inters se centra en condicionar un sistema para que elimine toda probabilidad de que ocurra un dead lock (normalmente a costa de recursos). 2) Evitacin: En las tcnicas para evitar, la idea es poner condiciones menos estrictas que la prevencin, para lograr una mejor utilizacin de los recursos, pero procurando no caer en un dead lock. 3) Deteccin: Los mtodos de deteccin se usan en sistemas que permiten la ocurrencia de un dead lock de forma voluntaria o involuntaria. 4) Recuperacin: Los mtodos de recuperacin se usan para romper los dead lock en un sistema, para poder liberarlo de ellos y los procesos estancados pueden continuar y llegar a su fin. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_311.html

Modelo del sistema.


Un sistema se compone de un nmero finito de recursos que se distribuyen entre varios procesos que compiten por ellos. Los recursos se dividen en varios tipos, cada uno de los cuales consiste en varios ejemplares idnticos. Los ciclos del UCP, el espacio de memoria, los archivos y los dispositivos de E/S (como impresoras y unidades de cinta) son ejemplos de tipos de recursos. Un proceso debe solicitar un recurso antes de usarlo, y liberarlo al terminar su uso. Un proceso puede solicitar cuantos recursos quiera para llevar a cabo su tarea. Obviamente, el nmero no puede exceder del total de recursos disponibles del sistema. En otras palabras, un proceso no puede solicitar tres impresoras si el sistema solo dispone de dos.

En el modo de operacin normal, un proceso solo puede utilizar un recurso en la secuencia siguiente: 1. Solicitud. Si la solicitud no puede atenderse de inmediato (por ejemplo, otro proceso est utilizando ese recurso), entonces el proceso solicitante debe esperar hasta que pueda adquirir el recurso. Utilizacin. El proceso puede trabajar con el recurso (por ejemplo, si el recurso es una impresora, el proceso puede imprimir en ella). Liberacin. El proceso libera el recurso. La solicitud y liberacin de recursos son llamadas al sistema. Algunos ejemplos son las llamadas Solicitar y Liberar dispositivos, Abrir y Cerrar archivos, y Asignar y Liberar memoria. La solicitud y liberacin de otros recursos puede lograrse atreves de las operaciones espera (P) y seal (V) sobre semforos. Adems la utilizacin de recursos solo puede conseguirse mediante llamadas al sistema (por ejemplo, para leer o escribir en un archivo o dispositivo de E/S), de modo que para cada utilizacin, el sistema operativo verifica que el proceso que dispone del recurso ya lo haba solicitado y ya se le haba asignado. Una tabla del sistema registra si cada uno de los recursos est libre o asignado y, de estar asignado, a qu proceso. Si un proceso solicita un recurso que se encuentra asignado a otro, puede aadirse a la cola de procesos que esperan tal recurso. Un conjunto de procesos se encuentra en estado de bloqueo mutuo cuando cada uno de ellos espera un suceso que slo puede originar otro proceso del mismo conjunto. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_312.html

2. 3.

Caracterizacin.
Debe ser obvio que los bloqueos mutuos son indeseables, pues cuando se dan, los procesos nunca terminan su ejecucin y los recursos del sistema se paralizan, impidiendo que se inicien otros procesos. Antes de analizar los distintos mtodos para tratar el problema del bloqueo mutuo se describirn las circunstancias que los caracterizan.

Condiciones necesarias para que ocurra un Dead Lock.

Coffman, Elphick y Shoshani. Establecieron las cuatro condiciones necesarias para que se produzca un dead lock. 1.- Los procesos reclaman control exclusivo de los recursos que solicitan (exclusin mutua). 2.- Los procesos mantienen los recursos que se les han asignado mientras esperan por recursos adicionales (condicin de espera). 3.- No se pueden tomar los recursos que los procesos tienen hasta su completa utilizacin (condicin de no apropiatividad). 4.- Existe una cadena circular de procesos en la cual cada uno de ellos mantiene uno o ms recursos que son requeridos por el siguiente proceso de la cadena (condicin de espera circular). Se deben presentar las cuatro condiciones para que puede aparecer un Dead Lock. La condicin de espera circular implica la condicin de retencin y espera, por lo que las cuatro condiciones no son completamente independientes. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_313.html

2.10.3.1 Prevencin.
Prevencin.
En las estrategias de prevencin de dead Locks, los recursos son otorgados a los procesos solicitados, de tal manera que la solicitud de un recurso nunca llega a un Dead Lock. Esta estrategia se cerciora de que cuando menos una de cuatro condiciones de Dead Lock nunca llegue a ocurrir.

* Exclusin mutua.
La condicin de exclusin mutua debe conservarse para recursos no compartibles. Los recursos compartibles, no requieren acceso mutuamente excluyente y, por tanto, no pueden participar en un dead lock. Los archivos de slo lectura son un buen ejemplo de recursos compartibles. Si varios procesos tratan de abrir al mismo tiempo un archivo de slo lectura, se les puede otorgar accesos simultneos al archivo, por lo general no es posible evitar dead lock`s negando la condicin de exclusin mutua. Por su naturaleza algunos recursos no pueden compartirse.

* Negacin de la condicin de "espera por".


La primera estrategia de Havender requiere que todos los recursos que va a necesitar un proceso sean pedidos de una sola vez. El sistema deber asignarlos segn el principio "todo o nada". Si el conjunto de recursos que necesita un proceso est disponible se le asigna (todo) y se le permite entrar en ejecucin. Si no es as, el proceso deber esperar hasta que su conjunto de recursos est disponible. Mientras un proceso espera. No podr tener ningn recurso.

Esta estrategia presenta las siguientes desventajas: * Puede llevar a la postergacin indefinida, ya que quiz todos los recursos estn disponibles al mismo tiempo (costos de operacin altos). requeridos

Puede llevar un serio desperdicio de recursos, se requiere tener una gran cantidad de recursos para poder responder a cumplir peticin.

Es ineficiente por que decrementa la concurrencia del sistema. Una variante consiste en dividir el programa en bloques que puedan ser ejecutados con relativa independencia uno del otro. Esto reduce el desperdicio, pero implica un trabajo extra en el diseo de las aplicaciones.

* Negacin de la condicin de "no apropiatividad".


Cuando un sistema cuenta con los recursos suficientes para que los procesos puedan funcionar sin problemas (bloqueos). Cuando el sistema permite compartir los recursos y los procesos mantienen los que otros necesitan sucede un dead lock. La segunda estrategia sugiere que cuando a un proceso que mantiene recursos se le niegue una peticin de recursos adicionales deber liberar sus recursos y, si es necesario, pedirlos de nuevo, junto con los adicionales. Al retirar los recursos a un proceso que no puede avanzar se niega la condicin de "no apropiatividad". Un problema de esta poltica es la postergacin indefinida.

* Negacin de la condicin de "espera circular".

Si se da a los recursos una manera exclusiva y se obliga a los procesos a pedirlos en forma ascendente es imposible que ocurra una espera circular. Esta propuesta considera: + + + Los recursos deben ser numerados reflejando el orden en el cual la mayora de los trabajos los usan, figura # 25. Los procesos deben pedir los recursos en forma ascendente, figura # 25. Para los procesos que requieren de los recursos en un orden diferente, los recursos debern ser tomados y retenidos mucho antes de su utilizacin. (Implica el desperdicio de los recursos mantenidos pero no usados).

Figura # 25. Ordenamiento lineal del recurso. El ordenamiento lineal elimina la posibilidad de la espera circular, pero, obliga al diseador a trabajar ms con sus cdigos. Adems, los nmeros de recursos son asignados por la instalacin y hay que vivir con ellos durante largos periodos (meses o aos). Si los nmeros cambian se tienen que rescribir los programas y los sistemas existentes. La forma ms simple de prevenir un Dead Lock es obteniendo todos los recursos necesarios antes que el proceso continu y as se elimine la "condicin de espera". En otro mtodo de prevencin de dead lock, un proceso bloqueado devuelve los recursos solicitados por un proceso activo, al igual que elimina la condicin de "no apropiatividad" Rosenkrantz et al. Ha propuesto la siguiente optimizacin de este mtodo. Todos los procesos son asignados a prioridades nicas que pueden ser totalmente ordenadas. Un proceso de retencin cede el derecho de prioridad a otro proceso que sostiene el recurso necesario solo si el proceso de retencin tiene el recurso necesario solo si el proceso de retencin tiene mayor prioridad.

Este mtodo reduce los derechos de prioridad al 50% al igual que previene los dead locks. En el ordenamiento de Havender's todos los recursos son ordenados de manera nica y todos los procesos solicitan los recursos de manera ascendente. nicamente eliminando la condicin de "espera circular". Si un proceso ya sostiene algunos recursos, entonces puede pedir solo aquellos acomodos en un rango superior en el orden. Obteniendo recursos, de sta forma, previene la formacin de un ciclo o de un "knot". http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_314.html

Prevenir
Se puede prevenir el bloqueo siempre y cuando se consiga que alguna de las condiciones necesarias para la existencia de un bloqueo no se produzca. 1. los procesos tienen que compartir recursos con exclusin mutua: o No se de a un proceso directamente acceso exclusivo al recurso, si no se usa otro proceso que realiza el trabajo de todos los dems manejando una cola de tareas (por ejemplo, un demonio para imprimir con su cola de documentos por imprimir). 2. los procesos quieren acceder a un recurso ms mientras ya tienen acceso exclusivo a otro: o Se exige que un proceso pida todos los recursos que va a utilizar al comienzo de su trabajo 3. los recursos no permiten ser usados por ms de un proceso al mismo tiempo: o Se permite que un proceso aborte a otro proceso con el fin de obtener acceso exclusivo al recurso. Hay que tener cuidado de no caer en livelock 4. existe una cadena circular entre peticiones de procesos y alocacin de recursos: o Se ordenan los recursos lnealmente y se fuerza a los procesos que accedan a los recursos en el orden impuesto. As es imposible que se produzca un ciclo. En las prcticas aplicamos dicho mtodo para prevenir bloqueos en la lista concurrente.
http://trevinca.ei.uvigo.es/~formella/doc/cd04/node71.html Prevencin de Deadlocks

La estrategia consiste en anular alguna de las cuatro condiciones necesarias para que se produzca un Deadlock. 1. No puede ser anulada porque existen recursos que deben ser usados en modalidad exclusiva. 2. La alternativa sera hacer que todos los procesos solicitaran todos los recursos que habrn de utilizar antes de utilizarlos al momento de su ejecucin lo cual sera muy ineficiente. 3. Para anular esta condicin cuando un proceso solicita un recurso y este es negado el proceso deber liberar sus recursos y solicitarlos nuevamente con los recursos adicionales. El problema es que hay recursos que no pueden ser interrumpidos. 4. Espera Circular: esta estrategia consiste en que el sistema operativo numere en forma exclusiva los recursos y obligue a los procesos a solicitar recursos en forma ascendente. El problema de esto es que quita posibilidades a la aplicacin.

Prevencin de deadlock

Deadlock no puede occurir a menos que tenemos todas las cuatro condiciones. Si aseguramos que no puede occurir por lo menos una de las condiciones, no podemos tener deadlock. Exclusin mutua. En general, no podemos eliminar esta condicin. Hay recursos como impresoras que no son compartibles. Retencin y espera. Para no occurir esta condicin, cuando un proceso solicita recursos, no puede retener otros. Protocolos: o Un proceso puede solicitar recursos solamente si no tiene ningunos. o Un proceso tiene que solicitar todos los recursos antes de la ejecucin. Problemas: La utilizacin de recursos puede ser baja. Starvation (bloqueo indefinido) si se necesitan algunos recursos populares. No apropiacin. Si un proceso retiene varios recursos y solicita otro que no est disponible, se le expropian todos los recursos que retiene. El proceso tiene que recuperar todos los recursos antes de ejecutar otra vez.
o o

Pero en general no podemos exproprian recursos como impresoras y grabadores.

Espera circular. Hacemos una ordenacin de los tipos de recursos en el sistema (R1, R2, ...). Un proceso tiene que solicitar sus recursos en orden (y todos los ejemplares de un tipo al mismo tiempo). Si necesita un tipo de recurso ms baja en la ordenacin, tiene que liberar los otros que retiene. Problemas con la prevencin de deadlock: Utilizacin baja de recursos y reduccin de la productividad del sistema.

http://www.cs.virginia.edu/~knabe/iic2332/notes07.html

Evitar
El sistema no da permiso de acceso a recursos si es posible que el proceso se bloquee en el futuro. Un mtodo es el algoritmo del banquero (Dijkstra) que es un algoritmo centralizado y por eso posiblemente no muy practicable en muchas situaciones. Se garantiza que todos los procesos actuan de la siguiente manera en dos fases: 1. primero se obtiene todos los cerrojos necesarios para realizar una tarea, eso se realiza solamente si se puede obtener todos a la vez, 2. despues se realiza la tarea durante la cual posiblemente se liberan recursos que no son necesarias. Ejemplo:

Asumimos que tengamos 3 procesos que actuan con varios recursos. El sistema dispone de 12 recursos. proceso recursos pedidos recursos reservados A B C suma 4 6 8 18 1 4 5 10

es decir, de los 12 recursos disponibles ya 10 estn ocupados. La nica forma que se puede proceder es dar el acceso a los restantes 2 recursos al proceso B. Cuando B haya terminado va a liberar sus 6 recursos que incluso pueden estar distribuidos entre A y C, as que ambos tambin pueden realizar su trabajo. Con un argumento de induccin se verifica fcilmente que nunca se llega a ningn bloqueo. http://trevinca.ei.uvigo.es/~formella/doc/cd04/node70.html Evitacin. Un mtodo para evitar los Dead Lock`s consiste en requerir informacin adicional sobre cmo se solicitarn los recursos. Por ejemplo en un sistema con una unidad de cinta y una impresora, podramos saber que el proceso P solicitar primero la unidad de cinta y luego la impresora, antes de liberar ambos recursos. El proceso Q, por otra parte, solicitar primero la impresora y despus la unidad de cinta. Con este conocimiento de la secuencia completa de la solicitud y liberacin para cada proceso para cada solicitud requiere que el sistema considera los recursos disponibles en ese momento, los actualmente asignados a cada proceso y las futuras solicitudes y liberaciones de cada proceso para decidir si puede satisfacer la solicitud presente o debe esperar para evitar un posible dead lock futuro. Los diversos algoritmos difieren en la cantidad y tipo de informacin que requieren. El modelo ms sencillo y til requiere que cada proceso declare el nmero mximo de recursos de cada tipo que puede necesitar. Con informacin a priori para cada proceso es posible construir un algoritmo que asegure que el sistema nunca entrar en estado de dead lock. Este algoritmo define la estrategia de evitacin de dead lock`s. El estado de asignacin de recursos viene definido por el nmero de recursos disponibles y asignados, y por la demanda mxima de los procesos. Un estado es seguro si el sistema puede

asignar recursos a cada proceso (hasta el mximo) siguiendo algn orden u aun as evitar el dead lock. Ms formalmente, un sistema se encuentra en estado seguro slo si existe una secuencia segura. Si no existe esta secuencia, se dice que el estado del sistema es inseguro. Un estado seguro no es un estado de dead lock, y un estado de dead lock es un estado inseguro; pero no todos los estados inseguros son dead lock`s. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_315.html

2.10.3.2 Deteccin.

Detectar y actuar
Se implementa un proceso adicional que vigila si los dems forman una cadena circular. Ms preciso, se define el grafo de asignacin de recursos:

Los procesos y los recursos representan los nodos de un grafo. Se aade cada vez una arista entre un nodo tipo recurso y un nodo tipo proceso cuando el proceso ha obtenido acceso exclusivo al recurso. Se aade cada vez una arista entre un nodo tipo recurso y un nodo tipo proceso cuando el proceso est pidiendo acceso exclusivo al recurso. Se eliminan las aristas entre proceso y recurso y al revs cuando el proceso ya no usa el recurso.

Cuando se detecta en el grafo resultante un ciclo, es decir, cuando ya no forma un grafo acclico, se ha producido una posible situacin de un bloqueo. Se puede reaccionar de dos maneras si se ha encontrado un ciclo:

No se da permiso al ltimo proceso de obtener el recurso. S se da permiso, pero una vez detectado el ciclo se aborta todos o algunos de los procesos involucrados.

Sin embargo, las tcnicas pueden dar como resultado que el programa no avance, incluso, el programa se puede quedar atrapado haciendo trabajo intil: crear situaciones de bloqueo y abortar procesos continuamente.
http://trevinca.ei.uvigo.es/~formella/doc/cd04/node69.html

Deteccin y Recuperacin de Deadlocks Algoritmos de Deteccin de Deadlock

1. Cuando hay una nica ocurrencia de cada recurso. (variante del grafo de "wait for graph"). Consiste en reducir el grafo, retirando las aristas que van de recursos a procesos y de procesos a recursos, colocando nuevas aristas que reflejan la situacin de espera entre procesos. Si el grafo reducido tiene ciclos el sistema esta en Deadlock. Orden de operaciones = n^2 , n = cantidad de aristas. 2. Cuando hay mltiples ocurrencias de cada recurso Procedure detecta_deadlock var Disponible:array[1..n] of integer //# de recursos Usados:array[1..n] of integer Solicitados:array[1..n] of integer Finalizado:array[1..n] of boolean Begin Work:=Disponibles; For i:=1..n do if(usados[i]0) then finish[i]:=false Else finish[i]:=true; While(encontrar_indice_i = true) do { Work:=work + usados[i]; Finish[i]:=true; } If ((finish[i] = false) para algun i), 1in then El sistema esta en Deadlock. End Function encontrar_indice_i : Boolean Begin If (existe i tal que (Finish[i]=false && solicitados[i] work) Then -> true Else -> false End

Deteccin de deadlock

La evitacon de deadlock tiene un costo porque todos los estados inseguros no son estados de deadlock. Esto implica que hay tiempos cuando algunos procesos tienen que esperar y recursos estn desocupados sin que es necesario. El sistema operativo puede chequear de vez en cuando si hay un deadlock. Cun frecuentemente debieramos chequear si hay deadlock? o El costo de algoritmo vs. el nmero de procesos en deadlock. o Saber quien cre el deadlock. o Cuando la utilizacin de la CPU es baja. Tenemos que eliminar los deadlocks que encontramos. Posibilidades: o Abortar todos los procesos en deadlock. Esto es un mtodo comn! o Abortar procesos uno a la vez hasta que no haya deadlock. o Retroceder los procesos a algn punto y reiniciar. El deadlock puede reocurrir. o Expropiar recursos de procesos hasta que no haya deadlock. Retrocedemos los procesos expropiados. Tenemos que seleccionar un proceso para abortar o retroceder. Factores: o La prioridad o El tiempo que el proceso ha corrido o El nmero y tipo de los recursos adquiridos o La clase de proceso (batch o interactiva) La starvation es un problema.

http://www.cs.virginia.edu/~knabe/iic2332/notes09.html
Deteccin y Recuperacin.
Es el hecho de determinar si existe o no un Dead Lock, e identificar cuales son los procesos y recursos implicados en l. El uso de algoritmos de deteccin de interbloqueo implica una sobrecarga en el tiempo de ejecucin. Para ser correcto, un algoritmo de deteccin de interbloqueo debe de cumplir dos criterios: 1) Debe detectar todos los dead locks existentes en un tiempo finito. 2) No debe reportar "falsos" Dead Lock's.

Grafo de asignacin de recursos.


Los Dead Lock pueden describirse con mayor precisin en funcin de un grafo dirigido llamado grafo de asignacin de recursos, que consiste en un conjunto de vrtices V y aristas A. El conjunto de vrtices V se divide en dos tipos, P = {P1,P2, ... , Pn}, el conjunto formado por

todos los procesos del sistema, y R ={R1,R2, ... ,Rn}, el conjunto integrado por todos los tipos de recursos del sistema.

Representacin mediante grafos del estado del sistema.


El estado de un sistema es dinmico; esto es, los procesos del sistema toman y liberan recursos continuamente. La representacin del dead lock requiere la representacin del estado de la interaccin procesos - recursos, la representacin se hace mediante un grafo dirigido que se conoce como grfica de asignacin de recursos . En los sistemas de bases de datos distribuidos ( DDBS) est representacin se conoce como grfica de espera de transaccin (Transaction Wait-For TWF). Los dead lock`s pueden describirse con mayor precisin en funcin de un grafo dirigido llamado grafo de asignacin de recursos. La simbologia es la siguiente de acuerdo a las figura # 26. a, b, c y d.

Figura # 26. Grfica de asignacin y peticin de recursos

La tcnica para la reduccin de grficas implica las consideraciones siguientes: * Si las peticiones de recursos de un proceso piden ser concedidas, entonces la grfica puede ser reducida. La reduccin de una grfica consiste en retirar las flechas que van de los recursos a los procesos y retirar las flechas que van del proceso al recurso. Si una grfica puede ser reducida para todos sus procesos entonces no hay dead lock. Si una grfica no puede ser reducida para todos sus procesos, entonces los procesos irreducibles constituyen la serie de procesos interbloqueados de la grfica. Deteccin de interbloqueo mediante grafos.

* * * *

Un grafo G consiste de un conjunto finito no vaco. V = C(G) de: V(aristas). P puntos (vrtices) conjunto X de q parejas desordenadas de puntos de

cada par X = {U,V} de puntos en X y una lnea de G por lo tanto X = UV. Un grafo de p puntos y q lneas se denomina un grafo (p,q), el grafo (1,0) es trivial. Peticin = Proceso - Recurso Pi Rx Ry El proceso Pi tiene el recurso Rx y solicita el recurso Ry.

Para determinar si existe un ciclo en un grafo se puede usar la representacin matricial del grafo dirigido. Dado que se tienen parejas ordenadas {Rx, Ry}, la matriz se construye colocando un 1 en la diagonal en (x,x) y (y,y) y un 1 en la posicin (x,y) de la matriz. Ejemplo figura # 27.

Figura # 27. Representacin matricial del grafo. Reduccin de la matriz del grafo de la figura # 27 (b). Observe figura # 28.

Figura # 28. Reduccin de la matriz del grafo. Reduccin de la matriz de un grafo correspondiente. No existen vrtices terminales; los vrtices 1 y 2 son iniciales y pueden ser eliminados; existe un Inter bloqueo. Ejemplo, figura # 29. Grafo.

Figura # 29.

a) Representacin matricial

b) Reduccin de la matriz del grafo.

Representacin vectorial que solo almacena la informacin que presenta el grafo, de la figura # 29. Ejemplo figura # 30.

Figura # 30. Representacin vectorial Un vrtice terminal slo aparece en la columna requiere y un vrtice inicial slo aparece en la columna Tiene. Para reducir esta representacin se recorren de arriba a abajo los vectores y se buscan los vrtices terminales e iniciales y se elimina su rengln. El proceso se repite hasta: 1) No existen renglones o 2) No se pueden eliminar renglones. Si no se pueden eliminar renglones las transiciones producen un Dead Lock. Para el grafo de la (figura # 30 (a) ) en el primer paso se eliminan los procesos P1 (vrtice inicial), P2 y P3 (vrtice terminal). En el segundo paso se elimina el proceso P4 (vrtice terminal), inicial. Para el grafo de la (figura # 30 (b)) el primero se eliminan los procesos P1,P2,P3 (vrtices iniciales), P4(vrtice inicial al eliminar el proceso P1), Los procesos restantes no pueden ser eliminados, por lo tanto existe un dead lock. El resultado de la reduccin es, observe figura # 31.

Figura # 31. Reduccin del vector del grafo.

2.10.3.3 Recuperacin.
Recuperacin ante Deadlocks

1. Cancelacin de procesos a. Cancelacin de todos los procesos involucrados. Esto resuelve la situacin de Deadlock pero tiene un costo muy alto de reprocesamiento. b. Cancelacion de un proceso por vez hasta resolver la situacin de Deadlock. La ventaja de esto es que el costo de reprosesamiento de la informacin es menor pero cada vez que se cancela un proceso debe ejecutarse el algoritmo de deteccin de deadlock. Los criterios para elegir el candidato a ser cancelado son: por prioridad, por tiempo de uso de CPU, por cantidad de recursos utilizados y por cuantos recursos adicionales habr de utilizar. 2. Obtencin de recursos (resourse Preemption). El sistema operativo selecciona un proceso y le quita los recursos otorgados. Los criterios para seleccionar el candidato son los mismos que para la cancelacin. El proceso seleccionado se le quitan los recursos y se le lleva a un estado consistente (Rollback).

Recuperacin de un Dead Lock.


La nica forma en que el sistema operativo puede recuperarse de un interbloqueo es retirando uno o ms procesos y reclamar sus recursos para que otros procesos puedan terminar. Normalmente varios procesos perdern una parte o la totalidad del trabajo realizado hasta ese momento. Este puede parecer un precio pequeo comparado con dejar que el interbloqueo se complique por varios factores. * * * En primer lugar, puede no estar claro que el sistema este bloqueado o no. Muchos sistemas tienen medios pobres para suspender un proceso por tiempo indefinido y reanudarlo ms tarde. An cuando existan medios efectivos de suspensin /reanudacin, con toda seguridad, estos implicarn una sobrecarga, considerable y pueden requerir la atencin de un operador altamente calificado. No siempre se dispone de tales operadores. Recuperarse de un interbloqueo de proporciones modestas puede suponer una cantidad razonable de trabajo.

Una forma de elegir los procesos que pueden ser retirados es de acuerdo a las prioridades de los procesos. Pero esto tambin tiene sus dificultades. * Las prioridades de los procesos bloqueados pueden no existir, as que el operador deber tomar una decisin arbitraria.

* *

Las prioridades pueden ser incorrectas, o un poco confusas debido a consideraciones especiales. La decisin ptima de cules procesos retirar pueden requerir de un esfuerzo considerable para determinarla.

El enfoque ms deseable a la recuperacin del Dead Lock estn un mecanismo efectivo de Suspensin / reanudacin. Esto permitir detener temporalmente los procesos y despus reanudarlos sin prdida del trabajo. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_316.html

MECANISMOS PARA EVITARLOS.


Havender lleg a la conclusin de que si no se cumple una de las cuatro condiciones necesarias para el interbloqueo es posible que ste ocurra. Para evitarlo sugiri: * * Cada proceso deber pedir todos los recursos requeridos de una sola vez y no podr proceder hasta que le hayan sido asignados todos. Si un proceso que mantiene ciertos recursos se le niega una nueva peticin, este proceso deber liberar sus recursos originales y en caso necesario pedirlos de nuevo con los recursos adicionales. Se impondr la ordenacin lineal de los tipos de recursos en todos los procesos, es decir, si a un proceso le han sido asignados recursos de un tipo dado, en lo sucesivo slo podr pedir aquellos recursos de los tipos que siguen en el ordenamiento.

Otra alternativa, para manejar los dead lock, es tener informacin acerca de como los recursos se van a requerir, el modelo ms simple y ms til requiere que en cada proceso declare el mximo nmero de recursos que van a requerir con lo cual es posible construir un algoritmo que asegure que el sistema no entrara en dead lock. Un estado es seguro si el sistema puede asignar recursos a cada proceso en algn orden evitando el dead lock. Formalmente un sistema esta en estado seguro solamente si existe una secuencia segura. Una secuencia de procesos < P1, P2, ... Pn> esta en secuencia segura si para cada Pi, los recursos que Pi pueda requerir pueden ser satisfechos por los recursos disponibles ms los

recursos que tuvieron los Pj donde j < i. Si no se puede satisfacer Pi entonces Pi espera hasta que los Pj terminen. Cuando Pi termine Pi+1 puede obtener sus recursos y as sucesivamente. Ejemplo, figura # 32. Se tienen 12 unidades de cinta se tiene 3 procesos Ese sistema esta en estado seguro o no?.

Figura # 32.

Requerimiento procesos - recursos.

Requerimiento mximo - Necesidad actual = Necesidad ms (Disponible). Se tiene 12 recursos por lo tanto 12-9 = 3, entonces la secuencia es segura. La secuencia segura es < P1,P0,P2> Haga una situacin en la cual el sistema estara es estado inseguro. Un estado seguro esta libre de dead lock y un estado de dead lock, es un estado inseguro pero no todos los estados inseguros producen dead lock. Si se esta en un estado seguro se puede pasar a un estado inseguro. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_317.html

Estrategias para evitarlos.


Evitacin del interbloqueo y el algoritmo de Dijkstra. Si las condiciones necesarias para que tenga lugar un interbloqueo estn en su lugar, an es posible evitar el interbloqueo teniendo cuidado al asignar los recursos. El algoritmo de planificacin que pueda evitar los interbloqueos fue ideado por Dijkstra (1965) y se le conoce como algoritmo del banquero. En ese algoritmo se modela la forma en que un banquero puede tratar a un grupo de clientes a quienes les ha otorgado lneas de crdito. en la

(figura # 36 (a)) se observan cuatro clientes, a cada uno de los cuales se le ha otorgado cierto nmero de unidades de crdito. El banquero sabe que los clientes no necesitan su lmite de crdito mximo de inmediato, de manera que slo ha reservado 10 unidades en lugar de 22 para darles servicio. Los clientes emprenden sus respectivos negocios, haciendo solicitudes de prstamo de cuando en cuando. En cierto momento, la situacin es como la que se muestra en la ( figura # 33). A una lista de clientes que muestra el dinero que ya se present y el mximo del crdito disponible se le llama estado del sistema.

Figura # 33. Tres estados de asignacin de recursos (a) Seguro. (b) Seguro. (c) Inseguro. Un estado es seguro si existe una secuencia de estados que lleva a todos los clientes que obtienen prstamos hasta sus lmites de crdito. El estado de la ( figura #33 (b) ) es seguro por que con las dos restantes, el banquero puede demorar cualquier solicitud salvo la de Carlos, con lo que permite que termine y devuelva sus cuatro recursos. Con cuatro unidades, el banquero puede permitir que David o Brbara tengan las unidades que necesitan para terminar y as sucesivamente. Si estando en el estado de la ( figura #33 (b) ) se le otorga una unidad ms a Brbara, (Figura #33 (c) ), el banquero no podr completar ninguna de la lnea de crdito de su clientes. Un estado inseguro no tiene que conducir a un interbloqueo, ya que un cliente podra no necesitar su lnea de crdito disponible, pero el banquero no puede confiar en ese comportamiento. Haciendo una analoga con un Sistema Operativo tenemos: El estado actual del sistema se denomina seguro, Si el Sistema Operativo puede permitir a los usuarios actuales completar sus trabajos en un intervalo de tiempo finito. De lo contrario se le denomina inseguro. En otras

palabras: Un estado seguro es aquel en el cual la asignacin de recursos es tal que los usuarios pueden llegar a terminar. Un estado seguro es aquel que puede llegar a terminar. Un estado inseguro es aquel que puede llegar a un dead lock, (nunca termina). La asignacin de recursos por el algoritmo del banquero es la siguiente: * * * Se permite todas las condiciones de exclusin mutua, espera por y no apropiatividad. Se permite a los procesos mantener sus recursos mientras esperan por otros. El sistema slo concede peticiones que den como resultado estados seguros.

* El algoritmo del banquero para n recursos (de Dijkstra). Sea n un nmero de proceso y m un nmero de recurso y sea disponible un vector de longitud m que indica el nmero de recursos disponibles y sea mxima una matriz de ( n x m) que define la mxima demanda de cada proceso as por ejemplo si tuviramos mxima ( i,j ) = k define los recursos asignados a cada proceso, por ejemplo la asignacin ( i , j ) = k quiere decir que el proceso i tiene asignado K instancias del recurso j necesidades ( n * m ), que indica los recursos que requieren los procesos. Necesidades ( i , j ) = Mxima ( i , j ) - Asignacin ( i , j ). Se puede considera cada rengln de las matrices asignacin y necesidades como vectores y referirnos como asignacin de i y necesidades de i.

Algoritmo: Sea requerimiento de i un vector de requerimientos de proceso i. Cuando un requerimiento de un recurso es hecho por el proceso i se realizaran las siguientes acciones: 1).2).3).Si Requerimiento de i <= Necesidades de i ir al segundo paso. Sino error. Si requerimiento de i <= disponible ir al tercer paso. Si no recurso no disponible Pi debe esperar. Hacer Disponible = Disponible - Requerimiento, Asignacin = Asignacin + Requerimiento, Necesidades = Necesidades - Requerimiento.

Si el estado es seguro se completa la transaccin de lo contrario el proceso debe esperar y el estado anterior es restablecido. Algoritmo para ver si el estado es seguro. Sea trabajo (m) y final (n) vectores de longitud m y n respectivamente, hacer Trabajo = Disponible y final ( i ) = falso para i = 1,...n 1).2).3).Encuentre una i tal que final ( i ) de i = falso y Necesidades ( i ) <= Trabajo si no existe ir al punto tres. Trabajo = Trabajo + Asignacin ( i ), Final ( i ) = verdad ir al paso uno. Si final ( i) = verdad para toda i entonces el sistema esta en estado seguro de lo contrario esta en estado inseguro.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_318.html

2.11

Niveles, objetivos y criterios de planificacin.

Uno de los mdulos ms importantes de un sistema operativo es la de administrar los procesos y tareas del sistema de cmputo. En esta seccin se revisarn dos temas que componen o conciernen a este mdulo: la planificacin del procesador y los problemas de concurrencia. Planificacin del procesador La planificacin del procesador se refiere a la manera o tcnicas que se usan para decidir cunto tiempo de ejecucin y cuando se le asignan a cada proceso del sistema. Obviamente, si el sistema es monousuario y monotarea nohay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema. Niveles de planificacin En los sistemas de planificacin generalmente se identifican tres niveles: el alto, em medio y el bajo. El nivel alto decide que trabajos (conjunto de procesos) son candidatos a convertirse en procesos compitiendo por los recursos del sistema; el nivel intermedio decide que procesos se suspenden o reanudan para lograr ciertas metas de rendimiento mientras que el planificador de bajo nivel es el que decide que proceso, de los que ya estn listos (y que en algn momento paso por los otros dos planificadores) es al que le toca ahora estar ejecutndose en la unidad central de procesamiento. En este trabajo se revisaran principalmente los planificadores de bajo nivel porque son los que finalmente eligen al proceso en ejecucin. Objetivos de la planificacin Una estrategia de planificacin debe buscar que los procesos obtengan sus turnos de ejecucin apropiadamente, conjuntamente con un buen rendimiento y minimizacin de la sobrecarga (overhead) del planificador mismo. En general, se buscan cinco objetivos principales: Justicia o Imparcialidad: Todos los procesos son tratados de la misma forma, y en algn momento obtienen su turno de ejecucin o intervalos de tiempo de ejecucin hasta su terminacin exitosa.

Maximizar la Produccin: El sistema debe de finalizar el mayor numero de procesos en por unidad de tiempo. Maximizar el Tiempo de Respuesta: Cada usuario o proceso debe observar que el sistema les responde consistentemente a sus requerimientos. Evitar el aplazamiento indefinido: Los procesos deben terminar en un plazo finito de tiempo. El sistema debe ser predecible: Ante cargas de trabajo ligeras el sistema debe responder rpido y con cargas pesadas debe ir degradndose paulatinamente. Otro punto de vista de esto es que si se ejecuta el mismo proceso en cargas similares de todo el sistema, la respuesta en todos los casos debe ser similar. Caractersticas a considerar de los procesos

No todos los equipos de cmputo procesan el mismo tipo de trabajos, y un algoritmo de planificacin que en un sistema funciona excelente puede dar un rendimiento psimo en otro cuyos procesos tienen caractersticas diferentes. Estas caractersticas pueden ser: Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida (aplicaciones de bases de datos, por ejemplo). Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones de entrada y salida, sino que usan intensivamente la unidad central de procesamiento. Por ejemplo, operaciones con matrices. Procesos de Lote o Interactivos: Un proceso de lote es ms eficiente en cuanto a la lectura de datos, ya que generalmente lo hace de archivos, mientras que un programa interactivo espera mucho tiempo (no es lo mismo el tiempo de lectura de un archivo que la velocidad en que una persona teclea datos) por las respuestas de los usuarios. Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecucin. Longevidad de los Procesos: Existen procesos que tipicamente requeriran varias horas para finalizar su labor, mientras que existen otros que solonecesitan algunos segundos. Planificacin apropiativa o no apropiativa (preemptive or not preemptive) La planificacin apropiativa es aquella en la cual, una vez que a un proceso le toca su turno de ejecucin ya no puede ser suspendido, ya no se le puede arrebatar la unidad central de procesamiento. Este esquema puede ser peligroso, ya que si el proceso contiene accidental o deliberadamente ciclos infinitos, el resto de los procesos pueden quedar aplazados indefinidamente. Una planificacin no apropiativa es aquella en que existe un reloj que lanza interrupciones periodicas en las cuales el planificador toma el control y se decide si el mismo proceso seguir ejecutndose o se le da su turno a otro proceso. Este mismo reloj puede servir para lanzar procesos manejados por el reloj del sistema. Por ejemplo en los sistemas UNIX existen los 'cronjobs' y 'atjobs', los cuales se programan en base a la hora, minuto, da del mes, da de la semana y da del ao. En una planificacin no apropiativa, un trabajo muy grande aplaza mucho a uno pequeo, y si entra un proceso de alta prioridad est tambin debe esperar a que termine el proceso actual en ejecucin.

Planificacin de procesos La planificacin es el proceso por el cual el sistema operativo selecciona que proceso ejecutar. La seleccin del proceso se basa en alguno de los algoritmos de planificacin que se describen ms abajo. Expulsin Es la caracterstica por el cual el sistema operativo puede o no expulsar del estado de ejecucin a un proceso dado. En este sentido entonces tenemos la planificacin apropiativa en la cual el sistema

operativo puede cortar en cualquier momento la ejecucin de un proceso y la planificacin no apropiativa en la cual una vez que el proceso esta en ejecucin el sistema operativo no puede sacarlo de ese estado. Objetivos de la planificacin Los objetivos de la planificacin de proceso son: Equidad, todos los procesos deben poder ejecutarse Eficacia, mantener ocupada la CPU un 100% del tiempo Tiempo de respuesta, minimizar el tiempo de respuesta al usuario Tiempo de regreso, minimizar el tiempo que deben esperar los usuarios por lotes para obtener sus resultados Rendimiento, maximizar el nmero de tareas procesadas por hora. Algoritmos de planificacin Los algoritmos de planificacin son los que definen que poltica se va a seguir para que un proceso pase al estado de ejecucin. Planificacin Round-Robin En este tipo de planificacin cada proceso tiene asignado un quantum de tiempo para ejecutarse y en el caso de que no pueda terminar la ejecucin en su quantum el proceso pasa de nuevo a la cola de procesos para ser ejecutado por otro quantum luego de recorrer la cola para asegurarse que todos los procesos reciban ese quantum de procesamiento. Planificacin por prioridad En la planificacin round-robin todos los procesos son tratados con la misma prioridad. Para el caso de este tipo de planificacin a cada proceso se le asigna una prioridad y los mismos son ejecutados Colas mltiples Las colas mltiples estn basadas en una pila que sirve como ndice de una lista de procesos que se tienen que ejecutar. Primero el trabajo ms corto Este tipo de algoritmo de planificacin se usa para trabajos en batch o de procesamiento or lotes en los cuales se puede saber cual es el tiempo de duracin de la ejecucin de cada proceso y entonces se puede seleccionar primero el trabajo ms corto. El problema que se presenta con ste algoritmo es que los grandes procesos podran sufrir de inanicin dado que cualquier proceso pequeo se "cuela" sobre uno de mayor tamao y como resultado final se podra dar el caso que el proceso grande nunca obtenga procesamiento. Planificacin garantizada En este modelo de planificacin se tiene en cuenta la cantidad de usuarios en el sistema y se le asigna a cada uno el tiempo de ejecucin de 1/n (siendo n la cantidad total de usuarios) de esa forma el planificador tiene que llevar cuenta del tiempo de ejecucin de los procesos y balancear el tiempo que estn utilizando el procesador para cumplir con la ecuacin previa.

Conceptos de planificacin.
El objetivo de la multiprogramacin es que en todo momento se ejecute un proceso para maximizar la utilizacin del CPU. En un sistema monoprocesador nunca habr ms de un proceso en ejecucin. Si hay ms procesos tendrn que esperar a que el CPU est libre y pueda volver a planificarse. El concepto de multiprogramacin es muy sencillo: un proceso se ejecuta hasta que tenga que esperar, generalmente a que termine una solicitud de E/S. En un sistema de computo sencillo, el CPU permanecer inactivo; todo este tiempo de espera se desperdicia sin efectuar una actividad til. Con la multiprogramacin tratamos de emplear productivamente este tiempo. Varios procesos se conservan en la memoria a la vez, y cuando uno de ellos tiene que esperar, el sistema operativo le quita el CPU al proceso y se lo da a otro; este modelo contina, Cada vez que un proceso tiene que esperar, otro pueda utilizar el CPU. Los beneficios de la multiprogramacin son un aumento de la utilizacin del CPU y una mayor productividad.
http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_415.html

Planificacin del CPU


La planificacin es una funcin fundamental del sistema operativo. Casi todos los recursos de una computadora se planifican antes de usarse. Por supuesto, el CPU es una de los principales

Recursos de la computadora, de modo que su planificacin es parte modular del diseo de los sistemas operativos.

- Ciclo de rfaga del CPU y de E/S. El xito de la planificacin del CPU depende de la siguiente prioridad observada de los procesos: la ejecucin de un proceso consiste en un ciclo de ejecucindel CPU y de E/S, y los procesos se alternan entre estos dos estados. La ejecucin del proceso se inicia con una rafaga de CPU; a sta le siguen una rfaga de E/S, otra rfaga de CPU, una ms de E/S, etc. Finalmente, la

ltima rfaga de CPU terminar con una solicitud al sistema para que concluya la ejecucin, en vez de otra rfaga de E/S. Las duraciones de estas rfagas de CPU se han medido, y, aunque varan considerablemente de un proceso a otro y entre computadoras, tienden a presentar una curva de frecuencias similar a la que se muestra en la figura # 41. Generalmente la curva se caracteriza como exponencial o hiperhexponencial. Hay un gran nmero de rfagas de CPU de corta duracin y un pequeo nmero de larga duracin.

Figura # 41. Histograma de tiempos de rfaga del CPU.

- Planificador del CPU.


Siempre que el CPU queda inactivo, el sistema operativo debe seleccionar para su ejecucin uno de sus procesos de la cola de procesos listos. El proceso de seleccin es revisado por el planificador a corto plazo. (o planificador del CPU). El planificador selecciona uno de los procesos en memoria que estn listos para ejecucin y le asigna el CPU.

- Estructura de planificacin.
Las decisiones de planificacin del CPU pueden efectuarse en una de las cuatro circunstancias siguientes: 1. Cuando un proceso cambia del estado de ejecucin a estado de espera (por ejemplo, solicitud de E/S peticin de esperar la terminacin de uno de los procesos hijo).

2. 3. 4.

Cuando un proceso cambia del estado de ejecucin al estado listo (por ejemplo, cuando ocurre una interrupcin) Cuando un proceso cambia del estado de espera al estado listo (por ejemplo, al completarse la E/S). Cuando termina un proceso.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_416.html

2.12

Tcnicas de administracin del planificador.

Algoritmos de planificacin. Planificacin a plazo fijo.


En la planificacin a plazo fijo, ciertos trabajos se planifican para ser terminados en un periodo especfico. Estos trabajos tienen un alto valor si se entregan a tiempo y pueden carecer de valor si se entregan despus del lmite. La planificacin a plazo fijo es compleja por muchas razones: * Los usuarios deben proporcionar por adelantado y en forma precisa las necesidades de recursos de su trabajo. Tal informacin rara vez est disponible. * El sistema debe ejecutar el programa de plazo fijo sin una severa degradacin de servicio para los otros usuarios. * El sistema debe planificar cuidadosamente las necesidades de recursos permitiendo un libre trnsito del plazo fijo. Esto puede ser difcil debido a la llegada de programas nuevos con demandas impredecibles. * Si se activan muchos trabajos de plazo fijo, la planificacin puede llegar a ser tan compleja que necesite mtodos de optimizacin sofisticados para asegurar que el plazo fijo se cumpla. * El manejo intenso de recursos requeridos por la planificacin de plazo fijo puede generar una sobrecarga sustancial. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_417.html

2.12.1

FIFO

Planificacin Primero en llegar - Primero en Salir (FIFO).


Es la disciplina ms simple, figura # 42. Los procedimientos son despachados de acuerdo al orden de llegada a la cola de listos. Una vez que un proceso tiene el CPU, se ejecuta hasta su terminacin. Esta planificacin es No apropiativa; es justa en el sentido formal, pero algo injusta porque los grandes procesos hacen esperar a trabajos pequeos y, los trabajos sin importancia hacen esperar a los trabajos importantes.

Figura # 42. Planificacin primero en llegar primero en salir. La Planificacin FIFO ofrece una varianza en tiempo de respuesta relativamente pequea y es, por tanto, ms predecible que otros esquemas; no es un esquema til en la planificacin de procesos interactivos porque no garantiza buenos tiempos de respuesta.

FIFO (Firs In First Out).-

Asocia a cada pgina el tiempo en que fue cargada en memoria. Cuando debe reemplazar una pgina, se selecciona la que hace mas tiempo que esta en memoria. Tambin se puede implementar mediante la utilizacin de una lista. Se reemplazan las pginas de la cabeza y se agregan al final.

Planificacin del Primero en Entrar Primero en Salir (FIFO) Es muy simple, los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos. Una vez que el proceso obtiene la cpu, se ejecuta hasta terminar, ya que es una disciplina no apropiativa. Puede ocasionar que procesos largos hagan esperar a procesos cortos y que procesos no importantes hagan esperar a procesos importantes. Es ms predecible que otros esquemas. No puede garantizar buenos tiempos de respuesta interactivos. Suele utilizarse integrado a otros esquemas, por ejemplo, de la siguiente manera:

Los procesos se despachan con algn esquema de prioridad. Los procesos con igual prioridad se despachan FIFO.

SCHED_FIFO: Planificacin FIFO (1 en entrar, 1 en salir).


SCHED_FIFO slo puede emplearse con prioridades estticas mayores que 0, lo que significa que cuando un proceso SCHED_FIFO se convierte en ejecutable, siempre prevalecer inmediatamente sobre cualquier otro proceso normal SCHED_OTHER ejecutndose. SCHED_FIFO es un simple algoritmo de planificacin sin rodajas de tiempo. Para procesos planificados bajo la poltica SCHED_FIFO, se aplican las siguientes reglas: Un proceso SCHED_FIFO que ha sido apropiado por otro proceso de mayor prioridad permanecer en la cabeza de la lista para su prioridad y reanudar su ejecucin tan pronto como todos los procesos de prioridad ms alta se bloqueen de nuevo. Cuando un proceso SCHED_FIFO llegue a ser ejecutable, se insertar al final de la lista para su prioridad. Una llamada a sched_setscheduler o a sched_setparam pondr el proceso SCHED_FIFO identificado por pid al final de la lista si era ejecutable. Un proceso que llame a sched_yield ser colocado al final de la lista. Ningn otro suceso mover un proceso planificado bajo la poltica SCHED_FIFO en la lista de espera de procesos ejecutables con igual prioridad esttica. Un proceso SCHED_FIFO se ejecuta hasta que es bloqueado por una peticin de E/S, hasta que sea apropiado por un proceso de ms alta prioridad, o hasta que llame a sched_yield.
http://www.hispafuentes.com/hf-doc/man/man2/sched_setscheduler.2.html

2.12.2

SJF

Planificacin del trabajo ms corto (SJF).


La disciplina del trabajo ms corto primero es NO apropiativa y en ella el trabajo o proceso con tiempo estimado de ejecucin hasta terminacin ms corto, es el siguiente en ser ejecutado. El SJF reduce el tiempo de espera de los procesos, sin embargo, tiene una varianza mayor (es decir, es menos predecible) que en FIFO, sobre todo para los trabajos largos. SJF favorece a los procesos cortos a costa de los procesos largos. Adems, selecciona los trabajos que sern atendidos y que dejarn el sistema lo antes posible. Esto ltimo traduce en listas de espera cortas. El SJF es NO apropiativo por lo que resulta de poca utilidad en ambientes de tiempo compartido. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_417.html Planificacin del Trabajo Ms Corto Primero (SJF) Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempo compartido.

El proceso en espera con el menor tiempo estimado de ejecucin hasta su terminacin es el siguiente en ejecutarse. Los tiempos promedio de espera son menores que con FIFO. Los tiempos de espera son menos predecibles que en FIFO. Favorece a los procesos cortos en detrimento de los largos. Tiende a reducir el nmero de procesos en espera y el nmero de procesos que esperan detrs de procesos largos. Requiere un conocimiento preciso del tiempo de ejecucin de un proceso, lo que generalmente se desconoce. Se pueden estimar los tiempos en base a series de valores anteriores. Planificacin del Tiempo Restante Ms Corto (SRT) Es la contraparte apropiativa del SJF. Es til en sistemas de tiempo compartido. El proceso con el tiempo estimado de ejecucin menor para nalizar es el siguiente en ser ejecutado. Un proceso en ejecucin puede ser apropiado por un nuevo proceso con un tiempo estimado de ejecucin menor. Tiene mayor sobrecarga que la planificacin SJF. Debe mantener un registro del tiempo de servicio transcurrido del proceso en ejecucin, lo que aumenta la sobrecarga. Los trabajos largos tienen un promedio y una varianza de los tiempos de espera an mayor que en SJF. La apropiacin de un proceso a punto de terminar por otro de menor duracin recin llegado podra significar un mayor tiempo de cambio de contexto (administracin del procesador) que el tiempo de finalizacin del primero. Al disearse los Sistemas Operativos se debe considerar cuidadosamente la sobrecarga de los mecanismos de administracin de recursos comparndola con los beneficios esperados. Planificacin el Siguiente con Relacin de Respuesta Mxima (HRN)

Corrige algunas de las debilidades del SJF, tales como el exceso de perjuicio hacia los procesos (trabajos) largos y el exceso de favoritismo hacia los nuevos trabajos cortos. Es una disciplina no apropiativa. La prioridad de cada proceso est en funcin no slo del tiempo de servicio del trabajo, sino que tambin influye la cantidad de tiempo que el trabajo ha estado esperando ser servido. Cuando un proceso ha obtenido la cpu, corre hasta terminar. Las prioridades, que son dinmicas, se calculan segn la siguiente frmula, donde pr es la prioridad, te es el tiempo de espera y ts es el tiempo de servicio:

Planificacin del tiempo restante ms corto primero (SRT).


La SRT es apropiativa, en ella el proceso con el tiempo estimado de ejecucin menor para llegar a su terminacin es el siguiente en ser ejecutado, incluyendo las nuevas llegadas. En la disciplina SJF, una vez que el trabajo comienza su ejecucin sigue hasta que termina. En SRT, un proceso en ejecucin puede ser apropiado por un nuevo proceso con n tiempo estimado de ejecucin menor. La SRT tiene una sobrecarga mayor que la SJF. Debe mantener un registro del tiempo de servicio transcurrido del trabajo en ejecucin y debe controlar las apropiaciones ocasionales.

Planificacin el siguiente con relacin de respuesta mxima (HRT).


Brinch Hansen (1971) desarroll la estrategia el siguiente con relacin de respuesta mxima (HRT), que corrige algunas de las debilidades de SJF, en especial el favoritismo por los tamaos pequeos. La HRT es una disciplina de planificacin NO apropiativa en la cual la prioridad de cada trabajo est en funcin, no slo del tiempo de servicio del trabajo, sino del

tiempo que un proceso ha estado esperando a ser servido, Una vez que un trabajo obtiene el CPU, se ejecuta hasta su terminacin. Las prioridades dinmicas en HRT se calculan segn la frmula Tiempo de espera + Tiempo de servicio Prioridad = Tiempo de servicio http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_417.html

2.12.3

RR

Planificacin Round Robin (RR).


En esta planificacin, figura # 43. Los procesos son despachados en FIFO, pero, se les otorga una cantidad limitada de tiempo de CPU llamada divisin de tiempo (time - slice) o cuanto (quantum). Si un proceso no termina antes de que se termine su tiempo de CPU, el CPU es apropiado y asignado al siguiente proceso en espera. El proceso apropiado se coloca al final de la lista de listos.

Figura # 43. Planeacin round robin. El esquema Round robin es efectivo en un ambiente de tiempo compartido en el cual el sistema necesita garantizar un tiempo de respuesta razonable para los usuarios interactivos. La sobre carga de la apropiacin se mantiene baja mediante eficientes mecanismos de cambio de contexto y proporcionado suficiente memoria para que los procesos residan en ella al mismo tiempo. Existe una variante de este esquema llamada selfish round robin (SRR). En este esquema los procesos que entran al sistema se colocan primero en una lista de espera hasta que su prioridad alcanza el nivel de proceso para la lista de activos. Mientras un proceso est en la lista

de espera, su prioridad aumenta en una relacin a; cuando un proceso entra a la lista de activos su prioridad se incrementa en una relacin b.

Tamao del cuanto.


La determinacin del tamao del cuanto es decisiva para la operacin efectiva de un sistema computacional. Debe ser pequeo o grande el cuanto? Debe ser fijo o variable? Debe ser el mismo para todos los usuarios, o debe ser diferente para cada grupo de usuarios?. Cuando se tiene un cuanto grande cada proceso pude recibir todo el tiempo que necesita para su terminacin, de manera que el esquema round robin se convierte en un FIFO. Cuando el cuanto es pequeo, la sobrecarga por el intercambio de contexto se convierte en un factor dominante y el rendimiento del sistema se degrada. Cul es el cuanto ptimo ? Es claro que cambia de un sistema a otro y que varia de acuerdo a la carga del sistema. http://eduadis.itlapiedad.edu.mx/~hocegueras/so1/so1_417.html

SCHED_RR: Planificacin circular (Round Robin).


SCHED_RR es una mejora simple de SCHED_FIFO. Todo lo descrito arriba para SCHED_FIFO se aplica tambin a SCHED_RR, excepto que a cada proceso slo se le permite ejecutarse durante un cuanto de tiempo mximo. Si un proceso SCHED_RR ha estado ejecutndose durante un periodo de tiempo igual o mayor que el cuanto de tiempo, ser puesto al final de la lista para su prioridad. Un proceso SCHED_RR que ha sido apropiado por un proceso de ms alta prioridad y subsecuentemente reanuda su ejecucin como un proceso en ejecucin, completar la porcin no expirada de su cuanto de tiempo de asignacin en rueda. La cantidad del cuanto de tiempo puede ser obtenida con sched_rr_get_interval. http://www.hispafuentes.com/hf-doc/man/man2/sched_setscheduler.2.html Planificacin de Asignacin en Rueda (RR: Round Robin) Los procesos se despachan en FIFO y disponen de una cantidad limitada de tiempo de cpu, llamada divisin de tiempo o cuanto. Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientes acciones: 1. La cpu es apropiada. 2. La cpu es otorgada al siguiente proceso en espera. 3. El proceso apropiado es situado al final de la lista de listos.

Es efectiva en ambientes de tiempo compartido. La sobrecarga de la apropiacin se mantiene baja mediante mecanismos eficientes de intercambio de contexto y con suficiente memoria principal para los procesos. Tamao del Cuanto o Quantum La determinacin del tamao del cuanto es decisiva para la operacin efectiva de un sistema computacional [7, Deitel]. Los interrogantes son: cuanto pequeo o grande?, cuanto fijo o variable? y cuanto igual para todos los procesos de usuarios o determinado por separado para cada uno de ellos?. Si el cuanto se hace muy grande, cada proceso recibe todo el tiempo necesario para llegar a su terminacin, por lo cual la asignacin en rueda (RR) degenera en FIFO. Si el cuanto se hace muy pequeo, la sobrecarga del intercambio de contexto se convierte en un factor dominante y el rendimiento del sistema se degrada, puesto que la mayor parte del tiempo de cpu se invierte en el intercambio del procesador (cambio de contexto) y los procesos de usuario disponen de muy poco tiempo de cpu. El cuanto debe ser lo suficientemente grande como para permitir que la gran mayora de las peticiones interactivas requieran de menos tiempo que la duracin del cuanto, es decir que el tiempo transcurrido desde el otorgamiento de la cpu a un proceso hasta que genera una peticin de Entrada / Salida debe ser menor que el cuanto establecido, de esta forma, ocurrida la peticin la cpu pasa a otro proceso y como el cuanto es mayor que el tiempo transcurrido hasta la peticin de Entrada / Salida, los procesos trabajan al mximo de velocidad, se minimiza la sobrecarga de apropiacin y se maximiza la utilizacin de la Entrada / Salida. El cuanto ptimo vara de un sistema a otro y con la carga, siendo un valor de referencia 100 mseg (cien milisegundos).

2.12.4

Queves multi-level.

Planificacin de Dos Niveles Los esquemas analizados hasta ahora suponen que todos los procesos ejecutables estn en la memoria principal. Si la memoria principal es insuficiente, ocurrir lo siguiente [23, Tanenbaum]:

Habr procesos ejecutables que se mantengan en disco. Habr importantes implicaciones para la planificacin, tales como las siguientes:

El tiempo de alternancia entre procesos para traer y procesar un proceso del disco es considerablemente mayor que el tiempo para un proceso que ya est en la memoria principal. Es ms eficiente el intercambio de los procesos con un planificador de dos niveles.

El esquema operativo de un planificador de dos niveles es como sigue: 1. Se carga en la memoria principal cierto subconjunto de los procesos ejecutables. 2. El planificador se restringe a ellos durante cierto tiempo. 3. Peridicamente se llama a un planificador de nivel superior para efectuar las siguientes tareas: 1. Eliminar de la memoria los procesos que hayan permanecido en ella el tiempo suficiente. 2. Cargar a memoria los procesos que hayan estado en disco demasiado tiempo.

4. El planificador de nivel inferior se restringe de nuevo a los procesos ejecutables que se encuentren en la memoria. 5. El planificador de nivel superior se encarga de desplazar los procesos de memoria a disco y viceversa. Los criterios que podra utilizar el planificador de nivel superior para tomar sus decisiones son los que se indican a continuacin: Cunto tiempo ha transcurrido desde el ltimo intercambio del proceso?. Cunto tiempo de cpu ha utilizado recientemente el proceso?. Qu tan grande es el proceso? (generalmente los procesos pequeos no causan tantos problemas en este sentido). Qu tan alta es la prioridad del proceso?. El planificador de nivel superior podra utilizar cualquiera de los mtodos de planificacin analizados.

2.12.5

Multi-level feedback queves.

Colas de Retroalimentacin de Niveles Mltiples Proporcionan una estructura para lograr los siguientes objetivos:

Favorecer trabajos cortos. Favorecer trabajos limitados por la Entrada / Salida para optimizar el uso de los dispositivos de Entrada / Salida. Determinar la naturaleza de un trabajo lo ms rpido posible y planificar el trabajo (proceso) en consecuencia.

Un nuevo proceso entra en la red de lnea de espera al final de la cola superior. Se mueve por esta cola FIFO hasta obtener la cpu. Si el trabajo termina o abandona la cpu para esperar por la terminacin de una operacin de Entrada / Salida o la terminacin de algn otro suceso, el trabajo abandona la red de lnea de espera. Si su cuanto expira antes de abandonar la cpu voluntariamente, el proceso se coloca en la parte trasera de la cola del siguiente nivel inferior. El trabajo recibe servicio al llegar a la cabeza de esta cola si la primera est vaca. Mientras el proceso contine consumiendo totalmente su cuanto en cada nivel, continuar movindose hacia el final de las colas inferiores.

Generalmente hay una cola en la parte ms profunda a travs de la cual el proceso circula en asignacin de rueda hasta que termina. Existen esquemas en los que el cuanto otorgado al proceso aumenta a medida que el proceso se mueve hacia las colas de los niveles inferiores, en tal caso, cuanto ms tiempo haya estado el proceso en la red de lnea de espera, mayor ser su cuanto cada vez que obtiene la cpu y no podr obtener la cpu muy a menudo debido a la mayor prioridad de los procesos de las colas superiores. Un proceso situado en una cola dada no podr ser ejecutado hasta que las colas de los niveles superiores estn vacas. Un proceso en ejecucin es apropiado por un proceso que llegue a una cola superior. Es un mecanismo adaptable, es decir que se adapta a cargas variables. A los efectos de una revisin grfica de lo enunciado precedentemente, ver la figura 2.5 [7, Deitel]. http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO2.htm#PP

Unidad 3 Administracin de memoria.


3.5 Poltica y filosofa.
POLITICAS Y FILOSOFIA DE LA ADMINISTRACION DE LA MEMORIA.

La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, asi como algunos datos a emplear. Una de las funciones basicas que debe implementar un SO es la Administracion de la Memoria para tener un control sobre los lugares donde estan almacenados los procesos y datos que actualmente se estan utilizando. EL retiro del administrador de la memoria del kernel es un ejemplo de la separacin de poltica y mecanismo. Las decisiones acerc de que proceso se colocar en que sitio de la memoria (poltica) son tomadas por el administrador de la mempria. La colocacin real de mapa de memoria para los procesos (mecanismo) es realizado por la tarea contenida en kernel. Esta divisin facilita en forma relativa el cambio de la poltica de

administracin de la memoria (algoritmos,ect) sin tener que modificar los estratos inferiores del sistema operativo.
1.6 Implantacin de mecanismo de memeoria virtual. BASE LIMITE. Una solucin alternativa a los problemas de recoleccin y proteccin consiste en equipar la mquina con dos registros especiales de hardware, llamados registro de base y de lmite. Cuando se programa un proceso, el registro de base se craga con la direccin del inicio de su particin y el registro de lmite se encarga con la longitud de la particin. Toda direccin de la memoria generada automaticamente tiene el contenido de registro de base sumado a l antes de enviarselo a la memoria. Las direcciones tambien se verifican contra el registro de limite para asegurar que no intentan direccionar la memoria fuera de la particin corriente. El hardware protege los registro de base y de lmite para evitar que los programas de los usuaris los modifiquen. Una ventaja adicional de utilizar un registro de base para la recolocacin es que un programa se pueda desplazar a la memoria despues de que haya iniciado la ejecucin. Despus de que sa ha movido, todo lo que se necesita hacer para dejarlo listo para la ejecucin es cambiar el valor del registro de base.

3.6 Memoria real.


Memoria real La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacin contenida en ella es de ms rpido acceso. Solo la memoria cache es ms rpida que la principal, pero su costo es a su vez mayor. http://www.monografias.com/trabajos13/gesme/gesme.shtml

3.6.1Administracin de almacenamiento.
Asignacin del espacio de almacenamiento El subsistema de archivos se debe encargar de localizar espacio libre en los medios de almacenamiento para guardar archivos y para despus borrarlos, renombrarlos o agrandarlos. Para ello se vale de localidades especiales que contienen la lista de archivos creados y por cada archivo una serie de direcciones que contienen los datos de los mismos. Esas localidades especiales se llaman directorios.

Organizacin y Administracin del Almacenamiento


Organizacin del Almacenamiento Histricamente el almacenamiento principal se ha considerado como un recurso costoso, por lo cual su utilizacin deba optimizarse [7, Deitel]. Por organizacin del almacenamiento se entiende la manera de considerar este almacenamiento:

se coloca un solo programa de usuario o varios ?. Si se encuentran varios programas de usuario: o se concede a cada uno la misma cantidad de espacio o se divide el almacenamiento en porciones o particiones de diferente tamao ?.

o o

se utilizar un esquema rgido de nmero y tamao de particiones o un esquema dinmico y adaptable ?. se requerir que los trabajos de los usuarios sean diseados para funcionar en una particin especfica o se permitir que se ejecuten en cualquiera donde quepan ?. se requerir o no que cada trabajo sea colocado en un bloque contiguo de memoria ?.

Administracin del Almacenamiento Independientemente del esquema de organizacin hay que decidir las estrategias que se utilizarn para optimizar el rendimiento. Las estrategias de administracin deben considerar:

cundo se consigue un nuevo programa para colocar en la memoria ?: o cuando el sistema lo pide especficamente o se intenta anticiparse a las peticiones ?. dnde se colocar el programa que se ejecutar a continuacin ?: o se prioriza el tiempo de carga o la optimizacin en el uso del almacenamiento ?. con qu criterio se desplazarn programas ?.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.6.2Jerarqua.
Jerarqua de Almacenamiento
Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser referenciados [7, Deitel]. Los programas y datos que no son necesarios de inmediato pueden mantenerse en el almacenamiento secundario. El almacenamiento principal es ms costoso y menor que el secundario pero de acceso ms rpido. Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles (ver Figura 3.1 [7, Deitel]).

Un nivel adicional es el cach o memoria de alta velocidad, que posee las siguientes caractersticas:

Es ms rpida y costosa que la memoria principal. Impone al sistema un nivel ms de traspaso: o Los programas son traspasados de la memoria principal al cach antes de su ejecucin. Los programas en la memoria cach ejecutan mucho ms rpido que en la memoria principal. Al utilizar memoria cach se espera que: o La sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho menor que la mejora en el rendimiento obtenida por la posibilidad de una ejecucin mucho ms rpida en la cach.

3.6.3Estrategia de administracin de memoria.


Estrategias de Administracin del Almacenamiento
Estn dirigidas a la obtencin del mejor uso posible del recurso del almacenamiento principal [7, Deitel].

Se dividen en las siguientes categoras:

Estrategias de bsqueda: o Estrategias de bsqueda por demanda. o Estrategias de bsqueda anticipada. Estrategias de colocacin. 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 la memoria principal. En la bsqueda por demanda el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algn programa en ejecucin lo referencia. Se considera que la bsqueda anticipada puede producir un mejor rendimiento del sistema. Las estrategias de colocacin estn relacionadas con la determinacin del lugar de la memoria donde se colocar (cargar) un programa nuevo. Las estrategias de reposicin estn relacionadas con la determinacin de qu fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.

Intercambio El objetivo del intercambio es dar cabida a la ejecucin de mas aplicaciones de las que pueden residir simultneamente en la memoria del sistema: Consiste en trasladar el cdigo y los datos de un proceso completo de memoria al sistema de almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar mas memoria RAM de la que realmente existe en el sistema. Esta tcnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque ste solo vaya a ejecutar una pequea porcin del cdigo. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecucin.. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imgenes de meoria de todos los usuarios. Asignacion Contigua La memoria principal normalmente se divide en dos particiones:
Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. Procesos de usuario en la parte alta.

Asignacin de particin simple: Puede utilizarse un esquema de registro de relocalizacin y limite para proteger un proceso de usuario de otro y de cambios del cdigo y datos del sistema operativo . El registro de relocalizacin contiene la direccin contiene la direccin fsica mas pequea; el registro limite contiene el rango de las direcciones lgicas cada direccin lgica debe ser menor al registro limite Asignacin de particiones mltiples: Bloques de distintos tamaos estn distribuidos en memoria , cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle. El sistema operativo debe tener informacin sobre:
a. Particiones asignadas b. Particiones libres (huecos)

Asignacin de particin dinmica El proceso de compactacin es una instancia particular del problema de asignacin de memoria dinmica, el cual es el cmo satisfacer una necesidad de tamao n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cul hueco es el ms indicado para asignarse. Las estrategias ms comunes para asignar algn hueco de la tabla son:
Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La bsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde termin la ltima bsqueda. La bsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio ms pequeo de los espacios con capacidad suficiente. La bsqueda se debe de realizar en toda la tabla, a menos que la tabla est ordenada por tamao. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco ms grande. Una vez ms, se debe de buscar en toda la tabla de huecos a menos que est organizada por tamao. Esta estrategia produce los huecos de sobra ms grandes, los cuales pudieran ser de ms uso si llegan procesos de tamao mediano que quepan en ellos.

Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido. Problema: La fragmentacin. 4. Fragmentacin La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria que se vieron en los mtodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentacin externa. La fragmentacin es generada cuando durante el reemplazo de procesos quedan huecos entre dos o ms procesos de manera no contigua y cada hueco no es capaz de soportar ningn proceso de la lista de espera.

La fragmentacin puede ser:


Fragmentacin Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. Fragmentacin Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la particin, pero no se utiliza.

La fragmentacin externa se puede reducir mediante la compactacin para colocar toda la memoria libre en un solo gran bloque, pero est a solo es posible si la relocalizacin es dinmica y se hace en tiempo de ejecucin. 5. Paginacin Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que esta en la posicin fsica de la primera palabra en el marco de pgina. Las pginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginacin permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas (0,z,2z,,(m-1)z)(m*z posiciones). Una direccin virtual a es equivalente a una direccin dada como una dupla (p, d), en la cual p es el nmero de la pgina y d el nmero de la palabra dentro de la pgina, de acuerdo con la relacin: a=p*z+d (0<=d<z) p=(a/z) (parte entera de la division) d=a mod z (resto de divisor a/z) En las maquinas que usan aritmtica binaria, el calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo, si el campo de direcciones de la instruccin es de m bits (m>6), los cuatro bits mas significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento. Para tener el control de las pginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal, nos han dejado con un problema: fragmentacin, (huecos en la memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria principal.

Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida. Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin. La paginacin evita el considerable problema de ajustar los pedazos de memoria de tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas pginas. Las unidades correspondientes en la memoria fsica se llaman marcos para pgina o frames. Las pginas y los frames tienen siempre el mismo tamao. Tablas de pginas Cada pgina tiene un nmero que se utiliza como ndice en la tabla de pginas, lo que da por resultado el nmero del marco correspondiente a esa pgina virtual. Si el bit presente / ausente es 0, se provoca un sealamiento (trap) hacia el sistema operativo. Si el bit es 1, el nmero de marco que aparece en la tabla de pginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la direccin virtual de entrada. Juntos forman una direccin fsica de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la direccin en la memoria fsica. En teora, la asociacin de las direcciones virtuales con las fsicas se efecta segn lo descrito. El nmero de pgina virtual se divide en un nmero de pgina virtual (los bits superiores)y un ajuste (los bits inferiores). El nmero de pgina virtual se utiliza como un ndice en la tabla de pginas para encontrar la entrada de esa pgina virtual. El nmero de marco (si existe) se determina a partir de la tabla de pginas. El nmero de marco se asocia al extremo superior del ajuste y reemplaza al nmero de pgina virtual para formar una direccin fsica que se puede enviar a la memoria. La finalidad de la tabla de pginas es asociar las pginas virtuales con los marcos. En trminos matemticos, la tabla de pginas es una funcin, cuyo argumento es el nmero de pgina virtual y como resultado el nmero del marco fsico. Mediante el resultado de esta funcin, se puede reemplazar el campo de la pgina virtual de una direccin virtual por un campo de marco, lo que produce una direccin en la memoria fsica. Sin embargo hay que enfrentar dos aspectos fundamentales:
1. La tabla de pginas puede ser demasiado grande. 2. La asociacin debe ser rpida.

El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamao de pgina es de 4K, un hueco de direcciones de 32 bits tiene un milln de pginas; en el caso de un hueco de direcciones de 64 bits, se tendra ms informacin de la que uno quisiera contemplar.

El segundo punto es consecuencia del hecho de que la asociacin virtual fsica debe hacerse en cada referencia a la memoria. Una instruccin comn tiene una palabra de instruccin y tambin un operando de memoria. Entonces es necesario hacer una, dos o ms referencias a la tabla de pginas por cada instruccin. Caractersticas de la paginacin:
El espacio de direcciones lgico de un proceso puede ser no contiguo. Se divide la memoria fsica en bloques de tamao fijo llamados marcos (frames). Se divide la memoria en bloques de tamao llamados paginas. Se mantiene informacin en los marcos libres. Para correr un programa de n paginas de tamao, se necesitan encontrara n marcos y cargar el programa. Se establece una tabla de paginas para trasladar las direcciones lgicas a fsicas. Se produce fragmentacin interna.

Ventajas de la paginacin
1. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. 2. No es necesario que las paginas estn contiguas en memoria, por lo que no se necesitan procesos de compactacin cuando existen marcos de paginas libres dispersos en la memoria. 3. Es fcil controlar todas las pginas, ya que tienen el mismo tamao. 4. El mecanismo de traduccin de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. 5. Se libera al programador de la restriccin de programar para un tamao fsico de memoria, con lo que s e aumenta su productividad. Se puede programar en funcin de una memoria mucho ms grande a la existente. 6. Al no necesitarse cargar un programa completo en memoria para su ejecucin, se puede aumentar el numero de programas multiprogramndose. 7. Se elimina el problema de fragmentacin externa.

Desventajas de la paginacin 1. El costo de hardware y software se incrementa, por la nueva informacin que debe manejarse y
el mecanismo de traduccin de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantacin. 2. Se deben reservar reas de memoria para las PMT de los procesos. Al no ser fija el tamao de estas, se crea un problema semejante al de los programas (como asignar un tamao ptimo sin desperdicio de memoria, u "ovearhead" del procesador). 3. Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las paginas son de 4K, debern asignrseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podr ser utilizados. Debe asignarse un tamao promedio a las pginas, evitando que si son muy pequeas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentacin interna.

Traduccin de Direcciones La direccin generada por la CPU se divide en:

Numero de pagina (p): utilizado como indice en la tabla de pagins que contiene la direccin base de cada pagina en la memoria fisica. Offset de la pagina (d): combinado con la direccin base dfine la direccion fisica que ser enviada a la unidad de memoria.

Ejemplo de paginacin: 6. Segmentacin Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica; llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Cada uno de ellos tienen informacin lgica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una coleccin de segmentos, que generalmente reflejan la divisin lgica del programa. La segmentacin permite alcanzar los siguientes objetivos:
1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. 2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamao y este puede variar. 3. Proteccin: se puede proteger los mdulos del segmento contra accesos no autorizados. 4. Comparicin: dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. 5. Enlace dinmico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern solo cuando sea necesario.

Ventajas de la segmentacin El esquema de segmentacin ofrece las siguientes ventajas:


El programador puede conocer las unidades lgicas de su programa, dndoles un tratamiento particular. Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. Debido a que es posible separar los mdulos se hace ms fcil la modificacin de los mismos. Cambios dentro de un modulo no afecta al resto de los mdulos. Es fcil el compartir segmentos. Es posible que los segmentos crezcan dinmicamente segn las necesidades del programa en ejecucin. Existe la posibilidad de definir segmentos que aun no existan. As, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensin no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato por primera vez.

Desventajas de la segmentacin
Hay un incremento en los costos de hardware y de software para llevar a cabo la implantacin, as como un mayor consumo de recursos: memoria, tiempo de CPU, etc.

Debido a que los segmentos tienen un tamao variable se pueden presentar problemas de fragmentacin externas, lo que puede ameritar un plan de reubicacin de segmentos en memoria principal. Se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. Al permitir que los segmentos varen de tamao, puede ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos. No se puede garantizar, que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.

Estas desventajas tratan de ser minimizadas, bajo la tcnica conocida como Segmentacin paginada. 7. Segmentacin Paginada Paginacin y segmentacin son tcnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Para la segmentacin se necesita que estn cargadas en memoria, reas de tamaos variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una regin de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible. A nivel de paginacin, si quiere referenciar en forma cclicas n paginas, estas debern ser cargadas una a una generndose varias interrupciones por fallas de paginas; bajo segmentacin, esta pagina podra conformar un solo segmento, ocurriendo una sola interrupcin, por falla de segmento. No obstante, si bajo segmentacin, se desea acceder un rea muy pequea dentro de un segmento muy grande, este deber cargarse completamente en memoria, desperdicindose memoria; bajo paginacin solo se cargara la pgina que contiene los tems referenciados. Puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en pginas. Cada segmento puede ser descrito por su propia tabla de pginas. Los segmentos son usualmente mltiplos de pginas en tamao, y no es necesario que todas las pginas se encuentren en memoria principal a la vez; adems las pginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real. Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el numero del segmento, la segunda el numero de la pagina dentro del segmento y la tercera el desplazamiento dentro de la pagina. Se debern usar varias tablas:
SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la informacin descrita bajo segmentacin pura, pero en el campo de direccin se indicara la direccin de la PMT (tabla de mapas de pginas) que describe a las diferentes pginas de cada segmento.

PMT (tabla de mapas de pginas): una por segmento; cada entrada de la PMT describe una pgina de un segmento; en la forma que se presento la pagina pura. TBM (tabla de bloques de memoria): para controlar asignacin de pginas por parte del sistema operativo. JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.

En el caso, de que un segmento sea de tamao inferior o igual al de una pagina, no se necesita tener la correspondiente PMT, actundose en igual forma que bajo segmentacin pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no. Ventajas de la segmentacin paginada El esquema de segmentacin paginada tiene todas las ventajas de la segmentacin y la paginacin:
Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticion y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentacin externa y la necesidad de compactacin.

Desventajas de la segmentacin paginada


Las tres componentes de la direccin y el proceso de formacin de direcciones hace que se incremente el costo de su implantacin. El costo es mayor que en el caso de de segmentacin pura o paginacin pura. Se hace necesario mantener un nmero mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento.

Sigue existiendo el problema de fragmentacin interna de todas- o casi- todas las pginas finales de cada uno de los segmentos. Bajo paginacin pura se desperdician solo la ltima pgina asignada, mientras que bajo segmentacin paginada el desperdicio puede ocurrir en todos los segmentos asignados.
http://www.monografias.com/trabajos13/gesme/gesme.shtml

3.6.4Asignacin contigua v.s. no contigua.


Para asignarle espacio a los archivos existen tres criterios generales que se describen enseguida. Asignacin contigua: Cada directorio contiene la los nombres de archivos y la direccin del bloque inicial de cada archivo, as como el tamao total de los mismos. Por ejemplo, si un archivo comienza en el sector 17 y mide 10 bloques, cuando el archivo sea accesado, el brazo se mover inicialmente al bloque 17 y de ah hasta el 27. Si el archivo es borrado y luego creado otro ms pequeo, quedarn huecos intiles entre archivos tiles, lo cual se llama fragmentacin externa.

Asignacin encadenada: Con este criterio los directorios contienen los nombres de archivos y por cada uno de ellos la direccin del bloque inicial que compone al archivo. Cuando un archivo es ledo, el brazo va a esa direccin inicial y encuentra los datos iniciales junto con la direccin del siguiente bloque y as sucesivamente. Con este criterio no es necesario que los bloques estn contiguos y no existe la fragmentacin externa, pero en cada "eslabn" de la cadena se desperdicia espacio con las direcciones mismas. En otras palabras, lo que se crea en el disco es una lista ligada. Asignacin con ndices ( indexada ): En este esquema se guarda en el directorio un bloque de ndices para cada archivo, con apuntadores hacia todos sus bloques constituyentes, de mabnera que el acceso directo se agiliza notablemente, a cambio de sacrificar varios bloques para almacenar dichos apuntadores. Cuando se quiere leer un archivo o cualquiera de sus partes, se hacen dos accesos: uno al bloque de ndices y otro a la direccin deseada. Este es un esquema excelente para archivos grandes pero no para pequeos, porque la relacin entre bloques destinados para ndices respecto a los asignados para datos es incosteable.

Asignacin Contigua de Almacenamiento Versus No Contigua En la asignacin contigua cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento. En la asignacin no contigua un programa se divide en varios bloques o segmentos que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es ms compleja pero ms eficiente que la asignacin continua. Asignacin Contigua de Almacenamiento de Un Solo Usuario Se consideran S. O. que ya poseen desarrollado el sistema de control de entrada / salida: IOCS: input / output control system (ver Figura 3.2 [7, Deitel]).

El tamao de los programas est limitado por la cantidad de memoria principal, pero se puede superar este lmite con tcnicas de recubrimientos, con las siguientes caractersticas (ver Figura 3.3 [7, Deitel]):

Si una seccin particular del programa ya no es necesaria, se carga otra seccin desde el almacenamiento secundario ocupando las reas de memoria liberadas por la seccin que ya no se necesita. La administracin manual por programa del recubrimiento es complicada y dificulta el desarrollo y el mantenimiento.

Proteccin en los sistemas de un solo usuario El usuario tiene un completo control sobre la totalidad del almacenamiento principal:

El almacenamiento se divide en porciones que contienen el S. O., el programa del usuario y una porcin sin usar. El programa del usuario podra destruir reas del S. O. que podran: o Detener el sistema. o Producir salidas errneas. El S. O. debe estar protegido contra el proceso usuario: o La proteccin se instrumenta mediante un registro de lmites incorporado a la cpu: Contiene la direccin de la instruccin ms alta utilizada por el S. O. Si se intenta ingresar al S. O. la instruccin es interceptada y el proceso finaliza.

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 de:

tiempo de instalacin: el necesario para preparar el entorno operativo requerido. tiempo de descarga: el necesario para desmontar el entorno operativo que fue requerido.

Durante la instalacin y descarga de los trabajos la cpu no est ejecutando dichos trabajos requeridos, por lo cual: Automatizar la transicin de trabajo a trabajo reduce la cantidad de tiempo perdido entre trabajos. Surgieron los sistemas de procesamiento por lotes. En el procesamiento por lotes de flujo nico los trabajos se agrupan en lotes encolndose para su ejecucin. El procesador de flujos de trabajos:

Lee las instrucciones del lenguaje de control de trabajos. Facilita la preparacin del trabajo siguiente. Emite instrucciones al operador del sistema. Automatiza funciones anteriormente manuales. Cuando finaliza un trabajo efecta las operaciones de mantenimiento apropiadas para facilitar la transicin del siguiente trabajo.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA MTODOS DE ASIGNACIN DE ESPACIO EN DISCO. Un mtodo de asignacin de espacio en disco determina la manera en que un Sistema Operativo controla los lugares del disco ocupados por cada archivo de datos. Se debe controlar bsicamente la identificacin del archivo, sector de inicio y sector final. Para el control del espacio ocupado en disco se puede utilizar como base alguno de los mtodos tericos: Asignacin Contigua, Asignacin Ligada, Asignacin Indexada. ASIGNACIN CONTIGUA. Este mtodo consiste en asignar el espacio en disco de tal manera que las direcciones de todos los bloques correspondientes a un archivo definen un orden lineal. Por ejemplo:

VENTAJAS - La cabeza de lectura no se mueve demasiado en la lectura de un archivo. ASIGNACIN LIGADA

DESVENTAJAS - Produce fragmentacin externa.

En este mtodo, cada archivo es una lista ligada de bloques de disco. En el directorio hay un apuntador al bloque de inicio y un apuntador al bloque final para cada archivo. En cada uno de los bloques donde se encuentra un archivo hay un apuntador al siguiente bloque de la lista. Por ejemplo:

VENTAJAS - No produce fragmentacin externa.

DESVENTAJAS

La cabeza de lectura se puede mover demasiado en la lectura de un archivo. - Si una liga se pierde, se perder el archivo completo. Es ineficiente para la implementacin de archivos directos. Se necesita un campo extra para el apuntador.

ASIGNACIN INDEXADA Como ya se vio, la asignacin ligada resuelve problemas de fragmentacin externa, sin embargo, la asignacin ligada no soporta eficientemente el acceso directo a los archivos. La asignacin indexada resuelve este problema poniendo todos los apuntadores en una sola localidad: El bloque ndice. Cada archivo tiene su bloque ndice, El cual es un arreglo de direcciones de bloques de disco.

La i-sima entrada en el bloque ndice apunta al i-simo bloque que conforma el archivo. En el directorio se controla la direccin del bloque ndice de cada archivo, por ejemplo:

VENTAJAS

DESVENTAJAS

No produce fragmentacin externa. Eficiente para la implementacin de archivos directos.

Existe desperdicio cuando hay archivos muy chicos. Desbordamiento de bloque ndice. (Solucin: creacin de un esquema ligado; el ultimo bloque ndice apunta a otro ndice)

http://www.itlp.edu.mx/publica/tutoriales/sistemasoperativos2/unidad4.htm#ASIG NACIN%20CONTIGUA.

3.6.5Multiprogramacin de particin fija, particin variable, con intercambio de almacenamiento.

Multiprogramacin de particin fija.-

La memoria se divide en particiones de tamao fijo (puede ser distinto el tamao de cada particin). Originalmente los programas se compilaban y link editaban para ejecutar en una particin en particular (direcciones absolutas). Posteriormente los compiladores y link editores generan cdigo reubicable para que un programa pudiera ejecutar en cualquier particin de memoria suficientemente grande. Con esta estructura de administracin de memoria se desperdicia memoria y tiempo de CPU (si hay un programa corriendo los dems quedan encolados aunque haya otra particin libre).
Multiprogramacin de particin variable.-

Cada programa o usuario utiliza tanta memoria como sea necesaria siempre que quepa en el almacenamiento real. Cuando los programas van terminando su ejecucin se van generando agujeros en memoria. Particiones fijas o particiones variables En el esquema de la multiprogramacin en memroia real se manejan dos alternativas para asignarle a cada programa su particin correspondiente: particiones de tamao fijo o particiones de tamao variable. La alternativa ms simple son las particiones fijas. Dichas particiones se crean cuando se enciende el equipo y permanecern con los tamaos iniciales hasta que el equipo se apague. Es una alternativa muy vieja, quien haca la divisin de particiones era el operador analizando los tamaos estimados de los trabajos de todo el da. Por ejemplo, si el sistema tena 512 kilobytes de RAM, podia asignar 64 k para el sistema operativo, una particin ms de 64 k, otra de 128k y una mayor de 256 k. Esto era muy simple, pero inflexible, ya que si surgan trabajos urgentes, por ejemplo, de 400k, tenan que esperar a otro da o reparticionar, inicializando el equipo desde cero. La otra alternativa, que surgi despus y como necesidad de mejorar la alternativa anterior, era crear particiones contiguas de tamao variable. Para esto, el sistema tena que mantener ya una estructura de datos suficiente para saber en dnde haban huecos disponibles de RAM y de dnde a dnde haban particiones ocupadas por programas en ejecucin. As, cuando un programa requera ser cargado a RAM, el sistema analizaba los huecos para saber si haba alguno de tamao suficiente para el programa que queria entrar, si era as, le asignaba el espacio. Si no, intentaba relocalizar los programas existentes con el propsito de hacer contiguo todo el espacio ocupado, as como todo el espacio libre y as obtener un hueco de tamao suficiente. Si an as el programa no caba, entonces lo bloqueaba y tomaba otro. El proceso con el cual se juntan los huecos o los espacios ocupados se le llama `compactacin'. El lector se habr dado cuenta ya de que surgen varios problemas con los esquemas de particiones fijas y particiones variables: En base a qu criterio se elige el mejor tamao de particin para un programa ? Por ejemplo, si el sistema tiene dos huecos, uno de 18k y otro de 24 k para un proceso que desea 20 k, Cual se le asigna ? Existen varios algoritmos para darle respuesta a la pregunta anterior, los cuales se ennumeran y describen enseguida. Primer Ajuste: Se asigna el primer hueco que sea mayor al tamao deseado. Mejor Ajuste: Se asigna el hueco cuyo tamao exceda en la menor cantidad al tamao deseado. Requiere de una bsqueda exhaustiva. Peor Ajuste: Se asigna el hueco cuyo tamao exceda en la mayor cantidad al tamao deseado. Requiere tambin de una bsqueda exhaustiva. El Siguiente Ajuste: Es igual que el `primer ajuste' con la diferencia que se deja un apuntador al lugar en donde se asign el ltimo hueco para realizar la siguiente bsqueda a partir de l. Ajuste Rpido: Se mantienen listas ligadas separadas de acuerdo a los tamaos de los huecos, para as buscarle a los procesos un hueco ms rpido en la cola correspondiente. Otro problema que se vislumbra desde aqu es que, una vez asignado un hueco, por ejemplo, con "el peor ajuste", puede ser que el proceso requiriera 12 kilobytes y que el hueco asignado fuera de 64

kilobytes, por lo cual el proceso va a desperdiciar una gran cantidad de memoria dentro de su particin, lo cual se le llama `fragmentacin interna'. Por otro lado, conforme el sistema va avanzando en el da, finalizando procesos y comenzando otros, la memoria se va configurando como una secuencia contigua de huecos y de lugares asignados, provocando que existan huecos, por ejemplo, de 12 k, 28k y 30 k, que sumados dan 70k, pero que si en ese momento llega un proceso pidindolos, no se le pueden asignar ya que no son localidades contiguas de memoria ( a menos que se realice la compactacin ). Al hecho de que aparezcan huecos no contiguos de memoria se le llama `fragmentacin externa'. De cualquier manera, la multiprogramacin fue un avance significativo para el mejor aprovechamiento de la unidad central de procesamiento y de la memoria misma, as como dio pie para que surgieran los problemas de asignacin de memoria, proteccin y relocalizacin, entre otros. Los overlays Una vez que surgi la multiprogramacin, los usuarios comenzaron a explorar la forma de ejecutar grandes cantidades de cdigo en reas de memoria muy pequeas, auxiliados por algunas llamadas al sistema operativo. Es as como nacen los `overlays'. Esta tcnica consiste en que el programador divide lgicamente un programa muy grande en secciones que puedan almacenarse el las particiones de RAM. Al final de cada seccin del programa ( o en otros lugares necesarios ) el programador insertaba una o varias llamadas al sistema con el fin de descargar la seccin presente de RAM y cargar otra, que en ese momento resida en disco duro u otro medio de almacenamiento secundario. Aunque esta tcnica era eficaz ( porque resolva el problema ) no era eficiente ( ya que no lo resolva de la mejor manera ). Esta solucin requera que el programador tuviera un conocimiento muy profundo del equipo de cmputo y de las llamadas al sistema operativo. Otra desventaja era la portabilidad de un sistema a otro: las llamadas cambiaban, los tamaos de particiones tambin. Resumiendo, con esta tcnica se podan ejecutar programas ms grandes que las particiones de RAM, donde la divisin del cdigo corra a cuenta del programador y el control a cuenta del sistema operativo.

Multiprogramacin de Particin Fija


Los sistemas de un solo usuario desperdician gran cantidad de recursos computacionales debido a que [7, Deitel] (ver Figura 3.4 [7, Deitel]):

Cuando ocurre una peticin de e / s la cpu normalmente no puede continuar el proceso hasta que concluya la operacin de e / s requerida. Los perifricos de e / s frenan la ejecucin de los procesos ya que comparativamente la cpu es varios rdenes de magnitud ms rpida que los dispositivos de e / s.

Los sistemas de multiprogramacin permiten que varios procesos usuarios compitan al mismo tiempo por los recursos del sistema:

Un trabajo en espera de e / s ceder la cpu a otro trabajo que est listo para efectuar cmputos. Existe paralelismo entre el procesamiento y la e / s. Se incrementa la utilizacin de la cpu y la capacidad global de ejecucin del sistema. Es necesario que varios trabajos residan a la vez en la memoria principal.

Multiprogramacin de Particin Fija: Traduccin y Carga Absolutas Las particiones del almacenamiento principal:

Son de tamao fijo. Alojan un proceso cada una. La cpu se cambia rpidamente entre los procesos creando la ilusin de simultaneidad.

Los trabajos se traducan con ensambladores y compiladores absolutos para ser ejecutados solo dentro de una particin especfica (ver Figura 3.5 [7, Deitel]).

El S. O. resulta de implementacin relativamente sencilla pero no se optimiza la utilizacin de la memoria. 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 (ver Figura 3.6 [7, Deitel]). Son ms complejos que los absolutos. Mejoran la utilizacin del almacenamiento. Confieren ms flexibilidad en el armado de la carga de procesos.

Proteccin en los Sistemas de Multiprogramacin

Si se utiliza asignacin contigua de memoria la proteccin suele implementarse con varios registros de lmites (ver Figura 3.7 y Figura 3.8 [7, Deitel]). Los extremos superior e inferior de una particin pueden ser:

Delineados con dos registros. Indicados el lmite inferior o superior y el tamao de la particin o regin.

Fragmentacin en la Multiprogramacin de Particin Fija La fragmentacin de almacenamiento ocurre en todos los sistemas independientemente de su organizacin de memoria.

En los S. O. de multiprogramacin de particin fija la fragmentacin se produce cuando:


Los trabajos del usuario no llenan completamente sus particiones designadas. Una particin permanece sin usar porque es demasiado pequea para alojar un trabajo que est en espera.

Multiprogramacin de Particin Variable


Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben superar el espacio disponible de memoria [7, Deitel] (ver Figura 3.9 [7, Deitel]).

No hay lmites fijos de memoria, es decir que la particin de un trabajo es su propio tamao. Se consideran esquemas de asignacin contigua, dado que un programa debe ocupar posiciones adyacentes de almacenamiento. Los procesos que terminan dejan disponibles espacios de memoria principal llamados agujeros:

Pueden ser usados por otros trabajos que cuando finalizan dejan otros agujeros menores. En sucesivos pasos los agujeros son cada vez ms numerosos pero ms pequeos, por lo que se genera un desperdicio de memoria principal.

Combinacin de agujeros (reas libres) Consiste en fusionar agujeros adyacentes para formar uno sencillo ms grande. Se puede hacer cuando un trabajo termina y el almacenamiento que libera tiene lmites con otros agujeros. Compresin o Compactacin de Almacenamiento Puede ocurrir que los agujeros (reas libres) separados distribuidos por todo el almacenamiento principal constituyan una cantidad importante de memoria:

Podra ser suficiente (el total global disponible) para alojar a procesos encolados en espera de memoria. Podra no ser suficiente ningn rea libre individual (ver Figura 3.10 [7, Deitel]).

La tcnica de compresin de memoria implica pasar todas las reas ocupadas del almacenamiento a uno de los extremos de la memoria principal:

Deja un solo agujero grande de memoria libre contigua. Esta tcnica se denomina recogida de residuos (ver Figura 3.11 [7, Deitel]).

Principales desventajas de la compresin Consume recursos del sistema (ver Figura 3.12 [7, Deitel]).

El sistema debe detener todo mientras efecta la compresin, lo que puede afectar los tiempos de respuesta. Implica la relocalizacin (reubicacin) de los procesos que se encuentran en la memoria:

La informacin de relocalizacin debe ser de accesibilidad inmediata.

Una alta carga de trabajo significa mayor frecuencia de compresin que incrementa el uso de recursos. Estrategias de Colocacin del Almacenamiento Se utilizan para determinar el lugar de la memoria donde sern colocados los programas y datos que van llegando y se las clasifica de la siguiente manera:

Estrategia de mejor ajuste: o Un trabajo nuevo es colocado en el agujero en el cual quepa de forma ms ajustada: Debe dejarse el menor espacio sin usar. Estrategia de primer ajuste: o Un trabajo nuevo es colocado en el primer agujero disponible con tamao suficiente para alojarlo. Estrategia de peor ajuste: o Consiste en colocar un programa en el agujero en el que quepa de la peor manera, es decir en el ms grande posible: El agujero restante es tambin grande para poder alojar a un nuevo programa relativamente grande.

Multiprogramacin con Intercambio de Almacenamiento


En el esquema de intercambio los programas del usuario no requieren permanecer en la memoria principal hasta su terminacin [7, Deitel]. Una variante consiste en que un trabajo se ejecuta hasta que ya no puede continuar:

Cede el almacenamiento y la cpu al siguiente trabajo. La totalidad del almacenamiento se dedica a un trabajo durante un breve perodo de tiempo. Los trabajos son intercambiados, dndose que un trabajo puede ser intercambiado varias veces antes de llegar a su terminacin.

Es un esquema razonable y eficiente para un nmero relativamente reducido de procesos de usuarios. Los sistemas de intercambio fueron los predecesores de los sistemas de paginacin.

El rendimiento de los sistemas de intercambio mejora al reducir el tiempo de intercambio:


Manteniendo al mismo tiempo varias imgenes de usuario o imgenes de memoria en la memoria principal. Retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento para una nueva imagen. Incrementando la cantidad de memoria principal disponible en el sistema.

Las imgenes de usuario (imgenes de memoria) retiradas del almacenamiento principal se graban en el almacenamiento secundario (discos).

3.7 Organizacin de memoria virtual.


Multiprogramacin en memoria virtual La necesidad cada vez ms imperiosa de ejecutar programas grandes y el crecimiento en poder de las unidades centrales de procesamiento empujaron a los diseadores de los sistemas operativos a implantar un mecanismo para ejecutar automticamente programas ms grandes que la memoria real disponible, esto es, de ofrecer `memoria virtual'. La memoria virtual se llama as porque el programador ve una cantidad de memoria mucho mayor que la real, y en realidad se trata de la suma de la memoria de almacenamiento primario y una cantidad determinada de almacenamiento secundario. El sistema operativo, en su mdulo de manejo de memoria, se encarga de intercambiar programas enteros, segmentos o pginas entre la memoria real y el medio de almacenamiento secundario. Si lo que se intercambia son procesos enteros, se habla entonces de multiprogramacin en memoria real, pero si lo que se intercambian son segmentos o pginas, se puede hablar de multiprogramacin con memoria virtual. La memoria virtual se apoya en varias tcnicas interesantes para lograr su objetivo. Una de las teorias ms fuertes es la del `conjunto de trabajo', la cual se refiere a que un programa o proceso no est usando todo su espacio de direcciones en todo momento, sino que existen un conjunto de localidades activas que conforman el `conjunto de trabajo'. Si se logra que las pginas o segmentos que contienen al conjunto de trabajo estn siempre en RAM, entonces el programa se desempear muy bien. Otro factor importante es si los programas exhiben un fenmeno llamado `localidad', lo cual quiere decir que algunos programas tienden a usar mucho las instrucciones que estn cercanas a la localidad de la instruccin que se est ejecutando actualmente.

3.7.1Evaluacin de las organizaciones de almacenamiento.


Introduccin a la Organizacin del Almacenamiento Virtual
Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computacin [7, Deitel]. Esta tecnologa apareci en 1960 en la Universidad de Manchester (Inglaterra), en el sistema Atlas.

Los mtodos ms comunes de implementacin son mediante:


Tcnicas de paginacin. Tcnicas de segmentacin. Una combinacin de ambas tcnicas.

Las direcciones generadas por los programas en su ejecucin no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse dentro de un nmero mucho mayor de direcciones que las disponibles dentro del almacenamiento primario. La evolucin en las organizaciones de almacenamiento puede resumirse como sigue:

Real:
o

Sistemas dedicados a un solo usuario.

Real: Sistemas de multiprogramacin en memoria real: Multiprogramacin en particin fija: Absoluta. Relocalizable (reubicable). Multiprogramacin en particin variable. Virtual: o Multiprogramacin en almacenamiento virtual: Paginacin pura. Segmentacin pura. Combinacin paginacin / segmentacin.
o

Conceptos Bsicos de Almacenamiento Virtual


La clave del concepto de memoria (almacenamiento) virtual esta en la disociacin:

De las direcciones a las que hace referencia un programa. De las direcciones disponibles en la memoria real (almacenamiento primario).

Los principales conceptos son los siguientes: Direcciones virtuales: o Son las referidas por un proceso en ejecucin. Direcciones reales: o Son las disponibles dentro del almacenamiento primario. Espacio de direcciones virtuales (v) de un proceso: o Es el nmero de direcciones virtuales a que puede hacer referencia el proceso. Espacio de direcciones reales (r) de un computador: o Es el nmero de direcciones reales disponibles en el ordenador. Los procesos hacen referencia a direcciones virtuales pero stas deben ejecutarse en el almacenamiento real:

Las direcciones virtuales deben ser transformadas dentro de las direcciones reales, mientras el proceso est en ejecucin. La traduccin de direcciones deber hacerse rpidamente para no degradar al sistema.

Existen varios medios para asociar las direcciones virtuales con las reales (ver Figura 3.13 [7, Deitel]).

Los mecanismos de traduccin dinmica de direcciones (dat) convierten las direcciones virtuales en reales al ejecutarse el proceso. Las direcciones contiguas dentro del espacio de direcciones virtuales de un proceso no tienen por qu ser contiguas dentro del almacenamiento real, a esto se denomina contigidad artificial (ver Figura 3.14 [7, Deitel]).

Organizacin del Almacenamiento de Niveles Mltiples


Se deben proporcionar los medios para retener programas y datos en un gran almacenamiento auxiliar para:

Permitir que el espacio de direcciones virtuales de un usuario sea mayor que el espacio de direcciones reales. Soportar multiprogramacin de forma efectiva en un sistema con muchos usuarios que compartan el almacenamiento real.

Se utiliza un esquema de almacenamiento de dos niveles (ver Figura 3.15 [7, Deitel]): Primer nivel: almacenamiento real : o En l se ejecutan los procesos y en l deben estar los datos para que un proceso pueda referirse a ellos.

Segundo nivel: almacenamiento auxiliar, secundario o adicional : o Generalmente consta de discos de gran capacidad que pueden mantener los programas y datos que no caben al mismo tiempo en el ms limitado almacenamiento real.

Cuando se va a ejecutar un proceso su cdigo y datos se pasan al almacenamiento principal. El almacenamiento real es compartido por varios procesos:

Cada proceso puede tener un espacio de direcciones virtuales mucho mayor que el almacenamiento real. Solo se mantiene al mismo tiempo una pequea parte de los programas y datos de cada proceso en el almacenamiento real.

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 [7, Deitel]. La informacin se agrupa en bloques:

El sistema est informado del lugar del almacenamiento real donde han sido colocados los bloques de almacenamiento virtual. Cuanto mayor sea el bloque menor ser la fraccin del almacenamiento real que debe dedicarse a contener la informacin del mapa. Con bloques grandes: o Se reduce la sobrecarga de almacenamiento del mecanismo de transformacin. o Se incrementa el tiempo de transferencia entre los almacenamientos secundario y primario. o Consumen ms almacenamiento real pudiendo limitar el nmero de procesos que pueden compartirlo. Los bloques pueden ser de tamao: o Igual : se denominan pginas y la organizacin de almacenamiento virtual asociada se denomina paginacin. o Diferente: se denominan segmentos y la organizacin de almacenamiento virtual asociada se denomina segmentacin. Se pueden combinar ambas tcnicas: segmentos de tamao variable compuestos de pginas de tamao fijo.

Las direcciones son bidimensionales, es decir que una direccin virtual v se indica por un par ordenado (b,d), donde: b: nmero del bloque donde reside. d: desplazamiento a partir del inicio del bloque. La traduccin de una direccin virtual v = (b,d) a la direccin real r considera lo siguiente (ver Figura 3.16 y Figura 3.17 [7, Deitel]): Cada proceso tiene su tabla de mapa de bloques mantenida por el sistema en el almacenamiento real. Un registro especial del procesador llamado registro origen de la tabla de bloques se carga con la direccin real a de la tabla de mapa de bloques:

o o o

Contiene una entrada para cada bloque del proceso. Las entradas se mantienen en orden secuencial para el bloque 0, bloque 1, etc. Se aade el bloque nmero b a la direccin base a de la tabla de bloques para formar la direccin real de la entrada de la tabla de mapa de bloques para el bloque b: Contiene la direccin real b para el bloque b. El desplazamiento d se aade a la direccin de inicio del bloque, b , para formar la direccin real deseada: r = b + d.

La transformacin de bloques se efecta en forma dinmica mientras se ejecuta un proceso, por lo cual, si la implementacin no es eficiente, su sobrecarga puede causar una degradacin del rendimiento que podra eliminar en parte las ventajas de la utilizacin del almacenamiento virtual.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.7.2Paginacin.
Conceptos Bsicos de Paginacin
Frecuentemente se diferencia entre la paginacin pura y la combinacin de paginacin y segmentacin[7, Deitel]. Las pginas se transfieren del almacenamiento secundario al primario en bloques llamados marcos de pginas:

Tienen el mismo tamao que las pginas. Comienzan en direcciones del almacenamiento real que son mltiplos enteros del tamao fijo de la pgina. Podr colocarse una nueva pgina dentro de cualquier marco de pgina o celda de pgina disponible.

La traduccin dinmica de direcciones incluye: Un proceso en ejecucin hace referencia a una direccin virtual v = (p,d) (ver Figura 3.18 [7, Deitel]). Un mecanismo de transformacin de pginas busca la pgina p en la tabla de pginas y determina si la pgina p se encuentra en el marco de pgina p . La direccin de almacenamiento real se forma por la concatenacin de p y d.

La tabla de mapa de pginas debe indicar si se encuentra o no en el almacenamiento primario la pgina referenciada:

En caso afirmativo dnde est en la memoria real. En caso negativo dnde puede estar en el almacenamiento secundario.

La direccin de almacenamiento primario a, donde comienza el marco de pagina p (suponiendo un tamao de pgina p), est dada por: a = (p) (p ); se supone marcos de pgina numerados 0, 1, 2, etc. (ver Figura 3.19, Figura 3.20 y Figura 3.21 [7, Deitel]).

Traduccin de Direcciones de Paginacin por Transformacin Directa Un proceso en ejecucin hace referencia a la direccin virtual v = (p,d). Antes que un proceso comience su ejecucin, el S. O. carga la direccin de almacenamiento primario de la tabla de mapa de pginas en el registro origen de la tabla de mapa de pginas (Ver Figura 3.22 [7, Deitel]).

La direccin base de la tabla de mapa de pginas es b. El nmero de pgina es p. La direccin en el almacenamiento primario de la entrada en la tabla de mapa de pginas para la pgina p es b + p:

Indica que el marco de pgina p corresponde a la pgina virtual. p se concatena con el desplazamiento d par formar la direccin real r.

Esto es un ejemplo de transformacin directa debido a que la tabla de mapa de pginas contiene una entrada por cada una de las pginas del almacenamiento virtual de este proceso. La direccin virtual que se est traduciendo y la direccin base de la tabla de mapa de pginas son mantenidas en un registro de alta velocidad del control del procesador. La tabla de mapa de pginas transformada directamente suele mantenerse en el almacenamiento primario:

Las referencias a esta tabla requieren un ciclo completo de almacenamiento primario, que generalmente es la parte ms larga de un ciclo de ejecucin de instrucciones. Se requiere otro ciclo de ejecucin de almacenamiento primario para la transformacin de pginas, lo que puede ocasionar degradacin equivalente a un 50%, para lo cual una solucin sera tener la tabla completa de mapa de pginas de transformacin directa en la cach de muy alta velocidad.

Traduccin de Direcciones de Paginacin por Transformacin Asociativa Una forma de acelerar la traduccin dinmica de pginas consiste en colocar la tabla completa de mapa de pginas en un almacenamiento asociativo que tenga un tiempo de ciclo mucho ms rpido que el almacenamiento primario. Una variante es la transformacin asociativa pura (ver Figura 3.23 [7, Deitel]).

Un programa en ejecucin hace referencia a la direccin virtual v = (p,d). Cada entrada en el almacenamiento asociativo se busca de forma simultnea para la pgina p:

Se obtiene p como el marco de pgina correspondiente a la pgina p. Se concatena p con d formando la direccin real r.

Cada una de las clulas del almacenamiento asociativo se registra de manera simultnea: Hace costoso el almacenamiento asociativo. Implementar la transformacin asociativa pura resulta demasiado costoso, tal lo ocurrido con la implementacin de la transformacin directa pura utilizando cach. Traduccin de Direcciones de Paginacin por Combinacin de Transformacin Asociativa / Directa

Se utiliza un almacenamiento asociativo capaz de mantener solo un pequeo porcentaje del mapa completo de pginas para un proceso (ver Figura 3.24 [7, Deitel]).

Las entradas de pgina contenidas en este mapa reducido corresponden solo a las pginas referenciadas recientemente:

Se presupone que una pgina recientemente referenciada tendr posibilidades de serlo de nuevo prximamente. Los rendimientos obtenidos con este esquema de mapa asociativo parcial superan aproximadamente en un 100 % a los rendimientos obtenidos con esquemas de mapa asociativo de pgina completo.

Un programa hace referencia a la direccin virtual v = (p,d). El mecanismo de traduccin de direcciones intenta encontrar la pgina p en el mapa de pgina asociativo parcial:

Si p se encuentra all: o El mapa asociativo devuelve p como el nmero de marco de pgina correspondiente a la pgina virtual p. o p se concatena con el desplazamiento d para formar la direccin real r que corresponde a la direccin virtual v = (p,d). Si p no se encuentra en el mapa de pagina parcial: o Se utiliza un mapa directo convencional. o La direccin b del registro de origen de la tabla de pginas se aade a p para localizar la entrada apropiada a la pgina p en la tabla de mapa de pginas de transformacin directa del almacenamiento primario. o La tabla indica que p es el marco de pgina correspondiente a la pgina virtual p. o p se concatena con el desplazamiento d para formar la direccin real r correspondiente a la direccin virtual v = (p,d).

Compartimiento de Recursos en un Sistema de Paginacin En sistemas multiprogramados, especialmente en los de tiempo compartido, es comn que ms de un usuario estn ejecutando los mismos programas:

Para optimizar el uso de la memoria real se comparten las pginas que pueden ser compartidas: o El compartimiento debe ser cuidadosamente controlado para evitar que un proceso modifique datos que otro proceso esta leyendo (ver Figura 3.25 [7, Deitel]). o Los programas se encuentran divididos en reas separadas de procedimiento y datos. o Los procedimientos no modificables se llaman procedimientos puros reentrantes. o Los datos y procedimientos modificables no pueden ser compartidos. o Los datos no modificables (ej.: tablas fijas) son compartibles. Se debe identificar cada pgina como compartible o no. Habr marcos (celdas) de pginas compartidos por varios procesos.

El compartimiento:

Reduce la cantidad de almacenamiento primario necesario para la ejecucin eficaz de un grupo de procesos. Puede hacer posible que un sistema determinado mantenga una cantidad mayor de usuarios (procesos).

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA Paginacin pura La paginacin pura en el majejo de memoria consiste en que el sistema operativo divide dinmicamente los programas en unidades de tamao fijo ( generalmente mltiplos de 1 kilobyte ) los cuales va a manipular de RAM a disco y viceversa. Al proceso de intercambiar pginas, segmentos o programas completos entre RAM y disco se le conoce como `intercambio' o `swapping'. En la paginacin, se debe cuidar el tamo de las pginas, ya que si stas son muy pequeas el control por parte del sistema operativo para saber cules estn en RAM y cuales en disco, sus direcciones reales, etc; crece y provoca

mucha `sobrecarga' (overhead). Por otro lado, si las pginas son muy grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie memoria en procesos pequeos. Debe haber un equilibrio. Uno de los aspectos ms importantes de la paginacin, asi como de cualquier esquema de memoria virtual, es la forma de traducir una direccin virtual a direccin real. Para explicarlo, obsrvese la figura Como se observa, una direccin virtual `v' = ( b,d) est formada por un nmero de pgina virtual `b' y un desplazamiento `d'. Por ejemplo, si el sistema ofrece un espacio de direcciones virtuales de 64 kilobytes, con pginas de 4 kilobytes y la RAM slo es de 32 kilobytes, entonces tenemos 16 pginas virtuales y 8 reales. La tabla de direcciones virtuales contiene 16 entradas, una por cada pgina virtual. En cada entrada, o registro de la tabla de direcciones virtuales se almacenan varios datos: si la pgina est en disco o en memoria, quin es el dueo de la pgina, si la pgina ha sido modificada o es de lectura nada mas, etc. Pero el dato que nos interesa ahora es el nmero de pgina real que le corresponde a la pgina virtual. Obviamente, de las 16 virtuales, slo ocho tendrn un valor de control que dice que la pgina est cargada en RAM, as como la direccin real de la pgina, denotada en la figura 4.3 como b' . Por ejemplo, supngase que para la pgina virtual nmero 14 la tabla dice que, efectivamente est cargada y es la pgina real 2 ( direccin de memoria 8192 ). Una vez encontrada la pgina real, se le suma el desplazamiento, que es la direccin que deseamos dentro de la pgina buscada ( b' + d ). La tabla de direcciones virtuales a veces est ubicada en la misma meoria RAM, por lo cual se necesita saber en qu direccin comienza, en este caso, existe un registro con la direccin base denotada por la letra `a' en la figura 4.3. Cuando se est buscando una pgina cualquiera y sta no est cargada, surge lo que se llama un `fallo de pgina' (page fault ). Esto es caro para el manejador de memoria, ya que tiene que realizar una serie de pasos extra para poder resolver la direccin deseada y darle su contenido a quien lo pide. Primero, se detecta que la pgina no est presente y entonces se busca en la tabla la direccin de esta pgina en disco. Una vez localizada en disco se intenta cargar en alguna pgina libre de RAM. Si no hay pginas libres se tiene que escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a disco, se marca su valor de control en la tabla de direcciones virtuales para indicar que ya no est en RAM, mientras que la pgina deseada se carga en RAM y se marca su valor para indicar que ahora ya est en RAM. Todo este procedimiento es caro, ya que se sabe que los accesos a disco duro son del orden de decenas de veces ms lentos que en RAM. En el ejemplo anterior se mencion que cuando se necesita descargar una pgina de RAM hacia disco se debe de hacer una eleccin. Para realizar esta eleccin existen varios algoritmos, los cuales se describen enseguida. _ La primera en entrar, primera en salir: Se escoge la pgina que haya entrado primero y est cargada en RAM. Se necesita que en los valores de control se guarde un dato de tiempo. No es eficiente porque no aprovecha ninguna caracterstica de ningn sistema. Es justa e imparcial. _ La no usada recientemente: Se escoge la pgina que no haya sido usada (referenciada) en el ciclo anterior. Pretende aprovechar el hecho de la localidad en el conjunto de trabajo. La usada menos recientemente: Es parecida a la anterior, pero escoge la pgina que se us hace ms tiempo, pretendiendo que como ya tiene mucho sin usarse es muy probable que siga sin usarse en los prximos ciclos. Necesita de una bsqueda exhaustiva. La no usada frecuentemente: Este algoritmo toma en cuenta no tanto el tiempo, sino el nmero de referencias. En este caso cualquier pgina que se use muy poco, menos veces que alguna otra. La menos frecuentemente usada: Es parecida a la anterior, pero aqu se busca en forma exhaustiva aquella pgina que se ha usado menos que todas las dems. En forma aleatoria: Elige cualquier pgina sin aprovechar nada. Es justa e imparcial, pero ineficiente.

Otro dato interesante de la paginacin es que ya no se requiere que los programas estn ubicados en zonas de memoria adyacente, ya que las pginas pueden estar ubicadas en cualquier lugar de la memoria RAM.

3.7.3Segmentacin.
Segmentacin
En los sistemas de segmentacin un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real (ver Figura 3.26 [7, Deitel]).

Los bloques:

No necesitan ser de igual tamao. Los bloques separados no necesitan ser adyacentes. Deben estar compuestos de posiciones contiguas de almacenamiento.

Se complica la proteccin de bloques de memoria de un proceso de usuario. Es ms difcil limitar el rango de acceso de cualquier programa [7, Deitel]. Un esquema posible de proteccin es el uso de claves de proteccin del almacenamiento (ver Figura 3.27 [7, Deitel]):

Las claves estn bajo el control estricto del S. O. Un programa de usuario, a quien corresponde una cierta clave en la cpu, solo puede hacer referencia a los otros bloques del almacenamiento con igual clave de proteccin.

Una direccin virtual es un par ordenado v=(s,d) (ver Figura 3.28 [7, Deitel]):

s es el nmero del segmento del almacenamiento virtual en el cual residen los elementos referidos. d es el desplazamiento en el segmento s en el cual se encuentra el elemento referido.

Un proceso solo puede ejecutarse si su segmento actual (como mnimo) est en el almacenamiento primario. Los segmentos se transfieren del almacenamiento secundario al primario como unidades completas. Un nuevo segmento puede ser colocado en una serie disponible de posiciones contiguas del almacenamiento primario de tamao suficiente para alojar al segmento. La traduccin dinmica de direcciones utiliza una tabla de mapa de segmentos.

Inicio:

Fin:

Control de Acceso en Sistemas de Segmentacin Se le otorga a cada proceso ciertos derechos de acceso a todos los segmentos y se le niega completamente el acceso a muchos otros. Si un proceso tiene acceso de lectura a un segmento, puede obtener cualquier elemento de informacin contenido en ese segmento.

Si un proceso tiene acceso de escritura a un segmento, puede modificar cualquier contenido del segmento y puede introducirle informacin adicional, incluso destruir toda la informacin del segmento. Un proceso con acceso de ejecucin de un segmento puede ejecutarlo como si fuera un programa. Un proceso con acceso de adicin puede escribir informacin adicional al final del segmento, pero no puede modificar la informacin existente. En base a los tipos de control de acceso indicados pueden crearse distintos modos de control de acceso. Ejemplos de combinacin de los accesos de lectura, escritura y ejecucin para producir modos de proteccin tiles se dan en la Tabla 3.1 y en la Tabla 3.2 [7, Deitel].

Modo 0 1 2 3 4 5

Lectura Escritura N N S S S S N N N N S S

Ejecucin Explicacin N S N S N S No hay permiso de acceso Solo ejecucin Solo lectura Lectura / ejecucin Lectura / escritura pero no ejecucin Acceso no limitado

Tabla 3.1: Ejemplo de combinacin de accesos.

Modo Aplicacin 0 1 2 3 4 5 Seguridad Un programa disponible a los usuarios, que no pueden copiarlo ni modificarlo, pero s ejecutarlo Recuperacin de informacin Un programa puede ser copiado o ejecutado, pero no puede ser modificado Protege los datos contra un intento errneo de ejecutarlos Este acceso se concede a los usuarios de confianza

Tabla 3.2: Ejemplo de aplicaciones de la combinacin de accesos.

Inicio:

Fin:

Traduccin de Direcciones de Segmentacin por Transformacin Directa Existen varias estrategias para la implementacin de la traduccin de direcciones de segmentacin:

Por transformacin directa, asociativa o combinacin de asociativa / directa. Con cach suficiente para alojar la tabla completa de mapa de segmentos o cach parciales que contengan solo las entradas de los segmentos de referencia ms reciente (ver Figura 3.29 [7, Deitel]).

Se considerar la traduccin de direcciones de segmentacin con la tabla completa de mapa de segmentos en la cach. Un proceso en ejecucin hace referencia a la direccin virtual v = (s,d):

El segmento nmero s se aade a la direccin base b en el registro origen de la tabla de mapa de segmentos formando la direccin de memoria real b + s, de la entrada para el segmento s de la tabla de mapa de segmentos, que contiene la direccin del almacenamiento primario s , donde comienza el segmento. El desplazamiento d se aade a s formando la direccin real r = d + s , correspondiente a la direccin virtual v = (s,d).

Un bit de residencia, r, indica si en la actualidad el segmento se encuentra o no en el almacenamiento primario. Si el segmento se encuentra en el almacenamiento primario s es la direccin en este almacenamiento donde comienza el segmento.

Si el segmento no se encuentra en el almacenamiento primario a es la direccin en el almacenamiento secundario de donde debe recuperarse antes que el proceso pueda continuar. Se compara cada referencia a un segmento con los bits de proteccin para determinar si se permite la operacin que se est intentando. Si el segmento buscado no est en el almacenamiento primario se genera un fallo de prdida de segmento:

El S. O. obtiene el control y carga el segmento referido desde la direccin a del almacenamiento secundario. Se comprueba si el desplazamiento d es menor o igual a la longitud del segmento l : o Si no es as se genera un fallo de desbordamiento de segmento y el S. O. obtiene el control y termina la ejecucin del proceso. o Si el desplazamiento est en el rango del segmento se comprueban los bits de proteccin para asegurarse si se permite la operacin que se est intentando: Si es as entonces la direccin base del segmento, s , en el almacenamiento primario se aade al desplazamiento d formando la direccin de memoria real r = s + d, que corresponde a la direccin del almacenamiento virtual v = (s,d). Si la operacin intentada no se permite se genera un fallo de proteccin de segmento y el S. O. obtiene el control y termina la ejecucin del proceso.

Inicio:

Fin:

Compartimiento en un Sistema de Segmentacin Una de las ventajas de la segmentacin sobre la paginacin es que se trata ms de un hecho lgico que fsico:

En un sistema de segmentacin, una vez que un segmento ha sido declarado como compartido, entonces las estructuras que lo integran pueden cambiar de tamao. Lo anterior no cambia el hecho lgico de que residen en un segmento compartido.

Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas generales que apunten al mismo segmento del almacenamiento primario (ver Figura 3.30 [7, Deitel]).

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

Segmentacin pura La segmentacin se aprovecha del hecho de que los programas se dividen en partes lgicas, como son las partes de datos, de cdigo y de pila (stack). La segmentacin asigna particiones de memoria a cada segmento de un programa y busca como objetivos el hacer fcil el compartir segmentos ( por ejemplo libreras compartidas ) y el intercambio entre memoria y los medios de almacenamiento secundario. Por ejemplo, en la versin de UNIX SunOS 3.5, no existan libreras compartidas para algunas herramientas, por ejemplo, para los editores de texto orientados al ratn y mens. Cada vez que un usuario invocaba a un editor, se tena que reservar 1 megabyte de memoria. Como los editores son una herramienta muy solicitada y frecuentemente usada, se dividi en segmentos para le versin 4.x ( que a su vez se dividen en pginas ), pero lo importante es que la mayor parte del editor es comn para todos los usuarios, de manera que la primera vez que cualquier usuario lo invocaba, se reservaba un megabyte de memoria como antes, pero para el segundo, tercero y resto de usuarios, cada editor extra slo consuma 20 kilobytes de memoria. El ahorro es impresionante. Obsrvese que en la segmentacin pura las particiones de memoria son de tamao variable, en contraste con pginas de tamao fijo en la paginacin pura. Tambin se puede decir que la segmentacin pura tiene una granularidad menor que la paginacin por el taman de segmentos versus tamao de pginas. Nuevamente, para comprender mejor la segmentacin, se debe dar un repaso a la forma en que las direcciones virtuales son traducidas a direcciones reales, y para ellos se usa la figura 4.4. Prcticamente la traduccin es igual que la llevada a cabo en la paginacin pura, tomando en consideraci que el tamao de los bloques a controlar por la tabla de traduccin son variables, por lo cual, cada entrada en dicha tabla debe contener la longitud de cada segmento a controlar. Otra vez se cuenta con un registro base que contiene la direccin del comienzo de la tabla de segmentos. La direccin virtual se compone de un nmero de segmento (s) y un desplazamiento ( d ) para ubicar un byte (o palabra ) dentro de dicho segmento. Es importante que el desplazamiento no sea mayor que el tamao del segmento, lo cual se controla simplemente checando que ese valor sea mayor que la direccin del inicio del segmento y menor que el inicio sumado al tamao. Una ves dada una direccin virtual v=( s,d ), se realiza la operacin b + s para hallar el registro (o entrada de la tabla de segmentos ) que contiene la direccin de inicio del segmento en la memoria real, denotado por s'. Ya conociendo la direccin de inicio en memoria real s' slo resta encontrar el byte o palabra deseada, lo cual se hace sumndole a s' el valor del desplazamiento, de modo que la direccin real r = s'+ d. Cada entrada en la tabla de segmentos tiene un formato similar al mostrado en la figura 4.5. Se tienen campos que indican la longitud, los permisos, la presencia o ausencia y direccin de inicio en memoria real del segmento.

Segn amplios experimentos [Deitel93] sugieren que un tamao de pginas de 1024 bytes generalmente ofrece un desempeo muy aceptable. Intuitivamente parecera que el tener pginas del mayor tamao posible hara que el desempeo fuera ptimo pero no es as, a menos que la pgina fuera del tamao del proceso total. No es as con tamaos grandes de pgina menores que el proceso, ya que cuando se trae a memoria principal una pgina por motivo de un solo byte o palabra, se estn trayendo muchsimos ms bytes de los deseados. La dependencia entre el nmero de fallas respecto al tamao de las pginas se muestra en la figura 4.6. Un hecho notable en los sistemas que manejan paginacin es que cuando el proceso comienza a ejecutarse ocurren un gran nmero de fallos de pgina, porque es cuando est referenciando muchas direcciones nuevas por vez primera, despus el sistema se estabiliza, conforme el nmero de marcos asignados se acerca al tamao del conjunto de trabajo. El la figura 4.7 se muestra la relacin entre el tiempo promedio entre fallas de pgina y el nmero de marcos de pgina asignados a un proceso. All se ve que el tiempo entre fallas decrece conforme se le asignan ms pginas al proceso. La grfica se curva en un punto, el cual corresponde a que el proceso tiene un nmero de pginas asignado igual al que necesita para almacenar su conjunto de trabajo. Despus de eso, el asignarle a un proceso ms pginas que las de su conjunto de trabajo ya no conviene, ya que el tiempo promedio entre fallas permanece sin mucha mejora. Un aspecto curioso de aumentar el nmero de pginas a un proceso cuando el algoritmo de seleccin de pginas candidatas a irse a disco es la primera en entrar primera en salir es la llamada `anomala FIFO' a `anomala de Belady'. Belady encontr ejemplos en los que un sistema con un nmero de pginas igual a tres tena menos fallas de pginas que un sistema con cuatro pginas. El ejemplo descrito en [Tanxx] es injusto. Si se mira con cuidado, obviamente si se compara un sistema con 10 pginas contra otro de 5, ya de inicio el primer sistema tendr 5 fallos de pgina ms que el de 5, porque se necesitan diez fallos para cargarlo. A esto debera llamrsele `anomala de Belady con correccin.

3.7.4Sistemas de paginacin segmentacin.


Sistemas de Paginacin / Segmentacin
Ofrecen las ventajas de las dos tcnicas de organizacin del almacenamiento virtual [7, Deitel]. El tamao de los segmentos es mltiplo del de las pginas. No es necesario que todas las pginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario. Las pginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real. El direccionamiento es tridimensional con una direccin de almacenamiento virtual v = (s,p,d):

s es el nmero del segmento. p es el nmero de pgina. d es el desplazamiento en la pgina donde se encuentra asignado el elemento deseado.

Inicio:

Fin:

Traduccin Dinmica de Direcciones en Sistemas de Paginacin / Segmentacin Se considera la traduccin dinmica de direcciones de virtuales a reales en un sistema de paginacin / segmentacin utilizando la combinacin de transformacin asociativa / directa (ver Figura 3.31 [7, Deitel]).

El proceso en ejecucin hace referencia a la direccin virtual v = (s,p,d) (ver Figura 3.32 [7, Deitel]).

Las pginas de referencia ms reciente tienen entradas en un almacenamiento asociativo. Se realiza una bsqueda asociativa para intentar localizar (s,p) en el almacenamiento asociativo:

Si se encuentra (s,p), entonces el marco de pgina p en el cual reside dicha pgina en la memoria real, se concatena al desplazamiento d para formar la direccin de memoria real r correspondiente a la direccin virtual v= (s,p,d). Si no se encuentra (s,p), entonces:

o o

La direccin base b de la tabla de segmentos se aade al nmero de segmento s formando la direccin b + s de la entrada de la tabla de mapa de segmentos para el segmento s de la memoria real. La entrada de la tabla de mapa de segmentos indica la direccin base s de la tabla de pginas para el segmento s. El nmero de pgina p se aade a s formando la direccin p + s de la entrada en la tabla de pginas para la pgina p del segmento s: Indica que p es el nmero del marco correspondiente a la pgina virtual p. p se concatena con el desplazamiento d formando la direccin real r que corresponde a la direccin virtual v = (s,p,d).

Si el segmento s no se encuentra en el almacenamiento primario se produce un fallo de prdida de segmento, cuyo caso el S. O. localiza el segmento en el almacenamiento secundario, crea una tabla de pginas para el segmento y carga la pgina apropiada en el almacenamiento primario, pudiendo producir reemplazos de pginas. Si el segmento s est en el almacenamiento primario y si la referencia a la tabla de mapa de pginas indica que la pgina deseada no se encuentra en el almacenamiento primario, se produce un fallo de prdida de pgina, en tal caso el S. O. obtiene el control, localiza la pgina en el almacenamiento secundario y la carga, pudiendo reemplazar otra pgina. Si una direccin de almacenamiento virtual est ms all del final del segmento se genera un fallo de desbordamiento de segmento, el que debe ser atendido por el S. O. Si los bits de proteccin indican que la operacin que se va a ejecutar en la direccin virtual referida no se permite, se genera un fallo de proteccin de segmento, el que tambin debe ser atendido por el S. O. Si se utiliza un mecanismo de transformacin directa pura, manteniendo el mapa completo dentro del almacenamiento primario, la referencia promedio de almacenamiento virtual requerira:

Un ciclo de almacenamiento para acceder a la tabla de mapa de segmentos. Un segundo ciclo de almacenamiento para hacer referencia a la tabla de mapa de pginas. Un tercer ciclo de almacenamiento para referenciar al elemento deseado del almacenamiento real.

Cada referencia a un elemento comprende tres ciclos de almacenamiento: El sistema correra casi a 1 / 3 de su velocidad nominal. La traduccin de direcciones insumira 2 / 3 del tiempo. Con la utilizacin de registros asociativos (por ej. 16 registros), se logran velocidades de ejecucin del 90 % o ms de la velocidad total de procesamiento de sus procesadores de control.

La estructura de tablas de procesos, de mapas de segmentos y de mapas de pginas puede consumir un porcentaje importante del almacenamiento primario cuando se ejecutan un gran nmero de procesos. La traduccin procede mucho ms rpido si todas las tablas estn en el almacenamiento primario, lo que resta espacio para los procesos.

Inicio:

Fin:

Compartimiento en un Sistema de Paginacin / Segmentacin Se implementa disponiendo entradas en tablas de mapa de segmentos para diferentes procesos que apunten a la misma tabla de mapa de pginas (ver Figura 3.33 [7, Deitel]).

El compartimiento requiere una administracin cuidadosa por parte del S. O., ya sea en sistemas de paginacin, segmentacin o paginacin / segmentacin, pues se debe considerar qu sucedera si una nueva pgina reemplazara a otra pgina compartida por muchos procesos.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

Sistemas combinados La paginacin y la segmentacin puras son mtodos de manejo de memoria bastante efectivos, aunque la mayora de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginacin y la segmentacin. La idea de combinar estos esquemas se debe a que de esta forma se aprovechan los conceptos de la divisin lgica de los programas (segmentos) con la granularidad de las pginas. De esta forma, un proceso estar repartido en la memoria real en pequeas unidades (pginas) cuya liga son los segmentos. Tambin es factible as el compartir segmentos a medida que las partes necesitadas de los mismos se van referenciando (pginas). Para comprender este esquema, nuevamente se ver cmo se traduce una direccin virtual en una localidad de memoria real. Para la paginacin y segmentacon puras se puede decir que el direccionamiento es `bidimensional' porque se necesitan dos valores para hallar la direccin real. Para el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'. En la figura 4.8 [ Deitel93] se muestran las partes relevantes para lograr la traduccin de direcciones. El sistema debe contar con una tabla de procesos (TP). Por cada rengln de esa tabla se tiene un nmero de proceso y una direccin a una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se tienen los nmeros de los segmentos que componen a ese proceso. Por cada segmento se tiene una direccin a una tabla de pginas. Cada tabla de pginas tiene las direcciones de las pginas que componen a un solo segmento. Por ejemplo, el segmento `A' puede estar formado por las pginas reales `a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las pginas `f','g','j','w' y `z'. Para traducir una direccin virtual v=(s,p,d) donde `s' es el segmento, `p' es la pgina y `d' el desplazamiento en la pgina se hace lo siguiente. Primero se ubica de qu proceso es el segmento y se localiza la tabla de segmentos de ese proceso en la TP. Con `s' como ndice se encuentra un rengln ( registro) en la tabla de segmentos de ese proceso y en ese rengln est la direccin de la tabla de pginas que componen al segmento. Una vez en la tabla de pginas se usa el valor `p' como ndice para encontrar la direccin de la pgina en memoria real. Una vez en esa direccin de memoria real se encuentra el byte (o palabra) requerido por medio del valor de `d'. Ahora, en este esquema pueden haber dos tipos de fallos: por fallo de pgina y por fallo de segmento. Cuando se hace referencia a una direccin y el segmento que la contiene no est en RAM ( aunque sea parcialmente ), se provoca un fallo por falta de segmento y lo que se hace es traerlo del medio de almacenamiento secundario y crearle una tabla de pginas. Una vez caragado el segmento se necesita localizar la pgina correspondiente, pero sta no existe en RAM, por lo cual se provoca un fallo de pgina y se carga de disco y finalmente se puede ya traer la direccin deseada por medio del desplazamiento de la direccin virtual. La eficiencia de la traduccin de direcciones tanto en paginacin pura, segmentacin pura y esquemas combinados se mejora usando memorias asociativas para las tablas de pginas y segmentos, as como memorias cache para guardar los mapeos ms solicitados. Otro aspecto importante es la estrategia para cargar pginas ( o segmentos ) a la memoria RAM. Se usan ms comunmente dos estrategias: cargado de pginas por demanda y cargado de pginas anticipada. La estrategia de caragdo por demanda consiste en que las pginas solamente son llevadas a RAM si fueron solicitadas, es decir, si se hizo referencia a una direccin que cae dentro de ellas. La carga anticipada consiste en tratar de adivinar qu pginas sern solicitadas en el futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no ocurran fallos de pgina. Ese `adivinar' puede ser que se aproveche el fenmeno de localidad y que las pginas que se cargan por anticipado sean aquellas que contienen direcciones contiguas a la direccin que se acaba de refenciar. De hecho, el sistema operativo VMS usa un esquema combinado para cargar pginas: cuando se hace referencia a una direccin cuya

pgina no est en RAM, se provoca un fallo de pgina y se carga esa pgina junto con algunas pginas adyacentes. En este caso la pgina solicitada se carg por demanda y las adyacentes se cargaron por anticipacin.

3.8 Administracin de memoria virtual. 3.8.1Estrategias de administracin.


Estrategias de Administracin del Almacenamiento Virtual
Las diferentes organizaciones de almacenamiento virtual generalmente implementadas son [7, Deitel]:

Paginacin. Segmentacin. Segmentacin y paginacin.

Las estrategias para la administracin de sistemas de almacenamiento virtual condicionan la conducta de los sistemas de almacenamiento virtual que operan segn esas estrategias. Se consideran las siguientes estrategias:

Estrategias de bsqueda: o Tratan de los casos en que una pgina o segmento deben ser trados del almacenamiento secundario al primario. o Las estrategias de bsqueda por demanda esperan a que se haga referencia a una pgina o segmento por un proceso antes de traerlos al almacenamiento primario. o Los esquemas de bsqueda anticipada intentan determinar por adelantado a qu pginas o segmentos har referencia un proceso para traerlos al almacenamiento primario antes de ser explcitamente referenciados. Estrategias de colocacin: o Tratan del lugar del almacenamiento primario donde se colocar una nueva pgina o segmento. o Los sistemas toman las decisiones de colocacin de una forma trivial ya que una nueva pgina puede ser colocada dentro de cualquier marco de pgina disponible. Estrategias de reposicin: o Tratan de la decisin de cul pgina o segmento desplazar para hacer sitio a una nueva pgina o segmento cuando el almacenamiento primario est completamente comprometido.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.2

Tcnicas de reemplazo de pginas.

Reemplazo de Pgina.-

Si al momento de generarse un page fault no hubiera ningn frame disponible, se debe proceder a reemplazar una pagina de memoria. LA rutina de page fault debe ser modificada para incluir reemplazo de pginas: 1. Encontrar un frame disponible. 2. Si hay un frame disponible usarlo 3. Si no hay frames disponibles utilizar algoritmo de reemplazo de paginas para seleccionar la vctima 4. Escribir la pagina vctima a disco y actualizar tabla de paginas .

Estrategias de Reposicin de Pgina Las principales son:


El principio de optimizacin. Reposicin de pginas al azar. Primero en entrar - primero en salir. Menos recientemente usada. Menos frecuentemente usada. No usada recientemente. Conjuntos de trabajo.

El Principio de Optimizacin El principio de optimizacin indica que para obtener un rendimiento ptimo, la pgina que se va a reponer es una que no se va a utilizar en el futuro durante el perodo de tiempo ms largo. El problema es que no es factible predecir el futuro. Reposicin de Pgina al Azar Consiste en escoger al azar la pgina que va a ser reemplazada. Todas las pginas del almacenamiento principal deben tener la misma probabilidad de ser reemplazadas. Debe poder seleccionar cualquier pgina, incluyendo la que va a ser referenciada a continuacin (peor seleccin). Este esquema es raramente usado. Reposicin de Pgina por el Sistema de Primero en Entrar -Primero en Salir (FIFO) Se registra el momento en que cada pgina ingresa al almacenamiento primario. Para reemplazar una pgina, se selecciona aquella que ha estado ms tiempo almacenada.

Se presenta el inconveniente de que se pueden reemplazar pginas muy usadas, que sern llamadas de nuevo al almacenamiento primario casi de inmediato. Se puede presentar la llamada anomala FIFO:

Belady, Nelson y Shedler descubrieron que con la reposicin FIFO, ciertos patrones de referencias de pginas causan ms fallos de pginas cuando se aumenta el nmero de marcos (celdas) de pginas asignados a un proceso: en esto consiste la anomala FIFO. Esta anomala contradice a la intuicin (ver Figura 3.34 [7, Deitel]).

Reposicin de Pgina Menos - Recientemente - Usada (LRU) Esta estrategia selecciona para ser reemplazada la pgina que no ha sido usada durante el mayor perodo de tiempo. Se basa en la heurstica de que el pasado reciente es un buen indicador del futuro prximo. Requiere que cada pgina reciba un sello de tiempo cada vez que se referencia:

Puede significar una sobrecarga adicional importante. No se implementa frecuentemente.

La pgina seleccionada para reemplazo podra ser la prxima en ser requerida, por lo que habra que paginarla de nuevo al almacenamiento principal casi de inmediato.

Reposicin de Pgina Menos - Frecuentemente - Usada (LFU) Ac interesa la intensidad de uso que haya tenido cada pgina. La pgina que ser reemplazada es aquella que ha sido usada con menos frecuencia o que ha sido referida con menos intensidad. El inconveniente es que se puede seleccionar fcilmente para su reposicin la pgina equivocada:

Ej.: La pgina de uso menos frecuente puede ser la pgina de entrada ms reciente al almacenamiento principal, y por lo tanto existe una alta probabilidad de que sea usada de inmediato.

Reposicin de Pgina No Usada - Recientemente (NUR) Presupone que las pginas que no han tenido uso reciente tienen poca probabilidad de ser usadas en el futuro prximo y pueden ser reemplazadas por otras nuevas. Es deseable reemplazar una pgina que no ha sido cambiada mientras estaba en el almacenamiento primario. La estrategia NUR se implementa con la adicin de dos bits de hardware por pgina:

Bit referenciado: o = 0 si la pgina no ha sido referenciada. o = 1 si la pgina ha sido referenciada. Bit modificado (tambin llamado bit sucio): o = 0 si la pgina no ha sido modificada. o = 1 si la pgina ha sido modificada.

La seleccin de la pgina que ser reemplazada comienza buscando una pgina que no ha sido referenciada, pero si no la encuentra habr que reemplazar una pgina que ha sido referenciada. Si una pgina ha sido referenciada se comprueba si ha sido modificada o no:

Si no ha sido modificada se la reemplaza: o Su reposicin representa menos sobrecarga que la de una pgina modificada, ya que debera grabarse de nuevo en el almacenamientos secundario. Si no se encuentra una pgina que no ha sido modificada ser reemplazada una pgina modificada.

Con el transcurso del tiempo la mayora de los bits referenciados sern activados: Se pierde la capacidad para distinguir las pginas ms deseables para ser reemplazadas. Para evitarlo se ajustan peridicamente todos los bits referenciados a 0: o Se logra un nuevo inicio.

Se vuelve vulnerable al reemplazo an a las pginas activas, pero solo brevemente, mientras se reajustan los bits.

Los bits modificados no se ajustan peridicamente segn esta estrategia.

Localidad
El concepto de localidad expresa [7, Deitel]:

Los procesos tienden a hacer referencia al almacenamiento en patrones no uniformes y muy localizados.

La localidad se manifiesta en el tiempo y en el espacio: Es una propiedad emprica (observada). Nunca est garantizada pero es altamente probable. Ej.: Los procesos tienden a favorecer ciertos subconjuntos de pginas, las que tienden a ser adyacentes entre s en el espacio de direcciones virtuales del proceso. Est relacionada con la forma en que se escriben los programas y se organizan los datos. Localidad temporal : significa que las localidades de almacenamiento referenciadas recientemente tienen una alta probabilidad de ser referenciadas en un futuro prximo: Se apoya en la utilizacin de: o Formacin de ciclos (loops). o Subrutinas. o Pilas. o Variables usadas para contar y totalizar. Localidad en el espacio: significa que las referencias de almacenamiento tienden a acumularse de manera tal que, una vez que se hace referencia a una localidad, es muy probable que las localidades cercanas sean tambin referenciadas: Se apoya en la utilizacin de: o Recorrido de arreglos. o Ejecucin secuencial de cdigo. o Tendencia de los programadores a colocar definiciones de variables relacionadas, prximas entre s. Un programa puede ejecutar eficientemente mientras su subconjunto de pginas preferido se encuentre en el almacenamiento primario. El nmero de fallos de pginas de un proceso depende de la cantidad de almacenamiento primario disponible para sus pginas. Generalmente los procesos no muestran patrones de referencias aleatorios uniformemente distribuidos por sus diferentes pginas.

Al reducir el nmero de marcos (celdas) de pginas disponibles para un proceso existe un intervalo durante el cual la razn de fallos de pginas no se afecta excesivamente. En determinado punto, cuando se reduce ms el nmero de marcos de pginas, el nmero de fallos de pginas aumenta drsticamente. Mientras el subconjunto de pginas favorecidas por un proceso permanezca en el almacenamiento primario, el nmero de fallos de pginas no aumenta mucho. Tan pronto como las pginas del subconjunto favorecido son retiradas del almacenamiento primario, la actividad de paginacin del proceso aumenta en gran medida al referenciar y traer de nuevo estas pginas al almacenamiento primario. Los subconjuntos favorecidos tambin son llamados conjuntos de trabajo o working sets (ver Figura 3.35 [7, Deitel]).

Inicio:

Fin:

Conjuntos de Trabajo
Denning desarroll un punto de vista de la actividad de paginacin de un programa llamado la teora de conjunto de trabajo del comportamiento de un programa [7, Deitel]. Un conjunto de trabajo es una coleccin de pginas a las cuales un proceso hace activamente referencia.

Denning sostena que para que un programa se ejecutara eficientemente, su conjunto de trabajo debe ser mantenido en el almacenamiento primario, para evitar la hiperpaginacin. Una poltica de administracin de almacenamiento por conjunto de trabajo trata de mantener el conjunto de trabajo de los programas activos en el almacenamiento primario. La decisin de aadir un nuevo proceso al conjunto activo de procesos (aumentar el nivel de multiprogramacin):

Se basa en si hay suficiente espacio disponible en el almacenamiento primario como para acomodar el conjunto de trabajo del nuevo proceso. Se toma generalmente de forma heurstica ya que es imposible para el sistema conocer por anticipado el tamao del conjunto de trabajo de un proceso dado.

El conjunto de trabajo de pginas de un proceso w(t,w) en el momento t es el conjunto de pginas referidas por un proceso durante el intervalo de tiempo del proceso t - w a t (ver Figura 3.36 [7, Deitel]).

El tiempo del proceso es el tiempo durante el cual este proceso tiene la cpu. La variable w se denomina tamao de la ventana del conjunto de trabajo:

La determinacin del tamao de w es muy importante. Al aumentar el tamao de la ventana w aumenta el tamao del conjunto de trabajo (ver Figura 3.37 [7, Deitel]).

El verdadero conjunto de trabajo de un proceso es el conjunto de pginas que deben estar en el almacenamiento primario para la ejecucin eficaz de este proceso. Los conjuntos de trabajo cambian mientras un proceso est en ejecucin:

Complica la administracin precisa del almacenamiento primario en base a esta estrategia. Los conjuntos de trabajo son transitorios y el siguiente conjunto de trabajo del proceso puede diferir substancialmente de su conjunto de trabajo anterior. Se debe evitar un exceso de compromiso del almacenamiento primario y la consecuente hiperpaginacin.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.3Paginacin por demanda.


Paginacin por demanda.-

Es similar a lo visto para la paginacin introduciendo el concepto de swapping. Los procesos residen en el disco y al ser ejecutados deben ser cargados en memoria. Cuando un proceso va a ser ejecutado, el mismo es swappeado a memoria, utilizando lazy swapping. El lazy swapping nunca trae paginas a memoria si no van a ser ejecutadas. Se necesita determinar si un pagina esta en memoria o en disco, por lo cual se utiliza el bit de vlido / invlido de la tabla de pginas. Si el bit = 1 la pgina es valida y esta cargada en memoria si es 0 la pgina es invlida y no esta cargada en memoria (esta en disco). Cuando un proceso intenta acceder a una pgina que no esta cargada en memoria ocurre un page fault (tomo de pgina). El procedimiento para manejar un page fault es el siguiente: 1. Verificar si la referencia a la pagina es valida (se utiliza una tabla interna (generalmente llevada en PCB) donde se indica las paginas validas. 2. Si la referencia no es valida, se cancela la ejecucin del proceso. 3. Encontrar un frame disponible para cargarla (la pgina esta en disco)(por ejemplo de la free frame list) 4. Solicitar operacin de I/O para leer la pgina de disco cargarla en el frame obtenido. 5. Modificar la tabla interna y la tabla de paginas para que ahora esta pagina figure como que esta en memoria. 6. Continuar con la ejecucin del proceso en la instruccin en la que fue interrumpido.

Paginacin por Demanda Las paginas son cargadas por demanda [7, Deitel]. No se llevan pginas del almacenamiento secundario al primario hasta que son referenciadas explcitamente por un proceso en ejecucin. Las razones del atractivo de esta estrategia son:

Los resultados de computabilidad, en especial el problema de parada, indican que el camino que tomar la ejecucin de un programa no se puede predecir con exactitud. Garantiza que solo las pginas que necesita el proceso sean tradas al almacenamiento principal. La sobrecarga de proceso para decidir qu pgina traer al almacenamiento principal es mnima.

El principal inconveniente est en los procesos que requieren acumular sus pginas una por una: Los tiempos de espera de pginas son considerables. Es creciente la cantidad de almacenamiento primario afectada al proceso que espera pginas, por lo que el producto espacio - tiempo se incrementa. El producto espacio - tiempo indica la cantidad de almacenamiento que usa un proceso y la cantidad de tiempo que lo usa. La reduccin del producto espacio - tiempo de las esperas de pginas de un proceso es una meta importante de las estrategias de administracin del almacenamiento (ver Figura 3.38 [7, Deitel]).

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.4Paginacin anticipada.
Paginacin Anticipada El S. O. intenta predecir las pginas que un proceso va a necesitar y a continuacin precarga estas pginas cuando hay espacio disponible [7, Deitel]. Mientras el proceso ejecuta sus pginas actuales, el sistema carga pginas nuevas que estarn disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecucin de un proceso se puede reducir. http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.5Liberacin de pgina.
Liberacin de Pgina Un proceso usuario puede emitir una liberacin voluntaria de pgina para liberar el marco de pgina cuando ya no necesitara esa pgina [7, Deitel]. Se puede eliminar el desperdicio y acelerar la ejecucin. El inconveniente es que la incorporacin de mandatos de liberacin de pginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones. Los compiladores y S. O. deberan detectar automticamente situaciones de liberacin de pgina mucho antes de lo que es posible con estrategias de conjuntos de trabajo. http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

3.8.6Tamao de pgina.
Tamao de Pgina Generalmente el almacenamiento real se divide en marcos o celdas de pgina de tamao fijo [7, Deitel]. Los interrogantes tienen que ver con el tamao de las pginas, si todas las pginas tendrn igual tamao, si en caso de utilizar pginas de diferente tamao las pginas mayores deben ser o no mltiplos enteros de las menores, etc.

Algunas consideraciones para determinar el tamao de pgina son las siguientes:

Cuanto ms pequeo sea el tamao de una pgina, ms pginas y marcos de pginas habr y mayores sern las tablas de pginas: o El desperdicio de almacenamiento debido al tamao excesivo de las tablas de pgina se llama fragmentacin de tablas. o Esto indica la necesidad de pginas ms grandes. Con pginas grandes, grandes cantidades de informacin que nunca llegara a ser referenciada, se paginarn hacia el almacenamiento primario: o Esto indica la necesidad de pginas ms pequeas. Debido a que las transferencias de e / s del disco (paginacin) consumen bastante tiempo, se debe minimizar la paginacin que un proceso requiera: o Esto indica la necesidad de pginas grandes. Los programas tienden a mostrar la propiedad de localidad de referencia y esta localidad tiende a ser pequea: o Esto indica la necesidad de pginas pequeas. Los procedimientos y datos rara vez comprenden un nmero entero de pginas, por lo que los sistemas de paginacin experimentan una fragmentacin interna: o El desperdicio promedio es de 1 / 2 pgina no usada por segmento (grupo) de pginas, que estar en la ltima pgina del segmento. o Esto indica la necesidad de pginas pequeas.

Los tamaos de pagina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb. http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA

Unidad 4 Administracin de entrada/salida.


4.5 Dispositivos y manejadores de dispositivos (device drivers).
Dispositivos de Entrada - Salida Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos orientados a bloques y dispositivos orientados a caracteres. Los dispositivos orientados a bloques tienen la propiedad de que se pueden direccionar, esto es, el programador puede escribir o leer cualquier bloque del dispositivo realizando primero una operacin de posicionamiento sobre el dispositivo. Los dispositivos ms comunes orientados a bloques son los discos duros, la memoria, discos compactos y, posiblemente, unidades de cinta. Por otro lado, los dispositivos orientados a caracteres son aquellos que trabajan con secuencias de byes sin importar su longitud ni ningna agrupacin en especial. No son dispositivos direccionables. Ejemplos de estos dispositivos son el teclado, la pantalla o display y las impresoras.

La clasificacin anterior no es perfecta, porque existen varios dispositivos que generan entrada o salida que no pueden englobarse en esas categoras. Por ejemplo, un reloj que genera pulsos. Sin embargo, aunque existan algunos perifricos que no se puedan categorizar, todos estn administrados por el sistema operativo por medio de una parte electrnica - mecnica y una parte de software. Controladores de Dispositivos ( Terminales y Discos Duros) Los controladores de dispositivos (tambin llamados adaptadores de dispositivos) son la parte electrnica de los perifricos, el cual puede tener la forma de una tarjeta o un circuito impreso integrado a la tarjeta maestra de la computadora. Por ejemplo, existen controladores de discos que se venden por separado y que se insertan en una ranura de la computadora, o existen fabricantes de computadoras que integran esa funcionalidad en la misma tarjeta en que viene la unidad central de procesamiento (tarjeta maestra). Los controladores de dispositivos generalmente trabajan con voltajes de 5 y 12 volts con el dispositivo propiamente, y con la computadora a travs de interrupciones. Estas interrupciones viajan por el 'bus' de la computadora y son recibidos por el CPU el cual a su vez pondr en ejecucin algn programa que sabr qu hacer con esa seal. A ese programa se le llama 'manejador de disposito' (device driver). Algunas veces el mismo controlador contiene un pequeo programa en una memoria de solo lectura o en memoria de acceso aleatoria no voltil y re-escribible que interacta con el correspondiente manejador en la computadora. En la figura 6.1 se muestra un esquema simple de dispositivos orientados a bloques y otros a caracteres. Por ejemplo, la terminal (CRT) tiene un 'chip' que se encarga de enviar cadenas de bits por medio de un cable serial que a su vez son recibidos por un controlador de puerto serial en la computadora. Este 'chip' tambin se encarga de leer secuencias de bits que agrupa para su despiegue en la pantalla o para ejecutar algunas funciones de control. Lo importante en todos estos dispositivos es que se debe ejercer un mecanismo para sincronizar el envo y llegada de datos de manera concurrente. Para intercambiar datos o seales entre la computadora y los controladores, muchas veces se usan registros o secciones predefinidas de la memoria de la computadora. A este esquema se le llama 'manejo de entrada - salida mapeado por memoria' (memory mapped I/O). Por ejmplo, para una IBM PC se muestran los vectores de interrupcin y las direcciones para la entrada -salida en la tabla 6.1. Controlador Direccin(Hex) Vector de Interrupcin Reloj 040 - 043 8 Teclado 060 - 063 9 Disco Duro 320 - 32F 13 Impresora 378 - 37F 15 Monitor Mono 380 - 3BF Monitor Color 3D0 - 3DF Disco Flexible 3F0 - 3F7 14 Tabla 6.1 Direcciones de Mapeo de Entrada - Salida

4.6 Mecanismos y funciones de los manejadores de dispositivos (device drivers). 4.7 Estructuras de datos para manejo de dispositivos. 4.8 Operaciones de Entrada /salida.

Unidad 5

Sistema de archivos.
5.9 Concepto.
Sistema de Archivos: La estructura de un sistema de archivos es en forma de rbol. El sistema de archivos son los archivos y directorios. Las funciones son crear y eliminar archivos, compartir archivos para intercambiar informacin, agrupar archivos en forma conveniente al usuario, respaldo y recuperacin, el acceso de los usuarios a la informacin sin la necesidad de conocer la ubicacin fsica (sabiendo solo los nombres simblicos). Un archivo es un conjunto de informacin, que se encuentra almacenada o guardada en la memoria principal del computador, en el disco duro, en el disquete flexible o en los discos compactos (Cd-Rom). Antes de que un archivo pueda leerse o escribirse en l, debe abrirse, momento en el cual se verifican los permisos. Estos archivos se abren especificando en el computador la ruta de acceso al archivo desde el directorio raz, que es la unidad principal del disco del computador, este puede ser un disco duro o disco flexible. Entonces el sistema operativo visualiza el entorno al abrir un archivo. Uno de los problemas mas frecuentes en el manejo de archivos son los deadlock, un deadlock es una situacin no deseada de espera indefinida y se da cuando en un grupo de procesos, dos o ms procesos de ese grupo esperan por llevar a cabo una tarea que ser ejecutada por otro proceso del mismo grupo, entonces se produce el bloqueo. Los bloqueos se dan tanto en los sistemas operativos tradicionales como en los distribuidos, solo que en estos ltimos es ms difcil de prevenirlos, evitarlos e incluso detectarlos, y si se los logra detectar es muy complicado solucionarlos ya que la informacin se encuentra dispersa por todo el sistema. Una vez que un deadlock se detecta, es obvio que el sistema est en problemas y lo nico que resta por hacer es una de dos cosas: tener algn mecanismo de suspensin o reanudacin que permita copiar todo el contexto de un proceso incluyendo valores de memoria y aspecto de los perifricos que est usando para reanudarlo otro da, o simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la prdida de datos y tiempo.

Funciones del Sistema de Archivos


Los usuarios deben poder crear, modificar y borrar archivos. Se deben poder compartir los archivos de una manera cuidadosamente controlada [7, Deitel]. El mecanismo encargado de compartir los archivos debe proporcionar varios tipos de acceso controlado:

Ej.: Acceso de Lectura, Acceso de Escritura, Acceso de Ejecucin, varias combinaciones de estos, etc.

Se debe poder estructurar los archivos de la manera ms apropiada a cada aplicacin. Los usuarios deben poder ordenar la transferencia de informacin entre archivos. Se deben proporcionar posibilidades de respaldo y recuperacin para prevenirse contra:

La prdida accidental de informacin. La destruccin maliciosa de informacin.

Se debe poder referenciar a los archivos mediante Nombres Simblicos, brindando Independencia de Dispositivos. En ambientes sensibles, el sistema de archivos debe proporcionar posibilidades de Cifrado y Descifrado. El sistema de archivos debe brindar una interfase favorable al usuario:

Debe suministrar una visin lgica de los datos y de las funciones que sern ejecutadas, en vez de una visin fsica. El usuario no debe tener que preocuparse por: o Los dispositivos particulares. o Dnde sern almacenados los datos. o El formato de los datos en los dispositivos. o Los medios fsicos de la transferencia de datos hacia y desde los dispositivos.

El Sistema de Archivos
Un Archivo es un conjunto de registros relacionados [23, Tanenbaum]. El Sistema de Archivos es un componente importante de un S. O. y suele contener [7, Deitel]:

Mtodos de acceso relacionados con la manera de acceder a los datos almacenados en archivos. Administracin de archivos referida a la provisin de mecanismos para que los archivos sean almacenados, referenciados, compartidos y asegurados. Administracin del almacenamiento auxiliar para la asignacin de espacio a los archivos en los dispositivos de almacenamiento secundario. Integridad del archivo para garantizar la integridad de la informacin del archivo.

El sistema de archivos est relacionado especialmente con la administracin del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco. Una forma de organizacin de un sistema de archivos puede ser la siguiente:

Se utiliza una raz para indicar en qu parte del disco comienza el directorio raz . El directorio raz apunta a los directorios de usuarios. Un directorio de usuario contiene una entrada para cada uno de los archivos del usuario. Cada entrada de archivo apunta al lugar del disco donde est almacenado el archivo referenciado.

Los nombres de archivos solo necesitan ser nicos dentro de un directorio de usuario dado. El nombre del sistema para un archivo dado debe ser nico para el sistema de archivos.

En sistemas de archivo jerrquicos el nombre del sistema para un archivo suele estar formado como el nombre de la trayectoria del directorio raz al archivo.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO4.htm

5.10Nocin de archivo real y virtual.


Nocin de archivo real y virtual.
Un archivo virtual, es un archivo de uso temporal que es utilizado por los procesos del sistema mientras se estn ejecutando dichos procesos. Estos archivos se crean durante la ejecucin de un sistema y los utiliza para el almacenamiento de informacin, intercambio y organizacin mientras se ejecuta el sistema, su tamao es muy variable y terminan al detener la ejecucin del sistema, muchos de ellos son borrados, por ejemplo, los archivos *.tmp Archivo Real: Es un objeto que contiene programas, datos o cualquier otro elemento. En UNIX se define un File System como un sistema de software dedicado a la creacin, destruccin, organizacin y lectura, escritura y control de acceso de los archivos, funcionalmente los componentes de un sistema de archivos son lenguajes de comandos, interpretador de comandos, manejador del almacenamiento secundario, sistema de entrada y salida y mecanismos de respaldo y recuperacin.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_42.html Archivos
Se considerar el punto de vista del usuario. Nombre de los Archivos Las reglas exactas para los nombres de archivos varan de sistema a sistema [23, Tanenbaum]. Algunos sistemas de archivos distinguen entre las letras maysculas y minsculas, mientras que otros no. Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto:

La parte posterior al punto es la extensin de archivo y generalmente indica algo relativo al archivo, aunque las extensiones suelen ser meras convenciones.

Estructura de un Archivo Los archivos se pueden estructurar de varias maneras, las ms comunes son [23, Tanenbaum]:

Secuencia de bytes: o El archivo es una serie no estructurada de bytes. o Posee mxima flexibilidad. o El S. O. no ayuda pero tampoco estorba. Secuencia de registros: o El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna. rbol : o El archivo consta de un rbol de registros, no necesariamente de la misma longitud. o Cada registro tiene un campo key (llave o clave) en una posicin fija del registro. o El rbol se ordena mediante el campo de clave para permitir una rpida bsqueda de una clave particular.

Tipos de Archivos Muchos S. O. soportan varios tipos de archivos, por ej.: archivos regulares, directorios, archivos especiales de caracteres, archivos especiales de bloques, etc., donde [23, Tanenbaum]:

Los Archivos Regulares son aquellos que contienen informacin del usuario. Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos. Los Archivos Especiales de Caracteres: o Tienen relacin con la e / s. o Se utilizan para modelar dispositivos seriales de e / s (terminales, impresoras, redes, etc.). Los Archivos Especiales de Bloques se utilizan para modelar discos.

Acceso a un Archivo Los tipos de acceso ms conocidos son:

Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder: o Saltar registros. o Leer en otro orden. Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos mtodos para determinar el punto de inicio de la lectura: o Cada operacin de lectura (read) da la posicin en el archivo con la cual iniciar. o Una operacin especial (seek) establece la posicin de trabajo pudiendo luego leerse el archivo secuencialmente.

Atributos de Archivo Cada archivo tiene:

Su nombre y datos. Elementos adicionales llamados atributos, que varan considerablemente de sistema a sistema.

Algunos de los posibles atributos de archivo son [23, Tanenbaum]: Proteccin: quin debe tener acceso y de qu forma. Contrasea: contrasea necesaria para acceder al archivo. Creador: identificador de la persona que cre el archivo. Propietario: propietario actual. Bandera exclusivo - para - lectura: 0 lectura / escritura, 1 para lectura exclusivamente. Bandera de ocultamiento: 0 normal, 1 para no exhibirse en listas. Bandera de sistema: 0 archivo normal, 1 archivo de sistema. Bandera de biblioteca: 0 ya se ha respaldado, 1 necesita respaldo. Bandera ascii / binario: 0 archivo en ascii, 1 archivo en binario. Bandera de acceso aleatorio: 0 solo acceso secuencial, 1 acceso aleatorio. Bandera temporal: 0 normal, 1 eliminar al salir del proceso. Banderas de cerradura: 0 no bloqueado, distinto de 0 bloqueado. Longitud del registro: nmero de bytes en un registro. Posicin de la llave: ajuste de la llave dentro de cada registro. Longitud de la llave: nmero de bytes en el campo llave. Tiempo de creacin: fecha y hora de creacin del archivo. Tiempo del ltimo acceso: fecha y hora del ltimo acceso al archivo. Tiempo de la ltima modificacin: fecha y hora de la ltima modificacin al archivo. Tamao actual: nmero de bytes en el archivo. Tamao mximo: tamao mximo al que puede crecer el archivo. Operaciones con Archivos Las llamadas ms comunes al sistema relacionadas con los archivos son [23, Tanenbaum]:

Create (crear): el archivo se crea sin datos. Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan automticamente un archivo no utilizado durante n das. Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista de direcciones en disco a la memoria principal para un rpido acceso en llamadas posteriores. Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno. Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos. Write (escribir): los datos se escriben en el archivo, en la posicin actual. El tamao del archivo puede aumentar (agregado de registros) o no (actualizacin de registros). Append (aadir): es una forma restringida de write. Solo puede aadir datos al final del archivo.

Seek (buscar): especifica el punto donde posicionarse. Cambia la posicin del apuntador a la posicin activa en cierto lugar del archivo. Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo. Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creacin del archivo. La informacin relativa al modo de proteccin y la mayora de las banderas son un ejemplo obvio. Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.

Archivos Mapeados a Memoria Algunos S. O. permiten asociar los archivos con un espacio de direcciones de un proceso en ejecucin [23, Tanenbaum]. Se utilizan las llamadas al sistema map y unmap:

Map: utiliza un nombre de archivo y una direccin virtual y hace que el S. O. asocie al archivo con la direccin virtual en el espacio de direcciones, por lo cual las lecturas o escrituras de las reas de memoria asociadas al archivo se efectan tambin sobre el archivo mapeado. Unmap: elimina los archivos del espacio de direcciones y concluye la operacin de asociacin.

El mapeo de archivos elimina la necesidad de programar la e / s directamente, facilitando la programacin. Los principales problemas relacionados son:

Imposibilidad de conocer a priori la longitud del archivo de salida, el que podra superar a la memoria. Dificultad para compartir los archivos mapeados evitando inconsistencias, ya que las modificaciones hechas en las pginas no se vern reflejadas en el disco hasta que dichas pginas sean eliminadas de la memoria.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO4.htm

5.11Componentes de un sistema de archivos.


COMPONENTE DE UN SISTEMA DE ARCHIVO EL SISTEMA DE ARCHIVOS DE UN SISTEMA OPERATIVO. Lo conforman todas aquellas rutinas encargadas de administrar todos los aspectos relacionados con el manejo de Archivos.

COMPONENTES DEL SISTEMA DE ARCHIVOS. En general, un Sistema de Archivos est compuesto por: Mtodos De Acceso, Administracin De Archivos, Administracin De Almacenamiento Secundario, Mecanismos De Integridad. Mtodos De Acceso. Se ocupan de la manera en que se tendr acceso a la informacin almacenada en el archivo. Ejemplo: Secuencial, Directo, indexado, etc. Administracin De Archivos. Se ocupa de ofrecer los mecanismos para almacenar, compartir y asegurar archivos, as como para hacer referencia a ellos. Administracin De Almacenamiento Secundario. Se ocupa de asignar espacio para los archivos en los dispositivos de almacenamiento secundario. Mecanismos De Integridad. Se ocupan de garantizar que no se corrompa la informacin de un archivo, de tal manera que solo la informacin que deba estar en el, se encuentre ah.

Componentes de un sistema de archivos.


1 2 3 4 5 6 MECANISMOS DE ORGANIZACION LOGICA DIRECTORIO DE IDENTIFICADORES SISTEMAS TEORICOS DE ARCHIVOS MECANISMOS DE ORGANIZACION FISICA MECANISMOS DE E/S SCHEDULING E/S Reg. lgico

Reg. fsico

Figura # 1. Componentes, niveles de un sistema de archivos.

1. Contiene las diferentes rutinas y comandos atravz de los cuales el usuario podr estructurar sus archivos virtuales. 2. Convierte los identificadores simblicos de los archivos en identificadores internos, los cuales apuntarn a su descriptor o a una estructura que permite encontrar el archivo. 3. Su objetivo es el de activar y desactivar a travs de las rutinas de abrir y cerrar archivos y verifica el modo de acceso.

4. Traslada las direcciones lgicas en direcciones fsicas correspondientes a las estructuras de memoria secundaria y los buffers en memoria principal necesarios para la transferencia de datos. 5. Por cada peticin de acceso al archivo real, este mecanismo genera la secuencia de operaciones elementales de entrada y salida que se necesita. 6. En este nivel es donde se tiene el nmero de peticiones pendientes as como de las que se estn realizando y lleva el control y asignacin de tiempo de CPU a las diferentes peticiones de E/S. http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_43.html

5.12Organizacin lgica y fsica.


ORGANIZACIN LOGICA Y FISICA ORGANIZACIN DE ARCHIVOS Se refiere a las diferentes maneras en las que puede ser organizada la informacin de los archivos, as como las diferentes maneras en que sta puede ser accesada. Dado que hay 2 niveles de visin de los archivos (fsico y lgico), se puede hablar tambin de 2 aspectos de organizacin de archivos: Organizacin de archivos lgicos y de archivos fsicos. DE ARCHIVOS LOGICOS. Contempla la organizacin desde el punto de vista lgico. Por ejemplo, secuencial, directo, etc. DE ARCHIVOS FISICOS. Contempla la administracin de archivos desde la perspectiva fsica, particularmente la organizacin del almacenamiento en disco a nivel de pistas y sectores. Este tipo de organizacin muestra a su vez, 2 aspectos importantes: Mtodos De Asignacin De Espacio Libre y Asignacin De Espacio De Almacenamiento Del Archivo.

Organizacin lgica y fsica.

La organizacin de archivos es de dos tipos lgica y fsica. Organizacin lgica, existen tres organizaciones comunes de un archivo. La primera es una simple secuencia de bytes . Figura # 2. 1 Byte

Los archivos de UNIX se estructuran de esta manera.

La segunda es una sucesin de registros de tamao fijo.

1 Registro Pueden leerse o escribirse registros arbitrarios, pero no pueden insertarse o suprimirse registros a la mitad de un archivo.

La tercera organizacin es un rbol de bloques de disco, donde cada cavidad contiene n registros con clave. Los registros pueden cerrarse por clave y pueden insertarse otros en cualquier parte del rbol.

Hormig Zorra Cerd a o Gato Vaca Perro Cabr a Ibis Len Bho Pony Rata Gusan o

Gallin a

Corder o

Figura # 2. Organizacin de archivos

Si se agrega un registro a un bloque que est repleto, ste se divide en su secuencia alfabtica correcta. Este mtodo se aplica en muchas macrocomputadoras, donde se llaman ISAM (mtodo de acceso secuencia indizado). La organizacin fsica es llevada a cabo en un sistema por medio de Directorios. Para llevar el control de los archivos, el sistema de archivos proporciona directorios, los cuales en muchos sistemas, son archivos. Un directorio suele tener varias entradas, una por archivo. Figura # 3.

Directorio Entrada Entrada Entrada Entrada

Figura # 3.

Informacin acerca de cada Nombre del archivo archivo Tipo de archivo Propietario Informacin de proteccin Conteo de uso Tiempo de creacin Tiempo de la ltima modificacin Lista de bloques del disco que se usan

Un directorio puede tener varias entradas, donde cada un describe un archivo. Las entradas pueden contener cierta informacin acerca del archivo o bien apuntar a otras estructuras que la tengan. La manera ms simple consiste en que el sistema conserve un solo directorio que contenga todos los archivos de todos los usuarios. Si hay muchos usuarios y stos eligen los mismos nombres de archivos (por ejemplo, mail y games), habr conflictos y la confusin volvern el sistema impracticable. Este modelo de sistema es utilizado solamente por los sistemas operativos de microcomputadoras ms primitivos. Una mejora a la idea de tener un solo directorio para todos los archivos consiste en tener un directorio por usuario. Figura # 4.

Directorio Raz

Directorio del usuario C

Archivo Figura # 4. Un directorio por usuario.

Este mtodo elimina conflictos de nombre entre los usuarios, pero no es muy satisfactorio para usuarios con muchos archivos. Es necesaria una jerarqua general (o sea, un rbol de directorios). Con este mtodo, cada usuario puede tener tantos directorios como se necesiten de manera que los archivos se puedan agrupar en formas naturales. Cuando el sistema de archivos se organiza como un rbol de directorios, se necesita contar con alguna manera de especificar nombres de archivos. Comnmente se emplean dos mtodos: Nombre de ruta absoluta. Que consta de la ruta que va del directorio raz al archivo. Ejem: La ruta /usr/ast/mailbox el directorio raz contiene un subdirectorio usr el cual contiene un subdirectorio ast, que contiene el archivo mailbox. Los nombres de ruta absoluta siempre comienzan en el directorio raz y son nicos. Nombre de ruta relativa. Se utiliza junto con el concepto directorio de trabajo ( directorio actual). Un usuario puede designar un directorio como el directorio de trabajo actual. En UNIX, todos los nombres de ruta que comienzan con una diagonal / son absolutos; todos los otros son relativos al directorio de trabajo actual del usuario. Si el directorio de trabajo actual es /usr/ast/mailbox puede referirse simplemente como mailbox.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_44.html

5.13Mecanismos de acceso a los archivos.


Mecanismos de acceso a los archivos.
Existen varios mecanismos para accesar los archivos: Directorios, descriptores de archivos, mecanismos de control de acceso y procedimientos para abrir y cerrar archivos. Descriptores de archivos. A cada uno de los archivos se le asigna un descriptor el cual contendr toda la informacin que necesitar el sistema de archivos para ejecutar con l los comandos que se le soliciten. El descriptor se mantendr en memoria principal desde que el archivo es abierto hasta que sea cerrado, y debe tener al menos la siguiente informacin, identificacin del archivo, lugar de almacenamiento, informacin del modo de acceso. Identificacin del archivo consiste de dos partes que es el nombre simblico que es el que le da el usuario y un identificador interno que es asignado por el sistema operativo (nmero). Lugar de almacenamiento as como el tamao del archivo. Modo de acceso. Se debe indicar en forma explcita quien puede accesar el archivo y conque derecho. El sistema de archivos es un componente importante de cualquier sistema operativo, en general contienen: Mtodos de acceso: Se ocupan de la forma en que se obtiene acceso a los datos almacenados en archivos. Administracin de archivo. Se ocupa de ofrecer los mecanismos para almacenar, compartir y asegurar archivos, y hacer referencia a ellos. Administracin de almacenamiento secundario: Se ocupa de asignar espacio a los archivos en dispositivos de almacenamiento secundario. Mecanismos de integridad de los archivos: Se ocupan de garantizar que no se corrompa la informacin en un archivo. Cuando se asegura la integridad de los archivos, cualquier informacin que debe estar en un archivo estar ah, la informacin que no deba estar en un archivo se mantiene fuera de l.

http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_45.html

5.14Manejo de espacio en memoria secundaria.


Manejo del espacio de memoria secundaria.
El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario, sobre todo el espacio en disco. El manejo del espacio libre en disco se lleva a cabo de la siguiente manera: Vector de bits

Lista ligada (lista libre) Por conteo (agrupacin)

Vector de bits. El espacio libre en disco es frecuentemente implementado como un mapa de bits, donde cada blokc es representado por un bit y si el bloc es libre el bit es cero de lo contrario est asignado. 11000111 Lista ligada. Una lista ligada de todos los blocks libres. Otra implantacin se consigue guardando la direccin del primer block libre y el nmero de los blocks libres contiguos que le siguen. Cada entrada de la lista de espacio libre consiste de una direccin de disco y un contador (por conteo), ver figura # 5. N de block contiguos (2,2 y 4)

Bloc libre de inicio

Figura # 5. Lista ligada.

Por agrupacin. Se almacena la direccin en n blocks libres en el primer block libre y el ltimo contiene la direccin de otro block que contiene la direccin de otros blocks libres, ver figura # 6.

Figura # 6. Agrupacin.

Para manejar los espacios en disco existen los siguientes mtodos: Contiguos

Ligados Indexados Contiguos. Esta asignacin requiere que cada archivo ocupe un conjunto de direcciones contiguas en el disco, su asignacin es definida por la direccin del primer bloc y la longitud del archivo. Asignacin ligada. Cada archivo es una lista ligada de blocks y el directorio contiene un apuntador al primer bloc y al ltimo. Figura # 7. Nombre A Inicio 1 Final 50

Acceso
50

Secuencial S Directo No

NOTA: - Lento - Evita la compactacin

Figura # 7. Asignacin ligada.

Asignacin Indexada. Cada archivo tiene su propio bloc de ndice el cual es un arreglo de direcciones de bloc

En un sistema de cmputo, los elementos que se declaran para almacenamiento son los Fyle System. Cundo existe una solicitud de almacenamiento o manejo de bloc libres en un file system surge una interrogante cmo atenderlas? esto se lleva a cabo mediante una planificacin de discos y para esto existen las siguientes polticas de planificacin. a) FCFS b) SSTF b) SCAN c) SCAN de n-pasos d) C-SCAN

f) Esquema Eschenbach http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_46.html

5.15Modelo jerrquico.

5.16Mecanismos de recuperacin en caso de falla.


Mecanismos de recuperacin en caso de fallos.
La perdida de la informacin es uno de los factores que se le debe de dar mayor importancia, por la sencilla razn de que al perder informacin se puede perder lo que no nos podemos imaginar en cuanto a la misma y ocasionar perdidas hasta hablar de una gran cantidad de dinero. Para solucionar este o estos problemas todo sistema operativo cuenta con al menos una herramienta de software que nos permite recuperar informacin perdida hasta cierta medida, esto obedece de acuerdo al dao causado o los daos. Si el sistema no cuenta con la herramienta necesaria, deber adquirirse el software apropiado de algn fabricante especializado en el ramo, por ejemplo Norton. http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_48.html

Unidad 6 Proteccin y seguridad.


6.1 Concepto y objetivos de proteccin.
Proteccion.-

Refiere a los mecanismo para controlar el acceso de programas, usuarios o proceso a los recursos definido en el sistema. Un sistema es un conjunto de recursos (CPU, memoria, impresoras, etc.) en donde cada objeto o recurso tiene un nombre nico. Las operaciones que se pueden hacer sobre cada objeto dependen del objeto.
Dominios de proteccion.-

Cada proceso opera dentro de su dominio de proteccin, que indica las operaciones que el proceso puede hacer sobre un determinado conjunto de objetos. La habilidad de un proceso de ejecutar una operacin sobre un objeto se denomina derecho (acces right). Un dominio es un conjunto de derechos cada uno de los cuales es un par ordenado <objeto, lista de derechos> Un dominio puede estar definido de varias formas: Un usuario es un dominio. El conjunto de objetos que pueden ser accedidos dependen de la identidad del usuario. Un proceso es un domino. El conjunto de objetos que pueden ser accedidos dependen de la identidad del proceso. Un procedimiento es un dominio.

Proteccin
La aparicin de la multiprogramacin introdujo en los computadores la posibilidad de compartir recursos entre varios usuarios. Entre los recursos compartidos estn la CPU, la memoria, los dispositivos de entrada/salida, los programas y los datos. El hecho de poder compartir recursos es lo que introdujo la necesidad de proteccin. Existen varios motivos por lo que la proteccin es necesaria. El ms obvio es la necesidad de prevenir intentos de violacin de restricciones de acceso por parte de un usuario. El ms importante es, sin embargo, la necesidad de asegurar que cada proceso use los recursos del sistema de forma consistente de acuerdo con las polticas establecidas para el uso de esos recursos. Este requisito es fundamental para que un sistema sea fiable. El papel de la proteccin en un sistema informtico es proporcionar un conjunto de mecanismos que permita llevar a cabo las polticas que gobiernan el uso de los recursos. Estas polticas pueden ser fijas, establecidas en el diseo del sistema operativo, pueden ser formuladas por el administrador del sistema, o incluso puede ser establecidas por los usuarios. Un principio importante es la separacin entre poltica y mecanismo. Los mecanismos determinan hacer cierta cosa, mientras que las polticas deciden es lo que hay que hacer. En el mbito de la proteccin, la poltica define qu datos han de ser protegidos y el mecanismo la forma de llevar a cabo la poltica. Esta separacin favorece la flexibilidad. Debido a que las polticas pueden cambiar con el tiempo o con el lugar, es deseable que el sistema operativo ofrezca un conjunto general de mecanismos por medio de los cuales se puedan establecer polticas diferentes.

3.4.1 Dominios de Proteccin.


Un computador contiene un conjunto de objetos que han de ser protegidos. Estos objetos pueden ser tanto hardware (CPUs, segmentos de memoria, discos, impresoras, etc.) como software (procesos, ficheros, semforos, etc.). Cada objeto tiene un identificador nico en el

sistema y un conjunto de operaciones que le pueden ser aplicadas. Las operaciones posibles dependen del objeto. Por ejemplo, los segmentos de memoria pueden ser ledos o escritos, mientras que un fichero puede ser creado, abierto, ledo, escrito, cerrado y borrado. El mecanismo de proteccin ha de prohibir a los procesos el acceso a aquellos objetos. Para estudiar los diferentes mecanismos de proteccin se introduce el concepto de dominio de proteccin. Un dominio de proteccin es un conjunto de pares objeto-derechos, de forma que cada par especifica un objeto y algn subconjunto de operaciones que se pueden realizar sobre dicho objeto.

Figura #. 7

Ejemplos de dominio de proteccin.

En cada instante de tiempo, cada proceso se ejecuta dentro de un dominio concreto. Este dominio puede cambiar durante la vida del proceso.

Un dominio puede ser varias cosas: Cada usuario puede ser un dominio, en cuyo caso el conjunto de objetos que puede ser accedido depende de la identidad del usuario. Los cambios de dominio ocurren cuando se cambia de usuario. Cada proceso puede ser un dominio, en cuyo caso el conjunto de objetos que puede ser accedido depende de la identidad del proceso. Los cambios de dominio se producen cuando un proceso enva un mensaje a otro y espera la respuesta. Cada procedimiento puede ser un dominio, en cuyo caso el conjunto de objetos que puede ser accedido se corresponde con las variables locales definidas dentro del procedimiento. Los cambios de dominio se producen cuando se realiza una llamada a procedimiento. En UNIX el dominio de un proceso lo determina su uid y su gid. Dado un par de estos dos identificadores, es posible obtener un lista de todos los objetos que puede utilizar, y si pueden ser accedidos para lectura, escritura y/o ejecucin. Adems, en UNIX cada proceso tiene dos partes, la parte de usuario y la parte de ncleo. Cuando un proceso invoca una llamada al sistema pasa a ejecutarse en modo ncleo. Este cambio de modo de ejecucin da lugar a un cambio de dominio. Cuando un proceso UNIX realiza una llamada exec() sobre un fichero que tiene uno

de los bits SETUID o SETGID a uno adquiere un nuevo uid o gid efectivo. Esto tambin provoca un cambio de dominio. El sistema operativo debe de conocer en todo momento los objetos que pertenecen a cada dominio. Una forma de llevar este control es tener una matriz de acceso, en la que las filas son los dominios y las columnas los objetos. Cada elemento de la matriz muestra los derechos de un dominio sobre un objeto.

Figura #. 8

Ejemplo de matriz de acceso.

Los cambios de dominio se pueden incluir fcilmente en la matriz de proteccin considerando que cada dominio es a su vez un objeto sobre el que existe una operacin que permite entrar en l.

Figura #. 9

Matriz de acceso con dominio.

En la prctica no es viable almacenar la matriz de proteccin porque es grande y tiene muchos huecos (sparse matrix). La mayora de los dominios no tiene acceso a la mayora de los objetos, por lo que almacenar una gran matriz casi vaca desperdicia mucho espacio en disco. Dos soluciones prcticas consisten en almacenar la matriz, bien por filas, bien por columnas, y almacenar nicamente los elementos no vacos. En el primer caso se habla de capacidades, y en el segundo, de listas de control de acceso.

3.4.2 Listas de Control de Acceso.

Cuando la matriz se almacena por columnas, a cada objeto se le asocia una lista ordenada que contiene todos los dominios que pueden acceder al objeto y la forma de hacerlo. Esta lista se denomina lista de control de acceso (control access list o ACL). En UNIX esta lista est compuesta por tres grupos de tres bits, especificando cada grupo los permisos para el propietario, grupo y resto de usuarios, y los tres bits indican si existe permiso de lectura, escritura y/o ejecucin. Sin embargo, un esquema basado en listas de control de acceso puede ser ms general:

El propietario de un objeto puede modificar la lista de control de acceso del mismo. El nico problema es que los cambios pueden no afectar a los usuarios que ya estn usando el objeto.

3.4.3 Capacidades
La otra forma de almacenar la matriz de proteccin es por filas. Con este mtodo, cada proceso tiene una lista de los objetos a los que puede acceder as como una indicacin de las operaciones que estn permitidas sobre cada uno de ellos. Esta lista se denomina lista de capacidades (listas_C o C_lists), y cada elemento de la lista se llama capacidad. Cada objeto est representado por una capacidad. Cuando un proceso quiere ejecutar una operacin sobre un objeto, ha de especificar la capacidad del objeto como parmetro. La simple posesin de la capacidad permite que se conceda el acceso (siempre que ste est permitido sobre el objeto). Cada capacidad tiene un campo que indica el tipo del objeto, un campo de derechos de acceso, y un campo que identifica al objeto.

Figura #. 10

Lista de capacidades para el dominio 2 de la figura 8.

Las listas de capacidades se asocian a un dominio, pero los procesos que se ejecutan en ese dominio no deben de acceder a la lista de forma directa. Por el contrario, cada capacidad es un objeto protegido que debe ser gestionado por el sistema operativo y nicamente puede ser accedido de forma indirecta por parte de los procesos. Generalmente, suelen ser referenciadas por

su posicin dentro de la lista de capacidades. Las listas de capacidades son tambin objetos, por lo que pueden ser apuntadas desde otras listas, permitiendo el compartir subdominios. Para proporcionar proteccin, las capacidades se han de distinguir de otro tipos de objetos. Cada objeto tiene asociado una etiqueta que indica si se trata de un objeto o de una capacidad. Las etiquetas no deben ser accesibles directamente por los programas de aplicacin. Una solucin hardware consiste en aadir a cada palabra de memoria un bit adicional que indica si la palabra de memoria contiene una capacidad. Este bit slo se puede ser modificado por el sistema operativo. Si se aaden ms bits, el hardware podr conocer los tipos de los objetos (si son enteros, reales). Dividir el espacio de direcciones de un programa en dos zonas. La primera es accesible al programa y contiene las instrucciones y los datos. La segunda contiene la lista de capacidades y es accesible nicamente por el sistema operativo. Mantener las capacidades en el espacio de usuario, pero encriptadas con una clave secreta desconocida para el usuario. Este mtodo es empleado por el sistema operativo Amoeba. Se tienen acceso relativos a cada objeto, las capacidades tienen permisos genricos que son aplicables a todos los objetos. Algunos de estos permisos son: Copiar capacidad: crear una nueva capacidad para el mismo objeto. Copiar objeto: Crear un objeto duplicado con una nueva capacidad. Eliminar capacidad: borrar de forma permanente una entrada de la lista_C, pero dejando inalterado al objeto. Eliminar objeto: eliminar de forma permanente un objeto y su capacidad. Los sistemas basados en capacidades se suelen organizar como una coleccin de mdulos, siendo cada mdulo un gestor para cada tipo de objeto. Por ejemplo, las operaciones sobre ficheros se envan al gestor de ficheros, mientras que las que tiene que ver con memoria se envan al gestor de memoria. Cada operacin va acompaada de la capacidad correspondiente. Un problema que tiene este esquema basado en mdulos gestores es que stos son, a su vez, programas ordinarios. Pongmonos en el caso de un gestor de ficheros. Las capacidades asociadas a ficheros permiten a los programas las operaciones tpicas sobre stos (apertura, lectura, etc.). Sin embargo, el gestor de ficheros ha de ser capaz de acceder a la representacin interna de los ficheros (en UNIX, por ejemplo, habra que acceder a los nodos ndice). Por lo tanto, es esencial que los mdulos gestores tengan ms atribuciones de las que las capacidades permiten a los procesos ordinarios. Este problema se resuelve en el sistema Hydra mediante una tcnica llamada amplificacin de derechos, que consiste en que a los mdulos gestores se les asigna una plantilla de permisos que les permiten obtener ms derechos sobre los objetos de los que les permiten las capacidades.

Un problema que se presentan en los sistemas basados en capacidades es que es difcil revocar los accesos a un objeto, ya que ello supone localizar todas las capacidades que hacen referencia al objeto, y stas se encuentran en las listas de capacidades, que se encuentran repartidas por todo el disco. Una solucin a este problema consiste en que una capacidad no apunte al objeto en s, sino a un objeto indirecto que apunta al objeto. De esta forma, si se quiere prohibir los accesos, basta con romper el enlace entre el objeto indirecto y el objeto. Otra posibilidad consiste en asociar a cada objeto un nmero aleatorio, que tambin est presente en la capacidad. Cuando se presenta una capacidad al solicitar un acceso, los dos nmeros son comparados y el acceso se permite si la comparacin ha tenido xito. La forma de revocar los accesos consiste en que el propietario del objeto puede solicitar que el nmero aleatorio del objeto sea cambiado, lo que automticamente invalida el resto de las capacidades. http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_34.html

6.2 Funciones del sistema de proteccin.


FUNCIONES DE UN SISTEMA DE PROTECCIN. Dado que los sistemas de computo se han venido haciendo cada vez ms sofisticados en sus aplicaciones, la necesidad de proteger su integridad, tambin ha crecido. Los aspectos principales de proteccin en un Sistema Operativo son: 1. Proteccin de los procesos del sistema contra los procesos de usuario. 2. Proteccin de los procesos de usuario contra los de otros procesos de usuario. 3. Proteccin de Memoria. 4. Proteccin de los dispositivos.

Funciones de un sistema de proteccin.


Dado que los sistemas de cmputo se han venido haciendo cada vez ms sofisticados en sus aplicaciones, la necesidad de proteger su integridad, tambin ha crecido. Los aspectos principales de proteccin en un Sistema Operativo son: 1. 2. 3. 4. Proteccin de los procesos del sistema contra los procesos de usuario. Proteccin de los procesos de usuario contra los de otros procesos de usuario. Proteccin de Memoria. Proteccin de los dispositivos. Proteccin = Control de empleo de la informacin + Recursos FUNCIONES:

Las funciones de un sistema de proteccin son asegurar la independencia entre objetos que lgicamente son independientes y la de asegurar el control de acceso a la informacin y puede ser control asociado al tipo de informacin o puede ser el control asociado al usuario que solicita el acceso. Todos los mecanismos dirigidos a asegurar el sistema informtico, siendo el propio sistema el que controla dichos mecanismos, se engloban en lo que podemos denominar seguridad interna.

Seguridad del procesador


Los mecanismos de proteccin de procesador son: Estados protegidos (kernel) o no protegidos (usuarios). Reloj hardware para evitar el bloqueo del procesador.

Seguridad de la memoria
Se trata de mecanismos para evitar que un usuario acceda la informacin. Entre ellos citaremos dos: Registros lmites o frontera. Estado protegido y no protegido del procesador.

Adems se emplean para la memoria mtodos como el de utilizar un bit de paridad o el checksum. Bit de paridad. Consiste en aadir un bit a cada octeto o palabra que se transmita para con l conseguir que la suma de unos sea par (paridad par) o impar (paridad impar). Con este mtodo se detectan errores al variar un bit o un nmero impar de ellos sin que se detecten variaciones de un nmero par de bits. Si se prev que los daos esperados en una transmisin no sean de un bit en un octeto o palabra, sino en una secuencia de ellos, se puede utilizar un algoritmo que permita realizar una suma denominada suma de chequeo (checksum) y aplicar el mtodo denominado de redundancia cclica durante la transmisin, de tal forma que al terminar ste se repite con el destino el mismo algoritmo de suma, comprobndose si el valor final de la suma es el mismo.

Seguridad de los archivos


La finalidad principal de las computadoras es el del tratamiento de la informacin que se almacena permanentemente en los archivos. La prdida o alteracin no deseada de la informacin causa trastornos irreparables en algunos casos. Por eso es necesario tomar medidas de seguridad que se deben enfocar desde dos aspectos diferentes: La disponibilidad y la privacidad de los archivos.

1) Disponibilidad de los archivos


Un archivo debe tener la informacin prevista y estar disponible en el momento que un usuario la necesite. Se debe de tener presente la necesidad de asegurar las circunstancias y se deben realizar las siguientes acciones: .Copias de seguridad (Backup). Consiste en que cada cierto tiempo (hora, da, semana ...) se realice una copia del contenido de los archivos, de forma que si se destruyen stos, es posible la recuperacin de los datos a partir de la ltima de las copias. La operacin de realizar las copias y la recuperacin a partir de las mismas, se realizan por medio de programas de utilidad del sistema operativo. .Archivos log. Se usan en sistemas de tiempo compartido, con muchos usuarios trabajando simultneamente, en estos sistemas se recurre a archivos auxiliares donde se registran todas las operaciones que realiza un usuario sobre sus archivos, almacenndose la nueva informacin o aquella que difiere de la ya existente. Estos archivos reciben el nombre de archivos log y son tratados por utilidades del sistema operativo conjuntamente con las copias de seguridad para los procesos de recuperacin. Esta segunda tcnica permite asegurar la consistencia del contenido de los archivos ante cadas inesperadas del sistema, evitando que una informacin se quede a medias de escribir. Para solucionar problemas de consistencia, algunos sistemas no dan la operacin de escritura por realizada hasta que no se refleja en el log, y esto se hace una vez confirmada la escritura en el disco. Al volver a arrancar, el sistema inspecciona el log buscando operaciones iniciadas y no acabadas, finalizndolas antes de permitir de nuevo el trabajo de los usuarios.

2) Privacidad de los archivos


Los archivos se deben proteger de posibles accesos no deseados, el sistema de proteccin debe permitir acceso de forma controlada, segn reglas definidas y con las siguiente autorizacin: * Cada usuario, al comenzar la sesin en un sistema tras su identificacin, tiene asignado por el sistema de proteccin un dominio compuesto de una serie de recursos y de operaciones permitidas, por ejemplo, una serie de archivos a los que acceden, no teniendo permitido el acceso al resto de archivos.

En general, los sistemas operativos almacenan la informacin relativa a los dominios en los que se denomina matriz de dominios, cuyas filas indican los dominios existentes y las columnas los recursos. Cada elemento de la matriz indica el derecho a utilizar el recurso correspondiente en el dominio. Figura # 2. A1 E A2 L A3 L A4 L,E L A5 A6 E I E E S

D1 D2 D3

Figura # 2. Matriz de acceso.


http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_32.html

6.3 Implantacin de matrices de acceso.


Matriz de Acceso.-

El modelo de proteccin puede ser visto mediante una matriz de acceso. Las filas representan dominios y las columnas representan objetos. Las entradas de la matriz representan el conjunto de derechos para el objeto en cuestin, para determinado dominio.

IMPLANTACION DE MATRICES CON DERECHOS DE ACCESO. Un modelo de proteccin puede ser visto abstractamente como una matriz, llamada matriz de derecho. Los renglones de la matriz representan dominios y las columnas representan objetos. Cada entrada en la matriz contiene un conjunto de derechos de acceso. Dado que los objetos son definidos explcitamente por la columna, se puede omitir el nombre del objeto en el derecho de acceso. La entrada "Matriz[i, j]" define el conjunto de operaciones que un proceso ejecutndose en el dominio "Dj" puede realizar sobre el objeto "Oj". Hay 4 dominios y 5 objetos: 3 Archivos ("A1", "A2", "A3") 1 Puerto Serial y 1 impresora. Cuando un proceso se ejecuta en O1, puede leer los archivos "A1" y "A3". Un proceso ejecutndose en el dominio "D4" tiene los mismos privilegios que en "D1", pero adems puede escribir en los archivos. Ntese que en el puerto serial y la impresora solo se pueden ser ejecutados por procesos del dominio "D2". ESTRUCTURAS DE PROTECCIN DINAMICAS. Las matrices de acceso vistas hasta el momento, en las que no cambian los derechos en cada dominio durante su ejecucin, son un ejemplo de Estructuras de Proteccin Estticas. Con el fin de ofrecer flexibilidad y de implementar eficientemente la

proteccin, un Sistema Operativo debe soportar cambios en los derechos de acceso. Para esto se requiere implementar alguna estructura de proteccin dinmica. En este caso continuaremos considerando las matrices de acceso, aunque en su versin dinmica. Bsicamente se requieren cuatro nuevos derechos de acceso: Copia, Cambio, Propietario y Control. DERECHO DE ACCESO COPIA. Este derecho de acceso da la facultad a un proceso de copiar derechos existentes en un dominio hacia otro dominio para el objeto en cuestin. O sea, este derecho genera copias en columnas. En este caso estar indicado el derecho copia aadiendo el signo (+) al nombre de los derechos que pueden ser copiados. En la tabla se indica que un proceso ejecutndose en el dominio 1 podr copiar hacia cualquier otro dominio, el derecho enviar sobre el objeto "COM1" y que un proceso ejecutndose en el dominio "D2" podr copiar el derecho "Leer" hacia cualquier otro dominio sobre el objeto "Archivo2". De esta manera, en algn momento posterior, la situacin de la tabla podra ser la siguiente: En la que se ha copiado el derecho "Enviar" del dominio "D1" al dominio "D4" sobre el objeto "COM1" y se ha copiado el derecho "Leer" del dominio "D2" al dominio "D1" sobre el objeto "Archivo 2". Puede observarse que los derechos "copiados" no contienen el signo (+), o sea, se ha realizado una copia limitada. En general se podra hablar de 3 variantes del derecho "copia": Copia Limitada, Copia Completa, Translacin. COPIA LIMITADA. La copia no incluye el derecho "Copia", con lo que no se podrn hacer copias sucesivas del derecho. Se puede indicar con el signo (+). COPIA COMPLETA. La copia incluye el derecho "Copia", por lo que se pueden realizar copias sucesivas del derecho. Se puede indicar con el signo (*). TRANSLACIN. El derecho en cuestin junto con el derecho copia se eliminan del dominio original y se coloca en el nuevo dominio. Esta es una forma bsica de retirar derechos de un dominio para asignarlo a otro. Se puede indicar con el signo DERECHO DE ACCESO CAMBIO. Este derecho de acceso indica la posibilidad de un proceso para cambiarse de un dominio a otro. La operacin cambio acta sobre dominios, o sea, en este caso los

dominios son los objetos. Entonces, para considerar este derecho de acceso se debern incluir los dominios como objetos adicionales en la matriz de acceso. Considrese la siguiente matriz de acceso: Esta tabla indica que un proceso ejecutndose en "D1" puede cambiarse al dominio "D4" (a); un proceso ejecutndose en "D2" puede cambiarse a "D3"(b) y un proceso ejecutndose en el dominio "D4" puede cambiarse a "D1"(c).

6.4 Proteccin basada en el lenguaje. 6.5 Concepto de seguridad.


Introduccin a la Seguridad de los Sistemas Operativos
La evolucin de la computacin y de las comunicaciones en las ltimas dcadas [7, Deitel]:

Ha hecho ms accesibles a los sistemas informticos. Ha incrementado los riesgos vinculados a la seguridad.

La vulnerabilidad de las comunicaciones de datos es un aspecto clave de la seguridad de los sistemas informticos; la importancia de este aspecto es cada vez mayor en funcin de la proliferacin de las redes de computadoras. El nivel de criticidad y de confidencialidad de los datos administrados por los sistemas informticos es cada vez mayor:

Ej.: correo personal, transferencia de fondos, control de manufactura, control de sistemas de armas, control de trfico areo, control de implantes mdicos (marcapasos, etc.). Los sistemas deben funcionar ininterrumpidamente y sin problemas.

El sistema operativo, como administrador de los recursos del sistema: Cumple una funcin muy importante en la instrumentacin de la seguridad. No engloba a todos los aspectos de la seguridad. Debe ser complementado con medidas externas al S. O. La simple seguridad fsica resulta insuficiente ante la posibilidad de acceso mediante equipos remotos conectados. La tendencia es que los sistemas sean ms asequibles y fciles de usar, pero la favorabilidad hacia el usuario puede implicar un aumento de la vulnerabilidad. Se deben identificar las amenazas potenciales, que pueden proceder de fuentes maliciosas o no. El nivel de seguridad a proporcionar depende del valor de los recursos que hay que asegurar.

Requisitos de Seguridad
Los requisitos de seguridad de un sistema dado definen lo que significa la seguridad, para ese sistema [7, Deitel]. Los requisitos sirven de base para determinar si el sistema implementado es seguro:

Sin una serie de requisitos precisos tiene poco sentido cuestionar la seguridad de un sistema. Si los requisitos estn dbilmente establecidos no dicen mucho sobre la verdadera seguridad del sistema.

Algunos ejemplos de formulacin de los requisitos de seguridad son los siguientes: Directiva DOD 5200.28 (EE. UU.): o Especifica cmo debe manipularse la informacin clasificada en sistemas de procesamiento de datos. Manual de Referencia de Tecnologa de Seguridad de la Computadora (EE. UU.): o Especifica cmo evaluar la seguridad de los sistemas de computacin de la Fuerza Area. Ley de Intimidad de 1974 (EE. UU.): o Requiere que las Agencias Federales aseguren la integridad y seguridad de la informacin acerca de los individuos, especialmente en el contexto del amplio uso de las computadoras.

Un Tratamiento Total de la Seguridad


Un tratamiento total incluye aspectos de la seguridad del computador distintos a los de la seguridad de los S. O. [7, Deitel]. La seguridad externa debe asegurar la instalacin computacional contra intrusos y desastres como incendios e inundaciones:

Concedido el acceso fsico el S. O. debe identificar al usuario antes de permitirle el acceso a los recursos: seguridad de la interfaz del usuario.

La seguridad interna trata de los controles incorporados al hardware y al S. O. para asegurar la confiabilidad, operabilidad y la integridad de los programas y datos.

Seguridad Externa y Seguridad Operacional


Seguridad Externa La seguridad externa consiste en [7, Deitel]:

Seguridad fsica. Seguridad operacional.

La seguridad fsica incluye: Proteccin contra desastres. Proteccin contra intrusos. En la seguridad fsica son importantes los mecanismos de deteccin, algunos ejemplos son: Detectores de humo. Sensores de calor. Detectores de movimiento. La proteccin contra desastres puede ser costosa y frecuentemente no se analiza en detalle; depende en gran medida de las consecuencias de la prdida. La seguridad fsica trata especialmente de impedir la entrada de intrusos:

Se utilizan sistemas de identificacin fsica: o Tarjetas de identificacin. o Sistemas de huellas digitales. o Identificacin por medio de la voz.

Seguridad Operacional Consiste en las diferentes polticas y procedimientos implementados por la administracin de la instalacin computacional [7, Deitel]. La autorizacin determina qu acceso se permite y a quin. La clasificacin divide el problema en subproblemas:

Los datos del sistema y los usuarios se dividen en clases: o A las clases se conceden diferentes derechos de acceso.

Un aspecto crtico es la seleccin y asignacin de personal: La pregunta es si se puede confiar en la gente. El tratamiento que generalmente se da al problema es la divisin de responsabilidades: o Se otorgan distintos conjuntos de responsabilidades. o No es necesario que se conozca la totalidad del sistema para cumplir con esas responsabilidades. o Para poder comprometer al sistema puede ser necesaria la cooperacin entre muchas personas: Se reduce la probabilidad de violar la seguridad. o Debe instrumentarse un gran nmero de verificaciones y balances en el sistema para ayudar a la deteccin de brechas en la seguridad. o El personal debe estar al tanto de que el sistema dispone de controles, pero: Debe desconocer cules son esos controles:

Se reduce la probabilidad de poder evitarlos. Debe producirse un efecto disuasivo respecto de posibles intentos de violar la seguridad.

Para disear medidas efectivas de seguridad se debe primero: Enumerar y comprender las amenazas potenciales. Definir qu grado de seguridad se desea (y cunto se est dispuesto a gastar en seguridad). Analizar las contramedidas disponibles. http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm#Intro

6.6 Clasificaciones de la seguridad. 6.7 Validacin y amenazas al sistema.


Tipos de Amenazas.
Los tipos de amenazas a la seguridad de un sistema informtico los podemos caracterizar teniendo en cuenta como esta informacin es suministrada por el sistema. En general, hay un flujo de informacin de una fuente a un destino:

Figura #.3

Flujo normal.

Teniendo esto en cuenta, podemos sealar cuatro categoras de amenazas: Interrupcin: Un elemento del sistema es destruido o se hace inservible. Es una amenaza a la disponibilidad. Ejemplos son la destruccin de algn elemento hardware (discos, lneas de comunicacin, etc.) y la desactivacin del sistema de gestin de ficheros.

Figura #. 4 Interrupcin. * Intercepcin: Una parte no autorizada obtiene acceso a un elemento relacionado con la seguridad. Es una amenaza a la privacidad. La parte no autorizada puede ser una persona, un programa o un computador. Ejemplos son la copia ilcita de programas y la visualizacin de ficheros que han de permanecer ocultos.

Figura #. 5

Intercepcin.

* Modificacin: Una parte no autorizada no slo obtiene acceso sino que puede modificar un elemento relacionado con la seguridad. Es una amenaza a la integridad. Ejemplos son la alteracin del contenido de un fichero y modificar un programa para que funcione de forma diferente.

Figura #. 6

Modificacin.

* Fabricacin: Una parte no autorizada inserta nuevos elementos en el sistema. Es una amenaza a la integridad. Ejemplos son adicin de registros a un fichero y la inclusin de mensajes espreos en una red. La mayora de los mtodos de autenticacin se basan en identificar algo que el usuario tiene o conoce. El mecanismo ms comn de autenticacin consiste en que todo usuario ha de introducir una , que es solicitada por el programa de conexin cuando el usuario introduce su nombre. El inconveniente de este mtodo es que las contraseas pueden ser fcilmente averiguables si el usuario utiliza su nombre, direccin, o similar como contrasea. Otra forma de averiguar una contrasea consiste en probar todas las combinaciones de letras, nmeros y smbolos de puntuacin hasta adivinar la contrasea.

Existen variantes como que el sistema le aada a cada contrasea un nmero aleatorio, o asignarle a cada usuario un libro con una secuencia de contraseas, de forma que cada vez que se conecta tiene que introducir la palabra de paso siguiente. Otros tipos de mecanismos de autenticacin se pueden basar en objetos que nicamente cada usuario puede tener, como tarjetas con banda magntica, al estilo de los cajeros automticos. Otra posibilidad es medir o comprobar ciertas caractersticas que estn indisolublemente unidas a cada persona, como la voz, escritura, huellas dactilares, etc. En instalaciones en las que la seguridad es prioritaria, estas medidas se pueden complementar con restricciones de acceso a la habitacin en la que se encuentran los terminales, asignar a cada usuario un terminal concreto, establecer un horario concreto de trabajo, etc.

Amenazas de Origen Software


Uno de las los tipos ms sofisticados de amenazas tienen su origen en programas que explotan las debilidades de los sistemas. Estos programas se dividen en dos grupos: aquellos que necesitan un programa anfitrin y aquellos que son independientes. Los primeros son trozos de programas que no pueden existir de forma autnoma, mientras que los segundos son programas completos que pueden ser planificados y ejecutados por el sistema operativo. Tambin hay que distinguir entre aquellos programas que no se replican y los que lo hacen. Estos ltimos son programas o trozos de programas que cuando se ejecutan pueden generar una o ms copias de ellos mismos, que sern posteriormente activadas en la computadora. Podemos distinguir seis tipos de amenazas de origen software: Bomba Lgica: Es un cdigo incrustado en un programa que comprueba si ciertas condiciones se cumplen, en cuyo caso ejecuta alguna accin no autorizada. Estas condiciones pueden ser la existencia de ciertos ficheros, una fecha particular, la ejecucin de una aplicacin concreta, etc. Una vez que la bomba explota, puede alterar o eliminar datos, parar el sistema, etc. Un ejemplo de uso de bomba lgica es el caso de un programador que vende un programa a una empresa. Si transcurrido un cierto tiempo la empresa no ha pagado, el programador revela la existencia de la bomba lgica con el fin de obtener su dinero. Puerta Falsa (Trapdoor): Es un punto de entrada secreto en un programa, de forma que alguien que conozca la existencia de dicha puerta puede obtener permisos de acceso sin tener que pasar por los mecanismos normales de autentificacin. La puerta falsa es un cdigo que reconoce alguna secuencia de entrada especial o se dispara si es ejecutado por cierto usuario o por la ocurrencia de una secuencia determinada de sucesos. Caballo de Troya (Trojan Horse): Es una rutina oculta en un programa de utilidad. Cuando el programa se ejecuta, se ejecuta la rutina y sta realiza acciones no autorizadas y perniciosas. Estos programas permiten realizar de forma indirecta acciones que no puede realizar de forma

directa. Por ejemplo, un programa caballo de troya puede ser un editor que cuando es ejecutado modifica los permisos de los ficheros que edita de forma que stos puedan ser accedidos por cualquier usuario. El autor del programa suele inducir a su utilizacin colocndolo en un directorio comn y dndole un nombre de forma que aparente ser un programa de utilidad. Virus: Es cdigo introducido en un programa que puede infectar otros programas mediante la copia de s mismo en dichos programas. Adems de propagarse, un virus realiza alguna funcin no permitida. Bacteria: Programa que consume recursos del sistema replicndose asimismo, pero no daa explcitamente ningn fichero. Se suele reproducir exponencialmente, por lo que puede acaparar recursos como CPU, memoria y disco. Gusano (Worm): Es un programa que usa las redes de computadores para pasar de unos sistemas a otros. Una vez que llega a un sistema, el gusano se puede comportar como un virus o una bacteria, puede implantar programas caballo de troya, o puede realizar acciones no autorizadas. Para replicarse, los gusanos emplean algunos programas que proporcionan servicios de red, como correo electrnico, ejecucin remota de programas y conexin a sistemas remotos. http://eduadis.itlapiedad.edu.mx/~hocegueras/so2/so2_33.html Ataques Genricos a Sistemas Operativos Los principales ataques genricos a los S. O. son los siguientes [7, Deitel]: Asincronismo:

Se tienen procesos mltiples que progresan asincrnicamente. Un proceso podra modificar los parmetros ya validados por otro proceso pero an no utilizados. Un proceso podra pasar valores malos a otro an cuando el segundo realice una verificacin extensa.

Rastreo: Un usuario revisa el sistema intentando localizar informacin privilegiada. Entre lneas: Se utiliza una lnea de comunicaciones mantenida por un usuario habilitado que est inactivo. Cdigo clandestino: Se modifica el S. O. bajo una presunta depuracin pero se incorpora cdigo que permite ingresos no autorizados. Prohibicin de acceso:

Un usuario escribe un programa que bloquea el acceso o servicio a los usuarios legtimos mediante: o Cadas del sistema, ciclos infinitos, monopolio de recursos, etc.

Procesos sincronizados interactivos: Se utilizan las primitivas de sincronizacin del sistema para compartir y pasarse informacin entre s. Desconexin de lnea: El intruso intenta acceder al trabajo de un usuario desconectado: o Luego de una desconexin de lnea. o Antes de que el sistema reconozca la desconexin. Disfraz: El intruso asume la identidad de un usuario legtimo luego de haber obtenido la identificacin apropiada por medios clandestinos. Ataque nak: Si el S. O. permite a un usuario: o Interrumpir un proceso en ejecucin mediante una tecla de reconocimiento negativo. o Realizar otra operacin. o Reanudar el proceso interrumpido. Un intruso podra encontrar al sistema en un estado no protegido y hacerse con el control. Engao al operador: Con un engao se hace realizar al operador una accin que comprometa la seguridad del sistema. Parsito: Mediante equipamiento especial el intruso: o Intercepta los mensajes entre un usuario habilitado y el procesador. o Los modifica o reemplaza totalmente. Caballo de Troya: El intruso coloca un cdigo dentro del sistema que luego le permita accesos no autorizados. Puede permanecer en el sistema. Puede borrar todo rastro de s mismo luego de la penetracin. Parmetros inesperados: El intruso suministra valores inesperados a una llamada al ncleo. Intenta aprovechar una debilidad de los mecanismos de verificacin de la legalidad del S. O.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm#Crip

6.8 Cifrado.
Criptografa
El uso creciente de las redes de computadoras y la importancia del trafico cursado hace necesario proteger a los datos [7, Deitel]. La Oficina Nacional de Estndares de EE. UU. (NBS) ha adoptado la norma de cifrado de datos (DES) para la transmisin de informacin federal delicada. La criptografa es el uso de la transformacin de datos para hacerlos incomprensibles a todos, excepto a los usuarios a quienes estn destinados. El problema de la intimidad trata de cmo evitar la obtencin no autorizada de informacin de un canal de comunicaciones. El problema de la autentificacin trata sobre cmo evitar que un oponente:

Modifique una transmisin. Le introduzca datos falsos.

El problema de la disputa trata sobre cmo proporcionar al receptor de un mensaje pruebas legales de la identidad del remitente, que seran el equivalente electrnico de una firma escrita. Un Sistema de Intimidad Criptogrfica El remitente desea transmitir cierto mensaje no cifrado (texto simple) a un receptor legtimo:

La transmisin se producir a travs de un canal inseguro: o Se supone que podr ser verificado o conectado mediante un espa.

El remitente pasa el texto simple a una unidad de codificacin que lo transforma en un texto cifrado o criptograma: No es comprensible para el espa. Se transmite en forma segura por un canal inseguro. El receptor pasa el texto cifrado por una unidad de descifrado para regenerar el texto simple. Criptoanlisis Es el proceso de intentar regenerar el texto simple a partir del texto cifrado, pero desconociendo la clave de ciframiento:

Es la tarea del espa o criptoanalista:

Si no lo logra, el sistema criptogrfico es seguro.

Sistemas de Clave Pblica La distribucin de claves de un sistema criptogrfico debe hacerse por canales muy seguros. Los sistemas de clave pblica rodean el problema de distribucin de claves:

Las funciones de cifrado y descifrado estn separadas y utilizan distintas claves. No es computacionalmente posible (en un tiempo razonable) determinar la clave de desciframiento D a partir de la clave de ciframiento C. C puede hacerse pblica sin comprometer la seguridad de D, que permanece privada: o Se simplifica el problema de la distribucin de claves.

Firmas Digitales Para que una firma digital sea aceptada como sustituta de una firma escrita debe ser:

Fcil de autentificar (reconocer) por cualquiera. Producible nicamente por su autor.

En los criptosistemas de clave pblica el procedimiento es: El remitente usa la clave privada para crear un mensaje firmado. El receptor: o Usa la clave pblica del remitente para descifrar el mensaje. o Guarda el mensaje firmado para usarlo en caso de disputas. Para mayor seguridad se podra actuar como sigue: El remitente puede codificar el mensaje ya cifrado utilizando la clave pblica del receptor. La clave privada del receptor permite recuperar el mensaje cifrado firmado. La clave pblica del remitente permite recuperar el texto simple original. Aplicaciones La criptografa es especialmente til en los sistemas multiusuario y en las redes de computadoras. Se debe utilizar para proteger a las contraseas, almacenndolas cifradas. Se puede utilizar tambin para proteger todos los datos almacenados en un sistema de computacin; se debe considerar el tiempo de cifrado / descifrado. Tambin es aplicable en los protocolos de redes de capas, que ofrecen varios niveles de cifrado.

En el cifrado de enlace la red asume la responsabilidad de cifrado / descifrado de cada nodo:


Los datos se transmiten cifrados entre los nodos. En cada nodo se descifran, se determina a dnde transmitirlos y se los vuelve a cifrar.

En el cifrado punto a punto un mensaje se cifra en su fuente y se descifra solo una vez, en su destino: Existen ciertas limitaciones tales como la legibilidad de la direccin de destino en cada nodo: o Debe ser legible para el encaminamiento del mensaje. o Ej.: sistemas de conmutacin de paquetes de almacenamiento y reenvo con cifrado punto a punto; en este caso la direccin de destino asociada a un paquete no puede ser cifrada. http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm#Cri p http://www.monografias.com/trabajos6/hiso/hiso.shtml http://www.monografias.com/trabajos4/sistemas/sistemas.shtml http://www.monografias.com/trabajos11/oper/oper.shtml http://www.monografias.com/trabajos14/administ-procesos/administ-procesos.shtml http://www.monografias.com/trabajos12/hisis/hisis.shtml http://www.monografias.com/trabajos14/sistemas-operativos/sistemas-operativos.shtml http://www.monografias.com/trabajos/so2/so2.shtml

You might also like