You are on page 1of 247

INSTITUTO TECNOLGICO DE CHIHUAHUA II Elaboracin de Materiales, Recursos o Auxiliares Didcticos

Reporte final de periodo sabtico Libro de Texto: SISTEMAS OPERATIVOS

ELABORADO POR: GLORIA IRMA GALLARDO MARTNEZ

ENERO DE 2010

CONTENIDO Temario oficial Introduccin. UNIDAD 1. Introduccin a los sistemas operativos. 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). Resumen Problemas UNIDAD 2. Administracin de procesos y del procesador. 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. Resumen Problemas UNIDAD 3. Administracin de memoria. 3.1 Poltica y filosofa. 3.2 Memoria real. V 1 2 2 3 4 15 21 25 25 29 31 32 32 34 34 34 36 43 45 52 55 59 66 73 81 81 84 90 91 92 93 95 95 99 99 101 101 101

II

3.2.1 Administracin de almacenamiento. 3.2.2 Jerarqua. 3.2.3 Estrategia de administracin de memoria. 3.2.4 Asignacin contigua vs. 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. Resumen Problemas UNIDAD 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. Resumen Problemas UNIDAD 5. Sistema de archivos. 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. 5.8 Mecanismos de recuperacin en caso de falla. Resumen Problemas UNIDAD 6. Proteccin y seguridad. 6.1 Concepto y objetivos de proteccin. 6.2 Funciones del sistema de proteccin.

101 102 103 103 106 114 114 121 130 135 140 140 147 147 148 148 148 151 151 153 153 158 159 162 176 176 178 178 178 179 180 184 186 190 201 205 205 207 207 207

III

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. Resumen Problemas Bibliografa.

208 212 214 214 215 221 229 229 231

IV

VI

VII

VIII

IX

XI

XII

XIII

XIV

XV

Introduccin. El conjunto de los programas que un equipo de cmputo realiza se relaciona de manera muy estrecha con lo que conocemos como sistema operativo. El desarrollo de las rutinas de trabajo internas, asociadas y de acuerdo a las caractersticas de cada equipo requerir el que el programador o usuario conozca la lgica de operaciones que realizan los diferentes sistemas operativos existentes, a efectos de seleccionar el mas adecuado a utilizar, que cubra los requerimientos especficos de cada usuario para realizar en forma eficiente los procesos informticos. Dado el contexto anterior, que se tomo como marco de referencia para la creacin de este libro de texto, se plantea analizar el sistema operativo de las computadoras: su estructura, procesos, memoria, dispositivos de entrada/salida, administracin de archivos, seguridad y proteccin. Los cuales establecen en su conjunto el inicio y fin de un proceso computable. El objetivo de la realizacin de este libro, es cubrir en su totalidad el temario de la asignatura de Sistemas Operativos de la Carrera de Ingeniera en Sistemas Computacionales que se imparte en el Instituto Tecnolgico de Chihuahua II y debido a la similitud con la materia de Sistemas Operativos I de la Carrera de Licenciatura en Informtica, tiene aplicacin simultanea en dos programas educativos, lo cual ser de gran utilidad como apoyo didctico para personal acadmico y alumnos del rea de aplicacin. Este texto viene a integrarse como parte del acervo bibliogrfico de la Institucin, para consulta y referencia especializada. El contenido del presente libro de texto esta dividido en seis unidades, las cuales corresponden al temario oficial vigente del plan 2004 de la carrera de Ingeniera en Sistemas Computacionales. Al final de cada unidad se proponen problemas que permitan el enriquecimiento de conocimientos de cada tema desarrollado. En la unidad I se conocern la historia, funciones, caractersticas y clasificacin de los sistemas operativos. El concepto de proceso, procesos ligeros y algunos algoritmos de Planificacin se abordarn en la unidad II. El objetivo de la unidad IIII es identificar las tcnicas de administracin de memoria. Los temas a desarrollar en la unidad IV son, las tcnicas de uso de perifricos en un sistema de cmputo. En la unidad V se identificar la estructura general de un sistema de archivos. Por ultimo, en la unidad VI se comprendern los objetivos, funciones y tcnicas de proteccin y seguridad.

UNIDAD 1. Introduccin a los sistemas operativos. 1.1 Definicin y concepto. 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: 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. 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. Tcnicas de recuperacin de errores. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informndoles si esa aplicacin esta siendo ocupada por otro usuario.

Generacin de estadsticas. Permite que se puedan compartir el hardware y los datos entre los usuarios. 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: Cargadores. Compiladores. Ensambladores. Macros. 1.3 Evolucin histrica. Uno de los primeros dispositivos mecnicos para contar fue el ABACO, cuya historia se remonta a 3000 aos AC desarrollada por los chinos y utilizado por civilizaciones griegas y romanas. Este dispositivo es muy sencillo, consta de un marco rectangular de madera ensartado de varillas en las que se desplazaban bolas agujereadas de izquierda a derecha. Al desplazar las cuentas (bolas) sobre las varillas, sus posiciones representan valores almacenados, y es mediante estas posiciones que se representa y almacena datos. A este dispositivo no se le puede llamar computadora pues carece de un elemento fundamental llamado programa. En el siglo XVII, el creciente inters en Europa por las ciencias, tales como la astronoma y la navegacin, impuls a las mentes creativas a simplificar los clculos, se encontraba en uso "la regla del clculo", calculadora basada en las invenciones de y Napier, Gunther Bissaker. En 1614, el escocs Napier haba anunciado el descubrimiento de los logaritmos permitiendo que los resultados de complicadas multiplicaciones se redujeran a un proceso simple de suma; Edmund Gunther se encarga de enmarcar los logaritmos de Napier en lneas, por su parte Bissaker coloca las lneas de ambos sobre un pedazo de madera, creando de esta manera la regla del clculo.

Figura 1-1 Maquina para realizar sumas y restas

Blaise Pascal a la edad de 19 aos, adems de escribir tratados filosficos, literarios, cientficos y matemticos invent una mquina para calcular capaz de realizar sumas y restas (figura 1-1), parecida a los cuenta kilmetros de los automviles, el cual utilizaba una serie de ruedas de 10 dientes en las que cada uno de los dientes representaba un dgito del 0 al 9; las ruedas estaban conectadas de tal manera que podan sumarse nmeros hacindolas avanzar el nmero de dientes correctos. Los conceptos de esta mquina se utilizaron durante mucho tiempo, pero estas calculadoras exigan intervencin de un operador, pues este deba escribir cada resultado parcial en una hoja de papel. Esto era sumamente largo y por lo tanto produce errores en los informes. En 1670 el filsofo y matemtico alemn Gottfried Wilhelm Leibnizf fue el siguiente en avanzar en el diseo de una mquina calculadora mecnica, perfeccion la anterior inventada adems de aadir la funcin de multiplicar, efectuaba divisiones y races cuadradas.

Figura 1-2 Maquina diferencial

Charles Babbage (1792-1781), profesor de matemticas de la Universidad de Cambridge, Inglaterra, desarrolla en 1823 el concepto de un artefacto, que el denomina "mquina diferencial"(figura 1-2). La mquina estaba concebida para realizar clculos, almacenar y seleccionar informacin, resolver problemas y entregar resultados impresos. Babbage imagin su mquina compuesta de varias otras, todas trabajando armnicamente en conjunto: los receptores recogiendo informacin; un equipo transfirindola; un elemento almacenador de datos y operaciones; y finalmente una impresora entregando resultados. Pese a su increble concepcin, la mquina de Babbage, que se pareca mucho a una computadora, no lleg jams a construirse. Los planes de Babbage fueron demasiado ambiciosos para su poca. Demasiado y demasiado pronto. Este

avanzado concepto, con respecto a la simple calculadora, le vali a Babbage ser considerado el precursor de la computadora. La novia de Babbage, Ada Augusta Byron, luego Condesa de Lovelace, hija del poeta ingls Lord Byron, que le ayuda en el desarrollo del concepto de la Mquina Diferencial, creando programas para la mquina analtica, es reconocida y respetada, como el primer programador de computadoras. Joseph Jacquard (1752-1834), industrial francs es el siguiente en aportar algo al moderno concepto de las computadoras, para seguir adelante. Jacquard tuvo la idea de usar tarjetas perforadas (figura 1-3) para manejar agujas de tejer, en telares mecnicos. Un conjunto de tarjetas constituan un programa, el cual creaba diseos textiles.

Figura 1-3 Maquina de Joseph Jacquard

Una ingeniosa combinacin de los conceptos de Babbage y Jacquard, dan origen en 1890 a un equipo electromecnico (figura 1-4), que salva del caos a la Oficina de Censo de Estado Unidos. Hermann Hollerith usa una perforadora mecnica para representar letras del alfabeto y dgitos en tarjetas de papel, que tenan 80 columnas y forma rectangular. La mquina de Hollerith usando informacin perforada en las tarjetas, realiza en corto tiempo la tabulacin de muchos datos.

Figura 1-4 Maquina de Hollerith

En el ao 1944 se construy en la Universidad de Harvard, la MARK I (figura 15), diseada por un equipo encabezada por el Dr. Howard Aiken, es esta la primera mquina procesadora de informacin. La Mark I funcionaba elctricamente, tenia 760.000 ruedas y rels y 800 Km. de cable y se basaba en la mquina analtica de Babbage., a pesar de su peso superior a 5 toneladas y su lentitud comparada con los equipos actuales fue la primera mquina en poseer todas las caractersticas de una verdadera computadora.

Figura 1-5 La MARK I

La primera computadora electrnica fue terminada de construir en 1946, por J.P.ECKERT y J.W MAUCHLY en la Universidad de Pensilvania y se llam ENIAC(Electric Numeric Integrator And Calculador); poda multiplicar 10.000 veces ms rpido que la mquina de Airen pero tena problemas pues estaba construida con casi 18.000 vlvulas de vaco, era enorme la energa que consuma y el calor que produca; esto hacia que las vlvulas se quemaran rpidamente y que las casas vecinas tuviesen cortes de luz. Figura 1-6.

Figura 1-6 ENIAC

Considerado como el padre de las computadoras el matemtico JOHNN VON NEUMANN propuso almacenar el programa y los datos en la memoria del ordenador, su idea fundamental era permitir que en la memoria coexistan datos con instrucciones, para que entonces la computadora pueda ser programada en un lenguaje, y no por medio de alambres que elctricamente interconectaban varias secciones de control, a este se le llam EDVAC (Electronic Discrete Variable Automatic Computer) figura 1-7.

Figura 1-7 EDVAC

Todo este desarrollo de las computadoras suele dividirse por generaciones o etapas, el criterio que se empleo para determinar el cambio de generacin no est muy bien definido, pero por lo menos deben cumplirse al menos los siguientes requisitos: La forma en que estn construidas y la forma en el ser humano se comunica con ellas.

1a. Etapa (1945-1955): Bulbos y conexiones.

aaaaaaaaaaaaaaaaaaaa

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

10

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. Desarrollo de sistemas operativos a futuro Existen cuatro principios dominantes que deben regir en el diseo de sistemas operativos a futuro. Y se debe contar con metas que hagan que los usuarios no tengan problemas o no deban ser unos sper programadores y conocedores en protocolos de red para manejar los problemas que se desarrollen en la sesin de trabajo a continuacin se mostraran algunas metas que se deben tener los sistemas operativos a futuro. Los sistemas operativos deben ser extremadamente robustos. Ninguna accin del usuario debe hacer que el sistema se comporte de una manera extraa o ilgica. Debe ser imposible que cualquier programa interrumpa el funcionamiento de otros programas, o de la maquina en su totalidad. Es decir sin importar las acciones y las decisiones del usuario y del programador, la computadora nunca debe "colapsarse". Adems, cualquier acontecimiento inesperado se debe manejar de una manera prctica. Los problemas que el sistema operativo no puede solucionar se deben sealar al usuario de una manera concisa y clara (tales como un cuadro de dialogo), y se debe explicar de una manera no tcnica utilizando un lenguaje dependiendo del modulo de programacin. El sistema debe enumerar claramente las opciones de las cuales el usuario debe elegir. El Sistema Operativo del Maana Se ha progresado mucho en el desarrollo de los sistemas operativos. Estos progresos han sido paralelos a la aparicin de nuevas tecnologas y de nuevos algoritmos para las tareas de los sistemas operativos. Estandarizacin

Actualmente, hay numerosos sistemas operativos y sistemas de hardware que se comportan de varias maneras. Por lo tanto, la comunicacin entre las mquinas de diferente arquitectura es difcil, y esta situacin es confusa para cualquier usuario que procure cambiarse de una plataforma a otra. Esta confusin da lugar a un costo significativo debido a la capacitacin y al tiempo perdido durante la transicin y fase de aprendizaje.

11

Los sistemas operativos deben ser estandarizados de tal manera que s til y fcil para que sigan siendo tiles para los usuarios y no se tengan que cambien y adaptarse a un nuevo sistema operativo. Se debe crecer a la par con la tecnologa de cmputo, la visualizacin, y las tecnologas de interaccin, y las preferencias del usuario, para que esta estandarizacin sea realizada los diversos sistemas operativos deben tener los siguientes puntos.
1. Un conjunto muy bien definido de los estndares pblicos disponibles

para la comunicacin entre las capas y los objetos. 2. Que este conjunto de estndares se desarrolle con un cierto plazo de tiempo pero que siga siendo claro y conciso. 3. Que los estndares no cambien tan rpidamente como para causar problemas de compatibilidad o altos costos de cambio de hardware. Rhapsody

Es un sistema diseado para ser el sistema operativo del futuro: rpido, moderno, altamente estable Qu es Rhapsody?

Un poderoso entorno con multitareas, memoria protegida con integradas capacidades para el simtrico multiprocesamiento. Las ventajas del Mac OS junto con la integrada y madura tecnologa de comunicaciones y una profunda integracin de Java. La tecnologa de QuickTime Media Layer ser optimizada para Rhapsody, proveyendo a los usuarios con un rico y ventajoso entorno para la creacin y reproduccin de multimedia. Rhapsody combina la larga tradicin de facilidad de uso y el real "plug and play" establecida por Apple, y el entorno kernel de NeXT. Preservar el familiar "mralo y sintelo" de la actual interfase Mac OS. Un particular inters para eficientizar entornos de grandes corporativos, Rhapsody tendr la tecnologa de NeXT: "Objetos Orientados" y el desarrollo de herramientas para incrementar la productividad en aplicaciones. La parte medular de la arquitectura de Rhapsody es ser nativo al procesador PowerPC. Diseado para usarse en la mayora de aplicaciones del Mac OS tambin la mayora de las extensiones del sistema trabajarn sin modificaciones. Esta compatibilidad ser proveda en una implementacin del Mac OS, que incluyen los procesadores 68K y los Power PC, no ser una "emulacin" para las 68K segn ingenieros de Apple, se integrar un nuevo cdigo que aprovechar al poderoso procesador PowerPC desarrollado por IBM, Motorola y Apple, que se encuentra ya en su cuarta generacin a velocidades de 300 y 350 Mhz.

12

El proyecto integrado a Rhapsody referido como "Yellow Box" ser enriquecido en las tecnologas lideres de Apple: QuickTime y ColorSync. Es importante resaltar que "Yellow Box" no ser limitado a las aplicaciones PowerPC de Macintosh, sino que podr tener como fuente aplicaciones en el standard de PC corriendo Windows. Otro de los desarrollos de Rhapsody es un poderoso entorno de aplicaciones de "objetos orientados" iniciado por NeXT (la tecnologa de objetos orientados es trabajar por unas llamadas "partes" que consiste en usar varios documentos de varias aplicaciones en uno solo, sin necesidad de tener la aplicacin en que fueron creados). Los ingenieros de Apple tienen planeado integrar estrechamente a Java en Rhapsody - con las libreras de Java y la Java Virtual Machine (VM) dando a Apple el liderazgo en el desarrollo de Java. Una moderna implementacin de Mac, microkernel, desarrollado por la Universidad Carnegie Mellon es una nueva generacin de entrada y salida de dispositivos (IO), administrador de archivos, intercambio entre aplicaciones y redes. Apple desarrolla un nuevo dispositivo que sustituir al actual SCSI: el WireFire que transfiere 4MB por segundo. Perspectivas de los Sistemas Operativos en las Empresas fabricantes de Hardware y Software Desde los primeros das de las computadoras modernas, la tecnologa del hardware ha progresado lejos ms rpidamente que el software que la acompaa. Por ejemplo, existen computadoras que poseen un Hardware con un funcionamiento veloz e increble, pero el Software (Sistema Operativo) que estas mquinas poseen es tan pobre que son extremadamente difciles de programar. Debido al estado inmaduro de estos sistemas operativos, estas computadoras funcionan solamente en una fraccin pequea de su velocidad mxima mientras que trabajan bajo cargas de trabajo tpicas. Es por lo anterior que la industria del software debe ahora dedicar ms tiempo y energa al desarrollo de este. Una vez que la tecnologa del software alcance el nivel de la tecnologa del hardware, los sistemas sern no slo ms de gran alcance y prcticos, sino que utilizarn sus recursos de hardware mucho ms eficientemente. Con la llegada de los nuevos Sistemas Operativos el hardware se aprovechar al mximo y se reducir esa brecha tan grande de rapidez que existe entre el hardware y el software que lo controla. Con estos Sistemas Operativos se llegar a concretar lo que se llama la quinta generacin de computadoras, la cual pretende multiplicar la velocidad, disponer procesamientos paralelos, disear una arquitectura de hardware-software muy superior y utilizar el lenguaje natural.

13

La renovacin que aportarn los sistemas operativos es mltiple. Ya no viene determinada nicamente por la introduccin de cambios material o de hardware, sino por la combinacin de novedades en el material y en la programacin. El tipo de trabajo propio que realizarn el hardware y software de la quinta generacin no solo en el tratamiento de datos, sino en la adquisicin de informacin y, a partir de los materiales y estructuras de que dispone, en la elaboracin de conocimientos, es decir, en la elaboracin inteligente del saber. Es decir se anuncia el aprovechamiento de la computadora para adquirir conocimientos artificialmente, a travs de las mquinas. A partir de esto, estas ya no solo aportarn fuerza o habilidad, sino que tambin proveern al hombre de un conocimiento del mundo. Realidad virtual en los sistemas operativos. La realidad virtual en los ltimos tiempos s a mostrado como una de las herramientas ms importante y una de las que ms jugo hace falta sacar, en lo que nos concierne la realidad en los sistemas operativos no esta muy alejada la realidad virtual de los sistemas operativos simplemente se debe observar mas detalladamente para darse cuenta que ahora los sistemas operativos tienen una interaccin en realidad virtual simplemente observen cuando se mueve el cursor de mouse ese cursor se mueve en la direccin en donde nosotros le ordenamos por medio del mouse, pero hago una pregunta su cursor es real?, Lgicamente no es real pero nosotros interactuamos con ese cursor por eso los sistemas operativos grficos actuales son en realidad virtual. No se puede imaginar una persona interactuando en realidad virtual con un casco, unos guantes y no s que tantas chachas mas, no eso es una parte de la realidad virtual al momento que nosotros usamos un sistema operativo grafico estamos interactuando con l en una realidad virtual. Apple la prxima era. Nadie de nosotros puede predecir el nuevo milenio, pero es claro que las computadoras y el Internet jugarn un tremendo papel en nuestras vidas. La combinacin de Macintosh e Internet ofrecer ms posibilidades que nadie, particularmente en diseo grfico, edicin de video, publicacin de pginas Web y en el desarrollo de software. Apple Computers liber ms de 10,000 programadores, una versin beta del nuevo sistema operativo que tiene como nombre clave Rhapsody, con la intencin de que los programadores conozcan y desarrollen aplicaciones para este nuevo sistema operativo. La compaa de Cupertino, California, espera que Rhapsody sea una combinacin de la facilidad de uso y las soluciones en multimedia de Apple con el liderazgo en desarrollo de software y de entornos operativos de NeXT.

14

1.4 Clasificacin de los sistemas operativos. 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.
UNIVAC (Universal Automatic Computer) 1107 apareci en 1962 en la segunda generacin sustituyendo los tubos de vaco por los transistores. El UNIVAC 1107 (el siete), se hizo famoso cuando su sistema numrico fue considerado en el texto The Art of Computer Programming. El sistema operativo de este ordenador era el EXEC II orientado a procesamiento acadmico.

Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son: 1. Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. 2. Permiten poca o ninguna interaccin usuario/programa en ejecucin. 3. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. 4. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. 5. Conveniente para programas de largos tiempos de ejecucin (ej. anlisis estadsticos, nminas de personal, etc.) 6. Se encuentra en muchos computadores personales combinados con procesamiento serial.

15

7. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. 8. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. 9. No requieren gestin crtica de dispositivos en el tiempo. 10. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso. 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.
Solaris es un sistema operativo de tipo Unix desarrollado por Sun Microsystems desde 1992 como sucesor de SunOS. Es un sistema certificado oficialmente como versin de Unix. Funciona en arquitecturas SPARC y x86 para servidores y estaciones de trabajo. Aunque Solaris fue desarrollado como software privativo, la mayor parte de su cdigo se ha liberado como proyecto de software libre denominado OpenSolaris. Solaris es conocido por su escalabilidad, especialmente en sistemas SPARC, y por ser origen de innovadoras tecnologas, como DTrace y ZFS.

16

Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas: 1. 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. 2. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. 3. Objetivo es proporcionar rpidos tiempos de respuesta. 4. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. 5. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. 6. Proceso de mayor prioridad expropia recursos. 7. Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. 8. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. 9. Poblacin de procesos esttica en gran medida. 10. Poco movimiento de programas entre almacenamiento secundario y memoria. 11. Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin 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, MAC-OS, OS/2, soportan la multitarea.
Unix (registrado oficialmente como UNIX) es un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en 1969 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.1 2 Hasta 2009, el propietario de la marca UNIX es The Open Group, un consorcio de normalizacin industrial. Slo los sistemas totalmente compatibles y que se encuentran certificados por la especificacin Single UNIX Specification pueden ser denominados "UNIX" (otros reciben la denominacin "similar a un sistema Unix" o "similar a Unix").

17

Durante fines de la dcada de 1970 y principios de la dcada de 1980, la influencia de Unix en crculos acadmicos indujo a su adopcin en masa (principalmente la variante BSD, que haba surgido en la Universidad de California, Berkeley) en varias compaas que se iniciaban por aquel entonces[cita requerida], siendo la ms destacada Sun Microsystems. Hoy en da, junto a los sistemas Unix certificados, tambin se pueden encontrar sistemas similares a Unix, como Linux y los derivados de BSD. En ocasiones, el trmino "Unix tradicional" suele emplearse para describir a Unix o a un sistema operativo que cuenta con las caractersticas de UNIX Versin 7 o UNIX System V.

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. 8. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores. 9. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos. 1. 2. 3. 4. 5. 6. 7. Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuario. 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.

18

En los sistemas operativos antiguos, la idea de multiusuario guarda el significado original de que ste puede utilizarse por varios usuarios al mismo tiempo, permitiendo la ejecucin concurrente de programas de usuario. Aunque la idea original de tiempo compartido o el uso de terminales tontas no es ya el ms utilizado. Esto debido a que los ordenadores modernos pueden tener mltiples procesadores, o proveer sus interfaces de usuario a travs de una red, o en casos especiales, ya ni siquiera existe un solo ordenador fsico proveyendo los servicios, sino una federacin de ordenadores en red o conectados por un bus de alta velocidad y actuando en concierto para formar un cluster.

Caractersticas de los Sistemas Operativos de tiempo compartido: 1. Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por computador, procesamiento de texto, etc. 2. Dan la ilusin de que cada usuario tiene una mquina para s. 3. Mayora utilizan algoritmo de reparto circular. 4. Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. 5. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). 6. Gestin de memoria proporciona proteccin a programas residentes. 7. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando un mismo archivo. 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, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Amoeba es un sistema operativo distribuido de investigacin, basado en una arquitectura de microncleo. Fue desarrollado por Andrew S. Tanenbaum y otros en la Universidad Libre de Amsterdam. El objetivo del proyecto Amoeba era construir un sistema de tiempo compartido que hiciera que una red entera de computadores pareciera a los ojos de un usuario como una mquina nica. Los servicios suministrados por el ncleo incluyen threads, segmentos de memoria, mecanismos de IPC (RPCs y mensajes) y E/S [160].

19

El desarrollo parece detenido, dado que la fecha de la ltima modificacin en el cdigo data de febrero de 2001. Existen versiones para varias plataformas, incluyendo i386, Sun-3 y SPARC. El lenguaje de programacin Python fue originalmente desarrollado para esta plataforma.

Caractersticas de los Sistemas Operativos distribuidos: 1. Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . 2. Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. 3. Objetivo clave es la transparencia. 4. Generalmente proporcionan medios para la comparticin global de recursos. 5. 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 mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows 2008 Server, UNIX, LANtastic.
Windows Server 2008 Parte de la familia Microsoft Windows Lanzamiento: 4 de febrero de 2008 ltima versin estable: 6.0 Service Pack 2 (SP2; Compilacin 6002) (30 de abril de 2009) Modelo de desarrollo: Software propietario, Shared Source Licencia: Microsoft CLUF (EULA) Ncleo: NT 6.0 Tipo de ncleo: Hbrido Idiomas: Multilinge En espaol: S

20

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.
En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo. As, en lugar de esperar a que el proceso termine de ejecutarse, regresa a atender al usuario inmediatamente.

