You are on page 1of 139

SiStemaS OperativOS CentralizadOS y diStribuidOS

SiStemaS OperativOS CentralizadOS y diStribuidOS

M.C. Beatriz Beltrn Martnez M.C. rafael de la rosa flores M.C. Hilda Castillo zaCatelCo M.C. letiCia Mendoza alonso dra. darnes Vilario ayala

BeneMrita UniVersidad aUtnoMa de PUeBla

direccin General de Fomento editorial

BeneMrita UniVersidad aUtnoMa de PUeBla

enrique agera ibez Rector Jos ramn egubar Cuenca Secretario General lilia Cedillo ramrez Vicerrector de Extensin y Difusin de la Cultura Carlos Contreras Cruz Director Editorial mtro. Jos Jaime vzquez lpez Vicerrector de Docencia dr. pedro Hugo Hernndez tejeda Vicerrector de Investigacin y Estudios de posgrado dr. mario rossainz lpez director de la Facultad de Ciencias de la Computacin

primera edicin, 2009 iSbn: benemrita universidad autnoma de puebla direccin General de Fomento editorial 2 norte 1404 telfono y fax 2 46 85 59 puebla, puebla. impreso y hecho en mxico Printed and made in Mexico

prlOGO

la misin del profesor en la actividad acadmica es mejorar el proceso de enseanzaaprendizaje, contextualizar y vincular los contenidos tericos de la materia con la realidad y permitirle al alumno usar correctamente las herramientas para su desarrollo profesional que le permitirn alcanzar satisfaccin profesional, personal y social. actualmente se cuenta con una gran informacin y material didctico de todo tipo para las ciencias computacionales, sin embargo se observa que el alumno por lo mismo, no precisa elementos bsicos y conceptos fundamentales en diferentes materias que conforman la currcula de la carrera de Ciencias de la Computacin. es por ello que se presenta en este texto, un material til y prctico que se podr consultar en cualquier momento y que no necesariamente ser un auxiliar para la materia de Sistemas operativos, ya que su diseo, permite vincularlo con otras materias y usarlo como auxiliar en relacin al tema propuesto. el libro contiene cinco captulos que a su vez se dividen en subtemas que complementan de manera general el contenido. en los dos primeros captulos se muestra al estudiante los conceptos fundamentales de un Sistema operativo, tanto centralizado, como distribuido; en el siguiente captulo se aborda la gestin de procesos e hilos estudiando la teora y los algoritmos utilizados en la comunicacin y sincronizacin entre procesos en ambientes centralizados y distribuidos. el cuarto captulo trata sobre la gestin entre memoria y el ltimo el presenta una importante herramienta para la programacin de lo estudiado en los cuatro captulos anteriores: el uso de sockets en Java. a lo largo de los cinco captulos encontrarn ejemplos, graficas y tablas que auxiliarn y fortalecern la lectura del mismo, brindando de esta forma una fcil y motivante lectura para el entendimiento y aplicacin del material proporcionado.

i intrOduCCin a lOS SiStemaS OperativOS CentralizadOS y diStribuidOS

1.1. CoMPonentes BsiCos de la arqUiteCtUra de Von neUMan la idea central del modelo de von neuman consiste en almacenar las instrucciones del programa de una computadora en su propia memoria, logrando as que la mquina siga los pasos definidos por su programa almacenado. para llevar a cabo la funcin de procesamiento, una computadora con arquitectura von Neuman est compuesta por cuatro componentes bsicos:
1. 2. memoria principal. Se construye con memoria raM y roM. en ella residen los datos a procesar, el programa mquina a ejecutar y los resultados. la unidad aritmtica lgica. permite realizar operaciones aritmticas y lgicas sobre operandos que residen en los registros o en memoria principal, y los resultados son almacenados en registros o en memoria principal. la unidad de control. la funcin principal de esta unidad es dirigir la secuencia de pasos de modo que la computadora lleve a cabo un ciclo completo de ejecucin de una instruccin, y hacer esto con todas las instrucciones de que conste el programa. los pasos para ejecutar una instruccin cualquiera son los siguientes: leer de memoria las instrucciones de mquina que forman el programa. interpretar cada instruccin leda ejecutar cada instruccin. prepararse para leer la siguiente casilla de memoria y regresarse al paso i.

3.

4. la unidad de entrada/salida. Se encarga de hacer la transferencia de informacin entre la memoria principal o los registros y los perifricos. Se denomina unidad central de procesamiento (UCP, de aqu en adelante, aunque tambin es comn referirse a ella como CPU, por sus siglas en ingls: Central Processing Unit) contiene a la unidad aritmtico lgica y a la unidad de control. la funcin de la UCP es clara: ejecutar instrucciones. pero para ello necesariamente deben cumplirse estas condiciones:
Que las instrucciones sean entendibles por la UCP Que estn almacenadas en la memoria

1.2 registros BsiCos del ProCesador un procesador incluye un conjunto de registros que proporcionan un nivel de memoria, que es ms rpido y pequeo que la memoria principal. en los registros se almacenan temporalmente valores durante la ejecucin de un programa. en la unidad de control se dispone generalmente de los registros visibles de usuario y registros de control y de estado. Registros visibles de usuario estos registros permiten al programador de lenguaje de mquina o ensamblador minimizar las referencias a la memoria principal, optimizando el uso de estos registros. Con lenguajes de alto nivel, un compilador que optimice cdigo intentar hacer una seleccin inteligente de qu variables asignar a registros y cules a ubicaciones de la memoria principal. las clases de registro que normalmente estn disponibles son:
Registros de datos: pueden ser asignados por el programador a diversas funciones, en algunos casos son de propsito general y pueden ser empleados por cualquier instruccin de mquina que lleve a cabo operaciones sobre los datos. Registros de direccin: contienen direcciones de la memoria principal de datos e instrucciones o contener una parte de la direccin, que se utiliza en el clculo de la direccin completa o efectiva, ejemplos de estos registros son:

- Registro de ndice: el direccionamiento indexado es un modo comn de direccionamiento, que implica sumar un ndice a un valor base, para obtener la direccin efectiva. 8

- Apuntador al segmento: en segmentacin, la memoria se divide en segmentos, una referencia a la memoria consta de una referencia a un segmento particular y un desplazamiento dentro del segmento.

en algunas mquinas, una llamada a un procedimiento o subrutina provocar que los registros visibles de usuario se salven automticamente, para luego restaurarlos al retornar, esto permite que cada procedimiento pueda usar los registros de forma independiente. en otras mquinas, es responsabilidad del programador salvar los contenidos de los registros del usuario visibles que sena relevantes antes de hacer la llamada a un procedimiento, incluyendo instrucciones en el programa con tal propsito. Registros de control y de estado: son utilizados por el procesador para el control de las operaciones y rutinas privilegiadas del sistema operativo para controlar la ejecucin de los programas, algunos de estos registros se muestran a continuacin:
Contador de Programa (PC, Program Counter): Contiene la direccin de la instruccin a ser leda. Registro de Instruccin (ir, Instruction Register): posee la ltima instruccin leda. Registro de Banderas: indican el estado actual de la mquina y el resultado del procediendo.

1.3 ejeCUCin de instrUCCiones la unidad de control de la computadora es la que establece el funcionamiento del mismo. este funcionamiento cuenta tres pasos:
1. lectura de la instruccin apuntada por el contador de programa 2. incremento del contador de programa 3. ejecucin de la instruccin

esta secuencia tiene dos propiedades fundamentale: la de que es lineal y la otra que forma un bucle infinito (realiza esta secuencia ininterrumpidamente excepto computadoras con una instruccin Halt. existen mecanismos que permiten alterar esta ejecucin lineal, los mecanismos bsicos de ruptura de secuencia son los siguientes:
las instrucciones mquina de salto o bifurcacin las interrupciones internas o externas la instruccin de mquina traP 9

1.4 interrUPCiones desde el punto de vista del programa de usuario, una interrupcin es solamente eso, una interrupcin de la secuencia normal de ejecucin. Cuando el tratamiento de la interrupcin se termina, la ejecucin contina, por lo que el programa de usuario no tiene que disponer de ningn cdigo especial para dar cabida a las interrupciones; el procesador y el sistema operativo son los responsables de suspender el programa de usuario y reanudarlo despus en el mismo punto. para dar cabida a una interrupcin, se aade un ciclo de interrupcin al ciclo de instruccin. en el ciclo de interrupcin, el procesador comprueba si ha ocurrido alguna interrupcin, indicado por la presencia de una seal de interrupcin. Si no hay interrupciones pendientes, el procesador contina con el ciclo de lectura y trae la prxima instruccin del programa en curso. Si hay una interrupcin pendiente, el procesador suspende la ejecucin del programa en curso y ejecuta una rutina de tratamiento de la interrupcin. esta rutina de software de base es previamente escrita por un programador de sistemas, y reside en un rea preespecificada de la memoria central, realizando cuantas acciones sean necesarias. 1.5 taxonoMia de flynn la taxonoma de Flynn clasifica a las computadoras por su arquitectura y sus sistemas operativos; esto de acuerdo a la capacidad de un sistema para procesar uno o ms flujos simultneos de datos (data stream) e instrucciones (instruction stream).
Single Instruction, Single Data Stream: (una instruccin, un dato) Computador secuencial que no explota el paralelismo en las instrucciones ni en flujos de datos. ejemplos de arquitecturas sisd son las mquinas monoprocesador tradicionales como el PC o los antiguos mainframe. siMd Single Instruction, Multiple Data Stream: (una instruccin, mltiples datos) - un computador que explota varios flujos de datos dentro de un nico flujo de instrucciones para realizar operaciones que pueden ser paralelizadas de manera natural. por ejemplo, un procesador vectorial. MisM Multiple Instruction, Single Data Stream: (mltiples instrucciones, un dato) - poco comn debido al hecho de que la efectividad de los mltiples flujos de instrucciones suele precisar de mltiples flujos de datos. Sin embargo, este tipo se usa en situaciones de paralelismo redundante, como por ejemplo en navegacin area, donde se necesitan
sisd

10

varios sistemas de respaldo en caso de que uno falle. tambin se han propuesto algunas arquitecturas tericas que hacen uso de Misd, pero ninguna lleg a producirse en masa. MiMd Multiple Instruction, Multiple Data Stream: (mltiples instrucciones, mltiples datos)varios procesadores autnomos que ejecutan simultneamente instrucciones diferentes sobre datos diferentes. los sistemas distribuidos suelen clasificarse como arquitecturas MiMd; bien sea explotando un nico espacio compartido de memoria, o uno distribuido.

1.6 arqUiteCtUra de MUltiProCesadores este tipo de arquitecturas cuenta con dos o ms microprocesadores (CPUs), gracias a esto, el multiprocesador puede ejecutar simultneamente varios hilos pertenecientes a un mismo proceso o bien a procesos diferentes. las arquitecturas con multiprocesador presentan problemas de diseo que no se en-cuentran en arquitecturas monoprocesador. estos problemas derivan del hecho de que dos programas pueden ejecutarse simultneamente y, potencialmente, pueden interferirse entre s. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. existen dos arquitecturas que resuelven estos problemas:
la arquitectura nUMa (Non-Uniform Memory Acces), donde cada procesador tiene acceso y control exclusivo a una parte de la memoria. la arquitectura sMP (Symmetric Multi Processing), donde todos los procesadores comparten toda la memoria.

esta ltima debe lidiar con el problema de la coherencia de cach. Cada microprocesador cuenta con su propia memoria cach local. de manera que cuando un microprocesador escribe en una direccin de memoria, lo hace nicamente sobre su copia local en cach. Si otro microprocesador tiene almacenada la misma direccin de memoria en su cach, resultar que trabaja con una copia obsoleta del dato almacenado. para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseado para ello. la mayora de los sistemas operativos actuales poseen esta capacidad. 1.7 definiCin de sisteMas oPeratiVos el sistema operativo es el programa fundamental de todos los programas del sistema, protege y libera a los programadores de la complejidad del hardware, colocndose un nivel de software por sobre el hardware para controlar todas las partes del sistema y presentar al usuario una interfaz o mquina virtual. puede considerarse que un sistema operativo tiene tres objetivos:
11

Comodidad: un sistema operativo hace que un computador sea ms cmodo de utilizar. Eficiencia: un sistema operativo permite que los recursos de un sistema informtico se aprovechen de una manera ms eficiente. Capacidad de evolucin: un sistema operativo debe construirse de modo que permita el desarrollo efectivo, la verificacin y la introduccin de nuevas funciones en el sistema y, a la vez, no interferir en los servicios que brinda.

el Sistema Operativo desarrolla las siguientes tareas:


administracin de trabajos administracin de datos administracin de dispositivos (los controladores son proporcionados por los fabricantes) Seguridad (respaldo y recuperacin)

ejerCiCios 1. para que una instruccin pueda ejecutarse debe:


a) estar almacenada en la memoria y los datos deben estar almacenados exclusivamente en los registros del CPU. b) Ser entendible para el procesador; los datos pueden estar tanto en memoria principal como en secundaria. c) estar almacenada en la memoria; los datos deben estar almacenados en los registros del CPU y la memoria principal. d) Ser entendible para el procesador; los datos deben estar almacenados en memoria principal.

2. Son componentes del modelo von neuman:


a) b) c) d) memoria, dispositivos de e/s, CPU memoria, dispositivos de e/s, unidad de Control memoria, unidad de Control, unidad aritmtica lgica dispositivos de e/s, unidad de Control, CPU

3. Suponga que tenemos un conjunto de instrucciones que realizan un ciclo (loop), el cual depende de un contador. en el ciclo se suman datos que se encuentran en cierta regin de memoria, el resultado es almacenado en el registro especificado para esta accin. Qu registros estn involucrados en estas operaciones?

12

a) b) c) d)

los registros de propsito general ax, Cx, dx, ss. los registros de propsito general ax, Bx, Cx, dx. los registros segmentados ds y Cs y los apuntadores si, di los registros apuntadores si, BP y los registros de propsito general ds, ax, Cx

4. para que una instruccin se ejecute es necesario que el procesador obtenga los datos necesarios para esta instruccin. el medio que el procesador utiliza para obtener los datos es:
a) el bus de datos b) un controlador c) el segmento de datos d) el stack

5. las PC que tienen solamente procesador estn clasificadas dentro de la taxonoma de Flynn como:
a) sisd b) siMd c) MiMd d) Misd

6. los sistemas distribuidos estn clasificados dentro de la taxonoma de Flynn como:


a) sisd b) Misd c) siMd d) MiMd

. Cuando una rutina invoca a otra rutina la direccin de retorno es almacenada en:
a. b. c. d. el registro segmentado ss el registro apuntador iP el segmento ss el segmento Cs

8. los multiprocesadores CoMa tienen como caracterstica principal:


a) b) c) d) utilizar memoria local principalmente para la ejecucin del programa tener un solo espacio de direcciones lgico compuesto por las memorias cach tener un solo espacio de direcciones lgico compuesto por las memorias locales utilizar su memoria global principalmente

9. Son tres conceptos que definen bsicamente a un sistema operativo:


a) Seales, procesos, memoria b) Sistema operativo en Red, administracin de la memoria, administrador de dispositivos c) planificador de procesos, sistema de archivos, administracin de la memoria d) manejo de dispositivos de e/s, despachador de procesos

13

10. nUMa es un tipo de ____________ clasificado en la taxonoma de Flynn como _____________


a) b) c) d) procesador, MiMd multiprocesador, siMd procesador, sisd multiprocesador, MiMd

referenCias
tanenbaum, andrew S. Sistemas Operativos Modernos. Segunda edicin. prentice Hall. pearson education. mxico, 2003. Carretero prez, Jess; de miguel anasagasti, pedro; Garca Carballeira, Fliz; prez Costoya, Fernando. Sistemas Operativos. Una visin Aplicada. mc Graw Hill. espaa,2001. William Stallings . Sistemas Operativos, prentice may, 4ta edicin. prentice may. Flynn, ida m.; mciver mcHoes, ann. Sistemas Operativos. tercera edicin. thomson learning. mxico, 2001.

14

ii COnCeptOS de SiStemaS OperativOS

2.1 eVolUCin de los sisteMas oPeratiVos la evolucin de los so se relaciona histricamente con la arquitectura de las computadoras. primera computadora digital, ingls matemtico Charles babbage (192-181). Primera generacin de computadoras (1945-1955): Bulbos y conexiones
a mediados de los 40 Howard, aiken, John von neumann, J. presper, William mauchley y Konrad zuse lograron construir mquinas de clculo mediante bulbos. las computadoras eran enormes, lentas y contenan miles de bulbos. un solo grupo de personas diseaba, construa, programaba, operaba y daba mantenimiento. el lenguaje utilizado era el lenguaje de mquina (conexiones). a principios de los 50 se introdujeron las tarjetas perforadas (lector de tarjetas).

Segunda generacin (1955-1965): Transistores y sistemas de procesamiento por lotes


a mediados de los 50s se introduce el transistor, esto dio origen a computadoras ms confiables, adems de que se podan fabricar varias y venderlas. Hay una clara separacin entre los diseadores, operadores, programadores, etc. las computadoras estaban aisladas en cuartos de cmputo con aire acondicionado y un equipo de operadores profesionales a cargo para su ejecucin. utilizaban tarjetas perforadas. los lenguajes utilizados era: fortran, ensaMBlador y jCl (lenguaje de Control de trabajo). Se desperdiciaba tiempo de cmputo. eran muy caras, y slo las podan adquirir grandes corporaciones y universidades. 15

para agilizar el proceso se usa un sistema de procesamiento por lotes (varios trabajos .bat). Slo se realizaban clculos cientficos y de ingeniera en ellos. los so comunes eran: fMs (Fortran Monitor System), iBsys que era el so de iBM para 094. Se crean dos estados del so: superusuario y usuario. aparecen las interrupciones y el gestor de interrupciones (int. de hw y de sw), la MMU, y ms perifricos y ms adelante los buffer (memorias intermedias) y con ello el buffering.

Cinta de entrada unidad de cinta Cinta de sistema

Cinta de salida

Sistema de procesamiento por lotes

Tercera generacin (1965-1980): Circuitos integrados y multiprogramacin


a principios de la dcada de los 60 las computadoras eran caras y haba dos tipos de computadoras: cientficas y comerciales, las cuales eran incompatibles entre s. iBM introdujo el sistema/360 que fue la primera lnea de computadoras que utiliz los circuitos integrados a pequea escala, a partir de esta se fabrican computadoras compatibles. Cada tipo de computadora tena su propio sistema operativo. Se intent un so compatible que result enorme y complejo, el os/360 (Fred Brooks). debido a la prdida de tiempo en la e/s se particiona la memoria en varias partes, as cada parte puede realizar un trabajo distinto, multiprogramacin. Cuando una particin quedaba vacan el so poda leer cargar un nuevo trabajo del disco en la particin desocupada y ejecutarla, a esta tcnica se le llama spooling (Simultaneous Peripheral Operation On Line [operacin simultnea y en lnea de perifricos]). la diferencia entre el buffering y el spooling es que en el primero almacenamos la e/s de un trabajo con su proceso, mientras que en el segundo almacenamos (solapamos) la e/s de varios procesos con otro proceso distinto. en el procesamiento por lotes el programador perda muchsimo tiempo en compilar y sobre todo cuando se equivocaba. 16

aparece la escalabilidad (ampliar en un momento determinado las funciones del sistema). Cada usuario tena una terminal en lnea, nace el tiempo compartido (timesharing) primer sistema de tiempo compartido: Ctss (1962) despus: MUltiCs el cual no fue muy utilizado pero influy en los sistemas subsecuentes Hay un crecimiento de las minicomputadoras, por ejemplo la deC PdP-1 en 1961 Unix hace su aparicin Ken thompson lo crea en una PdP-7 aparecen los sistemas de tiempo real

Cuarta generacin (1980-1990): Computadoras personales


(Large Scale Integration). nacen los so de red y los so distribuidos. aparecen los problemas de criptografa que intenta asegurar la privacidad, la integridad del mensaje y la autentificacin del mismo. nace Msdos que utiliza un CPU 8088 de intel y sus sucesores 80286, 80386 ... Unix utiliza un procesador risC. Se desarrolla el concepto de mquina virtual que simula otras mquinas en una plataforma concreta (emuladores). esto alcanza su mayor desarrollo con la plataforma jaVa que es un lenguaje y una mquina virtual. uso de sistemas de gestin de bases de datos. so de red: en este tipo de sistema los usuarios estn conscientes de la existencia de varias computadoras y pueden realizar operaciones con ellas. so distribuidos: es aquel que aparece ante sus usuarios como un so tradicional de un solo procesador, aun cuando est compuesto de varios procesadores.
lsi

2.2. fUnCiones de los sisteMas oPeratiVos una de las principales funciones del sistema operativo es ocultar toda la complejidad y proporcionar al programador un conjunto de instrucciones ms conveniente de instrucciones con el cual trabajar. el sistema operativo se ejecuta en:
Modo central o modo de supervicin, el cual esta protegido, el usuario no puede escribir su propio controlador de interrupciones de disco por ejemplo (el Hw no lo permite) Modo usuario, dentro de este modo se ejecutan los compiladores y los editores, si el usuario quiere escribir su propio editor lo puede hacer.

1

las principales caractersticas de los s.o. son:


definir la interfaz del usuario Compartir el hardware entre usuarios permitir a los usuarios compartir los datos entre ellos planificar recursos entre usuarios Facilitar la entrada/salida recuperarse de los errores

los principales recursos administrados por los s.o. son: procesadores almacenamiento dispositivos de e/s datos

los s.o. son una interfaz con:


Operadores programadores de aplicaciones programadores de sistemas (administradores del s.o.) programas Hardware usuarios

el Sistema Operativo debe presentar al usuario el equivalente de una mquina extendida o mquina virtual que sea mas fcil de programar que el hardware subyacente.
definir la interfaz del usuario Compartir el hardware entre los usuarios permitir a los usuarios compartir datos planificar recursos entre usuarios Facilitar la entrada y salida de informacin recuperacin de errores

18

2.3 llaMadas al sisteMa los programas de usuario para solicitar servicios al Sistema Operativo utilizan las llamadas al sistema, las cuales son un conjunto de primitivas que brinda el Sistema Operativo y que sirven para comunicarse con el hw en forma entendible. a cada llamada le corresponde un procedimiento:
pone los parmetros de la llamada en un lugar especfico para luego ejecutar una instruccin tipo trap de llamada a procedimiento protegido para iniciar el s.o. luego de trap el s.o. recupera el control, examina los parmetros y si son vlidos ejecuta el trabajo solicitado. luego de terminar, el s.o. coloca un cdigo de estado en un registro indicando si tuvo xito o fracaso y ejecuta una instruccin del tipo return from trap para regresar el control al procedimiento. el procedimiento regresa al programa llamador con un cdigo de estado como un valor de funcin; dentro de los parmetros pueden regresar valores adicionales.

2.4 estrUCtUra de Un sisteMa oPeratiVo 2.4.1 Microncleo un microncleo (microkernel) es un pequeo ncleo del sistema operativo que proporciona las bases para ampliaciones modulares. el microncleo est rodeado por una serie de subsistemas compactos de forma que facilitan la tarea de implementar una gran variedad de plataformas. 2.4.2 Ncleo monoltico los primeros sistemas operativos desarrollados a mediados de los cincuentas, fueron diseados sin demasiada preocupacin por la estructura. no haba gran experiencia en sistemas de software realmente grandes, por lo que no se tomaron en cuenta los problemas provocados por la interaccin y dependencia mutua. esto fue insostenible cuando el Sistema Operativo alcanz proporciones considerables (hablamos de alrededor de un milln de lneas de cdigo), este tipo de Sistemas Operativos estaban constituidos por un ncleo monoltico.
19

un ncleo monoltico es el ncleo o kernel de un Sistema Operativo que est programado en forma no modular y tiene un rendimiento mayor que un microkernel. Sin embargo cualquier cambio a realizar en cualquier servicio requiere la recopilacin del ncleo y el reinicio del sistema para aplicar los nuevos cambios. un Sistema Operativo con ncleo monoltico concentra todas las funcionalidades posibles dentro de un gran programa. todos los componentes funcionales del ncleo tienen acceso a todas sus estructuras de datos interna y a sus rutinas. estos Sistemas Operativos han surgido, normalmente, de Sistemas Operativos sencillos y pequeos a los que se les ha ido aadiendo un nmero mayor de funcionalidades. 2.4.3 Capas Virtuales el anlisis de los Sistemas Operativos suelen dividirse en funciones jerrquicas, desde niveles muy cercanos a la mquina misma hasta niveles ms virtuales, en el sentido de que ya no tratan a la computadora como una mquina (dotada de un procesador, memoria etc.), sino como un esquema diseado para manejo de informacin, sin preocuparse demasiado por detalles como registros, direcciones, etctera. el esquema que suele seguirse para el estudio de los Sistemas Operativos est formado por capas, el primer sistema por capas fue desarrollado por e.w. dijkstra en 1968, el famoso tHe (Technische Hogeschool Eindhoven-Holanda) el cual constaba de 6 capas.
5 4 3 2 1 0 el operador programas del usuario Control de entrada/Salida Comunicacin operador-proceso administracin de la memoria y el disco asignacin del procesador y multiprogramacin