1.5 Estructura (niveles o estratos de diseo). Sistemas monolticos Este tipo de organizacin es, con diferencia, la ms comn. 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 ste ltimo proporciona un clculo til para el primero. Para construir el programa objeto real del sistema operativo siguiendo este punto de vista, se compilan de forma individual los procedimientos, o los ficheros que contienen los procedimientos, y despus se enlazan en un slo fichero objeto con el enlazador. En trminos de ocultacin de la informacin, sta es prcticamente nula: cada procedimiento es visible a los dems (en contraste con una estructura con mdulos o paquetes, en la que la mayora de la informacin es local a un mdulo, y donde slo los datos sealados de forma expresa pueden ser llamados desde el exterior del mdulo). Los servicios (mediante llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien definidos, como los registros o la pila, para despus ejecutar una instruccin especial de trampa, a veces referida como llamada al ncleo o llamada al supervisor. Esta instruccin cambia la mquina del modo usuario al modo ncleo (tambin

21

conocido como modo supervisor), y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1-8. El sistema operativo examina entonces los parmetros de la llamada para determinar cual de ellas se desea realizar, como se muestra en (2) de la figura 1-8. A continuacin, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que implementa la k-sima llamada al sistema. Esta operacin, que se muestra en (3) de la figura 1-8, identifica el procedimiento de servicio, al cual se llama. Por ltimo, la llamada al sistema termina y el control vuelve al programa del usuario.

Figura 1-8 Sistemas Monolticos

Esta organizacin sugiere una estructura bsica del sistema operativo: Un programa principal que llama al procedimiento del servicio solicitado. Un conjunto de procedimientos de servicio que lleva a cabo las llamadas al sistema. Un conjunto de procedimientos de utilidades que ayudan a los procedimientos de servicio. En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de ella. Los procedimientos de utilidad hacen cosas necesarias para varios procedimientos de servicio, como por ejemplo, buscar los datos del programa del usuario. Esta divisin de los procedimientos en tres capas se muestra en la figura 1-9.

22

Figura 1-9 Divisin de procedimientos en tres capas

Modelo cliente-servidor Una tendencia de los sistema operativos modernos es la de trasladar 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 implantar la mayora de las funciones del sistema operativo como procesos de usuario. Para solicitar un servicio, como la lectura de un bloque de cierto fichero, un proceso de usuario (denominado en este caso proceso cliente) enva la solicitud a un proceso servidor, que realiza el trabajo y devuelve la respuesta.

Figura 1-10 Modelo Cliente-Servidor

En este modelo, que se muestra en la figura 1-10, 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 ficheros, servicio a procesos, servicio a terminales o servicio a la memoria; cada parte es pequea y controlable. Adems, puesto que 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 ficheros 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 sistemas distribuidos (vase la figura 1-11). Si un cliente se 23

comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de 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.

Figura 1-11 Modelo Cliente-Servidor

La idea anterior de un ncleo que slo controla el transporte de mensajes de clientes a servidores, y viceversa, no es totalmente real. Algunas funciones del sistema operativo (como la introduccin de rdenes en los registros fsicos de los controladores de E/S) son difciles, si no es que imposible de realizar, a partir de programas de usuario. Existen dos formas de afrontar este problema. Una es hacer que algunos procesos de servidores crticos (por ejemplo, los gestores de los dispositivos de E/S) se ejecuten en realidad en modo ncleo, con acceso total al hardware, pero de forma que se comuniquen con los dems procesos mediante el mecanismo normal de mensajes. La otra forma es construir una cantidad mnima de mecanismos dentro del ncleo, pero manteniendo las decisiones de poltica relativos a los usuarios dentro del espacio de los usuarios. Por ejemplo, el ncleo podra reconocer que cierto mensaje enviado a una direccin especial indica que se tome el contenido de ese mensaje y se cargue en los registros del controlador de algn disco, para iniciar la lectura del disco. En este ejemplo, el ncleo ni siquiera inspeccionara los bytes del mensaje para ver si son vlidos o tienen algn sentido; slo los copiara ciegamente en los registros del controlador del disco. Es evidente que debe utilizarse cierto esquema para limitar tales mensajes slo a los procesos autorizados. La separacin entre mecanismos y poltica es un concepto importante, aparece una y otra vez en diversos contextos de los sistemas operativos. La figura 1-12 muestra la estructura general de un Sistema operativo.

24

Figura 1-12 Esquema general de un Sistema Operativo

1.6 Ncleo 1.6.1 Interrupciones (FLIH) Los Sistemas Operativos proporcionan un nmero potencialmente grande de servicios accesibles al usuario. Uno de los problemas principales que se encuentran los diseadores de sistemas operativos es cmo manejar esta complejidad de funciones a muchos niveles de detalle mientras proporcionan un producto fiable y fcil de mantener. Con la experiencia que se tiene sobre el tema, se est tendiendo a la implantacin de sistemas operativos en forma de niveles jerrquicos de abstraccin. De esta forma, se obtendrn una serie de mdulos que ocultarn los detalles de la estructura de datos y los algoritmos de procesamiento que utilicen. Externamente se conocer cada mdulo por realizar unas funciones especficas que slo pueden usar las capas superiores, pero los detalles de cmo lo hacen no estarn disponibles. Como resultado, los mdulos tienden a ser pequeos y fciles de comprender e implementar.

25

Con todo esto, el diseo jerrquico ofrece una mayor facilidad en la depuracin, modificacin y verificacin de los sistemas operativos. Programa de aplicacin Programa de aplicacin Servicios del sistema Sistema de Archivos Administracin de dispositivos de memoria y de E/S Planificacin del procesador Hardware Modo usuario Modo kernel El ncleo del sistema operativo es el nivel ms interno del sistema operativo. Acta de interfaz entre el hardware bsico y el resto del sistema operativo. Su finalidad es constituir un entorno adecuado en el que se puedan desarrollar los distintos procesos. Las funciones bsicas del ncleo de un sistema operativo son: Manipulacin de las interrupciones Creacin/Destruccin de procesos Cambios de estados de procesos Planificacin de los procesadores Suspensin/Reanudacin de procesos Sincronizacin de procesos Comunicacin entre procesos Manipulacin de bloques de control de procesos Soporte de las actividades de entrada/salida Soporte de la asignacin/liberacin del almacenamiento Soporte del sistema de archivos Soporte de un mecanismo de llamada/regreso al procedimiento Soporte de ciertas funciones contables del sistema

Caractersticas del ncleo: Se encuentra residente en Memoria Principal Tienden a ser ininterrumpibles Se ejecutan con el mximo privilegio

26

El ncleo es la parte ms dependiente del hardware. Normalmente se escribe en ensamblador, pero existen otros lenguajes para diseo de sistemas operativos: BCPL (Basic Compiled Programming Language), BLISS (Basic Language for Implementing Systems), C, Pascal Concurrente, PL/2, ... Requisitos bsicos del hardware. Veamos el hardware bsico necesario para soportar un modelo de sistema operativo sencillo. Se requieren las siguientes posibilidades en el hardware: Un mecanismo de interrupcin. Salvar como mnimo el PC (Contador de Programa) y transferir el control a una posicin de memoria. Un mecanismo de proteccin que debe implementarse en el hardware de direccionamiento de la memoria. Esto se realiza para proteger la memoria de un proceso del acceso no autorizado por parte de otros procesos. Repertorio de instrucciones reservadas. Con el fin de que varios procesos concurrentes no se interfieran entre ellos. Estas instrucciones llevan a cabo funciones tales como: o Autorizar e inhibir las interrupciones o Conmutar un procesador entre distintos procesos o Acceder a los registros usados por el hardware de proteccin de memoria o Llevar a cabo la E/S o Manejo y control del reloj en tiempo real o Parar el procesador central Para establecer cundo se pueden usar estas instrucciones reservadas, existen dos modos de funcionamiento del computador: Modo ncleo o supervisor (kernel): Ejecuta todas las instrucciones (tanto reservadas como de usuario) Modo usuario: Slo ejecuta las instrucciones de usuario Cambio de modos: Modo usuario a modo supervisor:

o El proceso usuario solicita una llamada al supervisor para usar alguna funcin

27

del sistema operativo o Ocurre una interrupcin o Error en un proceso de usuario o Se intenta ejecutar una instruccin reservada en modo usuario (caso especial de error) Modo supervisor a modo usuario:

o Instruccin reservada Gestin de interrupciones. Una interrupcin es una respuesta a un suceso asncrono o excepcional que automticamente reserva el estado actual de la CPU para permitir su continuacin posterior y provoca una transferencia automtica a una rutina especfica. Bsicamente, existen seis clases de interrupciones: 1. Interrupciones SVC (SuperVisor Call, llamadas al supervisor). Son iniciadas por un proceso en ejecucin para solicitar una operacin de E/S, obtener memoria, 2. Interrupciones de E/S. Son iniciadas por el hardware de E/S. Indican a la CPU el cambio de estado de un canal o dispositivo. Se producen cuando finaliza una operacin de E/S o cuando un dispositivo para a estado de listo. 3. Interrupciones externas. Son causadas por diversos sucesos, incluyendo la expiracin del cuantum de reloj, la pulsacin de la tecla de interrupcin del teclado, 4. Interrupciones de reinicio. Ocurren cuando se pulsa el botn de reinicio de la consola (Reset), 5. Interrupciones de verificacin del programa. Son causadas por varios tipos de errores experimentados al ejecutar un proceso, como una operacin de divisin por cero, formato de datos errneo, ejecucin de una operacin invlida, intento de acceder a una posicin de memoria fuera de los lmites (violacin de memoria), 6. Interrupciones de verificacin de la mquina. Son ocasionadas por el mal funcionamiento de la mquina. La gestin de interrupciones la realiza el manipulador (controlador) de interrupciones (FLIH, First Level Interrupt Handler). El manipulador de interrupciones es la parte del sistema operativo responsable de proporcionar la respuesta adecuada a las seales procedentes tanto del exterior como del interior del sistema (interrupciones externas e internas).

28

Misin del FLIH: 1. Determinar el origen de las interrupciones. 2. Iniciar el servicio de las mismas. Funcionamiento del FLIH: 1. Inhibir las interrupciones (si no lo hace el hardware). 2. Guardar la informacin no salvada por el hardware. Dos posibles formas: o Salvar los registros que se usen en el tratamiento de la interrupcin. o Usar un conjunto de registros suplementarios slo usados en modo supervisor para procesar el servicio de la interrupcin con lo que no se necesitan salvar los registros afectados del programa. 3. Identificar la causa de la interrupcin (depende del hardware). Podemos distinguir varios casos: o Con todas las interrupciones se transfiere el control a la misma posicin de memoria (caso ms sencillo). o El hardware de interrupcin es capaz de distinguir las diferentes fuentes de interrupcin y transferir el control del programa a una posicin de memoria distinta para cada una de ellas, con lo que se reduce el tiempo de identificacin de la interrupcin. o Agrupar las interrupciones por tipos. El hardware es capaz de distinguir las interrupciones segn su tipo y transferir el control a posiciones de memoria distintas. Consideraciones en el tratamiento de las interrupciones: Inhibicin de las interrupciones: Si durante el procesamiento de una interrupcin ocurre otra, sta queda pendiente hasta que el mecanismo de interrupcin se reactive. Es decir, cuando se inhiben las interrupciones, la CPU no puede atender a otras interrupciones hasta que se reactive el mecanismo de interrupcin. Prioridades entre las distintas fuentes de interrupcin: Una rutina de interrupcin puede ser interrumpida por otra fuente de interrupcin de ms alta prioridad (caso en que un perifrico requiera una respuesta mucho ms rpida que otro). Una interrupcin puede alterar el estado de los procesos 1.6.2 Despachador (Scheduler).

29

Se encarga de asignar los procesadores a los diferentes procesos, por lo tanto debe actuar cuando se debe comprobar si es necesario cambiar el proceso que est activo. Esto involucra: Cambio de contexto Cambio a modo usuario

Salto a la direccin de memoria que corresponda al programa de usuario para continuar su ejecucin. Criterios de Despachador Utilizacin de CPU: mantener la CPU ocupada la mayor cantidad del tiempo posible Productividad (Throughput): # de procesos por unidad de tiempo

Tiempo de servicio (Turnaround time): tiempo necesario para la ejecucin de un proceso particular Tiempo de espera (Waiting time): tiempo total que el proceso se encuentra en la fila ready Tiempo de respuesta (Response time): tiempo que transcurre desde el requerimiento hasta que se produce la primera respuesta (en ambientes de tiempo compartido) Criterios de Optimizacin Mxima utilizacin de CPU Mxima productividad Mnimo tiempo de servicio Mnimo tiempo de espera 30

Mnimo tiempo de respuesta

En el capitulo siguiente se explicarn a profundidad las tcnicas para asignar procesador a los diferentes procesos. 1.6.3 Primitivas de comunicacin (IPC). Es una funcin bsica de los Sistemas operativos. Los procesos pueden comunicarse entre s a travs de compartir espacios de memoria, ya sean variables compartidas o buffers, o a travs de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre s. Normalmente a travs de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. La comunicacin se establece siguiendo una serie de reglas (protocolos de comunicacin). Los protocolos desarrollados para internet son los mayormente usados: protocolo de internet (capa de red), protocolo de control de transmisin (capa de transporte) y protocolo de transferencia de archivos, protocolo de transferencia de hipertexto (capa de aplicacin). En el capitulo siguiente se explicarn a profundidad las tcnicas de comunicacin entre procesos.

31

Resumen Dentro del las muchas definiciones de los sistemas operativos, se podra resumir que son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son: 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. En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas: Conveniencia, eficiencia, habilidad para evolucionar, encargado de administrar el hardware, organizar datos para acceso rpido y seguro, procesamiento por bytes de flujo a travs del bus de datos, tcnicas de recuperacin de errores y generacin de estadsticas. Los sistemas operativos tienen una larga historia, que inicia cuando uno de los primeros dispositivos mecnicos para contar fue el ABACO, cuya historia se remonta a 3000 aos AC desarrollada por los chinos y utilizado por civilizaciones griegas y romanas, hasta llegar a los sistemas de multiprogramacin modernos. Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba, ejem. Sistemas operativos por lotes, sistemas operativos de red, etc. Los Sistemas Operativos proporcionan un nmero potencialmente grande de servicios accesibles al usuario. Uno de los problemas principales que se encuentran los diseadores de sistemas operativos es cmo manejar esta complejidad de funciones a muchos niveles de detalle mientras proporcionan un producto fiable y fcil de mantener. El ncleo del sistema operativo es el nivel ms interno del sistema operativo. Acta de interfaz entre el hardware bsico y el resto del sistema operativo. Su finalidad es constituir un entorno adecuado en el que se puedan desarrollar los distintos procesos. Problemas 1. Mencione las dos funciones principales de un sistema operativo. 2. Explique que caractersticas debe tener un sistema operativo. 3. Por qu no se generaliz uso de tiempo compartido en las computadoras de la segunda generacin? 4. Enumere algunas diferencias entre los sistemas operativos de computadora personal y los de mainframe.

32

5. Explique las diferencias entre sistema operativo de red y sistema operativo distribuido. 6. Explique el modelo cliente-servidor. 7. Mencione cuales son las funciones bsicas del ncleo del sistema operativo. 8. Explique que es una interrupcin. 9. Mencione y explique los tipos de interrupciones existentes. 10. Cul es la diferencia clave entre una interrupcin de sistema (TRAP) y una interrupcin normal?

33

UNIDAD 2. Administracin de procesos y del procesador. 2.1 Concepto de proceso. Un proceso es un programa en ejecucin. La diferencia entre proceso y programa es que el primero es activo y el programa pasivo (Tanenbaum, 2003). 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. 2.2 Estados y transiciones de los procesos Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecucin y Bloqueado (Tanenbaum, 2003). 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. La figura 2-1 muestra los estados y transiciones de procesos.

Figura 2-1 Estados de procesos

34

Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias las circunstancias que pueden hacer que el mismo cambie de estado. Debido a ello se puede establecer una Lista de Listos para los procesos listos y una Lista de Bloqueados para los bloqueados. La Lista de Listos se mantiene en orden prioritario y la Lista de Bloqueados est desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que estn esperando. Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado en la ltima parte de la Lista de Listos. La asignacin de la cpu al primer proceso de la Lista de Listos se denomina Despacho, que es ejecutado por una entidad del Sistema Operativo llamada Despachador. El Bloqueo es la nica transicin de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso. La manifestacin de un proceso en un Sistema Operativo es un Bloque de Control de Proceso (PCB) con informacin que incluye:

Estado actual del proceso. Identificacin nica del proceso. Prioridad del proceso. Apuntadores para localizar la memoria del proceso. Apuntadores para asignar recursos. rea para preservar registros.

Cuando el Sistema Operativo cambia la atencin de la CPU entre los procesos, utiliza las reas de preservacin del PCB para mantener la informacin que necesita para reiniciar el proceso cuando consiga de nuevo la CPU., a este cambio se le denomina cambio de contexto. Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso. La creacin de un proceso significa:

Dar nombre al proceso. Insertar un proceso en la lista del sistema de procesos conocidos. Determinar la prioridad inicial del proceso.

35

Crear el bloque de control del proceso. Asignar los recursos iniciales del proceso.

Un proceso puede crear un nuevo proceso, en cuyo caso el proceso creador se denomina proceso padre y el proceso creado proceso hijo y se obtiene una estructura jerrquica de procesos. La destruccin de un proceso implica:

Borrarlo del sistema. Devolver sus recursos al sistema. Purgarlo de todas las listas o tablas del sistema. Borrar su bloque de control de procesos.

Un proceso suspendido no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido. La destruccin de un proceso puede o no significar la destruccin de los procesos hijos, segn el Sistema Operativo. Generalmente se denomina Tabla de Procesos al conjunto de informacin de control sobre los distintos procesos. 2.3 Procesos ligeros (Hilos o hebras). Un hilo de ejecucin, es caracterstica que permite a una aplicacin realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecucin comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas funciones simultneamente. Figura 2-2 procesos ligeros.

Figura 2-2 Procesos ligeros

Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecucin de un mismo proceso compartan los recursos hace que cualquiera

36

de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente. Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado de la CPU (incluyendo el valor de los registros). Ver figura 2-3.

Figura 2-3 Informacin compartida y no compartida de hilos de control

El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado. Asimismo en el momento en el que todos los hilos de ejecucin finalizan, el proceso no existe ms y todos sus recursos son liberados. Algunos lenguajes de programacin tienen caractersticas de diseo expresamente creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o Delphi). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben ser creados mediante llamadas de biblioteca especiales que dependen del sistema operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del C++). Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos, botones, ventanas), mientras otro hilo hace una larga operacin internamente. De esta manera el programa responde de manera ms gil a la interaccin con el usuario. Tambin pueden ser utilizados por una aplicacin servidora para dar servicio a mltiples clientes. Diferencias entre hilos y procesos Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante informacin de estados, e interactan slo a travs de mecanismos de comunicacin dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa. En muchos de los sistemas operativos que dan facilidades a los hilos, es ms rpido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenmeno se debe a que los hilos comparten datos y espacios de direcciones, mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el

37

dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch), en este caso pasar del estado de ejecucin (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecucin. En los hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo perdido es casi despreciable. Figura 2-4 Tareas con uno y varios hilos.

Figura 2-4 Tareas con uno y varios hilos

Funcionalidad de los hilos Al igual que los procesos, los hilos poseen un estado de ejecucin y pueden sincronizarse entre ellos para evitar problemas de compartimiento de recursos. Generalmente, cada hilo tiene una tarea especfica y determinada, como forma de aumentar la eficiencia del uso del procesador. Estados de un hilo Los principales estados de los hilos son: Ejecucin, Activo y Bloqueado (Figura 2-5 [Tanenbaum, 2003]). No tiene sentido asociar estados de suspensin de hilos ya que es un concepto de proceso. En todo caso, si un proceso est expulsado de la memoria principal (ram), todos sus hilos debern estarlo ya que todos comparten el espacio de direcciones del proceso.

Figura 2-5 Estado de los procesos ligeros

38

Cambio de estados

Creacin: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instruccin y los argumentos del nuevo hilo. El hilo tendr su propio contexto y su propio espacio de pila, y pasara a la cola de listos. Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila). Ahora el procesador podr pasar a ejecutar otro hilo que est en la cola de Listos mientras el anterior permanece bloqueado. Desbloqueo: Cuando el suceso por el que el hilo se bloque se produce, el mismo pasa a la cola de Listos. Terminacin: Cuando un hilo finaliza se liberan tanto su contexto como sus pilas.

Ventajas de los hilos contra procesos Si bien los hilos son generados a partir de la creacin de un proceso, podemos decir que un proceso es un hilo de ejecucin, conocido como Monohilo. Pero las ventajas de los hilos se dan cuando hablamos de Multihilos, que es cuando un proceso tiene mltiples hilos de ejecucin los cuales realizan actividades distintas, que pueden o no ser cooperativas entre s. Los beneficios de los hilos se derivan de las implicaciones de rendimiento. 1. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso. Algunas investigaciones llevan al resultado que esto es as en un factor de 10. 2. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un proceso se debe eliminar el BCP del mismo, mientras que un hilo se elimina su contexto y pila. 3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso 4. Los hilos aumentan la eficiencia de la comunicacin entre programas en ejecucin. En la mayora de los sistemas en la comunicacin entre procesos debe intervenir el ncleo para ofrecer proteccin de los recursos y realizar la comunicacin misma. En cambio, entre hilos pueden comunicarse entre s sin la invocacin al ncleo. Por lo tanto, si hay una aplicacin que debe implementarse como un conjunto de unidades de ejecucin relacionadas, es ms eficiente hacerlo con una coleccin de hilos que con una coleccin de procesos separados.

39

Sincronizacin de hilos Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. Cualquier modificacin de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos. Una ventaja de la programacin multihilo es que los programas operan con mayor velocidad en sistemas de computadores con mltiples CPUs (sistemas multiprocesador o a travs de grupo de mquinas) ya que los hilos del programa se prestan verdaderamente para la ejecucin concurrente. En tal caso el programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros tambin estn usando), y otros comportamientos no intuitivos. Los hilos generalmente requieren reunirse para procesar los datos en el orden correcto. Es posible que los hilos requieran de operaciones atmicas para impedir que los datos comunes sean cambiados o ledos mientras estn siendo modificados, para lo que usualmente se utilizan los semforos. El descuido de esto puede generar interbloqueo. Formas de multihilos Los sistemas operativos generalmente implementan hilos de dos maneras:

Multihilo apropiativo: permite al sistema operativo determinar cundo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenmeno conocido como inversin de prioridades y otros problemas. Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detencin, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

El soporte de hardware para multihilo se encuentra disponible desde hace relativamente poco tiempo. Esta caracterstica fue introducida por Intel en el Pentium 4, bajo el nombre de HyperThreading. Usos ms comunes. Los usos mas comunes son en tecnologas SMPP (short message peer-to-peer protocol, es un protocolo estndar de telecomunicaciones pensado para el intercambio de mensajes) y SMS (Short message service) para la telecomunicaciones aqu hay muchsimos procesos corriendo a la vez y todos requiriendo de un servicio.

40

Trabajo interactivo y en segundo plano. Por ejemplo, en un programa de hoja de clculo un hilo puede estar visualizando los mens y leer la entrada del usuario mientras que otro hilo ejecuta las rdenes y actualiza la hoja de clculo. Esta medida suele aumentar la velocidad que se percibe en la aplicacin, permitiendo que el programa pida la orden siguiente antes de terminar la anterior. Procesamiento asncrono. Los elementos asncronos de un programa se pueden implementar como hilos. Un ejemplo es como los programas de procesamiento de texto guardan archivos temporales cuando se est trabajando en dicho programa. Se crea un hilo que tiene como funcin guardar una copia de respaldo mientras se contina con la operacin de escritura por el usuario sin interferir en la misma. Aceleracin de la ejecucin. Se pueden ejecutar, por ejemplo, un lote mientras otro hilo lee el lote siguiente de un dispositivo. Estructuracin modular de los programas. Puede ser un mecanismo eficiente para un programa que ejecuta una gran variedad de actividades, teniendo las mismas bien separadas mediante a hilos que realizan cada una de ellas. Implementaciones. Hay dos grandes categoras en la implementacin de hilos:

Hilos a nivel de usuario. Hilos a nivel de Kernel.

Tambin conocidos como ULT (User Level Thread) y KLT (Kernel Level Thread) Hilos a nivel de usuario (ULT) En una aplicacin ULT pura, todo el trabajo de gestin de hilos lo realiza la aplicacin y el ncleo o kernel no es consciente de la existencia de hilos. Es posible programar una aplicacin como multihilo mediante una biblioteca de hilos. La misma contiene el cdigo para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la ejecucin de hilos y para salvar y restaurar el contexto de los hilos. Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo proceso. El kernel continua planificando el proceso como una unidad y asignndole un nico estado (Listo, bloqueado, etc.). Ventajas de los ULT

El intercambio de los hilos no necesita los privilegios del modo kernel, porque todas las estructuras de datos estn en el espacio de direcciones de usuario de un mismo proceso. Por lo tanto, el proceso no debe

41

cambiar a modo kernel para gestionar hilos. Se evita la sobrecarga de cambio de modo y con esto el sobrecoste u overhead. Se puede realizar una planificacin especfica. Dependiendo de que aplicacin sea, se puede decidir por una u otra planificacin segn sus ventajas. Los ULT pueden ejecutar en cualquier sistema operativo. La biblioteca de hilos es un conjunto compartido.

Desventajas de los ULT

En la mayora de los sistemas operativos las llamadas al sistema (System calls) son bloqueantes. Cuando un hilo realiza una llamada al sistema, se bloquea el mismo y tambin el resto de los hilos del proceso. En una estrategia ULT pura, una aplicacin multihilo no puede aprovechar las ventajas de los multiprocesadores. El ncleo asigna un solo proceso a un solo procesador, ya que como el ncleo no interviene, ve al conjunto de hilos como un solo proceso.

Una solucin al bloqueo mediante a llamadas al sistema es usando la tcnica de jacketing, que es convertir una llamada bloqueante en no bloqueante. Hilos a nivel de ncleo (KLT) En una aplicacin KLT pura, todo el trabajo de gestin de hilos lo realiza el kernel. En el rea de la aplicacin no hay cdigo de gestin de hilos, nicamente un API (interfaz de programas de aplicacin) para la gestin de hilos en el ncleo. Windows 2000, Linux y OS/2 utilizan este mtodo. Linux utiliza un mtodo muy particular en que no hace diferencia entre procesos e hilos, para linux si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales el sistema operativo los trata como hilos y lgicamente son manejados por el kernel. Ventajas de los KLT

El kernel puede planificar simultneamente mltiples hilos del mismo proceso en mltiples procesadores. Si se bloquea un hilo, puede planificar otro del mismo proceso. Las propias funciones del kernel pueden ser multihilo

Desventajas de los KLT

El paso de control de un hilo a otro precisa de un cambio de modo.

42

Combinaciones ULT y KLT Algunos sistemas operativos ofrecen la combinacin de ULT y KLT, como Solaris. La creacin de hilos, as como la mayor parte de la planificacin y sincronizacin de los hilos de una aplicacin se realiza por completo en el espacio de usuario. Los mltiples ULT de una sola aplicacin se asocian con varios KLT. El programador puede ajustar el nmero de KLT para cada aplicacin y mquina para obtener el mejor resultado global. En un mtodo combinado, los mltiples hilos de una aplicacin se pueden ejecutar en paralelo en mltiples procesadores y las llamadas al sistema bloqueadoras no necesitan bloquear todo el proceso. 2.4 Concurrencia y secuenciabilidad. La concurrencia comprende un gran nmero de cuestiones de diseo, incluyendo la comunicacin entre procesos, comparicin y competencia por los recursos, sincronizacin de la ejecucin de varios procesos y asignacin del tiempo de procesador a los procesos y es fundamental para que existan diseos como Multiprogramacin, Multiproceso y Proceso distribuido. Los procesos son concurrentes si existen simultneamente. Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o ms procesos sean concurrentes, es necesario que tengan alguna relacin entre ellos. La concurrencia puede presentarse en tres contextos diferentes: 1. Varias aplicaciones: La multiprogramacin se cre para permitir que el tiempo de procesador de la mquina fuese compartido dinmicamente entre varios trabajos o aplicaciones activas. 2. Aplicaciones estructuradas: Como ampliacin de los principios del diseo modular y la programacin estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. 3. Estructura del sistema operativo: Las mismas ventajas de estructuracin son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos estn implementados como un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes: a) Multiprogramacin con un nico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucin de los mismos para dar as una apariencia de ejecucin simultnea.

43

b) Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no slo pueden intercalar su ejecucin sino tambin superponerla. c) Multicomputadora. Es una maquina de memoria distribuida, que est formada por una serie de computadoras. En este tipo de arquitecturas tambin es posible la ejecucin simultnea de los procesos sobre los diferentes procesadores. En general, la concurrencia ser aparente siempre que el nmero de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya ms de un proceso por procesador. La concurrencia ser real cuando haya un proceso por procesador. Aunque puede parecer que la intercalacin y la superposicin de la ejecucin de procesos presentan formas de ejecucin distintas, se ver que ambas pueden contemplase como ejemplos de procesos concurrentes Existen diversas razones que motivan la ejecucin de procesos concurrentes en un sistema: Facilita la programacin de aplicaciones al permitir que stas se estructuren como un conjunto de procesos que cooperan entre s para alcanzar un objetivo comn. Acelera los clculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo que se puede hacer es dividirla en procesos, cada uno de los cuales se ejecuta en paralelo con los dems. Posibilita el uso interactivo a mltiples usuarios que trabajan de forma simultnea. Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya que pueden aprovechar las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros. As como existen las razones que motivan la ejecucin de procesos concurrentes, tambin existen sus contras: Inanicin e interrupcin de procesos Ocurrencia de bloqueos Que dos o ms procesos requieran el mismo recurso (No apropiativo) Tipos de procesos concurrentes. Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como:

44

Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperacin de otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan de forma simultnea en un sistema. Procesos son cooperantes: Son aquellos que estn diseados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos. En ambos tipos de procesos (independientes y cooperantes), puede producirse una serie de interacciones entre ellos y pueden ser de dos tipos: Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos fsicos o lgicos. Por ejemplo, dos procesos independientes compiten por el acceso a disco o para modificar una base de datos. Interaccin motivada porque los procesos se comunican y sincronizan entre s para alcanzar un objetivo comn, Por ejemplo, un compilador que tiene varios procesos que trabajan conjuntamente para obtener un solo archivo de salida. Elementos a gestionar y disear a causa de la concurrencia. Se pueden enumerar los siguientes: 1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de PBCs (Bloque de Control de Procesos) 2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen: Tiempo de procesador: Es funcin de la planificacin. Memoria: La mayora de los sistemas operativos emplean esquemas de memoria virtual. Dispositivos de E/S: 3. El sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias no intencionadas de otros procesos. 4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecucin con respecto a otros procesos concurrentes. 2.4.1 Exclusin mutua de secciones criticas. Como se menciono en la seccin anterior, la concurrencia comprende un gran nmero de cuestiones de diseo, incluyendo la comunicacin entre procesos, accin vital, ya que con frecuencia los procesos necesitan comunicarse con otros procesos.

45

Hay tres aspectos que se deben cuidar en la comunicacin entre procesos. El primero, como puede un proceso pasar informacin a otro. El segundo tiene que ver con asegurarse de que dos o ms procesos no se estorben al realizar actividades cruciales. El tercero tiene que ver con el ordenamiento correcto cuando existen dependencias: si el proceso A produce datos y el proceso B los imprime, B tendr que esperar hasta que A haya producido algunos datos antes de comenzar a imprimir. Estos tres aspectos son los que se analizaran en esta seccin. Condiciones de competencia. En algunos sistemas operativos, los procesos que trabajan juntos, comparten con frecuencia un espacio comn para almacenamiento en cada uno puede leer o escribir este espacio compartido puede estar en la ram o un spooler (especie de almacn de datos). Por ejemplo: Cundo un proceso desea imprimir un archivo escribe el nombre del archivo o en un directorio spooler particular. Otro proceso llamado demonio de paginacin verifica de forma peridica si existen archivos para imprimir y en caso afirmativo, los imprime para despus eliminar los nombres de dicho directorio. Suponga que se tiene un directorio spooler con entradas infinitas 0, 1, 2, 3, ... cada entrada almacena el nombre de un archivo utilizando dos variables out e in. out apunta hacia el siguiente archivo a imprimir e in apunta a un archivo en el directorio. Estas variables estn disponibles para todos los procesos en cierto instante, out del 0 al 3 estn vacas (ya fueron impresas) y out del 4 al 6 estn ocupadas (esperando turno para imprimir) en ese momento los procesos A y B colocan cada uno un archivo en la fila de impresin. Podra ocurrir que A lee out y almacena su valor (siete), en una variable llamada siguiente ranura libre. En ese instante ocurre una interrupcin de valor y la CPU alterna al proceso B, B lee out, y obtiene siete, y actualiza in a 8 . Luego se pone a hacer otras cosas. Secciones Crticas Para evitar condiciones de competencia es necesario determinar una forma de prohibir que ms de un proceso lea o escriba en los datos que se comparten, se requiere de una exclusin mutua como una forma de garantizar que si un proceso utiliza una variable o archivo compartido los dems procesos no podrn hacer lo mismo. La parte donde el programa en la que se tiene acceso a la memoria compartida se denomina regin critica o seccin critica. Si pudiramos organizar las cosas de modo que dos procesos nunca estuvieran en sus regiones criticas al mismo tiempo, podramos evitar condiciones de competencia. Aunque este requisito evita las condiciones de competencia, no basta para que procesos paralelos cooperen de forma correcta y eficiente empleado datos compartidos. Necesitamos que se cumplan cuatro condiciones para tener una buena solucin (Tanenbaum, 2003):

46

1. Dos procesos no deben de encontrase al mismo tiempo dentro de sus secciones criticas. 2. No hacer hiptesis sobre la velocidad o nmero de la CPUs. 3. Ningn proceso en ejecucin fuera de su seccin critica puede bloquear otros procesos. 4. Ningn proceso deber tener que esperar de manera indefinida para entra a su seccin critica. Ejemplo de exclusin mutua empleando regiones criticas. Figura 2-6.

Figura 2-6 Exclusin mutua empleando regiones crticas

Exclusin Mutua en Espera Activa Las soluciones con espera activa funcionan de la siguiente manera, cuando un proceso intenta ingresar a su regin crtica, verifica si esta permitida la entrada. Si no, el proceso se queda esperando hasta obtener el permiso.

Desactivacin de interrupciones

El mtodo ms simple para evitar las condiciones de competencia es hacer que cada proceso desactive todas sus interrupciones antes de entrar a su seccin crtica y las active una vez que salio de la misma. Este modelo como se puede observar, tiene un gran problema y es que si se produce una falla mientras que el proceso esta en la regin crtica no se puede salir de la misma y el sistema operativo no recuperara el control.

Cerrojos de espera activa

Un mecanismo ms general que la desactivacin de interrupciones es la utilizacin de una variable cerrojo para proteger la seccin crtica. El proceso que quiere entrar a la seccin crtica consulta el cerrojo. Si est libre (cerrojo==0), el proceso lo echa (cerrojo=1) y entra a la seccin crtica. Si est 47

echado, ejecuta una espera activa consultando su valor hasta que est libre. Cuando un proceso deja la seccin crtica, libera el cerrojo (cerrojo=0). Este esquema tan sencillo presenta importantes problemas de implementacin. Como se puede comprobar, la operacin de consulta y modificacin del cerrojo constituye a su vez una seccin crtica que hay que resolver previamente; si no dos procesos podran leer simultneamente un valor cero y ambos entrar a la seccin crtica, violando la condicin exclusin mutua. Existen algoritmos bastante sofisticados que permiten una implementacin software (Decker y Lamport, vase el siguiente ejemplo), pero los procesadores actuales integran mecanismos a nivel de lenguaje mquina que permiten implementar consulta y modificacin atmica sobre variables en memoria. Algoritmo de Dekker (1965) Para 2 procesos {Pi, Pj}. int pet[2]; /* inicialmente pet[i]=0 para todo i */ int turno; Entrar_SC (para un proceso Pi): pet[i]= 1; while (pet[j]) if (turno==j) { pet[i]= 0; while (turno==j) NOP; /* espera activa */ pet[i]= 1; } Dejar_SC (para un proceso Pi): turno= j; pet[i]= 0; a. Proporciona exclusin mutua: Pi slo entra si pet[i]. Si tambin pet[j], entonces uno de los dos procesos espera por turno.

48

b. No interbloqueo y no inanicin: Slo un proceso quedar esperando por turno, y en este caso el otro estar en la SC, por lo que el primero entrar cuando el segundo cambie el turno al salir. c. No garantiza un orden FIFO.

Algoritmo de la panadera de Lamport (1974) El algoritmo de la panadera toma su nombre de la costumbre de las panaderas y tiendas en general, donde las personas al entrar al local obtienen un nmero de turno (nico) y lo utilizan para el dependiente les vaya atendiendo en orden de llegada. El cliente obtiene su nmero de turno usando una cinta de papel que ofrece boletos con nmeros consecutivos. Para n procesos {P0, P1, ..., Pn-1}. int num[n]; /* inicialmente num[i]=0 para todo i */ int mirando[n]; /* inicialmente mirando[i]=0 para todo i */ Entrar_SC (para un proceso Pi): mirando[i]= 1; num[i]= maximo(num) + 1; /* coger numero */ mirando[i]= 0; for (j=0; j<n; j++) { while (mirando[j]) NOP; /* esperar */ while (num[j] && esta_antes(j, i)) NOP; /* esperar */ } Dejar_SC (para un proceso Pi): num[i]= 0; a. Proporciona exclusin mutua: Si Pi est esperando para entrar y existe algn Pk que b. ha mirado el nmero, entonces esta_antes(i, k). c. No interbloqueo y no inanicin: Se sigue una disciplina FIFO.

49

d. Dos procesos pueden haber cogido el mismo nmero. Entonces esta_antes() debe resolver. Por ejemplo, si num[i]==num[j], si i<j entonces esta_antes(i, j). Ntese que i y j no pueden ser iguales. Las instrucciones mquina de consulta y modificacin atmica (read-modifywrite) proporcionan acceso exclusivo a memoria en una operacin atmica de consulta y modificacin que bloquea el acceso al bus. El ejemplo ms simple es la instruccin mquina Test&Set, que ejecuta atmicamente la secuencia: R <- cerrojo cerrojo <- 1 Dejando en el registro R el valor previo de cerrojo. Representaremos esta instruccin como una funcin que devuelve el valor de cerrojo: BOOL test_and_set(cerrojo) El acceso a una seccin crtica se implementa haciendo una espera activa (spinlock) sobre el cerrojo, mediante primitivas de echar el cerrojo (lock) y liberar el cerrojo (unlock): lock (tipo_cerrojo cerrojo) { while (test_and_set(cerrojo)) NOP;4 } unlock (tipo_cerrojo cerrojo) { cerrojo= 0; } Una seccin crtica se protege de la siguiente forma: lock(cerrojo); /* Seccin crtica */

50

unlock(cerrojo); Los procesadores modernos cuentan con instrucciones mquina anlogas a Test&Set que permiten implementar la espera activa ms eficientemente, reduciendo la contencin en el acceso al bus de memoria. Algunos sistemas operativos utilizan cerrojos condicionales, proporcionando una primitiva de echar el cerrojo condicionalmente (cond_lock()) que, en vez de dejar al proceso esperando, devuelve un cdigo de estado si el cerrojo est ocupado, lo que es til para tratar de evitar interbloqueos, como se ver ms adelante. La espera activa es un mecanismo adecuado para multiprocesadores. En monoprocesadores, sin embargo, una espera activa por entrar a la seccin crtica podra impedir, dependiendo de la poltica de planificacin, que el proceso que ocupa la seccin crtica acceda al procesador para liberarla, y en el mejor de los casos retardara su entrada6. En cualquier caso, an en multiprocesadores, es adecuado combinar el mecanismo de espera activa con una planificacin que incremente la prioridad del proceso que ejecuta la seccin crtica.

Variables de bloqueo

En ste caso se genera una variable la cual puede tener dos valores o bien 0 (no hay ningn proceso en su seccin crtica) o bien 1 (indicando que la seccin crtica est ocupada) entonces cada proceso antes de ingresar a la seccin crtica verifica el estado de la variable de cerradura y en caso de que la misma este en 0, le cambia el valor e ingresa a la misma y en caso de que la misma sea 1 el proceso se queda verificando el estado de la misma hasta que el mismo sea 0. El problema aqu se presenta si dos procesos verifican al mismo tiempo que la variable cerradura esta en 0 e ingresan a la regin crtica.

Alternancia estricta

El algoritmo de alternancia estricta como su nombre lo indica alterna a los procesos que quieren ingresar a la regin critica. El problema de sta solucin es que cuando un proceso (proceso 0) no esta en la seccin crtica y es su turno de entrar, y no la hace porque esta ocupado fuera de la regin critica, le quita la oportunidad de entrar a otro proceso (proceso 1) que esta listo para entrar a la regin critica. Esta situacin viola la condicin 3 de una buena solucin: el proceso 1 esta siendo bloqueado por un proceso que no esta en su regin critica.

Instruccin TSL

51

Esta solucin requiere ayuda del hardware y es debido a que en general las computadoras diseadas para tener ms de un procesador tienen una instruccin TSL RX,BLOQUEO (TEST AND SET LOCK, probar y establecer bloqueo) que funciona de la siguiente manera: lee el contenido de la palabra de memoria bloqueo, lo coloca en la regin RX y luego guarda un valor distinto de cero en la direccin de memoria bloqueo. Se garantiza que las operaciones de leer la palabra y escribir en ella son indivisibles: ningn otro procesador puede tener acceso a la palabra de memoria antes de que haya terminado de ejecutarse la instruccin. La CPU que ejecuta la instruccin TSL cierra el bus de memoria para impedir que las otras CPUs tengan acceso a la memoria antes de que termine. 2.4.2 Sincronizacin de procesos en S.C. Los mecanismos de comunicacin y sincronizacin son dinmicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva ningn mecanismo de comunicacin, ya que ellos podran producir efectos indeseados. Es decir, la comunicacin es algo puntual. Los servicios bsicos de comunicacin son: crear: el proceso solicita la creacin del mecanismo. enviar o escribir: el proceso emisor enva informacin al proceso receptor. recibir o leer: el proceso receptor recibe informacin. destruir: el proceso solicita la destruccin del mecanismo de comunicacin. La comunicacin puede ser sncrona y asncrona: sncrona: los dos procesos han de ejecutar servicios de forma simultnea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir. asncrona: el emisor hace el envo y prosigue su ejecucin. El SO ofrece un almacenamiento intermedio para guardar la informacin enviada, hasta que el receptor la solicite. Figura 2-7 ejemplo de Sincronizacin Sncrona

52

Figura 2-7 Esquema de Sincronizacin Sncrona

En un sistema operativo multiprogramado los procesos compiten por el acceso a los recursos compartidos o cooperan dentro de una misma aplicacin para comunicar informacin. Ambas situaciones son tratadas por el sistema operativo mediante mecanismos de sincronizacin que permiten el acceso exclusivo de forma coordinada a los recursos y a los elementos de comunicacin compartidos. Segn el modelo de sistema operativo descrito anteriormente, basado en colas de procesos y transiciones de estados, los procesos abandonan la CPU para pasar a estado bloqueado cuando requieren el acceso a algn dispositivo, generalmente en una operacin de E/S, pasando a estado preparado cuando la operacin ha concluido y eventualmente volver a ejecucin. La gestin de estos cambios de estado, es decir, los cambios de contexto, es un ejemplo de seccin crtica de cdigo dentro del sistema operativo que debe ser ejecutada por ste en exclusin mutua. Otros ejemplos de cdigo que debe protegerse como seccin crtica incluyen la programacin de los dispositivos de E/S y el acceso a estructuras de datos y buffers compartidos. Dentro del ncleo del sistema operativo, el espacio de direcciones es nico, por lo que la comunicacin se resuelve mediante el uso de variables de memoria compartida. Como contrapartida a la agilidad de este esquema, es necesario utilizar mecanismos explcitos de sincronizacin para garantizar acceso exclusivo a las variables compartidas. Si se definen buffers o colas compartidas a las que se proporciona acceso exclusivo, se pueden utilizar esquemas de comunicacin ms elaborados, como es el caso del productor-consumidor (mas adelante se analizara este caso). El esquema cliente-servidor es un caso particular del productor-consumidor donde los clientes producen peticiones que son consumidas por el servidor de un determinado recurso. Un sistema operativo con estructura cliente-servidor resulta atractivo por la claridad de su diseo. Cuando los procesos que se comunican mediante estos esquemas no comparten el espacio de direcciones, lo que sucede en particular en sistemas basados en micro ncleo, se requieren primitivas de comunicacin por paso de mensajes (send y recive), que en la siguiente seccin se explicar como

53

funciona, que, al gestionar implcitamente la sincronizacin, simplifican la programacin de la comunicacin. Para lograr una comunicacin y sincronizacin eficientes de los procesos se requieren de mecanismos adecuados al diseo de los diferentes sistemas operativos., mismos que con anterioridad algunos de ellos ya se explicaron en una seccin anterior: Instruccin TSL, variables de alternancia, etc. Los cuales son correctos pero tiene el defecto de que requieren espera activa. En esencia lo que estas soluciones hacen es lo siguiente: cuando un proceso quiere entrar en su regin crtica, verifica si tal ingreso est permitido. Si no est permitido el proceso entra en un ciclo corto para esperar hasta que lo est. Este enfoque no slo desperdicia tiempo de CPU, sino que puede tener efectos inesperados. Ahora en esta seccin analizaremos primitivas de comunicacin entre procesos que se bloquean, en lugar de desperdiciar tiempo de CPU, cuando no se les permite entrar en su regin crtica. Una de las ms sencillas es el par sleep y wakeup. Sleep es una llamada al sistema que hace que el invocador se bloquee, es decir, queda suspendido hasta que otro proceso lo active. La llamada wakeup tiene un parmetro, el proceso por activar. De manera alternativa, tanto sleep como wakeup tiene un parmetro: una direccin de memoria que sirve para relacionar llamadas sleep como llamadas wakeup. El problema productor-consumidor Como ejemplo del uso de estas primitivas, que se bloquean en lugar de desperdiciar tiempo de CPU, consideremos el problema del productorconsumidor (tambin conocido como buffer limitado). El problema del productor- consumidor consiste en la situacin que de una parte se produce algn producto (datos en nuestro caso) que se posiciona en algn lugar (una cola en nuestro caso) para que sea consumido por otra parte. Como algoritmo obtenemos: producer: consumer: forever forever produce(item) take(item) place(item) consume(item) Queremos garantizar que el consumidor no coja los datos ms rpido que les est produciendo el productor. Ms concreto: 1. el productor puede generar sus datos en cualquier momento 2. el consumidor puede coger un dato solamente cuando hay alguno

54

3. para el intercambio de datos se usa una cola a la cual ambos tienen acceso, asi se garantiza el orden correcto 4. ningn dato no est consumido una vez siendo producido Si la cola puede crecer a una longitud infinita (siendo el caso cuando el consumidor consume ms lento que el productor produzca), basta con la siguiente solucin: producer: consumer: forever forever produce(item) itemsReady.wait() place(item) take(item) itemsReady.signal() consume(item) donde itemsReady es un semforo general que se ha inicializado al principio con el valor 0. El algoritmo es correcto que se ve con la siguiente prueba. Asumimos que el consumidor adelanta el productor. Entonces el nmero de wait()s tiene que ser ms grande que el nmero de signals(): #waits > #signals ==> #signals - #waits < 0 ==> itemsReady < 0 y la ltima lnea es una contradiccin a la invariante del semforo. Si queremos ampliar el problema introduciendo ms productores y ms consumidores que trabajan todos con la misma cola para asegurar que todos los datos estn consumidos lo ms rpido posible por algn consumidor disponible tenemos que proteger el acceso a la cola con un semforo binario (llamado mutex abajo): producer: consumer: forever forever produce(item) itemsReady.wait() mutex.wait() mutex.wait() place(item) take(item) mutex.signal() mutex.signal() itemsReady.signal() consume(item) Normalmente no se puede permitir que la cola crezca infinitamente, es decir, hay que evitar produccin en exceso tambin. Como posible solucin introducimos otro semforo general (llamado spacesLeft) que cuenta cuantos espacios quedan libre en la cola. Se inicializa el semforo con la longitud mxima permitida de la cola.

55

producer: consumer: forever forever spacesLeft.wait() itemsReady.wait() produce(item) mutex.wait() mutex.wait() take(item) place(item) mutex.signal() mutex.signal() consume(item) itemsReady.signal() spacesLeft.signal() 2.4.2.1 Mecanismo de semforos. Dijkstra dio en 1968 una solucin al problema de la exclusin mutua con la introduccin del concepto de semforo binario. Est tcnica permite resolver la mayora de los problemas de sincronizacin entre procesos y forma parte del diseo de muchos sistemas operativos y de lenguajes de programacin concurrentes. Un semforo binario es un indicador (S) de condicin que registra si un recurso est disponible o no. Un semforo binario slo puede tomar dos valores: 0 y 1. Si, para un semforo binario, S = 1 entonces el recurso est disponible y la tarea lo puede utilizar; si S = 0 el recurso no est disponible y el proceso debe esperar. Los semforos se implementan con una cola de tareas o de condicin a la cual se aaden los procesos que estn en espera del recurso. Slo se permiten tres operaciones sobre un semforo - Inicializar - Espera (wait) - Seal (signal) En algunos textos, se utilizan las notaciones P y V para las operaciones de espera y seal respectivamente, ya que sta fue la notacin empleada originalmente por Dijkstra para referirse a las operaciones. As pues, un semforo binario se puede definir como un tipo de datos especial que slo puede tomar los valores 0 y 1, con una cola de tareas asociada y con slo tres operaciones para actuar sobre l. Las operaciones pueden describirse como sigue: inicializa (S: SemaforoBinario; v: integer) Poner el valor del semforo S al valor de v (0 o 1)

56

espera (S) if S = 1 then S := 0 else suspender la tarea que hace la llamada y ponerla en la cola de tareas seal (S) if la cola de tareas est vaca then S := 1 else reanudar la primera tarea de la cola de tareas Las operaciones son procedimientos que se implementan como acciones indivisibles y por ello la comprobacin y cambio de valor del indicador se efecta de manera real como una sola operacin, lo cual hay que tener presente a la hora de disear el planificador de tareas. En sistemas con un nico procesador bastar simplemente con inhibir las interrupciones durante la ejecucin de las operaciones del semforo. En los sistemas multiprocesador, sin embargo, este mtodo no resulta ya que las instrucciones de los procesadores se pueden entrelazar de cualquier forma. La solucin est en utilizar instrucciones hardware especiales, si se dispone de ellas, o en introducir soluciones software como las vistas anteriormente, que ya indicamos, que servan tanto para sistemas uniprocesador como para sistemas multiprocesador. La operacin inicializa se debe llevar a cabo antes de que comience la ejecucin concurrente de los procesos ya que su funcin exclusiva es dar un valor inicial al semforo. Un proceso que corre la operacin espera y encuentra el semforo a 1, lo pone a 0 y prosigue su ejecucin. Si el semforo est a 0 el proceso queda en estado de espera hasta que el semforo se libera. Dicho estado se debe considerar como uno ms de los posibles de un proceso. Esto es as debido a que un proceso en espera de un semforo no est en ejecucin ni listo para pasar a dicho estado puesto que no tiene la CPU ni puede pasar a tenerla mientras que no se lo indique el semforo. Tampoco es vlido el estado suspendido, ya que este estado est pensado para que lo utilicen llamadas al sistema operativo para suspender o reactivar un proceso que no tiene por qu tener una conexin con los semforos. El diagrama de transicin de estados de la figura se puede ampliar con un nuevo estado que denominamos de espera, figura 2-8.

57

Figura 2-8 Transiciones para el estado de espera

Cuando se ejecuta la operacin seal puede haber varios procesos en la lista o cola, el proceso que la dejar para pasar al estado listo depender del esquema de gestin de la cola de tareas suspendidas que se haya implementado en el diseo del semforo, por ejemplo: prioridades, FIFO, etc. Si no hay ningn proceso en espera del semforo este se deja libre (S := 1) para el primero que lo requiera. Modelo de Sincronizacin de Exclusin Mutua Con Semforos La exclusin mutua se realiza fcilmente utilizando semforos. La operacin de espera se usar como procedimiento de bloqueo antes de acceder a una seccin crtica y la operacin seal como procedimiento de desbloqueo. Se utilizarn tantos semforos como clases de secciones crticas se establezcan. El proceso P1 de la seccin anterior ahora toma la forma: process P1 begin loop espera (S) ; Seccin Crtica seal (S) ; Suspendido

58

Durmiente Listo Espera Ejecucin Espera Seal (* resto del proceso *) end end P1; 2.4.2.2 Mecanismo de monitores. Un monitor es una coleccin de procedimientos, variables y estructuras de datos que se agrupan en un tipo de modulo especia (Tanenbaum, 2003)l. 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) : hace 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. Los monitores son una construccin de lenguaje de programacin, as que el compilador sabe que son especiales y puede manejar las llamadas a los procedimientos de monitor, de manera distinta de cmo maneja las otras llamadas a procedimientos. Por lo regular, cuando un proceso llama a un procedimiento de monitor, las primeras instrucciones de ste verifican si algn otro proceso esta activado dentro del monitor. Si ningn otro proceso lo est usando, el proceso invocador puede entrar. El compilador debe implementar la exclusin mutua en los ingresos a un monitor, pero es posible utilizar un mutex o un semforo binario. Puesto que es el compilador, no el programador, quien tramita la exclusin mutua, es mucho

59

menos probable que algo salga mal. En todo caso, quien escribe el monitor no tiene que saber la manera en que el compilador maneja la exclusin mutua. Basta con saber que convirtiendo todas las regiones criticas en procedimientos de monitor, dos procesos nunca podrn ejecutar sus regiones criticas al mismo tiempo. A continuacin se presenta un bosquejo del problema del productor-consumidor con monitores, propuesto por el modelo de Hoare/Brinch Hansen. condition lleno vacio; integer cuenta; procedure insertar(elem: integer); begin if cuenta=N then wait(lleno) insertar_elem(elem); cuenta:=cuenta + 1; if cuenta=1 then signal(vacio) end; function quitar:integer; begin if cuenta=0 then wait(vacio); quitar=quitar_elem; cuenta:=cuenta-1; if cuenta=N-1 then signal(lleno) end; cuenta:=0; end monitor; procedure productor; begin while true do begin elem=producir_elem; productorConsumidor.insertar(elem) end end; procedure consumidor; begin

60

while true do begin elem=ProductorConsumidor.quitar; consumir_elem(elem) end end; Transferencia de mensajes Los mensajes proporcionan una solucin al problema de la concurrencia de procesos que integra la sincronizacin y la comunicacin entre ellos y resulta adecuado tanto para sistemas centralizados como distribuidos. Esto hace que se incluyan en prcticamente todos los sistemas operativos modernos y que en muchos de ellos se utilicen como base para todas las comunicaciones del sistema, tanto dentro del computador como en la comunicacin entre computadores. La comunicacin mediante mensajes necesita siempre de un proceso emisor y de uno receptor as como de informacin que intercambiarse. Por ello, las operaciones bsicas para comunicacin mediante mensajes que proporciona todo sistema operativo son: Enviar (mensaje) y recibir (mensaje). Las acciones de transmisin de informacin y de sincronizacin se ven como actividades inseparables. La comunicacin por mensajes requiere que se establezca un enlace entre el receptor y el emisor, la forma del cual puede variar grandemente de sistema a sistema. Aspectos importantes a tener en cuenta en los enlaces son: como y cuantos enlaces se pueden establecer entre los procesos, la capacidad de mensajes del enlace y tipo de los mensajes. Su implementacin vara dependiendo de tres aspectos: 1- El modo de nombrar los procesos. 2- El modelo de sincronizacin. 3- Almacenamiento y estructura del mensaje. Modos de nombrar los mensajes El proceso de denominacin de las tareas para la comunicacin por mensajes se puede realizar de dos formas distintas: directa e indirectamente. En la comunicacin directa ambos procesos, el que enva y el que recibe, nombran de forma explcita al proceso con el que se comunican. Las operaciones de enviar y recibir toman la forma: enviar(Q, mensaje): enva un mensaje al proceso Q recibir(P, mensaje): recibe un mensaje del proceso P Este mtodo de comunicacin establece un enlace entre dos procesos que desean comunicar, proporcionando seguridad en el intercambio de mensajes, ya que cada proceso debe conocer la identidad de su pareja en la comunicacin,

61

pero, por lo mismo, no resulta muy adecuado para implementar rutinas de servicio de un sistema operativo. En la comunicacin indirecta los mensajes se envan y reciben a travs de una entidad intermedia que recibe el nombre de buzn o puerto. Como su nombre indica, un buzn es un objeto en el que los procesos dejan mensajes y del cual pueden ser tomados por otros procesos. Ofrecen una mayor versatilidad que en el caso de nombramiento directo, ya que permiten comunicacin de uno a uno, de uno a muchos, de muchos a uno y de muchos a muchos. Cada buzn tiene un identificador que lo distingue. En este caso las operaciones bsicas de comunicacin toman la forma: enviar (buznA, mensaje): enva un mensaje al buzn A recibir (buznA, mensaje): recibe un mensaje del buzn A. El buzn establece un enlace que puede ser utilizado por ms de dos procesos y permite que la comunicacin de un proceso con otro se pueda realizar mediante distintos buzones. En el caso de que haya varios procesos que recogen informacin del mismo buzn se plantea el problema de quien debe recoger un mensaje. Se pueden dar distintas soluciones: permitir que un buzn slo pueda ser compartido por dos procesos, permitir que cada vez slo un proceso pueda ejecutar una operacin de recibir y, por ltimo, que el sistema identifique al receptor del mensaje. Adems de las operaciones bsica mencionadas, los sistemas operativos suelen proporcionar operaciones adicionales como las de crear y eliminar buzones. Modelos de sincronizacin Las diferencias en los modelos usados para la sincronizacin de los procesos se debe a las distintas formas que puede adoptar la operacin de envo del mensaje. a) Sncrona. El proceso que enva slo prosigue su tarea cuando el mensaje ha sido recibido. b) Asncrona. El proceso que enva un mensaje sigue su ejecucin sin preocuparse de si el mensaje se recibe o no. Invocacin remota. El proceso que enva el mensaje slo prosigue su ejecucin cuando ha recibido una respuesta del receptor. El mtodo sncrono necesita de que ambos procesos, el emisor y el receptor, se "junten" para realizar una comunicacin, por lo que se suele denominar encuentro( "rendezvous"). Si no se ha emitido una seal de recibir cuando se ejecuta la operacin de enviar, el proceso emisor se suspende hasta que la ejecucin de una operacin de recibir le saca de ese estado. Cuando el proceso que enva el mensaje contina sabe que su mensaje ha sido recibido. De este modo una pareja emisor-receptor no puede tener ms de un mensaje pendiente en cada momento. En el modelo asncrono el sistema operativo se encarga de recoger el mensaje del emisor y almacenarlo en espera de que una operacin de recibir lo recoja. Normalmente este tipo de comunicacin tiene limitado la cantidad de

62

memoria que puede utilizar una pareja en comunicacin directa o un buzn en comunicacin indirecta, para evitar as que un uso descontrolado pudiera agotar la cantidad de almacenamiento temporal del sistema. A la invocacin remota tambin se le conoce como encuentro extendido, ya que el receptor puede realizar un nmero arbitrario de cmputos antes de enviar la respuesta. La operacin de recibir, tanto en los mtodos de nominacin directa como indirecta, se suele implementar de modo que el proceso que ejecuta la operacin toma un mensaje si este est presente y se suspende si no lo est. Sin embargo, este modo de funcionamiento plantea el problema de una espera indefinida en el caso de que un fallo impida que llegue un mensaje. Una solucin consiste en proporcionar una operacin de recibir sin bloqueo, que en algunos sistemas se denomina aceptar, de modo que si el mensaje est presente se devuelve, y si no lo est se devuelve un cdigo de error. Otra solucin ms adecuada consiste en especificar en la sentencia de recibir un tiempo mximo de espera del mensaje. Si transcurre el tiempo especificado el sistema operativo desbloquea al proceso suspendido y le enva un mensaje o cdigo de error indicando el agotamiento del tiempo de espera. Por ejemplo, en un sistema con nominacin indirecta la operacin de recibir puede tener la forma: recibir (buzn, mensaje, tiempo_espera). Aunque la especificacin del tiempo de espera se podra realizar tambin en la operacin de envo, resulta suficiente implementarla en la operacin de recibir, por lo que es esto lo habitual en la mayora de los sistemas operativos. Se pueden relacionar las distintas formas de enviar un mensaje. Dos operaciones asncronas pueden constituir una relacin sncrona si se enva una seal de reconocimiento. As, si dos procesos, P y Q, se comunican de forma directa asncrona se puede establecer la sincronizacin entre ellos mediante las operaciones: P enviar(Q, mensaje) recibir(P, reconocimiento) Q recibir(P, mensaje) enviar(P,reconocimiento) El proceso P enva el mensaje a Q y despus se suspende en espera de un mensaje de reconocimiento por parte de Q. Cuando el mensaje Q recibe el mensaje enva un mensaje de reconocimiento a P que hace que este pueda proseguir su ejecucin. La operacin de envo con buzn tambin puede ser sncrona si se implementa de modo que el remitente se suspende hasta que el mensaje ha sido recibido. La invocacin remota se puede construir a partir de dos comunicaciones sncronas: P

63

enviar(Q, mensaje) recibir(P, respuesta) Q recibir(P, mensaje) ....... construye respuesta ....... enviar(P,respuesta) Como una seal de envo asncrona se puede utilizar para construir los otros dos modos se podra argumentar que este mtodo es ms flexible y es el que debera implementarse en todos los casos. Sin embargo adolece del inconveniente de que al no saberse cuando se recibe el mensaje la mayora se programan para recibir un mensaje de reconocimiento, es decir, se hacen sncronas; tambin son ms difciles de depurar. Almacenamiento y estructura del mensaje En la transferencia de informacin en un enlace se deben tener en cuenta la forma en la que esta se produce y la capacidad o nmero de mensajes que admite el enlace. A su vez, el intercambio de informacin se puede realizar de dos formas: por valor o por referencia. En la transferencia por valor se realiza una copia del mensaje del espacio de direcciones del emisor al espacio de direcciones del receptor, mientras que en la transferencia por referencia se pasa un puntero al mensaje. La transferencia por valor tiene la ventaja de que mantiene el desacoplo en la informacin que maneja el emisor y el receptor, lo que proporciona mayor seguridad en la integridad de la informacin. Tiene el inconveniente del gasto de memoria y tiempo que implica la copia, que adems se suelen ver incrementados por el uso de una memoria intermedia. Estos inconvenientes son justamente los convenientes de la transmisin por referencia que tiene como aspecto negativo el necesitar mecanismos adicionales de seguridad para compartir la informacin entre los procesos. El mtodo de sincronizacin de la invocacin remota utiliza necesariamente la transferencia por valor, mientras que los mtodos sncrono y asncrono pueden utilizar ambos modos. Los sistemas operativos tienen asociado a cada enlace una cola en la cual mantienen los mensajes pendientes de ser recibidos. En la comunicacin sncrona la cola se puede considerar que tiene una longitud nula ya que, como se ha indicado, los dos procesos deben encontrarse para proceder al intercambio del mensaje. En este caso se dice tambin que la transferencia se realiza sin utilizacin de una memoria intermedia. Sin embargo, en la comunicacin asncrona y en la invocacin remota la implementacin de la cola se realiza normalmente con una capacidad de mensajes finita mayor que cero, m. Cuando el proceso emisor enva un mensaje, si la cola no est llena, se copia el mensaje y el proceso contina su ejecucin. Si la cola est llena el

64

proceso se suspende hasta que queda espacio libre en la cola. Si el mensaje se pasa por referencia la cola guarda los punteros a los mensajes y los valores de esto si el paso es por valor. En algunos casos se considera que la capacidad de la cola es ilimitada, de manera que un proceso nunca se suspende cuando enva un mensaje. Atendiendo a la estructura de los mensajes estos se pueden considerar divididos en tres tipos: a) Longitud fija b) Longitud variable c) De tipo definido El primer tipo resulta en una implementacin fsica que permite una asignacin sencilla y eficaz principalmente en las transferencias por valor. Por el contrario dificulta la tarea de la programacin. Los mensajes de longitud variable son ms adecuados en los sistemas donde la transferencia se realiza por punteros, ya que la longitud del mensaje puede formar parte de la propia informacin transmitida. La programacin en este caso resulta ms sencilla a expensas de una mayor dificultad en la implementacin fsica. Por ltimo, los mensajes con definicin del tipo son adecuados en la comunicacin con buzones. A cada buzn que utilice un proceso se le puede asignar el tipo de dato adecuado para dicho mensaje y slo mensajes con esa estructura pueden ser enviados por ese enlace. Por ejemplo, en un lenguaje de programacin con declaracin explcita de buzones se podra tener la sentencia buznA: mailbox[p] of dato; para declarar un buzn con el identificador buznA con una capacidad de p elementos del tipo dato. Ejemplo: Este ejemplo muestra como se puede utilizar la comunicacin por mensajes para implementar un semforo binario. Se supone que se utiliza un buzn asncrono con una cola ilimitada conocido tanto por el procedimiento de espera como por el de seal. module semforo; type mensaje = record .... ; const nulo = ....; procedure espera(var S:integer); var temp: mensaje; begin recibir(Sbuzon,temp); S := 0; end espera; procedure seal(var S: integer);

65

begin enviar(Sbuzon,nulo); end seal; procedure inicializa(var S:integer; valor:boolean); begin if valor = 1 then enviar(Sbuzon,nulo); end; S := valor; end inicializa; begin crear_buzon(Sbuzon); end {semaforo} El buzn creado se identifica de forma exclusiva con el semforo. El mensaje que se transmite es irrelevante ya que el paso de mensajes tiene la nica misin de sincronizar tareas, por ello se utiliza un mensaje nulo. El semforo est libre cuando hay un mensaje en la cola. En este caso, si un proceso ejecuta una seal de espera (lo que equivale a una operacin de recibir) puede proseguir su ejecucin. Cualquier otro proceso que ejecute una operacin de espera no podr leer ningn mensaje ya que la cola est vaca y, por lo tanto, se suspender hasta que es sealado (enviado un mensaje) por otro proceso. El comportamiento del primer proceso que emita la seal de espera depender de la inicializacin que se haya hecho del semforo. Si se inicializa con un valor de 1 se enva un mensaje al buzn y el primer proceso en acceder al semforo podr leer el mensaje y pondr, por lo tanto, al semforo en ocupado. Si se inicializa a 0, el buzn esta inicialmente vaco y el semforo aparece como ocupado, luego un proceso que ejecute la operacin de espera se suspende hasta que se ejecute una operacin de seal por otro proceso. Para que el semforo pueda funcionar es necesario suponer que slo hay un mensaje circulando a la vez y que este slo puede ser conseguido por uno de los procesos que estn en la espera. 2.4.3 Interbloqueo (DeadLock). Cuando un proceso de un sistema de multiprogramacin espera en balde a que se presente un evento especfico, se dice que se encuentra en un estado de interbloqueo o bloqueo mutuo. Los procesos que pueden encontrase en esta situacin pueden ser uno o varios. En los sistemas de multiprogramacin, compartir recursos es uno de los principales objetivos del sistema operativo. Cuando se comparten recursos entre una poblacin de usuarios o procesos, cada uno de los cuales mantiene un control exclusivo sobre ciertos recursos asignados a l, es posible que se

66

produzcan bloqueos mutuos que impedirn la terminacin de algunos de los procesos del sistema. Todos los interbloqueos suponen demandas contradictorias de recursos por parte de dos o ms procesos. La figura 2-9 ilustra este conflicto de forma abstracta en el caso de dos procesos y dos recursos. Los dos ejes del diagrama representan el avance de los dos procesos en trminos de instrucciones ejecutadas. El avance conjunto de los dos procesos se representa entonces con una secuencia discreta de puntos en el espacio. Las lneas horizontales o verticales representan el intervalo de tiempo en el que slo uno de los procesos est ejecutndose (intercalado); una lnea diagonal significa ejecucin simultnea (solapamiento). Supngase que existe un punto en la ejecucin de cada proceso en el que se requiere el uso exclusivo de ambos recursos, R1 y R2, para continuar. En el ejemplo, llega un punto en el que el proceso P1 ha adquirido el recurso R1 y el proceso P2 ha adquirido el recurso R2, y cada proceso necesita el otro recurso. Este es el punto de interbloqueo.

Figura 2-9 Procesos compitiendo por recursos

En ste tema se analizar el problema del interbloqueo y las distintas alternativas de solucin que se pueden adoptar clasificadas en las siguientes cuatro reas : prevencin, evitacin, deteccin y recuperacin del bloqueo mutuo. Para cada una de las estrategias adoptadas, se analizar el equilibrio entre la sobrecarga debida a los mecanismos de correccin del interbloqueo y los beneficios que reportan. En algunos casos es excesivo el precio (gasto extra) que hay que pagar para conseguir a toda costa que no se produzcan interbloqueos. Sin embargo, en algunos casos, como en los sistemas de tiempo real, no hay ms alternativa que pagar el precio, ya que puede resultar catastrfico permitir la posibilidad de un bloqueo mutuo.

67

Un problema afn: el aplazamiento indefinido. En cualquier sistema que mantenga los procesos en espera mientras se les asigna un recurso o se toman decisiones de planificacin, la programacin de un proceso puede postergarse indefinidamente mientras otro recibe la atencin del sistema. Tal situacin se conoce con varios nombres, entre los que se incluyen aplazamiento indefinido, bloqueo indefinido e inanicin, y puede resultar tan peligrosa como el interbloqueo. El aplazamiento indefinido puede ocurrir debido a predisposiciones en las polticas de planificacin de recursos del sistema. Cuando los recursos se planifican por prioridad, es posible que un proceso dado espere de forma indefinida un recurso porque siguen llegando otros procesos con mayor prioridad. Los sistemas deben disearse para administrar los procesos en espera de manera justa adems de eficiente. En algunos sistemas, el aplazamiento indefinido se evita aumentando la prioridad del proceso mientras espera (tcnica de envejecimiento). En algn momento la prioridad de se proceso superar la prioridad de los entrantes y el proceso en espera ser atendido. Casos de Interbloqueos El caso ms simple de interbloqueo sera el de un slo proceso que espera la ocurrencia de un evento y, sin embargo, el sistema no incluye la posibilidad de sealar dicha ocurrencia. Es muy difcil detectar los bloqueos mutuos de esta naturaleza. La mayor parte de los bloqueos mutuos implican una competencia entre varios procesos por varios recursos. Holt (1972) utiliz grafos dirigidos para representar situaciones de interbloqueo. Estos grafos tienen dos tipos de nodos : procesos, que se representan con crculos, y recursos, representados por cuadrados. Si in proceso est utilizando un recurso, previamente solicitado y concedido, se traza un arco desde el nodo del recurso (cuadrado) hasta el proceso (crculo). En la figura 2-10, el recurso R est en ese momento asignado al proceso A. En b), el proceso B est solicitando el recurso s. Por ltimo en c) se representa un situacin de interbloqueo : el proceso C est a la espera del recurso T, que est asignado al proceso D. El proceso D no ha dejado T, porque est esperando a que quede libre el recurso U, que, a su vez, est siendo utilizado por C. Ambos esperarn indefinidamente.

68

Figura 2-10 Grafos de asignacin de recursos

El siguiente ejemplo servir para ilustrar el empleo de grafos de recursos. Supongamos que tenemos tres procesos, A, B y C, y tres recursos, R, S, y T. La figura 2-11 representa las secuencias de peticin y liberacin que realizan los tres procesos. El sistema operativo tiene en todo momento completa libertad para ejecutar cualquiera de los procesos que no estn bloqueados, as que, por ejemplo, podra decidirse a ejecutar A hasta que ste terminara su trabajo, despus B hasta que acabe y, finalmente C. Este secuenciamiento no produce interbloqueo, ( ya que no se compite por los recursos), pero suprime completamente el paralelismo. Adems de pedir y liberar recursos, los procesos tambin realizan E/S y procesamiento de datos. Si se ejecutan uno tras otro, se elimina completamente la posibilidad de que, mientras uno de ellos est esperando que acabe una E/S, otro pueda utilizar el procesador. Supongamos, sin embargo, que los procesos realizan tanto E/S como procesamiento de datos, de forma que la planificacin por turno rotatorio es la ms adecuada. En este caso, la secuencia de peticin de recursos podra ser la representada en la figura 2-10 (d). Si las seis peticiones se llevan a cabo en ese orden, se produciran los seis grafos de los casos (e)-(j). Despus de la peticin 4, A est bloqueado en espera de captar S, como se muestra en (h). Los procesos B y C se bloquean en las dos etapas siguientes, lo que conduce finalmente a un bucle cerrado y al correspondiente interbloqueo representado en (j).