MUltiCs fue otro sistema que utiliz una generalizacin de capas ms avanzado. en lugar de capas MUltiCs estaba organizado como una serie de anillos concntricos, siendo los anillos interiores los privilegiados.

mquinas virtuales:
este concepto fue introducido por Seawright y macKinnon en 199 en un sistema originalmente llamado CP/CMs y que ahora se llama VM/30. 20

el monitor de la mquina virtual es el corazn del sistema, se ejecuta en el hw simple y realiza la multiprogramacin, proporcionando no una , sino varias mquinas virtuales a la siguiente capa superior, estas mquinas virtuales no son mquinas extendidas, con archivos u otras caractersticas adecuadas, son copias exactas del hw simple, con su modo ncleo/ usuario, e/S, interrupciones y todo lo dems que posee la mquina real. por lo tanto cada mquina virtual pueden ejecutar diferentes so. las llamadas al sistema son atrapadas por su propio sistema operativo en su mquina virtual.

en la actualidad las capas que forman al Sistema Operativo son capas concntricas alrededor del ncleo. la parte interna del conjunto jerrquico de programas que forman un Sistema Operativo recibe precisamente el nombre de ncleo (kernel, en ingls). las otras capas o subsistemas se encargan del manejo de la memoria, el procesador, los dispositivos de entrada/salida, los archivos, etctera.
manejo de informacin manejo de i/O manejo de procesador manejo de memoria Kernel

Capas virtuales de un Sistema Operativo actual

2.4.4

Otras estructuras virtuales

Modelo cliente-servidor
la tendencia de los so modernos es tratar de mantener un ncleo mnimo implantando la mayora de las funciones del so en los procesos del usuario. para solicitar un servicio de proceso del usuario (proceso cliente) enva un mensaje a un proceso servidor para que se realice el trabajo y regrese con la respuesta. el servidor se ejecuta como proceso en modo usuario y no sabe de dnde viene el mensaje, si este es local o remoto. 21

Solicitud de servicio Cliente respuesta Servidor

2.5 tiPos de sisteMas oPeratiVos 2.5.1 Sistemas Operativos Centralizados un sistema operativo centralizado es un sistema que utiliza el hardware de una sola PC. el procesamiento se hace en un solo equipo utilizando uno o ms procesadores. 2.5.2 Sistemas Operativos de Red Son aquellos que mantienen a dos o ms computadoras unidas a travs de algn medio de comunicacin, con el objetivo de poder compartir los diferentes recursos y la informacin del sistema. los Sistemas Operativos de red tambin se definen como aquellos que tienen la capacidad de interactuar con Sistemas Operativos en otras computadoras por medio de un medio de transmisin con el objeto de intercambiar informacin, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. el punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, adems de la ubicacin de los recursos que desee accesar. 2.5.3 Sistemas Operativos Distribuidos 2.5.3.1 Definicin en un Sistema Operativo distribuido los usuarios pueden acceder a recursos remotos de la misma manera en que lo hacen para los recursos locales. permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. puede ser que este conjunto de procesadores est en un equipo o en diferente lo cual es transparente para el usuario.
22

los Sistemas distribuidos deben ser muy confiables y estables ya que si un componente del sistema se descompone otro componente debe ser capaz de reemplazo inmediatamente y no afectar los procesos del sistema. entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-mc, CHorus, Amoeba, Taos, etc. 2.5.3.2 Aspectos de Diseo de un Sistema Distribuido
transparencia. el Sistema distribuido debe dar la impresin de un sistema de un solo CPU, ocultando la distribucin a los usuarios.

Clases de transparencia en los Sistemas distribuidos: Acceso. los usuarios pueden acceder a recursos locales y remotos empleando operaciones idnticas Localizacin. los usuarios no tienen que especificar dnde se encuentran los recursos Migracin. los recursos se pueden mover sin cambiar su nombre Rplica. los usuarios no tienen que indicar cuntas copias existen
Concurrencia. varios usuarios pueden compartir recursos automticamente Paralelismo. diferentes actividades ocurren en paralelo sin el conocimiento de los usuarios

Flexible (Heterogneo) un sistema distribuido debe construirse desde una variedad de diferentes redes, Sistemas Operativos, hardware de computadoras y lenguajes de programacin. los protocolos de comunicacin especiales enmascaran las diferencias entre redes y middleware puede tratar con las diferencias restantes. Confiable (Seguridad) Se puede emplear encriptacin para proporcionar una proteccin adecuada a los recursos compartidos y mantener secreta la informacin sensible cuando se transmite un mensaje a travs de la red, adems algunos recursos deben ser protegidos de accesos no autorizados.
Tolerante a fallas los sistemas distribuidos se deben disear para ocultar lo ms posible las fallas a los usuarios. Concurrencia la presencia de mltiples usuarios en un sistema distribuido es una fuente de peticiones concurrentes a sus recursos. Cada recurso debe estar diseado para ser confiable en un entorno concurrente. 23

Escalable
un sistema es escalable si el costo de aadir un usuario es una cantidad constante en trminos de recursos que se debern aadir.

2.5.3.3 Ventajas y desventajas de un Sistema Distribuido Ventajas sobre sistemas centralizados:


Econmicas: Ofrecen una razn precio/funcionamiento mejor. Velocidad: tienen una potencia computacional total mayor. Inherentes: algunas aplicaciones son inherentemente distribuidas. Confiable: Si una mquina falla, el sistema como un todo funciona. Incremental: Se puede sumar mayor potencia computacional. Flexibilidad: distribuye la carga de trabajo sobre las mquinas disponibles de la mejor forma posible.

Desventajas
Software: existe poco software disponible para sistemas distribuidos. Interconexin: las redes se pueden saturar u ocasionar otros problemas. Seguridad: el fcil acceso tambin se aplica a la informacin secreta.

ejerCiCios 1. Suponga que usted est a punto de almacenar un archivo en disco duro, y para ello tiene que saber la ubicacin del mismo. el Sistema Operativo que utiliza le permite aprovechar los recursos de todo un conjunto de computadoras. en este caso qu tipo de Sistema Operativo estar utilizando? a) Centralizado b) distribuido c) de red d) de tiempo compartido 2. Suponga que usted inicia una tarea en su mquina y est trabajando en un sod, esta tarea est compuesta de varios procesos, el sistema operativo coloca los procesos en donde ms convenga sin su conocimiento. Qu tipo de transparencia est manejando? a) de migracin b) de rplica c) de acceso d) de localizacin 3. la redundancia en hardware permite que un Sistema Operativo sea tolerante a fallas. a esta caracterstica se le llama: a) transparencia b) desempeo c) escalabilidad d) Confiabilidad
24

4. Suponga que usted ejecuta una tarea que exhibe un paralelismo de grano fino en un sod, que consiste de un conjunto de computadoras personales con un solo procesador. la caracterstica que de sod que se vera afectada con este tipo de trabajos es: a) desempeo b) Flexibilidad c) escalabilidad d) Confiabilidad 5. la estructura de un sistema operativo en donde el ncleo contiene funciones bsicas y otras funciones no tan bsicas para mejorar el desempeo se llama: a) monoltico b) microncleo c) exokernel d) Hbrido 6. la diferencia principal entre un Sistema Operativo de red y un Sistema Operativo distribuido es (Seleccione todas las que apliquen): a) el so de red aprovecha recursos como disco duro y memoria de otras computadoras y el so distribuido el procesador. b) el so distribuido aprovecha recursos de otras computadoras de manera que el usuario no se de cuenta, y el so de red no. c) el so de red permite al usuario conectarse a la mquina que quiera, y el so distribuido no lo permite. d) el so distribuido aparece ante el usuario como la imagen de un nico sistema y el so de red no. . los Sistemas distribuidos son: a) sistemas fuertemente acoplados en software y fuertemente acoplados en hardware b) sistemas fuertemente acoplados en software y dbilmente acoplados en hardware c) sistemas dbilmente acoplados en software y fuertemente acoplados en hardware d) sistemas dbilmente acoplados en software y dbilmente acoplados en hardware 8. Suponga que estamos trabajando en un sod y al listar el contenido del directorio x en la mquina 1 su contenido es el siguiente: hola.txt juegos programa.c al listar el contenido de la carpeta x en la mquina 2 vemos el mismo contenido y as para cada una de las mquinas conectadas al sistema. decimos entonces que el sod cuenta con la caracterstica de: a) transparencia b) Flexibilidad c) Sistema de archivos global d) reconfiguracin
25

9. mencione la principal desventaja de un sod ____________________ 10. los sistemas distribuidos son e) Sistemas fuertemente acoplados en software y fuertemente acoplados en hardware f) Sistemas fuertemente acoplados en software y dbilmente acoplados en hardware g) Sistemas dbilmente acoplados en software y fuertemente acoplados en hardware h) Sistemas dbilmente acoplados en software y dbilmente acoplados en hardware

referenCias

tanenbaum, andrew S. Sistemas Operativos Modernos. Segunda edicin. prentice Hall. pearson education. mxico, 2003. Carretero prez, Jess; de miguel anasagasti, pedro; Garca Carballeira, Fliz; prez Costoya, Fernando. Sistemas Operativos. Una visin Aplicada. mc Graw Hill. espaa, 2001. William Stallings. Sistemas Operativos, prentice may, 4ta edicin. prentice may. Haviland, Keith; Salama, ben. unix System programming. addison-Wesley publishing Company. Flynn, ida m.; mciver mcHoes, ann. Sistemas Operativos. tercera edicin. thomson learning. mxico, 2001. Chow, Jhonson. Distributed Operating Systems & Algorithms, addison Wesley.

26

iii GeStin de prOCeSOS e HilOS en ambienteS CentralizadOS y diStribuidOS

3.1 ConCePtos BsiCos de ProCesos e Hilos Proceso. es un programa en ejecucin, consta del programa ejecutable, datos y pila, contador, registros e informacin adicional necesaria para ejecutar el programa. el cdigo se compone de instrucciones de mquina y llamados a servicios del sistema. toda la informacin asociada a un proceso se almacena en una tabla del so conocida como tabla de procesos. el intrprete de comandos o shell es un proceso que lee los comandos a partir de una terminal, y crea un proceso que se encarga de la ejecucin del comando. los procesos creados por otro proceso se llaman procesos hijo.
a veces es importante que los procesos se comuniquen entre s, la comunicacin entre procesos puede darse en una sola mquina o entre mquinas distintas (a travs de la red) mediante paso de mensajes o seales (anloga a una interrupcin de hw pero en sw). es importante saber a qu usuario pertenece cada proceso. Cada usuario tiene asociado un id (entero de 16 32 bits). varios procesos pueden correr el mismo programa, pero cada uno de ellos es un proceso distinto con su propio estado. un proceso consiste de cdigo, datos y dems atributos. el cdigo se compone de instrucciones de mquina y llamados a servicios del sistema.

el estado de un proceso consiste de al menos:


el cdigo para el programa ejecutndose 2

los datos estticos para el programa ejecutndose espacio para datos dinmicos el contador del programa, indicando la prxima instruccin un stack de ejecucin con el stack pointer valores de registros de CPU un conjunto de recursos en uso del so (archivos abiertos, conexiones a otros programas, etc.) el estado del proceso

Entorno del proceso. es un conjunto de variables que se le pasan al proceso en el momento de su creacin, el cual est formado por una tabla noMBre-Valor que se incluye en la pila del proceso. el noMBre especifica el nombre de la variable y el Valor su valor. ejemplo de entorno en Unix:
PatH=/usr/bin:/home/pepe/bin terM=vt100 HoMe=/home/pepe Pwd=/home/pepe/libros/primero

Grupo de procesos. los procesos forman grupos que tienen diversas propiedades, se pueden realizar diversas operaciones sobre todos los procesos de un determinado grupo, por ejemplo matar a todos los procesos pertenecientes a un mismo grupo.

interrumpido
a termin

ejecutndose

espera

por un

evento

dormido

despachado

esperando

Creado

listo

e Ocurre

o l event

diagrama de transicin de estados 28

Estados de un proceso
Dormido. proceso inexistente. Slo se indica para uso de una tabla de procesos Listo. Cuando un proceso es creado se pasa a una cola de procesos listos para ejecutarse los procesos listos no tiene recursos asignados. Ejecutndose. el proceso tiene todos los recursos necesarios para su ejecucin. Si se dispone de un solo procesador, solamente un proceso puede estar ejecutndose. este puede ser interrumpido y pasar a la cola de listos. Esperando. espera a que ocurra un evento externo, no tiene recursos asignados. Cuando el evento ocurre el proceso suspendido normalmente pasa a la cola de listos a esperar que se le otorgue nuevamente un turno para el uso del procesador.

el ncleo del Sistema Operativo se encarga de hacer las transiciones de los diferentes procesos a fin de que ellos puedan ser creados, ejecutados y terminados. Implantacin de los procesos (Tabla de procesos) el Sistema Operativo agrupa toda la informacin que necesita conocer acerca de un proceso en particular en una estructura de datos denominada bloque de control de proceso o descriptor de proceso (PCB). el bloque de control de procesos contiene muchas piezas de informacin asociadas con un proceso especfico, incluyendo:
estado del proceso. Contador de programa. indica la direccin de la siguiente instruccin que va a ejecutar el proceso. registros de CPU. varan en nmero y tipo dependiendo de la arquitectura de la computadora. incluyen: acumuladores, registros ndice, registros de propsito general y cualquier informacin de la condicin del cdigo. informacin del manejo de memoria. incluye todo tipo de informacin acerca de la memoria que est siendo utilizada por el proceso. informacin de contabilidad. incluye: tiempo de CPU usado, tiempo lmite, nmero de cuenta, nmero de proceso, etc. informacin del estado de e/s. incluye el estado de las solicitudes de entrada y salida enviadas por el proceso, los dispositivos asignados a l, la lista de archivos abiertos, etc informacin para el despacho del proceso. incluye la prioridad del proceso, apuntadores a las colas de despacho y cualquier otro parmetro necesario para el despacho del proceso. 29

lista de procesos esperando

lista de procesos dormidos

lista de procesos listos

tabla de control de procesos toda la informacin de los PCBs reside generalmente en una tabla de bloques de control de procesos. en la cual se organizan listas de procesos listos, listas de procesos suspendidos y lista de procesos dormidos. Cambio de contexto Cuando ocurre una transicin de un proceso que se est ejecutando a otro estado, el ncleo selecciona otro proceso de la cola de listos para ejecutarse. entonces se debe restablecer
30

el ambiente adecuado para la ejecucin del proceso seleccionado, este ambiente incluye la definicin de los registros de CPU, su contador de programa, etc. a esta actividad se le denomina cambio de contexto. Servicios del Sistema Operativo para el manejo de procesos entre los llamados al sistema operativo debe existir un conjunto especfico para el manejo de procesos entre los cuales se deben encontrar los siguientes:
Crear proceso (fork) borrar proceso Cambiar la prioridad al proceso interrumpir proceso Obtener los atributos de un proceso

Procesos ligeros (subprocesos o threads, hilos) un proceso ligero es un programa en ejecucin que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Cada proceso ligero tiene informacin propia y no la comparte con otros procesos ligeros, tal como:
Contador de programa pila registros estado del proceso ligero (ejecutando, listo o bloqueado)

todos los procesos ligeros de un mismo proceso comparten la informacin del mismo. Como:
espacio de memoria variables globales archivos abiertos procesos hijos temporizadores Seales y semforos Contabilidad 31

el estado del proceso ser la combinacin de los estados de sus procesos ligeros. una ventaja de los procesos ligeros es que permiten paralelizar una aplicacin. Comparando el uso de los procesos ligeros con otras soluciones se puede decir que los procesos ligeros
permiten paralelismo y variables compartidas as como que utilizan llamadas al sistema bloqueantes por proceso ligero. en un proceso convencional con un solo proceso ligero no hay paralelismo y utiliza llamadas al sistema bloqueantes. varios procesos convencionales cooperando permite paralelismo y no comparte variables, por lo que la comunicacin puede consumir mucho tiempo.

el paralelismo que permiten los procesos ligeros, unido a que comparten memoria (utilizan variables globales que ven todos ellos), permite la programacin concurrente. en este tipo de programacin hay que garantizar que el acceso a los datos compartidos se haga de forma correcta. Planificacin en posix Posix especifica una serie de polticas de planificacin, aplicables a procesos y procesos ligeros. Cada unidad ejecutable lleva asociada una poltica de planificacin y una prioridad. Cada poltica de planificacin lleva asociada un rango de prioridades. Posix especifica que cada implementacin debera ofrecer un rango, de al menos, 32 niveles de prioridad. el planificador elegir siempre para ejecutar el proceso o proceso ligero con la prioridad ms alta. las polticas de planificacin disponibles en Posix son las siguientes:
fifo:

los procesos que se planifica segn esta poltica se introducen al final de la cola de su prioridad asociada. un proceso con esta poltica de planificacin ser expulsado de la CPU nicamente cuando ejecute una llamada bloqueante al sistema o cuando aparezca en el sistema un proceso con ms alta prioridad. el comportamiento para este tipo de despachador es el siguiente:
Si un proceso es expulsado de la CPU por otro de mayor prioridad, el proceso expulsado para a ser el primero de la cola asociada a su prioridad. Cuando un proceso bloqueado pasa a listo para ejecutar, el proceso se introduce al final de la cola asociada a su prioridad. Cuando un proceso cambia su prioridad o su poltica de planificacin, utilizando los servicios adecuados, se realiza una replanificacin. Si como resultado de sta el proceso resulta expulsado, ste se introduce al final de la cola de procesos de su prioridad. 32

Cclica: los procesos de cada nivel de prioridad se planifican segn una poltica de planificacin cclica con una determinada rodaja de tiempo. el comportamiento del despachador es el siguiente:
Cuando un proceso acaba su rodaja de tiempo, se introduce al final de la cola de procesos de su prioridad. Cuando un proceso es expulsado por otro de mayor prioridad, se introduce al principio de su cola sin restaurar su rodaja de tiempo. de esta forma, cuando el proceso contine su ejecucin, lo har hasta que consuma el resto de su rodaja de tiempo.

Otra: esta depende de cada implementacin. de acuerdo al estndar Posix, todo sistema operativo que siga el estndar Posix debe ofrecer la polticas al menos las dos polticas anteriores, pudiendo adems ofrecer cualquier otra.

Planificacin en Windows nt/2000 en Windows nt la unidad bsica de ejecucin es el proceso ligero y, por tanto, la planificacin se realiza sobre este tipo de procesos. los estados de un proceso ligero que maneja este sistema operativo son:
Listo. proceso listo para ejecutarse. Reserva. proceso ligero que ser el siguiente proceso ligero a ejecutar en un procesador determinado. Slo puede haber un proceso ligero en este estado por procesador. Ejecucin. el proceso ligero permanece ejecutndose hasta que se cumpla una de las siguientes condiciones: el sistema operativo lo expulsa para ejecutar un proceso ligero de mayor prioridad, la rodaja de tiempo del proceso termina o bien el proceso ligero finaliza su ejecucin. Bloqueado. Cuando el proceso ligero deja de estar bloqueado puede, dependiendo de su prioridad, comenzar su ejecucin inmediatamente o pasar al estado de listo para ejecutar. Transicin. un proceso ligero entra en este estado cuando esta listo para ejecutar, pero la pila que utiliza el sistema operativo para este proceso no reside en la memoria principal. Cuando la pgina vuelva a memoria, el proceso ligero pasar al estado de listo para ejecutar. Finalizado. Cuando un proceso ligero finaliza su ejecucin pasa a este estado. una vez terminado, el proceso puede o no ser eliminado del sistema. en caso de no ser eliminado, podra ser reutilizado.

33

Windows nt implementa una planificacin cclica con prioridades y con expulsin. en Windows nt existen 32 niveles de prioridad, de 0 a 31, siendo el 31 el nivel de prioridad mximo. estos niveles se dividen en tres categoras:
diecisis niveles con prioridades de tiempo real (niveles 16 al 31). Quince niveles con prioridades variables (niveles 1 al 15). un nivel de sistema (0).

todos los procesos ligeros en el mismo nivel se ejecutan segn una poltica de planificacin cclica con una determinada rebanada de tiempo. en la primera categora, todos los procesos tienen una prioridad fija. en la segunda, los procesos comienzan su ejecucin con una determinada prioridad y sta va cambiando durante la vida del proceso, pero sin llegar al nivel 16. esta prioridad se modifica segn el comportamiento que tiene el proceso durante su ejecucin. as, un proceso ve decrementada su prioridad si acaba la rebanada de tiempo. en cambio, si el proceso se bloquea, su prioridad aumentar. Con esto se persigue mejorar el tiempo de respuesta de lo procesos interactivos que realizan e/s. 3.2 desPaCHo en sisteMas Centralizados despacho. Conjunto de polticas y mecanismos construidos en el sistema operativo que gobiernan el orden en el cual se realiza la carga de trabajo del sistema. despachador. mdulo del sistema operativo que selecciona el siguiente trabajo a ser admitido en el sistema y el siguiente proceso a ejecutarse. el objetivo principal del despachador es optimizar la eficiencia del sistema de acuerdo con criterios considerados importantes para el ambiente del sistema operativo. 3.2.1 Criterios de despacho porcentaje de utilizacin del CPU. es la fraccin de tiempo durante la cual el CPU est ocupado. Throughput. la cantidad de trabajo terminado por unidad de tiempo. tiempo de terminacin. tiempo que transcurre desde el momento en que un programa o un trabajo es sometido hasta que es terminado por el sistema. tiempo de espera. tiempo que un trabajo espera por el asignamiento de un recurso debido al uso compartido de recursos en ambientes multiprogramacin. tiempo de espera = tiempo de terminacin tiempo de ejecucin
34

tiempo de respuesta. en sistemas de tiempo compartido es el tiempo que transcurre desde que se presiona el ltimo caracter de un comando hasta que se imprime el primer caracter de la respuesta. en sistemas de tiempo real es el tiempo que transcurre desde que ocurre un evento hasta que se ejecuta la primera instruccin de su rutina de servicio.
algoritmos de despacho. existen dos tipos de disciplinas de despacho: -non pre-emtive. las que permiten que el proceso en ejecucin retenga la propiedad -pre-emptive.

3.2.2 Tipos de despachadores


De largo plazo. el despachador de largo plazo, cuando existe, trabaja con la cola de los trabajos en lotes y selecciona el siguiente trabajo de lotes a ejecutarse. Su objetivo principal es proporcionar una mezcla balanceada de trabajos al despachador de corto plazo. este tipo de despachador es invocado cada vez que un proceso termina y abandona el sistema. Su utilizacin es relativamente poco frecuente. en trminos del diagrama de transicin de estados de un proceso, el despachador de largo plazo se encarga de la transicin de un proceso del estado de dormido al estado de listo. De mediano plazo. Cuando existen procesos que necesitan un uso intensivo de las facilidades de entrada y salida, y que por ello permanezcan suspendidos, puede ser que stos procesos se quiten temporalmente de memoria principal y se guarden en memoria secundaria, hasta que su condicin de espera haya concluido (a esta actividad se le conoce como ]swapping), para darle oportunidad a otros procesos que quieran ser admitidos. el despachador de mediano plazo se encarga del manejo de procesos que temporalmente se han enviado a memoria secuandaria. en trminos del diagrama de transicin de estados, el despachador de mediano plazo se encarga de la transicin suspendido a listo. De corto plazo. el despachador de corto plazo asigna el CPU entre los procesos listos en memoria principal. Su objetivo principal es maximizar la eficiencia del sistema de acuerdo con ciertos criterios. ya que se encarga de las transiciones de listo a ejecutndose. en la prctica, el despachador de corto plazo se invoca cada vez que ocurre un evento que modifique el estado global del sistema. algunos eventos que provocan tales cambios son: pulsos de reloj (interrupciones de tiempo) interrupciones y terminaciones de e/s la mayora de los llamados operacionales al Sistema Operativo envo y recepcin de seales activacin de programas interactivos 35

3.2.3 Algoritmos de despacho estos algoritmos se pueden agrupar en:


Calendarizacin en sistemas por lotes Calendarizacin en sistemas interactivos Calendarizacin en sistemas de tiempo real

a) Calendarizacin en sistemas por lotes:


1. 2. 3. primero en llegar, primero en salir trabajo ms corto primero tiempo restante ms corto a continuacin Calendarizacin de tres niveles Calendarizador de admisin Calendarizador de memoria Calendarizador de CPU

CPU

Calendarizador de CPU

Memoria principal Trabajo que llega Calendarizador de admisin

Disco

Calendarizador de memoria

b) Calendarizacin en sistemas interactivos


Calendarizacin por turno circular (round-robin). un cuanto de 20-50ms es razonable. Calendarizacin por prioridades. para que ningn proceso de baja prioridad espere infinitamente en ser atendido, cada vez que un proceso de alta prioridad es despachado se le baja su prioridad, o se utiliza un umbral, donde cada vez que un proceso de baja prioridad 36

es discriminado se incrementa un contador. Cuando el contador llegue a ser igual al umbral, entonces el despachador ya no podr discriminarlo. las asignacin de prioridades a los procesos puede ser dinmica o esttica. mltiples colas