69

Figura 2-11 Ejemplo de Interbloqueo y como evitarlo.

El sistema operativo no est obligado a ejecutar los procesos en ningn orden en particular. En concreto, si la concesin de un recurso a un proceso determinado puede provocar interbloqueo, el sistema operativo es muy libre de 70

suspender al proceso y no atender su peticin hasta que est seguro de que esto no conduce a una situacin problemtica. En la figura 5.3, por ejemplo, si el sistema operativo supiera que se avecinaba un interbloqueo, podra decidir suspender al proceso B antes de concederle el recurso S. La ejecucin slo de los procesos A y C producira las secuencias de peticin y liberacin de la figura 5.3 (k), en lugar de las de la figura 5.3 (d). Esta secuencia de ejecucin produce los grafos de recursos (l)-(q), y no produce interbloqueo. Despus de la etapa (q), no hay ningn problema en conceder S a B, ya que A ha terminado y C tiene todo lo que necesita. Aunque B se bloqueara al solicitar T, no se producira interbloqueo; B simplemente esperara hasta que terminara C. Condiciones Necesarias para Producir un Interbloqueo. Coffman, Elphick y Shoshani establecen que deben darse las siguientes cuatro condiciones necesarias para que ocurra un bloqueo mutuo. Condicin de exclusin mutua : los procesos exigen un control exclusivo de los recursos que necesitan. Condicin de espera : los procesos mantienen la posesin de los recursos ya asignados a ellos mientras esperan recursos adicionales. Condicin de no apropiacin : los recursos no pueden arrebatarse a los procesos a los cuales estn asignados hasta que termine su utilizacin. Condicin de espera circular : existe una cadena circular de procesos en la que cada proceso tiene uno o ms recursos que son requeridos por el siguiente proceso en la cadena. Como dichas condiciones son necesarias para que se presente un interbloqueo, la existencia de un bloqueo mutuo implica que se han dado todas y cada una de las cuatro condiciones. Como se ver ms adelante, tener en mente semejante observacin ser de gran ayuda para desarrollar esquemas que eviten los interbloqueos. Estrategias para Resolver Interbloqueos. Los resultados de la investigacin sobre el bloqueo mutuo han sido satisfactorios en cuanto a que se han encontrado mtodos limpios y rpidos para manejar la mayora de los problemas ms comunes. Existen cuatro reas de inters relacionadas con los interbloqueos que pueden resumirse como prevencin, tcnicas para evitarlos, deteccin y recuperacin de los mismos.

71

En la prevencin del interbloqueo interesa ajustar el sistema para eliminar toda posibilidad de que ocurra un bloqueo mutuo. La prevencin suele funcionar pero sus mtodos ocasionan, en general, un aprovechamiento pobre de los recursos. No obstante, estos mtodos se utilizan con frecuencia. Las tcnicas que tienen como objetivo evitar el interbloqueo imponen condiciones menos atractivas que en la prevencin, para tratar de obtener un aprovechamiento de los recursos. No elimina como las tcnicas de prevencin todas las posibilidades de que se produzca un bloqueo mutuo, pero se esquiva cuanto est a punto de suceder (algoritmo del banquero de Dijkstra). Los mtodos de deteccin del interbloqueo es utilizan en sistemas que permiten la ocurrencia de los mismos, ya sea de manera voluntaria o involuntaria. Su objetivo es determinar si ha ocurrido un bloqueo mutuo y saber exactamente cules son los procesos y recursos implicados en l. Los mtodos de recuperacin estn ntimamente ligados a los de deteccin. Sirven para eliminar los interbloqueos detectados en un sistema para poder seguir trabajando y para que los procesos implicados puedan terminar su ejecucin y liberen sus recursos. La recuperacin es un problema complejo, en el mejor de los casos, los sistemas se recuperan de un bloqueo mutuo eliminando completamente uno o varios de los procesos implicados. Despus, se inician de nuevo los procesos eliminados, perdindose la mayor parte o todo el trabajo previo realizado por el proceso.

Desentenderse. El Algoritmo de la Avestruz

La estrategia ms sencilla es el algoritmo del avestruz : esconder la cabeza bajo tierra y pretender que el problema no existe. La gente reacciona a esta estrategia de distintos modos segn su formacin. Los matemticos consideran que es inaceptable y argumentan que los interbloqueos se deben evitar a toda costa. Los ingenieros se interrogan sobre la frecuencia del problema, la frecuencia con el que el sistema se para por otras causas y la importancia de los interbloqueos. Si stos se presentan de una vez cada cinco aos, y los sistemas se paran una vez al mes por errores en el hardware, en el compilador o en el sistema operativo, a casi ningn ingeniero le gustara tener que sufrir una degradacin seria de las prestaciones del sistema para garantizar la eliminacin de los interbloqueos. Por ejemplo, Unix pude sufrir interbloqueos que ni siquiera se detectan, y que, por supuesto, no se eliminan automticamente. El nmero total de procesos en el sistema viene determinado por el nmero de posiciones de la tabla de procesos, que, en definitiva, constituye un recurso limitado. Supongamos ahora que un sistema Unix con 100 posiciones en la tabla de procesos tiene ejecutndose diez programas, cada uno de los cuales ha de crear 12 subprocesos. Despus de que cada proceso haya creado otros 9, los 10

72

procesos originales y los 90 nuevos llenarn por completo la tabla. Los 10 procesos originales se encontrarn ahora en un bucle infinito intentando crear un nuevo proceso sin poder : se ha producido un interbloqueo. Otros ejemplos de recursos que suelen ser limitados son : el nmero mximo de ficheros que pueden estar abiertos est limitado, el rea en el disco para intercambio con memoria principal. En realidad, casi todas las tablas del sistema operativo representan recursos limitados, deberamos, por tanto, limitar estos recursos para no producir un interbloqueo? La estrategia UNIX es simplemente desentenderse del problema, suponiendo que la mayora de los usuarios preferirn un interbloqueo ocasional antes que la imposicin de que cada usuario pueda crear un solo proceso, abrir un solo fichero y usar slo una unidad de lo que sea. Veremos a continuacin que se puede adoptar alguna estrategia adecuada que nos permitir prevenir, evitar o detectar y recuperar situaciones de interbloqueo. 2.4.3.1 Prevencin. La estrategia empleada con ms frecuencia por los diseadores para tratar el bloqueo mutuo es la prevencin. En esta seccin se examinan los mtodos de prevencin, junto con los efectos que tienen sobre los usuarios y los sistemas, sobre todo desde la perspectiva del rendimiento. Havender (68) lleg a la conclusin de que si falta alguna de las cuatro condiciones necesarias no puede haber un interbloqueo. Este autor sugiere las siguientes estrategias para negar varias de esas condiciones : Cada proceso deber pedir todos sus recursos al mismo tiempo y no podr seguir la ejecucin hasta haberlos recibido todos. Si a un proceso que tiene recursos se le niegan los dems, ese proceso deber liberar sus recursos y, en caso necesario, pedirlos de nuevo junto con los recursos adicionales. Se impondr un ordenamiento lineal de los tipos de recursos en todos los procesos ; es decir, si a un proceso le han sido asignados recursos de un tipo especfico, en lo sucesivo slo podr pedir aquellos recursos que siguen en el ordenamiento. Como vemos Havender presenta tres estrategias y no cuatro. Cada una de ellas, est diseada para negar una de las condiciones necesarias. La primera de estas condiciones, esto es, que los procesos exijan el uso exclusivo de los recursos que requieren, es una condicin que no es deseable impedir, porque especficamente queremos permitir la existencia de recursos no compartibles o dedicados.

73

Negacin de la condicin de espera La primera de las estrategias requiere que los recursos que necesita un proceso sean pedidos de una sola vez. El sistema debe proporcionarlos segn el principio de todo o nada. Si est disponible el conjunto de los recursos que necesita un proceso, entonces el sistema puede asignarle todos los recursos y ste seguir su ejecucin. Si no est disponible alguno de ellos, el proceso debe esperar. Mientras espera no puede tener ningn recurso. Con esto se elimina la condicin de espera y no puede ocurrir un interbloqueo. Todo esto suena bien, pero puede llevar a un grave desperdicio de recursos. Supongamos que un proceso necesita diez unidades de un determinado recurso para su ejecucin. Como debe solicitarlas todas antes de comenzar, los mantendr en su poder durante toda su ejecucin. Pudiera suceder, que el programa nicamente utilice estos recursos al principio de su ejecucin, por tanto, los recursos estn ociosos el resto del tiempo. Dividir el programa en varios pasos que se ejecuten de manera relativamente independiente es una tcnica empleada con frecuencia para conseguir una mejor utilizacin de los recursos en estas circunstancias. La asignacin de recursos se controla por etapas. Esta solucin reduce el desperdicio pero implica mucho trabajo extra tanto en el diseo de las aplicaciones como en al ejecucin. Por otro lado, esta estrategia puede provocar un aplazamiento indefinido, pues los recursos requeridos pueden no estar disponibles todos al tiempo. El sistema podra, entonces, permitir que se fueran acumulando recursos hasta conseguir todos los que necesita un proceso. Pero mientras se acumulan no se pueden asignar a otros procesos y volvemos a infrautilizarlos. Negacin de la condicin de no apropiacin La segunda estrategia de Havender consiste en liberar los recursos que un proceso tiene asignados cuando se le niegan peticiones de recursos adicionales. De esta forma, se anula la condicin de no apropiacin. Los recursos se pueden quitar al proceso que los tiene antes de que termine su ejecucin. En este caso tambin existe un costo excesivo. Cuando un proceso libera recursos puede perder todo el trabajo realizado hasta ese momento. El costo puede parecer muy alto, pero la pregunta es : con qu frecuencia ha de pagarse ese precio ? Si ocurre de tarde en tarde, entonces ste parece ser un buen mtodo para prevenir el interbloqueo. Si, por el contrario, es muy frecuente, entonces el costo es sustancial y sus efectos demasiado perjudiciales (por ejemplo, para procesos de alta prioridad o plazo fijo). Esta estrategia tambin adolece de aplazamiento indefinido. Un proceso puede aplazarse continuamente mientras pide y libera muchas veces los mismo recursos. Si esto ocurre, el sistema puede verse obligado a eliminar el proceso para que otros puedan ejecutarse.

74

Negacin de la condicin de espera circular La tercera estrategia de Havender anula la posibilidad de un espera circular. Como todos los recursos tienen una numeracin nica y como los procesos deben pedir los recursos en un orden lineal ascendente, es imposible que se presente una espera circular (figura 2-12). Esta estrategia presenta las siguientes dificultades : Los recursos deben pedirse en un orden ascendente por nmero de recursos. El nmero de recurso es asignado por la instalacin y debe tener un tiempo de vida largo (meses o aos) . Si se agregan nuevos tipos de recursos, puede ser necesario reescribir los programas y los sistemas. Lgicamente, cuando se asignan los nmeros de recursos, stos deben reflejar el orden normal en que los usan la mayora de las tareas. Pero los procesos que necesiten los recursos en un orden diferente que el previsto por el sistema, los debern adquirir y conservar, quiz durante tiempo antes de utilizarlos realmente, lo que significa un desperdicio considerable. Una de las metas ms importantes de los sistemas operativos actuales es crear ambientes amables con el usuario. Los usuarios deben ser capaces de desarrollar sus aplicaciones sin tener en cuenta molestas restricciones de hardware y software. El ordenamiento lineal impide al usuario escribir sus cdigos libremente.

Figura 2-12 Ordenacin lineal de Harvender para prevenir el interbloqueo

75

Evitacin de Interbloqueos An presentndose las condiciones para un interbloqueo, todava es posible evitarlo mediante una asignacin cuidadosa de los recursos. Tal vez el algoritmo ms famoso para evitar el interbloqueo sea el algoritmo del banquero de Dijkstra (73), cuyo interesante nombre se debe a que atae a un banquero que otorga prstamos y recibe pagos a partir de una determinada fuente de capital.

Algoritmo del Banquero

En principio, estudiaremos este algoritmo suponiendo que todos los recursos del mismo tipo. Considrese la asignacin de una cantidad t, de unidades de cintas idnticas. Un sistema operativo comparte un nmero fijo, t, de unidades de cinta entre un nmero fijo de, p, de procesos. Cada proceso especifica por adelantado el nmero mximo de unidades de cinta que necesitar durante su ejecucin. El sistema operativo aceptar la peticin de un usuario si la necesidad mxima de ese proceso no es mayor que t. Un proceso puede obtener o liberar unidades de cinta una a una. Algunas veces un usuario puede verse obligado a esperar para obtener una unidad adicional, pero el sistema operativo garantiza una espera finita. El nmero real de unidades asignadas a un proceso nunca ser superior a la necesidad mxima declarada por ese usuario. Si el sistema operativo es capaz de satisfacer la necesidad mxima del proceso, entonces ste debe garantizar al sistema operativo que las unidades de cinta sern utilizadas y liberadas en un tiempo finito. Se dice que el estado del sistema es seguro si el sistema operativo puede garantizar que todos los procesos terminan en un tiempo finito. En otro caso, el sistema est en un estado inseguro. Sea prstamo (i) la representacin del prstamo actual de unidades de cinta para el proceso i. Sea mx(i) la necesidad mxima de cintas de un proceso y, por ltimo, sea peticin (i) la peticin actual del usuario, que es igual a su necesidad mxima menos el prstamo actual. Por ejemplo, el proceso 7 tiene una necesidad mxima de 6 unidades y un prstamo actual de 5, entonces tiene peticin(7) = mx(7) - prstamo(7) = 6 - 5 = 2 El sistema operativo controla t unidades de cinta. Sea a el nmero de unidades de cinta todava disponibles para asignar. Entonces a es igual a t menos la suma de los prstamos de los usuarios. El algoritmo del banquero permite la asignacin de unidades de cinta a los usuarios solamente cuando la asignacin conduzca a estados seguros, y no a estados inseguros. Un estado seguro es una situacin tal en la que todos los

76

procesos son capaces de terminar en algn momento. Un estado inseguro es aquel en el cual puede presentarse un bloqueo mutuo. Ejemplo de estado seguro Supngase que un sistema tiene doce unidades de cinta y tres procesos que las comparten.

La tabla anterior representa un estado seguro porque el proceso 2 tiene un prstamo de 4 unidades y necesita como mximo 6, o sea, 2 ms. El sistema tiene 12 de las cuales 10 estn en uso y mantiene 2 disponibles. Si las que estn disponible se asignan al proceso 2, cubriendo su demanda mxima, este proceso podr terminar. Al acabar, devolver todos los recursos, 6 unidades de cinta, y el sistema podr asignarlas al proceso 1 y al 3. De esta forma, la clave de un estado seguro es que exista al menos una forma en la que terminen todos los procesos. Ejemplo de estado inseguro

Ahora 11 de las 12 unidades de cinta estn asignadas y solamente hay una disponible. En este momento, no se puede garantizar que terminen los tres procesos. Si el proceso 1 pide y obtiene la ltima unidad de cinta y los tres vuelven a solicitar una unidad de cinta ms se producira un bloqueo triple. Es importante sealar, que un estado inseguro no implica la existencia, ni siquiera eventual, de un interbloqueo. Lo que s implica un estado inseguro es la posibilidad de que ocurra por una desafortunada secuencia de eventos.

77

Ejemplo de transicin de estado seguro a estado inseguro Saber que un estado es seguro no implica que sern seguros todos los estados futuros. La poltica de asignacin de recursos debe considerar cuidadosamente todas las peticiones antes de satisfacerlas. Por ejemplo supongamos la situacin que se muestra en la siguiente tabla.

Ahora supngase que el proceso 3 pide un recurso ms. Si el sistema satisface esta peticin, el nuevo estado ser el que se muestra en la tabla de abajo.

Segn vemos, aunque, en principio el sistema no estaba bloqueado, ha pasado de un estado seguro a uno inseguro. La ltima de las tablas caracteriza un sistema en el cual no puede garantizarse la terminacin de todos los procesos. Solamente hay un recurso disponible, pero deben estarlo al menos dos para asegurar que el proceso 2 o el 3 puedan terminar, devolver sus recursos al sistema y permitir que los otros procesos acaben. Algoritmo del banquero para mltiples recursos

Figura 2-13 Algoritmo del banquero para mltiples recursos

78

La figura 2-13 representa dos matrices. La de la izquierda muestra el nmero de recursos asignados en ese instante (prstamo actual) a cada uno de los cinco procesos. En la derecha aparece el nmero de recursos que todava necesita cada proceso para llevar a cabo su funcin (peticin). Al igual que el caso de un nico recurso, los procesos deben comunicar sus necesidades mximas antes de empezar a ejecutarse, de forma que en todo momento el sistema pueda calcular la matriz de la derecha. Para describir los recursos existentes en el sistema, los que estn en posesin y los que estn disponibles, emplearemos tres vectores como los siguientes : E =(6342), P=(5322) y D=(1020). E indica que el sistema tiene 6 unidades de cinta, 3 trazadores, 4 impresoras y 2 cdrom. De ellos se estn utilizando 5 unidades de cinta, tres trazadores grficos, dos impresoras y dos cdrom. Esto se puede deducir sin ms que sumar las cuatro columnas de recursos en prstamo de la matriz izquierda. El vector de recursos disponibles es simplemente la diferencia ente lo que el sistema tiene y lo que est usando en ese momento. Ahora estamos en condiciones de describir en qu consiste el algoritmo de comprobacin de estado seguro : 1.-Buscar una fila, F, cuyas necesidades de recursos sean menores o iguales a D. Si no existe tal fila, el sistema puede interbloquearse, ya que ningn proceso puede ejecutarse hasta el final. 2.-Suponer que el proceso de la fila seleccionada solicita todos los recursos que necesita, y termina. Marcar el proceso como terminado y aadir sus recursos al vector D. 3.-Repetir las etapas 1 y 2 hasta que se vayan marcando todos los procesos como terminados (en cuyo caso el estado inicial era seguro) o hasta que se llegue a una situacin de interbloqueo (en cuyo caso no lo era). En el caso de que se pueda seleccionar ms de un proceso en el paso 1, la eleccin sera indiferente: en cualquier caso, el conjunto de recursos disponibles aumenta o, en el peor de los casos, se queda igual. Volviendo al ejemplo de la figura 5.5 . El estado actual es seguro. Supongamos que el proceso B solicita la impresora. Dado que el estado resultante es todava seguro, esta peticin puede concederse (el proceso D puede terminar, seguido por los procesos A o E y a continuacin el resto). Imaginemos ahora que, despus de que B obtiene una de las dos impresoras restantes, E solicita la ltima impresora. Si se le concede esta peticin, el vector de recursos disponibles se reducira a (1 0 0 0), situacin que produce interbloqueo. Por lo tanto, la peticin de E debe posponerse de momento.

79

Ahora debe estar claro cmo opera el algoritmo del banquero de Dijkstra cuando asigna recursos. Estn permitidas las condiciones de espera circular, espera y no apropiacin, pero los procesos s exigen el uso exclusivo de los recursos que requieren. Los procesos pueden conservar recursos mientras piden y esperan recursos adicionales y los recursos no pueden arrebatarse a los procesos que los tienen. Los procesos facilitan el trabajo al sistema pidiendo un solo recurso a la vez. El sistema puede satisfacer o rechazar cada peticin. Si una peticin es rechazada, el proceso conserva los recursos que ya tiene asignados y espera un tiempo finito a que se satisfaga la peticin. El sistema slo satisface peticiones que llevan a estados seguros. Una peticin que condujese a un estado inseguro se rechazara repetidamente hasta que pueda quedar satisfecha. Como el sistema se mantiene en un estado seguro, tarde o temprano (en un tiempo finito) todas las peticiones podrn ser atendidas y los procesos terminarn. Defectos del algoritmo del banquero El algoritmo del banquero es interesante porque ofrece una forma de asignar los recursos que evita el interbloqueo. Permite ejecutar procesos que tendran que esperar seguramente con alguna de las estrategias de prevencin. Sin embargo, tiene varios defectos importantes : El algoritmo requiere un nmero fijo de recursos asignables. Como los recursos a menudo requieren servicio, ya sea por algn fallo o por mantenimiento preventivo, no se puede contar con que ser siempre constante. El algoritmo requiere una poblacin de usuarios constantes. En los sistemas multiprogramables y ms en los de tiempo compartido, la poblacin de usuarios cambia constantemente, incluso en cuestin de segundos. El algoritmo requiere que el banquero satisfaga todas las peticiones en un tiempo finito. Es evidente que en los sistemas reales esto no es una garanta suficiente. De manera similar, el algoritmo requiere que los procesos salden sus prstamos (es decir, devuelvan sus recursos) en un tiempo finito. Una vez ms, esto es insuficiente para un sistema de tiempo real. El algoritmo requiere que los usuarios declaren por anticipado sus necesidades mximas. A medida que la asignacin de recursos se hace ms dinmica, conocer las necesidades mximas de un usuario presenta mayor dificultad. De hecho, ahora que los sistemas ofrecen interfaces grficas, cada vez es ms comn que los usuarios no tengan la menor idea de los recursos que necesitan.

80

2.4.3.2 Deteccin. 2.4.3.3 Recuperacin. La deteccin del bloqueo mutuo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en l. Los algoritmos de deteccin determinan por lo general si existe una espera circular. El empleo de algoritmos de deteccin del interbloqueo implica cierto gasto extra durante la ejecucin. As pues, se presenta de nuevo la cuestin de costeabilidad, tan habitual en los sistemas operativos, el gasto extra debido a los algoritmos de deteccin del bloqueo mutuo se justifica con los ahorros potenciales debidos a la localizacin y solucin de los interbloqueos? Para facilitar la deteccin de interbloqueos, se utilizar una notacin en la que un grafo dirigido indica las asignaciones y peticiones de recursos. Los cuadrados representan procesos; los crculos grandes, clases de dispositivos idnticos; los crculos pequeos de color rojo en el interior de los grandes indican el nmero de dispositivos de cada clase. Por ejemplo, si un crculo grande etiquetado como R1 contiene tres crculos pequeos, significa que ya tres recursos del tipo R1 disponibles para asignacin en este sistema.

Figura 2-14 Grfica de Asignacin y Peticin de recursos.

La figura 2-14 muestra las relaciones que pueden indicarse en una grfica de asignacin y peticin de recursos. Por ejemplo, en (a) el proceso P1 est pidiendo un recurso del tipo R1. La flecha que parte de P1 toca solamente el 81

extremo del crculo grande, lo cual implica que se est estudiando la peticin. En (b), el proceso P2 tiene asignado un recurso del tipo R2 (del cual existen dos unidades). La flecha va del crculo pequeo que se encuentra dentro del crculo grande R2 al cuadrado P2. En (c), el recurso R3 ha sido solicitado por el proceso P3, pero ya se ha asignado al proceso P4. Por ltimo, en (d), se representa un interbloqueo. El proceso P5 tiene el recurso R5 que est siendo solicitado por el proceso P6, que tiene el recurso R4 que est siendo solicitado por el proceso P5 (una espera circular). Reduccin de las grficas de asignacin de recursos Una tcnica til para detectar los interbloqueos consiste en ir reduciendo una grfica determinando los procesos que pueden completar su ejecucin. Si pueden atenderse las peticiones de recursos de un proceso, se dice que la grfica puede ser reducida por ese proceso. Esta reduccin es equivalente a mostrar la grfica como si el proceso hubiese acabado y hubiera devuelto los recursos al sistema. Si una grfica puede ser reducida por todos sus procesos, entonces no hay interbloqueo. Si una grfica no puede ser reducida por todos sus procesos, los procesos irreductibles constituyen el conjunto de procesos en bloqueo mutuo de la grfica (figura 2-15). Cuando se ha bloqueado un sistema, el interbloqueo debe romperse mediante la eliminacin de una o ms de las condiciones necesarias. Por lo general, varios procesos perdern una parte o la totalidad del trabajo efectuado, pero el precio pagado puede ser pequeo, en comparacin con las consecuencias de permitir que el sistema siga bloqueado. La recuperacin despus de un bloqueo mutuo se complica por varias razones : Puede no estar claro que el sistema se haya bloqueado. La mayor parte de los sistemas tienen medios muy deficientes para suspender indefinidamente un proceso, eliminarlo del sistema y reanudarlo ms tarde. De hecho, algunos procesos como los de tiempo real, que deben funcionar continuamente, sencillamente no se pueden suspender y reanudar. An cuando existieran medios efectivos de suspensin/reanudacin, con toda seguridad implicaran un gasto extra considerable. La recuperacin despus de un bloqueo mutuo de dimensiones modestas puede significar una cantidad razonable de trabajo, un interbloqueo a gran escala puede requerir una cantidad enorme de trabajo.

82

Figura 2-15 Reduccin de grficas

En los sistemas actuales la recuperacin se suele realizar eliminado un proceso y arrebatndole sus recursos. Por lo general, el proceso eliminado se pierde pero ahora es posible concluir los procesos restantes. Algunas veces es necesario eliminar varios procesos hasta que se hayan liberado los recursos suficientes para que terminen los procesos restantes. Los procesos pueden eliminarse de acuerdo con algn orden de prioridad. Tambin existen dificultades para ello : Es posible que no existan prioridades entre los procesos bloqueados, de modo que se tiene que adoptar una decisin arbitraria. Las prioridades pueden ser incorrectas o un poco confusas debido a consideraciones especiales, como la planificacin a plazo fijo, en la cual un proceso de prioridad relativamente baja tiene una prioridad temporal alta a causa de un fin de plazo inminente. La determinacin de una decisin ptima sobre los procesos que se deben eliminar puede requerir un esfuerzo considerable.

83

Parece ser que el enfoque ms deseable para la recuperacin despus de un bloqueo mutuo sera un mecanismo efectivo de suspensin/reanudacin. Ello implicara suspender temporalmente los procesos y reanudarlos despus sin prdida de trabajo productivo. Para ello sera deseable la posibilidad de especificar puntos de verificacin/reinicio. De este modo, se facilita la suspensin/reanudacin, que se har desde el ltimo punto de verificacin (es decir, la ltima grabacin del estado del sistema). Pero muchos sistemas de aplicacin se disean sin aprovechar las ventajas de las funciones de punto de verificacin/reinicio. Por lo general, se requiere un esfuerzo consciente por parte de los diseadores para incorporar la verificacin/reinicio, y a menos que las tareas requieran muchas horas de ejecucin, su uso es poco comn. 2.5 Niveles, objetivos y criterios de planificacin. La planificacin de la CPU, en el sentido de conmutarla entre los distintos procesos, es una de las funciones del sistema operativo. Este despacho es llevado a cabo por un pequeo programa llamado planificador a corto plazo o dispatcher (despachador). La misin del dispatcher consiste en asignar la CPU a uno de los procesos ejecutables del sistema, para ello sigue un determinado algoritmo. En la figura 2-16 se muestran los niveles de planificacin. En secciones posteriores estudiaremos algunos algoritmos posibles. Para que el dispatcher conmute el procesador entre dos procesos es necesario realizar un cambio de proceso. Los acontecimientos que pueden provocar la llamada al dispatcher dependen del sistema (son un subconjunto de las interrupciones), pero son alguno de estos: El proceso en ejecucin acaba su ejecucin o no puede seguir ejecutndose (por una E/S, operacin WAIT, etc). Un elemento del sistema operativo ordena el bloqueo del proceso en ejecucin (ver estados de un proceso). El proceso en ejecucin agota su cuantum o cuanto de estancia en la CPU. Un proceso pasa a estado listo. Hay que destacar el hecho de que cuanto menos se llame al dispatcher menos tiempo ocupa la CPU un programa del sistema operativo, y, por tanto, se dedica ms tiempo a los procesos del usuario (un cambio de proceso lleva bastante tiempo). As, si slo se activa el dispatcher como consecuencia de los 2 primeros acontecimientos se estar haciendo un buen uso del procesador. Este criterio es acertado en sistemas por lotes en los que los programas no son interactivos. Sin embargo, en un sistema de tiempo compartido no es adecuado, pues un proceso

84

que se dedicara a realizar clculos, y no realizara E/S, monopolizara el uso de la CPU. En estos sistemas hay que tener en cuenta el conjunto de todos los procesos, activndose el dispatcher con la circunstancia tercera y, posiblemente, la cuarta. Los sistema operativos en que las dos siguientes circunstancias no provocan la activacin del dispatcher muestran preferencia por el proceso en ejecucin, si no ocurre esto se tiene ms en cuenta el conjunto de todos los procesos.

Figura 2-16 Niveles de planificacin.

Se puede definir el scheduling -algunas veces traducido como -planificacincomo el conjunto de polticas y mecanismos construidos dentro del sistema operativo que gobiernan la forma de conseguir que los procesos a ejecutar lleguen a ejecutarse. El scheduling est asociado a las cuestiones de: Cundo introducir un nuevo proceso en el Sistema. 85

Determinar el orden de ejecucin de los procesos del sistema. El scheduling est muy relacionado con la gestin de los recursos. Existen tres niveles de scheduling, como se ilustra en la figura 1.1, estos niveles son: Planificador de la CPU o a corto plazo. Planificador a medio plazo. Planificador a largo plazo. Ya hemos hablado del planificador de la CPU, y en los subapartados posteriores se comentan los dos restantes: Planificacin a largo plazo Este planificador est presente en algunos sistemas que admiten adems de procesos interactivos trabajos por lotes. Usualmente, se les asigna una prioridad baja a los trabajos por lotes, utilizndose estos para mantener ocupados a los recursos del sistema durante perodos de baja actividad de los procesos interactivos. Normalmente, los trabajos por lotes realizan tareas rutinarias como el clculo de nminas; en este tipo de tareas el programador puede estimar su gasto en recursos, indicndoselo al sistema. Esto facilita el funcionamiento del planificador a largo plazo. El objetivo primordial del planificador a largo plazo es el de dar al planificador de la CPU una mezcla equilibrada de trabajos, tales como los limitados por la CPU (utilizan mucho la CPU) o la E/S. As, por ejemplo, cuando la utilizacin de la CPU es baja, el planificador puede admitir ms trabajos para aumentar el nmero de procesos listos y, con ello, la probabilidad de tener algn trabajo til en espera de que se le asigne la CPU. A la inversa, cuando la utilizacin de la CPU llega a ser alta, y el tiempo de respuesta comienza a reflejarlo, el planificador a largo plazo puede optar por reducir la frecuencia de admisin de trabajos. Normalmente, se invoca al planificador a largo plazo siempre que un proceso termina. La frecuencia de invocacin depende, pues, de la carga del sistema, pero generalmente es mucho menor que la de los otros dos planificadores. Esta baja frecuencia de uso hace que este planificador pueda permitirse utilizar algoritmos complejos, basados en las estimaciones de los nuevos trabajos. Planificacin a Medio Plazo En los sistemas de multiprogramacin y tiempo compartido varios procesos residen en la memoria principal. El tamao limitado de sta hace que el nmero de procesos que residen en ella sea finito. Puede ocurrir que todos los procesos

86