Prioridad 4 Prioridad 3 Prioridad 2 Prioridad 1

Ms alta prioridad

Ms baja prioridad

En cada turno se baja la prioridad al proceso que se acaba de ejecutar


proceso ms corto a continuacin. Calendarizacin garantizada. darle a cada proceso la rebanada de tiempo que sea ms adecuada para l. Calendarizacin por lotera. Se reparten boletos a los procesos y el despachador elige uno; el proceso ganador es el que es ejecutado. Si un proceso es ms importante o ms interesante que los dems, se le dan ms boletos, as su probabilidad de ganar el procesador es ms alta. los procesos que cooperan entre s pueden intercambiar boletos para tener ms probabilidades de ganar el CPU. Calendarizacin por porcin equitativa. Se utiliza turnos circulares o prioridades uniformes.

c) Calendarizacin en sistemas en tiempo real Se pueden clasificar a estos sistemas en:


tiempo real estricto. aquel que no da plazos, sus plazos son absolutos. tiempo real no estricto. permite incumplimientos ocasionales.

los sucesos en un Sistema en tiempo real se pueden clasificar en:


peridicos. Se presentan en intervalos regulares aperidicos. Cuya ocurrencia en impredecible

los algoritmos de calendarizacin para sistemas en tiempo real pueden ser estticos o dinmicos.
3

los primeros toman sus decisiones de calendarizacin antes de que el sistema comience a ejecutarse. los segundos toman las decisiones en tiempo de ejecucin. 3.3 desPaCHo en sisteMas oPeratiVos distriBUidos los procesos no comparten el mismo espacio de direcciones y no tienen nada que ver uno con otro. para comunicarse utilizan primitivas de comunicacin como memoria compartida, tuberas y paso de mensajes. 3.3.1 Modelos de Sistemas El modelo de estacin de trabajo este modelo consiste de estaciones de trabajo (ws) dispersas en un edificio o campus y conectadas entre s por medio de una lan. las ws de trabajo pueden tener discos locales o no. Estaciones de trabajo sin disco Si las ws carecen de disco, el sistema de archivos debe ser implantado en uno o varios servidores de archivos de red. ventajas
precio ms bajo. Fcil mantenimiento y respaldo. al cambiar de versin de software o instalar uno nuevo, slo se tiene que instalar en pocos servidores. Son silenciosas (no tienen ventiladores). proporcionan simetra y flexibilidad. un usuario puede entrar a cualquier estacin de trabajo y entrar al sistema.

desventajas
Se debe contar con uno o ms servidores de archivos equipados con discos enormes y rpidos a los cuales se tiene acceso mediante una lan. Gran uso de la red que puede llevar a cuellos de botella.

38

Estaciones de trabajo con disco Formas en las que se puede utilizar el disco:
1. para paginacin y archivos temporales, los cuales se eliminan al finalizar la sesin. Su ventaja es reducir la carga de la red comparado con el caso sin disco, y su desventaja es el alto costo debido al gran nmero de discos duros. para paginacin, archivos temporales y binarios del sistema, tales como compiladores, editores de texto, controladores de correo electrnico, etc. este esquema reduce an ms la carga sobre la red. Su desventaja es el alto costo y la complejidad adicional para actualizar los binarios. para paginacin, archivos temporales, binarios del sistema y sistema de ocultamiento de archivos. los usuarios pueden cargar archivos desde los servidores de archivos hasta sus propios discos, leerlos y escribir en ellos en forma local, y despus regresar los archivos modificados al final de la sesin. el objetivo es mantener centralizado el almacenamiento a largo plazo, pero reducir la carga en la red. Su principal desventaja es que puede tener problemas de consistencia del cach. un sistema local de archivos completo. Su ventaja es la escasa carga en la red y que elimina la necesidad de los servidores de archivos. pero hay prdida de transparencia y es ms parecido a un sistema operativo de red.

2.

3.

4.

Otros problemas relacionados con este modelo son los siguientes: Si los circuitos siguen abaratndose pronto ser posible proporcionar a cada usuario varios CPU, pero seran demasiados en un solo lugar; adems surgira otro problema, la asignacin de recursos sera ineficiente ya que algunos usuarios recibiran recursos que no necesitan mientras que otros usuarios si los necesitan. Uso de estaciones de trabajo inactivas el problema en el modelo de estaciones de trabajo (ws) es que existen ws inactivas o subutilizadas. la primera solucin a este problema fue proporcionar el comando rsh (Unix Berkeley), con este comando se puede ejecutar en una mquina remota un comando. para llevar a cabo la ejecucin remota de un comando en una mquina inactiva mediante rsh se debe tener un registro acerca de cul ws esta inactiva. adems el proceso

39

que se ejecuta en una mquina remota seguir ejecutndose aunque llegue un usuario, quien debe aceptar el desempeo menor de su sistema o buscar otra mquina. problemas clave a solucionar con respecto al tema de las estaciones de trabajo inactivas:
1. 2. 3. Cmo encontrar una estacin de trabajo inactiva? Cmo lograr que un proceso remoto se ejecute en forma transparente? Qu ocurre si regresa el poseedor de la mquina?

1. la estacin de trabajo est inactiva cuando nadie toca el ratn o el teclado durante varios minutos y no se ejecuta algn proceso iniciado por el usuario. los algoritmos para localizar una ws inactiva se pueden dividir en dos categoras:
Controlados por el servidor Controlador por el cliente

en el primer caso cuando una ws est inactiva anuncia su disponibilidad registrndose en un archivo o base de datos, da su nombre, direccin de red y propiedades. Cuando el usuario desea ejecutar un comando en una ws inactiva, mediante un comando busca en el registro la ws adecuada (el registro de ws inactivas esta centralizado con algunas copias). Otra alternativa es que la ws inactiva enve un mensaje en toda la red. las dems ws registran el mensaje en su propio registro. as la bsqueda tiene menor costo y mayor redundancia. la desventaja es pedir a todas las mquinas que se encarguen de mantener el registro. puede haber condiciones de competencia si dos usuarios descubren una misma mquina como inactiva. para solucionar este problema, se enva un mensaje a la mquina inactiva para detectar su estado, si an est libre, la mquina inactiva se elimina del registro. entonces quien hizo la llamada puede enviar su ambiente e iniciar el proceso remoto. en el segundo mtodo, controlado por el cliente, la mquina que busca una ws(ws) inactiva transmite una solicitud donde indica el programa que desea ejecutar, y los requerimientos de memoria, procesador, etc. al regresar la respuesta se elige a una ws inactiva. las ws inactivas retrasan sus respuestas, con un retraso proporcional a la carga actual. as, la respuesta de la mquina con la menor carga llega primero y se selecciona. 2. ahora hay que ejecutar el programa. el desplazamiento de cdigo es fcil. Se debe configurar el proceso remoto de modo que vea el mismo ambiente que tendra en el caso local y llevar a cabo el cmputo de la misma forma que en el caso local.
40

necesita la misma visin del sistema de archivos, el mismo directorio de trabajo, mismas variables de ambiente. Problemas al ejecutar un proceso en otra mquina.
las llamadas al sistema dnde dirigirlas? a la mquina origen o a la mquina remota? por ejemplo, la lectura de teclado y escritura a pantalla son funciones que deben dirigir la solicitud a la mquina origen; pero las llamadas que tienen que ver con prioridades o tamao de memoria deben dirigir su solicitud a la mquina remota. llamadas al sistema relacionadas con el tiempo Seguimiento del ratn escritura en dispositivos de hardware

3. es fcil que el poseedor de la mquina regrese a no hacer nada, pero destruye la idea de ws personales. Otra posibilidad es eliminar el proceso intruso, advirtindole primero para que tenga tiempo de cerrar archivos, escribir los bferes editados en un disco, etc. Sino sale despus de unos segundos el proceso es terminado. Otro mtodo es hacer que el proceso emigre a otra mquina, ya sea a la mquina origen o a alguna otra estacin de trabajo inactiva. esto es un proceso complejo. el proceso debe dejar la mquina en el mismo estado exactamente como la encontr. El modelo de pila de procesadores Se construye una pila de procesadores, repleta de CPU, en un cuarto de mquinas, los cuales se pueden ejecutar de forma dinmica a los usuarios segn la demanda. a cada usuario se le da una terminal grfica de alta rendimiento, como las terminales x, incluso se pueden utilizar terminales ascii. ventajas
precio elimina la asociacin entre el nmero de usuarios y el de ws Facilita el crecimiento por incrementos

de hecho se convierte el poder de cmputo en ws inactivas, a las que se puede tener acceso de manera dinmica. aqu no existe el concepto de propiedad.
41

el principal argumento para la centralizacin del poder de cmputo como pila de procesadores proviene de la teora de colas. los sistemas de colas son tiles, puesto que es posible modelarlos de forma analtica. Sea la tasa de entradas totales de solicitudes por segundo de todos los usuarios combinados. Sea la tasa de procesamiento de solicitudes por parte del servidor. para una operacin estable debemos tener > . Si el servidor procesa menos solicitudes que las que los usuarios generan, la cola crecer sin lmite. el promedio de tiempo entre la emisin de una solicitud y la obtencin de una respuesta completa est relacionado con y mediante la frmula: t=1/( - ) 1)

Si tenemos n computadoras, t estar dado en cada computadora como en 1). ahora si reemplazamos estos n pequeos recursos por uno grande que sea n veces ms poderoso, entonces tenemos: t=1/(n - n) = t/n Se reduce el tiempo promedio de respuesta n veces. por esto una pila de procesadores tiene un mejor desempeo, aunque est en contra de los propios sistemas distribuidos. Sin embargo el tiempo promedio de respuesta no lo es todo. tambin est el costo, la confiabilidad y la tolerancia a fallas. una variacin en el tiempo de respuesta tambin puede influir. adems en muchos trabajos la pila no es n veces mejor, pues no todos los trabajos se pueden ejecutar en paralelo. an as, el modelo de pila de procesadores es una forma ms limpia de obtener poder de cmputo adicional que la bsqueda de estaciones inactivas. ningn procesador pertenece a alguien, no hay mquina origen, no hay peligro de que el poseedor regrese. Seleccionar pila de procesadores o estaciones de trabajo inactivas va a depender del trabajo que se desarrolle. Modelo hbrido Se puede establecer una mediacin al proporcionar a cada usuario una ws personal y adems tener una pila de procesadores. esto es ms caro. para procesos interactivos sera mejor utilizar ws. para procesos que requieren un gran poder de procesamiento y no son interactivos es ms adecuado una pila de procesadores.
42

3.3.2 Planificacin en sistemas distribuidos Se pueden utilizar los algoritmos de prioridad, roun robin, lotera, etc. a menudo los paquetes de hilos proporcionan ciertas llamadas para que el usuario pueda especificar el algoritmo de despacho y establecer las prioridades (si es el caso). Implantacin de un paquete de hilos existen dos mtodos, en el espacio de usuario y en el espacio de ncleo. Implantacin de los hilos en el espacio de usuario el ncleo no sabe de la existencia de los hilos. ventajas
el sistema operativo no debe soportar hilos. por ejemplo Unix. la planificacin y cambio de estado la realiza un Sistema de tiempo de ejecucin a nivel de usuario. Se permite que cada proceso tenga su algoritmo de planificacin adaptado. los hilos en este espacio tienen mejor escalabilidad, puesto que los hilos del ncleo requieren algn espacio para sus tablas y su pila en el ncleo, lo cual puede ser un problema si existe un nmero muy grande de hilos.

desventajas
la implantacin de las llamadas al sistema con bloqueo. por ejemplo, la lectura a un pipe vaco. Se puede permitir el bloqueo a un hilo pero que no afecte a los dems. Con las llamadas al sistema con bloqueo esto no se puede lograr. una posible solucin sera modificar tales llamadas al sistema, pero cambiar el sistema operativo no es atractivo. adems uno de los objetivos de tener un paquete de hilos a nivel de usuario es poder ejecutar los Sistemas Operativos existentes. un cambio de una llamada al sistema requerira muchos cambios a muchos programas de usuario. Otra alternativa es revisar primero si una llamada al sistema se bloquear utilizando la llamada seleCt. entonces la llamada al sistema bloqueante es reemplazada por seleCt y luego la llamada al sistema. seleCt verifica si la llamada es segura (no se va a bloquear), si es as se lleva a cabo, si no no se ejecuta. el cdigo que se coloca junto a la llamada al sistema para hacer la verificacin recibe el nombre de jacket. este mtodo requiere escribir parte de la biblioteca de llamadas. bloqueo de las llamadas al sistema en el fallo de pginas. Si un hilo causa un fallo de pginas, el ncleo que desconoce la existencia de los hilos, bloquear todo el proceso hasta que la pgina necesaria sea incluida aunque se puedan correr otros hilos. 43

Si un hilo comienza su ejecucin, ningn otro hilo de ese proceso puede ejecutarse, a menos que el primer hilo entregue en forma voluntaria el CPU. dentro de un proceso, no existen interrupciones de reloj, lo que imposibilita la planificacin round robin. Sincronizacin. Cuando un hilo realiza espera ocupada esperando la respuesta de un hilo, necesita interrupciones de reloj. la espera ocupada es atractiva cuando se espera una respuesta rpida y el costo del semforo es alto, pero se pueden dar bloqueos. los programadores desean los hilos en aplicaciones donde esto se bloqueen a menudo, por ejemplo en un servidor de archivos.

Implantacin de hilos en el ncleo el ncleo sabe de los hilos y cmo manejarlos. ste contiene una tabla con una entrada por cada hilo, con los registros, estado, prioridades y dems informacin relativa al hilo. las llamadas que pueden bloquear un hilo se implantan como llamadas al sistema, con un costo considerable. Cuando un hilo se bloquea el ncleo ejecuta otro hilo del mismo proceso o de otro proceso. pero el programador esperara que se ejecutara un hilo del mismo proceso. algunos sistemas reciclan sus hilos; cuando un hilo termina y se destruye, se marca como no ejecutable pero sus estructuras de datos en el ncleo no se afectan sino que se ocupan cuando se crea otro hilo. esto implica un ahorro. los hilos del ncleo no requieren nuevas llamadas al sistema sin bloqueo, no conducen a bloqueos cuando se utiliza la espera ocupada. Si un hilo de un proceso provoca un fallo de pgina, el ncleo puede ejecutar otro hilo mientras que espera que la pgina requerida sea trada del disco. los hilos en el espacio del usuario o del ncleo tienen asociados otros problemas. muchos procedimientos no son reentrantes, por ejemplo cuando ambos hilos utilizan la variable errno o algn bfer esttico. esto sucede porque estos procedimientos no fueron escritos para hilos sino para un solo proceso. una solucin sera escribir toda la biblioteca. Otra solucin consiste en proporcionar a cada quien su jacket que cierre un semforo mutex global al iniciar el procedimiento. de hecho la biblioteca se convierte en un enorme monitor. las seales tambin presentan dificultades. Asignacin de procesadores las estrategias de asignacin de procesadores se pueden dividir en dos categoras amplias:
no migratorios. Cuando un proceso es creado se decide dnde colocarlo. una vez colocado en una mquina el proceso permanecer ah hasta que termine su ejecucin. migratorios. un proceso se puede trasladar aunque haya iniciado su ejecucin. este tipo de categoras permiten un mejor balance de carga. 44

un algoritmo que asigne procesos a procesadores tiene como meta optimizar algn aspecto, por ejemplo los siguientes:
maximizar el uso de CPU minimizar el tiempo de respuesta

Aspectos del diseo de algoritmos de asignacin de procesadores las decisiones que deben tomar los diseadores se pueden resumir en cinco aspectos:
1. 2. 3. 4. 5. algoritmos deterministas vs. heursticos algoritmos centralizados vs. distribuidos algoritmos ptimos vs. subptimos algoritmos locales vs. globales algoritmos iniciados por el emisor vs. iniciados por el receptor

los algoritmos deterministas son adecuados cuando se sabe de antemano todo acerca del comportamiento de los procesos o por lo menos una aproximacin razonable. Cuando la carga del sistema es completamente impredecible se utilizan tcnicas heursticas. tener toda la informacin en un solo lugar permite tomar una mejor decisin, pero es menos robusta y coloca una carga pesada en la mquina central. Son preferibles los descentralizados, pero carecen de alternticas adecuadas. encontrar la mejor asignacin, la ms ptima, es ms caro, pues hay que recolectar ms informacin y procesarla ms. en la prctica se buscan soluciones subptimas, heurticas y distribuidas. Otro aspecto llamado poltica de transferencia tambin es importante, tiene que ver con ejecutar un proceso en la mquina local o transferirlo; esta decisin depende de la carga de la mquina. una escuela dice que la decisin se debe tomar con respecto a la informacin de la mquina local, si est sobrecargada (est por sobre una marca) entonces hay que migrar el proceso, si no el proceso se debe ejecutar en la mquina local. Otra escuela dice que es mejor recolectar toda la informacin del sistema para decidir dnde ejecutar el proceso. el ltimo aspecto tiene que ver con lo que se llama poltica de localizacin, decidir dnde enviarlo una vez que se ha decidido migrar el proceso. en el caso de los algoritmos iniciados por el emisor, es el emisor (la mquina local que necesita colocar su proceso en otra mquina) quien enva solicitudes a las dems mquinas en busca de ayuda y de un lugar apropiado para su proceso. en el caso de los algoritmos iniciados por el receptor,
45

es el receptor quien decide que est subcargada y que necesita trabajo, as que enviar mensajes a las dems mquinas a ver quin necesita ayuda. Aspectos de la implantacin de algoritmos de asignacin de procesadores

medicin de la carga
los algoritmos suponen que cada mquina conoce su carga. algunos algoritmos cuentan el nmero de procesos para determinar su carga. una mejora al criterio anterior es contar slo los procesos en ejecucin o listos. Otra forma de medir la carga es determinar la fraccin de tiempo que el CPU est ocupado.

Costo excesivo
muchos algoritmos tericos ignoran el costo de recolectar medidas y desplazar los procesos de aqu para all. al desplazar un proceso se debe verificar si hay ganancia en hacerlo. para esto hay que tomar en cuenta el uso de memoria, tiempo de CPU y ancho de banda de la red.

Complejidad
existen algoritmos que tienen un desempeo un poco mejor que otros, pero son ms complejos. eager realiz un estudio a este respecto, y para ello trabaj con tres algoritmos. Se supone que al crear un nuevo proceso en una mquina sta se sobrecargar, por lo tanto hay que desplazar el proceso a otro lugar. Se elige una mquina al azar y se enva el proceso, si la mquina est subcargada entonces aceptar el proceso, en caso contrario se repite la operacin hasta que alguien acepte el proceso o se exceda un contador de tiempo. Se elige una mquina al azar y se le pregunta si est subcargada, si su respuesta es afirmativa entonces la mquina origen le enva el proceso, si no se repite la operacin con otra mquina elegida al azar y as hasta encontrar una mquina adecuada o se exceda el nmero de pruebas, en cuyo caso permanecer en el sitio de su creacin. Se analizan k mquinas para determinar sus cargas exactas. el proceso se enva a la mquina con la carga ms pequea. el mejor algoritmos es el 3, sin embargo el algoritmo 2 tiene un desempeo casi igual al 3, pero es ms sencillo. la conclusin a la que lleg eager fue: Si el uso de un algoritmo sencillo proporciona casi la misma ganancia que uno ms caro y ms complejo, es mejor utilizar el ms sencillo.

1.

2.

3.

46

estabilidad
el sistema nunca est en equilibrio por la actualizacin constante de las tablas de las mquinas, as una mquina podra pensar que otra est actualizada sin que sea as.

Ejemplo de algoritmos de asignacin de procesadores, un algoritmo determinista segn la teora de grficas para sistemas que constan de procesos con requerimientos conocidos de CPU y memoria, adems de una matriz conocida con el trfico promedio entre cada pareja de procesos. Si el nmero de CPU es menor que el nmero de procesos, habr que asignar varios procesos al mismo CPU. la idea es llevar a cabo esta asignacin de forma que se minimice el trfico en la red. Sea la siguiente grfica de procesos, los arcos indican el nivel de comunicacin entre los procesos. una posible asignacin es la siguiente:
CPU1 CPU2 CPU3

3 A 2 E 6 3 4 G 4 2

2 1 F 1 8

5 5

30 unidades

CPU1 3
A 2 E 6 3 4 G 4 2

CPU2 2
1 F 1 8

CPU3
C 3 D

5 5

28 unidades

podemos observar que la segunda asignacin es la mejor.


4

Un algoritmo centralizado arriba-abajo (mutka y livny, 198) es centralizado. usa una tabla de uso, con una entrada por cada estacin de trabajo personal. Si un proceso se ejecuta en otra mquina, la mquina origen acumula puntos de penalizacin cada segundo. Si tiene solicitudes pendientes no satisfechas, los puntos de penalizacin se restan de su entrada en la tabla de usos. Si no existen solicitudes pendientes y ningn procesador esta en uso, la entrada de la tabla de usos se desplaza un cierto nmero de puntos hacia el cero. Si la puntuacin asociada a una estacin de trabajo en la tabla de usos es positiva, indica que la estacin de trabajo es un usuario de los recursos del sistema. Si tiene una puntuacin negativa indica que necesita recursos, si es cero es neutra. el objetivo de este algoritmo es asignar la capacidad de manera justa. Su desventaja es que en sistemas grandes con muchos nodos crea cuellos de botella. Un algoritmo jerquico para este tipo de algoritmo es necesaria una gran cantidad de procesadores, los cuales se agrupan por jerarquas, en un primer nivel (el nivel ms alto) un grupo de procesadores forman el comit de coordinadores, en el siguiente nivel estn los jefes de departamento. los niveles pueden ser n, todo depender del nmero de procesadores. en el ltimo nivel estn los trabajadores. este algoritmo es utilizado en el sistema MiCros. Cuando una tarea requiere de varios procesadores, entonces la solicitud se hace a los jefes de departamento (o el nivel anterior al de los trabajadores), si stos no la pueden resolver la envan a su jefe inmediato, hasta alcanzar un nivel en donde se pueda resolver el problema. el administrador divide la solicitud en partes y los esparce entre los administradores por debajo de l, quienes repiten la operacin hasta llegar a los trabajadores. Se sealan a los procesadores elegidos para realizar la tarea como ocupados y se informa de regreso en el rbol.
Comit de Coordinadores

coordinadores

Jefes de departamento

Trabajadores

48

Un algoritmo heurstico distribuido iniciado por el emisor este es el segundo algoritmo de Eager mencionado en pginas anteriores. la desventaja de ste es que si casi todas las ws estn sobrecargadas entonces se enviarn pruebas de forma constante en vano. la red se sobrecargar cuando ms trabajo existe. Un algoritmo heurstico distribuido iniciado por el receptor este algoritmo es complementario al anterior. Cuando un proceso termina, el sistema verifica si la ws donde termin el proceso tiene suficiente trabajo. en caso contrario, elige alguna mquina al azar y le solicita trabajo. Si no encuentra trabajo en n pruebas, el receptor deja de preguntar por cierto tiempo, e intenta de nuevo. este algoritmo crea trfico en la red cuando las ws estn subcargadas (desempleadas), pero es mejor en este momento y crea trfico cuando el sistema est sobrecargado. una posible modificacin a este algoritmo es combinar el algoritmo anterior y ste. Si una ws est sobrecargada deber intentar deshacerse de trabajo, y cuando est subcargada debe tratar de conseguir trabajo. Se puede manejar un historial de mquinas que estn crnicamente subcargadas o sobrecargadas. Un algoritmo de remates este algoritmo fue creado por Ferguson. en este caso se crea una comunidad econmica en donde los procesos compran tiempo de CPU para terminar su trabajo. los procesadores venden sus ciclos al mejor postor. el precio de un procesador va de acuerdo a su velocidad, tamao de memoria, hardware y a lo que pag el ltimo cliente, incluso el tiempo de respuesta. Cuando se desea iniciar un proceso hijo, verifica si alguien ofrece el servicio que necesita y elije el mejor. Genera una oferta. los procesadores renen todas las ofertas y eligen una. Se informa a los ganadores y perdedores. 3.4 CoMUniCaCin entre ProCesos en aMBientes distriBUidos la diferencia ms importante entre un sistema distribuido y un sistema con un procesador es la comunicacin entre procesos. en un sistema con un procesador se supone la existencia de una memoria compartida, lo cual no existe en un sistema distribuido. la comunicacin entre procesos debe respetar reglas llamadas protocolos.
49

3.4.1 Modelos por capas para que dos procesos logren la comunicacin se deben poner de acuerdo en varios aspectos como, cuntos voltios hay que utilizar para sealar un bit 0 y un bit 1; cmo detectar el fin de un mensaje, etc. para facilitar este trabajo la organizacin internacional de estndares (internacional standards organization- iso) ha desarrollado un modelo de referencia llamado el modelo de referencia para interconexin de sistemas abiertos, lo cual se abrevia como iso, osi o el modelo osi. el modelo osi est diseado para permitir la comunicacin de los sistemas abiertos. un sistema abierto es aquel preparado para comunicarse con cualquier otro sistema abierto mediante estndares que gobiernan el formato, contenido y significado de los mensaje enviados y recibidos. un protocolo es un acuerdo entre las partes acerca de cmo debe desarrollarse la comunicacin. el modelo osi maneja dos tipos generales de protocolos (conexiones).
Protocolos orientados a la conexin. antes de intercambiar datos, el emisor y el receptor deben establecer en forma explcita una conexin y tal vez el protocolo. Protocolos sin conexin. no es necesaria una negociacin previa. en el modelo osi la comunicacin se divide en siete niveles o capas. Cada capa se maneja de forma independiente y se encarga de un aspecto especfico. Cada capa proporciona una interfaz con la capa por encima de ella. la interfaz es un conjunto de operaciones que juntas definen el servicio que la capa est preparada para ofrecer a sus usuarios.

la ventaja de un protocolo por capas es su independencia, ya que una capa puede modificarse o mejorarse sin afectar a las dems. en el modelo osi cuando se va a enviar un mensaje ste pasa por todas las capas comenzando en la de aplicacin. Cada capa le coloca un encabezado al frente o al final, al llegar el mensaje al otro lado, cada capa lo va desmenuzando, quitndole el encabezado que le corresponde; la capa que recibe el mensaje es la capa fsica. Capas Fsica, Enlace de Datos, Red, Transporte, Sesin, Presentacin, Aplicacin la coleccin de protocolos utilizados en un sistema particular se llama una serie de protocolos o pila de protocolos.
50

Capa fsica Su propsito es transportar el flujo de bits de una mquina a otra. el protocolo de la capa fsica se encarga de la estandarizacin de las interfaces elctricas, mecnicas y de sealizacin. maneja elementos como la intensidad de la seal de red, cables, enchufes, voltajes, distancias entre cables. Capa de enlace de datos la tarea principal de esta capa es agrupar a los bits en unidades llamadas marcos o tramas, y detectar y corregir errores. uno de los mecanismos en la deteccin de errores es asignar nmeros secuenciales a las tramas y a cada trama colocarle una suma de verificacin, si no est correcta la suma de verificacin a la hora de recibir el marco, entonces el receptor le pide al transmisor que vuelva a transmitir el marco x. Capa de red la tarea principal de la capa de red es elegir la mejor ruta (a esta actividad se le llama ruteo), la ruta ms corta no siempre es la mejor, lo importante es la cantidad de retraso, y esto complica los algoritmos de ruteo. la capa de red maneja dos protocolos: x.25 (orientado a la conexin) y el iP (sin conexin). Capa de transporte la tarea de la capa de transporte es proporcionar conexiones confiables y econmicas. las conexiones confiables (orientadas a la conexin) se pueden construir por arriba de x.25 o iP. en x.25 los paquetes llegan en orden, en iP no, entonces la capa de transporte es la encargada de ponerlos en orden. el protocolo de transporte oficial iso tiene cinco variantes, tP0, tP1, tP4. los protocolos ms utilizados en esta capa son: tCP (transmisin Control protocolprotocolo para el Control de transmisiones), orientado a la conexin y UdP (universal datagrama protocol- protocolo datagrama universal) que es un protocolo sin conexin. Capa de sesin esta es en esencia una versin mejorada de la capa de transporte. proporciona el control del dilogo facilidades en la sincronizacin, la posibilidad de establecer conexiones llamadas sesiones y la posibilidad de transferir datos sobre las sesiones en forma ordenada. en la prctica rara vez las aplicaciones soportan esta capa.

51

Capa de presentacin esta capa trata los problemas relacionados con la representacin y el significado de los datos. Capa de aplicacin es una coleccin de varios protocolos para actividades comunes como el correo electrnico, la transferencia de archivos y la conexin entre terminales remotas a las computadoras en una red. esta capa contiene los programas de usuario. protocolos utilizados: x.400 para correo electrnico, x.500 para el servidor de directorios. 3.4.2 Modelo cliente servidor el modelo cliente-servidor es un modelo de computacin en el que el procesamiento requerido para ejecutar una aplicacin o conjunto de aplicaciones relacionadas se divide entre dos o ms procesos que cooperan entre s. usualmente la mayora del trabajo pesado se hace en el proceso llamado servidor y el proceso cliente slo se ocupa de la interaccin con el usuario. los principales componentes del esquema cliente-servidor son entonces los Clientes, los Servidores y la infraestructura de comunicaciones. los Clientes interactan con el usuario, usualmente en forma grfica. Frecuentemente se comunican con procesos auxiliares que se encargan de establecer conexin con el servidor, enviar el pedido, recibir la respuesta, manejar las fallas y realizar actividades de sincronizacin y de seguridad. los Servidores proporcionan un servicio al cliente y devuelven los resultados. en algunos casos existen procesos auxiliares que se encargan de recibir las solicitudes del cliente, verificar la proteccin, activar un proceso servidor para satisfacer el pedido, recibir su respuesta y enviarla al cliente. adems deben manejar los interbloqueos, la recuperacin ante fallas, y otros aspectos afines. por las razones anteriores la plataforma computacional asociada con los servidores es ms poderosa que la de los clientes. por esta razn se utilizan PCs poderosos, estaciones de trabajo, minicomputadores o sistemas grandes. adems deben manejar servicios como administracin de la red, mensajes, control y administracin de la entrada al sistema (login), auditora y recuperacin y contabilidad. usualmente en los servidores existe algn tipo de servicio de bases de datos. para que los clientes y los servidores puedan comunicarse se requiere una infraestructura de comunicaciones la cual proporciona los mecanismos bsicos de direccionamiento y transporte. la mayora de los sistemas Cliente/Servidor actuales se basan en redes
52

locales y por lo tanto utilizan protocolos no orientados a conexin, lo cual implica que las aplicaciones deben hacer las verificaciones. la red debe tener caractersticas adecuadas de desempeo, confiabilidad, transparencia y administracin. Como ejemplos de clientes pueden citarse interfaces de usuario para enviar comandos a un servidor, aPis para el desarrollo de aplicaciones distribuidas, herramientas en el cliente para hacer acceso a servidores remotos (por ejemplos servidores de sql) o aplicaciones que solicitan acceso a servidores para algunos servicios. Como ejemplos de servidores pueden citarse servidores de ventanas como x-windows, servidores de archivos como nfs, servidores para el manejo de bases de datos, como los servidores de sql, servidores de diseo y manufactura asistidos por computador, etc 3.4.3 Llamada a un procedimiento remoto (rpc) birrel y nelson abordaron este tema en 1984. en este esquema el programador no se preocupa por la transferencia de mensajes. mediante rPC se puede invocar la ejecucin de un procedimiento en la mquina a que no est en a, sino en B. Operacin bsica de rPC. de manera convencional, cuando un procedimiento es invocado, la direccin que tiene el registro apuntador a la prxima instruccin (iP) es almacenada en la pila, y el registro apuntador ser cargado con la direccin del procedimiento invocado, cuando el procedimiento invocado termina, entonces el registro iP es cargado con la direccin que esta en el tope de la pila y sigue la ejecucin del programa. en la mayora de los casos es necesario enviar parmetros de entrada y obtener parmetro de salida. los lenguajes de programacin como C, utilizan dos tipos de paso de parmetros: por valor o por referencia. en un paso de parmetros por valor se pasa el valor de la variable y no hay problema, puesto que no se modifica la variable. en el caso del paso de parmetro por referencia, lo que se pasa es la direccin, y es posible realizar modificaciones sobre esta variable. existe otra forma de pasar parmetros que no maneja el lenguaje C, este mecanismo se llama copia/restauracin. Quien recibe la llamada copia la variable en la pila, como en la llamada por valor, y entonces copia de regreso la variable despus de la llamada, escribiendo sobre el valor original. el objetivo de un rPC es que se parezca lo ms posible a una llamada local (transparencia). Cuando un servidor se ejecuta por primera vez, lo primero que hace es exportar su interfaz, esto es, el nombre de los servicios y sus parmetros, especificando si son parmetros de
53

entrada o de salida, su versin, su identificador nico y su asa. un proceso llamado conector es quien recibe la interfaz y realiza el registro. el conector adems de realizar el registro de un servidor puede darlo de baja y buscar algn servidor. la versin de un servicio es importante pues indica si un servidor ha sido actualizado o no. as el conector contendr las ltimas versiones de los servidores. este mtodo de exportacin e importacin es altamente flexible. por ejemplo, puede manejar varios servidores que manejen la misma interfaz. pero tiene sus desventajas. el conector se puede convertir en un cuello de botella, adems un proceso puede tener un tiempo de vida corto y el tiempo entre importar y exportar interfaces puede ser significativo. Semntica de rpc en presencia de fallas el objetivo es ocultar la comunicacin, al hacer que las llamadas a los procedimientos remotos se parezcan a los locales. Sin embargo, esto no es tan sencillo. existen cinco clases distintas de fallas que pueden ocurrir en los rPCs.
el cliente no puede localizar al servidor Se pierde el mensaje de solicitud del cliente al servidor Se pierde el mensaje de respuesta del servidor al cliente el servidor falla antes de recibir una solicitud el cliente falla despus de enviar la solicitud

El cliente no puede localizar al servidor debido a que el servidor cambi de direccin y el cliente no se actualiz (tal vez pregunt antes de que se actualizara). en Unix se retorna -1 y una variable global errno, pero si -1 es un valor vlido, habr confusin acerca de si fue error o el resultado de alguna operacin. Otro mecanismo que no tiene la desventaja anterior es que el error provoque una excepcin. por ejemplo se podran utilizar seales. pero no todos los lenguajes tienen excepciones y/o seales. adems el uso de estos mecanismos, destruyen la transparencia. Prdida de mensajes de respuesta Se puede utilizar un cronmetro, si no llega respuesta en un periodo razonable, se enva la solicitud nuevamente. pero qu se perdi, la solicitud, la respuesta o el servidor es lento? Si es la respuesta la que se perdi, entonces esto es ms difcil de enfrentar. algunas
54

operaciones se pueden repetir muchas veces sin efectos colaterales y sin causar daos. a esta propiedad se le llama idempotencia. pero existen operaciones que no son independientes, por ejemplo retirar dinero de un cajero automtico. una posible solucin es asociar un nmero secuencial a cada solicitud. entonces el ncleo del servidor debe mantener un registro del nmero secuencial ms reciente, as podr notar la diferencia entre una solicitud original y las retransmisiones. Como proteccin adicional se podra colocar un bit en el encabezado del mensaje para distinguir las solicitudes originales de las retransmisiones. Fallas del servidor puede suceder que el servidor falle despus de responder o que el servidor falle antes de responder. existen tres escuelas en torno a lo que se debe hacer en este caso:
1. Semntica al menos una vez. Seguir intentando hasta conseguir una respuesta (el servidor puede volver a arrancar o se reconecta un nuevo servidor). Garantiza que la rPC se realiza al menos una vez o ms veces. Semntica a lo ms una vez. Se da por vencido inmediatamente e informa de la falla. la rPC se realiza a lo ms una vez o ni una sola vez. no garantiza nada.

2. 3.

Fallas del cliente Cuando un cliente falla despus de enviar una solicitud sin que haya recibido respuesta, existir una labor de cmputo de la cual nadie espera respuesta. a esta labor de cmputo no deseada se le llama hurfano. problemas que puede provocar un hurfano.
desperdiciar ciclos de CPU bloquear archivos o capturar recursos valiosos Crear confusin (si el cliente vuelve a arrancar y realiza de nuevo la rPC, la respuesta puede ser inmediata y entonces no sabr lo que pas)

Qu hacer con los hurfanos? nelson (1981) hizo un estudio acerca de este problema y propuso lo siguiente:
exterminacin. antes de enviar la solicitud, el resguardo del cliente crea un registro de lo que se va a hacer y lo almacena en dusci. al volver a arrancar (el cliente) se verifica el contenido del registro y se elimina al hurfano. 55

desventaja. Gasto en la escritura y disco. Si hay ms hurfanos es muy probable que no se puedan localizar no es un buen mtodo. reencarnacin. Se divide el tiempo en pocas. Cuando el cliente arranca de nuevo enva un mensaje a todas las mquinas que declaran el inicio de una poca. Se eliminan los cmputos remotos que estn fuera de poca. reencarnacin sutil. utiliza tambin pocas, pero el que est ejecutando el rPC verifica si existe el dueo de la rPC cuando le llega un mensaje de cierta poca, si no existe elimina la operacin. expiracin. Se asigna a cada rPC una cantidad de tiempo, si no puede terminar en ese tiempo pide otro quantum, sino entonces se elimina el proceso.

en la prctica ninguno es recomendable. la eliminacin de un hurfano puede traer consecuencias. Protocolos rpc
Orientado a la conexin ventaja. Comunicacin fcil desventaja: prdida de desempeo Sin conexin en este caso se debe adaptar el protocolo para garantizar seguridad. algunos sistemas utilizan UdP o UdP integrado a iP. ventajas el protocolo ya ha sido diseado estos protocolos son utilizados en casi todos los sistemas Unix. UdP e iP son soportados por muchas redes existentes. desventajas Cada protocolo forma un paquete con varios campos y adems ambos realizan una suma de verificacin. lo anterior hace que se pierda el desempeo. alternativa utilizar un protocolo especializado para rPC, que debe ser diseado e implantado por el programador.

Con respecto a la longitud del paquete y el mensaje, sale ms caro hacer 64 rPC de 1k que 1 rPC de 64k. por lo tanto el protocolo debe permitir las transmisiones largas (Sun Microsystems 8k, el lmite de Ethernet es de 1536 bytes).
56

Reconocimientos
1. 2. protocolo detenerse y esperar. enva un paquete y espera reconocimiento. los paquetes son enviados uno a uno. protocolo de chorro. el cliente enva todos los paquetes tan pronto como pueda. as el servidor reconoce todo el mensaje al recibir todo el paquete, y no uno por uno.

Propiedades del protocolo detenerse y esperar Si se daa o pierde un paquete, el cliente no puede recibir a tiempo un reconocimiento, por lo que vuelve a transmitir el paquete defectuoso. en el protocolo de chorro s se pierde el paquete 1 pero le llega de manera correcta; puede abandonar todo y esperar a que el cliente vuelva a transmitir todo el mensaje o esperar con la esperanza de que 3 llegue bien y luego pedirle al cliente que enve el paquete 1. a esto se le llama repeticin selectiva. 3.4.4 Comunicacin en grupo para rPC la comunicacin slo es entre dos partes: el cliente y el servidor. a veces existen casos donde es necesario que varios procesos se comuniquen (por ejemplo, enviar un mensaje a todos los usuarios avisando que el sistema ser dado de baja temporalmente para darle mantenimiento). un grupo es una coleccin de procesos que actan juntos en cierto sistema o alguna forma determinada por el usuario. la propiedad fundamental de un grupo es que cuando se enva un mensaje al propio grupo, todos los miembros de ste lo reciben. a este tipo de comunicacin se le llama unomuchos (la de cliente-servidor es una comunicacin puntual). los grupos son dinmicos, se pueden crear nuevos y destruir anteriores. un proceso puede unirse a un grupo o dejarlo. un proceso puede ser miembro de varios grupos a la vez. la implantacin de comunicacin en grupo depende del hardware en gran medida.
Multitransmisin. Cuando se enva un mensaje a un grupo ste se recibe automticamente en todas las mquinas que escuchan esa direccin. Cada grupo escucha una direccin de multitransmisin. Transmisin simple. los procesos deben ser concientes acerca de a cul grupo pertenecen porque el mensaje lo verifican todos y slo los miembros del grupo al cual va dirigido el mensaje lo toman. la desventaja es que si un proceso no pertenece al grupo entonces descarta el mensaje, pero esto implica desperdicio de tiempo. 5

Unitransmisin. el mensaje es enviado a cada proceso uno a uno, es decir, si el grupo tiene n miembros, se envan n paquetes.

Grupos cerrados vs. Grupos abiertos los procesos pueden clasificarse en grupos cerrados y grupos abiertos. en un grupo cerrado slo los miembros del grupo pueden enviar mensajes al grupo. en un grupo abierto cualquiera puede enviar mensajes al grupo. Grupos de compaeros vs. grupos jerrquicos Otra forma de clasificar a los grupos es en grupos de compaeros y grupos jerrquicos. en un grupo de compaeros todos los procesos son iguales, la ventaja es que si uno falla los dems pueden seguir trabajando. la desventaja es que al tomar una decisin se debe votar, esto implica mayor retraso y costo. en el caso de un grupo jerrquico existe un jefe o coordinador, la ventaja es que hay menos retraso y costo, la desventaja es que si falla el jefe, el grupo hace un alto. Membresa del grupo para manejar la creacin y eliminacin de grupos, as como permitir a los procesos que se unan o dejen grupos se puede utilizar un servidor de grupos. este servidor debe mantener una base de datos acerca de qu grupos existen y quines lo forman. la desventaja es que si el servidor falla, se pierde informacin acerca de grupos y tal vez deban ser reconstruidos los grupos totalmente. Otro mtodo es manejar la membresa de grupo en forma distribuida. en un grupo abierto un extrao puede enviar un mensaje a todos los miembros del grupo para anunciar su presencia. en un grupo cerrado es necesario algo similar. para salir del grupo se debe enviar mensaje de despedida a todos. Si un miembro falla, al no haber mensaje de despedida, los otros miembros se darn cuenta al tratar de comunicarse con l, entonces sino responde, lo eliminan de su grupo.

58

3.5 sinCronizaCin en sisteMas distriBUidos 3.5.1. Sincronizacin de relojes en general los algoritmos distribuidos tienen las siguientes propiedades:
1. 2. 3. 4. la informacin relevante se distribuye entre varias mquinas los procesos toman las decisiones slo con base en la informacin debe evitarse un punto de fallo en el sistema no existe un reloj comn o alguna otra fuente precisa del tiempo global

Algoritmo de Lamport lamport seal que la sincronizacin de relojes no tiene que ser absoluta. Si dos procesos no interactan no es necesario que sus relojes estn sincronizados. adems lo que importa no es que los procesos concuerden de manera exacta en la hora, sino que coincidan en el orden en el cual ocurren los eventos. as para cierta clase de algoritmos lo que importa es la consistencia interna de los relojes, no su particular cercana al tiempo. para estos algoritmos los relojes se denominan relojes lgicos. lamport defini una relacin llamada a ocurre antes de b (ab). esta relacin se puede observar de manera directa en dos situaciones:
1. 2. Si a y b son eventos en el mismo proceso y a ocurre antes de b, entonces ab es verdadero. Si a es el evento de envo de un mensaje por un proceso y b es el evento de la recepcin del mensaje por otro proceso, entonces ab tambin es verdadero.

el algoritmo de lamport consiste en lo siguiente, cuando un proceso a enva un mensaje el mensaje lleva consigo su marca de tiempo C(a), si el proceso receptor b tiene un tiempo C(b) mayor que el del proceso a, entonces el mensaje es aceptado y no pasa nada. pero si la marca de tiempo de a, es decir C(a) es mayor que C(b), entonces el proceso b ajusta su reloj, toma la marca de tiempo C(a) y le suma uno (ver siguiente figura). lamport plantea que dos eventos no ocurren exactamente al mismo tiempo. Con este algoritmo se puede obtener un orden total para todos los eventos del sistema.

59

0 0 2 4 6 8 10 12 14 16 18 20

1 0 3 6 9 12 15 18 21 24 2 30

2 0 1 2  8 9 10 25 26 28 2

3 0 4 8 12 16 20 24 28 32 40 36

Algoritmo de Cristian Cuando un sistema hace uso de un servidor de tiempo (quiz porque tiene instalado un receptor wwV para obtener un tiempo real), se puede usar el algoritmo de Cristian. este algoritmo consiste en que todos los clientes se sincronicen con el servidor de tiempo en forma peridica. Segn el algoritmo de Cristian el tiempo no debe correr hacia, por lo tanto el cambio debe realizarse de forma gradual, esto se consigue haciendo lo siguiente, si se generan 100 interrupciones por segundo, lo normal es que se tengan que aadir 10 milisegundos en cada interrupcin. entonces si se quiere atrasar un reloj, se podran aadir 9 o menos milisegundos en cada interrupcin hasta que el reloj est sincronizado. Si lo que se quiere es adelantar el reloj entonces en cada interrupcin hay que aadir 11 milisegundos hasta lograrlo. Otro problema en este algoritmo es que el tiempo que tarda el servidor en responder al emisor es distinto de cero. pero este retraso depende de factores como, por ejemplo la carga de ese momento en el sistema. una forma de medirlo es tomando el tiempo inicial ti y el tiempo final tf obtener la diferencia y dividirlo entre 2, (tf ti)/2. Algoritmo de Berkeley en el algoritmo de Cristian el servidor de tiempo es pasivo. en el caso del algoritmo de berkeley est activo y realiza un muestreo de forma peridica a todas las mquinas para
60

preguntarles su tiempo. en base al tiempo de todas las mquinas incluyndose l mismo, obtiene el promedio y les indica a cada mquina cunto tiempo deben adelantarse o retrasarse para lograr la sincronizacin. al igual que en Cristian, para adelantar o retrasar el reloj hay que hacerlo paulatinamente de acuerdo a las interrupciones que genera el cronmetro. procedimiento
1. 2. el servidor de tiempo le enva a cada mquina su tiempo las mquinas cliente le indican el nmero de segundos que estn adelantadas o retrasadas con respecto al tiempo del servidor, si es un nmero positivo entonces estn adelantadas y si es negativo estn atrasadas. el servidor suma todos estos datos y los divide entre el nmero de mquinas incluyndose l mismo. el resultado lo suma a su propio tiempo obteniendo t, y calcula el nmero de segundos que le falta o le sobra a una mquina para llegar a ese tiempo t, y se lo enva a la mquina. lo mismo hace para cada mquina. las mquinas reciben el resultado y sincronizan su tiempo.

3. 4.

5.

una modificacin es considerar el tiempo que tardan los mensajes y sumarlo a la respuesta del servidor. ejemplo: Supongamos que tenemos cuatro mquinas y una de ellas es el servidor de tiempo. las mquinas tienen los siguientes tiempos (en este caso manejaremos el tiempo en minutos): t=(-62+48+24)/4=+2 le suma 2 al servidor.
+24 -62
14:10 16:00

15:12

15:14

-22 +64
15:36 14:10

+48

-46
16:00 15:36

una mejora es eliminar los tiempos que estn muy alejados del tiempo del servidor.

61

3.5.2 Exclusin mutua Un algoritmo distribuido (el algoritmo de ricart y agrawala ) este algoritmo requiere de un orden total de todos los eventos en el sistema. para cualquier pareja de mensajes debe quedar claro quin ocurri primero. Cuando un proceso desea entrar a la regin crtica, construye un mensaje con el nombre de sta, su nmero de proceso y la hora actual, y la enva a todos los dems procesos y de forma conceptual a l mismo. Se puede utilizar comunicacin en grupo confiable. Cuando un proceso recibe un mensaje de solicitud de otro proceso para entrar a una regin crtica, debe distinguir tres casos:
1. 2. 3. Si el receptor no est en la regin crtica y no desea entrar a ella, enva de regreso un mensaje ok al emisor. Si el receptor desea entrar a la regin crtica, no responde, sino que forma la solicitud en una fila. Si el receptor desea entrar a la regin crtica, pero no lo ha logrado todava, compara la marca de tiempo en el mensaje recibido con la marca contenida en el mensaje que envi a cada uno. la menor de las marcas gana. Si el mensaje recibido es menor, el receptor enva un mensaje ok. Si su propio mensaje tiene una marca menor, el receptor forma la solicitud en una fila y no enva nada.

un proceso puede entrar a la regin crtica si obtiene permiso de todos. Si es as, entra y cuando sale enva mensajes ok a todos los procesos de su fila y elimina los elementos de la fila. Con este mtodo la exclusin mutua queda garantizada sin bloqueo ni inanicin. el nmero de mensajes necesarios por entrada es de 2(n-1), donde n es el nmero total de procesos en el sistema. ejemplo: Supongamos que tenemos cuatro procesos numerados del 0 al 3, los procesos 1 y 3 desean entrar a la regin crtica, 0 no desea entrar a la regin crtica y 2 est dentro de la regin crtica. los procesos 1 y 3 envan mensaje casi al mismo tiempo, pero la marca de 3 es menor a la de 1 (1 tiene marca de tiempo igual a 3 y 3 tiene marca de tiempo igual a 2). Cuando 0 recibe el mensaje de 3 le otorga el permiso, como la marca de tiempo de 3 es menor que la de 1 entonces 1 debe enviar un mensaje de ok a 3, 2 est dentro de la regin crtica por lo que forma el mensaje de 3 en una fila.
62

Cuando 0 recibe el mensaje de 1 le responde con un ok, 3 al recibir el mensaje de 1 checa su propia marca de tiempo, como su marca de tiempo es menor que la de 1 entonces forma la solicitud de 1 es una fila y no responde nada. el proceso 2 al recibir mensaje de 1, forma el mensaje en una fila ya que 2 est en la r.c.

3 0 2 1 3 2 2
Esta dentro de la regin crtica

Los procesos 1 y 3 envan mensajes con su marca de tiempo