en memoria estn bloqueados, desperdicindose as la CPU. En algunos sistemas se intercambian procesos enteros (swap) entre memoria principal y memoria secundaria (normalmente discos), con esto se aumenta el nmero de procesos, y, por tanto, la probabilidad de una mayor utilizacin de la CPU. El planificador a medio plazo es el encargado de regir las transiciones de procesos entre memoria principal y secundaria, acta intentando maximizar la utilizacin de los recursos. Por ejemplo, transfiriendo siempre a memoria secundaria procesos bloqueados, o transfiriendo a memoria principal procesos bloqueados nicamente por no tener memoria. Objetivos y Criterios de Planificacin El principal objetivo de la planificacin a corto plazo es repartir el tiempo del procesador de forma que se optimicen algunos puntos del comportamiento del sistema. Generalmente se fija un conjunto de criterios con los que evaluar las diversas estrategias de planificacin. El criterio ms empleado establece dos clasificaciones. En primer lugar, se puede hacer una distincin entre los criterios orientados a los usuarios y los orientados al sistema. Los criterios orientados al usuario se refieren al comportamiento del sistema tal y como lo perciben los usuarios o los procesos. Uno de los parmetros es el tiempo de respuesta. El tiempo de respuesta es el periodo de tiempo transcurrido desde que se emite una solicitud hasta que la respuesta aparece en la salida. Sera conveniente disponer de una poltica de planificacin que ofrezca un buen servicio a diversos usuarios. Otros criterios estn orientados al sistema, esto es, se centran en el uso efectivo y eficiente del procesador. Un ejemplo puede ser la productividad, es decir, el ritmo con el que los procesos terminan. La productividad es una medida muy vlida del rendimiento de un sistema y que sera deseable maximizar. Otra forma de clasificacin es considerar los criterios relativos al rendimiento del sistema y los que no lo son. Los criterios relativos al rendimiento son cuantitativos y, en general, pueden evaluarse o ser analizados fcilmente. Algunos ejemplos son el tiempo de respuesta y la productividad. Los criterios no relativos al rendimiento son, en cambio cualitativos y no pueden ser evaluados fcilmente. Un ejemplo de estos criterios es la previsibilidad. Sera conveniente que el servicio ofrecido a los usuarios tenga las mismas caractersticas en todo momento, independientemente de la existencia de otros trabajos ejecutados por el sistema. En particular, una disciplina de planificacin debe: Ser equitativa: debe intentar hacer una planificacin justa, esto es, se debe tratar a todos los procesos de la misma forma y no aplazar indefinidamente ningn proceso. La mejor forma de evitarlo es emplear alguna tcnica de

87

envejecimiento; es decir, mientras un proceso espera un recurso, su prioridad debe crecer. Ser eficiente: debe maximizar el uso de los recursos tales como intentar que la ocupacin de la CPU sea mxima. Al mismo tiempo se debe intentar reducir el gasto extra por considerar que es trabajo no productivo. Normalmente el idear algoritmos eficientes supone invertir recursos en gestin del propio sistema. Lograr un tiempo bueno de respuesta, es decir, que los usuarios interactivos reciban respuesta en tiempos aceptables. Lograr un tiempo de proceso global predecible. Esto quiere decir que un proceso debe ejecutarse aproximadamente en el mismo tiempo y casi al mismo costo con independencia de la carga del sistema. Elevar al mximo la productividad o el rendimiento, esto es, maximizar el nmero de trabajos procesados por unidad de tiempo. Eso supone, por un lado, dar preferencia a los procesos que ocupan recursos decisivos y, por otro, favorecer a los procesos que muestran un comportamiento deseable. En el primer caso conseguimos liberar el recurso cuanto antes para que est disponible para un proceso de mayor prioridad. Con el segundo criterio escogemos a los procesos que no consumen muchos recursos dejndole al sistema mayor capacidad de actuacin. Estos criterios son dependientes entre s y es imposible optimizar todos de forma simultnea. Por ejemplo, obtener un buen tiempo de respuesta puede exigir un algoritmo de planificacin que alterne entre los procesos con frecuencia, lo que incrementa la sobrecarga del sistema y reduce la productividad. Por tanto, en el diseo de un poltica de planificacin entran en juego compromisos entre requisitos opuestos; el peso relativo que reciben los distintos requisitos depender de la naturaleza y empleo del sistema. Planificacin Apropiativa y No apropiativa Una disciplina de planificacin es no apropiativa si una vez que la CPU ha sido asignada al proceso, ya no se le puede arrebatar. Y por el contrario, es apropiativa, si se le puede quitar la CPU. La planificacin apropiativa es til en los sistemas en los cuales los procesos de alta prioridad requieren una atencin rpida. En los de tiempo real, por ejemplo, las consecuencias de perder una interrupcin pueden ser desastrosas. En los sistemas de tiempo compartido, la planificacin apropiativa es importante para garantizar tiempos de respuesta aceptables. La apropiacin tiene un precio. El cambio de proceso implica gasto extra. Para que la tcnica de apropiacin sea efectiva deben mantenerse muchos procesos

88

en memoria principal de manera que el siguiente proceso se encuentre listo cuando quede disponible la CPU. Conservar en memoria principal procesos que no estn en ejecucin implica gasto extra. En los sistema no apropiativos, los trabajos largos retrasan a los cortos, pero el tratamiento para todos los procesos es ms justo. Los tiempos de respuesta son ms predecibles porque los trabajos nuevos de alta prioridad no pueden desplazar a los trabajos en espera. Al disear mecanismos de planificacin apropiativa no hay que perder de vista la arbitrariedad de casi todos los sistemas de prioridades. Se puede construir un mecanismo complejo para implantar fielmente un esquema de apropiacin por prioridades sin que, de hecho, se hayan asignado prioridades de forma coherente. El Reloj de Interrupciones Se dice que un proceso est en ejecucin cuando tiene asignada la CPU. Si el proceso pertenece al sistema operativo, se dice que el sistema operativo est en ejecucin y que puede tomar decisiones que afectan al sistema. Para evitar que los usuarios monopolicen el sistema (deliberadamente o accidentalmente), el sistema operativo tiene mecanismos para arrebatar la CPU al usuario. El sistema operativo gestiona un reloj de interrupciones que genera interrupciones cada cierto tiempo. Un proceso mantiene el control de la CPU hasta que la libera voluntariamente (acaba su ejecucin, o se bloquea), hasta que el reloj interrumpe o hasta que alguna otra interrupcin desva la atencin de la CPU. Si el usuario se encuentra en ejecucin y el reloj interrumpe, el sistema operativo entra en ejecucin para comprobar, por ejemplo, si ha pasado el cuanto de tiempo del proceso que estaba en ejecucin. El reloj de interrupciones asegura que ningn proceso acapare la utilizacin del procesador. El sistema operativo, apoyndose en l, intenta distribuir el tiempo de CPU entre los distintos procesos ya sean de E/S o de clculo. Por tanto, ayuda a garantizar tiempos de respuesta para los usuarios interactivos, evitando que el sistema quede bloqueado en un ciclo infinito de algn usuario y permite que los procesos respondan a eventos dependientes de tiempo. Los procesos que deben ejecutarse peridicamente dependen del reloj de interrupciones. No se debe confundir en ningn caso al reloj de interrupciones con el reloj de la mquina o reloj hardware. Veamos con un pequeo ejemplo como esto es imposible. Como sabemos, todas las tareas de una computadora estn sincronizadas por un reloj hardware. La velocidad de un procesador determina la rapidez con la que ejecuta un paso elemental o cambio en el sistema. Por ejemplo, si decimos

89

de una mquina que tienen un microprocesador que va a una frecuencia de 100 MHz eso quiere decir que produce alrededor de 100 millones de pasos elementales o cambios en el sistema en un segundo. Pero una instruccin consume algunos de estos pasos mnimos. Supongamos que en media una instruccin consume alrededor de 100 pasos elementales. No podemos interrumpir al procesador a la misma velocidad a la que opera porque entonces no se podra llegar nunca a ejecutar ninguna instruccin. Parece razonable que se elija una frecuencia menor para el reloj de interrupciones. Por ejemplo, se podra generar una interrupcin cada 0'02 segundos (tener una frecuencia de 50 Hz) esto significa que se estara interrumpiendo al procesador cada dos millones de ciclos. En ese tiempo bajo la suposicin de que una instruccin consume 100 pasos se habra ejecutado unas 20000 instrucciones. Esto s es mucho ms razonable. En resumen el reloj de interrupciones tiene una frecuencia inferior al reloj hardware y superior al cuanto de tiempo o intervalos de tiempo en que se quiera controlar en el sistema. Uso de Prioridades La mayora de los algoritmos de planificacin apropiativos emplean el uso de prioridades de acuerdo con algn criterio. Cada proceso tiene una prioridad asignada y el planificador seleccionar siempre un proceso de mayor prioridad antes que otro de menor prioridad. Las prioridades pueden ser asignadas de forma automtica por el sistema, o bien se pueden asignar externamente. Pueden ganarse o comprarse. Pueden ser estticas o dinmicas. Pueden asignarse de forma racional, o de manera arbitraria en situaciones en las que un mecanismo del sistema necesita distinguir entre procesos pero no le importa cul de ellos es en verdad ms importante. Las prioridades estticas no cambian. Los mecanismos de prioridad esttica son fciles de llevar a la prctica e implican un gasto extra relativamente bajo. Sin embargo, no responden a cambios en el entorno que podran hacer necesario un ajuste de prioridades. Las prioridades dinmicas responden a los cambios. La prioridad inicial asignada a un proceso tiene una corta duracin, despus se ajusta a un valor ms apropiado, a veces deducido de su comportamiento. Los esquemas de prioridad dinmica son ms complejos e implican un mayor gasto extra que puede quedar justificado por el aumento en la sensibilidad del sistema. 2.6 Tcnicas de administracin del planificador. En la siguiente seccin vamos a estudiar ciertos algoritmos utilizados para planificar la CPU, la eleccin de uno (o de una mezcla de varios) depende de decisiones de diseo. Antes de exponer los algoritmos vamos a explicar ciertas medidas que se utilizan para evaluarlos.

90

Porcentaje de utilizacin de la CPU por procesos de usuario. La CPU es un recurso caro que necesita ser explotado, los valores reales suelen estar entre un 40% y un 90%. Rendimiento (throughput) = n de rfagas por unidad de tiempo. Se define una rfaga como el perodo de tiempo en que un proceso necesita la CPU; un proceso, durante su vida, alterna rfagas con bloqueos. Por extensin, tambin se define como el n de trabajos por unidad de tiempo. Tiempo de espera (E) = tiempo que una rfaga ha permanecido en estado listo. Tiempo de finalizacin (F) = tiempo transcurrido desde que una rfaga comienza a existir hasta que finaliza. F = E + t (t = tiempo de CPU de la rfaga). Penalizacin (P) = E + t / t = F / t, es una medida adimensional que se puede aplicar homogneamente a las rfagas independientemente de su longitud. En general, hay que maximizar los dos primeros parmetros y minimizar los tres ltimos. Sin embargo, estos objetivos son contradictorios, el dedicar ms tiempo de CPU a los usuarios se hace a costa de llamar menos al algoritmo de planificacin (menos cambios de proceso), y de simplificarlo. Esto provoca que la CPU se reparta menos equitativamente entre los procesos, en detrimento de los ltimos tres parmetros. As pues, dependiendo de los objetivos se elegir cierto algoritmo. En los sistemas por lotes suele primar el rendimiento del sistema, mientras que en los sistemas interactivos es preferible minimizar, por ejemplo, el tiempo de espera. 2.6.1 FIFO Primero en Entrar-Primero en Salir Cuando se tiene que elegir a qu proceso asignar la CPU se escoge al que llevara ms tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente. La ventaja de este algoritmo es su fcil implementacin, sin embargo, no es vlido para entornos interactivos ya que un proceso de mucho clculo de CPU hace aumentar el tiempo de espera de los dems procesos . Para implementar el algoritmo (ver figura 2-17) slo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sita el ltimo de la cola. En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados. En b) P7 se bloquea (ya sea al realizar una E/S, una operacin WAIT sobre un semforo a cero u otra causa) y P2 pasa a ocupar la CPU. En c) ocurre un evento (finalizacin de la operacin de E/S, operacin

91

SIGNAL, ...) que desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de procesos listos.

Figura 2-17 Lista de procesos preparados en FIFO

Algunas de las caractersticas de este algoritmo es que es no apropiativo y justo en el sentido formal, aunque injusto en el sentido de que: los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes. Por otro lado es predecible pero no garantiza buenos tiempos de respuesta y por ello se emplea como esquema secundario. 2.6.2 SJF Planificacin por Prioridad al ms corto ( Short Job First). Al igual que en el algoritmo FIFO las rfagas se ejecutan sin interrupcin, por tanto, slo es til para entornos batch. Su caracterstica es que cuando se activa el planificador, ste elige la rfaga de menor duracin. Es decir, introduce una nocin de prioridad entre rfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecucin de los procesos. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalizacin promedio, como puede verse en el siguiente ejemplo: Ej: Supongamos que en un momento dado existen tres rfagas listos R1, R2 y R3, sus tiempos de ejecucin respectivos son 24, 3 y 3 ms. El proceso al que pertenece la rfaga R1 es la que lleva ms tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de finalizacin (F) de las rfagas aplicando FIFO y SJF: FIFO F = (24 + 27 + 30) / 3 = 27 ms. SJF F = (3 + 6 + 30) / 3 = 13 ms. Se puede demostrar que este algoritmo es el ptimo. Para ello, consideremos el caso de cuatro rfagas, con tiempos de ejecucin de a, b, c y d. La primera

92

rfaga termina en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalizacin es (4a+3b+2c+d)/4. Es evidente que a contribuye ms al promedio que los dems tiempos, por lo que debe ser la rfaga ms corta, b la siguiente, y as sucesivamente. El mismo razonamiento se aplica a un nmero arbitrario de rfagas. No obstante, este algoritmo slo es ptimo cuando se tienen simultneamente todas las rfagas. Como ejercicio, considrense cinco rfagas desde A hasta E, con tiempo se ejecucin de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se dispone de A y B, puesto que las dems rfagas no han llegado an. Con el algoritmo SJF las ejecutaramos en orden A, B, C, D, y E con un tiempo de finalizacin promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio de finalizacin de 4.4. 2.6.3 RR Planificacin por Turno Rotatorio (Round Robin). Este es uno de los algoritmos ms antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos, muy vlido para entornos de tiempo compartido. Cada proceso tiene asignado un intervalo de tiempo de ejecucin, llamado cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum tambin se alterna el uso de la CPU. El round robin es muy fcil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos, como se muestra en la figura 2-18. En esta figura en a) el proceso P7 ocupa la CPU. En b) P7 se bloquea pasando P2 a ocupar la CPU. En c) P2 agota su cuantum con lo que pasa al final de la lista y P4 ocupa la CPU. La figura 4 representa un ejemplo ms largo de la ocupacin de la CPU utilizando el algoritmo round robin.

Figura 2-18 Lista de procesos preparados en Round Robin

Este algoritmo presupone la existencia de un reloj en el sistema. Un reloj es un dispositivo que genera peridicamente interrupciones. Esto es muy importante, pues garantiza que el sistema operativo (en concreto la rutina de servicio de interrupcin del reloj) coge el mando de la CPU peridicamente. El cuantum de un proceso equivale a un nmero fijo de pulsos o ciclos de reloj. Al ocurrir una

93

interrupcin de reloj que coincide con la agotacin del cuantum se llama al dispatcher. Figura 2-19 ejemplo de Round Robin.

Figura 2-19 Ejemplo de Round Robin

Tamao del Cuanto La determinacin del tamao del cuanto es vital para la operacin efectiva de un sistema de cmputo. Debe el cuanto ser pequeo o grande?, fijo o variable?, el mismo para todos los usuarios o debe determinarse por separado para cada uno? Si el cuanto de tiempo es muy grande, cada proceso tendr el tiempo necesario para terminar, de manera que el esquema de planificacin por turno rotatorio degenera en uno de primero-en-entrar-primero-en-salir. Si el cuanto es muy pequeo, el gasto extra por cambio de proceso se convierte en el factor dominante y el rendimiento del sistema se degradar hasta el punto en que la mayor parte del tiempo se invierte en la conmutacin del procesador, con muy poco o ningn tiempo para ejecutar los programas de los usuarios. Exactamente dnde, entre cero e infinito, debe fijarse el tamao del cuanto? La respuesta es, lo bastante grande como para que la mayora de las peticiones interactivas requieran menos tiempo que la duracin del cuanto. Pongamos un ejemplo, supongamos que el cambio de proceso tarda 5 mseg., y la duracin del cuantum es de 20 mseg.. Con estos parmetros, se utiliza un mnimo del 20% del tiempo de la CPU en la ejecucin del sistema operativo. Para incrementar la utilizacin de la CPU por parte de los procesos de usuario podramos establecer un cuantum de 500 mseg., el tiempo desperdiciado con este parmetro sera del 1%. Pero consideremos lo que ocurrira si diez usuarios interactivos oprimieran la tecla enter casi al mismo tiempo. Diez procesos se colocaran en la lista de procesos listos. Si la CPU est inactiva, el primero de los procesos comenzara de inmediato, el segundo comenzara medio segundo

94

despus, etc. Partiendo de la hiptesis de que todos los procesos agoten su cuantum, el ltimo proceso deber de esperar 4'5 seg. para poder ejecutarse. Esperar 4'5 seg. para la ejecucin de una orden sencilla como pwd parece excesivo. En conclusin, un cuantum pequeo disminuye el rendimiento de la CPU, mientras que un cuantum muy largo empobrece los tiempos de respuesta y degenera en el algoritmo FIFO. La solucin es adoptar un trmino medio como 100 mseg. 2.6.4 Queves multi-level. Este algoritmo pertenece a una clase de algoritmos de planificacin para situaciones en las que es fcil clasificar los procesos en diferentes grupos. Un algoritmo de planificacin con colas de mltiples niveles divide la cola de procesos listos en varias colas distintas. Los procesos se asignan permanentemente a una cola, casi siempre con base en alguna propiedad del proceso, como ser tamao de memoria, prioridad y tipo de proceso. Cada cola tiene su propio algoritmo de planificacin. Adems debe haber planificacin entre las colas, lo cual por lo regular se implementa como una planificacin expropiativa de prioridades fijas. Por ejemplo, la cola de primer plano podra tener prioridad absoluta sobre la cola de segundo plano, por lo tanto mientras no se vaca la cola de prioridad superior, los procesos de la cola inferior no se ejecutan. Otra posibilidad es dividir el tiempo entre las colas. Cada cola obtiene cierta proporcin del tiempo de CPU, que entonces puede repartir entre los diversos procesos en su cola. Este algoritmo tiene la ventaja de que el gasto por planificacin es bajo y la desventaja de ser inflexible. 2.6.5 Multi-level feedback queves. (Colas de Retroalimentacin de Mltiples Nivel) Cuando un proceso obtiene la CPU, sobre todo cuando todava no ha tenido oportunidad de establecer un patrn de comportamiento, el planificador no tiene idea de la cantidad de tiempo de CPU que necesitar el proceso. Los procesos limitados por la E/S normalmente usan la CPU slo un momento antes de generar una solicitud de E/S; los procesos limitados por la CPU pueden usar el procesador durante horas si est disponible en forma no apropiativa. Un mecanismo de planificacin debe: Favorecer a los trabajos cortos.

95

Favorecer a los trabajos limitados por la E/S para lograr un mejor aprovechamiento de los dispositivos de E/S. Determinar la naturaleza de un trabajo lo ms pronto posible y planificarlo de acuerdo con su naturaleza.

Figura 2-20 Colas de retroalimentacin de Mltiples Niveles

Las colas de retroalimentacin de niveles mltiples (figura 2-20) ofrecen una estructura que cumple con estos objetivos. Un proceso nuevo entra en la red de colas al final de la primera cola. Se desplaza en esa cola mediante Round Robin hasta que obtiene la CPU. Si el trabajo termina o cede la CPU para esperar la terminacin de una operacin de E/S o de algn evento, el trabajo abandona la red de colas. Si el cuanto expira antes de que el proceso ceda voluntariamente la CPU, el proceso se colocar al final de la cola del siguiente nivel. El proceso ser atendido otra vez cuando llegue a la cabeza de esa cola si est vaca la primera. Mientras el proceso utilice todo el cuanto proporcionado en cada nivel, continuar desplazndose al final de la siguiente cola inferior. Por lo general, existe una cola en el nivel ms bajo en la cual el proceso circula por turno rotatorio hasta que termina. En muchos esquemas de retroalimentacin de mltiples niveles, el cuanto asignado a un proceso cuando pasa a una cola de nivel inferior alcanza un valor mayor. De esta forma, cuanto ms tiempo se encuentre un proceso en la red de colas ms grande ser el cuanto asignado cada vez que obtenga la CPU, pero tal vez no obtenga la CPU muy a menudo, porque los procesos de las colas de

96

nivel superior tienen mayor prioridad. Un proceso situado en una cola no puede ejecutarse a menos que estn vacas las colas de nivel superior. Un proceso en ejecucin ser desposedo por un proceso que llegue a una cola superior. Considrese ahora cmo responde un mecanismo de este tipo a diferentes tipos de procesos. El mecanismo debe favorecer a los procesos limitados por la E/S para lograr un buen aprovechamiento de los dispositivos y una respuesta buena para los usuarios interactivos; y de hecho lo hace porque los procesos limitados por la E/S entrarn en la red con prioridad alta y se les asignar rpidamente la CPU. El tamao del cuanto de la primera cola se elegir lo suficientemente grande para que la gran mayora de los trabajos limitados por la E/S generen una peticin de E/S antes de que expire el primer cuanto. Cuando el proceso solicita E/S, abandona la red y ha obtenido un tratamiento favorable, tal como se deseaba. Ahora considrese una tarea limitada por la CPU que necesita mucho tiempo de procesador. Esa tarea entra en la cola ms alta de la red con prioridad alta. Recibe rpidamente su primera asignacin de la CPU, pero su cuanto expira y el proceso se coloca en la cola del siguiente nivel inferior. En ese momento, el proceso tiene una prioridad menor que la de los procesos que llegan al sistema, en particular los trabajos limitados por la E/S, que obtienen primero la CPU. El proceso limitado por la CPU acaba recibiendo sta, obtiene un cuanto mayor que en la cola ms alta y vuelve a utilizar la totalidad de su cuanto. Luego es situado al final de la siguiente cola inferior. El proceso sigue desplazndose a colas inferiores, espera ms entre divisiones de tiempo y utiliza todo su cuanto cada vez que obtiene la CPU (a menos que sea arrebatada por un proceso entrante). En algn momento, el proceso limitado por la CPU llega a la cola de nivel inferior, en donde entrar en una planificacin por turno hasta terminar. Las colas de retroalimentacin de niveles mltiples son ideales para separar procesos en categoras basadas en su necesidad de la CPU. En un sistema de tiempo compartido, cada vez que un proceso abandona la red de colas puede "marcarse" con la identidad de la ltima cola en donde estuvo, y cuando el proceso entra de nuevo en la red de colas, puede enviarse directamente a la cola en la cual termin su operacin por ltima vez. En este caso, el planificador est usando un razonamiento heurstico, segn el cual el comportamiento anterior del proceso es un buen indicador de su comportamiento en un futuro inmediato. De esta forma, un proceso limitado por la CPU que regresa a la red de colas no se coloca en las colas de nivel alto donde interferira con el servicio a los procesos cortos de prioridad alta o con los limitados por la E/S. Si los procesos se colocan siempre dentro de la red en la cola que ocuparon la ltima vez, ser imposible que el sistema responda a cambios de un proceso, por ejemplo, de estar limitado por la CPU, a estar limitado por la E/S. El problema puede resolverse marcando al proceso tambin con su duracin dentro de la red la ltima vez que estuvo en ella. As, cuando el proceso entra de

97

nuevo en la red puede colocarse en la cola correcta. Entonces, si el proceso entra en una fase nueva en la cual deja de estar limitado por la CPU y empieza a estar limitado por la E/S, el proceso experimentar en principio un tratamiento lento mientras el sistema determina que la naturaleza del proceso est cambiando. Pero el mecanismo de planificacin responder con rapidez a este cambio. Otra forma de hacer que el sistema responda a los cambios de comportamiento de los procesos es permitir que un proceso ascienda un nivel en la red de colas cada vez que abandona voluntariamente la CPU antes de que expire su cuanto. El mecanismo de colas de retroalimentacin de niveles mltiples es un buen ejemplo de mecanismo adaptativo, que responde a los cambios en el comportamiento del sistema que controla. Los mecanismos adaptativos implican, en general, una carga extra mayor que los no adaptativos, pero la sensibilidad ante los cambios en el sistema da como resultado una mejor capacidad de respuesta, y justifica el aumento en el gasto extra. Una variante comn del mecanismo de colas de retroalimentacin de mltiples niveles consiste en hacer que un proceso circule por turno varias veces en cada cola antes de pasar a la siguiente cola inferior. El nmero de ciclos en cada cola crece por lo regular cuando el proceso pasa a la siguiente cola inferior.

98

Resumen Un proceso es un programa en ejecucin. La diferencia entre proceso y programa es que el primero es activo y el programa pasivo. Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecucin y Bloqueado. Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante informacin de estados, e interactan slo a travs de mecanismos de comunicacin dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa. Los procesos pueden comunicarse entre si empleando primitivas de comunicacin, como semforos, monitores o mensajes, que sirven para garantizar que nunca haya dos procesos en sus regiones crticas al mismo tiempo, situaciones que conducen al caos. Cuando un proceso de un sistema de multiprogramacin espera en balde a que se presente un evento especfico, se dice que se encuentra en un estado de interbloqueo o bloqueo mutuo. Los procesos que pueden encontrase en esta situacin pueden ser uno o varios. Se conocen muchos algoritmos de calendarizacin. Algunos se usan primordialmente en sistemas por lotes, como el de trabajo mas corto primero. Otros son comunes en sistemas tanto por lotes como interactivos, e incluyen la calendarizacin por turno circular, Planificacin con mltiples colas dinmicas y colas de retroalimentacin de mltiples niveles. Problemas 1. Cuando una interrupcin o una llamada al sistema transfiere el control al sistema operativo, por lo general se usa un rea de la pila del kernel distinta de la pila del proceso interrumpido. Por que? 2. Un subproceso puede ser expropiado por una interrupcin de reloj? En tal caso, en que circunstancias? Si no puede ser expropiado, explique la razn. 3. Considere un sistema en que los subprocesos se implementan por completo en el espacio de usuario, y el sistema de tiempo de ejecucin recibe una interrupcin de reloj una vez por segundo. Supongamos que se da una interrupcin de reloj mientras algn subproceso se est ejecutando en el sistema de tiempo de ejecucin. Que problema podra presentarse? Puede sugerir una forma de resolverlo? 4. Que es una condicin de competencia? 5. Cuando se esta desarrollando una computadora, lo comn es simularla con un programa que ejecuta una instruccin a la vez. Incluso los multiprocesadores se simulan de forma estrictamente secuencial. Es posible que se presente una

99

condicin de competencia cuando no hay procesos simultneos, como en la simulacin? 6. Si un sistema slo tiene dos procesos, tiene sentido usar un barrera para sincronizarlos? Por qu s o por qu no? 7. Suponga que se tiene un sistema de transferencia de mensajes que usa buzones. Si un proceso enva a un buzn lleno o trata de recibir de un buzn vaco, no se bloquea; simplemente recibe un cdigo de error. El proceso responde al cdigo con un nuevo intento, una y otra vez hasta tener xito. Este esquema puede llevar a condiciones de competencia? 8. Cinco trabajadores estn esperando ejecucin. Sus primeros tiempos de ejecucin esperados son 9,6,3,5 y X. En qu orden deben ejecutarse para reducir al mnimo el tiempo de respuesta? 9. Un sistema tiene dos procesos y tres recursos idnticos. Cada proceso necesita un mximo de dos recursos. Es posible caer en un interbloqueo? Explique su respuesta. 10. Cada uno de los procesos A y B necesitan tres registros, 1,2 y 3, de una base de datos. Si A los pide en el orden 1,2,3, y B los solicita en le mismo orden, no es posible caer en u interbloqueo. En cambio, si B los pide en el orden 3,2,1, puede haber interbloqueo. Con tres recursos, hay 3 o 6 posibles combinaciones en las que cada proceso puede solicitar los recursos. Qu fraccin de las combinaciones garantiza la ausencia de interbloqueos?

100

UNIDAD 3. Administracin de memoria. 3.1 Poltica y filosofa. Concepto: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin que la identifica(Deitel, 1993). Polticas y filosofa de la administracin de la memoria. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estn utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando stos la necesiten y liberndola cuando terminen, as como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administracin de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecucin y los que no. El propsito principal de una computadora es el de ejecutar programas, estos programas, junto con la informacin que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecucin. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administracin tanto del procesador como de la memoria. La seleccin de uno de ellos depende principalmente del diseo del hardware para el sistema. A continuacin se observarn los puntos correspondientes a la administracin de la memoria. 3.2 Memoria real. La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la 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. 3.2.1 Administracin de almacenamiento. Las estrategias de administracin deben considerar:

cundo se consigue un nuevo programa para colocar en la memoria ?:

101

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 ?.
o

3.2.2 Jerarqua. Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser referenciados. (Deitel, 1993). 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).

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

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.2.3 Estrategia de administracin de memoria.

Estn dirigidas a la obtencin del mejor uso posible del recurso del almacenamiento principal. (Deitel, 1993). 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. 3.2.4 Asignacin contigua vs. 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

103

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

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

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.

104

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

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. 3.2.5 Multiprogramacin de particin fija, particin variable, con intercambio de almacenamiento.

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

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.

106

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

107

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). Son ms complejos que los absolutos. Mejoran la utilizacin del almacenamiento. Confieren ms flexibilidad en el armado de la carga de procesos.

108

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[Deitel, 1993]). 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.

109

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 (ver Figura 3.9[Deitel, 1993]).

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.

110

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[Deitel, 1993]).

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.

111

Esta tcnica se denomina recogida de residuos (ver Figura 3.11[Deitel, 1993]).

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

112

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 (Deitel, 1993). 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.

113

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.3 Organizacin de memoria virtual. 3.3.1 Evaluacin de las organizaciones de almacenamiento. 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 (Deitel, 1993). 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:
o

114

Paginacin pura. Segmentacin pura. Combinacin paginacin / segmentacin.

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[Deitel, 1993]).

115

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[Deitel, 1993]).

Organizacin del Almacenamiento de Niveles Mltiples Se deben proporcionar los medios para retener programas y datos en un gran almacenamiento auxiliar para:

116

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

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.

117

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.

118

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 (Deitel, 1993). 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):

119

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 Contiene una entrada para cada bloque del proceso. o Las entradas se mantienen en orden secuencial para el bloque 0, bloque 1, etc. o 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.

120

3.3.2 Paginacin. Conceptos Bsicos de Paginacin Frecuentemente se diferencia entre la paginacin pura y la combinacin de paginacin y segmentacin(Deitel, 1993). 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.

121

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

122

123

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

124

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:

125

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

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.

126

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

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

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.

128

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

129

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

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

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.

130

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


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.

131

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. 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. Modo Ejecucin Explicacin No hay permiso de 0 N N N acceso 1 N N S Solo ejecucin 2 S N N Solo lectura 3 S N S Lectura / ejecucin Lectura / escritura pero 4 S S N no ejecucin 5 S S S Acceso no limitado Tabla 3.1: Ejemplo de combinacin de accesos. Lectura Escritura

Modo Aplicacin

132

Seguridad Un programa disponible a los usuarios, que no 1 pueden copiarlo ni modificarlo, pero s ejecutarlo 2 Recuperacin de informacin Un programa puede ser copiado o ejecutado, pero 3 no puede ser modificado Protege los datos contra un intento errneo de 4 ejecutarlos 5 Este acceso se concede a los usuarios de confianza Tabla 3.2: Ejemplo de aplicaciones de la combinacin de accesos. 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).

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): 133

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.

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.

134

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

3.3.4 Sistemas de paginacin segmentacin. Sistemas de Paginacin / Segmentacin Ofrecen las ventajas de las dos tcnicas de organizacin del almacenamiento virtual (Deitel, 1993). 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. de Direcciones en Sistemas de Paginacin /

Traduccin Dinmica 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).

135

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

136

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:

137

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.

138

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

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.

139

3.4 Administracin de memoria virtual. 3.4.1 Estrategias de administracin. Las diferentes organizaciones de implementadas son (Deitel, 1993):

almacenamiento

virtual

generalmente

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.

Estrategias de Reposicin de Pgina Las principales son:


1. 2. 3. 4. 5. 6.

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

140

7.

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

141

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

142

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 almacenamiento 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. o 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 (Deitel, 1993):

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

143

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

144

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

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 (Deitel, 1993). 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).

145

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

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

3.4.2 Tcnicas de reemplazo de pginas. 3.4.3 Paginacin por demanda. Las pginas son cargadas por demanda (Deitel, 1993). 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).

147

3.4.4 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 (Deitel, 1993). 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. 3.4.5 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 (Deietl, 1993). 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. 3.4.6 Tamao de pgina. Generalmente el almacenamiento real se divide en marcos o celdas de pgina de tamao fijo (Deitel, 1993). 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.

148

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 pgina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb. Comportamiento de un Programa en la Paginacin Respecto del porcentaje de las pginas de un proceso tpico referenciadas desde el momento de iniciarse su ejecucin:

Un proceso tiende a hacer referencia a una parte significativa de sus pginas inmediatamente despus de iniciar su ejecucin. El proceso puede concluir sin haber referenciado a algunas de sus pginas, correspondientes a rutinas que atienden errores que no se produjeron.

Respecto de variar el tamao de la pgina manteniendo constante la cantidad de almacenamiento primario:

El nmero de fallos de pginas experimentados por un proceso en ejecucin tiende a aumentar con el tamao de la pgina, debido a que se traen al almacenamiento primario un mayor nmero de procedimientos y datos que no sern referenciados, restando lugar para los que s lo sern.

Respecto de cmo el promedio de tiempo interfallos (tiempo entre fallos de pgina) vara al aumentar el nmero de marcos de pgina asignados al proceso:

Cuantos ms marcos de pgina tenga un proceso, mayor ser el tiempo entre los fallos de pginas. El punto de inflexin se da cuando el proceso tiene todo su conjunto de trabajo en el almacenamiento primario. Asignar marcos de pgina adicionales ms all del punto de inflexin no produce efectos significativos sobre el tiempo interfallos.

149

Respecto del porcentaje de instrucciones de una pgina que son ejecutadas antes de transferirse el control a otra pgina, los valores experimentales obtenidos indican un mximo de 200 instrucciones por pgina de 1 kb (ver Figura 3.39).

150

Resumen La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin que la identifica. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estn utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando stos la necesiten y liberndola cuando terminen, as como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de un solo usuario desperdician gran cantidad de recursos computacionales debido a que: Cuando ocurre una peticin de e / s la cpu normalmente no puede continuar el proceso hasta que concluya la operacin de e / s requerida. Una vez que un programa se carga en memoria, permanece ah hasta terminar. En el esquema de intercambio los programas del usuario no requieren permanecer en la memoria principal hasta su terminacin. Las computadoras modernas tienen alguna forma de memoria 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. Con memoria virtual una de las tcnicas de administracin de memoria es la paginacin. Las pginas se transfieren del almacenamiento secundario al primario en bloques llamados marcos de pginas. Otra tcnica de administracin de memoria es la segmentacin: En los sistemas de segmentacin un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real. Problemas 1. Un sistema de cmputo tiene espacio para cuatro programas en su memoria principal. Estos programas estn inactivos la mitad del tiempo esperando E/S. Que fraccin del tiempo de CPU se desperdicia? 2. Considere un sistema de intercambio en le que la memoria contiene los siguientes huecos en orden segn su posicin de la memoria: 10KB, 4Kb, 20KB, 18KB, 7KB, 9B, 12KB y 15B. Cual hueco se usara si se reciben solicitudes sucesivas pidiendo: 2) 12KB b) 10KB c) 9KB. Si se usa primer ajuste? Repita el problema usando mejor ajuste, peor ajuste y siguiente ajuste. 3. Que diferencia hay entre direccin fsica y direccin virtual?

151

4. Si una instruccin tarda 10 nanosegundos y un fallo de pgina tarda otros n nanosegundos, d una formula para el tiempo de instruccin efectivo si se presenta un fallo de pgina cada k instrucciones. 5. Si se usa reemplazo de pginas FIFO con cuatro marcos de pgina y ocho pginas, cuantos fallos de pgina se presentan con la cadena de referencias 0172327103 si los cuatro marcos estn vacos al principio? Repita el problema empleando LRU. 6. Una pgina puede estar en dos conjuntos de trabajo el mismo tiempo? Explique. 7. Si dos procesos comparten una misma pgina, es posible que la pgina sea de slo lectura para un proceso y de lectura-escritura para el otro? Por qu s o por qu no? 8. Explique la diferencia entre fragmentacin interna y fragmentacin externa. Cul se presenta en los sistemas de paginacin? Cul se presenta en los sistemas que usan segmentacin pura? 9. Explique la tcnica de administracin de memoria llamada segmentacin. 10. Explique las tcnicas de reemplazo de pginas.

152

UNIDAD 4. Administracin de entrada/salida. 4.1 Dispositivos y manejadores de dispositivos (device drivers). Una de las funciones principales de un S. O. es el control de todos los dispositivos de e / s de la computadora (Tanenbaum, 2003). Las principales funciones relacionadas son:

Enviar comandos a los dispositivos. Detectar las interrupciones. Controlar los errores. Proporcionar una interfaz entre los dispositivos y el resto del sistema: o Debe ser sencilla y fcil de usar. o Debe ser la misma (preferentemente) para todos los dispositivos (independencia del dispositivo).

El cdigo de e / s representa una fraccin significativa del S. O. El uso inapropiado de los dispositivos de e/s frecuentemente genera ineficiencias del sistema, lo que afecta la performance global Dispositivos de E / S Se pueden clasificar en dos grandes categoras (Tanenbaum, 2003):

Dispositivos de bloque. Dispositivos de carcter.

Las principales caractersticas de los dispositivos de bloque son:


La informacin se almacena en bloques de tamao fijo. Cada bloque tiene su propia direccin. Los tamaos ms comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes. Se puede leer o escribir en un bloque de forma independiente de los dems, en cualquier momento. Un ejemplo tpico de dispositivos de bloque son los discos.

Las principales caractersticas de los dispositivos de carcter son:


La informacin se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques. No se pueden utilizar direcciones. No tienen una operacin de bsqueda. Un ejemplo tpico de dispositivos de carcter son las impresoras de lnea, terminales, interfaces de una red, ratones, etc.

153

Algunos dispositivos no se ajustan a este esquema de clasificacin, por ejemplo los relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres. El sistema de archivos solo trabaja con dispositivos de bloque abstractos, por lo que encarga la parte dependiente del dispositivo a un software de menor nivel, el software manejador del dispositivo. Controladores de Dispositivos Las unidades de e/s generalmente constan de (Tanenbaum, 2003):

Un componente mecnico. Un componente electrnico, el controlador del dispositivo o adaptador.

Muchos controladores pueden manejar ms de un dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo. Los modelos ms frecuentes de comunicacin entre la cpu y los controladores son:

Para la mayora de las micro y mini computadoras: o Modelo de bus del sistema. Para la mayora de los mainframes: o Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s.

La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:

La comunicacin es mediante un flujo de bits en serie que: o Comienza con un prembulo. o Sigue con una serie de bits (de un sector de disco, por ej.). o Concluye con una suma para verificacin o un cdigo corrector de errores. El prembulo: o Se escribe al dar formato al disco. o Contiene el nmero de cilindro y sector, el tamao de sector y otros datos similares.

El controlador debe:

Convertir el flujo de bits en serie en un bloque de bytes. Efectuar cualquier correccin de errores necesaria. Copiar el bloque en la memoria principal.

Cada controlador posee registros que utiliza para comunicarse con la cpu:

154

Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria. Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de l.

El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parmetros de los comandos tambin se cargan en los registros de los controladores. Al aceptar el comando, la CPU puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca una interrupcin para permitir que el S. O.:

Obtenga el control de la CPU. Verifique los resultados de la operacin.

La CPU obtiene los resultados y el estado del dispositivo al leer uno o ms bytes de informacin de los registros del controlador. Ejemplos de controladores, sus direcciones de e/s y sus vectores de interrupcin en la PC IBM pueden verse en la Tabla 4.1

Controlador de e / s Direccin de e / s Vector de interrupciones Reloj Teclado Disco duro Impresora Disco flexible Rs232 primario Rs232 secundario 040 - 043 060 - 063 320 - 32f 378 - 37f 3f0 - 3f7 3f8 - 3ff 2f8 - 2ff 8 9 13 15 14 12 11

Tabla 4.1: Controladores de e/s, direcciones de e/s y vector de interrupciones. Acceso Directo a Memoria (DMA) Muchos controladores, especialmente los correspondientes a dispositivos de bloque, permiten el DMA. Si se lee el disco sin DMA:

El controlador lee en serie el bloque (uno o ms sectores) de la unidad: o La lectura es bit por bit. o Los bits del bloque se graban en el buffer interno del controlador.

155

Se calcula la suma de verificacin para corroborar que no existen errores de lectura. El controlador provoca una interrupcin. El S. O. lee el bloque del disco por medio del buffer del controlador: o La lectura es por byte o palabra a la vez. o En cada iteracin de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria. Se desperdicia tiempo de la CPU.

DMA se ide para liberar a la CPU de este trabajo de bajo nivel. La CPU le proporciona al controlador:

La direccin del bloque en el disco. La direccin en memoria adonde debe ir el bloque. El nmero de bytes por transferir.

Luego de que el controlador ley todo el bloque del dispositivo a su buffer y de que corrobor la suma de verificacin:

Copia el primer byte o palabra a la memoria principal. Lo hace en la direccin especificada por medio de la direccin de memoria de DMA. Incrementa la direccin DMA y decrementa el contador DMA en el nmero de bytes que acaba de transferir. Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupcin. Al iniciar su ejecucin el S. O. luego de la interrupcin provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ah (ver Figura 4.1).

Fig. 4.1 Un controlador realiza completamente una transferencia DMA

El controlador necesita un buffer interno porque una vez iniciada una transferencia del disco:

Los bits siguen llegando del disco constantemente.

156

No interesa si el controlador est listo o no para recibirlos. Si el controlador intentara escribir los datos en la memoria directamente: o Tendra que recurrir al bus del sistema para c / u de las palabras (o bytes) transferidas. o El bus podra estar ocupado por otro dispositivo y el controlador debera esperar. o Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada, el controlador la tendra que almacenar en alguna parte.

Si el bloque se guarda en un buffer interno:


El bus no se necesita sino hasta que el DMA comienza. La transferencia DMA a la memoria ya no es un aspecto crtico del tiempo.

Los controladores simples no pueden atender la e / s simultnea:

Mientras transfieren a la memoria, el sector que pasa debajo de la cabeza del disco se pierde; es decir que el bloque siguiente al recin ledo se pierde. La lectura de una pista completa se har en dos rotaciones completas, una para los bloques pares y otra para los impares. Si el tiempo necesario para una transferencia de un bloque del controlador a la memoria por medio del bus es mayor que el tiempo necesario para leer un bloque del disco: o Sera necesario leer un bloque y luego saltar dos o ms bloques. o El salto de bloques: Se ejecuta para darle tiempo al controlador para la transferencia de los datos a la memoria. Se llama separacin. Al formatear el disco, los bloques se numeran tomando en cuenta el factor de separacin (ver Figura 4.2). Esto permite al S. O.: Leer los bloques con numeracin consecutiva. Conservar la mxima velocidad posible del hardware.

157

Fig. 4.2 Factores de separacin: sin separacin, separacin simple y separacin doble.

4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers). La labor de un manejador de dispositivos es la de (Tanenbaum, 2003):

Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo. Verificar la ejecucin de dichas solicitudes.

Si al recibir una solicitud el manejador est ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes. La solicitud de e/s, por ej. para un disco, se debe traducir de trminos abstractos a trminos concretos:

El manejador de disco debe: o Estimar el lugar donde se encuentra en realidad el bloque solicitado. o Verificar si el motor de la unidad funciona. o Verificar si el brazo est colocado en el cilindro adecuado, etc. o Resumiendo: debe decidir cules son las operaciones necesarias del controlador y su orden. o Enva los comandos al controlador al escribir en los registros de dispositivo del mismo. o Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupcin lo libera de este bloqueo. o Al finalizar la operacin debe verificar los errores. o Si todo esta o.k. transferir los datos al software independiente del dispositivo. o Regresa informacin de estado sobre los errores a quien lo llam. o Inicia otra solicitud pendiente o queda en espera.

158

4.3 Estructuras de datos para manejo de dispositivos. Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita una operacin de E/S, el sistema operativo prepara dicha operacin y bloquea al proceso hasta que se recibe una interrupcin del controlador del dispositivo indicando que la operacin est completa. Las peticiones se procesan de forma estructurada en las siguientes capas: Manejadores de interrupcin. Manejadores de dispositivos o drivers. Software de EIS independiente de los dispositivos. Este software est formado por la parte de alto nivel de los manejadores, el gestor de cache, el gestor de bloques y el servidor de archivos. Interfaz del sistema operativo. Llamadas al sistema que usan las aplicaciones de usuario. El sistema operativo estructura el software de gestin de E/S de esta forma para ofrecer a los usuarios una serie de servicios de E/S independientes de los dispositivos. Esta independencia implica que deben emplearse los mismos servicios y operaciones de E/S para leer datos de un disquete, de un disco duro, de un CD-ROM o de un teclado.

Manejadores de interrupcin

Los manejadores de interrupcin se encargan de tratar las interrupciones que generan los controladores de dispositivos una vez que stos estn listos para la transferencia de datos o bien han ledo o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupcin se ejecuta el correspondiente manejador de interrupcin cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecucin de un proceso (que no tiene por qu ser el interrumpido). Los manejadores de interrupcin suelen hacer algo ms que comunicar el evento al manejador de dispositivo. Cuando una interrupcin ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de informacin a transferir es muy pequea, caso del teclado, sera muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio manejador de interrupcin registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulacin de caracteres en un buffer del teclado. La notificacin al manejador se hace nicamente cada

159

cierto nmero de ocurrencias del evento, en el caso del reloj, o activando un flag que indica que hay datos en el buffer del teclado.

Manejadores de Dispositivos

Todo el cdigo que depende de los dispositivos aparece en los manejadores de dispositivos. Cada controlador posee uno o ms registros de dispositivos:
1. 2.

Se utilizan para darle los comandos. Los manejadores de dispositivos proveen estos comandos y verifican su ejecucin adecuada.

Software de E/S Independiente del Dispositivo realizadas por el software independiente del

Funciones generalmente dispositivo:


Interfaz uniforme para los manejadores de dispositivos. Nombres de los dispositivos. Proteccin del dispositivo. Proporcionar un tamao de bloque independiente del dispositivo. Uso de buffers. Asignacin de espacio en los dispositivos por bloques. Asignacin y liberacin de los dispositivos de uso exclusivo. Informe de errores.

Las funciones bsicas del software independiente del dispositivo son:


Efectuar las funciones de e/s comunes a todos los dispositivos. Proporcionar una interfaz uniforme del software a nivel usuario.

El software independiente del dispositivo asocia los nombres simblicos de los dispositivos con el nombre adecuado. Un nombre de dispositivo determina de manera nica el nodo-i de un archivo especial:

Este nodo-i contiene el nmero principal del dispositivo, que se utiliza para localizar el manejador apropiado. El nodo-i contiene tambin el nmero secundario de dispositivo, que se transfiere como parmetro al manejador para determinar la unidad por leer o escribir.

160

El software independiente del dispositivo debe: Ocultar a los niveles superiores los diferentes tamaos de sector de los distintos discos. 2. Proporcionar un tamao uniforme de los bloques, por ej.: considerar varios sectores fsicos como un solo bloque lgico.
1.

Software de E/S en el Espacio del Usuario

La mayora del software de e/s est dentro del S. O. Una pequea parte consta de bibliotecas ligadas entre s con los programas del usuario. La biblioteca estndar de e/s contiene varios procedimientos relacionados con e/s y todos se ejecutan como parte de los programas del usuario. Otra categora importante de software de e/s a nivel usuario es el sistema de spooling. El spooling es una forma de trabajar con los dispositivos de e /s de uso exclusivo en un sistema de multiprogramacin:

El ejemplo tpico lo constituye la impresora de lneas. Los procesos de usuario no abren el archivo correspondiente a la impresora. Se crea un proceso especial, llamado demonio en algunos sistemas. Se crea un directorio de spooling.

Para imprimir un archivo:


Un proceso genera todo el archivo por imprimir y lo coloca en el directorio de spooling. El proceso especial, nico con permiso para utilizar el archivo especial de la impresora, debe imprimir los archivos en el directorio. Se evita el posible problema de tener un proceso de usuario que mantenga un recurso tomado largo tiempo.

Un esquema similar tambin es aplicable para la transferencia de archivos entre equipos conectados:

Un usuario coloca un archivo en un directorio de spooling de la red. Posteriormente, el proceso especial lo toma y transmite. Un ej. son los sistemas de correo electrnico.

161

4.4 Operaciones de Entrada /salida. Discos Las siguientes son las principales ventajas con respecto del uso de la memoria principal como almacenamiento (Tanenbaum, 2003):

Mucha mayor capacidad de espacio de almacenamiento. Menor precio por bit. La informacin no se pierde al apagar la computadora.

Un uso inapropiado de los discos puede generar ineficiencia, en especial en sistemas con multiprogramacin Hardware Para Discos. Los discos estn organizados en cilindros, pistas y sectores. El nmero tpico de sectores por pista vara entre 8 y 32 (o ms). Todos los sectores tienen igual nmero de bytes. Los sectores cercanos a la orilla del disco sern mayores fsicamente que los cercanos al anillo. Un controlador puede realizar bsquedas en una o ms unidades al mismo tiempo:

Son las bsquedas traslapadas. Mientras el controlador y el software esperan el fin de una bsqueda en una unidad, el controlador puede iniciar una bsqueda en otra.

Muchos controladores pueden:


Leer o escribir en una unidad. Buscar en otra.

Los controladores no pueden leer o escribir en dos unidades al mismo tiempo. La capacidad de bsquedas traslapadas puede reducir considerablemente el tiempo promedio de acceso. Operacin de Almacenamiento de Disco de Cabeza Mvil. Los datos se graban en una serie de discos magnticos o platos (Deitel, 1993) . El eje comn de los discos gira a una velocidad del orden de las 4.000 o ms revoluciones por minuto.

162

Fig 4.3 Esquema de un disco de cabeza mvil

Se lee o escribe mediante una serie de cabezas de lectura - escritura (ver Figura 4.3:

Se dispone de una por cada superficie de disco. Solo puede acceder a datos inmediatamente adyacentes a ella: o La parte de la superficie del disco de donde se leer (o sobre la que se grabar) debe rotar hasta situarse inmediatamente debajo (o arriba) de la cabeza de lectura - escritura. o El tiempo de rotacin desde la posicin actual hasta la adyacente al cabezal se llama tiempo de latencia.

Todas las cabezas de lectura - escritura estn montadas sobre una barra o conjunto de brazo mvil:

Puede moverse hacia adentro o hacia afuera, en lo que se denomina operacin de bsqueda. Para una posicin dada, la serie de pistas accesibles forman un cilindro vertical.

A los tiempos de bsqueda y de latencia se debe agregar el tiempo de transmisin propiamente dicha (ver Figura 4.4).

163

Fig. 4.4 Componentes del acceso a un disco

El tiempo total de acceso a un registro particular:


Involucra movimientos mecnicos. Generalmente es del orden de centsimas de segundo, aunque el tiempo de latencia sea de algunas milsimas de segundo (7 a 12 aproximadamente).

Algoritmos de Programacin del Brazo del Disco. En la mayora de los discos, el tiempo de bsqueda supera al de retraso rotacional y al de transferencia (Tanenbaum, 2003), debido a ello, la reduccin del tiempo promedio de bsqueda puede mejorar en gran medida el rendimiento del sistema. Si el manejador del disco utiliza el algoritmo primero en llegar primero en ser atendido (FCFS), poco se puede hacer para mejorar el tiempo de bsqueda. Es posible que mientras el brazo realiza una bsqueda para una solicitud, otros procesos generen otras solicitudes. Muchos manejadores tienen una tabla:

El ndice es el nmero de cilindro. Incluye las solicitudes pendientes para cada cilindro enlazadas entre s en una lista ligada. Cuando concluye una bsqueda, el manejador del disco tiene la opcin de elegir la siguiente solicitud a dar paso: o Se atiende primero la solicitud ms cercana, para minimizar el tiempo de bsqueda.

164

o o

Este algoritmo se denomina primero la bsqueda ms corta (SSF: shor-test seek first). Reduce a la mitad el nmero de movimientos del brazo en comparacin con FCFS.

Ej. de SSF:

Consideramos un disco de 40 cilindros. Se presenta una solicitud de lectura de un bloque en el cilindro 11. Durante la bsqueda, llegan solicitudes para los cilindros 1, 36, 16, 34, 9 y 12, en ese orden. La secuencia de bsqueda SSF ser: 12, 9, 16, 1, 34, 36. Habr un nmero de movimientos del brazo para un total de: o 111 cilindros segn FCFS. o 61 cilindros segn SSF.

El algoritmo SSF tiene el siguiente problema:


El ingreso de nuevas solicitudes puede demorar la atencin de las ms antiguas. Con un disco muy cargado, el brazo tender a permanecer a la mitad del disco la mayora del tiempo, como consecuencia de ello las solicitudes lejanas a la mitad del disco tendrn un mal servicio. Entran en conflicto los objetivos de: o Tiempo mnimo de respuesta. o Justicia en la atencin.

La solucin a este problema la brinda el algoritmo del elevador (por su analoga con el ascensor o elevador):

Se mantiene el movimiento del brazo en la misma direccin, hasta que no tiene ms solicitudes pendientes en esa direccin; entonces cambia de direccin. El software debe conservar el bit de direccin actual.

Ej. del algoritmo del elevador para el caso anterior, con el valor inicial arriba del bit de direccin:

El orden de servicio a los cilindros es: 12, 16, 34, 36, 9 y 1. El nmero de movimientos del brazo corresponde a 60 cilindros.

El algoritmo del elevador:


Ocasionalmente es mejor que el algoritmo SSF. Generalmente es peor que SSF.

165

Dada cualquier coleccin de solicitudes, la cuota mxima del total de movimientos est fija, siendo el doble del nmero de cilindros.

Una variante consiste en rastrear siempre en la misma direccin:

Luego de servir al cilindro con el nmero mayor: o El brazo pasa al cilindro de nmero menor con una solicitud pendiente. o Contina su movimiento hacia arriba.

Algunos controladores de disco permiten que el software inspeccione el nmero del sector activo debajo del cabezal:

Si dos o ms solicitudes para el mismo cilindro estn pendientes: o El manejador puede enviar una solicitud para el sector que pasar debajo del cabezal. o Se pueden hacer solicitudes consecutivas de distintas pistas de un mismo cilindro, sin generar un movimiento del brazo.

Cuando existen varias unidades, se debe tener una tabla de solicitudes pendientes para cada unidad. Si una unidad est inactiva, deber buscarse el cilindro siguiente necesario, si el controlador permite bsquedas traslapadas. Cuando termina la transferencia actual se verifica si las unidades estn en la posicin del cilindro correcto:

Si una o ms unidades lo estn, se puede iniciar la siguiente transferencia en una unidad ya posicionada. Si ninguno de los brazos est posicionado, el manejador: o Debe realizar una nueva bsqueda en la unidad que termin la transferencia. o Debe esperar hasta la siguiente interrupcin para ver cul brazo se posiciona primero.

Generalmente, las mejoras tecnolgicas de los discos:


Acortan los tiempos de bsqueda (seek). No acortan los tiempos de demora rotacional (search). En algunos discos, el tiempo promedio de bsqueda ya es menor que el retraso rotacional. El factor dominante ser el retraso rotacional, por lo tanto, los algoritmos que optimizan los tiempos de bsqueda (como el algoritmo del elevador) perdern importancia frente a los algoritmos que optimicen el retraso rotacional.

Una tecnologa importante es la que permite el trabajo conjunto de varios discos.

166

Una configuracin interesante es la de treinta y ocho (38) unidades ejecutndose en paralelo. Cuando se realiza una operacin de lectura:

Ingresan a la cpu 38 bit a la vez, uno por cada unidad. Los 38 bits conforman una palabra de 32 bits junto con 6 bits para verificacin. Los bits 1, 2, 4, 8, 16 y 32 se utilizan como bits de paridad. La palabra de 38 bits se puede codificar mediante el cdigo Hamming, que es un cdigo corrector de errores. Si una unidad sale de servicio: o Se pierde un bit de cada palabra. o El sistema puede continuar trabajando; se debe a que los cdigos Hamming se pueden recuperar de un bit perdido.

Este diseo se conoce como RAID; siglas en ingls de arreglo redundante de discos no costosos. Porqu es Necesaria la Planificacin de Discos. En los sistemas de multiprogramacin muchos procesos pueden estar generando peticiones de e/s sobre discos:

La generacin de peticiones puede ser mucho ms rpida que la atencin de las mismas: o Se construyen lneas de espera o colas para cada dispositivo. o Para reducir el tiempo de bsqueda de registros se ordena la cola de peticiones: esto se denomina planificacin de disco.

La planificacin de disco implica:


Un examen cuidadoso de las peticiones pendientes para determinar la forma ms eficiente de servirlas. Un anlisis de las relaciones posicionales entre las peticiones en espera. Un reordenamiento de la cola de peticiones para servirlas minimizando los movimientos mecnicos.

Los tipos ms comunes de planificacin son:


Optimizacin de la bsqueda. Optimizacin rotacional (latencia).

Generalmente los tiempos de bsqueda superan a los de latencia, aunque la diferencia disminuye:

167

Muchos algoritmos de planificacin se concentran en la reduccin de los tiempos de bsqueda para un conjunto de peticiones. Generalmente la reduccin de la latencia recin tiene efectos bajo cargas de trabajo muy pesadas.

Bajo condiciones de carga ligera (promedio bajo de longitud de la cola), es aceptable el desempeo del mtodo FCFS (primero en llegar, primero en ser servido). Bajo condiciones de carga media o pesada, es recomendable un algoritmo de planificacin de las colas de requerimientos. Caractersticas Deseables de las Polticas de Planificacin de Discos. Los principales criterios de categorizacin de las polticas de planificacin son:

Capacidad de ejecucin. Media del tiempo de respuesta. Varianza de los tiempos de respuesta (predecibilidad).

Una poltica de planificacin debe intentar maximizar la capacidad de ejecucin:


Maximizar el nmero de peticiones servidas por unidad de tiempo. Minimizar la media del tiempo de respuesta. Mejorar el rendimiento global, quizs a costa de las peticiones individuales.

La planificacin suele mejorar la imagen total al tiempo que reduce los niveles de servicio de ciertas peticiones:

Se mide utilizando la varianza de los tiempos de respuesta. La varianza es un trmino estadstico que indica hasta qu punto tienden a desviarse del promedio de todos los elementos los elementos individuales. A menor varianza mayor predecibilidad. Se desea una poltica de planificacin que minimice la varianza, es decir que maximice la predecibilidad. No debe haber peticiones que puedan experimentar niveles de servicio errticos.

Optimizacin de la Bsqueda en Discos. Las estrategias ms comunes de optimizacin de la bsqueda son las siguientes (Deitel, 1993):
1. 2.

FCFS. SSTF.

168

3. 4. 5. 6.

SCAN. SCAN de N - Pasos. C - SCAN. Esquema Eschenbach.

Planificacin FCFS (Primero en Llegar, Primero en Ser Servido)

Una peticin no puede ser desplazada por la llegada de una peticin con prioridad ms alta. No hay reordenamiento de la cola de peticiones pendientes. Se ignoran las relaciones posicionales entre las peticiones pendientes. Ofrece una varianza pequea aunque perjudica a las peticiones situadas al final de la cola.

Planificacin SSTF (Menor Tiempo de Bsqueda Primero)

El brazo del disco se sita en la siguiente peticin que minimice el movimiento del brazo. No respeta el orden de llegada de las peticiones a la cola. Tiende a favorecer a las pistas del centro del disco. La media de tiempos de respuesta tiende a ser ms baja que con FCFS, para cargas moderadas. Las varianzas tienden a ser mayores que con FCFS por el efecto de las pistas interiores y exteriores.

Planificacin SCAN

El brazo del disco se desplaza sirviendo a todas las peticiones que encuentra a su paso. Cambia de direccin cuando ya no hay peticiones pendientes en la direccin actual. Ha sido la base de la mayora de las estrategias de planificacin implementadas. Elimina las discriminaciones de SSTF y tiene menor varianza. Las pistas exteriores son menos visitadas que las intermedias, pero no es tan grave como con SSTF.

Planificacin SCAN de N - Pasos

La estrategia de movimiento del brazo es como en SCAN; solo da servicio a las peticiones que se encuentran en espera cuando comienza un recorrido particular. Las peticiones que llegan durante un recorrido son agrupadas y ordenadas y sern atendidas durante el recorrido de regreso.

169

Posee menor varianza de los tiempos de respuesta si se compara con las planificaciones SSTF y SCAN convencionales.

Planificacin C - SCAN (Bsqueda Circular)

El brazo se mueve del cilindro exterior al interior, sirviendo a las peticiones sobre una base de bsqueda ms corta. Finalizado el recorrido hacia el interior, salta a la peticin ms cercana al cilindro exterior y reanuda su desplazamiento hacia el interior. No discrimina a los cilindros exterior e interior. La varianza de los tiempos de respuesta es muy pequea. Esquema Eschenbach. El brazo del disco se mueve como en C - SCAN, pero:

Las peticiones se reordenan para ser servidas dentro de un cilindro para tomar ventaja de la posicin rotacional. Si dos peticiones trasladan posiciones de sectores dentro de un cilindro, solo se sirve una en el movimiento actual del brazo del disco.

Esta estrategia tiene en cuenta el retraso rotacional. Manejo de Errores en Discos. Algunos de los errores ms comunes en discos son:

Error de programacin: o Ej.: Solicitar un sector no existente. Error temporal en la suma de verificacin: o Ej.: Provocado por polvo en la cabeza. Error permanente en la suma de verificacin: o Ej.: Un bloque del disco daado fsicamente. Error de bsqueda: o Ej.: El brazo se enva al cilindro 6 pero va al 7. Error del controlador: o Ej.: El controlador no acepta los comandos.

El manejador del disco debe controlar los errores de la mejor manera posible. La mayora de los controladores:

Verifican los parmetros que se les proporcionan. Informan si no son vlidos.

Respecto de los errores temporales en la suma de verificacin:

170

Generalmente se eliminan al repetir la operacin. Si persisten, el bloque debe ser marcado como un bloque defectuoso, para que el software lo evite.

Otra posibilidad es que controladores inteligentes reserven cierta cantidad de pistas:


Sern asignadas en reemplazo de pistas defectuosas. Una tabla asocia las pistas defectuosas con las pistas de repuesto: o Est alojada en la memoria interna del controlador y en el disco. o La sustitucin es transparente para el manejador. o Puede afectarse el desempeo de los algoritmos de bsqueda, como el del elevador, ya que el controlador utiliza pistas fsicamente distintas de las solicitadas

Ocultamiento de Una Pista a la Vez en Discos. Generalmente el tiempo de bsqueda supera al de rotacin y transferencia (aunque esto se est equilibrando). Una vez resuelta la bsqueda del cilindro correspondiente, no es muy importante si se lee un sector o toda la pista:

Especialmente en dispositivos con sensibilidad rotacional (RPS): o El manejador puede ver que sector se encuentra debajo de la cabeza y puede enviar una solicitud del siguiente sector: Permite leer una pista en un tiempo de rotacin. De lo contrario se tardara, en promedio, un tiempo de rotacin ms un tiempo de sector, para leer un solo sector. Algunos manejadores aprovechan esto mediante un cach secreto de una pista a la vez : o Es desconocido por el software independiente del dispositivo. o Si se necesita un sector del cach, no es necesaria una transferencia del disco. o Las principales desventajas de este ocultamiento de una pista a la vez son: Complejidad del software. Requerimientos de espacio para buffers. Las transferencias del cach al programa que hace la llamada: Las debe realizar la cpu mediante un ciclo programado. No las puede hacer el hardware DMA. o Algunos controladores realizan el ocultamiento de una pista a la vez en su propia memoria interna: Resulta transparente al manejador.

171

Las transferencias entre el controlador y la memoria pueden utilizar DMA.

Discos en RAM Utilizan una parte de la memoria principal asignada con anterioridad para almacenar los bloques (Tanenbaum, 2003). Tienen la ventaja del acceso instantneo:

No hay demora rotacional o debida a las bsquedas. Son adecuados para el almacenamiento de programas o datos con accesos muy frecuentes.

Los bloques de almacenamiento tienen el mismo tamao que en los discos reales. Cuando el manejador debe leer de o escribir en un bloque de un disco en RAM, calcula el lugar de la memoria donde se encuentra el bloque solicitado y lee o escribe en el mismo. Relojes Los relojes o cronmetros son esenciales para la operacin de sistemas de tiempo compartido (Tanenbaum, 2003). Registran la hora del da. Evitan que un proceso monopolice la cpu. El software para reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque ni de caracter. Los relojes ms sencillo trabajan con la lnea de corriente elctrica de 110 o 220 voltios y provocan una interrupcin por cada ciclo de voltaje, a 50 o 60 hz. Otro tipo de relojes consta de tres componentes:

Un oscilador de cristal, un contador y un registro. Una pieza de cristal de cuarzo se monta en una estructura bajo tensin: o Genera una seal peridica de muy alta precisin, generalmente entre 5 y 100 mhz. o La seal se alimenta en el contador para que cuente en forma descendente hasta cero. o Cuando el contador llega a cero, provoca una interrupcin de la cpu.

Los relojes programables tienen varios modos de operacin:

Modo de una instancia: o Cuando el reloj se inicializa, copia el valor del registro en el contador.

172

Decrementa el contador en cada pulso del cristal. Cuando el contador llega a cero provoca una interrupcin y se detiene hasta ser nuevamente inicializado por el software. Modo de onda cuadrada: o Luego de llegar a cero y provocar la interrupcin, el registro se copia de manera automtica en el contador. o Todo el programa se repite en forma indefinida. o Las interrupciones peridicas se llaman marcas del reloj.
o o

La ventaja del reloj programable es que su frecuencia de interrupcin puede ser controlada por el software. Las principales funciones del software manejador del reloj son:

Mantener la hora del da o tiempo real. Evitar que los procesos se ejecuten durante ms tiempo del permitido. Mantener un registro del uso de la cpu. Controlar llamadas al sistema tipo alarm por parte de los procesos del usuario. Proporcionar cronmetros guardianes de partes del propio sistema. Realizar resmenes, monitoreo y recoleccin de estadsticas.

El software manejador del reloj puede tener que simular varios relojes virtuales con un nico reloj fsico. Terminales Las terminales tienen gran nmero de formas distintas (Tanenbaum, 2003):

El manejador de la terminal debe ocultar estas diferencias. La parte independiente del dispositivo en el S. O. y los programas del usuario no se tienen que reescribir para cada tipo de terminal.

Desde el punto de vista del S.O. se las puede clasificar en:

Interfaz RS-232: o Hardcopy (terminales de impresin). o TTY de vidrio (terminales de video). o Inteligente (computadoras con cpu y memoria). Interfaz mapeada a memoria: o Orientada a caracteres. o Orientada a bits.

Las terminales RS-232 poseen un teclado y un monitor que se comunican mediante una interfaz serial, un bit a la vez; las conversiones de bits a bytes y viceversa las efectan los chips uart (transmisores - receptores asncronos universales).

173

Las terminales mapeadas a memoria:


No se comunican mediante una lnea serial. Poseen una interfaz mediante una memoria especial llamada video RAM: o Forma parte del espacio de direcciones de la computadora. o La cpu se dirige a ella como al resto de la memoria. o En la tarjeta de video RAM hay un chip llamado controlador de video: Extrae bytes del video RAM y genera la seal de video utilizada para manejar la pantalla. El monitor genera un rayo de electrones que recorre la pantalla pintando lneas. Cada lnea est constituida por un cierto nmero de puntos o pixeles. La seal del controlador de video modula el rayo de electrones y determina si un pixel debe estar o no iluminado. Los monitores de color poseen tres rayos (rojo, verde y azul) que se modulan independientemente.

En las pantallas mapeadas a caracteres:

Cada carcter en la pantalla equivale a dos caracteres de RAM: o Uno aloja al cdigo (ASCII) del carcter por exhibir. o Otro es el byte de atributo, necesario para determinar el color, el video inverso, el parpadeo, etc.

En las terminales mapeadas a bits:


Se utiliza el mismo principio. Cada bit en el video RAM controla en forma directa un solo pixel de la pantalla. Permite una completa flexibilidad en los tipos y tamaos de caracteres, varias ventanas y grficos arbitrarios.

Con las pantallas mapeadas a memoria, el teclado se desacopla totalmente de la pantalla:


El teclado dispone de su propio manejador. El manejador del teclado puede operar en modo carcter o en modo lnea.

Las terminales pueden operar con una estructura central de buffers o con buffers exclusivos para cada terminal. Frecuentemente los manejadores de terminales soportan operaciones tales como:

174

Mover el cursor hacia arriba, abajo, a la izquierda o a la derecha una posicin. Mover el cursor a x,y. Insertar un carcter o una lnea en el cursor. Eliminar un carcter o una lnea en el cursor. Recorrer la pantalla hacia arriba o hacia abajo n lneas. Limpiar la pantalla desde el cursor hacia el final de la lnea o hasta el final de la pantalla. Trabajar en modo de video inverso, subrayado, parpadeo o normal. Crear, construir, mover o controlar las ventanas.

175

Resumen Una de las funciones principales de un S. O. es el control de todos los dispositivos de e / s de la computadora. Los dispositivos de E/S se pueden clasificar en dos grandes categoras: dispositivos de bloque y dispositivos de carcter. El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parmetros de los comandos tambin se cargan en los registros de los controladores. Al aceptar el comando, la CPU puede dejar al controlador y dedicarse a otro trabajo. Todo el cdigo que depende de los dispositivos aparece en los manejadores de dispositivos. Los manejadores de dispositivos se encargan de los pormenores de la operacin de los dispositivos y de presentar interfaces estndar al resto del sistema operativo. El software de E/S independiente del dispositivo se encarga de cosas como el uso de bferes y la produccin de informes de error. Hay diversos tipos de discos. En muchos casos es posible utilizar algoritmos de calendarizacin del brazo del disco para mejorar su desempeo. Los relojes sirven para llevar la cuenta del tiempo real, limitar el tiempo de ejecucin de los procesos, manejar temporizadores vigilantes y llevar la contabilidad. Las terminales orientadas a caracteres tienen varios aspectos relacionados con los caracteres especiales que pueden introducirse y las secuencias de escape especiales que pueden generarse. Problemas 1. Por qu los archivos de salida para la impresora se colocan generalmente en spooling en disco antes de imprimirse? 2. Llegan al controlador de un disco solicitudes para los cilindros 10,22,20,2,40,6 y 38, en ese orden. Un desplazamiento de brazo tarda 6ms por cilindro. Cuanto tiempo de desplazamiento se necesita en cada uno de los siguientes casos: a) Primero en llegar, primero en ser atendido. b) Cilindro ms cercano a continuacin. c) Algoritmo del elevador. En todos los casos, en un principio el brazo est en el cilindro 20.