ok 0 ok 1 ok
Respuesta de los procesos al mensaje de 1 y3

3 1 fila

1 fila

el proceso 3 tiene el permiso de 0 y 1 para entrar a la regin crtica, y el proceso 1 tiene el permiso de 0. Cuando 2 sale de la regin crtica enva mensajes de ok a los procesos de su fila, en este caso, a los procesos 3 y 1.

63

0 ok
3 1 fila

2 sale de la regin crtica

ok 2 3
1

el proceso 3 ya tiene el permiso de todos por lo tanto puede entrar a la r.c., mientras que el proceso 1 debe esperar a que 3 salga de la regin crtica. Cuando 3 salga de la regin crtica debe enviar un mensaje de ok al proceso 1. ahora existen n puntos de falla. Sino hay respuesta, se interpretar como una negacin de permiso, an cuando el proceso haya muerto, podra haber bloqueos. una posible modificacin es la siguiente, cada vez que se haga una solicitud debe haber una respuesta negativa o positiva. Funciona bien con comunicacin en grupo, donde se tenga un registro de los integrantes del grupo, quines entran y quines han salido o han fallado. Funciona bien con grupos pequeos. el algoritmo es ms lento, ms complejo y ms caro y menos robusto que el centralizado. pero sirve para estimular a investigadores a producir algoritmos tiles.

64

Algoritmo de anillo de fichas Se necesita construir un anillo lgico, donde a cada proceso se le asigna una posicin en el anillo. Se da una ficha al primer proceso, la cual circula en todo el anillo. Si necesita entrar a la regin crtica y tiene la ficha, entonces entra, cuando sale de ella entrega la ficha al siguiente proceso. no se permite entrar a una segunda regin crtica con la misma ficha. Si un proceso no est interesado en entrar a la regin crtica slo pasa la ficha. problemas. la ficha se puede perder, hay que regenerarla Cunto tiempo un proceso debe esperar para considerar que la ficha se ha perdido? tal vez alguien la est ocupando. Si un proceso falla, se puede solucionar solicitando un reconocimiento al vecino al recibir la ficha. Si no hay reconocimiento se da por muerto y se entrega la siguiente ficha al siguiente proceso. Se debe actualizar el grupo de procesos. 3.5.3 Algoritmos de eleccin en muchos algoritmos distribuidos es necesario que un proceso acte como coordinador cmo elegirlo? Supondremos que cada proceso tiene asociado un nmero nico. en general, los algoritmos de eleccin intentan localizar el proceso con el mximo nmero de proceso y designarlo como coordinador. adems supondremos que cada proceso conoce el nmero de proceso de todos los dems. el objetivo de un algoritmo de eleccin es garantizar que al inicio de una eleccin, sta concluya con el acuerdo de todos los procesos con respecto a la identidad del nuevo coordinador. El algoritmo del granduln (Garca-Molina 1982) un proceso P realiza una eleccin cuando se da cuenta que el coordinador no responde, de la siguiente forma:
1. 2. 3. enva un mensaje eleccin a los dems procesos con un nmero mayor. Si nadie responde, P gana la eleccin y se convierte en el coordinador. Si uno de los procesos con un nmero mayor responde, toma el control. el trabajo de termina.
P

Cuando un proceso toma el papel del coordinador debe enviar un mensaje coordinador a los dems procesos par que stos se den por enterados. Si un proceso inctico se activa, realiza una eleccin. Si tiene el nmero mayor, ganar la eleccin. de ah el nombre de algoritmo del granduln.
65

falla eleccin 5 0 4 ok

3 1 2

falla 5 0 4 0 5

falla

3 1 2 falla 5 0 4 coordinador 3 1 2 1 2

66

Un algoritmo de anillo este algoritmo no utiliza una ficha. Suponemos que los procesos tienen un orden y que conocen a su sucesor. Cuando algn proceso observa que el coordinador no funciona, construye un mensaje eleccin con su propio nmero de proceso y enva el mensaje a su sucesor. Si ste est inactivo, el emisor pasa sobre el sucesor y va hacia el siguiente nmero del anillo. el emisor aade su propio nmero de proceso a la lista en el mensaje. Cuando el mensaje da toda la vuelta (el proceso recibe un mensaje con su propio nmero). entonces circula de nuevo el mensaje anunciando quien es el nuevo coordinador (el del nmero ms grande) y adems se anuncia quines son miembros del anillo. ejemplo: Supongamos que tenemos 6 procesos numerados del 0 al 5, el proceso 5 es el coordinador pero ha fallado, el primero en darse cuenta en el proceso 2, as que enva mensajes de eleccin, cuando recibe un ok, sabe que su trabaja ha terminado. 3 enva mensajes de eleccin lo mismo que 4, 4 no recibe ningn ok, por lo que asume que l es el nuevo coordinador. 3.5.4. Transacciones atmicas Son una abstraccin de mayor nivel, que oculta aspectos tcnicos y permite a los programadores concentrarse en los algoritmos y la forma en que los procesos trabajan juntos en paralelo. Cuando un proceso desea llevar a cabo una transaccin les pregunta a los procesos que llevarn a cabo las operaciones si se comprometen, en caso de que se comprometan todos, entonces los resultados se vuelven permanentes, si uno de ellos o ms no se comprometen entonces la transaccin se aborta. y todo debe regresar al estado hasta antes de empezar la transaccin, sin que existan efectos colaterales. un ejemplo de transaccin es cuando se lleva a cabo una operacin bancaria. El modelo de transaccin Se supone que el hardware subyacente maneja de manera transparente los errores de comunicacin (retransmisiones, almacenamiento de informacin en bferes, etc.)

6

Almacenamiento estable el almacenamiento estable tiene tres categoras:


1. 2. 3.
raM

disco duro, que puede daarse debido a problemas con la cabeza lectora del disco. almacenamiento estable. Se puede implantar con dos disco ordinarios.

Cada bloque en la unidad 2 es una copia exacta del bloque correspondiente en la unidad. Se supone que la unidad 1 es correcta. Primitivas de transaccin los sistemas que manejan transacciones deben tener al menos las siguientes primitivas. 1. Begin_transaCtion 2. end_transaCtion 3. aBort_transaCtion 4. read 5. write lo que est dentro de Begin_transaCtion y end_transaCtion se debe llevar a cabo todo o nada. Propiedades de las transacciones (acid) las transacciones tienen cuatro propiedades fundamentales. las transacciones son:
1. 2. 3. atmicas. para el mundo exterior, la transaccin ocurre de manera indivisible. Consistentes. la transaccin no viola los invariantes del sistema. aisladas. las transacciones concurrentes no interfieren entre s. Si dos o ms transacciones se ejecutan al mismo tiempo, para cada una de ellas y para los dems procesos, el resultado final aparece como si todas las transacciones se ejecutasen de manera secuencial en cierto orden (el resultado no debe verse afectado en caso de intercalar los procesos). durables. una vez comprometida una transaccin, los cambios son permanentes.

4.

Transacciones anidadas las transacciones pueden contener subtransacciones, a menudo llamadas transacciones. la transaccin de nivel superior puede producir hijos que se ejecuten en paralelo entre s, en procesadores distintos, para mejorar el desempeo. Cada hijo puede a su vez tener ms hijos.
68

Si una subtransaccin falla, entonces la transaccin de orden superior (de la cual derivan todas) debe abortar, as los compromisos hechos por las dems subtransacciones deben deshacerse. por lo tanto la durabilidad slo se aplica a las transacciones del nivel ms alto. Implantacin Espacio de trabajo privado Cuando un proceso inicia una transaccin se le otorga un espacio de trabajo privado, si la transaccin se compromete, se copia el estado del espacio de trabajo privado al real; pero si aborta, no pasa nada y el espacio de trabajo real no se modifica. una mejora es crear en el espacio de trabajo privado, apuntadores a los bloques con los cuales la transaccin va a trabajar; si la operacin es una escritura, se copia el bloque al espacio privado y se modifica. Cuando la transaccin se compromete, los apuntadores se desplazan hacia el espacio de trabajo real de forma atmica, y los que estaban en el espacio de trabajo real se marcan como bloques libres. Si la operacin es una lectura no hay necesidad de copiar los bloques. Si la transaccin aborta, los bloques en el espacio de trabajo privado (las copias) se marcan como bloques libres y los apuntadores se eliminan. Bitcora de escritura anticipada en este caso antes de cambiar cualquier bloque, primero se escribe un registro de la bitcora de escritura anticipada la transaccin que realiza el cambio, el archivo y bloques modificados y los valores anterior y nuevo. despus de esto se realiza el cambio en el archivo. Si la transaccin se compromete se escribe un registro en la bitcora acerca de esta accin, las estructuras de datos ya no tienen que modificarse puesto que ya estn modificadas. en caso de que la transaccin aborte, slo hay que realizar las operaciones de la bitcora de la ltima ala primera para deshacer cada cambio realizado. a esta accin se le llama retroalimentacin. Protocolo de compromiso de dos fases en un sistema distribuido el llevar a cabo una transaccin requiere, muchas de las veces, de la cooperacin de varios procesos en diferentes mquinas. la idea del protocolo de dos fases es la siguiente: uno de los procesos funge como coordinador y es quien realmente
69

ejecuta la transaccin. el protocolo de compromiso comienza cuando el coordinador escribe una entrada en la bitcora indicando el inicio del protocolo, despus enva un mensaje a cada uno de los procesos implicados para que estn listos para el compromiso. Cuando uno de los procesos implicados recibe el mensaje, verifica si est listo para comprometerse, escribe una entrada en la bitcora y enva de regreso su decisin. Cuando el coordinador recibe todas las respuestas, sabe si establece el compromiso o aborta. Si uno o ms procesos no se comprometen (o no responden), la transaccin aborta. de cualquier modo, el coordinador escribe una entrada en la bitcora y enva entonces un mensaje a cada subordinado para informarle de la decisin. el uso de la bitcora permite que si el coordinador falla pueda recuperarse puesto que todo lo ha escrito en la bitcora. Control de concurrencia Cerradura Cuando un proceso necesita leer o escribir en un archivo como parte de una transaccin, primero cierra el archivo. el control de cerraduras puede implantarse a travs de un controlador centralizado o uno local en cada mquina, ste controlador mantendr una lista de los archivos cerrados y rechazar los intentos de otros procesos por cerrar un archivo ya cerrado. para mejorar este esquema se podran distinguir las cerraduras de lectura de las de escritura. Se puede compartir una cerradura para lectura (varios procesos pueden leer del mismo archivo pero se excluyen los escritores para que no puedan modificar el archivo), pero la cerradura de escritura debe ser exclusiva de un solo proceso. Cerradura de dos fases la adquisicin y liberacin de las cerraduras en el preciso momento en que se necesiten o se dejen de necesitar puede conducir a cierta inconsistencia y a bloqueos. en vez de esto, si el proceso durante su ejecucin necesita de varias cerraduras, primero las adquiere en la fase de crecimiento y las libera en la fase de contraccin. as si un proceso no puede adquirir todas las cerraduras que necesita, entonces libera las que llevaba hasta el momento, espera y vuelve a comenzar.

0

Cerradura estricta de dos fases en este caso el proceso adquiere primero todas las cerraduras y las libera slo hasta que la transaccin haya terminado o aborte. Control optimista de la concurrencia el control optimista de la concurrencia mantiene un registro de los archivos ledos o en los que se ha escrito algo. en el momento del compromiso se verifican todas las dems transacciones para ver si alguno de los archivos ha sido modificado desde el inicio de la transaccin. Si esto ocurre, la transaccin aborta, si no se realiza el compromiso. esto se trabaja mejor si se utiliza espacio de trabajo particular. 3.5.5 Bloqueos en sistemas distribuidos Prevencin distribuida de bloqueos la prevencin de bloqueos consiste en el diseo cuidadoso del sistema, que cada proceso ocupe slo un recurso a la vez, exigir que los procesos soliciten los recursos desde un principio y hacer que liberen todo cuando soliciten uno nuevo. llevar esto a la prctica puede ser un poco difcil. existen dos algoritmos bsicos siguiendo esta idea. 1. Espera-muerte en este se clasifican los procesos en dos: antiguos y viejos.(ver fig. 3.25). Con esto tenemos dos casos:
el proceso nuevo est ocupando un recurso, debido a que el antiguo ya lleva mucho tiempo en ejecucin y ha consumido recursos con anterioridad, se opta por dejar que el proceso espere hasta que el joven termine para que pueda continuar su ejecucin. un proceso joven requiere un recurso que est siendo ocupado por uno viejo. aqu se opta por matar al proceso joven para que el viejo contine su ejecucin, teniendo en cuenta que el proceso al ser joven volver ha ser invocado un poco despus, por lo que en algn momento al ejecutar este proceso encontrar el recurso libre.

1

2. Herida-espera en este se retoma la idea anterior de proceso joven y viejo por lo que volvemos a tener los mismos casos. (ver fig. 3.26)
un proceso viejo requiere recursos ocupados por uno joven. aqu se elimina la transaccin del proceso joven y el proceso viejo toma su lugar. un proceso joven requiere recursos que tiene un proceso viejo. aqu el proceso joven espera hasta que el viejo termine, de este modo se evita el estar matando a un proceso continuamente.

2

3.6 toleranCia de fallas Fallas de componentes una falla es un desperfecto causado por un error de diseo, de fabricacin, de programacin, fsico, tiempo, condiciones ambientales, etc. las fallas se clasifican en:
Transitorias. Ocurren una vez y despus desaparecen. Intermitentes. desaparecen y reaparecen. Permanentes. Continuan existiendo hasta reparar el componente con el desperfecto.

el objetivo del diseo y construccin de sistemas tolerantes a fallas consisten en garantizar que el sistema contine funcionando de manera correcta como un todo, incluso en la presencia de fallas. Fallas del sistema Se pueden distinguir dos tipos de fallas del procesador:
Fallas silentes. un procesador que fallas slo se detiene y no responde a las entradas subsecuentes ni produce ms entradas (tambin se llaman fallas de detencin). Fallas bizantinas. un procesador que falla contina su ejecucin, proporcionando respuestas incorrectas a las preguntas, y posiblemente trabajando de manera maliciosa junto con otros procesadores que han fallado, para dar la impresin de que todos funcionan de manera correcta aunque no sea as.

Sistemas sncronos vs. asncronos en el contexto de la investigacin relativa a la tolerancia a fallas, un sistema que tiene la propiedad de responder siempre a un mensaje dentro de un lmite finito conocido, es sncrono. un sistema que no tiene esta propiedad es asncrono. Uso de redundancia el mtodo general para la tolerancia de fallas consiste en el uso de redundancia. existen tres tipos posibles:
3

Redundancia de la informacin. Se agregan bits para poder recuperar los bits revueltos. Redundancia del tiempo. Se realiza una accin y en caso necesario se vuelve a realizar. este tipo de redundancia es de utilidad cuando las fallas son transitorias o intermitentes. Redundancia fsica. Se trata de agregar equipo adicional.

Formas de organizar procesadores


rplica activa respaldo primario

Tolerancia de fallas mediante rplica activa (mtodo de la mquina de estados) las solicitudes deben ser recibidas y procesados en el mismo orden. un sistema es tolerante de ka fallas si puede sobrevivir a fallas de k componentes, entonces son necesarios k+1 componentes. Tolerancia de fallas mediante respaldo primario
2.Realiza el trabajo 1.Solicitud Cliente 6.Respuesta Primario 3.Actualiza Respaldo 5.Reconocimiento 4.Realiza el trabajo

Acuerdos en sistemas defectuosos


el problema de los dos ejrcitos el problema de los generales bizantinos

4

ejerCiCios

1. Suponga que usted ejecuta un proceso en linux, en la carpeta donde est almacenado el ejecutable de tal proceso se almacenan tres ejecutables ms. usted esta leyendo su correo electrnico y en otra consola est escribiendo un programa en c llamado procesos. c. Cuntos procesos en este contexto (slo en este contexto sin tomar en cuenta bash) existen? a) 3 b) 6 c)  d) no se sabe 2. Suponga que un proceso realiza una operacin down sobre un semforo cuyo valor es cero, a qu estado pasara ste proceso? a) dormido b) listo c) bloqueado d) en ejecucin 3. Suponga que la tabla de PCBs consta de 100 entradas, de las cuales 50 de ellas estn vacas, 20 son procesos listos, 29 son procesos bloqueados cuntos procesos estn en estado de dormido? 4. el despachador de ________ maneja las operaciones que tiene que ver con el cambio de estado de los procesos de bloqueados a listos. a) de largo plazo b) de mediano plazo c) de corto plazo d) de dos niveles 5. Suponga que tenemos 4 procesos en el sistema en el siguiente orden. el proceso 1 tiene un tiempo de ejecucin de 100 ms, el segundo de 120 ms, el tercero de 20 ms, y el cuarto de 5 ms. Suponga tambin que se est utilizando el algoritmo de round robin (rebanadas de tiempo) y que el quantum (rebanada de tiempo) es de 30 ms y el cambio de contexto es de 1ms. Cul ser el tiempo de terminacin del proceso 3 tomando en cuenta que el proceso 2 se bloquear en su tiempo 10ms?, el proceso 1 es el que est a punto de ejecutarse? 6. la tabla de PCBs contiene informacin referente a los procesos del sistema, tales como identificador de proceso, valores de registro, etc. exCePto: a) apuntador a su tabla de descriptores b) Cdigo del proceso c) direccin de la siguiente instruccin en ejecutarse d) estado del proceso
5

. Cuando un proceso es interrumpido por el despachador para permitir la ejecucin de otro proceso, se debe restablecer el ambiente del proceso a ejecutarse, y almacenar el del proceso interrumpido. a esta actividad se le llama ____________ a) spooling b) Cambio de contexto c) intercambio d) Fallo de pgina 8. Suponga que la tabla de PCBs consta de 100 entradas, de las cuales 50 de ellas estn vacas, 20 son procesos listos, 29 son procesos bloqueados cuntos procesos estn en estado de dormido? 9. Suponga estamos utilizando un despachador ____________, este tipo de despachador lleva a los proceso del estado dormido al listo a) de largo plazo b) de mediano plazo c) de corto plazo d) de dos niveles 10. Suponga que tenemos 4 procesos en el sistema en el siguiente orden. el proceso 1 tiene un tiempo de ejecucin de 100 ms, el segundo de 120 ms, el tercero de 20 ms, y el cuarto de 5 ms. Suponga tambin que se est utilizando el algoritmo de round robin (rebanadas de tiempo) y que el quantum (rebanada de tiempo) es de 30 ms y el cambio de contexto es de 1ms. Cul ser el tiempo de espera del proceso 2, tomando en cuenta que el proceso 1 es el que est a punto de ejecutarse? 11. Suponga que tenemos 10 procesos, cada uno tiene una duracin de 300ms. 3 procesos son de prioridad 3, 3 de prioridad 2 y 4 de prioridad 1. el algoritmo de despacho que estamos utilizando es el de colas mltiples, la cual maneja slo 3 prioridades donde 1 es la mxima prioridad. el quantum para la primera prioridad es de 50ms, el de la segunda 60ms y el de la tercera 100ms. en cunto tiempo sern despachados todos los procesos? 12. Suponga que tenemos 10 procesos de los cuales 5 son procesos del sistema, 4 procesos de usuario (es este el orden de la lista de procesos). los procesos del sistema tienen una duracin de 200 ms cada uno, y hacen una llamada al sistema cada 90ms. los procesos
6

de usuario son interactivos y hacen una operacin de e/S cada 80ms, y su duracin es de 300ms. Qu proceso es el primero en terminar?Qu proceso es el ltimo en terminar? 13. Suponga que tenemos un sistema en donde no se sabe mucho acerca del comportamiento de los procesos, pero es necesario agilizar su despacho, sin ocasionar cuellos de botella. Qu clase de asignacin de procesos a procesadores utilizaramos? a) Global, ptimo, heurstico b) iniciado por el emisor, heurstico, centralizado c) iniciado por el receptor, subptimo, global d) local, heurstico, distribuido 14. Suponga que usted est utilizando un sistema operativo distribuido, y tiene que salir un momento de la oficina, cuando regresa los procesos intrusos son migrados a otras mquinas. Qu modelo de sistema est utilizando? a) estaciones de trabajo b) pila de procesadores 15. Cuando un proceso es migrado a otra mquina existen ciertas operaciones que deben ser realizadas en la mquina origen y otras en la mquina destino. mencione dos de cada una. Origen: ______________________________________ destino: _______________________________________________ 16. la capa del modelo osi que tiene que ver con el enrutamiento de los paquetes es a) enlace de datos b) red c) transporte d) presentacin 1. mencione una desventaja que tienen los modelos por capas para ser utilizados en sistemas distribuidos. _________________________________________ 18. atM es una red de alta velocidad que fue creada con un fin diferente al de los modelos osi y tCP/iP. Cul fue ese fin? _______________________________________



19. un ejemplo de algoritmo de asignacin de procesos a procesadores centralizado es a) determinstico segn la teora de grafos b) arriba abajo c) Jerrquico d) remates 20. en ambientes distribuidos, cuando dos procesos que se comunican se estn ejecutando en nodos diferentes, sera importante para mejorar su desempeo, que ambos en sus respectivos nodos se despachen exactamente en el mismo instante de tiempo. a esta tcnica se le llama: a) planificacin distribuida b) Scheduler c) retroalimentacin d) Coplanificacin 21. Suponga que usted es el diseador de un sistema operativo distribuido y es necesario que disee primitivas de comunicacin clienteservidor. necesita garantizar que cuando un emisor ejecute un send y el receptor no est listo el mensaje no se pierda. adems debe garantizar que el mensaje realmente llegue a su destino. Qu tipo de primitivas debe disear? (Selecciona todas las que correspondan) a) primitivas sncronas b) primitivas asncronas c) primitivas almacenadas en buffer d) primitivas no almacenadas en buffer e) primitivas confiables f) primitivas no confiables 22. uno de los mayores problemas de la comunicacin en grupo utilizando unitransmisin es: a) el ordenamiento de paquetes b) el hardware a) los protocolos utilizados b) los reconocimientos

8

23. el tipo de paso de parmetros utilizado por rPC para cubrir la dolencia que tiene rPC con el paso de parmetros por referencia se llama: a) Copiado b) valor/copiado c) Copia/nombre d) Copia/restauracin 24. rPC tiene una ventaja frente al modelo cliente servidor. Cul es? a) transparencia b) desempeo c) Confiabilidad d) escalabilidad 25. Cuando un proceso que no pertenece a un grupo de procesos puede enviar un mensaje a todo ese grupo de procesos, decimos que ese grupo de procesos es: a) Jerrquico b) de amigos c) abierto d) Cerrado 26. la ventaja de los semforos frente a la tcnica de dormir y despertar para la sincronizacin de procesos es (seleccione todas las que apliquen) a) Que las operaciones de los semforos no son bloqueantes b) Que los semforos guardan despertares c) Que las operaciones de los semforos son atmicas d) Que los semforos pueden ser manipulados a travs de arreglos 2. Cuando los procesos estn en mquinas diferentes, qu debemos utilizar para sincronizar procesos? a) monitores b) paso de mensajes c) Seales 28. Suponga que tenemos 5 procesos instalados en diferentes computadoras, y cada una de ellas maneja un tiempo que difiere por 10 minutos entre cada una de ellas, es decir, la mquina a tiene el tiempo 3:25, la b tiene el tiempo 3:35, la C 3:45, la d 3:55, y la e 4:05. aplique lamport para sincronizar las mquinas, de tal manera que se utilice el mnimo nmero de mensajes.
9

29. Suponga que tenemos el escenario anterior, pero ahora tenemos un servidor de tiempo el cual tiene el tiempo 3:40. aplique el algoritmo de Cristian para sincronizar el tiempo de cada una de las mquinas. 30. Suponga que vamos a utilizar el algoritmo de berkeley para sincronizar relojes lgicos. el servidor de tiempo tiene 4:34, el cliente1 10:02, el cliente2 4:45, el cliente3 4:20 y el cliente4 4:35. Si se toma en cuenta la hora del cliente1 obtendramos un tiempo demasiado despegado de los dems clientes. entonces qu debe hacer el algoritmo de berkeley para sincronizar los relojes de todas las mquinas incluyendo el cliente1 sin que la marca de tiempo sea tan distante de la hora del servidor de tiempo y de las dems mquinas? despus de realizar operaciones de acuerdo al algoritmo de berkeley indique cuanto se tiene que adelantar o retrasar cada mquina. 31. Suponga que tenemos 4 procesos. dos de ellos estn compitiendo por entrar a la misma regin crtica, los procesos 2 y 3; el proceso 1 no desea entrar a la regin crtica; y el proceso 4 est dentro de la regin crtica. la marca de tiempo del mensaje del proceso 3 es 45 y la marca de tiempo del mensaje del proceso 2 es 48. Cul es la operacin y el estado de cada uno de los procesos despus de recibir el mensaje del proceso 3? 32. Cuando una operacin se puede repetir las veces que sean sin efectos colaterales y sin ningn dao, se dice que es una operacin __________ 33. mencione al menos dos tcnicas de implantacin de transacciones atmicas _________________________________________________________________ 34. la transaccin a es iniciada en el tiempo x, y una transaccin b en el tiempo x+10. Suponga que la transaccin a necesita un recurso que esta utilizando la transaccin b, si se est utilizando la tcnica de espera-muerte para prevenir bloqueos entonces la transaccin a a) muere b) espera c) ejerce su derecho de prioridad