176

3. El manejador de interrupciones de reloj de cierta computadora requiere 2ms (incluido el gasto adicional por conmutacin de procesos) por tic del reloj. El reloj opera a 60Hz. Que fraccin de la CPU se dedica al reloj? 4. Explique cual es la labor del manejador de dispositivos. 5. Explique las funciones que realiza el software de E/S independiente del dispositivo. 6. Explique que parte del software de E/S esta en el espacio de usuario. 7. Muchas terminales RS-232 tiene secuencias de escape para borrar la lnea actual y desplazar hacia arriba todas las lneas que estn abajo. Como cree que se implemente esta funcin dentro de la terminal? 8. Los colores aditivos primarios son rojo, verde y azul, lo que implica que cualquier color puede formarse con una superposicin lineal de stos. Puede suceder que alguien tenga una fotografa a color que no pueda representarse empleando color de 24 bits? 9. Por qu las terminales RS-232 son controladas por interrupciones, pero las terminales con correspondencia a memoria no? 10. Explique que operaciones realizan los manejadores de terminales.

177

UNDAD 5. Sistema de archivos. 5.1 Concepto. Todas las aplicaciones computarizadas necesitan almacenar y recuperar la informacin (Deitel,1993):

Superando las limitaciones del almacenamiento real. Trascendiendo a la duracin de los procesos que las utilizan o generan. Independizando a la informacin de los procesos permitiendo el acceso a la misma a travs de varios procesos.

Las condiciones esenciales para el almacenamiento de la informacin a largo plazo son:


Debe ser posible almacenar una cantidad muy grande de informacin. La informacin debe sobrevivir a la conclusin del proceso que la utiliza. Debe ser posible que varios procesos tengan acceso concurrente a la informacin.

La solucin es el almacenamiento de la informacin en discos y otros medios externos en unidades llamadas archivos:

Los archivos deben ser persistentes, es decir que no deben verse afectados por la creacin o terminacin de un proceso. Los archivos son una coleccin de datos con nombre. Pueden ser manipulados como una unidad por operaciones como: open, close, create, destroy, copy, rename, list. Los elementos de datos individuales dentro del archivo pueden ser manipulados por operaciones como: read, write, update, insert, delete.

Un Archivo es un conjunto de registros relacionados (Tanenbaum, 2003). 5.2 Nocin de archivo real y virtual. Un archivo virtual (Fig.5.1), 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 (Fig. 5.2), su tamao es muy variable y terminan al detener la ejecucin del sistema, muchos de ellos son borrados, por ejemplo, los archivos *.tmp (Fig. 5.3). Se le conoce como archivo virtual, aquel que contiene los datos generados por el usuario.

178

Fig.5.1 Archivo virtual

Fig. 5.2 Ejecucin del proceso

Fig. 5.3 Archivos temporales(*.tmp)

Archivo Real (Fig. 5.4): Es un objeto que contiene programas, datos o cualquier otro elemento. Un archivo se muestra de manera real, en la informacin del espacio que ocupa en un disco duro o sistema de almacenamiento, en otras palabras su tamao en bytes.

Fig. 5.4 Ejemplos de archivos reales

5.3 Componentes de un sistema de archivos. El Sistema de Archivos es la parte del sistema de administracin del almacenamiento responsable, principalmente, de la administracin de los archivos del almacenamiento secundario.

179

Es la parte del S. O. responsable de permitir compartir controladamente la informacin de los archivos. El Sistema de Archivos suele contener(Deitel, 1993):

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. 5.4 Organizacin lgica y fsica. 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. Archivos lgicos. Contempla la organizacin desde el punto de vista lgico. Por ejemplo, secuencial, directo, etc.

180

Archivos fsicos. 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. Mtodos de asignacin de espacio libre. Un mtodo de asignacin de espacio libre determina la manera en que un Sistema Operativo controla los lugares del disco que no estn siendo ocupados. Para el control del espacio libre se puede utilizar como base alguno de los mtodos tericos: Vector de Bits, Lista Ligada, Por Agrupacin y por Contador.

Vector de bits

Se tiene un arreglo de bits, el nmero de bits que tiene, representa cada sector del disco, o sea que si los sectores 10 y 11 estn ocupados su representacin ser (fig. 5.5):

Fig. 5.5 Vector de bits

Lista ligada

Existe una cabecera en la que se tiene la direccin del primer sector vaco, ese sector a su vez, tiene un apuntador al siguiente bloque, y as sucesivamente hasta que se encuentre una marca indicando que ya no hay espacio libre. (Fig 5.6).

181

Fig. 5.6 Lista ligada

Por agrupacin

Es similar a la lista ligada, solo que en este se tiene por cada sector, un grupo de apuntadores a varios espacios vacos, al final de cada bloque se tiene un apuntador a otro grupo de apuntadores. (Fig. 5.7).

182

Fig.5.7 Por agrupacin

Por contador

Aqu, por cada conjunto de bloques contiguos que estn vacos, se tiene por cada apuntador, un nmero de inicio y el tamao del grupo de sectores vacos. (Fig. 5.8).

183

Fig. 5.8 Por contador

5.5 Mecanismos de acceso a los archivos. 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.

184

Algunos de los posibles atributos de archivo son:


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.

Las llamadas ms comunes al sistema relacionadas con los archivos son:


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

185

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

5.6 Manejo de espacio en memoria secundaria. 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.

186

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: (Fig. 5.9)

Fig. 5.9 Asignacin contigua

VENTAJAS

DESVENTAJAS

- La cabeza de lectura no se mueve - Produce fragmentacin externa. demasiado en la lectura de un archivo.

Asignacin ligada

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: (Fig. 5.10)

187

Fig. 5.10 Asignacin ligada

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

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: (Fig. 5.11)

Fig. 5.11 Asignacin indexada

VENTAJAS

DESVENTAJAS

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

Existe desperdicio archivos muy chicos.

cuando

hay

Desbordamiento de bloque ndice. (Solucin: creacin de un esquema ligado; el ultimo bloque ndice apunta a otro ndice)

5.7 Modelo jerrquico.

189

Directorios Generalmente son utilizados por los S.O. para llevar un registro de los archivos (Tanenbaum, 2003). En muchos sistemas son a su vez tambin archivos. Sistemas Jerrquicos de Directorios. El directorio contiene un conjunto de datos por cada archivo referenciado. Una posibilidad es que el directorio contenga por cada archivo referenciado (Deitel, 1993):

El nombre. Sus atributos. Las direcciones en disco donde se almacenan los datos.

Otra posibilidad es que cada entrada del directorio contenga:


El nombre del archivo. Un apuntador a otra estructura de datos donde se encuentran los atributos y las direcciones en disco.

Al abrir un archivo el S. O.:


Busca en su directorio el nombre del archivo. Extrae los atributos y direcciones en disco. Graba esta informacin en una tabla de memoria real. Todas las referencias subsecuentes al archivo utilizarn la informacin de la memoria principal.

El nmero y organizacin de directorios vara de sistema en sistema:


Directorio nico: el sistema tiene un solo directorio con todos los archivos de todos los usuarios (ver Figura 5.12). Un directorio por usuario: el sistema habilita un solo directorio por cada usuario (ver Figura 5.13). Un rbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarqua general (ver Figura 5.14).

190

Fig. 5.12 Un solo directorio compartido por todos los usuarios

Fig. 5.13 Un directorio por usuario

191

Fig. 5.14 Un rbol arbitrario por usuario

Nombre de las Rutas de Acceso. Cuando el sistema de archivos est organizado como un rbol de directorios se necesita una forma de determinar los nombres de los archivos. Los principales mtodos para nombres de los archivos son: Ruta de Acceso Absoluta: Cada archivo tiene una ruta de acceso absoluta. Consta de la ruta de acceso desde el directorio raz hasta el archivo. Los componentes de la ruta de acceso se separan mediante algn carcter llamado separador. Ruta de Acceso Relativa: Se utiliza junto con el concepto de directorio de trabajo o directorio activo. Todos los nombres que no comiencen en el directorio raz se toman en relacin con el directorio de trabajo. El nombre absoluto de la ruta de acceso siempre funciona, sin importar cual sea el directorio de trabajo.

192

Operaciones con Directorios Las llamadas al sistema permitidas para el manejo de los directorios tienen variacin de sistema a sistema. Las ms comunes son las siguientes:

Create (crear): se crea un directorio vaco. Delete (eliminar): se elimina un directorio, que debe estar vaco. Opendir (abrir directorio): se pueden leer los directorios: o Antes de poder leer un directorio, ste debe ser abierto. Closedir (cerrar directorio): cuando se ha ledo un directorio, ste debe ser cerrado para liberar el espacio correspondiente de la tabla interna. Readdir (leer directorio): regresa la siguiente entrada en un directorio abierto, sin importar el tipo de estructura de directorios que se utilice. Rename (cambiar de nombre): cambia el nombre de un directorio de manera similar al cambio para archivos. Link (ligar): es una tcnica que permite que un archivo aparezca en ms de un directorio: o Especifica un archivo existente y el nombre de una ruta de acceso. o Crea un enlace del archivo ya existente con el nombre especificado en la ruta de acceso. Unlink (desligar): se elimina una entrada del directorio: o Si el archivo que se desea desligar aparece solo en un directorio (el caso normal): Se elimina del sistema de archivos. o Si el archivo que se desea desligar, est presente en varios directorios: Solo se elimina la ruta de acceso especificada. Las dems rutas permanecen.

Implantacin del Sistema de Archivos y sus Relaciones con la Asignacin y Liberacin de Espacio. Se consideran aspectos tales como:

La forma de almacenamiento de archivos y directorios. La administracin del espacio en disco. La forma de hacerlo de manera eficiente y confiable.

Se deben tener presentes problemas tales como la fragmentacin creciente del espacio en disco:

Ocasiona problemas de performance al hacer que los archivos se desperdiguen a travs de bloques muy dispersos. Una tcnica para aliviar el problema de la fragmentacin consiste en realizar peridicamente:

193

o o

Condensacin: se pueden reorganizar los archivos expresamente o automticamente segn algn criterio predefinido. Recoleccin de basura o residuos: se puede hacer fuera de lnea o en lnea, con el sistema activo, segn la implementacin

Implantacin de Archivos. El aspecto clave de la implantacin del almacenamiento de archivos es el registro de los bloques asociados a cada archivo. Algunos de los mtodos utilizados son los siguientes:

Asignacin contigua o adyacente: o Los archivos son asignados a reas contiguas de almacenamiento secundario. o Las principales ventajas son: Facilidad de implantacin, ya que solo se precisa el nmero del bloque de inicio para localizar un archivo. Rendimiento excelente respecto de la e / s. o Los principales defectos son: Se debe conocer el tamao mximo del archivo al crearlo. Produce una gran fragmentacin de los discos. Asignacin no contigua: o Son esquemas de almacenamiento ms dinmicos, destacndose los siguientes: o Asignacin encadenada orientada hacia el sector: El disco se considera compuesto de sectores individuales. Los archivos constan de varios sectores que pueden estar dispersos por todo el disco. Los sectores que pertenecen a un archivo comn contienen apuntadores de uno a otro formando una lista encadenada. Una lista de espacio libre contiene entradas para todos los sectores libres del disco. Las ampliaciones o reducciones en el tamao de los archivos se resuelven actualizando la lista de espacio libre y no hay necesidad de condensacin. Las principales desventajas son: Debido a la posible dispersin en el disco, la recuperacin de registros lgicamente contiguos puede significar largas bsquedas. El mantenimiento de la estructura de listas encadenadas significa una sobrecarga en tiempo de ejecucin. Los apuntadores de la estructura de lista consumen espacio en disco.

194

Asignacin por bloques: Es ms eficiente y reduce la sobrecarga en ejecucin. Es una mezcla de los mtodos de asignacin contigua y no contigua. Se asignan bloques de sectores contiguos en vez de sectores individuales. El sistema trata de asignar nuevos bloques a un archivo eligiendo bloques libres lo ms prximos posible a los bloques del archivo existentes. Las formas ms comunes de implementar la asignacin por bloques son: Encadenamiento de bloques. Encadenamiento de bloques de ndice. Transformacin de archivos orientada hacia bloques. Encadenamiento de bloques o lista ligada: Las entradas en el directorio de usuarios apuntan al primer bloque de cada archivo. Cada uno de los bloques de longitud fija que forman un archivo contiene dos partes: Un bloque de datos. Un apuntador al bloque siguiente. Cada bloque contiene varios sectores. Frecuentemente el tamao de un bloque se corresponde con el de una pista completa del disco. Localizar un registro determinado requiere: Buscar en la cadena de bloques hasta encontrar el bloque apropiado. Buscar en el bloque hasta encontrar el registro. El examen de la cadena desde el principio puede ser lento ya que debe realizarse de bloque en bloque, y pueden estar dispersos por todo el disco. La insercin y el retiro son inmediatos, dado que se deben modificar los apuntadores del bloque precedente. Se pueden usar listas de encadenamiento doble, hacia adelante y hacia atrs, con lo que se facilita la bsqueda (ver Figura 5.15)

195

Fig. 5.15 Encadenamiento de bloques o lista ligada de bloques o

Encadenamiento de bloques de ndices: Los apuntadores son colocados en varios bloques de ndices separados: Cada bloque de ndices contiene un nmero fijo de elementos. Cada entrada contiene un identificador de registros y un apuntador a ese registro. Si es necesario utilizar ms de un bloque de ndices para describir un archivo, se encadena una serie de bloques de ndices. La gran ventaja es que la bsqueda puede realizarse en los propios bloques de ndices. Los bloques de ndices pueden mantenerse juntos en el almacenamiento secundario para acortar la bsqueda, pero para mejor performance podran mantenerse en el almacenamiento primario. La principal desventaja es que las inserciones pueden requerir la reconstruccin completa de los bloques de ndices:

196

Una posibilidad es dejar vaca una parte de los bloques de ndices para facilitar inserciones futuras y retardar las reconstrucciones. Es suficiente que el dato del directorio contenga el nmero de bloque inicial para localizar todos los bloques restantes, sin importar el tamao del archivo (ver Figura 5.16).

Fig. 5.16 Encadenamiento de bloques de ndices o

Transformacin de archivos orientada hacia bloques: Se utilizan nmeros de bloques en vez de apuntadores. Los nmeros de bloques se convierten fcilmente a direcciones de bloques gracias a la geometra del disco. Se conserva un mapa del archivo, conteniendo una entrada para cada bloque del disco.

197

Las entradas en el directorio del usuario apuntan a la primera entrada al mapa del archivo para cada archivo. Cada entrada al mapa del archivo contiene el nmero del bloque siguiente de ese archivo. La entrada al mapa del archivo correspondiente a la ltima entrada de un archivo determinado se ajusta a algn valor centinela (nil) para indicar que se alcanz el ltimo bloque de un archivo. El sistema puede mantener una lista de bloques libres. La principal ventaja es que las cercanas fsicas del disco se reflejan en el mapa del archivo (ver Figura 5.17).

Fig. 5.17 Transformacin de archivos orientada hacia bloques

198

Nodos-i (nodos ndices): Se asocia a cada archivo una pequea tabla, llamada nodo-i (nodo ndice): Contiene los atributos y direcciones en disco de los bloques del archivo. Se traslada del disco a la memoria principal al abrir el archivo. En rigor, almacena solo las primeras direcciones en disco: o Si el archivo es pequeo, toda la informacin est en el nodo-i. o Si el archivo es grande, una de las direcciones en el nodo-i es la direccin de un bloque en el disco llamado bloque simplemente indirecto: Contiene las direcciones en disco adicionales. Si resulta insuficiente, otra direccin en el nodo-i, el bloque doblemente indirecto, contiene la direccin de un bloque que presenta una lista de los bloques simplemente indirectos: Cada bloque simplemente indirecto apunta a un grupo de bloques de datos. De ser necesario se pueden utilizar bloques triplemente indirectos (ver Figura 5.18).

199

Fig. 5.18 Esquema de un nodo-i

Implantacin de Directorios. Para abrir un archivo el S. O. utiliza informacin del directorio:


El directorio contiene la informacin necesaria para encontrar los bloques en el disco. El tipo de informacin vara segn el sistema.

La principal funcin del sistema de directorios es asociar el nombre del archivo con la informacin necesaria para localizar los datos. Un aspecto ntimamente ligado con esto es la posicin de almacenamiento de los atributos:

200

Una posibilidad es almacenarlos en forma directa dentro del dato del directorio. Otra posibilidad es almacenar los atributos en el nodo-i en vez de utilizar la entrada del directorio.

5.8 Mecanismos de recuperacin en caso de falla. Es necesario proteger la informacin alojada en el sistema de archivos, efectuando los resguardos correspondientes. De esta manera se evitan las consecuencias generalmente catastrficas de la prdida de los sistemas de archivos. Las prdidas se pueden deber a problemas de hardware, software, hechos externos, etc. Manejo de un bloque defectuoso: Se utilizan soluciones por hardware y por software. La solucin en hardware:

Consiste en dedicar un sector del disco a la lista de bloques defectuosos. Al inicializar el controlador por primera vez: o Lee la lista de bloques defectuosos. o Elige un bloque (o pista) de reserva para reemplazar los defectuosos. o Registra la asociacin en la lista de bloques defectuosos. o En lo sucesivo, las solicitudes del bloque defectuoso utilizarn el de repuesto.

La solucin en software:

Requiere que el usuario o el sistema de archivos construyan un archivo con todos los bloques defectuosos. Se los elimina de la lista de bloques libres. Se crea un archivo de bloques defectuosos: o Esta constituido por los bloques defectuosos. o No debe ser ledo ni escrito. o No se debe intentar obtener copias de respaldo de este archivo.

Respaldos (copias de seguridad o de back-up): Es muy importante respaldar los archivos con frecuencia. Los respaldos pueden consistir en efectuar copias completas del contenido de los discos (flexibles o rgidos). Una estrategia de respaldo consiste en dividir los discos en reas de datos y reas de respaldo, utilizndolas de a pares:

Se desperdicia la mitad del almacenamiento de datos en disco para respaldo.

201

Cada noche (o en el momento que se establezca), la parte de datos de la unidad 0 se copia a la parte de respaldo de la unidad 1 y viceversa.

Otra estrategia es el vaciado por incrementos o respaldo incremental:


Se obtiene una copia de respaldo peridicamente (por ej.: una vez por mes o por semana), llamada copia total. Se obtiene una copia diaria solo de aquellos archivos modificados desde la ltima copia total; en estrategias mejoradas, se copian solo aquellos archivos modificados desde la ltima vez que dichos archivos fueron copiados. Se debe mantener en el disco informacin de control como una lista de los tiempos de copiado de cada archivo, la que debe ser actualizada cada vez que se obtienen copias de los archivos y cada vez que los archivos son modificados. Puede requerir una gran cantidad de cintas de respaldo dedicadas a los respaldos diarios entre respaldos completos.

Consistencia del sistema de archivos: Muchos sistemas de archivos leen bloques, los modifican y escriben en ellos despus. Si el sistema falla antes de escribir en los bloques modificados, el sistema de archivos puede quedar en un estado inconsistente. La inconsistencia es particularmente crtica si alguno de los bloques afectados son:

Bloques de nodos-i. Bloques de directorios. Bloques de la lista de bloques libres.

La mayora de los sistemas dispone de un programa utilitario que verifica la consistencia del sistema de archivos:

Se pueden ejecutar al arrancar el sistema o a pedido. Pueden actuar sobre todos o algunos de los discos. Pueden efectuar verificaciones a nivel de bloques y a nivel de archivos. La consistencia del sistema de archivos no asegura la consistencia interna de cada archivo, respecto de su contenido. Generalmente pueden verificar tambin el sistema de directorios y / o de bibliotecas.

Generalmente los utilitarios utilizan dos tablas:


Tabla de bloques en uso. Tabla de bloques libres.

202

Cada bloque debe estar referenciado en una de ellas.

Si un bloque no aparece en ninguna de las tablas se trata de una falla llamada bloque faltante:

No produce daos pero desperdicia espacio en disco. Se soluciona aadiendo el bloque a la tabla de bloques libres.

Tambin podra detectarse la situacin de falla debida a un bloque referenciado dos veces en la tabla de bloques libres:

Esta falla no se produce en los sistemas de archivos basados en mapas de bits, s en los basados en tablas o listas. La solucin consiste en depurar la tabla de bloques libres.

Una falla muy grave es que el mismo bloque de datos aparezca referenciado dos o ms veces en la tabla de bloques en uso:

Como parte del mismo o de distintos archivos. Si uno de los archivos se borra, el bloque aparecera en la tabla de bloques libres y tambin en la de bloques en uso. Una solucin es que el verificador del sistema de archivos: o Asigne un bloque libre. o Copie en el bloque libre el contenido del bloque conflictivo. o Actualice las tablas afectando el bloque copia a alguno de los archivos. o Agregue el bloque conflictivo a la tabla de bloques libres. o Informe al usuario para que verifique el dao detectado y la solucin dada.

Otro error posible es que un bloque est en la tabla de bloques en uso y en la tabla de bloques libres:

Se soluciona eliminndolo de la tabla de bloques libres.

Las verificaciones de directorios incluyen controles como:

Nmero de directorios que apuntan a un nodo-i con los contadores de enlaces almacenados en los propios nodos-i; en un sistema consistente de archivos deben coincidir.

Una posible falla es que el contador de enlaces sea mayor que el nmero de entradas del directorio:

Aunque se eliminaran todos los archivos de los directorios el contador sera distinto de cero y no se podra eliminar el nodo-i.

203

No se trata de un error serio pero produce desperdicio de espacio en disco con archivos que no se encuentran en ningn directorio. Se soluciona haciendo que el contador de enlaces en el nodo-i tome el valor correcto; si el valor correcto es 0, el archivo debe eliminarse.

Otro tipo de error es potencialmente catastrfico:

Si dos entradas de un directorio se enlazan a un archivo, pero el nodo-i indica que solo existe un enlace, entonces, al eliminar cualquiera de estas entradas de directorio, el contador del nodo-i tomar el valor 0. Debido al valor 0 el sistema de archivos lo seala como no utilizado y libera todos sus bloques. Uno de los directorios apunta hacia un nodo-i no utilizado, cuyos bloques se podran asignar entonces a otros archivos. La solucin es forzar que el contador de enlaces del nodo-i sea igual al nmero de entradas del directorio.

Tambin se pueden hacer verificaciones heursticas, por ejemplo.:

Cada nodo-i tiene un modo, pero algunos modos son vlidos aunque extraos: o Ej.: Se prohbe el acceso al propietario y todo su grupo, pero se permite a los extraos leer, escribir y ejecutar el archivo. o La verificacin debera detectar e informar de estas situaciones. Se debera informar como sospechosos aquellos directorios con excesivas entradas, por ej. ms de mil.

204

Resumen Todas las aplicaciones computarizadas necesitan almacenar y recuperar la informacin. La solucin es el almacenamiento de la informacin en discos y otros medios externos en unidades llamadas archivos. Hay archivos virtuales y reales. Un archivo virtual, es un archivo de uso temporal que es utilizado por los procesos del sistema mientras se estn ejecutando dichos procesos. Archivo Real es un objeto que contiene programas, datos o cualquier otro elemento. Un archivo se muestra de manera real, en la informacin del espacio que ocupa en un disco duro o sistema de almacenamiento, en otras palabras su tamao en bytes. El sistema de archivos es la parte del S. O. responsable de permitir compartir controladamente la informacin de los archivos. La organizacin lgica y fsica 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. Los tipos de acceso a los archivos ms comunes son: acceso aleatorio y acceso secuencial. 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. Los directorios generalmente son utilizados por los S.O. para llevar un registro de los archivos. Es necesario proteger la informacin alojada en el sistema de archivos, efectuando los resguardos correspondientes. De esta manera se evitan las consecuencias generalmente catastrficas de la prdida de los sistemas de archivos. Las prdidas se pueden deber a problemas de hardware, software, hechos externos, etc. Problemas 1. Explique que es un archivo 2. Como se llama a la parte del sistema operativo que es el encargado de permitir compartir controladamente la informacin de los archivos. 3. Explique que es un directorio. 4. Los sistemas que manejan archivos secuenciales siempre tiene una operacin para rebobinar archivos. Los sistemas que manejan archivos de acceso aleatorio tambin lo necesitan?

205

5. Algunos sistemas operativos proporcionan una llamada al sistema rename para asignar un nuevo nombre a un archivo. Hay alguna diferencia entre usar esta llamada para cambiar el nombre de un archivo y simplemente copiar el viejo? 6. En algunos sistemas es posible mapear una parte de un archivo en la memoria. Qu restricciones deben imponer tales sistemas? Cmo se implementa este mapeo parcial? 7. Un sistema operativo sencillo solo maneja un directorio pero le permite contener un nmero arbitrariamente grande de archivos con nombres arbitrariamente largos. Puede simularse aqu algo parecido a un sistema de archivos jerrquico? Cmo? 8. Mencione 5 causas en las que se produzca perdida de informacin de los archivos. 9. Algunos dispositivos digitales para consumidor necesitan almacenar datos, por ejemplo como archivos. Mencione un dispositivo moderno que requiera almacenar archivos y para el cual la asignacin contigua sera una magnifica idea. 10. Explique en que consiste la falla llamada bloque faltante.

206

UNIDAD 6. Proteccin y seguridad. 6.1 Concepto y objetivos de proteccin. Se consideraran mecanismos de proteccin a los mecanismos especficos del sistema operativo utilizados para resguardar la informacin de la computadora (Tanenbaum, 2003). 6.2 Funciones del 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. Proteccin de los procesos del sistema contra los procesos de usuario. 2. Proteccin de los procesos de usuario contra los de otros procesos usuario. 3. Proteccin de Memoria. 4. Proteccin de los dispositivos. Polticas de proteccin. La funcin de la proteccin en un sistema computacional es la de proveer un mecanismo para la aplicacin de polticas que gobiernen el uso de los recursos. Estas polticas pueden ser establecidas de varias maneras. Algunas son fijadas durante el diseo del sistema, mientras que otras son formuladas como parte de la administracin en la ejecucin del sistema. Algunas otras son definidas por usuarios individuales para proteger sus archivos y programas. Un sistema de proteccin debe tener la flexibilidad para aplicar las polticas que sean declaradas para ello. Las polticas para el uso de recursos pueden variar, dependiendo de la aplicacin y pueden estar sujetas a cambios. Por estas razones, la proteccin no puede ser considerada como un problema que solamente concierne al diseador de un Sistema Operativo, sino que debe considerarse, como una herramienta para los programadores de aplicaciones, de manera que los recursos creados y soportados por un subsistema de aplicacin, puedan ser protegidos contra el mal uso. Un principio importante es la separacin entre poltica y mecanismo. Los mecanismos determinan como ser realizado algo. En contraste, las polticas deciden que es lo que se realizar. Es posible que las polticas cambien de lugar en lugar o de tiempo en tiempo. En el peor de los casos, cada cambio en la poltica requerir un cambio en el subyacente mecanismo.

207

6.3 Implantacin de matrices de acceso. Un sistema computacional es una coleccin de procesos y objetos. Los objetos involucran tanto objetos hardware (como CPU, segmentos de memoria, impresoras, etc.) y objetos software (como archivos, programas, semforos, etc.). Cada objeto tiene un nombre nico que lo diferenca de los dems objetos del sistema y cada una puede ser accesado solamente mediante operaciones bien definidas. Los objetos son esencialmente tipos de datos abstractos. Las posibles operaciones que realice un objeto, dependen de l mismo y sus caractersticas. Por ejemplo, un CPU se utiliza solo para ejecucin; en los segmentos de memoria se puede leer o escribir; los archivos de datos pueden ser creados, abiertos, escritos, ledos, cerrados y borrados; un archivo de programa puede ser ledo, escrito, ejecutado y borrado. Obviamente, un proceso tendr permitido accesar solamente a aquellos recursos que est autorizado a accesar solamente a aquellos recursos que est autorizado a accesar. Adems, en un momento dado podr accesar a aquellos recursos que requiera para realizar su tarea. Este requerimiento comnmente llamado el principio "Need_To_Know" es til en la limitacin de la cantidad de dao que un proceso defectuoso pueda causar al sistema. Por ejemplo, cuando un proceso "P" invoque al procedimiento "A", al procedimiento le ser permitido accesar solamente sus propias variables y los parmetros actuales pasados a l; no podr accesar todas las variables del proceso "P". Similarmente considrese el caso de que el proceso "P" invoque algn compilador para compilar algn archivo. El compilador no podr accesar cualquier archivo arbitrariamente, sino a un subconjunto bien definido de archivos (tales como: archivos fuente, archivos de listado, etc.) relacionados al archivo que ser compilado. De manera inversa, el compilador no puede tener archivos privados que utilice para propsitos de conteo y optimizacin, los cuales no podrn ser accesados por el proceso "P". Para facilitar este esquema se introduce el concepto de dominio de proteccin. Un proceso opera dentro de un dominio de proteccin, el cual especifica los recursos que el proceso puede accesar. Cada dominio define un conjunto de objetos y los tipos de operaciones que pueden ser realizadas sobre cada objeto. La capacidad de ejecutar una operacin sobre un objeto es un derecho de acceso. Un dominio es una coleccin de derechos de acceso, cada uno de los cuales es un par ordenado <Nombre_Objeto, Conjunto_de_Operaciones>. Por ejemplo, si el dominio "D" tiene derecho de acceso <Archivo F, {Leer, Escribir}>, entonces un proceso que se est ejecutando en el dominio "D" puede

208

tanto leer como escribir en el archivo F; no podr realizar alguna otra operacin sobre este objeto. Los dominios de proteccin no necesitan ser distintos; por el contrario, pueden compartir derechos de acceso. Por el contrario, pueden compartir derechos de acceso. Por ejemplo; en la siguiente figura 6.1: D1 <O3, {Leer, Escribir}> <O1, {Leer, Escribir}> D2 <O2, {Escribir}> <O4, {Imprimir}> D3 <01, {Ejecutar}> <O3, {Leer}> <O4, {Imprimir}>

Fig. 6.1 Dominios de proteccin con derechos de acceso

Se tienen 3 dominios de proteccin: D1, D2 y D3. El derecho de acceso <O4, Imprimir> est compartido por los dominios "D2" y "D3". Esto implica que un proceso ejecutndose en el dominio "D1" puede tanto leer como escribir sobre el objeto "O1"; mientras que ejecutndose en el dominio "D3", el proceso podr solamente ejecutar ese mismo objeto. Implantacin 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". Considrese la siguiente matriz de acceso (figura 6.2): Dominio \ Objeto A1 D1 Leer D2 D3 D4 Leer Escribir A2 A3 Leer Ejecutar Leer Escribir COM1 Leer Leer LPT1 Imprimir

Fig. 6.2 Matriz de acceso

209

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 dinmicas. 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. Por ejemplo, considrese la siguiente matriz de acceso (Figura 6.3): Archivo 1 D1 D2 D3 D4 Leer Escribir Leer+ Escribir Recibir Imprimir
Fig. 6.3 Matriz con derecho de acceso de copia

Archivo 1

COM1 Enviar+

Impresora

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

210

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 (Figura 6.4):

Archivo 1 D1 D2 Escribir

Archivo 2 Leer Leer+ Escribir

COM 1 Enviar+

Impresora

D3 D4 Leer

Recibir Enviar
Fig. 6.4 Matriz posterior al acceso de copia

Imprimir

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

211

acceso se debern incluir los dominios como objetos adicionales en la matriz de acceso. Considrese la siguiente matriz de acceso (Figura 6.5):
Arch1 D1 D2 Arch2 COM1 Enviar+ Cambio(b) Impresora D1 D2 D3 D4 Cambio(a)

Escribi Leer r Leer Escribir

D3 D4 Leer

Recibir Enviar Imprimir Cambio(c)

Fig. 6.5 Matriz con derecho de acceso de cambio

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. La proteccin que se ofrece en los sistemas de computacin existentes casi siempre se ha logrado con la ayuda del ncleo de un sistema operativo, que acta como agente de seguridad que inspecciona y valida cada intento por acceder a un recurso protegido. Puesto que la validacin de todos los accesos puede dar pie a un gasto extra considerable, debemos apoyarla con hardware para reducir el costo de cada validacin o bien debemos aceptar que el diseador del sistema podra inclinarse por sacrificar los objetivos de la proteccin. Es difcil satisfacer todos estos objetivos si los mecanismos de soporte con que se cuenta restringen la flexibilidad para implementar diversas polticas de proteccin. A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de ms alto nivel con el usuario, lo objetivos de la proteccin se han vuelto mucho ms refinados. En esta refinacin observamos que los diseadores de los diseadores de los sistemas de proteccin se han apoyado mucho en ideas que se originaron en los lenguajes de programacin y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de proteccin ahora se ocupan no slo de la identidad de un recurso al cual se intenta acceder, sino tambin de la naturaleza funcional de ese acceso. En los sistemas de proteccin ms nuevos, el inters en la funcin que se invocar se extiende ms all de un conjunto de funciones definidas por el sistema, como los mtodos de acceso a archivos estndar, para incluir funciones que tambin podran ser definidas por el usuario.

212

Las polticas para el uso de recursos tambin podran variar, dependiendo de la aplicacin, y podran cambiar con el tiempo. Por estas razones, la proteccin ya no puede considerarse como un asunto que slo concierne al diseador de un sistema operativo; tambin debe estar disponible como herramienta que el diseador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicacin contra intervenciones o errores. Aqu es donde los lenguajes de programacin entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaracin acerca del recurso. Este tipo de declaracin se puede integrar en un lenguaje mediante una extensin de su mecanismo de tipificacin. Si se declara la proteccin junto con la tipificacin de los datos, el diseado de cada subsistema puede especificar sus necesidades de proteccin as debera darse directamente durante la redaccin del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes: 1. Las necesidades de proteccin se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo. 2. Las necesidades de proteccin pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular. 3. El diseador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la proteccin. 4. Una notacin declarativa es natural porque los privilegios de acceso estn ntimamente relacionados con el concepto lingstico de tipo de datos. Hay diversas tcnicas que una implementacin de lenguaje de programacin puede utilizar para hacer cumplir la proteccin, pero cualquiera de ellas deber depender hasta cierto punto del grado de soporte de una mquina subyacente y su sistema operativo. Qu ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un ncleo, en comparacin con el cumplimiento forzado en gran medida por un compilador? Seguridad: La obligacin del cumplimiento por un ncleo ofrece un mayor grado de seguridad del sistema de proteccin mismo, que el que ofrece la generacin de cdigo de verificacin de proteccin por un compilador. En un esquema apoyado por compilador, la seguridad depende de lo correcto que sea el traductor, de algn mecanismo subyacente de gestin de almacenamiento que proteja los segmentos desde los cuales se ejecuta el cdigo compilador y, en ltima instancia, de la seguridad de los archivos desde los que se carga el programa. Flexibilidad: Hay lmites a la flexibilidad de un ncleo de proteccin para implementar una poltica definida por el usuario, aunque podra proporcionar recursos suficientes para que el sistema haga cumplir sus propias polticas. Con un lenguaje de programacin, se puede declarar la poltica de proteccin y hacerse cumplir segn sea necesario en una implementacin- 213

Eficiencia: Se logra la eficiencia mxima cuando hardware apoya directamente el cumplimiento de la proteccin. En la medida en que se requiera soporte de software, el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso esttico fuera de lnea en el momento de la compilacin. En sntesis, la especificacin de la proteccin en un lenguaje de programacin permite describir un alto nivel de polticas de asignacin y uso de recursos. 6.5 Concepto de seguridad. Se entender por seguridad a los problemas generales relativos a la garanta de que los archivos no sean ledos o modificados por personal no autorizado; esto incluye aspectos tcnicos, de administracin, legales y polticos (Tanenbaum, 2003). Se consideran mecanismos de proteccin a los mecanismos especficos del sistema operativo utilizados para resguardar la informacin de la computadora. La frontera entre seguridad y mecanismos de proteccin no est bien definida. 6.6 Clasificaciones de la seguridad. Dos de las ms importantes facetas de la seguridad son (Tanenbaum, 2003):

La prdida de datos. Los intrusos.

Algunas de las causas ms comunes de la prdida de datos son:


Actos y hechos diversos, como incendios, inundaciones, terremotos, guerras, revoluciones, roedores, etc. Errores de hardware o de software, como fallas en la CPU, discos o cintas ilegibles, errores de telecomunicacin, errores en los programas, etc. Errores humanos, por ej., entrada incorrecta de datos, mal montaje de cintas o discos, ejecucin incorrecta de programas, prdida de cintas o discos, etc.

La mayora de estas causas se pueden enfrentar con el mantenimiento de los respaldos (back-ups) adecuados; debera haber copias en un lugar alejado de los datos originales. Respecto del problema de los intrusos, se los puede clasificar como:

Pasivos: solo desean leer archivos que no estn autorizados a leer. Activos: desean hacer cambios no autorizados a los datos.

214

Para disear un sistema seguro contra intrusos:


Hay que tener en cuenta el tipo de intrusos contra los que se desea tener proteccin. Hay que ser consciente de que la cantidad de esfuerzo que se pone en la seguridad y la proteccin depende claramente de quin se piensa sea el enemigo.

Algunos tipos de intrusos son los siguientes:


Curiosidad casual de usuarios no tcnicos. Conocidos (tcnicamente capacitados) husmeando. Intentos deliberados por hacer dinero. Espionaje comercial o militar.

Otro aspecto del problema de la seguridad es la privaca:


Proteccin de las personas respecto del mal uso de la informacin en contra de uno mismo. Implica aspectos legales y morales.

6.7 Validacin y amenazas al sistema. La validacin tiene que ver con:


La verificacin y la auditora del sistema. La autentificacin de los usuarios.

Los sistemas sofisticados de autentificacin de usuarios resultan muy difciles de evitar por parte de los intrusos. Un problema existente es la posibilidad de que el sistema rechace a usuarios legtimos:

Un sistema de reconocimiento de voz podra rechazar a un usuario legtimo resfriado. Un sistema de huellas digitales podra rechazar a un usuario legtimo que tenga una cortadura o una quemadura.

Verificacin de Amenazas .Es una tcnica segn la cual los usuarios no pueden tener acceso directo a un recurso:

Solo lo tienen las rutinas del S.O. llamadas programas de vigilancia. El usuario solicita el acceso al S.O. El S O. niega o permite el acceso. El acceso lo hace un programa de vigilancia que luego pasa los resultados al programa del usuario.

215

Permite: o Detectar los intentos de penetracin en el momento en que se producen. o Advertir en consecuencia.

Amplificacin. La amplificacin se produce cuando:

Un programa de vigilancia necesita para cumplir su cometido mayores derechos de acceso de los que disponen los usuarios: o Ej.: se requiere calcular un promedio para lo cual es necesario leer un conjunto de registros a los que el usuario no tiene acceso individualmente.

Proteccin por Contrasea. Las clases de elementos de autentificacin para establecer la identidad de una persona son:

Algo sobre la persona: o Ej.: huellas digitales, registro de la voz, fotografa, firma, etc. Algo posedo por la persona: o Ej.: insignias especiales, tarjetas de identificacin, llaves, etc. Algo conocido por la persona: o Ej.: contraseas, combinaciones de cerraduras, etc.

El esquema ms comn de autentificacin es la proteccin por contrasea:

El usuario elige una palabra clave, la memoriza, la teclea para ser admitido en el sistema computarizado: o La clave no debe desplegarse en pantalla ni aparecer impresa.

La proteccin por contraseas tiene ciertas desventajas si no se utilizan criterios adecuados para:

Elegir las contraseas. Comunicarlas fehacientemente en caso de que sea necesario. Destruir las contraseas luego de que han sido comunicadas. Modificarlas luego de algn tiempo.

Los usuarios tienden a elegir contraseas fciles de recordar:


Nombre de un amigo, pariente, perro, gato, etc. Nmero de documento, domicilio, patente del auto, etc.

216

Estos datos podran ser conocidos por quien intente una violacin a la seguridad mediante intentos repetidos, por lo tanto debe limitarse la cantidad de intentos fallidos de acierto para el ingreso de la contrasea. La contrasea no debe ser muy corta para no facilitar la probabilidad de acierto. Tampoco debe ser muy larga para que no se dificulte su memorizacin, ya que los usuarios la anotaran por miedo a no recordarla y ello incrementara los riesgos de que trascienda. Auditora y Controles de Acceso. Auditora. La auditora suele realizarse a posteriori en sistemas manuales, es decir que se examinan las recientes transacciones de una organizacin para determinar si hubo ilcitos. La auditora en un sistema informtico puede implicar un procesamiento inmediato, pues se verifican las transacciones que se acaban de producir. Un registro de auditora es un registro permanente de acontecimientos importantes acaecidos en el sistema informtico:

Se realiza automticamente cada vez que ocurre tal evento. Se almacena en un rea altamente protegida del sistema. Es un mecanismo importante de deteccin.

El registro de auditora debe ser revisado cuidadosamente y con frecuencia:

Las revisiones deben hacerse: o Peridicamente: Se presta atencin regularmente a los problemas de seguridad. o Al azar: Se intenta atrapar a los intrusos desprevenidos.

Controles de Acceso. Lo fundamental para la seguridad interna es controlar el acceso a los datos almacenados. Los derechos de acceso definen qu acceso tienen varios sujetos o varios objetos. Los sujetos acceden a los objetos. Los objetos son entidades que contienen informacin. Los objetos pueden ser:

Concretos: o Ej.: discos, cintas, procesadores, almacenamiento, etc. Abstractos: o Ej.: estructuras de datos, de procesos, etc.

Los objetos estn protegidos contra los sujetos. Las autorizaciones a un sistema se conceden a los sujetos. Los sujetos pueden ser varios tipos de entidades:

Ej.: usuarios, procesos, programas, otras entidades, etc.

217

Los derechos de acceso ms comunes son:


Acceso de lectura. Acceso de escritura. Acceso de ejecucin.

Una forma de implementacin es mediante una matriz de control de acceso con:


Filas para los sujetos. Columnas para los objetos. Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.

Una matriz de control de acceso debe ser muy celosamente protegida por el S. O. Ataques Genricos a Sistemas Operativos. Los principales ataques genricos a los S. O. son los siguientes: 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.

218

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.

219

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.

Virus computacionales:

Constituyen una categora especial de ataque. Son un enorme problema para muchos usuarios. o Son fragmentos de programas que se aaden a programas legtimos con la intencin de infectar a otros. Un virus difiere de un gusano en lo siguiente: o Un virus est a cuestas de un programa existente. o Un gusano es un programa completo en s mismo. Los virus y los gusanos intentan diseminarse y pueden crear un dao severo. Generalmente se propagan a travs de copias ilegtimas de programas. Comnmente los virus se ejecutan e intentan reproducirse cada vez que se ejecuta el programa que los aloja. Frecuentemente los problemas con los virus son ms fciles de evitar que de curar: o Utilizar software original adquirido en comercios respetables. o No utilizar copias piratas. o Efectuar controles rigurosos y frecuentes con programas antivirus actualizados.

Una forma de probar la seguridad de un sistema es contratar un grupo de expertos en seguridad, conocido como el equipo tigre o equipo de penetracin, cuyo objetivo es intentar penetrar el sistema de seguridad para descubrir sus falencias y proponer soluciones. Otro aspecto importante de la seguridad consiste en no subestimar los problemas que puede causar el personal.

220

6.8 Cifrado. La criptografa es el arte o ciencia de cifrar y descifrar informacin mediante tcnicas especiales y se emplea frecuentemente para permitir un intercambio de mensajes que slo puedan ser ledos por personas a las que van dirigidos y que poseen los medios para descifrarlos. Con ms precisin, cuando se habla de esta rea de conocimiento como ciencia, se debera hablar de criptologa, que a su vez engloba tanto las tcnicas de cifrado, es decir, la criptografa propiamente dicha, como sus tcnicas complementarias, entre las cuales se incluye el criptoanlisis, que estudia mtodos empleados para romper textos cifrados con objeto de recuperar la informacin original en ausencia de las claves. En criptografa, la informacin original que debe protegerse se denomina texto en claro o texto plano. El cifrado es el proceso de convertir el texto plano en un galimatas ilegible, denominado texto cifrado o criptograma. Por lo general, la aplicacin concreta del algoritmo de cifrado (tambin llamado cifra) se basa en la existencia de una clave: informacin secreta que adapta el algoritmo de cifrado para cada uso distinto. Cifra es una antigua palabra arbiga para designar el nmero cero; en la Antigedad, cuando Europa empezaba a cambiar del sistema de numeracin romano al arbigo, se desconoca el cero, por lo que este resultaba misterioso, de ah probablemente que cifrado signifique misterioso. Las dos tcnicas ms sencillas de cifrado, en la criptografa clsica, son la sustitucin (que supone el cambio de significado de los elementos bsicos del mensaje -las letras, los dgitos o los smbolos-) y la transposicin (que supone una reordenacin de los mismos); la gran mayora de las cifras clsicas son combinaciones de estas dos operaciones bsicas. El descifrado es el proceso inverso que recupera el texto plano a partir del criptograma y la clave. El protocolo criptogrfico especifica los detalles de cmo se utilizan los algoritmos y las claves (y otras operaciones primitivas) para conseguir el efecto deseado. El conjunto de protocolos, algoritmos de cifrado, procesos de gestin de claves y actuaciones de los usuarios, es lo que constituyen en conjunto un criptosistema, que es con lo que el usuario final trabaja e interacta. Existen dos grandes grupos de cifras: los algoritmos que usan una nica clave tanto en el proceso de cifrado como en el de descifrado, y los que emplean una clave para cifrar mensajes y una clave distinta para descifrarlos. Los primeros se denominan cifras simtricas, de clave simtrica o de clave privada, y son la base de los algoritmos de cifrado clsico. Los segundos se denominan cifras asimtricas, de clave asimtrica o de clave pblica y forman el ncleo de las tcnicas de cifrado modernas.

221

En el lenguaje cotidiano, la palabra cdigo se usa de forma indistinta con cifra. En la criptografa, sin embargo, el trmino tiene un uso tcnico especializado: los cdigos son un mtodo de criptografa clsica que consiste en sustituir unidades textuales ms o menos largas o complejas, habitualmente palabras o frases, para ocultar el mensaje; por ejemplo, "cielo azul" podra significar atacar al amanecer. Por el contrario, las cifras clsicas normalmente sustituyen o reordenan los elementos bsicos del mensaje -letras, dgitos o smbolos-; en el ejemplo anterior, rcnm arcteeaal aaa sera un criptograma obtenido por transposicin. Cuando se usa una tcnica de cdigos, la informacin secreta suele recopilarse en un libro de cdigos. Con frecuencia los procesos de cifrado y descifrado se encuentran en la literatura como encriptado y desencriptado, aunque ambos son neologismos errneos anglicismos de los trminos ingleses encrypt y decrypt todava sin reconocimiento acadmico. Hay quien hace distincin entre cifrado/descifrado y encriptado/desencriptado segn estn hablando de criptografa simtrica o asimtrica, pero la realidad es que la mayora de los expertos hispanohablantes prefieren evitar ambos neologismos hasta el punto de que el uso de los mismos llega incluso a discernir a los aficionados y novatos en la materia de aquellos que han adquirido ms experiencia y profundidad en la misma. Ideolgicamente cifrar equivale a escribir y descifrar a leer lo escrito. Historia de la criptografa. La historia de la criptografa es larga y abunda en ancdotas. Ya las primeras civilizaciones desarrollaron tcnicas para enviar mensajes durante las campaas militares, de forma que si el mensajero era interceptado la informacin que portaba no corriera el peligro de caer en manos del enemigo. Posiblemente, el primer criptosistema que se conoce fuera documentado por el historiador griego Polibio: un sistema de sustitucin basado en la posicin de las letras en una tabla. Tambin los romanos utilizaron sistemas de sustitucin, siendo el mtodo actualmente conocido como Csar, porque supuestamente Julio Csar lo emple en sus campaas, uno de los ms conocidos en la literatura (segn algunos autores, en realidad Julio Csar no usaba este sistema de sustitucin, pero la atribucin tiene tanto arraigo que el nombre de este mtodo de sustitucin ha quedado para los anales de la historia). Otro de los mtodos criptogrficos utilizados por los griegos fue la esctala espartana, un mtodo de trasposicin basado en un cilindro que serva como clave en el que se enrollaba el mensaje para poder cifrar y descifrar. En 1465 el italiano Leon Battista Alberti invent un nuevo sistema de sustitucin polialfabtica que supuso un gran avance de la poca. Otro de los criptgrafos ms importantes del siglo XVI fue el francs Blaise de Vigenre que escribi un importante tratado sobre "la escritura secreta" y que dise una cifra que ha llegado a nuestros das asociada a su nombre. A Selenus se le debe la obra criptogrfica "Cryptomenytices et Cryptographiae" (Luneburgo, 1624). Durante

222

los siglos XVII, XVIII y XIX, el inters de los monarcas por la criptografa fue notable. Las tropas de Felipe II emplearon durante mucho tiempo una cifra con un alfabeto de ms de 500 smbolos que los matemticos del rey consideraban inexpugnable. Cuando el matemtico francs Franois Vite consigui criptoanalizar aquel sistema para el rey de Francia, a la sazn Enrique IV, el conocimiento mostrado por el rey francs impuls una queja de la corte espaola ante del papa Po V acusando a Enrique IV de utilizar magia negra para vencer a sus ejrcitos. Por su parte, la reina Mara Estuardo, reina de Escocia, fue ejecutada por su prima Isabel I de Inglaterra al descubrirse un complot de aquella tras un criptoanlisis exitoso por parte de los matemticos de Isabel. Durante la Primera Guerra Mundial, los Alemanes usaron el cifrado ADFGVX. Este mtodo de cifrado es similar a la del tablero de ajedrez Polibio. Consista en una matriz de 6 x 6 utilizado para sustituir cualquier letra del alfabeto y los nmeros 0 a 9 con un par de letras que consiste de A, D, F, G, V, o X. Desde el siglo XIX y hasta la Segunda Guerra Mundial, las figuras ms importantes fueron la del holands Auguste Kerckhoffs y la del prusiano Friedrich Kasiski. Pero es en el siglo XX cuando la historia de la criptografa vuelve a experimentar importantes avances. En especial durante las dos contiendas blicas que marcaron al siglo: la Gran Guerra y la Segunda Guerra Mundial. A partir del siglo XX, la criptografa usa una nueva herramienta que permitir conseguir mejores y ms seguras cifras: las mquinas de clculo. La ms conocida de las mquinas de cifrado posiblemente sea la mquina alemana Enigma: una mquina de rotores que automatizaba considerablemente los clculos que era necesario realizar para las operaciones de cifrado y descifrado de mensajes. Para vencer al ingenio alemn, fue necesario el concurso de los mejores matemticos de la poca y un gran esfuerzo computacional. No en vano, los mayores avances tanto en el campo de la criptografa como en el del criptoanlisis no empezaron hasta entonces. Tras la conclusin de la Segunda Guerra Mundial, la criptografa tiene un desarrollo terico importante, siendo Claude Shannon y sus investigaciones sobre teora de la informacin esenciales hitos en dicho desarrollo. Adems, los avances en computacin automtica suponen tanto una amenaza para los sistemas existentes como una oportunidad para el desarrollo de nuevos sistemas. A mediados de los aos 70, el Departamento de Normas y Estndares norteamericano publica el primer diseo lgico de un cifrador que estara llamado a ser el principal sistema criptogrfico de finales de siglo: el Estndar de Cifrado de Datos o DES. En esas mismas fechas ya se empezaba a gestar lo que sera la, hasta ahora, ltima revolucin de la criptografa terica y prctica: los sistemas asimtricos. Estos sistemas supusieron un salto cualitativo importante, ya que permitieron introducir la criptografa en otros campos que hoy da son esenciales, como el de la firma digital.

223

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

224

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.

Penetracin al Sistema Operativo. La penetracin definitiva puede consistir en cambiar el bit de estado de la mquina del estado problema al estado supervisor; el intruso podr as ejecutar instrucciones privilegiadas para obtener acceso a los recursos protegidos por el S. O..

225

Los estudios de penetracin estn diseados para:


Determinar si las defensas de un sistema contra ataques de usuarios no privilegiados son adecuadas. Descubrir deficiencias de diseo para corregirlas.

El control de entrada / salida es un rea favorita para intentar la penetracin a un sistema, ya que los canales de entrada / salida tienen acceso al almacenamiento primario y por consiguiente pueden modificar informacin importante. Una de las metas de las pruebas de penetracin consiste en estimar el factor de trabajo de penetracin:

Indicacin de cunto esfuerzo y recursos son necesarios para conseguir un acceso no autorizado a los recursos del sistema: o Debera ser tan grande que resulte disuasivo.

Principales Fallos Genricos Funcionales de los Sistemas. Los principales fallos genricos funcionales de los sistemas son los siguientes: Autentificacin:

Los usuarios no pueden determinar si el hardware y el software con que funcionan son los que deben ser. Un intruso podra reemplazar un programa sin conocimiento del usuario. Un usuario puede inadvertidamente teclear una contrasea en un programa de entrada falso.

Cifrado:

No se almacena cifrada en la lista maestra de contraseas.

Implementacin:

Implementacin improcedente de un buen diseo de seguridad.

Confianza implcita:

Una rutina supone que otra est funcionando correctamente cuando, de hecho, debera examinar los parmetros suministrados por la otra rutina.

Compartimiento implcito:

El S. O. deposita inadvertidamente informacin importante del sistema en un espacio de direcciones del usuario.

226

Comunicacin entre procesos:

Usos inadecuados de los mecanismos de send / receive que pueden ser aprovechados por los intrusos.

Verificacin de la legalidad:

Validacin insuficiente de los parmetros del usuario.

Desconexin de lnea:

Ante una desconexin de lnea el S. O. debera: o Dar de baja al usuario (o los usuarios) de la lnea. o Colocarlos en un estado tal que requieran la re - autorizacin para obtener nuevamente el control.

Descuido del operador:

Un intruso podra engaar a un operador y hacer que le habilite determinados recursos.

Paso de parmetros por referencia en funcin de su valor:


Es ms seguro pasar los parmetros directamente en registros que tener los registros apuntando a las reas que contienen los parmetros. El paso por referencia puede permitir que los parmetros, estando an en el rea del usuario, puedan ser modificados antes de ser usados por el sistema.

Contraseas:

No deben ser fcilmente deducibles u obtenibles mediante ensayos repetidos.

Entrampamiento al intruso:

Los S. O. deben tener mecanismos de entrampamiento para atraer al intruso inexperto.

Privilegio:

Cuando hay demasiados programas con demasiados privilegios se viola el principio del menor privilegio.

Confinamiento del programa:

227

Un programa prestado de otro usuario puede actuar como un Caballo de Troya.

Prohibiciones:

Se advierte a los usuarios que no utilicen ciertas opciones porque los resultados podran ser indeterminados, pero no se bloquea su uso, con lo que puede robar o alterar datos.

Residuos:

Un intruso podra encontrar una lista de contraseas con solo buscar en lugares tales como una papelera: o Del sistema o fsica. o La informacin delicada debe ser sobrescrita o destruida antes de liberar o descartar el medio que ocupa.

Blindaje:

Los intrusos pueden conectarse a una lnea de transmisin sin hacer contacto fsico: o Utilizan el campo inducido por la circulacin de corriente en un cable. o Se previene con un adecuado blindaje elctrico.

Valores de umbral:

Si no se dispone de valores umbral, no habr: o Lmites al nmero de intentos fallidos de ingreso. o Bloqueos a nuevos intentos. o Comunicaciones al supervisor o administrador del sistema.

228

Resumen Se consideraran mecanismos de proteccin a los mecanismos especficos del sistema operativo utilizados para resguardar la informacin de la computadora. Se entiende por seguridad a los problemas generales relativos a la garanta de que los archivos no sean ledos o modificados por personal no autorizado; esto incluye aspectos tcnicos, de administracin, legales y polticos. La frontera entre seguridad y mecanismos de proteccin no est bien definida. 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. Un sistema computacional es una coleccin de procesos y objetos. Los objetos involucran tanto objetos hardware (como CPU, segmentos de memoria, impresoras, etc.) y objetos software (como archivos, programas, semforos, etc.). Cada objeto tiene un nombre nico que lo diferenca de los dems objetos. Para facilitar este esquema se introduce el concepto de dominio de proteccin. Un proceso opera dentro de un dominio de proteccin, el cual especifica los recursos que el proceso puede accesar. Cada dominio define un conjunto de objetos y los tipos de operaciones que pueden ser realizadas sobre cada objeto. Un modelo de proteccin puede ser visto abstractamente como una matriz, llamada matriz de derecho. Dos de las ms importantes facetas de la seguridad son: la prdida de datos y los intrusos. La validacin tiene que ver con: La verificacin y la auditora del sistema y la autentificacin de los usuarios. Problemas 1. Explique en que consiste la proteccin y la seguridad en los sistemas operativos. 2. Mencione las polticas de proteccin que regulan el uso de los sistemas operativos. 3. Algunos sistemas operativos exigen que las particiones de discos comiencen al principio de una pista. Como facilita esto la labor de un virus de sector de arranque?

229

4. Como podra un virus parasito a) asegurarse de ser ejecutado antes de su programa anfitrin, y b) devolver el control a su anfitrin despus de realizar sus actividades? 5. Cuando se elimina un archivo, sus bloques por lo general se devuelven a la lista libre, pero no se borran. Cree que seria recomendable que el sistema operativo borre todos los bloques antes de liberarlos? Considere factores tanto de seguridad como de desempeo de respuesta, y explique el efecto de cada uno. 6. Cul es la diferencia entre un virus y un gusano? Como se reproduce cada uno? 7. El ataque por caballo de Troya puede funcionar como un sistema protegido por capacidades? 8. Hacer que la computadora no repita la contrasea es mas seguro que hacer que exhiba un asterisco por cada carcter tecleado, pues esto ltimo revela la longitud a cualquier persona que pueda ver la pantalla. Suponiendo que las contraseas solo contienen letras maysculas y minsculas y dgitos, y que deben tener por lo menos cinco y cuando mucho ocho caracteres. Qu tan seguro es no exhibir nada? 9. La criptografa de clave secreta es ms eficiente que la de clave pblica, pero requiere que el transmisor y el receptor se pongan previamente de acuerdo a la clave. Supongamos que el transmisor y el receptor no se conocen en persona, pero que existe un tercero de confianza que comparte una clave secreta con el transmisor y tambin comparte una clave secreta (distinta) son el receptor. Cmo pueden establecer el transmisor y el receptor una nueva clave secreta compartida en estas circunstancias? 10. Es comn ver las sig. Instrucciones para recuperarse de un ataque de virus: Arranque el sistema infectado. Respalde todos los archivos en un medio externo. Ejecute fdisk para formatear el disco. Reinstale el sistema operativo desde el CD-ROM original Vuelva a cargar los archivos Mencione dos errores graves en estas instrucciones.

230

Bibliografa Carretero, P. J. (2007). Sistemas Operativos: Una visin aplicada. Mc. Graw-Hill. Deitel, H. M. (2002). Introduccion a los Sistemas Operativos. Addisson-Wesley Iberoamericana. Deitel, H. M. (1993). Sistemas Operativos. Addisson-Wesley Iberoamericana. Norton, P. (2000). Introduccin a la computacin. McGraw-Hill Silberschatz, A. P. (1994). Sistemas Operativos. Conceptos fundamentales. Addison Wesley Iberoamericana. Stallings, W. (2006). Sistemas Operativos. Quinta Edicin. Prentice Hall. Tanenbaum, A. S. (2003). Sistemas Operativos Modernos. Segunda Edicin. Prentice Hall. Tanenbaum, A. S. (1998). Sistemas operativos. Diseo e implementacin. Segunda Edicin. Prentice-Hall. exa.unne.edu.ar. (2001, 17 de diciembre). Extrado el 13 de Octubre de 2009 desde http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos

231

You might also like