80

35. la tcnica de control de concurrencia en donde las cerraduras son liberadas solo cuando la transaccin se compromete se llama a) Control optimista de la concurrencia b) Cerradura de dos fases c) Cerradura estricta de dos fases d) marcas de tiempo

reFerenCiaS
randy Chow, theodore Jhonson, Distributed Operating Systems & Algorithms, addison-Wesley Silberschatz Galvin, Sistemas Operativos, Pearson, 5ta edicin. addison-Wesley longman. William Stallings. Sistemas Operativos, prentice may, 4ta edicin. prentice may. Coulouris George, dollimore Jean, Kindberg tim. Sistemas Distribuidos, Conceptos y Diseo, 3. edicin, addison Wesley.

81

iv GeStin de memOria en ambienteS CentralizadOS y diStribuidOS

sisteMas Centralizados la parte del sistema operativo que administra la memoria se llama administrador de memoria. Sus tareas son:
1. llevar un registro de las partes de memoria que se estn utilizando y aquellas que no, para poder asignar espacio en memoria a los procesos que la necesiten y liberarla cuando terminen. administrar el intercambio entre memoria principal y disco (cuando la memoria principal no pueda albergar a todos los procesos). administracin de la memoria sin intercambio o paginacin.

2. 3.

los sistemas de administracin de memoria se pueden clasificar en dos tipos:


1. 2. los que desplazan los procesos de la memoria principal al disco y viceversa, durante la ejecucin (intercambio y paginacin). los que no lo hacen, que son los ms sencillos.

Monoprogramacin sin intercambio o paginacin


primer esquema: Solo existe un programa en memoria en cada instante.problema:el programa deba contener todos los controladores para los dispositivos de e/s que ocupara. 83

Segundo esquema: Cada vez que el sistema operativo carga un nuevo proceso, lo escribe encima del anterior. adems reserva cierta parte de la memoria raM para tener ah al sistema operativo. Figura a)

despus este esquema evoluciona y se tiene al programa de usuario en memoria y en roM al sistema operativo, an as los controladores de e/s que utilizara el programa deban colocarse dentro de ste. Figura b). as que el esquema cambia hasta obtener el que fue utilizado por las PCs de iBM, el cual colocaba a los controladores de dispositivos en roM (lo que conocemos como Bios), el programa de usuario se colocaba en raM y se reservaba parte de la memoria raM para el sistema operativo. Figura c).

Programa de usuario

SO en ROM Programa de usuario

Controlado res de dispositivo s en ROM Programa de usuario SO en RAM

SO en RAM Figura a)
Multiprogramacin y uso de memoria la multiprogramacin:

Figura b)

Figura c)

Facilita la programacin de una aplicacin al dividirla en dos o ms procesos. Hace eficiente el servicio interactivo que se les da a varias personas al mismo tiempo (en un sistema multiusuario) Hace eficiente la e/s al disco; mientras existen procesos ejecutndose, no hay que esperar hasta que la e/s concluya.

84

Modelos de multiprogramacin Qu tan ventajosa es la multiprogramacin? Qu ventajas tiene ponerle ms memoria a la mquina? 4.1 Manejo de MeMoria Con PartiCiones fijas dividir la memoria en n partes de tamaos distintos. primer esquema: particiones fijas de memoria con colas de entrada independientes para cada particin, donde las particiones tienen diferentes tamaos. en este caso cada proceso se formar en la particin que ms le convenga dependiendo de su tamao. el problema en este caso es que si llegan varias tareas pequeas se formarn en la cola de la particin pequea y sta se saturar, adems de que las particiones grandes se desperdiciarn. (Figura a).

Particin 1 Particin 2

1m

800K

Particin 3 Particin 4 290K SO

Figura a)

85

Segundo esquema: particiones fijas en la memoria con una nica cola de entrada. as cada vez que llegue un proceso ste se formar en la nica cola; si una particin llegara a desocuparse y fuera demasiado grande para el siguiente proceso, an as se asignara esa particin a ese proceso si no hubiera una particin ms pequea desocupada. Figura b). Con este esquema se desperdicia memoria puesto que habr procesos pequeos en particiones grandes, adems si empleamos un algoritmo de despacho tipo fifo podra suceder que un proceso grande impida la ejecucin de los siguientes procesos porque slo se estn liberando particiones pequeas, y ese proceso no ser despachado hasta que una particin grande sea liberada, mientras los dems tienen que esperar; por lo tanto se pueden realizar las siguientes modificaciones a este esquema: Cada vez que se libere una particin se podra cargar y ejecutar en ella la tarea ms cercana al frente de la cola que se ajuste a dicha particin, el problema en este caso es que podra estar al frente un proceso muy pequeo y detrs de ste procesos un poco ms grandes que se ajustan mejor a las particiones recin liberadas; por lo tanto este proceso se estara discriminando continuamente. adems que se gastara mucho tiempo en verificar cul es el proceso que mejor se ajuste a la particin recin liberada. una solucin a este problema es tener una particin pequea que permita la ejecucin de tareas pequeas. Otra alternativa es no excluir a un proceso ms de k veces, entonces cada vez que un proceso sea excluido obtiene un punto, cuando adquiera k puntos, ya no podr ser excluido nuevamente. Reasignacin y proteccin los dos problemas esenciales de la multiprogramacin son: la reasignacin y la proteccin. Cuando un programa se liga (el programa principal, los procedimientos escritos por el usuario y los procedimientos de la biblioteca se conjuntan en un espacio con una sola direccin), el ligador debe conocer la direccin donde comienza el programa en la memoria. Si utiliza direccin absoluta puede ser que un llamado o un salto no se encuentre dentro de su espacio de direcciones, entonces debe tomar la direccin inicial de su espacio de direcciones y sumarle la direccin del salto. a este problema se le conoce como el problema de la reasignacin. una solucin es modificar las instrucciones cuando el programa sea cargado en memoria, es decir, aadir a todas las direcciones la direccin inicial de su particin.

86

pero esto no resuelve el problema de la proteccin; pues un programa podra saltar a una particin que no es de l. en los sistemas multiusuario no es deseable que los procesos lean o escriban en la memoria perteneciente a otros usuarios. entonces para evitar el problema cada bloque deba tener una contrasea, as cada vez que se accese a una direccin de la memoria, primero se deba comprobar la contrasea, si sta era vlida entonces el programa segua con su ejecucin. la otra solucin es equipar a la computadora con hardware especial que garantice proteccin a los procesos. Intercambio en un sistema multiusuario existen generalmente muchos procesos, los cuales tienen que estar en memoria, pero es imposible albergarlos a todos, por lo que es necesario mantener el exceso de los procesos en disco. el traslado de los procesos a la memoria principal al disco y viceversa se llama intercambio. 4.2 Manejo de MeMoria Con PartiCiones VariaBles debido al desperdicio de memoria que existe con las particiones fijas, ahora se utilizarn particiones variables. las particiones cambian en nmero, en tamao y de posicin de acuerdo al tamao y nmero de procesos en memoria. debido a lo anterior la asignacin y la proteccin de la memoria es ms difcil. Con este tipo de algoritmo existe el intercambio. Compactacin de la memoria: Combinar todos los huecos en uno grande y colocarlos en la parte inferior mientras sea posible (por lo general no se lleva a cabo porque consume mucho tiempo). Qu cantidad de memoria se debe asignar a un proceso?
Si los procesos se crean con tamao fijo, entonces la asignacin de memoria se realizar de manera justa y sencilla. los segmentos de datos pueden crecer (por ejemplo cuando utilizamos asignacin dinmica). en este caso si hay un hueco adyacente, el proceso puede crecer hacia el hueco. de lo contrario el proceso debe ser asignado a un hueco lo suficientemente grande, o habr que intercambiar uno o ms procesos para crear un hueco grande.

Si el proceso no puede crecer en memoria y el rea de intercambio del disco est lleno, el proceso deber esperar a ser aniquilado.
8

una posible solucin a este problema es la siguiente: si los procesos van a crecer durante su ejecucin entonces se debe asignar un poco de memoria adicional para reducir el gasto excesivo asociado con el traslado o intercambio de procesos. al intercambiar, slo bajar a disco la porcin de memoria que realmente se est utilizando y no la memoria adicional. Registro del uso de memoria en general existen tres formas utilizadas por los sistemas operativos para llevar un registro del uso de la memoria:
mapas de bits listas (ligadas)

Administracin de la memoria con mapas de bits Se crea un mapa de bits que representa a todas las direcciones de memoria existentes (o bloques de memoria), si el bits es 1, la direccin asociada a ste est ocupada, si es 0, entonces est desocupada. Administracin de la memoria con listas ligadas
Lista ligada
ProcA 2 3 4 5 6 7 8 9 ProcD 10 ProcD 181 ProcC Hueco 16 2 ProcB ProcB 8 3 Hueco 5 3 ProcA 1 4

Memoria

88

Algoritmos de asignacin de memoria


1. 2. 3. 4. 5. el primero en ajustarse el siguiente en ajustarse el mejor en ajustarse el peor en ajustarse ajuste rpido

4.3 MeMoria VirtUal en sisteMas oPeratiVos Centralizados para que un proceso demasiado grande puede ejecutarse se debe dividir en bloques o capas, as algunos bloques se almacenarn en memoria secundaria (disco duro) y otros, adems del bloque que se est ejecutando realmente, se carga en memoria fsica. a esta tcnica en donde se combina el uso de memoria fsica y memoria secundaria se le llama memoria virtual. en un principio se le dejaba al programador la responsabilidad de separar el programa en capas, despus se dej esa responsabilidad al Sistema Operativo. existen dos tcnicas importantes para el manejo de memoria virtual: paginacin y Segmentacin. el espacio de direcciones generadas por los programas forman el espacio de direcciones virtuales. Cuando un proceso genera una direccin, esta direccin es una direccin virtual y debe ser reemplazada por la direccin fsica correspondiente. existe un mdulo que se encarga de ello, la MMU, unidad de administracin de memoria. la memoria virtual se divide en pginas y la memoria fsica en marcos para pginas. el tamao de una pgina debe ser igual al tamao de un marco para pgina. Si la direccin a la cual hace referencia el proceso que se est ejecutando est en una pgina que no se encuentra en memoria fsica, entonces el administrador de memoria debe buscar la pgina en memoria secundaria y cargarla en memoria fsica, a esta operacin se le llama Fallo de pgina. Cuando todos los marcos para pgina en la memoria fsica ya estan ocupados, el sistema debe desalojar (expulsar) una pgina y colocarla en la memoria secundaria para liberar un espacio, el problema ahora se centra en decidir qu pgina deber ser desalojada. para esto existen una serie de algoritmos llamados algoritmos de reemplazo de pginas que permiten decidir, con base en diferentes criterios, qu pgina debe ser expulsada.

89

4.3.1 Paginacin el nmero de pgina virtual sirve como ndice para consultar la tabla de pginas y encontrar la entrada correspondiente a esa pgina virtual. en esa entrada se encuentra el nmero de marco de pgina, si lo hay, y ese nmero se anexa al extremo de orden alto de la distancia, sustituyendo al nmero de pgina virtual y formando una direccin fsica que se puede enviar a la memoria. el propsito de la tabla de pginas es transformar pginas virtuales en marcos de pgina. existen dos problemas a resolver: la tabla de pginas puede ser extremadamente grande y la transformacin debe ser rpida. Con 32 bits, donde cada pgina es de 4K, tenemos un milln de pginas. Cada proceso necesita su propia tabla de pginas. el segundo problema es que la transformacin de memoria de virtual a fsica se debe realizar en cada referencia de memoria. a veces por cada instruccin hay que hacer referencia una, dos o ms veces a la tabla de pginas. el diseo ms sencillo es tener una sola tabla de pginas, que consiste en un arreglo de registros rpidos en hardware, con una entrada para pgina virtual indizado por nmero de pgina virtual. Cuando se inicia un proceso, el Sistema Operativo carga los registros con la tabla de pginas del proceso. el mtodo es sencillo, pero el costo es muy alto, pues hay que cargar la tabla de pginas en cada conmutacin. Otro mtodo consiste en tener toda la tabla de pginas en la memoria principal. este enfoque casi nunca se usa. Tablas de pginas multinivel

Nmero de marco de pgina

Nmero de marco de pgina

Cach inhabilitado

Referida

Proteccin Presente/ausente Modificada

90

Entrada de tabla de pginas representativa los bits de proteccin indican el tipo de acceso. en su forma ms sencilla slo es un bit y es 0 para lectura/escritura y 1 slo lectura. el bit modificado se enciende cuando se escribe a una pgina. el bit referido se enciende cuando se hace referencia a una pgina para lectura o escritura. el bit cach inhabilitado permite inhabilitar la colocacin en cach de la pgina.
tlb-

Buffers de consulta para traduccin

las referencias a la tabla de pginas por cada instruccin hacen que el rendimiento del sistema se reduzca a una tercera parte. Su solucin se basa en la observacin de que muchos programas tienden a efectuar un gran nmero de referencias a un nmero pequeo de pginas, y no al revs. la solucin a este problema consiste en equipar a las computadoras con un pequeo dispositivo de hardware para transformar las direcciones virtuales en fsicas sin pasar por la tabla de pginas. el dispositivo llamado tlB (buffer de consulta para traduccin Traslation Lookaside Buffer) o tambin memoria asociativa, generalmente se encuentra en la MMU y consiste de un pequeo nmero de entradas (pocas veces mas de 64). Cada entrada contiene: nmero de pgina virtual, bit modificado, cdigo de proteccin y marco de pgina fsico. Funcionamiento: cuando se presenta una direccin virtual a la MMU para ser traducida, lo primero que hace el hw es verificar si su nmero de pgina virtual est presente en el tlB, comparndolo con todas las entradas simultneamente. Si se encuentra se toma del tlB sin acudir a la tabla de pginas. Si la direccin virtual no se encuentra en el tlB, entonces la MMU realiza una bsqueda ordinaria en la tabla de pginas, y desaloja una de las entradas del tlB y la sustituye por la entrada de tabla de pginas que encontr. Administracin de tlb por software algunas mquinas modernas risC (MiPs, Alpha, HP Pa) realizan casi toda la administracin de pginas en software. Cuando una direccin virtual no se encuentra en el tlB, la MMU efecta un fallo de tlB y deja todo al sistema operativo (encontrar la pgina, eliminar una entrada del tlB y colocar la entrada nueva en el tlB, y reiniciar la instruccin que fall. algunas mejoras se han hecho, tales como que el Sistema Operativo averigue cules van a ser las pginas a utilizarse y precargarlas en el tlB.
91

Tablas de pginas invertidas en este diseo hay una entrada por marco de pgina de la memoria real, no por cada pgina del espacio de direcciones virtual. la entrada indica cul (proceso, pgina virtual) est en ese marco de pgina. la desventaja es que la traduccin de virtual a fsica se vuelve ms difcil. Cuando el proceso n hace referencia a la pgina virtual p, el hw ya no puede encontrar la pgina fsica usando como ndice de tabla de pginas a p, ahora debe buscar en toda la tabla de pginas una entrada (n,p). y si esto es en cada referencia a la memoria, la administracin se vuelve muy lenta. una solucin es usar tlB, aunque en cada fallo de tlB hay que buscar en toda la tabla de pginas. Si se usa una tabla de dispersin como ndice de la tabla de pginas invertida, la bsqueda se llevara a cabo ms rpidamente. Algoritmos de reemplazo de pginas El algoritmo de reemplazo ptimo Fcil de describir pero imposible de implantar. rotular cada pgina con el nmero de instrucciones que se llevarn a cabo antes de que se haga la primera referencia a esa pgina, as la pgina que se debe desalojar es la que tiene el nmero ms grande. este algoritmo no se puede poner en prctica puesto que no sabe cuntas instrucciones se ejecutarn antes de llamar a determinada pgina, a menos que sean programas que ya se hayan ejecutado al menos una vez con los mismos datos. entonces se debe llevar un registro acerca del historial de los procesos para poner en prctica este algoritmo, an as no es un algoritmo muy til. El algoritmo de reemplazo de pginas no usadas recientemente para este algoritmo a cada pgina se le asocian dos bits r que se enciende cada vez que se hace referencia a la pgina para leer o escribir y M que se enciende cada vez que se escribe a la pgina, es decir, se modifica. al inicio ambos bits estarn en cero, si hay un fallo de pgina para leer se pone el bit r a 1 y si es para escribir se pone el bit r a 1 y M tambin a 1, estos bits se estarn inicializando cada interrupcin de reloj. as cada vez que haya un fallo de pgina el so examinar y las clasificar en 4 categoras:

92

Clase 0: no solicitada, no modificada Clase 1: no solicitada, modificada Clase 2: Solicitada, no modificada Clase 3: Solicitada, modificada

el algoritmo no usado recientemente (nrU: not recently used) desaloja al azar una pgina de la clase de nmero ms bajo que no est vaca. este algoritmo se basa en la suposicin de que es preferible desalojar una pgina modificada a la que no se ha hecho referencia en por lo menos un tic de reloj, en vez de una pgina limpia que se est usando mucho. ventajas: fcil de entender, implementacin moderadamente eficiente, desempeo aceptable. El algoritmo de reemplazo de pginas de primero en entrar, primero en salir (fifo: first-in, firstout). El algoritmo de sustitucin de pginas se segunda oportunidad este algoritmo consisten en inspeccionar la pgina ms vieja, si su bit r es 0, entonces esta pgina es desalojada y si ha sido modificada se escribe a disco, si su bit r es 1 entonces es colocada al final de la lista, su bit r es puesto en 0 y se actualiza su tiempo de carga como si acabara de ser trada a la memoria. lo que hace este algoritmo de segunda oportunidad es buscar una pgina vieja a la que no se haya hecho referencia en el intervalo de reloj anterior. El algoritmo de sustitucin de pginas por reloj Consiste en mantener todas las pginas en una lista circular. Funciona igual que el algoritmo de segunda oportunidad. El algoritmo de sustitucin de pginas menos recientemente usadas (lru). Se desaloja la pgina que haya estado ms tiempo sin usarse. Se ejecutara en hardware y se necesitara de una matriz de nxn bits, donde n es el nmero de marcos. Cada vez que se haga referencia a la pgina k, se encienden todos los bits del rengln k y se apagan todos los bits de la columna k, el rengln con el menor valor es la pgina menos recientemente usada.

93

por ejemplo para 3 marcos. Orden de referencia: 2 0 1 0 1

0 1 2 0 0 1 1 1 0 0 0 2 0 1 0

0 1 2 0 0 0 1 1 1 0 1 2 0 0 0

0 1 2 0 0 1 1 1 0 0 1 2 0 0 0

0 1 2 0 0 0 1 1 1 0 1 2 0 0 0

0 1 2 0 0 0 0 1 0 0 0 2 1 1 0

Simulacin de lru con software se puede simular con el algoritmo de no usada frecuentemente (nfU; not frequently used). en el caso puro de nfU, cada pgina tiene un contador. en cada interrupcin de reloj el Sistema Operativo explora todas las pginas que estn en memoria y suma el bit r a su contador (el contador es para saber qu tanto se hace referencia a esa pgina). Cuando se presenta un fallo de pgina se selecciona a la pgina con el contador ms bajo. el problema con este algoritmo es que nfU nunca olvida (si hay dos contadores iguales no sabemos cul es la pgina ms vieja). la solucin a este problema es modificar nfU para simular lrU, al algoritmo que se emplea para tal simulacin se denomina envejecimiento. Sigue los siguientes pasos:
lrU

1. 2.

todos los contadores se desplazan un bit a la derecha antes de sumar el bit r. el bit r se suma al bit de la extrema izquierda.

por ejemplo: Bits r para las pginas 0-3 1010

0010

0111

1001

94

Tic de reloj pgina 0 1 2 3 0 10000000 00000000 10000000 00000000 1 01000000 00000000 11000000 00000000 2 00100000 10000000 11100000 10000000 3 10010000 10000000 01110000 11000000

Buffering de pginas Consiste en mantener un conjunto de marcos para pgina libres. Cuando se produce un fallo de pgina se usa un marco de pgina libre (sin liberar otro) pero sin aplicar el algoritmo de reemplazo. Cuando el Sistema Operativo detecta que el nmero de marcos de pgina disminuye por debajo de un umbral, aplica repetidamente el algoritmo de reemplazo de pginas hasta que el nmero de marcos libres sea suficiente. las pginas liberadas que no estn modificadas pasan a la lista de marcos libres. las que han sido modificadas pasan a la lista de modificadas. las pginas que estn en cualquiera de las dos listas pueden recuperarse si vuelven a referenciarse. este fallo no implicara operaciones de entrada y salida. las pginas en la lista de modificadas se pueden escribir en tandas al dispositivo para obtener un mejor rendimiento. Cuando la pgina modificada se ha escrito al dispositivo, se la incluye en la lista de marcos libres. Retencin de pginas en memoria no todas las pginas residentes en memoria son candidatas al reemplazo. por ejemplo las pginas del Sistema Operativo. la mayora de los sistemas operativos tienen su mapa de memoria fijo en memoria principal. las pginas que estn llevando a cabo operaciones de entrada y salida, donde la dMa (acceso directo a memoria) realiza una transferencia directa a la memoria de un proceso. stas no pueden ser reemplazables hasta que termine la operacin. algunos Sistemas Operativos ofrecen el servicio a las aplicaciones de retener en memoria una o ms pginas de su mapa. este servicio puede ser til para procesos de tiempo real, pero si se usa indiscriminadamente puede afectar gravemente el rendimiento del sistema.
95

Aspectos de diseo de los sistemas con paginacin Paginacin por demanda la paginacin por demanda se da cuando se hacen transferencias desde la memoria secundaria hacia la principal slo cuando un proceso necesita acceder a una pgina que no est en memoria principal, es decir, slo se cargan pginas cuando se necesitan. Si al intentar traer la pgina desde memoria secundaria se detecta que no hay espacio en la memoria principal (no hay marcos libres), ser necesario expulsar una pgina de la memoria principal hacia la secundaria. Prepaginacin. en un fallo de pgina no slo se trae la pgina en cuestin, sino tambin las pginas adyacentes, ya que es posible que el proceso las necesite en un corto plazo de tiempo. la efectividad de esta tcnica va a depender de si hay acierto en esta prediccin. Polticas de administracin de la memoria virtual
Poltica de reemplazo. determina qu pgina debe ser reemplazada de la memoria principal para dejar sitio a la pgina entrante (algoritmos de reemplazo de pginas). Poltica de asignacin de espacio a los procesos. decide cmo se reparte la memoria fsica entre los procesos existentes en un determinado instante.

Poltica de asignacin de marcos de pgina asignacin fija. Se asigna a cada proceso un nmero fijo de marcos para pgina. normalmente este tipo de asignacin lleva asociada una estrategia de reemplazo local. asignacin dinmica. el nmero de marcos asignados a un proceso vara segn las necesidades que tenga el proceso en diferentes instantes de tiempo. Con este tipo de asignacin se pueden usar tanto estrategias de reemplazo locales como globales. Hiperpaginacin (thrashing) es la situacin en la cual se producen un nmero elevado de fallos de pgina debido a que el nmero de marcos de pgina asignados a un proceso no es suficiente para almacenar las pginas referenciadas activamente por el mismo. Con una asignacin fija slo el proceso que hiperpgina se ve afectado, el resto no.
96

en una asignacin dinmica se ven afectados todos los procesos. Cuando es el sistema hiperpgina se deben suspender uno o dos procesos. Polticas de asignacin local y global los algoritmos de reemplazo de pgina deben desalojar una pgina del proceso que provoc el fallo de pgina o una pgina cualquiera de la memoria? Si es el primer caso, entonces el reemplazo de pginas es local y si se realiza lo segundo el reemplazo de pginas es global. para acelerar el proceso de fallo de pgina y evitar la hiperpaginacin, se podra asignar un conjunto de marcos de pgina por proceso de acuerdo a la frecuencia de fallos de pgina (Pff; page fault frequency). existen algoritmos que pueden operar local o globalmente, como lo son fifo y lrU y sus similares; sin embargo existen algoritmos que slo tienen sentido en una estrategia local como los de conjunto de trabajo y wsCloCk. Control de carga Si la memoria est llena es obvio que haya fallos de pgina y por ende hiperpaginacin. para resolver el problema es necesario bajar a disco algunos procesos y liberar todos sus marcos de pgina y asignarlos a los procesos que estn hiperpaginados. ahora el problema es qu proceso debemos intercambiar?, pues deben considerarse sus caractersticas (algoritmos de despacho). Estrategia del conjunto de trabajo. el conjunto de trabajo de un proceso es el conjunto de pginas accedidas por un proceso en las ltimas n referencias. el nmero n se denomina la ventana del conjunto de trabajo. 4.4 MeMoria CoMPartida distriBUida (dsM) 4.4.1 Manejo de memoria compartida en multiprocesadores los multiprocesadores son difciles de construir y fciles de programar. las multicomputadoras son difciles de programar y fciles de construir. el objetivo de la memoria compartida distribuida es que el hardware en el que se base sea fcil de construir y fcil de programar. en 1986 li y ms tarde Hudak, propusieron un mecanismo para el manejo de memoria en sistemas distribuidos llamado memoria compartida distribuida (dsM). Su propuesta fue
9

tener una coleccin de estaciones de trabajo conectadas por una lan compartiendo un solo espacio de direcciones virtuales con pginas. la desventaja de este esquema es que exhibe un desempeo pobre, ya que las pginas andan de un lado para otro de la red. la ventaja es que es un modelo fcil de programar y de construir. Otro mtodo consiste en no compartir todo el espacio de direcciones, sino slo una porcin seleccionada, de hecho, slo aquellas variables o estructuras de datos que se necesitan utilizar en ms de un proceso, lo cual produce un alto nivel de abstraccin, pues ya no se piensa en una porcin de memoria, sino en una coleccin de variables. una posible optimizacin consiste en repetir las variables compartidas en varias mquinas, el problema en este caso es mantener consistentes las copias. las lecturas se pueden hacer de manera local, sin ningn trfico y las escrituras mediante un protocolo de actualizacin con varias copias. Otra posible optimizacin es compartir objetos. 4.4.1.1 Multiprocesadores basados en un bus.

CPU

CPU

CPU

Memoria bus

para evitar que dos o ms CPUs intenten el acceso a la memoria al mismo tiempo, se necesita algn tipo de arbitraje del bus. el CPU debe pedir permiso para conseguir el bus. la concesin puede hacerse de forma centralizada, utilizando un dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU que realice una solicitud en el bus ganar cualquier conflicto. la desventaja es la sobrecarga del bus. una solucin sera equipar a cada CPU con un cach husmeador.

CPU Cache

CPU Cache

CPU Cache

Memoria bus

98

un protocolo en particular comn es el de escritura a travs del cach. Cuando un CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus y guardada en el cach del CPU solicitante. puede suceder que una palabra en particular se oculte en dos o ms CPU al mismo tiempo. Operacin de lectura
Si la palabra no est en el cach, entonces buscarla en la memoria y copiarla a su cach. Si la palabra est en el cach, tomar el dato de ah.

Operacin de escritura
Si ningn CPU tiene la palabra en su cach, entonces la palabra es actualizada en memoria, como si el ocultamiento no hubiera sido utilizado. Si el CPU (que realiza la escritura) tiene la nica copia de la palabra, se actualiza su cach y tambin la memoria mediante el bus. Si dos o ms CPU tienen la palabra, entonces se actualiza la palabra en el cach y en la memoria, y se invalidan las entradas de esa palabra en los cahs de los otros CPU. as la palabra slo la tendr la memoria y un slo cach.

una alternativa a invalidar otras entradas de cach es actualizarlas todas, pero esto puede resultar ms lento.una ventaja de este protocolo es que es fcil de entender e implantar, la desventaja es que todas las escrituras utilizan el bus. existe otro tipo de protocolos como el protocolo de membresa. una versin de este protocolo plantea lo siguiente: Se manejan bloques de cach, cada uno de los cuales puede estar en uno de los siguientes estados:
1. 2. 3. invlidO: este bloque de cach no contiene datos vlidos. limpiO: la memoria est actualizada, el bloque puede estar en otros cachs. SuCiO: la memoria es incorrecta; ningn otro cach puede contener al bloque.

W1

La memoria es correcta

W1 limpio

bus

Estado inicial. La palabra W que contiene el valor w1 esta en la memoria y tambin est en el cach de B

99

W1

La memoria es correcta

W1 limpio

W1 limpio

A lee la palabra W y obtiene W1. B no responde a la lectura, pero la memoria si.

bus

W1

La memoria ya no es correcta

W2 sucio

W1 invalido

bus

A escribe un valor W2. B husmea en el bus, ve la escritura e invalida su entrada. La copia de A se marca como sucio.

W1

La memoria ya no es correcta

W3 sucio

W1 invalido

bus

A escribe W de nuevo. Esta y las escrituras posteriores por A se realizan de manera local, sin trfico en el bus.

W1

La memoria ya no es correcta

W3 invalido

W1 invalido

W3 sucio

bus

C lee o escribe W. A ve la solicitud al husmear en el bus, proporciona el valor e invalida su propia entrada. C tiene ahora la nica copia vlida.

100

la palabra permanece en estado sUCio hasta que se elimine del cach donde se encuentra en la actualidad por razones de espacio. en este momento desaparece de todos los cachs y se escribe en la memoria. este protocolo tiene tres propiedades importantes:
1. 2. 3. la consistencia se logra haciendo que todos los cachs husmeen el bus. el protocolo se integra dentro de la unidad de administracin de memoria. todo el algoritmo se realiza en un ciclo de memoria.

la desventaja es que no funciona para multiprocesadores de mayor tamao y nada es vlido para la memoria compartida distribuida. 4.4.1.2 Multiprocesadores basados en un anillo un ejemplo de multiprocesadores basados en anillo es Memnet. en Memnet, un espacio de direcciones se divide en una parte privada y una compartida. la parte compartida se divide en bloques de 32 bytes, unidad mediante la cual se realizan las transferencias entre las mquinas. las mquinas Memnet estn conectadas mediante un anillo de fichas modificado. el anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160 mb/seg.

MMU

Cache

Mem. de origen

Dispositivo Interrupcin Memnet Exclusivo

CPU Memoria Privada

Valido

Origen

Posicin

101

un bloque exclusivo de lectura puede estar presente en varias mquinas, uno de lecturaescritura debe estar presente en una sola mquina. los bits en el dispositivo Memnet indican uno o ms de los siguientes estados:
vlidO: el bloque est presente en el cach y est actualizado. eXCluSivO: la copia local es la nica. OriGen: Se activa si sta es la mquina origen del bloque. interrupCin: Se utiliza para forzar interrupciones. pOSiCin: indica la localizacin del bloque en el cach si est presente y es vlido.

Protocolo Memnet Lectura Cuando un CPU desea leer una palabra de la memoria compartida, la direccin de memoria por leer se transfiere al dispositivo memnet, el cual verifica la tabla del bloque para ver si est presente. Si es as, la solicitud es satisfecha de inmediato. en caso contrario, el dispositivo memnet espera hasta capturar la ficha que circula; despus, coloca un paquete de solicitud en el anillo y suspende el CPU. el paquete de solicitud contiene la direccin deseada y un campo vaco de 32 bytes. Cada dispositivo memnet en el anillo verifica si tiene el bloque. de ser as, coloca el bloque en el campo vaco y modifica el encabezado del paquete para inhibir la accin de las mquinas posteriores. Si el bit exclusivo del bloque est activo, se limpia. Cuando el paquete regresa al emisor, se garantiza que contiene al bloque solicitado. el CPU que enva la solicitud guarda el bloque, satisface la solicitud y libera al CPU. Si la mquina solicitante no tiene espacio libre en su cach para contener el bloque recibido, entonces toma al azar un bloque oculto y lo enva a su origen, con lo que libera un espacio de cach. los bloques cuyo bit origen estn activados nunca se eligen, pues se encuentran en su origen. Escritura tenemos tres casos:
Si el bloque contiene la palabra por escribir est presente y es la nica copia en el sistema, (el bit exclusivo esta activado) la palabra slo se escribe de manera local. Si est presente el bloque pero no es la nica copia, se enva primero un paquete de invalidacin por el anillo para que las otras mquinas desechen sus copias del bloque por 102

escribir. Cuando el paquete de invalidacin regresa al solicitante, el bit exclusivo se activa para ese bloque y se procede a la escritura local. Si el bloque no est presente, se enva un paquete que combina una solicitud de lectura y una de invalidacin. la primera mquina que tenga el bloque lo copia en el paquete y desecha su copia. todas las mquinas posteriores slo desechan el bloque de sus cachs. Cuando el paquete regresa al emisor, ste lo guarda y escribe en l.

la ventaja de este protocolo es que se puede aplicar a multicomputadoras. 4.4.2 Principales aproximaciones a dsm existen tres aproximaciones a la implementacin de memoria compartida distribuida, las cuales involucran el uso de hardware, memoria virtual o bibliotecas de soporte. estos no son mutuamente exclusivas necesariamente. Basada en hardware. por ejemplo Dash y PlUs. el conjunto de procesadores y los mdulos de memoria estn conectados va una red de alta velocidad. el problema es la escalabilidad. Basado en pginas. por ejemplo Ivy, Munin, Mirage, Clouds, Choices, COOL y Mether, todas implantan dsM como una regin de memoria virtual que ocupa el mismo rango de direccin en el espacio de direcciones de cada proceso participante. en cada caso el kernel mantiene la consistencia de datos dentro de las regiones dsM como parte del manejo de fallo de pgina. Basado en bibliotecas. algunos lenguajes o extensiones de lenguaje tales como linda soportan formas de dsM.
orCa

103

ejerCiCios

1. las direcciones virtuales son direcciones generadas por: a) los programas b) por la paginacin

c) la tabla de pginas

2. Suponga que el nmero de bits utilizados en una direccin virtual es de 20, se ocupan 8 bits para el nmero de pgina y 12 para el desplazamiento Cuntas pginas se pueden manejar en memoria virtual? __________ 3. de acuerdo a la pregunta anterior, qu cantidad de memoria virtual se est manejando? _________________________ 4. el objetivo de un tlB es: a) el manejo de tablas de pgina muy grandes c) el tlB es la tabla de pginas

b)

acelerar la paginacin

5. la diferencia entre estos dos algoritmos difiere nicamente en la estructura de datos a utilizar, pero su poltica de reemplazo es la misma a) nrU y lrU b) de segunda oportunidad y el de tipo reloj c) fifo y Conjunto de trabajo 6. Suponga que tenemos cinco pginas (0 a 4) y que los contadores iniciales de cada pgina son: para 0 es 01101100, para 1 es 00000111, para 2 es 10000101, para 3 es 10000000, para 4 es 11011110. en los siguientes tics de reloj son referenciadas las siguientes pginas: tic0 1,3; tic1 0,2,4 , tic2 1,4. Suponga que en este ltimo tic hay un fallo de pgina. Qu pgina deber ser desalojada? utilice el algoritmo de envejecimiento y describa el comportamiento de contadores en cada tic de reloj. . Suponga que se est utilizando el algoritmo fifo para el reemplazo de pginas. Si tenemos las pginas B5, d1, C2, d6, a3, d3, a5, d1, B1, a1, d7, en este orden (b5 es la ms antigua y d la ms reciente); y d3 produce un fallo un pgina (invoca a d9), Qu pgina debemos desalojar si se est utilizando una poltica de asignacin local? ____

104

8. Suponga que se est utilizando el protocolo de membresa y se tienen 6 CPU, el CPU 1, el 4 y 5 tienen la palabra w en su cach y su estado es limpio. de pronto el CPU 3 necesita escribir la palabra w. Qu operaciones se realizarn y cul ser el estado de los cachs y de la memoria? 9. por qu se genera un nmero elevado de fallos de pgina en la hiperpaginacin (thrashing)? _________________________________________________________ 10. los algoritmos de reemplazo de pgina deben desalojar una pgina del proceso que provoc el fallo de pgina o una pgina cualquiera de la memoria? __________________________________________________________________

reFerenCiaS

1. andrew tanembaum. Computer Network. uppers Saddle river, nJ:prentice Hall, 2. Haviland, Keith; Salama, ben. Unix System Programming. addison-Wesley publishing Company. 3. Coulouris George, dollimore Jean, Kindberg tim. Sistemas Distribuidos, Conceptos y Diseo, 3. edicin, addison Wesley. 4. randy Chow, theodore Jhonson, Distributed Operating Systems & Algorithms, addison-Wesley.

105

v SOCKetS en Java

existen dos protocolos de transporte en la familia tCP/iP que son tCP y UdP; los cuales asumen la tarea de transmitir datos de un puerto a otro para llevar a cabo la comunicacin entre aplicaciones. tCP es un servicio de transporte orientado a conexin y quiere decir: Transmission Control Protocol (protocolo de Control de la transmisin). Cuando existe una comunicacin tCP tambin existe un enlace entre el emisor y el receptor, el cual permite que se intercambie la informacin de manera bidireccional. este protocolo introduce algoritmos de deteccin y correccin de errores en la transmisin de datos; y garantiza que la entrega de los paquetes de datos tCP (datagramas tCP), sean al receptor, en el orden en que los envi el emisor. este protocolo sacrifica rapidez pero aumenta la seguridad. mientras que un emisor enva un datagrama tCP, se comienza una cuenta atrs de cierto tiempo. Cuando el tiempo acaba y el emisor no ha recibido ningn mensaje de confirmacin de la aplicacin tCP del receptor, entonces el datagrama se enva de nuevo. el protocolo tCP proporciona confiabilidad a iP. Con el protocolo tCP, las comunicaciones se realizan mediante flujos de bytes. realmente, la comunicacin fsica se basa en paquetes llamados (datagramas); pero tCP simula un flujo lgico continuo de bytes. en una capa de nivel ms bajo, el protocolo tCP acepta un flujo de datos de una aplicacin, fragmenta los datos en datagramas que no exceden de 65535 bytes y enva cada datagrama a la capa de red, donde ser transformado en un paquete iP. al llegar los datagramas iP al nodo de destino, ste los pasa a la aplicacin tCP correspondiente, que reconstruye el flujo continuo de bytes. a causa del enlace que existe entre el emisor y el receptor durante una comunicacin tCP, el protocolo se compara con el servicio telefnico: se establece la conexin, se transfieren los datos y, por ltimo, se cierra la conexin.
10

Figura 1. esquema de un datagrama tCP. el campo inferior alberga los datos. en el proceso de envo de la informacin entre ordenadores, los datagramas tCP se encapsulan en datagramas iP.

Figura 2. esquema del funcionamiento del protocolo tCP.

108

el protocolo de datagramas de usuario (UdP, User Datagram Protocol), es un servicio de transporte sin conexin: el mensaje del emisor se descompone en paquetes UdP (datagramas UdP); y cada datagrama se enva al receptor por el camino que se enve oportuno, de forma independiente de los otros. los datagramas pueden llegar en cualquier orden al receptor (incluso pueden no llegar), y el emisor ignora si han llegado correctamente o no. por este motivo, UdP suele compararse con el servicio postal: se envan los datos sin que medie conexin (una carta puede enviarse sin que se sepa si existe la direccin de destino o si alguien vive all).

Figura 3. esquema de un datagrama UdP. el campo inferior alberga los datos.

el envo de informacin entre ordenadores se lleva a cabo mediante el encapsulamiento de los datagramas UdP en datagramas iP. los protocolos tCP y UdP usan sockets (literalmente, conectores o enchufes; el trmino procede de los paneles de conexiones que usaban antes las centralitas telefnicas, paneles donde la conmutacin de las lneas telefnicas se haca a mano) para comunicar programas entre s en una arquitectura cliente-servidor. un socket es un punto terminal o extremo en el enlace de comunicacin entre dos aplicaciones (que, por lo general, se ejecutan en ordenadores distintos). las aplicaciones se comunican mediante el envo y recepcin de mensajes mediante sockets. un socket tCP viene a ser un telfono; un socket UdP, un buzn de correos. los sockets pueden encuadrar dentro de uno de estos grupos: Sockets activos: pueden enviar y recibir datos a travs de una conexin abierta. Sockets pasivos: esperan intentos de conexin. Cuando llega una conexin entrante, le asignan un socket activo. no sirven para enviar o recibir datos.
109

el socket es la abstraccin de software usada para representar los terminales de una conexin entre dos mquinas. para una conexin dada, hay un socket en cada mquina, y puedes imaginar un cable hipottico corriendo entre las dos mquinas con cada extremo del cable enchufado a un socket. desde luego, el hardware fsico y el cableado entre mquinas, es completamente desconocido. el punto fundamental de la abstraccin es que no necesitamos conocer ms de lo necesario. la abstraccin del socket

Figura 4. la abstraccin del socket.

Figura 5. ubicacin conceptual de los sockets. 110

Figura 6. Comunicacin mediante sockets.

Figura . Comunicacin mediante sockets incluyendo puertos. 111

Segn bruce eckel, los sockets son creados por el Sistema Operativo y ofrecen una interfaz de programacin de aplicaciones (aPi) mediante la cual pueden las aplicaciones enviar mensajes a otras aplicaciones, ya sean locales o remotas. las operaciones de los sockets (enviar, recibir, etc.) se implementan como llamadas al Sistema Operativo en todos los modernos so; dicho de otra manera: los sockets forman parte del ncleo del so. en lenguajes orientados a objetos como Java o C++, las clases de sockets se implementan sobre las funciones ofrecidas por el so para sockets. Consideremos un servidor Web (es decir, HttP) que atiende simultneamente a varios clientes por el puerto estndar (80). los clientes usan el protocolo tCP (HttP usa este protocolo por defecto). Cmo puede el servidor saber a qu cliente corresponde cada peticin? la respuesta se representa en la figura 8.

Figura 8. estructura interna de una comunicacin con sockets tCP. por ejemplo, para el protocolo HttP:

Figura 9. una comunicacin HttP desde el punto de vista de los sockets.

112

las diferencias entre las comunicaciones con sockets tCP y con sockets UdP resultan similares a las que existen entre llamar por telfono y enviar una carta. por ejemplo, cuando se llama por telfono a alguien, el estado de la comunicacin se conoce en todo momento: quien llama sabe si el telfono est ocupado o no (en algunos casos, el destinatario de la llamada tambin sabe si tiene alguna llamada entrante); percibe cundo puede comenzar la comunicacin (cuando acaban los pitidos largos y suena una voz); sabe si se est dirigiendo a la persona deseada (salvo que lo engaen) y distingue cundo la comunicacin ha concluido o se ha interrumpido (cuando cesa la voz del interlocutor y se oyen unos pitidos breves). por otro lado, cuando se enva una carta el remitente la introduce en un buzn y se olvida de ella durante un tiempo: ignora si llegar a su destino o si recibir respuesta (la direccin puede no existir; el destinatario puede no vivir ya all; la carta puede perderse en alguna oficina de correos con exceso de trabajo). no puede haber, un seguimiento continuo del estado de la comunicacin Si no recibe respuesta, no estar seguro de si la carta lleg a su destino; lo mismo ocurre en el protocolo UdP: un emisor de datagramas UdP desconoce si llegan o no a su destino. por esto, para que se pueda llevar a cabo la comunicacin cliente-servidor, el cliente debe establecer sockets y conectarlos a sockets del servidor. los pasos que se siguen en una comunicacin tpica con sockets tCP son stos: Se crean los sockets en el cliente y el servidor. el servidor establece el puerto por el que proporcionar el servicio. el servidor permanece a la escucha de peticiones de los clientes por el puerto definido en el paso anterior. un cliente conecta con el servidor. el servidor acepta la conexin. Se realiza el intercambio de datos. el cliente o el servidor, o ambos, cierran la conexin.

para comenzar, el servidor debe estar en ejecucin antes de que los clientes intenten conectarse a l y debe mantener activo un socket pasivo que permanezca a la espera de peticiones entrantes. despus, el cliente debe crear un socket activo en el cual se especifiquen la direccin iP y el nmero de puerto de la aplicacin que proporciona el servicio deseado. mediante este socket, el cliente comienza una conexin tCP con el servidor. en tercer

113

lugar, el intento de conexin tCP desencadena que el servidor cree un socket activo para el cliente (durante su tiempo de vida, no podr ser asignado a otros clientes). Finalmente, se establece la conexin tCP entre el socket del cliente y el socket activo del servidor. a partir de entonces, uno y otro pueden enviar datos o recibirlos a travs de la conexin. un socket es la representacin de una conexin para la transmisin de informacin entre dos aplicaciones para el programador de Java, ya se ejecuten en un mismo ordenador o en varios. esta abstraccin de alto nivel permite despreocuparse de los detalles que yacen bajo ella (correspondientes a los protocolos subyacentes). para implementar los sockets tCP, el paquete java.net de Java proporciona dos clases: ServerSocket y Socket. la primera representa un socket pasivo que espera conexiones de los clientes y que se ubica en el lado del servidor. la segunda representa un socket activo que puede enviar y recibir datos (puede ubicarse en el servidor y en el cliente). podemos resumir que un socket permite conectarse a un equipo a travs de un puerto, enviar o recibir datos y cerrar la conexin establecida. todos los detalles de los protocolos de red, de la naturaleza fsica de las redes de telecomunicaciones y de los sistemas operativos involucrados se ocultan a los programadores. Si no fuera as, no habra muchos ms programadores de aplicaciones para redes que estudiosos de la literatura en snscrito. El Paquete Java.Net De Java Java proporciona una interfaz de sockets orientada a objetos que simplifica muchsimo el trabajo en red. Comunicarse con otras aplicaciones a travs de internet es muy similar a obtener la entrada del usuario a travs de la consola o a leer archivos con este lenguaje, en contraste con lo que sucede en lenguajes como C. Java fue el primer lenguaje de programacin donde la manipulacin de la entrada y salida de datos a travs de la red se realizaba como la e/S con archivos. java.net proporciona una interfaz orientada a objetos para crear y manejar sockets, conexiones HttP, localizadores Url, etc., comprende clases que se pueden dividir en dos grupos: a) Clases que corresponden a las aPi (interfaces de programacin de aplicaciones) de los sockets: Socket, ServerSocket, DatagramSocket, etc. b) Clases correspondientes a herramientas para trabajar con Url: Url, UrlConnection, HttpUrlConnection, UrlEncoder, etc.

114

el contenido completo de java.net en la J2Se 1.2 es el siguiente: Clases: Authenticator ContentHandler DatagramPacket DatagramSocket DatagramSocketImpl HttpUrlConnection InetAddress JarUrlConnection MulticastSocket NetPermission PasswordAuthentication ServerSocket Socket SocketImpl SocketPermission
Url UrlClassLoader UrlConnection UrlDecoder UrlEncoder UrlStreamHandler

excepciones: BindException ConnectException MalformedURLException NoRouteToHostException ProtocolException SocketException UnknownHostException UnknownServiceException

115

interfaces: ContentHandlerFactory FileNameMap SocketImplFactory SocketOptions URLStreamHandlerFactory el paquete java.net permite trabajar con los protocolos tCP y UdP. la clase java.net. Socket permite crear socket tCP para el cliente; la clase java.net.ServerSocket hace lo mismo para el servidor. para las comunicaciones UdP, java ofrece la clase java.net.DatagramSocket para los dos lados de una comunicacin UdP, y la clase java.net.datagrampacket para crear datagramas UdP.

Clases MulticastSocket Basadas DatagramPacket DatagramSocket en UDP

Conexin mediante datagramas sin conexin Clases Socket Comunicacin sin conexin ServerSocket Basadas en TCP

URL

URLEncoder

InetAdress

Manipulacin de direcciones de internen

Figura 10. esquema de las clases basadas en tCP y UdP

116

La clase java.net.ServerSocket esta clase la utiliza el servidor mediante el protocolo tCP para recibir conexiones de los clientes. toda aplicacin que actu como servidor deber crear una instancia de la clase ServerSocket y as podr llamar a su mtodo accept(); esto har que la aplicacin que acta como servidor sea bloqueada (o sea, permanecer esperando) slo hasta que algn cliente solicite conexin. Cuando un cliente haya solicitado conectarse al servidor, el mtodo accept() crear una instancia de la clase java.net.Socket la cual ser usada para conectarse con el cliente. es posible que un servidor tenga un nico objeto ServerSocket y muchos objetos Socket asociados. ServerSocket ser siempre un objeto pasivo. Se ha considerado en la documentacin de Sun y en algunos otros libros que SeverSocket son sockets de servidor, esta identificacin resulta ambigua, un servidor de socket siempre ser aquel que reside en un servidor, ya sea pasivo (ServerSocket) o activo (Socket).
Conexin entrante Aplicacin de cliente

ServerSocket

Socket

Aplicacin cliente Sock et Sock et

Socket

Sock et

Aplicacin de Servidora

Figura 11. las clases socket y serversocket en funcionamiento. 11

los constructores ms utilizados por la ServerSocket son los siguientes: public ServerSocket(int puerto) throws IOException public ServerSocket(int puerto, int longitudCola) throws IOException public ServerSocket(int puerto, int longitudCola, InetAddress dirinternet) throws IOException

los tres mtodos cuentan con el argumento puerto en el cual se especifica el nmero de puerto que utiliza el socket del servidor para escuchar las peticiones de tCP de todos los clientes, otro argumento es longitudCola que indica la longitud mxima de la cola de conexiones entrantes y por ltimo el argumento dirinternet es un objeto InetAddress. Cabe mencionar que la cola de conexiones entrantes es del tipo fifo (First In First Out: primero en entrar, primero en salir) y la longitud mxima de esta cola est determinada por el Sistema Operativo sin avisar al usuario al programador, si a caso se llegara a llenar la cola, el objeto ServerSocket rechazar nuevas conexiones hasta que se desocupe algn lugar en la cola. las instancias de la clase java.net.InetAdress representan direcciones iP. esta clase no contiene constructores pblicos. para poder obtener un objeto InetAddress tenemos que llamar al mtodo esttico byName() con un argumento de tipo String que representa el nombre de la computadora la cual est estableciendo la conexin con el servidor, InetAddress proporciona un mtodo getHostName() que permite conocer el nombre del ordenador local. a continuacin se mostrarn algunos ejemplos los cuales manifiestan el uso de la clase java.inet.Address (el primer ejemplo requerir una conexin a internet):

InformarConexionUV.java
import java.io.*; import java.net.*; // proporciona informacin sobre la conexin a la pgina web de la // universidad de valencia. public class informarConexionuv { public static void main(String[] args) {

118

Socket socket = null; try { inetaddress direccion = inetaddress.getbyname(www.uv.es); System.out.println(direccion); socket = new Socket(direccion, 80); System.out.println(Conectado a + socket.getinetaddress()); System.out.println(por el puerto + socket.getport()); System.out .println(desde el puerto local + socket. getlocalport()); System.out.println(y desde la direccin local + socket.getlocaladdress()); } catch (unknownHostexception e1) { System.out .println(no se pudo encontrar una mquina con ese nombre.); } catch (Socketexception e2) { System.out .println(no se pudo conectar con la mquina por el puerto establecido.); } catch (iOexception e3) { System.out.println(e3); } finally { try { socket.close(); } catch (iOexception e4) { // no se hace nada: no se pudo cerrar el socket. } } } }

119

la salida del programa anterior es:

Figura 12. ejemplo

DireccionLocal.java
import java.net.*; public class direccionlocal { public static void main(String args[]) { try { inetaddress direccion = inetaddress.getlocalHost(); System.out.println(direccion); } catch (unknownHostexception e) { System.out .println(error al intentar obtener el nombre de la mquina local.); } } }
120

la salida del programa anterior es:

Figura 13. ejemplo de uso de la clase inetaddress.

la siguiente direccin iP 12.0.0.1 es una direccin especial la cual representa el nombre del ordenador local ya sea que estn o no conectados a internet. para que esta direccin pueda ser vlida, el ordenador deber tener instalada y adems configurada una implementacin de la pila de protocolos tCP/iP (actualmente no hay que preocuparse por eso porque los sistemas operativos se encargan de esto; pongamos como ejemplo Windows 3.1, se tena que instalar por separado el software de tCP/iP). a continuacin mencionaremos los mtodos mas usados en la clase ServerSocket:

Mtodo Descripcin accept() Escucha conexiones a este socket de servidor y las acepta getInetAdress() Devuelve la direccin IP local del socket de servidor getLocalPort() Devuelve el puerto con el que escucha el socket de servidor close() Cierra el socket del servidor

121

public Socket accept() throws IOException: este mtodo espera conexiones. una vez que sea detectada una conexin entrante, el objeto ServerSocket admitir la conexin entrante y crear un objeto Socket. en caso de que falten conexiones el ServerSocket permanecer en estado bloqueado. Ocurrirn casos en los que al intentar crear el objeto Socket se producirn excepciones debidas a la configuracin de seguridad del ordenador donde reside el ServerSocket. public InetAddress getInetAddress(): este mtodo devolver un objeto InetAddress el cual contiene la direccin iP del ordenador al cual est conectado el socket. en caso de que el servidor ya no se encuentre conectado se devolver un null. public int getLocalPort(): este mtodo devolver el puerto por el cual el Socket Servidor est escuchando las conexiones entrantes de los sockets clientes. public void close() throws IOException: este mtodo tiene la capacidad de cerrar el Socket Servidor y liberar los recursos asociados. Si esta operacin no fuera posible (por ejemplo, por que ya ha sido cerrado), en este caso ser lanzada una excepcin del tipo IOException.

en esta clase no existen mtodos para poder extraer los flujos de datos de entrada y salida: es necesario usar el mtodo accept(); y aplicar los mtodos getInputStream() y getOutputStream() de la clase Socket que se vera a continuacin sobre el socket devuelto. ejemplo: // Se ha seleccionado el puerto 9000 para escuchar las // peticiones de los clientes ServerSocket socketservidor = new ServerSocket(9000); // Se crear un socket cuando un cliente haga una peticin Socket socketcliente = socketservidor.accept(); Si intentamos que un ServerSocket quiera escuchar puertos por un puerto que ya est ocupado por otro ServerSocket entonces se presentar una excepcin del tipo java.net. BindException.

122

Conexin entrante Aplicacin de cliente

ServerSocket

Socket Puerto accept

Aplicacin cliente Socket

Socket

Socket Aplicacin de Servidora

Figura 13. el mtodo accept() en marcha.

La clase java.net.Socket esta clase implementa sockets tCP activos (capaces de recibir y transmitir datos). Sus constructores son: protected Socket () throws Socketexception protected Socket (Socketimpl impl) throws Socketexception public Socket (String host, int puerto) throws unknownHostexception, iOexception public Socket (inetaddress direccion, int puerto) throws iOexception public Socket(String host, int puerto, inetaddress dirlocal, int puertolocal) throws iOexception public Socket (inetaddress direccion, int puerto, inetaddress dirlocal, int puertolocal) throws
123

iOexception public Socket (String host, int puerto, boolean flujo) throws iOexception public Socket (inetaddress host, int puerto, boolean flujo) throws iOexception protected Socket () throws Socketexception protected Socket (Socketimpl impl) throws Socketexception public Socket (String host, int puerto) throws unknownHostexception, iOexception public Socket (inetaddress direccion, int puerto) throws iOexception public Socket(String host, int puerto, inetaddress dirlocal, int puertolocal) throws iOexception public Socket (inetaddress direccion, int puerto, inetaddress dirlocal, int puertolocal) throws iOexception public Socket (String host, int puerto, boolean flujo) throws iOexception public Socket (inetaddress host, int puerto, boolean flujo) throws iOexception el constructor public Socket(String host, int puerto) throws UnknownHostException, IOException es posiblemente el ms usado. el cual crea un objeto de tipo Socket conectado a un puerto con numero puerto de la maquina de nombre host. Si no se puede localizar la maquina con nombre host se produce una excepcin del tipo java.net. UnknownHostException. el parmetro puerto corresponde al nmero de puerto de la maquina destino. Si no se especifica el nmero de local vinculado al socket, ste es asignado por la mquina virtual Java. independientemente existe dos constructores que permiten especificar el puerto local.
Mtodo getInetAddress() getPort() getLocalAddress() getLocalPort() getInputStream() getOutputStream() close() Descripcin Devuelve la direccin InetAddress a la cual est conectado el socket Devuelve el nmero de puerto al que est conectado el socket Devuelve la direccin local a la cual est conectado el socket Devuelve el nmero de puerto local al cual est conectado el socket Devuelve un flujo de entrada para el socket Devuelve un flujo de salida para el socket Cierra el socket

124

public InetAddress getInetAddress(): este mtodo devuelve la direccin ip remota (en forma de un objeto de tipo InetAddress) de la mquina a la que est conectado el socket. public int getPort(): este mtodo devuelve el puerto remoto al cual est conectado el socket. public InetAddress getLocalAddress(): este mtodo devuelve la direccin iP local (en forma de un objeto de tipo InetAddress) a la que est conectado el socket. public int getLocalPort(): este mtodo devuelve el puerto local al cual est conectado el socket. public void close() throws IOException: este mtodo cierra el socket y libera los recursos asociados. Si la operacin no es posible (por ejemplo, porque ya ha sido cerrado), se lanza una excepcin IOException. al cerrar un socket, tambin se cierran los flujos de entrada y de salida asociados. public InputStream getInputStream() throws IOException: este mtodo devuelve un flujo de entrada para el socket. Con l, una aplicacin puede recibir informacin procedente de la mquina de destino (es decir, del otro lado de la conexin). public OutputStream getOutputStream() throws IOException: este mtodo devuelve un flujo de salida para el socket, que puede usarse para enviar informacin a la mquina de destino (es decir, al otro lado de la conexin).

Cuando se trata de sockets activos hay dos mtodos que son indispensables: esto debido a que el socket necesita una manera de enviar y recibir informacin. para lo que el paquete java.net ocupa al paquete java.io, en particular a las clases java.io.InputStream y java. io.OutputStream. estas dos clases proporcionan mtodos muy sencillos para la lectura y escritura de bytes y arrays de bytes, stas a su vez extienden su funcionalidad a clase como java.io.Reader y java.io.Writer, que transmiten datos en forma de caracteres Unicode, ya no como simples bytes. Cuando trabajamos con el aPi java.net, tenemos a nuestra disposicin tres clases del aPi java.io que podemos ocupar para extender la funcionalidad de los objetos devueltos por getOutputStream() y getOutputStream():
bufferedreader. tiene dos mtodos que nos pueden ser muy tiles read() y readline(). el primero de stos devuelve el valor entero correspondiente al carcter ledo (devuelve -1 cuando hemos alcanzado el final del flujo), el segundo devuelve un String correspondiente a una lnea de texto. ambos provocan bloqueo: no terminan de ejecutarse hasta que haya datos disponibles o hasta que se lance una excepcin. printStream. incluye los mtodos print() y println(), que permiten enviar datos primitivos y objetos String. el mtodo write() permite enviar bytes arrays de bytes. los tres mtodos bloquean la e/S. printWriter. es una clase similar a la anterior e incluye tambin los mtodos print() y println(). la principal diferencia es que permite enviar caracteres codificados mediante distintas codificaciones (iSO latin, utF-8...). ambos mtodos bloquean la e/S. 125

ejemplos: // 1 creamos un socket con el un nombre de host y numero de puerto dado Socket socketCliente = new Socket(latigo.cs.buap.mx, 25); // 2 Se crea un socket con la direccin ip dada y el puerto 25. Socket socketCliente = new Socket(26.56.8.140, 25); // 3 Se crea un socket con la direccin ip dada y el puerto 1025. Socket socketCliente = new Socket(26.56.8.140, 1025); // Se obtiene el nombre del ordenador al que pertenece el socket. System.out.println(socketCliente.getinetaddress()); // Se obtiene el nmero de puerto asociado al socket. System.out.println(socketCliente.getport()); // 4 Se crea un socket con la direccin ip dada y el puerto 25. Socket socketCliente = new Socket(26.56.8.140, 25); // una vez establecida la conexin, se extraen los flujos de e/S asociados al socket. inputStream entrada = socketCliente.getinputStream(); OutputStream salida = socketCliente.getOutputStream(); // Se lee del servidor un byte mediante el mtodo read(). entrada.read(); // Se enva al servidor un byte mediante el mtodo write(). salida.write(64); // Se usa la clase printWriter como envoltorio de OutputStream para enviar una cadena de // caracteres al flujo de salida. luego, se cierra el socket. printWriter pw = new printWriter(salida, true); pw.println(escribiendo en la salida); socketCliente.close();
126

// 5 Se crea un socket con la direccin ip dada y el puerto 25. Socket socketCliente = new Socket(26.56.8.140, 25); // una vez establecida la conexin, se extraen los flujos de e/S asociados al socket. inputStream entrada = socketCliente.getinputStream(); OutputStream salida = socketCliente.getOutputStream(); // Se usa la clase bufferedreader como envoltorio de inputStream para leer lneas // completas del flujo de entrada. bufferedreader br = new bufferedreader(new inputStreamreader(socketCliente.getinputStream())); // Se lee una lnea completa y se cierra el socket. br.readline(); socketCliente.close(); la implementacin de cualquier programa servidor en Java sigue esta secuencia de pasos:
1. Se crea un objeto ServerSocket para escuchar a las peticiones que llegan al puerto asociado al servicio. 2. Cuando se llama al mtodo accept(), el socket de servidor permanece a la espera de peticiones de clientes por el puerto. 3. al llegar una solicitud se siguen tres pasos: 3.1. Se acepta la conexin, lo cual genera un objeto Socket asociado al cliente. 3.2. Se asocian objetos de las clases contenidas en el paquete java.io a los flujos (streams) de entrada y salida del socket. 3.3. Se lee de los flujos y se escribe en ellos; es decir, se leen y procesan los mensajes entrantes y se envan las respuestas a los clientes. 4. Se cierran los flujos. 5. Se cierra el socket vinculado al cliente. 6. el socket de servidor contina a la espera de nuevas peticiones. igualmente, los programas cliente se implementan as: 1. Se crea un objeto Socket, que tiene asociado un nodo de destino y un puerto donde se ejecuta el servicio de inters. 2. Se asocian objetos de las clases contenidas en el paquete java.io a los flujos (streams) de entrada y salida del socket. 3. Se lee de los flujos o se escribe en ellos. 12

4. Se cierran los flujos. 5. Se cierra el socket.

el cierre de los sockets no debe pasarse por alto: por su naturaleza bidireccional consumen bastantes recursos, tanto de la mquina virtual Java como del sistema operativo. un socket se cierra cuando
finaliza el programa que lo cre; se llama a su mtodo close(); se cierra uno de los flujos de e/S asociados; es eliminado por el recolector de basura.

Confiar en el recolector de basura para cerrar los sockets o los flujos de e/S es prctica poco recomendable. Consideremos, por ejemplo, este mtodo: public void escribirarchivo() { try { File fichero = new File(C:\temporal.txt); bufferedOutputStream salida = new bufferedOutputStream(new FileOutputStream(f ichero)); salida.write( (int) a); // escribe el byte correspondiente al carcter a salida.flush(); } catch (iOexception e) { e.printStacktrace(); } } Como el objeto salida no se cierra explcitamente, quedar marcado como posible presa del recolector de basura cuando termine el mtodo. Cuando el recolector de basura lo cace, lo cerrar y liberar su memoria. al cerrarse el objeto salida, tambin se cerrar el FileOutputStream. perfecto. es lo que se quiere, verdad? para qu hay que preocuparse de cerrar los flujos? Hay varios motivos para rechazar el cdigo anterior y mandarlo a un infierno mucho peor que el que sufren los objetos eliminados por el recolector de basura:
128

1.

2.

Hasta que el recolector de basura acte, el archivo permanecer abierto. Si se intentara borrarlo o volverlo a abrir, se arrojara una excepcin que indicara que el archivo est abierto y en uso. la tarea del recolector de basura consiste en liberar memoria de los objetos Java que no se usan, no liberar recursos del sistema operativo (estructuras de datos, etc.). la nica manera limpia de liberar recursos del so usados por los objetos Java es usar mtodos close(), dispose() que se encarguen de llamar al cdigo de limpieza escrito especficamente para cada plataforma (suele estar escrito en C o C++).

algunos programadores se olvidan de cerrar los sockets y los flujos cuando terminan de usarlos y colocan el cdigo de limpieza dentro del mtodo finalize() (este mtodo es llamado por el recolector de basura cuando se dispone a borrar algn objeto para el cual no existen referencias). as, los recursos del so se liberarn cuando el objeto sea eliminado por el recolector de basura. en general, esta prctica resulta nefasta. Supongamos, por ejemplo, un programa que abre muchos archivos y no los cierra. puede suceder que el lmite de ficheros abiertos admitido por el so se alcance sin que el recolector de basura haya actuado y, por ende, sin que se haya llamado a finalize(), donde reside el cdigo de limpieza; pues el recolector slo empieza a ponerse nervioso y a afilarse las uas cuando queda poca memoria en la pila, no cuando quedan pocos recursos libres para el Sistema Operativo. en este caso, el programa se colgara o sera incapaz de abrir ms archivos. aparte, si se confa en el recolector de basura y en la limpieza de recursos dentro de finalize(), el comportamiento del programa ser diferente en cada implementacin de la MVj, pues cada una tiene sus tcnicas para el recolector de basura: en las que el recolector fuera muy activo, funcionara bien; en las que no, podra provocar fallos inexplicables a simple vista. la peor situacin se dara en las implementaciones sin recolector de basura (la especificacin de la MVj establece claramente que el recolector de basura es potestativo), tpicas de los dispositivos pequeos. los problemas derivados de no cerrar los sockets empeoran los correspondientes a mantener abiertos los flujos de e/S asociados a archivos: los sockets mantienen una conexin bidireccional que atraviesa las redes que median entre las mquinas donde estn. para mantenerla, se usan muchos recursos del sistema operativo y se produce un constante envo de datagramas iP entre las mquinas. no cerrar los sockets cuando se ha terminado de usarlos constituye un claro desperdicio de recursos. Cuando un socket no se cierra correctamente porque la aplicacin ha fallado, el sistema operativo puede tardar minutos en conseguir cerrarlo. dependiendo de la MVj y del so, la
129

desaparicin de un socket sin hacer antes un close() puede ser interpretada por el socket del otro extremo como una falta de envo de datos, y este ltimo socket puede colgarse hasta que se cierre el programa. Un ejemplo de aplicacin cliente-servidor con java.net para mostrar la implementacin en Java de los pasos para escribir aplicaciones clienteservidor, incluyo este ejemplo:

RegistroConexiones.java
import java.net.*; import java.io.*; /** * esta clase enva un breve mensaje a los clientes que se conectan y cierra la * conexin. no puede atender a la vez a ms de un cliente. Si hay algn error * al intentar enviar el mensaje al cliente (por ejemplo, porque se ha cerrado * tras conectarse), la aplicacin se cierra. */ public class registroConexiones { public static void main(String args[]) { ServerSocket socketServidor = null; Socket socketCliente = null; printWriter salida = null; // Se crea el socket de servidor en el puerto 4000 try { socketServidor = new ServerSocket(4000); } catch (iOexception e1) { System.out.println(no se ha podido arrancar el servidor.); // Se intenta cerrar el socket de servidor. if (socketServidor != null) try { socketServidor.close();
130

} catch (iOexception e2) { // no se hace nada } System.exit(-1); } while (true) { // bucle infinito try { // Se aceptan peticiones de los clientes. socketCliente = socketServidor.accept(); // Se abre un flujo de salida. salida = new printWriter(socketCliente. getOutputStream()); // Se muestra informacin sobre la conexin entrante y se enva // un mensaje al // cliente. System.out.println(Conexin del cliente con direccin + socketCliente.getinetaddress(). getHostaddress() + por el puerto + socketCliente. getport()); salida.println(Hola y adis); salida.close(); // Se cierra el socket. socketCliente.close(); } catch (iOexception e3) { if (salida != null) { salida.close(); } if (socketCliente != null) { try { socketCliente.close(); } catch (iOexception e4) {

131

} // no se hace nada } if (socketServidor != null) { try { socketServidor.close(); } catch (iOexception e5) { } // no se hace nada } e3.printStacktrace(); System.exit(-1); // Se sale del programa. } } } } el programa cliente no se necesita escribirlo: hacer un telnet (Siguiente figura).

Otro cliente del servicio de registro de conexiones 132

Salida del cliente del servicio de registro de conexiones.

el ejemplo de la clase RegistroConexiones no es aceptable en ninguna aplicacin profesional: slo es capaz de atender simultneamente a un cliente. mientras no acabe con uno, no podr comenzar con el siguiente. la solucin ms sencilla al problema es utilizar hilos (threads). un hilo no es ms que un flujo de control dentro de una aplicacin. en el programa anterior, si se asigna un hilo a cada cliente que se conecte, el programa principal podr seguir aceptando conexiones.

133

vemoslo con cdigo:

RegistroConexionesHilos.java
import java.net.*; import java.io.*; /** * versin con hilos de registroConexiones. esta clase enva un breve mensaje a * los clientes que se conectan y cierra la conexin. puede atender * simultneamente a varios clientes. Si hay algn error al intentar enviar el * mensaje al cliente (por ejemplo, porque se ha cerrado tras conectarse), se * cierra el hilo correspondiente a ese cliente, pero no la aplicacin. */ public class registroConexionesHilos { public static void main(String args[]) { ServerSocket socketServidor = null; Socket socketCliente = null; printWriter salida = null; // Se crea el socket de servidor en el puerto 4000 try { socketServidor = new ServerSocket(4000); } catch (iOexception e1) { System.out.println(no se ha podido arrancar el servidor.); // Se intenta cerrar el socket de servidor. if (socketServidor != null) try { socketServidor.close(); } catch (iOexception e2) { // no se hace nada } System.exit(-1); } while (true) { // bucle infinito try {
134

// Se aceptan peticiones de los clientes. socketCliente = socketServidor.accept(); new threadCliente(socketCliente); } catch (iOexception e3) { if (socketCliente != null) { try { socketCliente.close(); } catch (iOexception e4) { } // no se hace nada } } } // fin while } } class threadCliente extends thread { private Socket socketCliente; public threadCliente(Socket socket) { socketCliente = socket; start(); // Se arranca el hilo. } public void run() { printWriter salida = null; try { // Se abre un flujo de salida. salida = new printWriter(socketCliente.getOutputStream()); // Se muestra informacin sobre la conexin entrante y se enva un // mensaje al cliente. System.out.println(Conexin del cliente con direccin + socketCliente.getinetaddress(). getHostaddress() + por el puerto + socketCliente.getport());

135

salida.println(Hola y adis); salida.close(); // Se cierra el socket. socketCliente.close(); } catch (iOexception e1) { if (salida != null) { salida.close(); } if (socketCliente != null) { try { socketCliente.close(); } catch (iOexception e2) { } // no se hace nada } e1.printStacktrace(); } } }

referenCias
1. Haviland, Keith; Salama, ben. unix System programming. addison-Wesley publishing Company. 2. Flynn, ida m.; mciver mcHoes, ann. Sistemas Operativos. tercera edicin. thomson learning. mxico, 2001. 3. Chow, Jhonson . distributed Operating Systems & algorithms ,addison Wesley 4. m.l.liu, Computacin distribuida, Fundamentos y aplicaciones. 5. especificacin del api de la plataforma Java 1.5, http://java.sun.com/j2se/1.5/dos/api/index. html 6. Java socket api, http://java.sun.com/producsts/jdk/1.2/docs/api/index.html

136

COntenidO

prlogo Captulo 1: introduccin a los Sistemas Operativos Centralizados y distribuidos 1.1 Componentes bsicos de la arquitectura de von neuman 1.2 registros bsicos del procesador 1.3 ejecucin de instrucciones 1.4 interrupciones 1.5 taxonoma de Flynn 1.6 arquitectura de multiprocesadores 1. definicin de Sistemas operativos ejercicios referencias Captulo 2: Conceptos de Sistemas Operativos 2.1 evolucin de los Sistemas operativos 2.2 Funciones de los Sistemas operativos 2.3 llamadas al Sistema 2.4 estructura de un Sistema operativo 2.4.1 microncleo 2.4.2 ncleo monoltico 2.4.3 Capas virtuales 2.4.4 Otras estructuras virtuales 2.5 tipos de Sistemas operativos 2.5.1 Sistemas operativos centralizados 2.5.2 Sistemas operativos de red 2.5.3 Sistemas operativos distribuidos 2.5.3.1 definicin 2.5.3.2 aspectos de diseo de un sistema distribuido 2.5.3.3 ventajas y desventajas de un sistema distribuido ejercicios referencias 13

 8 9 10 10 11 11 12 14 15 1 19 19 19 19 20 21 22 22 22 22 22 23 24 24 26

Captulo 3: Gestin de procesos e hilos en ambientes centralizados y distribuidos 3.1 Conceptos bsicos de procesos e hilos 3.2 despacho en sistemas centralizados 3.2.1 Criterios de despacho 3.2.2 tipos de despachadores 3.2.3 algoritmos de despacho 3.3 despacho en sistemas operativos distribuidos 3.3.1 modelos de sistemas 3.3.2 planificacin en sistemas distribuidos 3.4 Comunicacin entre procesos en ambientes distribuidos 3.4.1 modelos por capas 3.4.2 modelo Cliente-Servidor 3.4.3 llamados a procedimientos remotos (rPC) e invocacin a mtodos remotos (rMi) 3.4.4 Comunicacin en grupo 3.5 Sincronizacin en ambientes distribuidos 3.5.1 Sincronizacin de relojes 3.5.2 exclusin mutua 3.5.3 algoritmos de eleccin 3.5.4 transacciones atmicas 3.5.5 bloqueos 3.6 tolerancia a fallas ejercicios referencias Captulo 4: Gestin de memoria en ambientes centralizados y distribuidos 4.1 manejo de memoria con particiones fijas 4.2 manejo de memoria con particiones variables 4.3 memoria virtual en sistemas operativos centralizados 4.3.1 paginacin 4.4 memoria compartida distribuida (dsM) 4.4.1 manejo de memoria compartida en multiprocesadores 4.4.1.1 multiprocesadores basados en un bus 4.4.1.2 multiprocesadores basados en un anillo 4.4.2 principales aproximaciones a dsM ejercicios referencias Captulo 5: uso de sockets en Java referencias 138

2 34 34 35 36 38 38 43 49 50 52 53 5 59 59 62 65 6 1 3 5 81 85 8 89 90 9 9 98 101 103 104 105 10 136

Sistemas Operativos Centralizados y Distribuidos se termin de imprimir en agosto de 2009 en la imprenta papelera la uni ubicad en ro pnuco 613 Col. San manuel, puebla, pue. telfonos: 01-222 345 3 32, la coordinacin estuvo a cargo de Jos luis Olazo Garca la edicin y composicin tipogrfica son de ervey Castillo tiraje 400 ejemplares.

139

You might also like