Вы находитесь на странице: 1из 403

ADMINISTRACION DE S.O.

, REDES Y BASES DE DATOS

ADMIN I STRAC ION DE S.O., R ED E S Y BAS E S DE DATOS

Fundamentos de computadores............................................3 Arquitectura de computadores.............................................52 Arquitectura de sistemas distribuidos...................................66 Administracin de sistemas operativos (Windows y Linux)..82 Sistemas operativos............................................................161 Diseo de redes de computadores......................................208 Redes...................................................................................230 Administracin de redes y sistemas operativos...................256 Bases de datos 1.................................................................284 Bases de datos 2.................................................................312 Sistemas de gestin de bases de datos..............................353 Preguntas.............................................................................384 Comunicaciones inalmbricas.............................................388

Fundamentos de computadores
TEMA 1 JUEGOS DE INSTRUCCIONES Y MODOS DE DIRECCIONAMIENTO

1. INSTRUCCIONES GENERALES Ya conocemos la secuencia de ejecucin de instrucciones estudiada en la asignatura Fundamentos de Computadores 1: Fetch, decodificacin, lectura de datos, realizacin de la operacin, almacenamiento del resultado y actualizacin del contador de programas. Debido a que las instrucciones se realizan una detrs de la otra, se habla de flujo de ejecucin lineal, excepcin hecha de las instrucciones de bifurcacin que modifican el contador de programa. El juego de instrucciones de un computador est formado por el conjunto de instrucciones de mquina que es capaz de ejecutar. ste suele ser reducido, de unas 60 instrucciones para procesadores RISC a unas 250 para procesadores CISC y constituye una caracterstica muy importante de su arquitectura. Se denomina lenguaje nativo de mquina aquel que sta puede entender de forma directa. Los trminos de dicho lenguaje se encuentran determinados por el juego de instrucciones y se deben expresar en forma de cadenas de unos y ceros. Las instrucciones de mquina cumplen las siguientes propiedades: Realizan una funcin sencilla nica: suma, resta, AND. Operan sobre uno o dos operandos simples e un formato determinado. Trabaja en un formato sistemtico y lo ms compacto posible a fin de minimizar las necesidades de memoria. Son autocontenidas, es decir, incluyen toda la informacin necesaria para ser ejecutadas. Son independientes del contexto, su efecto no depende de ningn elemento externo a la instruccin en s (a excepcin de las bifurcaciones condicionales). La ejecucin de las instrucciones es atmica, es decir, o se lleva a cabo toda ella de forma indivisible o completa; o bien, no se ejecuta. El modelo de programacin del computador Von Neumann se compone de varios elementos: Mapa de memoria: El espacio de todas las posiciones de memoria que la mquina es capaz de direccional. El espacio viene limitado por la longitud de las direcciones con las que el PC trabaja. Suponiendo que estas tengan m bits, sus posibles valores van de 0 a 2 m-1, y, por tanto, el mapa de memoria es de 2m posiciones. Mapa de E/S: Permite la comunicacin entre los perifricos y la Unidad Central de Proceso. Registro de usuario: Es el banco de registros que el programador puede manipular de forma directa con las instrucciones de mquina. Se seleccionan con una direccin de pocos bits, puesto que suelen tener de 8 a 32 registros de usuario. Registro de estado: Depende en gran medida, de la arquitectura especfica de que se trate, y podemos tener: Bits de resultado (transporte, positivo, negativo, cero, desbordamiento); nivel de ejecucin (en ncleo o kernel donde se ejecutan todo el juego de instrucciones o de usuario donde solo se llevan a cabo un subconjunto de los primeros); mscara de interrupcin. En cuanto al formato de las instrucciones como hemos dicho que estas son autocontenidas, deben prever toda la informacin necesaria para su ejecucin; por ello y, en principio, deben especificar los siguientes elementos: Operacin a efectuar Operandos sobre los que acta la operacin anterior Formato de representacin de los datos Ubicacin del resultado, o sea, registro o direccin de memoria donde se debe almacenar Identidad de la siguiente instruccin Esto es as en teora, en realidad se utiliza el concepto de informacin implcita con la que determinados valores se dan por defecto y solo se especifican si son diferentes a ellos. Por ejemplo la identidad de la instruccin siguiente se sobreentiende que es la siguiente, no se especifica (solo en caso de instrucciones de bifurcacin).

Fundamentos de Computadores Pg. 2

Modelos de ejecucin encontramos varios, dependiendo de los dispositivos que encontremos, estos son: la pila, los registros de usuario y la memoria principal.

2. MODOS DE DIRECCIONAMIENTO Un modo de direccionamiento constituye un procedimiento que permite acceder a un operando de una instruccin, tanto si es un dato, como un resultado, como la direccin de la instruccin hacia donde se bifurca. A primera vista quiz sorprenda la tremenda variedad de modos de direccionamiento, pero esto se debe a varias causas: Ahorro de espacio: Hay que reducir al mximo el nmero de bits utilizados en la instruccin. Si se pretende que el cdigo sea reubicable (se puede cargar a partir de cualquier posicin de memoria y se ejecuta de forma correcta) se precisan modos de direccionamiento relativos. El manejo de tablas, vectores o matrices se simplifica con los modos de direccionamiento relativos.

1. Direccionamiento inmediato: nicamente puede utilizarse para datos y consiste en incluir el valor del dato en la instruccin, es un mtodo muy poco flexible, puesto que el valor es fijo y constante. 2. Direccionamiento directo absoluto: Se utiliza para expresar que la direccin obtenida es realmente la del operando de la instruccin; la instruccin contiene la direccin del operando, tanto a registro como a memoria (a registro suele utilizar menos bits pues hay menos registro de usuario, 16 32, a memoria ocupa ms bits por la razn opuesta). 3. Direccionamiento directo relativo: La instruccin no contiene la direccin real del operando, sino una direccin D (desplazamiento) relativa a un puntero RB (registro base). La direccin real del operando se calcula realizando la operacin de suma D+RB. Este modo se caracteriza por ser mucho ms compacto (ya

Fundamentos de Computadores Pg. 3

4. 5.

6. 7. 8. 9.

que el nmero d de bits requerido es menor que el nmero m de bits utilizado en el modo absoluto a memoria), permite la reubicacin (solo hay que cambiar el registro base para que se modifiquen las direcciones de todos los datos e instrucciones), se utiliza para recorrer muchas estructuras de datos de manera eficiente; adems como requiere una operacin de suma, muchos computadores incluyen una unidad sumadora especfica para el clculo de direccin, as se ahorra utilizar la que se encuentra en la UAL. Direccionamiento relativo a registro base: Se utiliza como registro base RB uno de los registros de usuario o uno especial de direcciones; dicho registro no se modifica en la operacin de direccionamiento. Direccionamiento relativo al contador de programa: Se toma como registro base el PC, por esta razn se obtiene la direccin sumando el desplazamiento al PC. Este direccionamiento permite acceder a posiciones de memoria que se encuentren prximas a la instruccin actual, lo que provoca que sea muy adecuado para bifurcaciones de programa y para construir bucles. Direccionamiento relativo al registro ndice: Es un registro cuyo contenido se modifica al establecer el direccionamiento, sumndole o restndole un incremento. As se pueden recorrer estructuras de datos, puesto que slo es necesario que el incremento sea igual al tamao de los datos de la estructura. Direccionamiento en pila: Es un caso particular del caso anterior que utiliza el puntero de pila como registro ndice, ste apunta hacia el encabezamiento de la pila y se debe incrementar o decrementar adecundose a los accesos de la pila. Direccionamiento indirecto: Parte de otro tipo, absoluto o relativo, al que aade un paso ms que consiste en que la direccin calculada no apunta al elemento X deseado, sino a una posicin de memoria que contiene la direccin del elemento. Direccionamiento implcito: El formato de instruccin no incluye ningn campo para especificar el operando, ya que es un lugar predeterminado, constituyendo un registro usuario preferente denominado acumulador. La ventaja es que no ocupa espacio en la instruccin, pero el inconveniente es que reduce la flexibilidad de la misma, que solo puede tener el operando en un lugar fijo.

Direccionamiento inmediato DL DL + Inmediato Direccionamiento directo absoluto Reg4 Reg4 OR M(Absoluto) M(Pg Bse) Reg2 AND M(Pg base) 1000 100 001111001 0010011001000111111100000111110 OR Reg tipo datos (Absoluto) 1100 010 110111000 0010001100100011 AND Reg Tipo datos Pgina base Se hace OR del Reg4 y la M(Absoluta) y se guarda en Reg4 Se hace AND del Reg2 y la M(Pg base) y se guarda en esta ltima 1000000011000 / 010 / 00110101 Suma Reg Inmediato Direcciona a la posicin Suma

Direccionamiento relativo al contador del programa M M(PC+D) PC=0E25h IR=0004h; direccin= PC+IR=37FCh El valor del PC no es el de la instruccin actual en curso, sino el de la siguiente (+ bits que ocupe)

Direccionamiento relativo a registro base M M(D+RB) 11110111 00100110 0100011110101101 Multipl. Mod R/m Desplazamiento

Direccionamiento relativo al registro ndice PostAutoincremento PostAutodecremento Preautoincremento Preautodecremento Direccionamiento indirecto D (Direccin en la operacin) D y puntero B en la instruccin D Dir(X) X D + Puntero B Dir (X) X Absoluto Relativo RI=7436 , Inc: 4 y despl.: -65 Direccin RI + D 7436 65 = 7371 RI RI + Inc 7436 + 4 = 7440 RI=7436 , Inc: 4 y despl.: -65 Direccin RI + D 7436 65 = 7371 RI RI - Inc 7371 - 4 = 7375 RI=7436 , Inc: 4 y despl.: -65 RI RI + Inc 7436 + 4 = 7440 Direccin RI + D 7440 -65 = 7375 RI=7436 , Inc: 4 y despl.: -65 RI RI - Inc 7436 - 4 = 7432 Direccin RI + D 7432 65 = 7367 El Fe factor de escala, se aplicar en los casos necesarios

Fundamentos de Computadores Pg. 4

3. INSTRUCCIONES DE MQUINA Podemos clasificar las instrucciones de mquina segn su funcin en: Instrucciones de transferencia o movimiento de datos Instrucciones de interrupcin de la secuencia del programa Instrucciones aritmticas y lgicas Instrucciones de entrada/salida y miscelneas

Existe una correspondencia muy estrecha entre las instrucciones en cdigo mquina y en ensamblador, adems como este ltimo es mucho ms cmodo para las personas que la binaria, es el que vendremos utilizando. Una instruccin o sentencia ensamblador se compone del mnemnico que expresa la funcin de la operacin y la segunda parte que especifica los operandos que no nos implcitos en la operacin. Instrucciones de transferencia o movimiento de datos Permiten copiar la informacin contenida en un registro o posicin de memoria a otro registro oposicin de memoria, constan de dos operandos: el origen y el destino. Pueden parecer instrucciones poco tiles, pero en realidad son las ms utilizadas, ya que suponen del 30 al 40% de las instrucciones que ejecuta un computador. Los mnemnicos ms importantes son:
MOVE ST LD PUSH POP MOVEM XCH CLR SET Store Load Es una transferencia general entre registros y posiciones de memoria Transmite el contenido de un registro a una posicin de memoria Transmite el contenido de una posicin de memoria a un registro Introduce el dato de origen en la pila y lo convierte en el encabezamiento Extrae el dato de encabezamiento de la pila Transfiere bloques de datos de una zona de memoria a otra Intercambia el contenido de los dos operandos especificados Pone el destino en ceros Pone el destino en unos

Move Block Exchange Clear

Instrucciones de interrupcin de la secuencia del programa Rompen la cadena normal de ejecucin, basada en el incremento del programa PC, cargando un nuevo valor en ste. Suelen suponer de un 24 a un 33% del total de las instrucciones de uso ejecutadas. Y encontramos 3 tipos principales: Bifurcaciones incondicionales: Se carga un nuevo valor en el contador del programa, Se suelen utilizar los mnemotcnicos Jump y Branco Bifurcaciones condicionales: Constituyen las nicas cuya ejecucin depende del contexto. Se debe especificar una condicin de bifurcacin que si se cumple se ejecutar la bifurcacin y si no, no. Los nemotcnicos ms usuales son:
B[-] SKIP [-] Branch Con [-] se indica la condicin de bifurcacin; por ejemplo BZ de Branco if Zero bifurcar si el Bit 0 de la palabra de estado se encuentra activo. Si se cumple la condicin de bifurcacin [-] se saltar la instruccin siguiente.

Y las condiciones de bifurcacin ms usuales son:


Z E C P V PE Zero Equal Carry Positive Overflow Parity even Cero Igual Transporte Positivo Desbordamiento Paridad de pareja: Paridad impar si el numero de ceros o unos es par.

Bifurcaciones con retorno: Una de las estructuras de programacin ms utilizadas es la subrutina. Es un programa autocontenido que se incorpora a otro programa en una o varias posiciones. Al llegar a la posicin de incorporacin, el control pasa a la subrutina, hasta que cabe su ejecucin; luego el control retorna al programa. Las dos grandes ventajas son la economa (pues puede llamarse varias veces al mismo programa y economizar lneas de cdigo) y la modularidad (se permite dividir el programa en varios trozos ms pequeos y manejables. Tenemos dos instrucciones:
CALL RET Return Instruccin que cede el control a la subrutina Devuelve el control al programa que realiza la llamada

Fundamentos de Computadores Pg. 5

Cuando una subrutina llama a otra, se considera una nidificacin de subrutinas. La instruccin Call solo tiene un operando que especifica la direccin a partir de la cual se encuentra almacenada la subrutina; adems esta instruccin debe guardar la direccin de la instruccin que la sigue (direccin de retorno) para poder volver a este punto cuando acabe de ejecutarse la subrutina; y eso es lo que hace la instruccin Ret, que no necesita ningn operador ms, pues la direccin de retorno ya hemos dicho que se encuentra implcito. Instrucciones aritmticas y lgicas y miscelneas Son instrucciones muy variadas, segn sea mondicas o didicas necesitaran uno o dos registros sobre los que operar. Las instrucciones aritmticas que solemos encontrar son:
ADD ADDC SUB SUBC MUL DIV INC DEC NEG ABS Addition Addition with carry Subtract Subtract with borrow Multiply Divide Increment Decrement Negative Absolute Suma Sua aadiendo el bit de transporte de la palabra de estado Resta Resta teniendo en cuenta el transporte de la palabra de estado Multiplica Divide Incrementa una unidad Decrementa una unidad Cambia de signo o niega Obtiene el valor absoluto

Entre las instrucciones lgicas encontramos:


SHR SHL SHRA ROR ROLC Shift rifht Shift Left Shift right Arithmethic Rotate Right Rotate left through carry Desplazamiento Desplazamiento Desplazamiento Desplazamiento Desplazamiento lgico a la derecha lgico a la izquierda aritmtico a la derecha circular a la derecha circular a la izquierda con transporte

Entre estos dos grupos de instrucciones, venimos a tener el 26 a 35% de las instrucciones generadas para un programa. Otros tipos de instrucciones son las de comparacin, que no modifican el resultado, solo actualizan el registro de estado (probablemente para efectuar un clculo o un salto posterior)
CMP TEST Compare Realiza una operacin SUB entre los dos operandos sin guardar el resultado Compara el operando con cero

Las instrucciones de entrada/salida suelen ser privilegiadas, es decir, solo se reservan al nivel de ejecucin del ncleo, no de usuario. Su funcin consiste en realizar una transferencia entre una posicin del mapa de e/s y un registro o posicin de memoria: con este tipo de funciones se controlan los perifricos. Tenemos las instrucciones:
IN OUT Input Output Transmite informacin de un puerto de entrada a un registro o pos. de memoria Transfiere informacin de un registro o memoria a un puerto de salida

Luego encontramos otras instrucciones difciles de clasificar, entre las que podemos estudiar:
NOP SETC CLRC SETV CLRV EI DI HALT WAIT No operation Set carry Clear carry Set overflow Clear overflow Enable interrupt Disable interrupt Instruccin que no hace nada, se puede utilizar en bucles de espera Activa el bit de trnasporte de la palabra de estado Desactiva el bit de transporte de la palabra de estado Activa el bit de desbordamiento de la palabra de estado Desactiva el bit de desbordamiento de la palabra de estado Activa el bit de interrupcin y permite que se acepten interrupciones Desactiva el bit de interrupcin e inhibe las interrupciones Es muy raro su uso pues para volver a arrancar hay que volver a encender la mquina Intruccin privilegiada que para el procesador, pero con cualquier interrupcin se vuelve a poner en marcha, se utiliza mucho para reducir el consumo

Fundamentos de Computadores Pg. 6

4. MQUINAS CISC Y RISC El diseo de los computadores hasta mediados de los 80 propugnaba un rico y variado juego de instrucciones complementando la arquitectura del PC. Cada fabricante se esforzaba por sacar a la luz un juego de instrucciones amplio, aunque de estructura irregular y que presentaban muchas excepciones. Pero a mediado de los 80 esto cambi, se propugna la arquitectura RISC (Reduced instruccin set computer) con un juego de instrucciones sencillo, ante la clsica CISC (Complex) como podan ser los IBM370, Motorota 680xx e Intel xx86. Hoy da se acepta una buena arquitectura (y por tanto un buen juego de instrucciones) que sea regular y no presente casos excepcionales, es decir que sea regular y ortogonal. Ello permite: Disear compiladores ms sencillos y eficaces. Programar ms fcilmente en ensamblador, pues el usuario no debe recordar casos especiales ni saber utilizarlos. El hecho de que un juego de instrucciones sea regular, viene determinado por la ortogonalidad, esto quiere decir que cada operacin se debe poder efectuar con cualquier tipo de operando y de direccionamiento; es necesario por tanto que disponga de todas las posibilidades que tengan sentido, aunque existan combinaciones de poca frecuencia de uso. Pero en cambio, se gana en que las funciones que realiza el computador son simples y por tanto rpidas, y un juego de instrucciones sencillo simplifica el diseo (y posiblemente abarate costes). El caso es que, aunque desde mediados de los 80 se conoce la mejora de los formatos RISC hasta casi hoy da no ha evolucionado, porque claro, el coste de cambiar, equipos, nuevos diseos, nuevo software y paquetes de programa que lo soporten, es muy elevado.

Fundamentos de Computadores Pg. 7

TEMA 2 LOS SISTEMAS DE ENTRADA/SALIDA

1. ASPECTOS BSICOS DE LA ENTRADA/SALIDA El objetivo del sistema entrada/salida del computador consiste en intercambiar informacin entre los perifricos y la memoria principal o los registros del procesador. Evidentemente, todos los perifricos no son iguales y nos interesa clasificarlos por un parmetro fundamental para el proceso de entrada/salida como es el ancho de banda, es decir, la capacidad mxima que tiene de intercambiar informacin el perifrico con el resto del sistema por unidad de tiempo.
Caractersticas bsicas de los perifricos Dispositivo Sentido transferencias Teclado Entrada Ratn Entrada Monitor grfico Salida Disco magntico Entrada/salida Cd-Rom (12x) Entrada Impresora lser Salida Desencadenante transferencias Usuario Usuario Computador Computador Computador Computador Ancho de banda 10 bytes/s 20 bytes/s 30 Mb/s 2 Mb/s 1,8 Mb/s 100 Kb/s

Al observar la tabla anterior es preciso comprender que existen multitud de perifricos con caractersticas distintas y el hecho de intercambiar datos con ellos implica amoldarse a su sentido, desencadenante y, sobre todo, ancho de banda para realizar la transferencia. En principio se podra crear un software especfico para cada dispositivo, no obstante debido al gran nmero de ellos que existen la opcin es impracticable, por ello se definen mdulos normalizados de interconexin que se denominan mdulos o controladores de entrada/salida. La funcin bsica de estos mdulos es ocultar al computador las particularidades de cada perifrico y facilitar una visin y un control genricos de stos El mdulo de entrada/salida constituye un controlador especfico de uno o varios perifricos del mismo tipo y tiene dos elementos bsicos: una interfaz especfica con el perifrico que controlan y una conexin normalizada con el resto del sistema. Es decir, existen unas especificaciones de todas sus caractersticas bsicas como: El conjunto de lneas de conexin que lo componen Los circuitos equivalentes de todos los elementos conectados al bus normalizado El tamao y otras caractersticas fsicas de los conectores Cronogramas de funcionamiento Hablando en plata: la conexin entre el computador y el mdulo de entrada/salida es una conexin normalizada a la que se deben adaptar tanto el PC como el mdulo de entrada/salida una vez que se haya definido un estndar de conexin. Con frecuencia, un computador tiene conexiones normalizadas de varios tipos, as admite perifricos desarrollados segn diferentes normas. Esta conexin se establece mediante un conjunto de registros (ver grfico) que se agrupan segn el tipo de informacin que almacenan. La transferencia de informacin a travs de los mdulos de entrada/salida tienen dos partes primordiales: la sincronizacin y el intercambio o transferencia de la informacin en s. Porqu hace falta una sincronizacin? Pues muy sencillo, el computador y el perifrico tienen temporizaciones diferentes, como la velocidad de ambos es distinta, se hace necesario establecer un protocolo mediante el cual ambos subsistemas puedan determinar cual es el momento apropiado para intercambiar cada elemento de informacin. La sincronizacin es necesaria para evitar las prdidas de informacin. Por ejemplo para enviar datos a una impresora de matriz de puntos, es preciso saber en qu momento est dispuesta a recibir el carcter siguiente y esto depender generalmente de cual ha sido el carcter anterior recibido; as el tiempo de espera ser mayor en los retornos de carro, cambios de lnea o tabulaciones. Una vez hecho lo anterior, se consigue que el perifrico y el PC estn disponibles para establecer el intercambio o transferencia de informacin, que es cuando uno se enva al otro (dependiendo del sentido de la transferencia) el dato que constituye el objeto de la transaccin. En cualquier computador convencional (un nico procesador) es ste el que gobierna cada transaccin de entrada/salida, o sea, decide leer o escribir informacin de/sobre un controlador de perifrico; pero no es el procesador el que decide en qu momento o de

Fundamentos de Computadores Pg. 8

qu forma se va a realizar la transferencia; es el perifrico el que debe poder indicarle al procesador en qu momento se encuentra dispuesto para transmitir o aceptar informacin hacia o del procesador. En funcin del mtodo utilizado para establecer la sincronizacin y llevar a cabo el intercambio de informacin entre procesador y controlador de perifrico, encontrados tres tcnicas bsicas de entrada/salida que ahora vamos a enumerar y posteriormente desarrollar: 1. Entrada/salida programada: La sincronizacin y el intercambio de informacin son responsabilidad del procesador. 2. Entrada/salida por interrupciones: El controlador de perifrico se responsabiliza de la sincronizacin y notifica al procesador cuando est dispuesto para realizar el intercambio de informacin. Esto ltimo lo lleva a cabo el procesador. 3. Entrada/salida por DMA: El procesador se encarga de preparar la transferencia entre perifrico y memoria y luego es el controlador del perifrico el que asegura la sincronizacin y lleva a cabo sin la intervencin del procesador, el intercambio de informacin.

2. ENTRADA/SALIDA PROGRAMADA Tambin se denomina directa y se caracteriza porque toda la responsabilidad de la transferencia de informacin recae sobre el procesador. ste, por medio de la ejecucin del programa adecuado se encarga de establecer la sincronizacin con el perifrico y la posterior transferencia de informacin. En el caso de un perifrico de entrada, cada vez que el procesador comprueba que el controlador de perifrico dispone de un nuevo dato, lo toma y queda disponible para recibir otro posterior; si el perifrico es de salida, cuando el procesador dispone de un dato para enviar al perifrico y detecta que ste est disponible, efecta el envo. A continuacin, estudiaremos algunos aspectos relacionados con la entrada/salida programada, que influyen tambin en el funcionamiento de otras tcnicas de entrada/salida. Mapa de entrada/salida La comunicacin con los perifricos se efecta mediante sus mdulos de entrada/salida correspondientes y, por tanto, es preciso que el procesador tenga acceso a los registros de datos, control y estado de estos mdulos. Para poder identificar cada uno de los registros existen dos posibilidades: Mapa de memoria: los registros se encuentran en determinadas posiciones del mapa de memoria. En este caso se utilizan decodificadores que se activan a partir de las lneas de bus de direcciones y utilizan las mismas seales de control que sirven para seleccionar la memoria Que los registros se ubiquen en un espacio de direcciones independientes de la memoria, el espacio ENTRADA/SALIDA o mapa independiente de entrada/salida. Aqu se suelen compartir las lneas de direcciones y para distinguirlas se dan conjuntos de seales de control: o READ, WRITE e IO/MEM: marcan la temporizacin de la transferencia. o MEMR, MEMW, IOR e IOW: Hacen la transferencia segn el tipo a que se refieran.

Fundamentos de Computadores Pg. 9

Cronograma Los accesos al registro de datos, control o estado de un mdulo de entrada/salida son similares a los de acceso a memoria que ya hemos estudiado en el semestre anterior, la nica diferencia es que se utilizan otras seales de control en el caso de los sistemas con entrada/salida independiente de la memoria. Los accesos pueden ser: Sncronos: De duracin predeterminada. En el ejemplo del grfico (pgina anterior) se efecta la carga del dato en el extremo de bajada del reloj. Asncronos: De duracin arbitraria, establecida por el perifrico. En el ejemplo, la carga en el registro de datos se produce en el momento en que la seal WAIT deja de estar activa. Semisncronos: De duracin establecida por el perifrico pero siempre mltiplo del perodo de reloj. En el ejemplo, la carga del dato se produce al detectarse el flanco de bajada de la seal de reloj, pero slo si la seal WAIT est desactivada. Instrucciones de entrada/salida No todos los computadores disponen de instrucciones especficas de entrada/salida, solo aquellos en los que se establece una distincin entre el mapa de memoria y el de entrada/salida. Cada vez que estos computadores ejecuten una instruccin de lectura o escritura en memoria, adems de activar el resto de las lneas de conexin con el exterior, ponen en marcha la lnea o lneas que distinguen entre entrada/salida y memoria y las pasan al estado que corresponde a una operacin con memoria (por ejemplo IO/MEM pasara al estado lgico L). Las ventajas de disponer de instrucciones especficas de entrada/salida son cuestionables; de hecho muchos diseadores han optado por no distinguir entre entrada/salida y memoria al hablar de arquitectura bsica de la mquina; no obstante con instrucciones especficas de entrada/salida se consigue establecer con ms facilidad un mecanismo de proteccin adecuado, ya que se tratan de instrucciones privilegiadas que solo pueden ejecutarse en la modalidad de supervisor y as, un usuario cualquiera no puede acceder a estos controladores de entrada/salida. Identificacin del perifrico Esta funcin que realiza el procesador es importantsima pues cuando ste debe intercambiar informacin con ms de un perifrico, debe identificar en cada instante qu perifrico est disponible para llevar a cabo el intercambio y, en ese caso, ejecutarlo. Es ms tpico del caso siguiente la entrada/salida por interrupciones; no obstante en entrada/salida programada tambin se puede plantear esta situacin, es decir, que en el mismo instante haya varios perifricos con informacin disponible para el procesador. Aqu debe decidirse si todos ellos se deben tratar de manera equitativa o si conviene establecer algn esquema de prioridades entre perifricos. En este ltimo caso hay que tener en cuenta que este esquema de prioridades se implementar en forma de programa, sin disponer de ayuda hardware de ningn tipo. El procedimiento consiste en realizar una consulta o polling sobre todos aquellos perifricos que en un momento determinado puedan disponer de informacin para intercambiar. Existen dos tipos de prioridad que se puede establecer en estos casos: Prioridad fija: El programa de consulta comienza siempre comunicndose con el mismo controlador de perifrico y los recorre todos siguiendo la misma secuencia fija. Prioridad rotativa: Se asigna un nmero de orden a cada perifrico. Tras atender a la peticin de uno de ellos, se pasa a consultar el estado del siguiente de acuerdo con el nmero de orden, en lugar de volver a empezar por el primero.

Fundamentos de Computadores Pg. 10

3. ENTRADA/SALIDA POR INTERRUPCIONES El sistema de entrada/salida por interrupciones, como ya apuntbamos anteriormente, se caracteriza porque la responsabilidad de la sincronizacin entre procesador y perifrico se encuentra en el mdulo de entrada/salida. Para hacer esto posible es preciso que el procesador disponga de una lnea de entrada, denominada lnea de peticin de interrupcin (INT), mediante la cual el mdulo de entrada/salida puede reclamar la atencin del procesador cada vez que est dispuesto a transferir un dato desde o hacia el perifrico. La ventaja de este sistema frente al de entrada/salida programada es que aqu no es preciso que el procesador consulte de forma reiterada el estado del perifrico, sino que puede estar ejecutando otro programa. El perifrico se encarga de activar la INT en el momento en que est dispuesto a intercambiar informacin con el procesador; y esto sucede en las siguientes etapas: 1. Antes de iniciar cada instruccin, el procesador comprueba el estado de la INT. 2. Si la lnea INT no est activada, realiza la lectura y ejecucin de la instruccin y pasa a la siguiente. 3. Si la lnea INT est activada, por el contrario, se altera la ejecucin del flujo normal del programa: a. Se pasa a la rutina de servicio de interrupcin b. Para ello es necesario pasar de la clase que se encuentra (usuario o supervisor) a la de supervisor. c. Una vez ejecutada y finalizada la interrupcin el procesador debe continuar ejecutando el programa tal como se vena realizando, como si nada hubiese pasado, y en este sentido ser fundamental la salvaguarda del estado del procesador. Un aspecto importante es la inhibicin de las interrupciones; pues existen situaciones excepcionales que requerirn el ignorarlas. Esta situacin se almacena normalmente como un bit de registro de estado; si el procesador tiene permitida la interrupcin al comprobar este bit de registro, entonces valora el estado de la lnea INT antes de cada instruccin. Adems la lnea INT se considera activa por nivel y no por flanco, lo cual quiere decir que cuanto se vuelvan a permitir las interrupciones tras un tiempo de inhibicin, solo se atendern las de aquel perifrico que la est solicitando todava. Dado que las interrupciones pueden llegar (y llegan) al procesador en cualquier momento, es fundamental la salvaguarda del estado del procesador, como ya apuntbamos anteriormente para que, una vez terminada la ejecucin de la interrupcin, el programa contine como si nada hubiese pasado. La salvaguarda del sistema consiste en guardar el valor de los flags de estado y de ciertos o todos los registros para poder seguir utilizndolos despus de la interrupcin. Esto se puede hacer de dos formas: De manera automtica: El procesador est obligado a almacenar todo el estado, es decir, los flags de estado y el conjunto de registros de toda la arquitectura. Es un mtodo ms lento, pues se guardan ms cantidades de informacin, pero ms seguro. De manera manual: Se guardan los valores de los flags de estado y las instrucciones adecuadas para almacenar el estado actual. Lo ms habitual y eficiente consiste en que el procesador guarda de forma automtica los flags de estado y el contador de programa (PC) y el programador de la rutina de servicio de interrupcin guarda el resto de los registros que la rutina modifica. Explicado todo lo anterior, deducimos 3 formas diferentes de conectar los controladores de perifricos, es decir, cual es la conexin fsica entre el procesador y los controladores de perifricos que interrumpen, y esto debe resolvernos 3 dudas importantes: Poder determinar de entre todos los perifricos conectados al sistema, cual es el que est reclamando la atencin del procesador. Cual es el perifrico prioritario o prioritarios que debemos atender cuando varios reclamen la atencin del procesador Decidir si durante una interrupcin, puede activarse otra del mismo o de otros perifricos. Como deca antes tres posibilidades importantsimas se nos abren y son las que vamos a estudiar: la lnea nica de peticin de interrupcin, la conexin en Daisy Can y las lneas independientes de peticin y reconocimiento de interrupcin.

Fundamentos de Computadores Pg. 11

LA LNEA NICA DE PETICIN DE INTERRUPCIN


Es el mtodo ms sencillo de conexin entre un procesador y varios perifricos (pgina siguiente) y consiste en compartir la lnea de peticin de interrupcin entre todos los controladores de perifrico conectados al sistema. De esta forma el procesador es capaz de determinar si algn procesador est activado, pero para saber cual es en concreto, necesita establecer la lectura del registro de estado de cada uno de ellos y decidir por programa cual es (software).

La ventaja evidente de este mtodo es la sencillez y flexibilidad a la hora de determinar a cual de los perifricos que solicitan una interrupcin es preciso atender en primer lugar. No obstante el inconveniente es el retraso que introduce (que no es despreciable ni mucho menos, pues es comparable en tiempo a la ejecucin de varias lneas de cdigo de programa), pues cada vez que un perifrico activa la interrupcin es preciso ejecutar una nica rutina de atencin a interruptores: salvaguardar los registros, identificar que perifrico es el que interrumpe (realizando un muestreo de todos ellos por si es solo uno o hay ms de uno). Otra gran ventaja es la de permitir con el programa de atencin a perifricos si establecemos una prioridad a uno o ms de un perifrico sobre el resto a la hora de activar su interrupcin. Otro inconveniente es la nidificacin de interrupciones al compartir la misma lnea. Esta nidificacin consiste en permitir que un perifrico ms prioritario sea capaz de interrumpir a su vez la rutina de servicio de interrupcin correspondiente a otro menos prioritario, pero no en el caso contrario o cuando los dos tengan el mismo grado de prioridad. Al compartir una nica lnea y estar ejecutndose ya una interrupcin y producirse otra, es imposible saber a priori si la nueva interrupcin es prioritaria sobre la que ya se est ejecutando: es necesario activar de nuevo la rutina de interrupciones y ver cual es el perifrico que interrumpe y qu grado de prioridad tiene. As que si activamos la atencin a interruptores puede ocurrir la degradacin del sistema por agotamiento de la memoria (y ni que decir que cuando se ha empezado a atender una interrupcin sta debe desactivarse, pues de lo contrario y teniendo activada la posibilidad de interrumpir entraramos en un bucle infinito)
Lnea nica de peticin de interrupcin Ventajas Inconvenientes Sencillez en las conexiones Flexibilidad por software para atender por prioridades a los perifricos Velocidad lenta en cualquier interrupcin por poco prioritaria que sea Imposibilidad de nidificacin de interrupciones al no saber, a priori, si la nueva interrupcin es ms prioritaria que la anterior.

CONEXIN DE INTERRUPCIONES EN DAISY CHAIN


Una forma de evitar el retraso que supone el tener que ejecutar un programa cada vez que hay una interrupcin se basa en la utilizacin de una nueva lnea de control: la lnea de reconocimiento de interrupcin, conocida como INTA o INTACK. Si estn habilitadas las interrupciones, el procesador comprueba al principio de cada instruccin si la lnea de peticin est activada (hasta aqu, como antes). En caso de estar activada, activa la INTA para que el perifrico reconozca que el procesador est atendiendo su peticin y deja de hacer la solicitud de interrupcin. Para poder conectar ms de un perifrico se establece una cadena daisy Can. El primer controlador de perifrico si no es el

Fundamentos de Computadores Pg. 12

activo, activa una prolongacin de lnea hacia el segundo, y as hasta que se encuentre cual esta solicitando interrupcin. Como esta circuitera es muy sencilla, la identificacin del perifrico que interrumpe es muy rpida y as no se ejecuta un programa especfico para esta funcin (lo hemos resuelto por hardware). No obstante, solo hemos hecho saber al perifrico que conocemos de su solicitud de interrupcin, pero todava no sabemos cual es, ni que grado de prioridad tiene. Para ello se utiliza la tcnica de vectorizacin, que consiste en que el perifrico cuando recibe la seal por el INTA, deposita en el bus de datos un determinado valor, denominado valor de interrupcin. Al procesador le llega este valor y lo utiliza para saber, a travs de este ndice recibido en una tabla de vectores de interrupcin (con un valor nico, obviamente para cada perifrico), y as se activa la rutina de servicio de interrupcin para ese controlador.

La ventaja de una lnea de peticin compartida y lneas de reconocimiento encadenadas (Daisy Chain) radica que en un nico ciclo de bus, sabemos que perifrico est interrumpiendo y activamos la rutina asociada a este perifrico; y aunque sean varios los que interrumpen, de manera rpida y automtica determinamos el grado de prioridad (se comienza siempre por los ms prximos al procesador). Pero la desventaja principal es la rigidez del esquema basado en esta prioridad por cercana (que es adems fija e inalterable, debido a que es una solucin hardware) y adems seguimos sin resolver el problema de nidificacin de interrupciones, pues seguimos sin conocer si la nueva interrupcin es ms prioritaria que la que ya pudisemos estar llevando a cabo.
Sencillez en las conexiones Velocidad en la deteccin del perifrico/s que interrumpe/n (un ciclo de bus) Rpida determinacin de la prioridad de los perifricos que interrumpen. Rigidez y poca flexibilidad para variar la prioridad de los perifricos, dado que se trata de una solucin hardware fija e inmutable. Seguimos sin resolver la nidificacin de interrupciones pues desconocemos si la nueva interrupcin es ms prioritaria que la que ya estamos llevando a cabo.

Daisy Chain: Lnea de peticin compartida y lneas de reconocimiento encadenadas

Ventajas

Inconvenientes

LNEAS INDEPENDIENTES DE PETICIN Y RECONOCIMIENTO DE INTERRUPCIN


La nica posibilidad para distinguir de forma inmediata (sin la obligacin de ejecutar un programa) si una interrupcin que acaba de llegar al procesador es ms prioritaria que la que ya estamos ejecutando, consiste en disponer de lneas de peticin independientes para los diferentes controladores de entrada/salida (ver figura en la pgina siguiente). La identificacin del perifrico que interrumpe es directa pues cada lnea de peticin se encuentra conectada con un solo perifrico; pero adems se flexibiliza la gestin de prioridades al poder decidir que lnea consideramos ordenadamente ms prioritaria que otras. As resolvemos el problema que antes ya nos habamos planteado es decir, la nidificacin de interrupciones. El proceso que se sigue es el siguiente para cada cdigo de instruccin:

Fundamentos de Computadores Pg. 13

Se valora si existe una interrupcin activada, de no ser as, se ejecuta la siguiente instruccin. Si existe una activacin de interrupcin, se valora si es de mayor nivel que la que se tiene almacenada (de no ser de mayor nivel, se contina como si nada hubiese ocurrido). En caso de ser de mayor nivel, el proceso consiste en salvaguardar PC y los registros de estado; en activar la modalidad de supervisor, en actualizar el nivel de interrupcin almacenado, en leer el vector de interrupcin y posteriomrnete en finalizar esta rutina de interrupcin.

Esquema de un ciclo fetch en un procesador con lneas independientes de peticin y reconocimiento de interrupcin Hay una lnea de interrupcin activa? NO Ir al final del fetch SI Es nivel de la interrupcin > Nivel_alamacenado? NO Ir al final del fetch SI Salvaguardar PC y registros de estado Actualizar modalidad supervisor Actualizar el nivel almacenado=Nivel de interrupcin Leer vector de interrupcin Encontrar direccin Ir a final fecth Final Fetch: Leer instruccin sealada por el PC Actualizar PC Descodificar y ejecutar

Fundamentos de Computadores Pg. 14

El problema es que no todos los procesadores disponen de un nmero suficiente de lneas de peticin y reconocimiento de interrupcin para implementar el esquema descrito anteriormente. Como muchos de ellos solo disponen de una lnea de peticin y de reconocimiento, lo que se hace es aadir un controlador de interrupciones, o sea, circuitos especializados en la gestin de interrupciones de sistema. As conseguimos prcticamente la misma funcionalidad pero con dos diferencias apreciables: 1. La salvaguarda y recuperacin del nivel de ejecucin no se lleva a cabo de forma automtica, dado que el controlador de interrupciones es externo al procesador, y este, sin ejecutar un programa, no es capaz de decidir el nivel de interrupcin que est atendiendo. 2. Como el procesador solo dispone de una lnea de peticin de interrupcin, se debe identificar el perifrico que interrumpe igual que si se tratase de un encadenamiento, estableciendo un esquema de vectorizacin o bien a partir de la lectura de los registros internos del controlador de perifrico. Ahora bien, en el esquema inicial de lneas independientes de peticin y reconocimiento de interrupcin no todo son ventajas, ya que el nmero de perifricos conectables al sistema se encuentra limitado por las lneas disponibles. Esto se solventa con los dos sistemas representados a continuacin: un esquema hbrido de lneas de peticin y reconocimiento de interrupcin y conexin de controladores de interrupciones en cascada.

Fundamentos de Computadores Pg. 15

Las famosas interrupciones de software, excepciones o traps, se tratan de igual forma que si se tratasen de una interrupcin de entrada/salida ; con la salvedad de que las interrupciones de software se sealan por medio de la activacin de una seal externa, mientras que las de entrada/salida se generan dentro del procesador. Entre estas excepciones se encuentran las correspondientes a los intentos de accesos a recursos restringidos, operaciones aritmticas como la divisin por cero o la raiz cuadrada de un nmero negativo, etc. Repasemos ahora el conjunto de operaciones que debe llevar a cabo un sistema genrico con entrada/salida por interrupciones. stas corresponden a un procesador con un nmero suficiente de lneas de peticin y con capacidad para tratar interrupciones sectorizadas y autovectorizadas:
Se activa el sistema y se programan los dispositivos que se deben utilizar y se define el valor inicial de la variables utilizadas Programacin de los controladores de entrada/salida, definicin del vector de interrupcin, etc. Se especifica el nivel de ejecucin menos prioritario (programa principal). Se habilitan las interrupciones. Se pasa a ejecutar el programa principal Se ejecuta en esta fase el programa principal, constituido por norma general, por un bucle de espera donde se comprueba el estado del sistema. En la fase de fetch se realiza: Comprobacin de las lneas de peticin de interrupcin con nivel superior al actual de ejecucin, por si existe alguna activada. Si no es as, se contina la lectura del cdigo de la operacin de la instruccin actual. Si alguna lnea de peticin con suficiente prioridad est activada se ejecuta el ciclo de reconocimiento de interrupcin que consiste en: o Si la entrada al procesador indica que es una interrupcin autovectorizada, utiliza como vector de sta el nmero de lnea de interrupcin que est activo. Como tabla de vectores de interrupcin utiliza la de autovectores (pasa al punto 4) o Si no es autovectorizada, activa la lnea de reconocimiento de interrupcin correspondiente al nivel detectado. o Lee el vector de interrupcin proporcionado por el controlador de entrada/salida. o Accede a la entrada de la tabla de vectores o autovectores de interrupcin sealada por el vector que se acaba de almacenar. o Obtiene de la tabla correspondiente, la direccin de la rutina de servicio de interrupcin o Almacena el contador de programa, registro de estado actual en la pila de modalidad supervisor del sistema. o Actualiza el registro de estado y almacena el nuevo nivel de ejecucin y se activa el bit que indica la modalidad de ejecucin correspondiente al supervisor o Actualiza el contador del programa con el valor obtenido de la tabla correspondiente (vectores o autovectores). o Reinicia la ejecucin de instrucciones (empieza un nuevo ciclo de fetch). Se desarrolla al ejecutar la instruccin RETI, que debe ser la ltima de cada rutina de servicio de interrupcin: solo debe recuperar el estado (que incluye informacin sobre el nivel de ejecucin) que se haba guardado en la pila del sistema en el momento de responder a la interrupcin. Se recupera el contador de programa almacenado en la pila del supervisor. Se recupera el registro de estado almacenado en la pila del sistema (con esto adems se recuperan el nivel de ejecucin y el bit de modalidad usuario/supervisor). Se ejecuta un nuevo ciclo de fetch utilizando los nuevos valores de los registros contador de programa y registro de estado

Fase Inicial

Fase de funcionamiento normal

Fase de retorno de interrupcin

4. ENTRADA/SALIDA POR DMA En las entrada/salida que hemos visto antes, para cada interrupcin que se genera es preciso desviar el flujo normal del programa, por lo que es necesario realizar una salvaguarda del estado actual, para luego volver al mismo estado que haba antes de la interrupcin. Esto se traduce en un consumo de tiempo de ejecucin para cada interrupcin, suponiendo asimismo una importante limitacin del ancho de banda mximo que queda libre para la comunicacin con el perifrico. Esto hace que la entrada/salida por interrupciones sea adecuada para dispositivos de ancho de banda no muy grande, pero para los ms rpidos, el procesador estara prcticamente dedicado a ejecutar las instrucciones de los servicios de interrupcin. El objetivo de la entrada/salida por DMA es que el procesador pueda desentenderse de la sincronizacin y de la transferencia de informacin con el perifrico, pero para ello es imprescindible que el mdulo de entrada/salida sea capaz de acceder de manera automtica a la memoria del sistema. No obstante aunque el procesador se desentienda de este proceso si necesita programar la operacin con antelacin y adems necesita

Fundamentos de Computadores Pg. 16

ser avisado por el perifrico cuando el intercambio de informacin haya finalizado y esto suele hacerse generando una interrupcin. As que resumiendo, la transferencia por DMA est compuesta de: Programacin de la operacin llevada a cabo por el procesador. Transferencia de informacin entre perifrico y memoria principal, gestionado por el controlador de entrada/salida. Culminacin de la operacin, donde el controlador de entrada/salida avisa al procesador del desenlace de la transferencia. Claro, observando este proceso que ha de desarrollarse se comprende de la ineficacia de utilizar DMA para transferir datos individuales; por este motivo se utiliza para transferir bloques de datos relativamente grandes, por ejemplo sectores entre el disco y la memoria, pero no para enviar datos del teclado al procesador. Pero este tipo de entrada/salida aade un nuevo problema que no se haba presentado hasta ahora, es preciso establecer un mecanismo mediante el cual ambos elementos utilicen la memoria sin que por ello se genere ningn tipo de conflicto. Hay dos posibilidades: Utilizar una conexin a memoria independiente para cada elemento, memoria con doble puerta (no se usa demasiado pues es un tipo de memoria ms cara). Aplicar una nica conexin a memoria, compartida por el procesador y el mdulo de entrada/salida proporcionando asimismo un mecanismo para evitar conflictos en el acceso mutuo a memoria. Esto se denomina robo de ciclo. Este robo de ciclo es el sistema que suele utilizarse y que vamos a describir. Para llevarlo a cabo se necesitan lneas triestado para la conexin del procesador y los mdulos de entrada/salida en el bus (direcciones, datos y seales de control) y adems dos nuevas lneas de control: BUSREQ y BUSACK. El funcionamiento se basa en que el procesador es ms prioritario a la hora de cualquier transaccin, pero comprueba con frecuencia el estado de la seal de peticin del bus BUSREQ, de manera que cuando el procesador la encuentre activada responda a tal demanda. Esto consiste en activar BUSACK; lo que hace que el bus quede ahora gobernado por el

Fundamentos de Computadores Pg. 17

controlador de entrada/salida, y as se asegura que solo uno de los dos dispositivos gobierna la memoria. Ahora bien, nos encontramos con diferentes maneras de conectar los mdulos: la forma ms sencilla es la primera grfica de la figura de la pgina anterior. Tenemos un nico mdulo entrada/salida que interacta con el procesador para la peticin de los buses; pero claro, si necesitamos ms de un mdulo (que es lo lgico) se puede actuar creando un daisy Can de los mdulos de entrada/salida por DMA (figura siguiente) o finalmente introduciendo un nuevo dispositivo: el controlador DMA: que es un dispositivo capaz de gestionar las transferencias de varios perifricos. El funcionamiento del sistema por DMA tiene las 3 partes ya anunciadas anteriormente: Programacin de la operacin, transferencia de los bloques de datos y finalizacin de la operacin.

PROGRAMACIN DE LA OPERACIN
El procesador debe informar al controlador de Entrada/salida por DMA al menos de los siguientes datos: Nmero de datos que se deben transferir. Direccin de memoria a partir de la cual se deben almacenar o depositar los datos que se intercambian. Sentido de la transferencia. Si el mdulo entrada/salida se utiliza para controlar varios perifricos, tambin es preciso identificar el perifrico involucrado en la transferencia.

Evidentemente, para que el controlador DMA sea capaz de guardar estos datos, hay que dotarlo de nuevos registros, estos son: RCOMPT: contador que guarda el nmero de datos a transferir; y RADRM: se almacena la direccin inicial de la memoria involucrada en la transferencia.

TRANSFERENCIA DE LA INFORMACIN
Una vez programada la transferencia, el mdulo entrada/salida debe esperar hasta que el perifrico que controla se encuentre disponible para transmitir o recibir y entonces solicita el bus y tras serle concedido por el procesador efecta la transferencia. En el proceso de entrada/salida por interrupciones podamos inhibir la transferencia si sta era de un nivel prioritario inferior a la que ya estbamos ejecutando; esta opcin por DMA no se contempla (el bus se cede de forma automtica ante la peticin de BUSREQ). Esto se debe a que la cesin del bus constituye una operacin muy rpida y que adems no afecta al estado del procesador, no tiene que iniciar sistemas de salvaguarda de datos, solamente congela la ejecucin de las instrucciones que est ejecutando (salvo que exista una transferencia a la memoria en ese momento, con lo cual el procesador termina la transferencia y luego cede el bus o, en otros casos, corta inmediatamente la transferencia para iniciarla posteriormente a la transferencia DMA). Adems, como la cesin siempre se encuentra habilitada, el tiempo de respuesta es muy breve. En caso de una lectura del perifrico cada vez que ste indica a su controlador que dispone de un dato para transferir y siempre que el contenido de RCOMPT sea distinto de 0 (esto indica que existen datos pendientes de transmitir), el controlador lo almacena en RDATO, activa BUSREQ para solicitar el bus al procesador, ste lo cede activando BUSACK, el mdulo entrada/salida lanza un ciclo de escritura en memoria por el bus y deposita sobre el bus de direcciones el contenido del registro RADRM y sobre el bus de datos el de RDATO; tras finalizar el ciclo de escritura en memoria, el controlador desactiva BUSREQ y actualiza los registros RADRM (incrementa para aumentar a la posicin de memoria siguiente) y RCOMPT (Decrementa, para contener el nmero de datos pendiente de transmitir). Si despus de esta actualizacin RCOMPT es distinto de cero, el controlador vuelve a esperar la llegada de un nuevo dato; si es cero se pasa a la fase de finalizacin de la operacin. En el caso de que se utilice un controlador de acceso directo a memoria para gestionar varios perifricos, vara ligeramente el funcionamiento, puesto que el registro de datos se encuentra por norma general en el mdulo entrada/salida mientras que el de direcciones forma parte del controlador DMA; estas son las nicas diferencias importantes.

Fundamentos de Computadores Pg. 18

Funcionamiento del controlador de perifrico por DMA Programacin de la operacin While RCOMPT>0 Activar BUSREQ Esperar BUSACK Leer [ADRM] y llevar el dato ledo a RDATO Desactivar BUSREQ Esperar a perifrico preparado y enviarle el contenido de RDATO Incrementar ADRM y decrementar RCOMPT End-while While RCOMPT>0 Esperar DATO del perifrico y llevarlo a RDATO Activar BUSREQ Esperar BUSACK Escribir sobre [ADRM] el valor contenido en RDATO Desactivar BUSREQ Incrementar ADRM y decrementar RCOMPT End-while

If OP=WRITE

If OP=READ

Finalizacin de la operacin

Una forma de optimizar el rendimiento de esta actividad consiste en minimizar el tiempo que se pierde mientras se obtiene el control del bus y se retorna al procesador; esto se realiza con lo que se denomina modalidad de rfagas, consistente en acumular en el mdulo de entrada/salida o el controlador de DMA una cantidad importante de datos antes de solicitar el bus (eso s, este dispositivo debe tener capacidad para acumular todos estos datos que luego queremos enviar). As una vez acumulado el nmero requerido de datos, o pasado el nmero de ciclos necesario para poder realizar otra transferencia; pedimos el bus, realizamos la transferencia de todos los datos cumulados y evitamos liberar y retomar el bus cada vez que tenemos un dato que enviar. De una u otra forma, una vez que RCOMPT es cero, pasamos a la siguiente fase.

CULMINACIN DE LA OPERACIN
Una vez transferido el bloque o bloques de informacin programado por el procesador, el mdulo entrada/salida o controlador DMA genera una interrupcin INT con la que se notifica al procesador que ya se ha transferido el bloque solicitado y con la ejecucin de la correspondiente rutina de servicio de la interrupcin, se considera acabada la operacin de transferencia del bloque.

5. COMPARACIN DE LAS TCNICAS BSICAS DE ENTRADA/SALIDA Vamos a estudiar el rendimiento del sistema, para ello vamos a poner el ejemplo de que se quiere analizar el tiempo de transferencia de informacin de un disco magntico utilizando estas 3 tcnicas de entrada/salida. Los datos del problema son los siguientes: Ejecucin de cada instruccin por el procesador: 150 ns. Ciclo de lectura o escritura: 100 ns. Cesin / recuperacin de los buses: 50 ns. Tiempo de latencia del sico: 15 ms. Velocidad de transferencia: 2Mb/s Conexin de 32 bits entre el mdulo de entrada/salida y el procesador Con estos datos, e independientemente de la tcnica de entrada/salida que se trate, se invertir el tiempo siguiente (dado que es necesario programar la operacin, esperar el tiempo de latencia adecuado y transferir la informacin:

210 bytes (1kbyte) Total: Latencia + Transferencia = 15 ms + =15,49 ms 2 * 2 20 ( Bytes / s)

Fundamentos de Computadores Pg. 19

103267 instrucciones. A travs de la entrada/salida programada el controlador dice que proporciona un dato cada:
20

15,49 6 10 En este tiempo, el procesador es capaz de realizar (como mximo y sin interrupciones) = 150

1 =1,91 s; el nmero de instrucciones, por tanto que se puede ejecutar entre dato y dato es de 22 bytes / s 4 Bytes / palabra
1910/150 = 12 instrucciones; normalmente con 12 instrucciones hay de sobra para realizar el bucle de sincronizacin con el controlador y toda la rutina de ejecucin: Hay que tener en cuenta que si la conexin no fuera de 32 bits, sino de 8, la cosa se complicara, pues se dispondra de un dato cada 0,4775 milisegundos y ah si que no dara tiempo a ejecutarse. En fin, en resumen, tardamos 15,49 ms en transferir la informacin, pero el procesador queda ocupado durante todo este tiempo. A travs de entrada/salida por interrupciones, el tiempo en que se dispone de un dato sigue siendo 1,91 s, igual que antes, y ello permite ejecutar 12 instrucciones; en este caso hay que preparar una rutina un peln ajustada; la rutina de servicio de interrupcin puede constar como mximo de 11 instrucciones, pues se debe prever el tiempo empleado en el reconocimiento de la instrucciones, que suponemos es similar al de la ejecucin. Conseguimos hacer una rutina de ejemplo de 11 instrucciones (ajustado como digo), no obstante seguimos adelante; y suponiendo que la programacin de la operacin como su culminacin se efectan con 30 instrucciones, el tiempo que el procesador utiliza para llevar a cabo la transferencia es de: Tiempo ocupado = 30150ns +

210 Bytes 11150 ns + 30 150 ns = 0,43ms; 4 Bytes / palabra

Por tanto, disponemos de tiempo libre del procesador: 15,49 - 0,43 = 15,06 ms; en los que puede efectuar

15,06 6 10 =100.400 instrucciones de las 103.267 posibles; lo cual no est nada mal. 150
A travs de la entrada/salida por DMA suponiendo que la programacin de la transferencia y la rutina de interrupcin duren unas 40 instrucciones, el tiempo de ocupacin del procesador es: Tiempo ocupado = 40150 ns +Tiempo transferencia + 40150 ns. El tiempo de trasnferencia es igual al tiempo que tarda en ceder el bit, efectuar una lectura, recuperar el bit y todo ello multiplicado por buses de 1024/4 datos; en total: Tiempo transferencia = (1024/4) (50 ns + 100 ns + 50 ns) = 51.200 ns. Por tanto, el tiempo ocupado es: 6000 + 51200 + 6000 = 63200 ns.

15,43 6 10 Con lo que el tiempo disponible es 15,49 0,0632 = 15,43; y se pueden efectuar = 102.867 150
instrucciones de trabajo, de las 100400 disponibles. Todava podemos mejorar ms si suponemos que trabamos en modalidad de rfaga y por tanto cedemos y recuperamos el bus cada, digamos 8 palabras, por lo que el tiempo de transferencia pasa a ser: Tiempo transferencia = (256/8)(50ns + 8100 ns + 50 ns) = 28800 ns; y ello nos hace reducir el tiempo de ocupacin a 40,800 ns y por tanto poder ejecutar muchas ms instrucciones.

6. ASPECTOS COMPLEMENTARIOS DE LA ENTRADA/SALIDA Dos apartados vamos a ver de forma escueta como aspectos complementarios de la entrada/salida que no hemos tratado con anterioridad. Estos aspectos son la relacin de la entrada/salida con el sistema de memoria y mejoras que aade el controlador DMA en las transferencias de este tipo.

Fundamentos de Computadores Pg. 20

Hasta ahora hemos hecho un estudio conciso de la relacin entre el sistema de entrada/salida y la memoria del ordenador; pero en realidad la memoria de un ordenador suele estar compuesta por una memoria cach, una principal y un mecanismo de memoria virtual; esta jerarqua la estudiaremos en el captulo siguiente pero se disea con la finalidad de incrementar la velocidad de los accesos que realiza el procesador. La relacin de la entrada/salida con la memoria cach es un poco catica. Existen dos opciones: o conectar el mdulo entrada/salida con la memoria cach o hacerlo con la principal (en realidad con el bus que va a la principal. En el caso de que se conecte a la memoria cach tenemos dos grandes desventajas: Disminucin del ancho de banda en la comunicacin entre el procesador y la memoria cach. Aumento de la tasa de errores de cach pues se almacena informacin que no se corresponde a lo que el procesador espera utilizar. Debido a ello, ste no es el mtodo de conexin ms utilizado; pero la conexin con la memoria principal del controlador DMA tampoco est exenta de desventajas: la principal dificultad es asegurar la coherencia de la informacin entre estos dos niveles de memoria; se suele resolver haciendo las operaciones sobre una zona de memoria no cacheable.

Otro problema lo establece la memoria virtual. Si el dispositivo que establece el acceso al DMA lo hace a travs de direcciones virtuales; en cada acceso a memoria lanzado por el dispositivo DMA es preciso realizar la traduccin a la direccin completa correspondiente, con la consecuente prdida de prestaciones. Esto suele resolverse aadiendo un dispositivo para acelerar la traduccin: el TLB (solucin eficaz pero compleja) Si, por el contrario, el programador DMA utiliza direcciones fsicas, se hace preciso limitar el nmero de datos para transferir en una sola operacin al tamao de una pgina, pues no se puede asegurar que las pginas virtuales consecutivas se encuentren localizadas en un determinado momento sobre marcos de pgina contiguos. Por otro lado, una mejora importante del funcionamiento de la entrada/salida por DMA lo constituyen los canales de entrada/salida: su funcin consiste en facilitar la programacin aprovechando la capacidad que poseen de acceder de forma autnoma a la memoria.; as se consiguen varias ventajas: Programacin de las operaciones de entrada/salida ms rpida. Si el controlador DMA est ocupado en una transferencia cuando el procesador est programando una nueva operacin; ste la puede generar, llevarla a memoria y arrancarse en cuanto el controlador DMA est disponible (de nuevo eficiencia temporal). El lenguaje de programacin propio del canal de Entrada/salida, an siendo bsico, puede tener una instruccin que indique el final de la operacin de transferencia, con lo que solo se ejecuta una nica instruccin de finalizacin y no al finalizar la transferencia de cada bloque. Elimina el conflicto con la memoria virtual en los marcos de pginas contiguos.

Fundamentos de Computadores Pg. 21

7. EL BUS DE ENTRADA/SALIDA Tal como hemos estudiado la estructura bsica del computador , parece que nicamente exista un bus de propsito general para conectar el procesador con la memoria y con los adaptadores de entrada/salida (figura a). Esto realmente no es as ya ni el los ordenadores ms sencillos, est todo basado en una jerarqua de buses que, aunque no est tan definida como la jerarqua de memorias, empieza a estar cada vez ms delimitado. Actualmente, los ordenadores poseen un adaptador conmutador de memoria bus PCI (figura b), cuya funcin consiste en conectar en cada instante los dos elementos involucrados en una transferencia, por ejemplo, la memoria cach de segundo nivel con la memoria principal o con un controlador de entrada/salida. Se pueden establecer as flujos simultneos de informacin que aumenta la velocidad y eficiencia de la mquina. Caractersticas del Bus entrada/sal: Tipo de funcionamiento y temporizacin (sncrono, asncrono, semisncrono). Multiplexacin de direcciones/datos Admisin de varios maestros del bus. Nmero de lneas dedicadas a transferir datos (incide directamente en el ancho de banda que puede alcanzar). Nmero de lneas dedicadas a propagar direcciones de memoria o entrada/salida (espacio de direccionamiento) Normalizacin del bus que, a la larga, redundar en una mayor difusin de ste. Aunque no hay una clara definicin del bus de entrada/salida diremos que se trata de un bus normalizado, encargado de conectar los diferentes mdulos de entrada/salida o bien los perifricos de un tipo determinado con el computador. As, observamos en la figura lateral, que los buses local y de memoria no interconexionan ni perifricos ni controladores; por el contrario los buses EISA y SCSI (incluso el PCI) s. Es hoy da caracterstica primordial de los buses de entrada/salida que se deben normalizar, de namera que varios fabricantes de controladores de E7s o de dispositivos perifricos, pueden adoptar sus diseos en la especificacin de cada bus normalizado. Otras caractersticas ms particulares del Bus dependen del propsito que se le quiera dar, de manera que se pueden observar diferencias importantes entre:

Fundamentos de Computadores Pg. 22

Bus de almacenamiento: Se trata de conseguir un ancho de banda elevado a un coste de interconexin bajo y sin que la latencia sea importante Bus de soporte: Para la interconexin de mdulos de entrada/salida, que proporciona un ancho de banda elevado, con baja latencia y debe admitir varios maestros de bus. Bus serie: Para la conexin de perifricos, cuyo objetivo principal es la reduccin de costes, pero no de rendimiento. Es fundamental el direccionamiento del bus, que se lleva a cabo en una sola etapa y que puede ser: Direccionamiento lgico: Los diferentes mdulos tanto de memoria como de entrada/salida se deben encargar de decodificar las seales del bus de direcciones y determinar si se trata de una transaccin dirigida a ellos. Para llevarlo a cabo a cada mdulo del sistema se asigna un rango de direcciones nico (a travs de microinterruptores que se deben configurar en el momento de colocar la placa correspondiente dentro del computador) y tiene el inconveniente de constituir una importante fuente de errores de configuracin. Direccionamiento geogrfico: Es el ms seguro dado que se obvian los posibles errores de configuracin por parte del usuario (lo realiza automticamente el sistema operativo) y el que ms se utilizada en la actualidad. Consiste en separar la seleccin de un mdulo de memoria o entrada/salida del direccionamiento de ste en sus diferentes celdas de memoria o posiciones de entrada/salida. Se establece un mecanismo para seleccionar el mdulo conectado a una determinara ranura o slot para facilitar la configuracin automtica de los sistemas y para proporcionar la seleccin de una posicin concreta del mdulo. As no hay que configurar los adaptadores de entrada/salida manualmente, puesto que la direccin que ocupan en el espacio de direcciones se encuentra determinada por la ranura donde se ha situado. Otra caracterstica es la gestin del bus: el problema se establece a la hora de utilizar buses que admiten ms de un maestro potencias que pretende emplear el bus para realizar una transaccin, y es entonces cuando hace falta un maestro que determine cual tiene la autorizacin para poder utilizarlo. Para ello existe el gestor del bus nico, con varios pares de lneas de peticin y concesin del bus, similar al gestor de interrupciones visto anteriormente. Como ejemplos de buses de entrada salida tenemos el ISA: utilizado anteriormente como base de los ordenadores iBM-PC, ha quedado relegado como soporte de mdulos entrada/salida y simplemente por un problema de compatibilidad con los perifricos; el bus PCI: es el sucesor del anterior iSA y es el ms generalizado, inicialmente solo iba a ser soporte del microprocesador Pentium, pero se cedieron sus especificaciones al dominio pblico y de ah su generalizacin, el bus SCSI tiene un elevado ancho de banda y es tpico en unidades de disco o cinta magntica; y por ltimo el bus USB que contrario al resto, solo utiliza dos hilos (seal y referencia) para transmitir informacin entre los perifricos.
1. 2. 3. 4. 5. Conector de alimentacin Conector de teclado Pila BIOS Ranuras expansin con buses ISA de 8 16 bits. 6. Ranuras expansin con buses locales, PCI, EISA, de 32 bits. 7. Chips controladores DMA 8. Zcalo ZIF para el procesador. 9. Buses 10. 10. Memoria cach 11. Zcalos de memoria RAM

Fundamentos de Computadores Pg. 23

TEMA 3 INTRODUCCIN A LA JERARQUA DE MEMORIAS


Desde los orgenes de la informtica, los programadores han pretendido disponer de computadores con mucha capacidad de memoria; actualmente esta cantidad de memoria solo constituye un problema de coste. La rapidez de los procesadores se ha multiplicado en los ltimos 20 aos por 3000 mientras que la de los dispositivos de memoria solo por 10. Esta gran diferencia que adems tiende a aumentar constituye uno e los factores crticos en el rendimiento de un computador. La solucin ofrecida por los diseadores para este problema consiste en el uso de una jerarqua de memorias: memorias estructuradas en distintos niveles con distintas velocidades y capacidades. El objetivo de la jerarqua de memorias consiste en que la informacin que el procesador requiera en cada momento se encuentra almacenada en el nivel ms prximo y rpido posible y, por otro, en que la transferencia de informacin entre los distintos niveles se lleve a cabo por medio de mecanismos automticos (sin la intervencin explcita del programador o usuario).

1. TIPOS DE MEMORIAS Segn su perdurabilidad: Memoria voltil (pierde la informacin almacenada cuando deja de tener alimentacin elctrica o memoria no voltil. Escritura por parte del usuario o no escribibles por parte del usuario Segn estos antecedentes tenemos lo siguientes tipos de memoria comerciales: o ROM: (Read only memory): Memoria de solo lectura de semiconductor (como la BIOS). o RAM: (Randon Access Memoru): Memoria de acceso aleatorio o directo, memoria de semiconductor. A su vez encontramos los tipos SRAM (estticas) o DRAM (dinmicas que pierden el contenido de la memoria a los pocos nanosegundos, son muy utilizadas porque son baratas y rpidas, aunque haya que refrescar constantemente sus contenidos). o Disco: Dispositivos magnticos de acceso directo. o Cinta: Su acceso es secuencial y lento, por ello solo se utilizan como copia de seguridad. o CD.

2. ACCESO A LOS DATOS Y A LA JERARQUIA DE LAS MEMORIAS La memoria se puede considerar un vector unidimensional en el que es preciso especificar un nmero que indique su posicin dentro de ella para acceder a los elementos individuales. Esta cifra se denomina direccin de memoria. El objetivo que se busca en el diseo del sistema de memoria de un computador es que tenga gran capacidad y un tiempo de acceso reducido al menor precio posible. Como no existe ninguna tecnologa que cumpla de forma simultnea ambos requisitos, la memoria del computador se estructura en varios niveles, formando la jerarqua de memorias. El objetivo final de esta jerarqua es conseguir que cuando el procesador acceda a un dato, ste se encuentre en el nivel ms rpido de la jerarqua (y por ello el de menor capacidad). Se suelen dividir por ello en: Primer nivel: constituido por los registros visibles del lenguaje mquina. Es de poca capacidad. Segundo nivel de memoria cach: constituye una memoria RAM auxiliar de alta velocidad. Puede existir ms de un nivel de esta modalidad (como en el ejemplo de la imagen) Memoria principal Niveles posteriores o memorias secundarias: cds, discos duros, etc. Como adems se puede ver en la imagen, cada nivel se relaciona solo con los siguientes, y el procesador solo puede acceder al nivel ms bajo. Si el dato que necesita el procesador no se encuentra en l, debe transferirse del siguiente o de los siguientes niveles hasta este para que el procesador pueda leerlo. Por otro lado si se modifica algn dato, el procesador lo har en el nivel ms bajo y es necesario que tal modificacin se efecte en el resto de niveles donde se encuentra almacenada una copia del dato original (de lo contrario podramos incurrir en un problema de coherencia). Pero claro, nosotros podramos pensar Tanto flujo de informacin de un nivel a otro tiene que perjudicar al rendimiento del procesador en lugar de ayudarle y adems como vamos a tener todos los datos que necesitamos en un rea de memoria muy pequea, como es la memoria ms prxima al ordenador? Esto tiene fcil respuesta: El flujo de datos que se mueve entre niveles est controlado por el sistema de entrada/salida, que, como ya sabemos, apenas interrumpe el nmero de instrucciones que es capaz de desarrollar el procesador. Por otro lado, el conjunto de datos que se necesitan para ejecutar un programa y el de instrucciones, a pesar de ser inicialmente grande, en realidad es pequeo: se sabe que el 1% de cdigo de un programa corresponde al 96% de las

Fundamentos de Computadores Pg. 24

instrucciones realizadas; y el 6% de todas las posiciones de memoria suele abarcar el 90% de los accesos a la misma. Esto se debe a una proximidad referencial: en un intervalo de tiempo, un proceso determinado solo utiliza una pequea parte de toda la informacin almacenada, debida sobre todo a: o Proximidad temporal: En un intervalo de tiempo determinado, la probabilidad de que un proceso acceda varias veces a las mismas posiciones de memoria es muy alta; los bucles en los programas producen proximidad temporal y las llamadas repetidas a subrutinas que emplean las mismas variables locales y los mismos parmetros. o Proximidad espacial: la distancia entre referencias prximas es muy pequea en intervalos de tiempo determinados: es decir a excepcin de las bifurcaciones el flujo de ejecucin es lineal; adems los accesos a estructuras de datos recorridas de manera secuencial es muy frecuente.

3. LA MEMORIA CACH La memoria cach se caracteriza por tener una alta velocidad y un tamao reducido. Es en esta memoria donde vamos a ejemplificar todo lo visto anteriormente. Una cuestin importante es la tasa de acierto/fallo, es decir, la tasa de fallos en es nmero de veces que se accede a la memoria cach y no se encuentra all el dato, dividido por el nmero de accesos a memoria; es justo lo contrario a la tasa de aciertos, que es lo que nos interesa tener. Cuando se lanza un acceso a la memoria, el algoritmo de emplazamiento es el encargado de buscar este dato: Se busca este dato en cualquier posicin de la memoria cach (asociativa por completo) Este dato solo puede encontrarse en una sola posicin de la memoria cach (emplazamiento directo). Se puede ubicar en un conjunto limitado de posiciones de la memoria cach (n-asociativa). La memoria cach completamente asociativa es la que produce porcentaje de fallos ms bajos, pero debido a su elevado precio y lentitud no suele utilizarse; la directa es la que produce ms fallos, pero al ser ms barata y sobre todo rpida, compensa este elevado nmero de fallos con el rpido tratamiento que hace de los mismos. Cuando se encuentra un fallo (o sea el dato buscado por el procesador no est en la memoria cach), el hardware de la memoria cach se encarga de las siguientes tareas: Solicitar el dato que ha producido el fallo en el siguiente nivel de jerarqua (si este no lo encuentra ira al siguiente). Esperar a que llegue el dato Buscar un lugar en la memoria cach para el dato ledo y almacenarlo en esta. Servir el dato al procesador como si se hubiera producido un acierto en la memoria cach. Este proceso es entre 5 y 10 veces ms costoso en tiempo que si hubiese sido un acierto, es por ello muy importante intentar obtener una tasa de fallos baja. Hemos evidenciado que cuando se produce un fallo, los datos se trasladan secundariamente de la memoria principal a la cach, pero se traslada una lnea entera pues es muy posible por la proximidad referencial, que necesitemos esos datos que rodean al que buscamos, por ello se traslada una lnea o bloque completa a la memoria cach, pues es muy probable que la necesitemos. El tamao de esta lnea cuenta con unos cuantos bytes de informacin ( que no debe ser ni muy grande pues borra otras lneas de la limitada cach que quiz sigamos necesitando- ni muy pequea pues corremos el riesgo de dejarnos atrs datos que posiblemente necesitemos). Eso s, cuando una lnea puede almacenarse en varios lugares de la memoria cach (asociativa o n-asociativa) es necesario determinar el algoritmo de reemplazo que se encargar de esta tarea, puede ser: Aleatorio: Es un algoritmo simple y funciona razonablemente bien. FIFO: Se elimina la lnea que lleva ms tiempo almacenada en la memoria; puede producir resultados indeseables puesto que esta lnea no tiene porque ser la que menos se utilice. LRU: se elige la lnea que lleva ms tiempo sin utilizarse. Tericamente es el ms eficiente, pero es muy difcil implementarlo en forma hardware, se suelen utilizar algoritmos pseudo-LRU. La poltica de escritura se refiera al momento en que se actualiza la memoria principal; es decir cuando en lugar de tener un acceso a memoria de lectura es de escritura, el dato que se pasa al procesador es variado en la memoria ms prxima del procesador, pero es necesario variar este dato tambin en el resto de copias, se puede hacer mediante dos sistemas: Escritura inmediata: Como su nombre indica se hace el cambio a la vez en todas las copias, es un sistema fcil de implementar pero que provoca un elevado intercambio de informacin entre ambas memorias (write no allocate). Escritura aplazada: Se efecta siempre las escrituras sobre la memoria cach, y solo cuando se borra la lnea afectada en la memoria cach, se trasladan los cambios a la memoria principal (write allocate). El rendimiento de la memoria cach por tanto, se medir como el tiempo medio de acceso a memoria, que consistir en: la tasa de aciertos por el tiempo en caso de acierto ms la tasa de fallos por el tiempo que tarda en efectuar el acceso en caso de fallo. Lo ideal, evidentemente, es reducir la tasa de fallos todo lo posible.

Fundamentos de Computadores Pg. 25

TEMA 4 ENSAMBLADOR 1. HERRAMIENTAS DE PROGRAMACIN Para poder escribir un programa, sea en alto nivel, sea en ensamblador, precisaremos de un editor. ste tiene que ser un editor de texto sin formato, ya que el fichero debe contener exclusivamente las instrucciones del programa, sin cdigos de control sobre el estilo de la letra, tamao, colores, mrgenes del documento, etc. El fichero que contendr el programa de origen (source), es decir, en formato texto, recibe el nombre de fichero de origen o fichero de font. Si el fichero de origen contiene un programa escrito con un lenguaje de alto nivel, el proceso de traduccin ser realizado mediante un compilador. El programa compilador, por su parte, analiza el significado del programa en alto nivel y genera instrucciones de lenguaje de mquina que llevan a cabo la tarea especificada en el alto nivel. De otro lado, si el fichero de origen contiene un programa escrito con lenguaje de ensamblador, el proceso de traduccin se genera mediante un programa ensamblador. El ensamblaje es un proceso ms sencillo porque la traduccin de lenguaje de ensamblador a lenguaje de mquina es directa: cada instruccin de ensamblador representa una instruccin en lenguaje de mquina. Como resultado de la compilacin o del ensamblaje, se genera un fichero objeto que ya contiene instrucciones de lenguaje de mquina, pero que todava no se puede ejecutar. Para finalizar, un fichero objeto o varios de ellos se pueden combinar y generar un fichero ejecutable. Este proceso se desarrolla mediante un montador o linker. Aunque se puede realizar el montaje con varios ficheros objeto, tambin es un paso necesario en caso de tener un solo fichero objeto. El fichero ejecutable ya es el fichero binario con el lenguaje de mquina y el formato adecuado para poder llevar a cabo su ejecucin.

2. ESTRUCTURA DE UN PROGRAMA EN ENSAMBLADOR En este primer ejemplo tenemos el cdigo de un programa en ensamblador que escribe por pantalla el mensaje "Buenos das!".

El bloque identificado por la directiva .data que contiene los datos del programa (segmento de datos), que contiene una nica variable llamada mensaje, que inicialmente contiene el texto que nos interesa escribir por pantalla. El bloque identificado por la directiva .code que contiene las instrucciones del programa (segmento de cdigo), adems de unas macros que indican el inicio y el final del programa, contiene tres instrucciones. Sin entrar en detalles sobre la funcin de estas instrucciones, podis observar que cada una de ellas siempre ocupa una lnea.

Fundamentos de Computadores Pg. 26

En funcin del modelo de programa que vamos a seguir durante el mdulo, siempre empezaremos el segmento de cdigo con una etiqueta (en este caso inicio) seguida de la macro STARTUPCODE, que inicializa algunos registros del procesador. Para finalizar el programa, utilizaremos la macro EXITCODE 0, y para indicar la finalizacin del segmento de cdigo tendremos que poner end seguido del nombre de la etiqueta de comienzo de cdigo: inicio. Las tres instrucciones restantes, por tanto, son las que consiguen que se escriba un mensaje por pantalla. Los comentarios son otro aspecto importante de cualquier programa en ensamblador, son especialmente tiles en ensamblador debido a que el bajo nivel de este lenguaje provoca que los programas presenten algunas dificultades de comprensin. As pues, en ensamblador, los comentarios son el texto que hay detrs de un punto y coma y llega hasta el final de lnea. Una vez tenemos el fichero con el cdigo ensamblador, hay que traducir el cdigo escrito en lenguaje de ensamblador a lenguaje de mquina y generar, as, un programa ejecutable. El proceso de traduccin consta de dos pasos: Ensamblaje (assembling). El ensamblaje traduce cada lnea de cdigo ensamblador a la correspondiente instruccin en lenguaje de mquina. Si el cdigo ensamblador no contiene ningn error, se genera, entonces, un fichero objeto cuyo contenido consta de instrucciones en lenguaje de mquina. Nosotros utilizaremos el programa Turbo Assembler para ensamblar, un programa que genera un fichero objeto con extensin .obj. Montaje (linking). El montaje toma un fichero objeto (o ms de uno) y, si no hay ningn error, genera el fichero ejecutable. Para montar, utilizaremos el programa Turbo Linker, que genera un fichero ejecutable con extensin .exe. En concreto, para ensamblar y montar el programa del ejemplo, ejecutaremos los siguientes comandos: tasm /zi buenosdias.asm y tlink /v buenosdias.obj

3. LECTURAS Y ESCRITURAS En este apartado estudiaremos como hacer lecturas de teclado y escrituras por pantalla de los elementos que nos interesen: Para poder escribir un texto por pantalla, ste tiene que estar inicialmente almacenado en la memoria en forma de cadena de texto. Podemos especificar el cdigo ASCII de los caracteres poniendo directamente los caracteres entre comillas, o bien, en caso de encontrarnos con caracteres de control, poniendo el cdigo ASCII separado por comas. Existen diferentes maneras de escribir texto por pantalla y de leer caracteres del teclado. De todas las posibilidades existentes, en un primer momento vamos a utilizar la interrupcin 21h, mecanismo basado en interrupciones de software que permite utilizar rutinas del sistema operativo para acceder a los recursos del sistema. Para especificar qu funcin de sistema se quiere utilizar, se pone el valor correspondiente al registro ah. El ejemplo de la pgina siguiente nos muestra el cdigo de un programa que escribe un mensaje inicial por pantalla, lee una tecla y escribe un segundo mensaje antes de finalizar. Para poder escribir un texto, ste tiene que estar inicialmente almacenado en la memoria. En nuestro caso tenemos las variables de memoria mensaje1, mensaje2 y saltolinea, cada una de las cuales contiene una cadena de texto y la variable de memoria tecla, que no est inicializada. Las dos primeras cadenas de texto contienen un mensaje y acaban con los caracteres 10 y 13, que codifican el salto de lnea en cdigo ASCII. La variable saltolinea, por su parte, slo contiene un salto de lnea. Y, por ltimo, la variable tecla, que est sin inicializar (especificado con el carcter ?), servir para guardar la tecla leda por el teclado. Para escribir un texto por pantalla, el registro dx debe contener la direccin de memoria a partir de la cual, y hasta encontrar el carcter "$", se halla el texto que estamos interesados en escribir. A continuacin, tenemos que activar la interrupcin 21h, poniendo antes 09h en el registro ah, que indica que se quiere escribir una cadena de caracteres por pantalla. De manera similar, para leer un carcter del teclado activaremos la interrupcin 21h, pero, en este caso, poniendo previamente un 01h en el registro ah (de esta manera, el programa se esperar hasta que el usuario pulse una tecla).

Fundamentos de Computadores Pg. 27

Veremos por pantalla la tecla pulsada, y sta es almacenada en el registro al. Por lo general, es importante guardar el valor de la tecla pulsada en alguna variable de memoria (en el ejemplo, la variable tecla), ya que el registro al puede sufrir modificaciones en las interrupciones que se produzcan a continuacin.

Escritura de un texto por pantalla La forma de escribir un texto por pantalla es la que se ha descrito en el ejemplo 2; es decir: lea dx, [text] mov ah, 09 h int 21 h, donde text es la variable que contiene el texto (acabado con el carcter '$') que deseamos escribir. Escritura de un carcter por pantalla Si nuestra intencin es escribir un solo carcter, no es necesario crear una cadena de dos caracteres acabada con la letra '$', puesto que hay otra interrupcin que permite escribir un carcter con ms facilidad, que es la siguiente: mov dl, car mov ah, 02 h int 21 h, donde car es el cdigo ASCII del carcter que queremos escribir, o una variable o registro que contiene este cdigo. Escritura de un nmero por pantalla No existe ninguna rutina de sistema que escriba directamente nmeros por pantalla. Dado que la escritura por pantalla siempre se realiza con el cdigo ASCII del carcter que nos interesa escribir, la escritura de nmeros es una tarea ms complicada. Si el nmero que hay que escribir es de un solo dgito, y teniendo en cuenta que sabemos que el cdigo ASCII de los dgitos 0, ..., 9 son valores consecutivos, podemos utilizar la interrupcin descrita en el caso anterior de este modo: mov dl,'0' add dl, nm mov ah, 02h int 21h,

Fundamentos de Computadores Pg. 28

donde nm es el valor del nmero entre 0 y 9 que estamos interesados en escribir. Fijaos en que el valor del cdigo ASCII del dgito '0' se suma al valor del nmero que se quiere escribir. El resultado de esta suma es el valor del cdigo ASCII del dgito que queremos escribir. Si el nmero que queremos escribir contiene varios dgitos, hay que hacer la escritura dgito a dgito. Por esta razn, se deben realizar sucesivas divisiones por 10 y hay que escribir cada uno de los dgitos; pero la operacin de divisin no la veremos hasta un poco ms adelante. Lectura de un carcter por el teclado La lectura del teclado mediante la interrupcin 21h es de tipo carcter a carcter. Existen dos variantes para realizar la lectura del teclado: con echo o sin echo. Pues bien, con echo significa que el carcter que se introduce por el teclado es escrito al mismo tiempo por la pantalla. Sin echo, significa que el carcter introducido por el teclado no se escribe por pantalla. En ambos casos, y de manera similar a la que vimos en el ejemplo 2, el carcter introducido queda almacenado en el registro al. La lectura con echo se hace de la siguiente manera: mov ah, 01 h int 21 h mov [car], al, donde car es una variable de memoria en la que guardamos el valor introducido por el teclado. De manera anloga, la lectura sin echo se realiza como veremos acto seguido: mov ah, 08 h int 21 h mov [car], al.

4. ESTRUCTURAS CONDICIONALES En los ejemplos introducidos hasta ahora, las instrucciones han sido ejecutadas secuencialmente. Por lo general, sin embargo, podemos encontrar diferentes partes de un programa que se ejecutan en funcin de una serie de valores introducidos o calculados durante la ejecucin del programa. Para poder identificar la instruccin a la que nos interesa saltar, es necesario poner una etiqueta. A continuacin vamos a ver el cdigo de un programa (pgina siguiente) que escribe un mensaje por pantalla en funcin del valor de la tecla introducida. Si se pulsa una "D", escribe "Buenos das". Si se pulsa una "T", escribe "Buenas tardes". Y, de lo contrario, no escribe nada.

En concreto, se compara la tecla introducida con la letra "D". Si la comparacin es igual, no se salta y el cdigo contina ejecutndose de forma secuencial, de manera que se escribe el mensaje2. De lo contrario, se salta a la instruccin identificada por la etiqueta tardes. De manera anloga, si la tecla introducida no es una "D" y se salta a la instruccin etiquetada con tardes, se realiza, entonces, una nueva comparacin. En este caso, se compara la tecla introducida con la letra "T": si es igual, no se salta y se sigue ejecutando el cdigo de forma secuencial y escribiendo el mensaje3; de lo contrario, se salta a la instruccin identificada por la etiqueta final. As pues, el mensaje2 slo se escribir si la tecla introducida es la "D", y el mensaje3, slo si la tecla pulsada es la "T". Fijaos en que cuando nos encontramos con dos condiciones excluyentes (es decir, que se ejecuta un bloque de instrucciones u otro bloque diferente) es necesario poner una instruccin de salto incondicional jmp al final del primer bloque de instrucciones para, de este modo, evitar que el segundo bloque sea ejecutado a continuacin del primero. Adems, prestad atencin al hecho de que la etiqueta das carece de uso alguno. En general, sin embargo, las etiquetas (de la misma manera que los comentarios) tambin sirven para aportar ms claridad al programa. En este caso, podis observar que, en el programa del ejemplo, las etiquetas nos identifican cuatro bloques: inicio, das, tardes y final. Debemos hacer hincapi en el hecho de que las comparaciones se realizan con los caracteres "D" y "T", caracteres que corresponden a letras en mayscula. En realidad, lo que se est comparando es el cdigo ASCII de estos caracteres con el cdigo ASCII introducido por el teclado.

Fundamentos de Computadores Pg. 29

Instrucciones de salto
Formato: Cmp al, D Jne tardes La primera instruccin compara el valor guardado en al, con la letra D (adems mayscula). La segunda instruccin provocar un salto hasta la etiqueta tardes, siempre y cuando el valor en Al y D sean distintos.

Comparacin de valores con signo Salta si el primer valor es mayor que jg el segundo valor Salta si el primer valor es mayor o jge igual que el segundo valor Salta si el primer valor es menor que jl el segundo Salta si el primer valor es menor o jle igual que el segundo Comparacin de valores sin signo Salta si el primer valor es mayor que ja el segundo Salta si el primer valor es mayor o jae igual que el segundo Salta si el primer valor es menor que jb el segundo Salta si el primer valor es menor o jbe igual que el segundo Otras instrucciones de salto je Salta si los dos valores comparados jz son iguales jne Salta si los dos valores comparados jnz son diferentes jmp Salta incondicionalmente

5. ESTRUCTURAS ITERATIVAS Otra tcnica importante de la programacin (tanto en alto nivel como en ensamblador) son las estructuras iterativas, es decir, la ejecucin de un conjunto de instrucciones un nmero repetido de veces. En general, el conjunto de instrucciones que se encuentran dentro de una estructura iterativa se puede ejecutar en un nmero fijo de iteraciones, o bien hasta que se cumpla una determinada condicin. El programa que tenemos a continuacin escribe un mensaje por pantalla un nmero repetido de veces. En una primera versin de este cdigo, el mensaje es escrito diez veces; en la segunda versin, el mensaje es escrito cada vez que se pulsa una tecla, hasta que la tecla pulsada es la "X". Como podis ver en el ejemplo, esta estructura iterativa est formada por una estructura condicional y un salto hacia atrs. La estructura condicional evala el nmero de veces que se ha ejecutado el cdigo sabiendo que cx cuenta el nmero de iteraciones. Cuando cx es mayor o igual que 10, se produce un salto hacia final; de lo contrario, se ejecutan las instrucciones que se encuentran en el interior de la estructura iterativa y se salta hacia atrs, es decir, hacia las instrucciones que vuelven a evaluar la condicin.

Fundamentos de Computadores Pg. 30

Por lo general, para que el tipo de estructura iterativa que aparece en el siguiente ejemplo funcione de forma correcta es necesario: Inicializar el contador (en este caso el registro cx). Incrementar el contador al final de cada iteracin.

Fijaos en que si no hubisemos inicializado cx, este registro podra corresponderse con cualquier valor, por ejemplo 10. En este caso, el cdigo que se encuentra en el interior de la estructura iterativa no se ejecutara nunca. Ejemplo 1 Ejemplo 2

De la misma forma, si cx no se hubiera incrementado al final de cada iteracin, el contador valdra siempre 0 y, por lo tanto, la estructura iterativa nunca acabara y el programa se iterara de manera indefinida. En esta segunda versin del mismo programa, cada vez que se pulsa una tecla se escribe el mensaje, hasta que la tecla pulsada es "X". Fijaos en esta segunda versin del programa, en la que la estructura de evaluacin de la condicin es muy similar a la del ejemplo de la versin anterior. En este caso, sin embargo, se compara la tecla pulsada con el carcter "X". Pues bien, si stas son iguales, se salta hacia el final del programa; de lo contrario, se escribe el mensaje y se vuelve a saltar hacia atrs (hacia la introduccin de la tecla). En este caso, la condicin de evaluacin es el valor de la tecla introducida por el teclado. Tened en cuenta que antes de comparar por primera vez, siempre se lee una tecla, y antes de cada nueva iteracin, se lee una nueva tecla. Las estructuras iterativas mostradas en los ejemplos 4.1 y 4.2 sirven tanto para contar un nmero determinado de iteraciones como para iterar hasta que se cumpla una condicin. En el primer caso, sin embargo, en el que se pretende contar un nmero determinado de iteraciones, el lenguaje de ensamblador nos ofrece otra manera ms eficiente de hacer lo mismo: la instruccin loop. La instruccin loop sirve para contar iteraciones utilizando de forma implcita el registro cx para el recuento. Al ejecutarse la instruccin loop, el registro

Fundamentos de Computadores Pg. 31

cx decrece en una unidad y, si su valor es diferente de 0, se salta a la etiqueta especificada en la misma instruccin. 6. TIPOS DE OPERANDO Una instruccin en ensamblador ejecuta una determinada accin, utilizando uno o varios operandos de origen, sobre (por lo general) un operando de destino. Adems, tanto el operando de origen como el de destino deben tener el mismo tamao. Cada uno de los operandos de origen, es decir, los operandos que son consultados para ejecutar la instruccin, puede ser de tres tipos: una constante, un registro, una variable de memoria. Del mismo modo, el operando de destino, es decir, el operando que se actualiza como consecuencia de la ejecucin de una instruccin, puede ser de dos tipos: un registro, una variable de memoria. No tiene ningn sentido hablar de operando de destino constante, porque el operando de destino es, por definicin, el operando que se actualiza al ejecutar una instruccin, y una constante no vara. A pesar de que tanto el operando de origen como el de destino pueden ser de tipo variable de memoria, el ensamblador del i8086 posee una restriccin: los dos operandos no pueden ser de tipo variable de memoria en la misma instruccin; por lo que, o bien lo es uno, o bien lo es el otro. En el ejemplo, aparece en negrita la instruccin mov, que ya conocis. Esta instruccin tiene dos operandos y se comporta de la siguiente manera: mov destino, origen Es decir, copia el valor del operando de origen (lo lee) sobre el operando de destino (lo escribe). En este caso concreto, podis ver que la instruccin utiliza como operando de origen un valor constante (aqu el nmero 65). La constante especificada puede estar expresada en los diferentes formatos que mostramos a continuacin: en decimal: mov dl, 65; en hexadecimal: mov dl, 41h; en ASCII: mov dl, 'A' A continuacin, en el caso2 podis observar que el operando de origen de la instruccin mov es un registro; de hecho, en esta instruccin el operando de destino tambin es un registro. El acceso a un registro es muy rpido, pero, a pesar de todo, existen pocos registros disponibles. As pues, se acostumbra a utilizar operandos de tipo registro siempre que esto sea posible. Adems, hay operaciones que fuerzan el uso de algn registro concreto. Prestad atencin, ahora, al hecho de que en el caso3, la instruccin mov utiliza un operando de origen de tipo variable de memoria. En este caso, aparece especificada entre corchetes una variable de memoria declarada en el segmento de datos. Como en el caso anterior, para utilizar un operando de origen de tipo variable de memoria, sta tiene que haber sido declarada e inicializada con anterioridad. Tened en cuenta el hecho de que la variable carcter1 ha sido declarada en el segmento de datos e inicializada en el valor 65 durante su definicin. Utilizaremos un operando de tipo variable de memoria para guardar los datos de nuestro programa temporalmente (debido a que como no suele ser suficiente con los registros de que disponemos, ste es el lugar habitual en el que se guardan los datos).

Fundamentos de Computadores Pg. 32

Y ya por ltimo, a continuacin pasamos a ver (en negrita) un caso algo diferente. Fijaos en que la variable de memoria carcter2 ha sido declarada en el segmento de datos con dw, en lugar de con db. db significa que la variable de memoria ocupa 8 bits (los necesarios para codificar un carcter en cdigo ASCII); dw, por su parte, significa que la variable de memoria ocupa 16 bits. En consecuencia, en este segundo caso, la constante 65 se codifica con 16 bits (los 8 bits de mayor peso sern cero). En el caso4, el operando de origen es, del mismo modo, una variable de memoria; no obstante, en este caso es una variable de 16 bits. Como ya hemos comentado, tanto el operando de origen como el de destino tienen que ser del mismo tamao, motivo por el que ahora se utilizar un registro de 16 bits (dx).

7. VARIABLES DE MEMORIA: DECLARACIN Y USO Las variables de memoria sirven para almacenar informacin en memoria de forma temporal. Esta informacin puede ir cambiando durante la ejecucin del programa, o bien puede mantenerse constante (segn nos interese). Con el fin de especificar a qu parte de la informacin nos interesa acceder, identificaremos cada variable de memoria con un nombre. Una variable de memoria se representa mediante un nombre declarado dentro del segmento de datos, para el que se define un tamao y, de forma opcional, un valor inicial. Cuando se ejecuta el programa ensamblador, el sistema reserva en la memoria el espacio correspondiente al tamao de las variables. Estas posiciones de memoria estarn inicializadas o no en funcin de la manera en que hayamos declarado la variable. Desde el programa ensamblador podremos acceder al valor de la variable especificando su nombre entre corchetes. Las variables de memoria aparecen declaradas en el segmento de datos. Al declarar una variable de memoria, hay que indicar su tamao y, de forma opcional, el valor inicial de la misma. En el ejemplo, en negrita, podis ver las tres posibilidades que nos ofrece el ensamblador para indicar el tamao: db indica que el tamao es un byte. dw indica que el tamao es un word (dos bytes). dd indica que el tamao es un double (cuatro bytes). Por lo tanto, tened en cuenta que var1 es una variable de 8 bits, var2, una de 16 bits y var3, una de 32 bits. Despus del tamao, aparecer especificado el valor inicial. Dicho valor puede aparecer especificado en cualquier formato: decimal, hexadecimal o bien en cdigo ASCII. En el ejemplo, hemos inicializado todas las variables en 1. No obstante, fijaos en que la primera variable ocupa 8 bits, la segunda, 16 bits y la tercera, 32 bits. Si nos es indiferente el valor en el que queremos inicializar una variable, lo podemos especificar de la siguiente manera: var dw ? Se puede declarar una lista de variables del mismo tipo (un vector) tras haber indicado el tamao que queremos que tenga cada elemento (db, dw o dd), poniendo los valores iniciales de forma consecutiva. En el siguiente ejemplo podis observar que var4 es una lista de diez elementos de tamao byte inicializados con cdigos ASCII. Podemos especificar los cdigos ASCII escribiendo los caracteres entre comillas, o bien escribiendo los cdigos separados por comas. De forma similar, var5 es una lista de cinco elementos de tamao word inicializados en los valores 1, 3, 5, 7, y 9, respectivamente. En caso de que tengamos nmeros naturales o enteros, stos se ponen directamente separados por comas. Por ltimo, disponemos de una alternativa para declarar listas de una gran cantidad de elementos. sta es la forma en la que se ha declarado la variable var6, es decir, se ha indicado que consta de diez elementos de tamao word, inicializado cada uno de ellos en el valor cero.

Fundamentos de Computadores Pg. 33

Se puede declarar una lista de variables del mismo tipo (un vector) tras haber indicado el tamao que queremos que tenga cada elemento (db, dw o dd), poniendo los valores iniciales de forma consecutiva. En el siguiente ejemplo podis observar que var4 es una lista de diez elementos de tamao byte inicializados con cdigos ASCII. Podemos especificar los cdigos ASCII escribiendo los caracteres entre comillas, o bien escribiendo los cdigos separados por comas. De forma similar, var5 es una lista de cinco elementos de tamao word inicializados en los valores 1, 3, 5, 7, y 9, respectivamente. En caso de que tengamos nmeros naturales o enteros, stos se ponen directamente separados por comas. Por ltimo, disponemos de una alternativa para declarar listas de una gran cantidad de elementos. sta es la forma en la que se ha declarado la variable var6, es decir, se ha indicado que consta de diez elementos de tamao word, inicializado cada uno de ellos en el valor cero. Se accede al resto de los elementos de la lista sumando un desplazamiento con respecto al elemento inicial. As pues, para acceder al quinto elemento de la lista de caracteres, se suma un desplazamiento de 4 con respecto al elemento inicial. Tened en cuenta que se han creado los dos accesos mencionados de diferente manera: en el primer caso, se ha movido una constante, y, en el segundo, un registro. En cualquier caso, es importante que veamos que el tamao de ambos operandos en cada instruccin es el mismo: 8 bits. Al acceder a los elementos de una lista de words debemos tener en cuenta que cada elemento ocupa dos bytes. En consecuencia, para llevar a cabo el acceso, hay que sumar un desplazamiento de dos por cada elemento. Las siguientes instrucciones no tienen ningn efecto sobre lo que se escribe por pantalla, pero podis apreciar el acceso a la lista de words por el desplazamiento de 8 con respecto al inicio de la variable de memoria var5. Es decir, que se accede al quinto elemento de esta lista (el ltimo elemento, que contiene el valor 9). Adems, dado que se accede a un elemento de 16 bits, tendremos que utilizar un registro de 16 bits (en este caso, el registro ax). Como habris podido observar, estas instrucciones copian el ltimo elemento de la lista sobre el elemento inicial. En teora, podramos hacer esta accin de la siguiente manera: mov [var5], [var5 + 8] Sin embargo, recordad que los dos operandos de una misma instruccin no pueden ser variables de memoria, motivo por el que el movimiento se ha tenido que efectuar en dos instrucciones. Tras la ejecucin de estas dos instrucciones, el contenido del vector ser: 9, 3, 5, 7 y 9.

8. VARIABLES DE MEMORIA: MODALIDADES DE ACCESO Las variables de memoria estn declaradas en el segmento de datos y se identifican mediante un nombre; utilizaremos este nombre para acceder a la variable. Para acceder a una variable en concreto, slo tenemos que poner el nombre entre corchetes. De forma parecida, si nos interesa acceder a una posicin concreta de una variable de tipo lista, slo tenemos que que poner entre corchetes el nombre de la variable y el desplazamiento apropiado. En algunos casos, puede ser interesante acceder a una variable a priori indeterminada, o bien a una posicin indeterminada (o variable) de una variable de tipo lista. Pues bien, en estos casos, para especificar el dato de memoria al que queremos acceder, es necesario utilizar registros entre corchetes.Para el acceso de variables de memoria con registros, podemos utilizar dos tipos de registros: los registros base y los registros ndice. Los registros base sirven para especificar la direccin inicial (direccin base) de una variable de memoria. En ensamblador, podemos encontrar un registro base para referenciar datos llamado bx. Existe un segundo registro base que se utiliza para referenciar informacin de la pila llamado bp, aunque, de momento, slo utilizaremos el bx. Los registros ndice sirven para especificar un desplazamiento (ndice) a partir de una direccin base. En ensamblador, podemos encontrar dos registros ndice, los cuales reciben el nombre de si y di. El programa que encontraris a continuacin escribe una lista de nmeros pares o impares, segn la tecla que el usuario haya introducido. En pricipio, hay dos vectores con nmeros pares, y a uno de stos se le suma +1 para hacerlos impares. La utilidad de este programa slo es ilustrar las diferentes modalidades de acceso a las variables de memoria. Fijaos en el segmento de datos, en el que a parte del mensaje hay dos listas de nmeros: par e impar. En un principio, la lista impar contiene nmeros pares, as que el primer bucle del programa recorre esta lista e incrementa cada uno de sus elementos. Para hacer esto, la instruccin marcada en negrita utiliza el nombre de la variable en cuestin y suma el valor del registro ndice si. Como podis observar, el registro si vale inicialmente cero, y en cada iteracin del bucle se incrementa en dos unidades. As, se va generando el desplazamiento adecuado para acceder a cada elemento del vector. En tal

Fundamentos de Computadores Pg. 34

caso, diremos que esta instruccin accede a unas posiciones indeterminadas (de hecho, unas posiciones variables) de una variable determinada (concreta) de tipo lista. Observad que, como siempre, el registro ndice se ha inicializado con anterioridad, en este caso en cero, puesto que, de lo contrario, se accedera a posiciones indeterminadas de memoria (dependiendo del valor del registro si). Despus del primer bucle que incrementa los elementos del vector impar, se escribe el mensaje por pantalla y se pide al usuario que pulse una tecla. A continuacin tenemos el condicional que comprueba si la tecla pulsada es una "P" o una "S". En caso de que no sea ni una "P" ni una "S", el programa salta al final y no hace nada. Dependiendo de la tecla pulsada, se ejecuta la instruccin lea utilizando como operando de origen el vector par o el vector impar. La instruccin lea pone la direccin de memoria que tiene el operando de origen en el operando de destino. Por lo tanto, el operando de origen tiene que ser por fuerza de tipo variable de memoria. En este caso, en el registro bx ponemos la direccin de memoria del vector par o del vector impar, segn la tecla introducida. Fijaos en la diferencia existente entre la instruccin mov y la instruccin lea. En el primer caso, accedemos al valor de la variable de memoria, y, en el segundo, a la direccin de la variable de memoria. El objetivo de poner la direccin de una variable de memoria en el registro bx es poder utilizar el registro entre corchetes para efectuar el acceso a la variable de memoria a la que apunta. Una vez tenemos una direccin de memoria en el registro bx, podemos acceder a ella poniendo el registro bx entre corchetes de la siguiente manera (de hecho, podemos utilizar ax o cualquier otro registro): mov ax, [bx] En el ejemplo podis observar que se accede a una direccin de memoria formada por la suma de bx y si. Es decir, a una variable no fija (la que apunta al registro bx) con un desplazamiento variable (el que indica el registro si). Es necesario tener en cuenta que para realizar este tipo de acceso no podemos utilizar ningn registro diferente del registro base o del ndice. De momento, utilizaremos bx como registro base, y si o di, como registros ndice. Ms adelante, cuando estemos en la pila, tambin utilizaremos el registro base bp. En general, este hito podemos resumirlo determinando que se puede acceder a una posicin de memoria mediante la siguiente modalidad de direccionamiento: mov ax, [base + indice + despl], donde base puede ser el nombre de una variable o un registro base (o nada), indice hace referencia en un registro ndice (o nada), y despl puede ser cualquier constante (o nada). La expresin que especifica la direccin de memoria a la que se quiere acceder slo puede contener el operando "+", la suma, o para constantes, tambin el operando "-", la resta. Por lo tanto, los siguientes accesos seran incorrectos: mov ax, [var * 2] mov ax, [bx si] mov ax, [var + 2 * si]

Fundamentos de Computadores Pg. 35

9. INSTRUCCIONES ARITMTICAS Consideremos las instrucciones aritmticas que podemos implementar de forma directa con el lenguaje de ensamblador. Las instrucciones aritmticas del lenguaje de ensamblador permiten realizar una operacin aritmtica con uno o dos operandos de origen y guardar el resultado sobre un operando de destino. Las instrucciones de ensamblador del i8086 no permiten especificar ms de dos operandos. As pues, uno de los operandos de origen siempre es, adems, el operando de destino. Por ejemplo, para sumar dos nmeros, la sintaxis es: add num1, num2 En este caso, se desarrolla la operacin: num1 = num1 + num2. De forma similar, otras operaciones que requieren un solo operando de origen, como el incremento (sumar + 1), se especifican con un solo operando. Es decir: inc num En este caso, la operacin que se realiza es: nm = nm + 1. Existen otras instrucciones en las que, para ejecutar la operacin, se toma siempre un operando (por lo general un registro) de manera implcita. Es decir, uno de los operandos no se especifica y se toma siempre un determinado registro. Ejemplos de estas instrucciones son la multiplicacin y la divisin, que veremos ms adelante. El primer bloque de instrucciones hace una suma. Cuando queremos sumar dos nmeros y guardar el resultado obtenido, tenemos que hacer, forzosamente, el clculo por medio de un registro auxiliar (en el ejemplo utilizamos el registro ax) y despus guardar el resultado en la variable de memoria correspondiente. Otra posibilidad la encontramos cuando queremos sumar dos nmeros y guardar el resultado obtenido sobre uno de estos dos nmeros. En este caso, en teora podramos hacer: add [resultado], [numero] Sin embargo, recordad que existe la limitacin de que los dos operandos no pueden ser variables de memoria. En consecuencia, en este caso tambin tendremos que efectuar el clculo por medio del registro ax, pero de una manera algo ms eficiente que en el ejemplo: mov ax, [numero] add [resultado], ax Para la resta slo debemos tener cuidado con el orden en que se especifican los operandos, ya que la operacin resta el operando de origen del operando de destino (sobre el que guarda el resultado). Es decir, la operacin op1 = op1 - op2 se hace de la siguiente manera: sub op1, op1 Ahora bien, la operacin op1 = op2 - op1, siendo op1 y op2 variables de memoria, tendra que llevarse a cabo de una forma ms sutil: mov ax, [op1] mov bx, [op2] sub bx, ax mov [op1], bx Las operaciones de suma y resta se ejecutan igual si se realizan sobre nmeros naturales o enteros, ya que el algoritmo de suma (o resta) para nmeros naturales y enteros (codificados en complemento a 2) es el mismo.

Fundamentos de Computadores Pg. 36

La operacin de multiplicacin es ms delicada que la suma y la resta; su funcionamiento depende del tamao del operando que se especifique: Si el operando es de 8 bits, se ejecuta: ax = operando al. Si el operando es de 16 bits, se ejecuta: dx _ ax = operando ax. Cuando la multiplicacin es de 8 bits, se multiplica el operando por al y se guarda el resultado obtenido en el registro ax. Es decir, se utiliza el registro ax de manera implcita. Adems, fijaos en que el resultado de haber multiplicado dos nmeros de 8 bits podra ocupar hasta 16 bits; por consiguiente, esta operacin guarda el resultado en ax. De forma parecida, cuando la multiplicacin es de 16 bits, sta utiliza de manera implcita el registro ax como segundo operando y guarda el resultado en los registros dx (los 16 bits de ms peso) y ax (los 16 bits de menos peso), ya que, en este caso, el resultado ocupar hasta 32 bits. Aqu, s debemos diferenciar si la multiplicacin se realiza con nmeros naturales o enteros. De hecho, la instruccin imul multiplica nmeros enteros, mientras que la instruccin mul, hace lo propio con nmeros naturales. Tanto en la instruccin mul como en la instruccin imul, el operando que se especifica tiene que ser, por fuerza, de tipo registro o variable de memoria. Por ltimo, veamos la operacin de divisin, que tambin depende del tamao del operando especificado: Si el operando es de 8 bits, se ejecuta: al = ax / operando ah = ax % operando. Si el operando es de 16 bits, se ejecuta: ax = dx_ax / operando dx = dx_ax % operando. Donde / representa el cociente, y %, el resto de la divisin. Es decir, el operando especificado en la instruccin representa el divisor, y el dividendo se toma de forma implcita del registro ax (y del dx para divisores de 16 bits). En este segundo caso, el dividendo ser un nmero de 32 bits formado por dx (los 16 bits de ms peso) y ax (los 16 bits de menos peso). De manera similar, hallamos las instrucciones div y idiv para hacer divisiones: la primera la realiza asumiendo que los nmeros son naturales, y la segunda, asumiendo que los nmeros son enteros. Fijaos en que si queremos dividir dos nmeros de 16 bits, la operacin de divisin utiliza igualmente el registro dx de manera implcita. Por lo tanto, en dx tiene que estar la extensin de signo, si los nmeros son enteros, o simplemente cero, si los nmeros son naturales. De manera anloga, si estamos interesados en dividir dos nmeros de 8 bits, en la parte alta del registro al (ah) tendr que estar la correspondiente extensin de signo. La instruccin cbw representa una extensin de signo del valor de al sobre ah. Asimismo, la instruccin cwd forma una extensin de signo del valor de ax sobre dx. Prestad atencin al hecho de que en el ejemplo hay que utilizar la instruccin cwd para realizar la extensin de signo correspondiente sobre el registro dx. Las operaciones aritmticas mostradas en el ejemplo son las operaciones bsicas, suficientes para realizar cualquier clculo. A continuacin, pasamos a describir otras operaciones aritmticas que tambin pueden ser interesantes: Incremento y decremento Existen unas instrucciones ms eficientes que las instrucciones bsicas de suma y resta para sumar o restar +1 a un operando, y son stas: inc operando dec operando Fijaos en que el operando debe ser un registro o una variable de memoria, ya que carece de sentido incrementar o decrementar una constante. Complemento a 2 Para cambiar un nmero entero de signo disponemos de la siguiente instruccin: neg operando Puesto que el i8086 representa los nmeros enteros con complemento a 2, de hecho, esta instruccin hace el complemento a 2 del operando especificado. Como siempre, este operando tiene que ser un registro o una variable de memoria.

Fundamentos de Computadores Pg. 37

Multiplicacin por nmeros potencia de 2 En binario, una multiplicacin por un nmero potencia de 2 (por ejemplo, 2N) equivale a desplazar este nmero N posiciones hacia la izquierda; es decir, a poner N ceros por la derecha (pensad en decimal: una multiplicacin por 1.000 equivale a poner tres ceros a la derecha del nmero en cuestin). Es evidente que desplazar un nmero a la izquierda es ms fcil que hacer una multiplicacin. Por lo tanto, en ensamblador se acostumbran a utilizar las instrucciones de desplazamiento para efectuar una multiplicacin por un nmero potencia de 2. Estas instrucciones son: shl operando, 1 shl operando, cl sal operando, 1 sal operando, cl shl se utiliza para nmeros naturales y sal, para nmeros enteros. Cuando deseamos desplazar una sola posicin hacia la izquierda (multiplicacin por 2), podemos utilizar la constante 1 como segundo operando; de lo contrario, hay que poner en el registro cl el nmero de posiciones que queris desplazar hacia la izquierda. Divisin por nmeros potencia de 2 Parecido al caso de la multiplicacin, es el de la divisin en binario por un nmero potencia de 2, que equivale a desplazar este nmero las posiciones correspondientes hacia la derecha. Las instrucciones en ensamblador para realizar desplazamientos hacia la derecha son las siguientes: shr operando, 1 shr operando, cl sar operando, 1 sar operando, cl

10. INSTRUCCIONES LGICAS Las instrucciones aritmticas realizan clculos sobre valores de 8, 16 32 bits, interpretando todos los bits de manera unificada segn una codificacin. De forma complementaria, tambin hay otro tipo de operaciones que trabajan bit a bit, que son las instrucciones lgicas. Las instrucciones lgicas tienen mucha importancia en reas especficas como, por ejemplo, la programacin lgica. Sin embargo, para nosotros sern tiles de un modo especial cuando manipulemos los registros de los controladores de los perifricos. Las instrucciones lgicas del lenguaje de ensamblador permiten desarrollar una operacin lgica bit a bit utilizando uno o dos operandos de origen y guardar el resultado obtenido sobre un operando de destino. Las operaciones lgicas bsicas son and, or y not, aunque el lenguaje de ensamblador tambin nos ofrece la operacin xor. Adems, de manera similar a las instrucciones aritmticas, uno de los operandos de origen es siempre el operando de destino. En el ejemplo hallamos declaradas dos variables de memoria de 8 bits: el valor original (una con valor inicial igual a 75 especificado en decimal) y la copia (con un valor inicial cualquiera especificado, en este caso, en hexadecimal). Nuestra intencin es observar bit a bit el valor original y, segn este bit, poner un 1 o un 0 sobre la copia. En concreto, el valor original vale 75 y el valor inicial de la copia es f0h. Para aislar el valor de un solo bit utilizaremos lo que se conoce como una mscara de bits. Una mscara de bits es una lista de bits en la que slo los bits que nos interesa tratar valen 1; los dems valen 0. En nuestro caso, dado que queremos tratar los bits uno a uno, inicializamos el registro al con una mscara de bits en la que todos los bits valen 0 excepto uno. En el ejemplo, hemos inicializado

Fundamentos de Computadores Pg. 38

el registro al en la constante 1, pero hemos expresado esta constante en binario. ste es un recurso comn cuando se manipulan bits, ya que queda mucho ms claro lo que pretendemos hacer si el valor 00000001 b est especificado. Utilizaremos esta mscara para aislar el bit que nos interese tratar. Teniendo en cuenta que querremos tratar todos los bits, al final del bucle hacemos un desplazamiento hacia la izquierda del registro al; es decir, desplazamos este 1 a la siguiente posicin de la izquierda. Haremos este desplazamiento ocho veces para, de este modo, tratar todos los bits del valor original. Con la mscara que tenemos en el registro al podemos aislar un bit del valor original haciendo una operacin and lgica del valor original con la mscara. Fijaos en que la operacin and de cualquier valor con 0 es siempre 0. Por lo tanto, el resultado de la operacin and de cualquier valor con la mscara dejar todos los bits en 0, excepto el bit que se encuentra en la misma posicin que el 1 que hay en la mscara. Este bit se mantendr en 1, si el valor original era 1, o bien se quedar en 0, si el valor original era 0. Prestad atencin al hecho de que antes de desarrollar la operacin and hemos copiado el valor original en el registro bl, ya que and modifica el operando de destino, y en este programa nos interesa mantener el valor original. As pues, tras haber ejecutado la operacin and, el registro bl valdr 0, si el bit correspondiente era un 0, 1, en caso contrario. Continuamos con el ejemplo. Se ejecutar el cdigo de la etiqueta bit1, si el bit analizado es un 1, o bien se ejecutar el cdigo que hay en la etiqueta bit0, si el bit analizado es un 0. Cuando el bit es un 1, queremos forzar la escritura de un 1 en el valor copia, respetando el valor de los otros bits. Para forzar la escritura de un bit en 1 (el bit correspondiente a la mscara), se ejecuta una operacin or de la mscara sobre el operando de destino. Fijaos en que la operacin or con ceros mantiene los valores originales, y con un 1, fuerza que el bit correspondiente valga 1.De manera anloga, cuando el bit es un 0, queremos forzar la escritura de un 0 en el valor copia, respetando el valor que tienen los otros bits. Para forzar la escritura de un bit en 0 (el bit correspondiente a la mscara), se ejecuta una operacin and del inverso de la mscara sobre el operando de destino. As pues, para forzar la escritura de un 0 necesitamos el inverso de la mscara, es decir, nos hace falta otra mscara con los bits en 0, si los bits de la mscara original eran 1, y los bits en 1, en caso de que los bits de la mscara original fuesen 0. Y, esto se consigue mediante la instruccin not. Tened en cuenta que al hacer la operacin and con 1 se mantienen los valores de los bits originales; y al hacerla con 0, se fuerza la escritura de un 0. En el ejemplo habis podido ver el mecanismo para la consulta de un bit a partir de la operacin lgica and, que modifica el operando de destino. El inconveniente de este mecanismo es que si slo nos interesa consultar el valor (sin modificarlo), primero hay que hacer una copia para que la modificacin se realice sobre la copia. Existe otra instruccin que permite realizar la misma consulta, pero sin modificar ningn operando: sta es la instruccin test. Su funcionamiento es el mismo que el de la instruccin and, excepto en el hecho de que no modifica el operando de destino. Por lo tanto, el mismo ejemplo se habra podido hacer de forma ms eficiente si se hubiera utilizado la instruccin test. Por otra parte, la instruccin xor hace la O exclusiva bit a bit entre los dos operandos especificados. Esta instruccin, adems de utilizarse para realizar la operacin lgica correspondiente, a menudo se utiliza para inicializar un registro en cero de la siguiente manera: xor reg, reg Apreciad que la O exclusiva de cualquier valor consigo mismo es siempre cero. Este mecanismo es ms eficiente que mover directamente un cero al registro, ya que el acceso a un operando registro es ms eficiente que el acceso a un operando constante.

11. LA PILA Nos podemos imaginar la pila como una estructura vertical: en la cual se puede insertar un dato encima, o bien de la cual podemos recuperar el dato que se haba insertado encima.

La pila es una zona auxiliar de memoria que sirve para guardar informacin de manera temporal. Por lo general se accede a la pila utilizando unas instrucciones especficas. El funcionamiento de la pila es parecido al de un conjunto de elementos colocados uno encima del otro en forma de pila (de aqu viene su nombre). En esta pila, se puede insertar un elemento encima, o se puede sacar su elemento de encima, tal y como podemos ver a

Fundamentos de Computadores Pg. 39

continuacin: Es importante que al representar una pila marquemos siempre la cima, puesto que de esta manera siempre sabremos dnde es "encima". Para insertar un dato en la cima de la pila, utilizaremos una instruccin llamada push. Asimismo, para extraer el dato que se encuentra en la cima de la pila, utilizaremos una instruccin llamada pop. De momento, vamos a ver que la finalidad de una pila es guardar de forma temporal el contenido de un registro que necesitamos para desarrollar otra tarea y as poder recuperar, ms adelante, el valor de este registro, o bien servir para guardar temporalmente cualquiera otro dato en un orden determinado. Una pila debe estar declarada en el segmento correspondiente para que se pueda llevar a cabo su utilizacin. De forma parecida a los segmentos de datos y cdigo, utilizamos la directiva .stack para hacer la declaracin. La declaracin de la pila se realiza mediante la directiva .stack seguida del tamao, en bytes, deseado para la pila. Es difcil saber con exactitud qu tamao debe tener la pila, as que se acostumbra a declarar un tamao lo bastante grande como para que no tengamos problemas. Por lo general, en nuestros programas, suele ser suficiente con un tamao de pila de 1.024 bytes. Prestad atencin al cdigo. Est formado por dos bucles, el primero sirve para recorrer los elementos del vector, en el que se utiliza el registro como registro ndice. Para inicializar el registro si en cero hemos utilizado la operacin lgica xor tal como hemos explicado. En general, siempre es mejor utilizar operandos registros que operandos constantes. Como siempre, recordad que si tenemos que recurrir a un vector de elementos de tamao word, el ndice debe verse incrementado en dos unidades. En el primer bucle del ejemplo hallamos colocados en la pila los elementos del vector mediante la instruccin push. Recordad que esta instruccin inserta el operando especificado en la cima de la pila. La instruccin push inserta un dato de 16 bits en la cima de la pila. El operando de esta instruccin tiene que ser, obligatoriamente, de tipo registro o variable de memoria. Dado que se han insertado los elementos del vector de forma ordenada, desde el primer elemento hasta el ltimo. En el segundo bucle se extraen de la pila los elementos del vector mediante la instruccin pop. Recordad que esta instruccin extrae el elemento de la cima de la pila y lo guarda sobre el operando especificado. La instruccin pop extrae un dato de 16 bits de la cima de la pila. As como en la instruccin push, el operando de esta instruccin tiene que ser obligatoriamente de tipo registro o variable de memoria. Dado que los elementos se han extrado igualmente de manera ordenada desde el primer elemento hasta el ltimo, al acabar el segundo bucle tendremos la pila vaca. No obstante, adems, el vector se habr invertido, ya que el primer elemento que se extrae fue el ltimo elemento insertado; el segundo elemento que se extrae fue el penltimo elemento insertado, y as sucesivamente para todos los elementos. De hecho, la pila es una zona de memoria que se gestiona de forma implcita con dos registros: ss y sp. Podemos considerar que el registro ss apunta estticamente al inicio de la zona de memoria que representa la pila, algo que en este curso vamos a pasar por alto. El registro sp apunta constantemente a la cima de la pila; por norma general, tampoco lo tocaremos directamente, aunque las instrucciones push y pop s lo modifican de forma implcita. Por ltimo, existe un tercer registro, el bp, relacionado con la pila, un registro que utilizaremos ms adelante para tareas de soporte a la pila.

12. SUBRUTINAS: LLAMADAS Y RETORNO Por lo general, en un programa existen tareas comunes (por ejemplo, escribir un mensaje por pantalla) que tienen que ejecutarse desde diferentes partes del programa, para lo cual contamos, bsicamente, con dos posibilidades:

Fundamentos de Computadores Pg. 40

Replicar el cdigo correspondiente (escribir el mensaje por pantalla) a cada parte del programa en el que queremos ejecutar la tarea. Definir una subrutina que escribe el mensaje y llamarla desde cada parte del programa en que nos interesa ejecutar la tarea.

El objetivo de este hito es conocer los mecanismos para declarar una subrutina en ensamblador, as como las instrucciones de llamada y retorno a la subrutina. En primer lugar definiremos qu es una subrutina. Una subrutina es un bloque de cdigo que desempea una tarea determinada. Este bloque de cdigo puede ser llamado desde diferentes partes del programa y, al finalizar, vuelve al lugar desde donde ha sido llamado. Las subrutinas, por diferentes motivos, son preferibles a la replicacin de cdigo. Por una parte, replicar cdigo implica hacer mayor el programa (diferentes copias del mismo cdigo); por otra, si se pretende modificar el comportamiento de este bloque de cdigo (porque existe un error o porque queremos mejorarlo) y el cdigo est replicado, entonces hay que modificar cada una de las copias del mencionado cdigo. De hecho, sin embargo, la principal ventaja de las subrutinas es que permiten un diseo modular del programa, hecho que facilita su diseo y comprensin. Veamos en el siguiente ejemplo un programa que llama tres veces a una subrutina. Esta subrutina escribe un mensaje por pantalla, as que, este programa escribe el mensaje tres veces por pantalla. Para poder llamar una subrutina, en primer lugar es necesario tener una pila declarada. El motivo de esto es que las subrutinas utilizan la pila de manera implcita, tal y como veremos ms adelante. Como siempre, el tamao de la pila tiene que ser lo suficientemente grande. Para llamar una subrutina se utiliza la instruccin call. Un llamamiento a una subrutina es parecido a una instruccin de salto con la diferencia de que, despus de ejecutar el cdigo correspondiente, se vuelve al punto en el que se ha llamado la subrutina. Fijaos en que el cdigo del ejemplo llama tres veces consecutivas a una subrutina con el nombre escribir. Para escribir una subrutina, sta tiene que encontrarse fuera de los lmites marcados por las macros STARTUPCODE y EXITCODE, tal y como vemos en el ejemplo. Apreciad el hecho de que la subrutina se identifica con una etiqueta que marca el punto de entrada a la subrutina. Cualquier subrutina acaba con la instruccin ret, que provoca un salto de retorno a la instruccin posterior a la que ha llamado la subrutina. La instruccin call se comporta, en apariencia, como una instruccin de salto hacia una etiqueta. La instruccin ret, sin embargo, se comporta como una instruccin de salto hacia la instruccin posterior a la que ha ejecutado el call, algo que conseguimos gracias a que la instruccin call, a diferencia de una instruccin de salto, guarda la direccin a la que tiene que volver: la direccin de retorno. Una tarea importantsima que conviene realizar al programar una subrutina es salvar los registros que utiliza la subrutina. Tal y como podis ver en el ejemplo, slo se salvan los registros que se modifican dentro de la subrutina; los registros se salvan en la pila. As pues, para salvar los registros utilizaremos la instruccin push y para restaurarlos, la instruccin pop. La subrutina del ejemplo escribe un mensaje determinado por la pantalla. Fijaos en cmo se salvan los registros ax y dx, que son los que se utilizan para ejecutar el cdigo correspondiente. Por lo tanto, el siguiente programa escribe tres veces el mensaje por la pantalla.

13. SUBRUTINAS: NO PARMETROS Y RETORNO DE RESULTADO En algunas ocasiones, puede sernos de inters el hecho de que el cdigo de la subrutina sea ejecutado sobre unos determinados valores de entrada; por ejemplo, una subrutina que escriba por pantalla un nmero

Fundamentos de Computadores Pg. 41

determinado. En este caso, hay que definir un mecanismo para poder pasar a la subrutina uno o varios parmetros. Asimismo, puede interesarnos que la subrutina devuelva un resultado tras su ejecucin; por ejemplo, una subrutina que sume dos nmeros determinados y que devuelva el resultado. En este caso, sera conveniente definir un mecanismo para el retorno del resultado. Una de las ventajas del diseo modular es que permite descomponer un programa en tareas independientes (las subrutinas), de manera que diferentes programadores se puedan repartir la implementacin de dichas tareas. En este caso, es corriente que un programador escriba un cdigo que llame a subrutinas escritas por otro programador. A una subrutina se le puede pasar cualquier nmero de parmetros. El mecanismo de paso de parmetros ms utilizado es el paso de parmetros por la pila, ya que permite pasar un nmero de parmetros en principio ilimitado. Pues bien, ste va a ser el mecanismo que utilizaremos en nuestros programas. Por otra parte, tambin existen muchas formas diferentes de devolver un resultado. A diferencia del paso de parmetros, por norma general las subrutinas devuelven un solo resultado. El mecanismo para el retorno del resultado que utilizaremos nosotros es el retorno de resultado por medio de un registro. En este ejemplo tenemos un programa que llama a una subrutina que devuelve como resultado la suma de dos nmeros que se han pasado como parmetros. El paso de parmetros a una subrutina se hace mediante la pila, lo cual significa que antes de llamar a una subrutina, hay que dejar los parmetros correspondientes en la pila. De esta manera, al ejecutarse la subrutina, los valores determinados de entrada sobre los que se ejecuta el cdigo de la subrutina se encuentran en la pila. En el ejemplo han aparecido destacadas en negrita las instrucciones de paso de parmetros y llamamiento de la subrutina. En este caso, se pasan como parmetro los valores de las variables de memoria nm1 y nm2. Recordad que, al llamar a una subrutina, la direccin de retorno queda guardada en la pila. As pues, el estado de la pila tras haber saltado a la subrutina es el que podemos ver en la figura. Fijaos en que los parmetros se deben pasar antes de llamar a la subrutina, puesto que, de lo contrario, se llamara a la subrutina sin haber puesto ningn valor en la pila y, al ejecutarse la subrutina, no encontrara los parmetros de entrada. Por ltimo, es importante tener en cuenta el orden en el que se ponen los parmetros en la pila, ya que la subrutina tiene que saber en qu posicin se hallan los parmetros. En este ejemplo, sin embargo, no es importante el orden, dado que la suma es conmutativa. Una vez se han pasado los parmetros y se ha llamado a la subrutina, sta tiene que poder acceder al valor de los parmetros para, de este modo, ejecutar el cdigo correspondiente; algo que se consigue mediante el registro bp. El registro bp es un registro base que se utiliza como registro auxiliar para la manipulacin de la pila. Y, puesto que es un registro base, se puede utilizar para acceder a una variable de memoria; en nuestro caso, servir para acceder a los parmetros de la pila. As pues, en una subrutina, en primer lugar se hace el enlace dinmico, que consiste en salvar el registro bp (que es un registro que se utiliza en la subrutina), y despus se apunta el bp en una posicin fija de la pila (por ejemplo, la posicin de la cima). Y esto podis verlo con las dos primeras instrucciones de la subrutina. Para deshacer el enlace dinmico, slo hay que restaurar el registro bp que se ha salvado al inicio de la subrutina.

Fundamentos de Computadores Pg. 42

Cuando ya tenemos el registro bp apuntando a una posicin fija de la subrutina, entonces podemos salvar los registros (tantos como sean necesarios, ya que este hecho no va a afectar a la posicin a la que el bp apunta). El estado de la pila es el que aparece reflejado en la figura. Tened en cuenta, por lo tanto, que los parmetros se ubican a partir de la posicin [bp + 4] en adelante. Conociendo la posicin inicial a partir de la que se encuentran los parmetros, el acceso se realizar mediante el uso del registro bp, tal y como muestran las instrucciones del ejemplo resaltadas en negrita: [bp + 4], corresponde al segundo parmetro (el valor 4), y [bp + 6], al primer parmetro (el valor 3).As pues, la subrutina accede a los dos operandos, los guarda en bx y cx, los suma y un registro devuelve el resultado obtenido. En general, es indiferente qu registro se utiliza para devolver el resultado; lo ms importante es que tanto al devolver el resultado (dentro de la subrutina), como al tratarlo (fuera de la subrutina) se utilice el mismo registro. El registro ax es el que se utiliza convencionalmente, de manera que nosotros tambin lo utilizaremos. Fijaos en que si hay que devolver el resultado por el registro ax, no es necesario salvar este registro dentro de la subrutina (y, por lo tanto, tampoco hay que restaurarlo ). Este hecho implicar que, cuando el programador llame a una subrutina que devuelve un resultado, en el registro ax ya no habr ningn valor importante. Por ltimo, al volver de la subrutina (una vez se ha ejecutado la instruccin ret que extrae la direccin de retorno de la pila) sera conveniente tratar el resultado y sacar los parmetros de la pila: Para tratar el resultado basta con saber que ste se halla en el registro ax, as que si nos interesa asignar el resultado a la variable de memoria nada, slo tenemos que ejecutar la instruccin mov que muestra el ejemplo. En cuanto a extraer los parmetros de la pila, es responsabilidad de quien pone los parmetros sacarlos ms adelante, algo que se puede hacer rpidamente si se suma la medida adecuada al registro sp. La mayor parte de los lenguajes de programacin en alto nivel permiten tener variables locales dentro de una subrutina, es decir, variables que se crean al activarse la subrutina y que se destruyen cuando sta acaba. Las variables locales son variables de memoria que ocupan de forma temporal un espacio en la pila, tal y como muestra la siguiente figura: Por lo tanto, la declaracin de la subrutina ser un cdigo parecido al siguiente: push bp mov bp, sp120 sub sp, N push ... push ... donde N es una constante igual al tamao que necesitan las variables locales. As pues, el acceso a las variables locales se realizar mediante el uso de [bp - x], mientras que el acceso a los parmetros se realizar utilizando [bp + x], donde x es, en ambos casos, el desplazamiento necesario para acceder a la variable deseada. Al acabar la subrutina, hay que liberar el espacio reservado para las variables locales, algo que podemos hacer rpidamente de la siguiente manera: pop ... pop ... mov sp, bp pop bp ret

Fundamentos de Computadores Pg. 43

14. SUBRUTINAS: PARAMETROS POR VALOR O POR REFERENCIA Otro recurso comn utilizado por los lenguajes de programacin en alto nivel al programar una subrutina es el paso de parmetros por referencia. El paso de parmetros por referencia consiste en pasar como parmetro una referencia (la direccin de memoria) a una variable que contiene el valor en lugar de pasar una copia de un valor. La diferencia entre pasar un parmetro por valor o por referencia consiste en que, en el segundo caso, el valor original de la variable se puede modificar. Los parmetros se pueden pasar por valor o por referencia. Se pasa un parmetro por valor cuando se pone en la pila una copia del valor de este parmetro. En tal caso, si el parmetro se modifica, tambin se modifica la copia, de manera que el valor original no se ve alterado. Se pasa un parmetro por referencia cuando la direccin de memoria de la variable que contiene el valor est colocada en la pila. En tal caso, si se modifica el contenido de la direccin de memoria que se ha pasado como parmetro, se modifica, tambin, la variable original. En general, se pasa un parmetro por valor cuando no interesa que el valor original cambie por la ejecucin de la subrutina; y se pasa un parmetro por referencia, cuando nos interesa que el valor original quede modificado por la ejecucin de la subrutina. Este ejemplo, igual que el ejemplo 12, realiza la suma de dos nmeros pasados como parmetros. Sin embargo, en este caso, en lugar de devolver el resultado por el registro ax, se devuelve mediante un tercer parmetro que se pasa por referencia. Como ya habis visto, el paso de parmetros por valor se realiza slo poniendo en la pila una copia del valor correspondiente mediante la instruccin push, tal y como muestran las dos primeras instrucciones marcadas en negrita. No obstante, para pasar un parmetro por referencia es necesario poner en la pila la direccin de la variable de memoria correspondiente. Para poner en la pila la direccin de una variable de memoria es necesario acceder primero a la direccin con la instruccin lea. Entonces ya se puede poner la direccin de la variable de memoria utilizando de la misma forma la instruccin push. Tras haber pasado los tres parmetros, el estado de la pila ser el que muestra la figura. Fijaos en que tendremos debajo la copia de los dos nmeros nm1 y nm2, a continuacin, la direccin de la variable de memoria nada y, por ltimo, hallaremos la direccin de retorno despus de ejecutar el call. Para acceder a los parmetros pasados por valor se utiliza igualmente el registro bp. Es necesario que tengamos cuidado a la hora de calcular el desplazamiento de los parmetros, ya que, a diferencia del ejemplo 12, existe un tercer parmetro (la direccin de la variable nada) entre nm2 y la direccin de retorno). Una vez calculada la suma, la subrutina del ejemplo guarda el resultado en el tercer parmetro pasado por referencia. Es decir, en la pila se encuentra la direccin de memoria en la que queremos escribir. Para acceder a la misma, utilizamos el registro base bx, que permite escribir en una variable de memoria inicialmente desconocida (la que haya en la pila). As pues, ponemos la direccin correspondiente en el registro

Fundamentos de Computadores Pg. 44

bx y escribimos en la posicin de memoria a la que apunta bx, es decir, a la variable nada. Aqu la subrutina no devuelve ningn resultado por el registro ax. En consecuencia, si se utiliza este registro dentro de la subrutina, primero ser necesario salvarlo y restaurarlo al final de la subrutina. El hecho de que la subrutina devuelva o no resultado no depende de si existe algn parmetro pasado por referencia, puesto que en este caso ha sido casualidad. Fijaos, por ejemplo, en el cdigo del ejemplo 11 en el que no hay parmetro alguno (ni por valor ni por referencia), y tampoco devuelve ningn resultado. Y ya para acabar, recordad que, al volver de la subrutina, tenemos que sacar los parmetros que han sido colocados de antemano en la pila. Esta operacin podemos hacerla fcilmente sumando a sp el tamao que ocupan los parmetros (en este caso, 6 bytes). Fijaos en que no es necesario recuperar el resultado, ya que al volver de la subrutina el resultado ya est en la variable de memoria nada. Un parmetro pasado por referencia sirve, por lo general, para pasar la direccin de una variable de memoria que nos interesa poder modificar dentro de la subrutina; aunque, tambin sirve para pasar un vector como parmetro. As pues, cuando estemos interesados en pasar un vector como parmetro, ste ser pasado por referencia; esto es, se pondr en la pila la direccin del primer elemento del vector. Para acceder a los elementos del vector, se puede hacer de dos formas: con el registro bx, apuntando al inicio del vector, y con el registro si, especificando el desplazamiento correspondiente. Por ltimo, recordad que tanto el operando de origen como el operando de destino siempre deben tener el mismo tamao. Cuando se utilizan registros o variables de memoria declaradas en el segmento de datos, se puede saber el tamao del operando segn el nombre del registro o la declaracin de la variable en el segmento de datos. Cuando se accede a la direccin de una variable que no conocemos a priori, sin embargo, puede suceder que no est claro el tamao de los operandos. Por ejemplo, si se especifica la siguiente instruccin: mov [bx + si], al est claro que el tamao de los operandos es 8 bits, dado que el registro al es un registro de 8 bits. Sin embargo, si se especifica la siguiente instruccin: mov [bx + si], 0 entonces, no est claro si la direccin [bx + si] hace referencia a una variable de 8 bits o a una de 16 bits. En este caso, al ensamblar el cdigo, el mismo ensamblador detecta la posible confusin y da el mensaje que encontramos a continuacin: *Warning* fitxer.asm(...) Argument needs type override Es decir, es preciso que est especificado el tipo del argumento (el operando). En este caso, se pueden utilizar los siguientes modificadores: mov byte ptr [bx + si], 0 mov word ptr [bx + si], 0 para informar de que la variable de memoria es una variable de 8 bits o 16 bits.

Fundamentos de Computadores Pg. 45

15. INSTRUCCIONES DE SOPORTE AL SISTEMA DE E/S Los dispositivos perifricos son manipulados mediante lecturas y/o escrituras en los registros del correspondiente controlador. Estos registros pueden estar guardados en memoria, como es el caso de la pantalla, o bien en el espacio de direcciones de entrada/salida. Para acceder a registros guardados en memoria, se utilizan las instrucciones normales de acceso a memoria que hemos visto hasta ahora; pero, para acceder a registros guardados en el espacio de direcciones de entrada/salida, el lenguaje de ensamblador del i8086 proporciona unas instrucciones especficas. Veamos ahora un programa en el que se capturan 10 movimientos de las teclas: make o break. En cada caso, se escribe por pantalla un mensaje que indica el suceso acaecido. Despus de escribir el mensaje en el que se pide que se pulsen las teclas, hallamos un bucle principal con un contador de 10 iteraciones. Para la construccin de este programa, dado que no existe ninguna subrutina, no se declara la pila. Al pulsar o soltar una tecla, se pone en 1 el bit cero del registro de estado del controlador de teclado y la encuesta finaliza. En este momento, la siguiente accin que tenemos que realizar ser comprobar el motivo de esta accin: se ha pulsado la tecla (make) o se ha dejado la tecla (break). El registro que contiene informacin acerca de este hecho es el registro de datos del controlador de teclado. El bit 7 de este registro indica que la tecla ha sido pulsada (bit7 = 0) o bien que la tecla ha sido soltada (bit7 = 1). Los restantes 7 bits (del 0 al 6) codifican la tecla que se ha pulsado (o soltado). Para comprobar si es un make o un break, leemos el registro de datos (direccin 60h) mediante la instruccin in y utilizamos la mscara 80h que permite aislar el valor del bit 7. Si este bit vale 0, es un make; de lo contrario, es un break. Antes de continuar con el anlisis del cdigo, es importante que conozcamos el funcionamiento de los registros del controlador del teclado. En concreto, nos interesa gestionar dos registros: el registro de estado y el registro de datos, ambos de 8 bits, que se encuentran en las direcciones 64h y 60h, respectivamente, del espacio de direccionamiento de entrada/salida.

Los bits que nos interesan de estos registros son los siguientes: Cuando el bit 0 del registro de estado vale 1, esto indica que se ha tocado alguna tecla. Al leer del registro de datos, este bit se pone de forma automtica en cero. Cuando se ha tocado una tecla, el bit 7 del registro de datos vale 0, si sta ha sido pulsada (make), o 1, si ha sido liberada (break). Una vez tenemos claro el funcionamiento de los registros del controlador del teclado, podemos implementar el acceso al teclado mediante encuesta. El acceso mediante encuesta consiste en leer de forma constante el registro de estado del controlador del dispositivo hasta que detectamos que ha ocurrido un acontecimiento determinado. Por ltimo, podis observar en el ejemplo que, dependiendo de si se pulsa una tecla o se suelta, el registro dx ser inicializado con la direccin del mensaje que nos interesa escribir: <make> o <break>. A continuacin, y antes de acabar el bucle, se escribe el mensaje correspondiente. Este ejemplo detecta los 10 primeros acontecimientos. As pues, si queris que detecte cinco veces que se pulsa y se suelta una tecla, es necesario pulsarla rpidamente para que, de este modo, no se generen repeticiones de la tecla.

Fundamentos de Computadores Pg. 46

Las instrucciones in y out El acceso en ensamblador a los registros guardados en el espacio de entrada/salida se realiza mediante las instrucciones in y out. Estas instrucciones se pueden utilizar de la siguiente manera: in al, [xxh], para leer un valor de 8 bits. in ax, [xxh], para leer un valor de 16 bits. Podemos utilizar esta modalidad para direcciones entre la 000h y la 0 ffh del espacio de entrada/salida. Si la direccin es superior, entonces hay que utilizar el registro dx para especificarla: in al, dx, para leer un valor de 8 bits. in ax, dx, para leer un valor de 16 bits. De manera similar, para escribir un registro del espacio de direccionamiento de entrada/salida: out out out out [xxh], al, para escribir un valor de 8 bits. [xxh], ax, para escribir un valor de 16 bits. dx, al, para escribir un valor de 8 bits en direcciones > 255. dx, ax, para escribir un valor de 16 bits a direcciones > 255.

El registro de datos del controlador de teclado Tal y como hemos visto, el registro de datos del controlador de teclado codifica la tecla pulsada en los siete bits de menor peso. La codificacin de este registro no se corresponde con el cdigo ASCII de la tecla, ya que el teclado tiene que codificar teclas especiales que no aparecen en el cdigo ASCII (por ejemplo, las teclas F1, F2, ..., Shift, Intro, Ctrl, Alt, etc.). El controlador de teclado define el cdigo de rastreo, y este cdigo codifica la posicin que ocupa la tecla en el teclado. Por consiguiente, para las siguientes teclas tenemos los cdigos: cdigo 1: tecla <ESC> cdigo 2: tecla <1> cdigo 3: tecla <2> ... cdigo 16: tecla <q> cdigo 17: tecla <w> cdigo 18: tecla <e> cdigo 19: tecla <r> cdigo 20: tecla <t> ... Para pasar del cdigo de rastreo al cdigo ASCII, se acostumbra a definir un vector que contenga en cada posicin correspondiente al cdigo de rastreo el cdigo ASCII de la tecla asociada. Es decir, el vector: traduccion db - 1,-1,'1234567890',-1,-1,-1,-1,'qwertyuiop'... De manera que, dado un cdigo de rastreo C, el valor traduccin[C] corresponde al cdigo ASCII de la tecla asociada al cdigo de rastreo C, o bien -1, si la tecla en cuestin no tiene cdigo ASCII asociado. En el caso del controlador del teclado, el acontecimiento que nos interesa detectar es que se pulsa una tecla. En el ejemplo podis ver cmo se lee del registro de la direccin 64h del espacio de direccionamiento de entrada/salida mediante la instruccin in. A continuacin, se compara el bit cero del valor ledo con la mscara de bits 01h para, de este modo, aislar el bit cero. Mientras este bit sea 0, el cdigo salta de nuevo a la instruccin que lee el registro de estado. Fijaos, tambin, en que la etiqueta encuesta es utilizada tanto por el bucle que cuenta 10 iteraciones, como por el bucle que implementa la encuesta. Este hecho no va a suponer ningn problema desde el punto de vista del lenguaje de ensamblador.

Fundamentos de Computadores Pg. 47

16. RUTINAS DE ATENCIN A LOS PERIFRICOS Los dispositivos perifricos leen o escriben informacin en el mundo exterior de manera asncrona con respecto a la ejecucin de las instrucciones por parte del procesador. Es decir, un usuario pulsa las teclas sin tener que sincronizarse para ello con el reloj del procesador. Con el fin de acceder a esta informacin, el procesador se tiene que sincronizar con el controlador de los dispositivos perifricos. En este tema 16 se repasarn las tcnicas de sincronizacin con los controladores de los dispositivos perifricos. El objetivo es que aprendis a implementar en ensamblador las rutinas de atencin a la interrupcin de los dispositivos perifricos. Existen dos tcnicas bsicas que permiten la sincronizacin entre el procesador y los controladores de los dispositivos de entrada/salida, la sincronizacin por encuesta y la sincronizacin por interrupcin. La sincronizacin por encuesta es una tcnica que consulta de forma activa el registro de estado del controlador (por lo general registrado en el espacio de direccionamiento de entrada/salida) hasta que detecta que se ha producido un acontecimiento (por ejemplo, se pulsa una tecla). La sincronizacin por interrupcin es un mecanismo del procesador que permite que ste pueda ejecutar cualquier cdigo y que, al producirse un acontecimiento (por ejemplo, se pulse una tecla), se ejecute una rutina de atencin a la interrupcin que alcance este acontecimiento. Para asociar una rutina a la interrupcin de un dispositivo perifrico disponemos del vector de interrupciones. Este vector est situado al principio de la memoria (a partir de la direccin 0) que contiene la direccin de una rutina asociada, a su vez, a cada dispositivo. Cuando se produce una interrupcin, se ejecuta la rutina asociada al correspondiente dispositivo. Por lo tanto, si queremos que se ejecute una rutina determinada al producirse la interrupcin de un dispositivo, slo es necesario que pongamos la direccin de la rutina en cuestin en la posicin correspondiente del vector de interrupciones. Una rutina de atencin a la interrupcin es una rutina cualquiera, como las que hemos visto hasta ahora, pero con dos particularidades: Al acabar, el controlador de interrupciones debe informar de que ya ha finalizado, algo que hay que hacer escribiendo el cdigo EOI (End Of Interruption, 'final de interrupcin') en el registro de control del controlador de interrupciones. En vez de utilizar la instruccin habitual de retorno, hay que utilizar IRET (retorno de una interrupcin). Fijaos en que una rutina de atencin a la interrupcin se puede ejecutar en cualquier momento, de forma independiente de la ejecucin de nuestro programa. Por lo tanto, es difcil que podamos pasar parmetros desde nuestro programa, ya que no sabemos en qu momento se llevar a cabo la ejecucin de la rutina. Antes de programar la rutina de atencin a la interrupcin de un dispositivo perifrico, tenemos que saber qu posicin del vector de interrupciones ocupa este dispositivo. El teclado ocupa la posicin 9. El vector de interrupciones est situado en memoria a partir de la direccin fsica cero, y cada direccin de una rutina de atencin a la interrupcin ocupa 4 bytes.

Fundamentos de Computadores Pg. 48

Por lo tanto, la rutina de atencin a la interrupcin del teclado estar situada a partir de la direccin 36. Para que se ejecute una determinada rutina cuando haya interrupcin del teclado, slo es necesario que se ponga la direccin de esta rutina a partir de la direccin 36 de la memoria; aunque, de forma previa, ser necesario guardar la direccin de la rutina que haya en aquella posicin y restaurarla antes de acabar nuestro programa. Para acceder a las direcciones de nuestro programa, ponemos la direccin entre corchetes, tal y como hemos visto hasta ahora; y, para acceder a direcciones fuera del espacio de direccionamiento de nuestro programa, sin embargo, utilizaremos de forma adicional unos registros de propsito especfico llamados registros de segmento. Existen cuatro registros de segmento, llamados cs, ds, es y ss, de los cuales utilizaremos slo el registro es para acceder a direcciones fuera de los lmites de nuestro programa. Los otros registros tienen un uso muy determinado, y no los tenemos que manipular explcitamente. En el ejemplo podis ver que se utiliza el registro es para generar la direccin cero y salvar la direccin de la rutina que hay a partir de la direccin 36 de memoria: xor ax, ax mov es, ax ; ponemos cero en el registro es push es:[36] ; salvamos los dos primeros bytes push es:[38] ; salvamos los dos bytes restantes Asimismo, se utiliza este registro para poner la direccin de nuestra rutina a partir de la direccin 36 de memoria: lea ax, [RAIteclado] ; tomamos la direccin de la rutina mov es:[36], ax ; ponemos la direccin mov es:[38], cs ; ponemos el segmento Fijaos en que primero ponemos la direccin de la rutina en el registro ax y despus la ponemos en la posicin 36 de memoria. A continuacin completamos la direccin (de 4 bytes) para que la rutina pueda ser ejecutada desde fuera de nuestro programa. Para ello, utilizaremos el registro cs. En este curso no entraremos en detalles sobre el uso de los registros de segmento. Pero lo que s debemos tener claro es que hay que modificar el vector de interrupciones y la manera de llevar a cabo dicha modificacin. Por ltimo, fijaos en las instrucciones cli y sti, que sirven para inhibir interrupciones y desinhibir interrupciones, respectivamente, y es conveniente ponerlas antes y despus de modificar el vector de interrupciones, puesto que, de lo contrario, si por casualidad se recibe una interrupcin de teclado cuando slo se ha modificado la mitad de la direccin (los 2 primers bytes), se saltara a una posicin aleatoria de memoria y seguramente el programa se quedara colgado Una vez modificado el vector de interrupciones (despus de haber salvado el valor original), ya podemos escribir el programa. En este ejemplo, tras escribir un mensaje, tenemos una espera activa: mientras la variable numTeclas sea menor que 10, nos esperamos. Atended al hecho de que si el programa contuviera slo este cdigo, se quedara permanentemente bloqueado. Sin embargo, en realidad existe otro fragmento de cdigo que se ejecuta de forma concurrente con ste: la rutina de atencin a la interrupcin del teclado Raiteclado. Cada vez que se pulse una tecla, la ejecucin del bucle de espera activa se detendr y se ejecutar la rutina de atencin a la interrupcin. En esta rutina, podemos hacer lo que queramos: por ejemplo, incrementar el nmero de acontecimientos de teclado nmTeclas. La rutina de atencin a la interrupcin es una subrutina normal y corriente que puede desarrollar cualquier tarea (por lo general relacionada con la gestin del dispositivo que ocasiona la interrupcin). En nuestro ejemplo, la subrutina salva y restaura los registros, escribe un mensaje segn la tecla pulsada, e incrementa el nmero de acontecimientos detectados relacionados con el teclado. Ahora bien, tal y como podemos ver en el cdigo, existen dos particularidades en las rutinas de atencin a la interrupcin: Por una parte, hay que poner el valor 20 h en el registro del espacio de entrada/salida 20 h para generar la seal de final de interrupcin (End Of Interruption): mov al, 20 h out [20 h], al Por otra, al volver de la subrutina se debe utilizar la instruccin iret (interruption return), en lugar de la instruccin ret. Por ltimo, tenemos que comentar que antes de acabar el programa, si queremos que el teclado funcione tal y como funcionaba antes de ejecutar el programa, se tienen que restaurar los valores originales de la rutina de atencin a la interrupcin en el teclado (que habamos salvado con anterioridad) en el vector de interrupciones.

Fundamentos de Computadores Pg. 49

Si el registro es no se ha modificado y todava mantiene el valor 0, restauramos directamente los valores salvados en la pila y los ponemos en el vector de interrupciones en las posiciones correspondientes: pop es:[38] pop es:[36] Igual que al modificar el vector de interrupciones al inicio del programa, es necesario restaurarlo inhibiendo con anterioridad las interrupciones y desinhibindolas ms adelante, mediante el uso de las instrucciones cli y sti. En este curso gestionaremos slo dos dispositivos: el teclado y el reloj. La gestin del teclado ya la hemos visto en los dos ltimos hitos, por lo tanto, nos falta conocer el dispositivo reloj. El reloj es un dispositivo muy sencillo que permite medir el tiempo. Genera de manera fija unas 18 interrupciones por segundo y, por lo tanto, para medir el tiempo tiene que ir contabilizndose el nmero de interrupciones que lleva generadas. Cada 18 interrupciones contabilizadas implica que ha pasado un segundo. El reloj trabaja siempre por interrupcin, y la rutina de atencin a la interrupcin del reloj est en la posicin 8 del vector de interrupciones. No dispone de ningn registro de datos ni de control, as que su gestin se limita a poner en el vector de interrupciones la rutina de atencin en la interrupcin adecuada.

Registros en el i8086 Los registros del i8086 son todos de 16 bits, aunque en algunos se puede acceder por separado a la parte baja (8 bits) y a la alta (8 bits). Existen cuatro registros de uso general, que son los que tenemos ocasin de ver en la siguiente figura: Como podis comprobar, los registros ax, bx, cx y dx son de 16 bits, pero se puede acceder slo a los 8 bits de ms o menos peso (por ejemplo, el registro ah contiene los 8 bits de ms peso del registro ax, y el registro al, los 8 bits de menos peso del registro ax). A pesar de que estos registros son de propsito general, veremos que el registro ax y el dx se suelen utilizar para algunas tareas predeterminadas, que bx es utilizado para guardar en l direcciones de memoria, y que cx se utiliza como contador. Asimismo, son registros muy utilizados el registro si y el di. Estos registros, siempre de 16 bits, se pueden utilizar como registros de propsito general, aunque, por norma general, sern usados como registros ndice. Otros registros que vamos a utilizar son los registros con un uso ms dependiente; esto es, el registro bp y el registro sp. Los mencionados registros sirven para gestionar un bloque de memoria llamado pila, aunque no los utilizaremos ahora, sino ms adelante. Por ltimo, hay otros cuatro registros de segmento (cs, ds, es, ss) que sirven para gestionar las direcciones de memoria. En esta asignatura, no veremos el uso de estos registros, excepto el registro es, que utilizaremos al finalizar el mdulo para una tarea muy concreta.

Montse Peiron Gurdia, Antonio Jos Velasco Gonzlez, Jordi Carrabina Bordoll, Fermn Snchez Carracedo, Anna M. del Corral Gonzlez, Enric Pastor Llorens, Pedro de Miguel Anasagasti Febrero 2002

Fundamentos de computadores I

Texto elaborado a partir de:

Arquitectura de computadores
TEMA 1 RENDIMIENTO DE LOS COMPUTADORES

Tema 1 Rendimiento de los computadores 1. Necesidad de evaluar el rendimiento 2. Figuras de mrito 3. Programas para evaluar el rendimiento 4. La ley de Amdahl

1. NECESIDAD DE EVALUAR EL RENDIMIENTO Hay distintos tipos de personas que ven necesario evaluar el rendimiento de un computador: Ingenieros: Se necesita alguna herramienta o medida que permita decidirnos por mltiples alternativos de disea, eligiendo la ms adecuada en cada momento. Fabricantes y vendedores: Deben poder comparar y diferenciar su producto del de la competencia. Compradores: Necesitan algn mecanismo que ayude a decidirse entre los distintos computadores en el mercado. Hay, no obstante, que hacer dos reflexiones: Cuando compramos un ordenador, nos llevamos el sistema completo as que debemos evaluar no solo el procesador, sino tambin la memoria, sistema operativo, compiladores Los resultados de una evaluacin tienen que ser reproducibles y presentar claramente los datos obtenidos para poder volver a llevar a cabo esa evaluacin en ese u otro ordenador y as poder compararlos entre s.

2. FIGURAS DE MRITO Las medidas que nos ayudan a evaluar el rendimiento de manera cuantitativa son las llamadas figuras de mrito, y son tres principalmente: el tiempo, los MIPS y los MFLOPS.
Formulaciones Tciclo= 1/frecuencia TUCP=ciclosUCP Tciclo

ciclos UCP frecuencia ciclos UCP CPI= N 1 N IPC = CPI ciclos UCP
TUCP=

El tiempo es la mejor medida que se puede utilizar, dado que es consistente y real para comparar el rendimiento de dos ordenadores, tanto si medimos el tiempo de respuesta (el tiempo que tarda una aplicacin desde que empieza hasta que acaba) como si es la productividad (la cantidad de tareas ejecutadas en un espacio de tiempo determinado). Habitualmente trabajaremos con el tiempo de UCP (T UCP) que incluye el tiempo que tarda la mquina en ejecutar cdigo de usuario ms el tiempo en ejecutar cdigo del sistema operativo, ya que la frontera entre ambos es muy diluida. Por otro lado este tiempo debe poder relacionarse con algn parmetro fsico del computador, y este parmetro es la frecuencia. As que un ordenador tenga una frecuencia de 200 MHz, significa que tiene un reloj interno de 200 millones de ciclos por segundo, como el tiempo de ciclo es inverso a la frecuencia, el tiempo de ciclo es de 5 ns (es decir 510-9 segundos). Es habitual presentar el tiempo de UCP en funcin de los ciclos de reloj, y si adems furamos capaces de calcular el nmero de instrucciones ejecutadas (N), podriamos obtener el nmero medio de ciclos por instruccin (CPI); tambin se puede utilizar justamente el inverso del CPI, es decir el IPC que es el nmero de instrucciones ejecutadas por ciclo; al final podemos reescribir la frmula inicial como sigue a continuacin: TUCP = ciclosUCP TCICLO = N

ciclosUCP TCICLO =N CPI TCICLO N

Donde N es el nmero de instrucciones a ejecutar, CPI es el nmero medio de ciclos por instruccin y TCICLO es la inversa de la frecuencia del ordenador.

2 Arquitectura de computadores

De esta ecuacin se desprendes 3 posibles opciones para optimizar un procesador: Reducir (N) el nmero de instrucciones del programa, lo que se relaciona con la arquitectura del nivel de lenguaje mquina y la compilacin. Reducir (CPI) el nmero medio de ciclos por instruccin, que depende de la arquitectura del nivel de lenguaje mquina y de la organizacin del procesador. Reducir (TCICLO) el tiempo del ciclo del procesador, asociado este cambio a la tecnologa de hardware y la organizacin del procesador. Otra medida son los MIPS, o millones de instrucciones de lenguaje mquina ejecutados por segundo. Como observamos en las frmulas laterales, equivale al nmero de instrucciones ejecutadas dividido por el tiempo empleado en realizarlas y dividido por 1 milln. Tambin equivale a la frecuencia dividido por el nmero medio de ciclos por instruccin. La ventaja de esta medida es que es sencilla de asimilar, pero depende del juego de instrucciones, lo que dificulta comparar mquinas diferentes; vara en funcin de los programas que se ejecutan. Hace tiempo los fabricantes y vendedores cuando utilizaban esta figura de mrito realmente utilizaban los MIPS de pico, es decir, una velocidad que seguro nunca alcanzarn los procesadores en una aplicacin real pues consideraban los recursos ideales: memoria ideal (siempre disponible), instrucciones distribuidas homogneamente en todas las unidades funcionales trabajando siempre al mximo de rendimiento, etc. Los MFLOPS son los millones de operaciones de coma flotante ejecutadas por segundo; la definicin es prcticamente igual que los MIPS pero utilizando nicamente las operaciones en coma flotante; esto hace que un programa que no tenga ninguna operacin en coma flotante tenga un MFLOPS de 0, que dependa mucho del programa y del juego de instrucciones. En cambio los MFLOPS permiten comparar mquinas diferentes porque el nmero de operaciones de coma flotante es constante y viene determinado por el programa que quiera resolverse, no vara segn la mquina en la que se ejecute el programa. Tambin se ha utilizado los MFLOPS de pico que corresponde a la suma de los MFLOPS de pico que puede obtener cada una de las unidades funcionales del procesador trabajando al mximo rendimiento posible, circunstancia que es imposible que se de nunca en el trabajo habitual del procesador.
MIPS MIPS =

N TUCP 6 10

MIPS =

frecuencia CPI 6 10

MFLOPS MFLOPS =

N COMAflo tan te TUCP 6 10

3. PROGRAMAS PARA EVALUAR EL RENDIMIENTO Para evaluar el rendimiento de un computador se utilizan una serie de programas estndar (benchmarks) que pretenden simular situaciones de uso cotidiano. Los programas sintticos son programas de tamao moderado que intentan simular un entorno de trabajo con una carga de trabajo tambin determinada. El problema es que al tratarse de pequeos programas son fciles de manipular, as un fabricante dedicar esfuerzo y dinero a hacer que sus mquinas ejecuten estos programas sintticos de manera muy efectiva utilizando diferentes estrategias de optimizacin que, en cualquier caso, no se podrn aplicar despus a los programas reales que son los que en realidad nos interesan. Los programas de juguete son programas pequeos de entre 10 y 100 lneas de cdigo y de los cuales se conoce el resultado a priori. Hoy da son muy poco utilizados. Los ncleos son pequeos fragmentos de cdigo extrados de aplicaciones reales que slo se ejecutan para evaluar el rendimiento de un computador. Las aplicaciones reales son la solucin ms utilizada hoy en da, y son aplicaciones que pueden ejecutarse en cualquier plataforma y sistema operativo sin

Arquitectura de computadores 3

hacer modificaciones y siendo por tanto, ms objetivo su resultado. El problema se centra en decidir qu aplicaciones se utilizan y para ello se cre en el ao 988 un el SPEC (Standar Performance Evaluation Corporation) que define un conjunto de programas de test realista y estandarizado. Actualmente se utiliza el SPEC95 que, debido a la velocidad de los microprocesadores actuales, debe ser pronto cambiada. Lo interesante del SPEC95 es que evala no solo el procesador, sino el computador completo y obliga a incluir en los resultados las caractersticas siguientes con respecto al hardware y software: tipo de procesador y frecuencia, tipo de coprocesador, caractersticas de las memorias cach, tamao de la memoria principal, tipos de dispositivos de entrada/salida utilizados, tipo y versin del sistema operativo, tipo de compilador y versin, tipo de sistema de ficheros y las opciones de compilacin utilizadas.

4 Arquitectura de computadores

TEMA 2 INTRODUCCIN A LA SEGMENTACIN

1. MEJORAS EN EL RENDIMIENTO DE LOS MICROPROCESADORES Ya hemos visto en el tema anterior, que el tiempo de ejecucin de una aplicacin depende de la siguiente expresin: TUCP =N CPI TCICLO, por tanto, depende del nmero de instrucciones a ejecutar (N), el nmero medio de ciclos por instruccin (CPI) y del tiempo de ciclo del reloj (TCICLO). Si conseguimos reducir cualquier trmino o combinacin de trminos de la anterior ecuacin, el tiempo de ejecucin se reducir, y se puede llevar a cabo mediante: El algoritmo: Hay que resolver el problema de forma ms rpida, por tanto mejorando el compilador para generar un cdigo ms eficiente, reduciremos el nmero de instrucciones (N) y/o el CPI, de forma general reduciremos el producto NCPI. La arquitectura: Se pueden hacer cambios en el juego de instrucciones del procesador (arquitectura) que genera mejoras en N, o cambios en cmo se ejecutan las instrucciones de lenguaje mquina (microarquitectura) que genera mejoras en CPI y TCICLO. La tecnologa: Las nuevas tcnicas de fabricacin de semiconductores se traduce directamente en reducciones del TCICLO e indirectamente del CPI. Diseo de mquinas especficas: Es una mejora no contemplada hoy en da y consiste en fabricar ordenadores para cumplir trabajos especficos. El coste de investigacin ms desarrollo se tiene que repartir entre pocas mquinas por lo que se eleva excesivamente.

Tema 2 Introduccin a la segmentacin 1. Mejoras en el rendimiento de los microprocesadores 2. Paralelismo a nivel de instruccin 3. Evolucin conjunta de la tecnologa y la arquitectura

Obviamente, la mayor mejora sucede cuando interaccionan la tecnologa y la arquitectura, especialmente la disminucin en la escala de integracin, que implica que los dispositivos sean ms rpidos al tener que recorrer los electrones menor distancia, y que puedan integrarse ms dispositivos en una misma superficie.

2. PARALELISMO A NIVEL DE INSTRUCCIN Cuando varias instrucciones de un mismo cdigo, pueden ejecutarse en cualquier orden sin que se modifique el resultado final, varias de ellas podran hacerse al mismo tiempo, y existe lo que llamamos paralelismo a nivel de instruccin. Para aprovechar este paralelismo existen dos mtodos: La segmentacin y la multiplicacin. La segmentacin es la misma idea que encierra una cadena de montaje en una fbrica. Para montar un coche se descompone su montaje en etapas independientes, hasta pasar por la ltima en la que se obtiene el vehculo montado. Realmente un coche debe pasar por todas las etapas lo que supone el mismo tiempo en montarlo, pero cuando el coche ya est montado hay varios ms ya con estas etapas iniciadas, vamos, tantos como etapas hayamos dividido, por lo que finalmente el proceso es ms rpido; claro, ms rpido siempre y cuando queremos montar ms de un vehculo. As es posible aplicar la segmentacin de dos formas distintas: Segmentacin en la funcin de un microprocesador: Se descompone una funcin en otras ms sencillas llamadas etapas; se separan estas etapas en registros para evitar que el resultado de una etapa afecte a las dems; se determina el orden en que deben recorrerse estas etapas; se conecta la salida de una etapa con la entrada de la siguiente, y se aade una seal de reloj que

Arquitectura de computadores 5

Segmentacin de una funcin Ts= (n+B) (R + Ts) n = nmero de operaciones B = Bits R = Retardo en unidades de t. Ts = Retraso introducido

Segmentacin del proceso de ejecucin de las instrucc. TCICLO= Max( Tr) + Tr TS= (n + K) TCICLO

indica en qu momento el resultado de todas las etapas se copia a las siguientes. Para que esta funcin de segmentacin sea realmente til, la funcin a segmentar tiene que ser muy utilizada, ya que la segmentacin tiene un coste que se suma al resultado final; y adems la funcin tiene que tener evaluaciones independientes, como la segmentacin inicia la ejecucin de instrucciones antes de que otras hayan terminado, el resultado de las anteriores no debe afectar a las siguientes. El tiempo que se tarda en realizar una operacin con segmentacin lo podemos ver en la figura lateral. Segmentacin del proceso de ejecucin de las instrucciones: Las instrucciones segmentadas se van realizando en lnea paralelamente, para ejecutar ms instrucciones por unidad de tiempo; as aunque el resultado final de procesar una instruccin tiene el mismo coste, al haber efectuado finalmente ms instrucciones, el coste por instruccin disminuye. As, en esta ocasin, el tiempo de ciclo del procesador, es igual al tiempo de clculo de la etapa ms lenta, ms el tiempo de retardo introducido por un registro. Y por ello el tiempo para hacer n operacione segmentadas ser el nmero de operaciones (n) ms el nmero de etapas (K) por el tiempo de ciclo.

La multiplicacin consiste en aprovechar que hay paralelismo a nivel de instruccin para iniciar la ejecucin de ms de una instruccin en un mismo ciclo. El objetivo es conseguir un CPI<1 sin aumentar el tiempo de ciclo del procesador. Para aplicar esta tcnica solo hay que multiplicar los recursos (unidades funcionales, procesador, etc). As para optimizar por ejemplo la suma de naturales, si queremos ir 4 veces ms rpido, sumaremos as 4 procesadores. Aunque cada una de las sumas tarda el mismo tiempo en hacerse que sin la multiplicacin, puede haber 4 sumas hacindose al mismo tiempo. Para que esta tcnica sea efectiva debe llevarse a cabo en operaciones que se hagan con mucha frecuencia (de lo contrario no tiene sentido) y adems deben ser independientes entre ellas. Por tanto, las condiciones son iguales que en la segmentacin, pero la multiplicacin es mucho ms cara de aplicar. As para segmentar el sumador en cuatro etapas, solo hace falta aadir 4 registros de segmentacin, mientras que para hacer lo mismo con la multiplicacin, hay que aadir 4 sumadores completos. Las dos tcnicas pueden combinarse, as que el mximo rendimiento se obtiene aplicando al mismo tiempo la segmentacin y la multiplicacin.

3. EVOLUCIN CONJUNTA DE LA TECNOLOGA Y LA ARQUITECTURA Cronolgicamente a lo largo del tiempo, la tecnologa y la arquitectura de los procesadores han ido evolucionando paralelamente en la siguiente forma de ejecutar las instrucciones: Secuencial: Una instruccin, un ciclo de procesador; y para garantizar que todas las instrucciones se ejecutan de manera correcta, el tiempo de ciclo tiene que ser mayor o igual al tiempo necesario para ejecutar la ms lenta de todas las instrucciones. Secuencial multiciclo: Cada instruccin solo para por las fases que necesita, y el tiempo de ciclo es el de la fase de instrucciones que tarda ms en ejecutarse. Aun as, cada instruccin tarda ms de un ciclo en ejecutarse. Segmentada: Se aplica la tcnica de segmentacin al proceso de ejecucin de instrucciones; cada una de las fases de ejecucin est aislada de las vecinas mediante registros pasa a ser una etapa del procesador. En el cado ideal, se desarrollar una instruccin por ciclo. Segmentada limitada por la bsqueda de instrucciones y datos: Como la tecnologa en la fabricacin de procesadores avanza, el cuello de botella se encuentra en el tiempo que tarda la memoria en la bsqueda de datos. Como el tiempo de ciclo es muy grande, se desarrollaron arquitecturas CISC, as como ir a la memoria a buscar datos es muy lento, se procura que cada instruccin

6 Arquitectura de computadores

haga mucho trabajo para mantener ocupado el procesador durante la fase de ejecucin. Como las instrucciones tienen mucha semntica, se necesitan menos para hacer el mismo trabajo. Segmentada RISC: La mejora de la tecnologa permiti aadir una memoria cach en el microprocesador y la bsqueda de instrucciones pasa a ser muy rpida en comparacin con el coste de ejecutar una instruccin muy complicada, por lo que se vuelve al modelo de procesador segmentado con instrucciones sencillas y de rpida ejecucin. Se puede continuar aumentando el rendimiento de la mquina aumentando el nmero de etapas de la segmentacin para reducir el tiempo de ciclo. Aumentar las etapas para reducir el tiempo de ciclo, trae consigo aumentar la CPI, pero an as, el producto CPI por Tiempo de ciclo disminuye, as que ganaremos rendimiento. Superescalar: Ya solo podemos aumentar el rendimiento, aumentando el hardware, ejecutando ms de una instruccin por ciclo y as conseguir que CPI<1.

Arquitectura de computadores 7

TEMA 3 PROCESADORES SEGMENTADOS

Tema 3 Procesadores segmentados 1. Procesadores segmentados lineales 2. Arquitectura de ejemplo 3. Arquitectura segmentada lineal 4. Limitaciones de la segmentacin 5. Reduccin de los ciclos perdidos por conflictos de datos 6. Reduccin de los ciclos perdidos por conflictos de secuenciacin 7. Arquitectura segmentada con operaciones multiciclo 8. Temas avanzados

1. PROCESADORES SEGMENTADOS LINEALES Los procesadores segmentados lineales son el tipo de procesador segmentado ms sencillo posible, Para que se considere lineal tiene que cumplirse que todas las instrucciones pasen por las mismas etapas en el mismo orden y sin reutilizar ninguna etapa. Esto garantiza que la bsqueda de las instrucciones, el inicio de la ejecucin y la finalizacin de las instrucciones se lleva a cabo en el mismo orden que se encuentran en el cdigo secuencial.

2. ARQUITECTURA DE EJEMPLO En los lenguajes mquina con operaciones con registros hay tres tipos bsicos de instrucciones: Operaciones de clculo: Incluyen las operaciones aritmticas y lgicas y tanto pueden ser valores enteros como en coma flotante. La sintaxis es: OP Rd, Rf1, Rf2; Rd = Rf1 OP Rf2 Donde OP puede ser cualquier operacin (suma, resta y multiplicacin). Operaciones de acceso a la memoria: Hay dos instrucciones bsicas: LOAD para ir a buscar un valor a la memoria y STORE para dejarlo: LOAD Rd, Rf1, Rf2; Rd = Memoria[Rf1 + Rf2] LOAD Rd, Rf1, #X; Rd = Memoria[Rf1 + X ] STORE #X, Rf1, Rf2; Memoria[Rf1 + x] = Rf2 Operaciones de control de secuencia: Se trata de operaciones como saltos incondicionales, condicionales, saltos calculados, llamadas a subrutinas BEQZ Rd, #X, Si (Rf==0) entonces PC = PC + X A partir de esta semntica definida, los componentes bsicos del procesador sern los siguientes: Un banco de registros con dos puertos de lectura y uno de escritura. Una Unidad Aritmtico Lgica UAL para las operaciones de clculo. Un sumador para calcular el contador de la instruccin siguiente del programa. Varios registros: Un para mantener las direcciones en la memoria para los datos (MAR), uno para las direcciones de la memoria con el fin de ir a buscar las instrucciones (PC), uno para los datos que van a la memoria o vuelven (MDR) y uno para las instrucciones (IR).

Componentes bsicos del procesador

3. ARQUITECTURA SEGMENTADA LINEAL En un primer lugar vamos a identificar las distintas etapas de la segmentacin que podemos encontrar para cada uno de los tipos de instruccin y, hecho esto, aplicaremos el mismo nmero de etapas a todos los tipos de instruccin para asegurarnos que se trata de una arquitectura segmentada lineal. Instrucciones de clculo: Encontramos que primero hay que ir a buscar la instruccin a la memoria (B), luego descodificar y leer (DL) dichas

8 Arquitectura de computadores

instrucciones, aplicar la operacin sobre los operandos (UAL) y por ltimo escribir el resultado en el banco de registros (ESC). Por tanto, 4 etapas. Instrucciones de acceso a la memoria: Las dos primeras etapas, buscar instruccin a la memoria y descodificar y leer es igual que la anterior; despus calculamos la direccin de la memoria donde tiene que accederse (ADR), accedemos a la memoria (MEM) y escribimos en el banco de registros si se trata de una instruccin LOAD (ESC) o no hacemos esta ltima etapa si es una instruccin STORE. Por tanto 4 5 etapas dependiendo del tipo de instruccin.

Por lo tanto, necesitamos, 5 etapas en el camino de datos segmentado, que procedemos a explicar a continuacin en la siguiente tabla para cada una de las instrucciones:
INSTR. CLCULO Tenemos una memoria que contiene las instrucciones, un registro con la direccin de memoria y un incrementador para calcular el nuevo valor del contador del programa. El resultado de esta etapa es la instruccin que tiene que ejecutarse, la cual deja un registro (IR) Se utilizan dos registros como fuentes de operando, por lo que necesitamos un banco de registros con dos puertos de lectura y queda almacenado el resultado de la lectura en dos registros de segmentacin R1 y R2. ACCESO LOAD ACCESO STORE

ETAPA B Bsqueda de la instruccin a la memoria

Igual que en las instrucciones de clculo.

Igual que las anteriores.

ETAPA DL Descodificacin y lectura

Hay que leer los operandos necesarios para calcular la direccin de la memoria. Se pueden utilizar dos registros (ya que disponemos de dos caminos de lectura al banco de registros de las instrucciones de clculo) o un registro y un desplazamiento. Tiene que calcularse la direccin de la memoria. Puede aprovecharse que la UAL que hemos puesto para hacer las operaciones de instrucciones de clculo. El resultado de la UAL se guarda en un registro que servir de ndice en la memoria de datos (MAR). Hay que acceder a la memoria de datos en la direccin indicada por el registro anterior MAR. Tenemos que aadir una memoria para los datos o un nuevo camino que contenga las instrucciones y los datos para poder acceder a la memoria y buscar una nueva instruccin en un mismo ciclo. El resultado de esta etapa es el dato que quiere llevarse de la memoria al banco de registros, y se guardar en MDRin Se escribe el dato que hemos trado de la memoria al banco de registros aprovechando el camino de escritura que ya tenemos para las instrucciones de clculo.

Hay que leer un registro y un desplazamiento para la direccin de la memoria. Adems hay que leer un registro que contiene el valor que queremos llevar a la memoria MDRout, por lo que hay que aadir una nueva conexin desde uno de los caminos del banco de registros a un nuevo registro de segmentacin MDRout2 Hay que calcular la direccin a la memoria, al igual que en las instrucciones LOAD. Hay que recoger el dato que tiene que llevarse a la memoria y trasladarla hacia la etapa siguiente con un nuevo registro de segmentacin.

ETAPA UAL Clculo de la operacin

La UAL aplica la operacin en los dos operandos, y queda guardado el resultado en un nuevo registro R3.

ETAPA MEM Memoria

Las instrucciones no hacen nada, de manera que el resultado de la etapa de UAL se copia en un nuevo registro R4.

Se accede a la direccin de la memoria de datos indicada en el registro de segmentacin MAR y se lleva a la memoria el valor que queremos guardar por un nuevo camino.

ETAPA ESC Escritura

Se escribe en el banco de registros el resultado que se obtiene de la operacin que se ha hecho en la UAL y que se encontraba en R4.

No se utiliza ningn recurso.

El camino de datos tiene estas cinco etapas diferentes, el hardware que configura cada una de las etapas tiene que estar separado de la etapa anterior y de la siguiente mediante registros para poder aislarlas. As, cada etapa puede operar sobre una instruccin diferente sin afectar a las otras etapas. En la pgina siguiente, podemos observar en otra tabla, el camino de datos segmentado para cada uno de estos tipos de instrucciones, con los recursos que se consumen en cada una de las etapas.

Arquitectura de computadores 9

INSTR. CLCULO

ACCESO LOAD

ACCESO STORE

4. LIMITACIONES DE LA SEGMENTACIN Esta tcnica de la segmentacin tiene unos lmites, y es cuando se producen conflictos. Los conflictos de datos se producen cuando el resultado de la ejecucin segmentada es diferente del resultado de la ejecucin secuencial como resultado del orden en el que se han accedido a los datos. As queda claro que si una operacin posterior quiere acceder a la lectura de un dato antes de que se haya escrito ese dato en una operacin anterior que ha sido segmentada, cambiar obviamente el resultado que se obtiene. Hay tres tipos de dependencia de datos: Dependencias de lectura: Se producen cuando dos instrucciones diferentes leen algunas variables comunes. Si: ADD R1, R2, R3; R1 = R2 + R3 Sj: SUB R4, R3, R5; R4 = R3 R5 En este ejemplo queda claro que si Si y Sj estn demasiado juntas se producira una dependencia de lectura, ahora bien, las dependencias de lectura nunca pueden provocar un conflicto de datos, ya que las instrucciones que tienen la dependencia solo comparten variables de lectura, independientemente del orden en que se hagan las lecturas, el resultado ser el mismo. Antidependencias: Aparecen cuando una instruccin utiliza una variable que se vuelve a definir ms tarde. Si: ADD R1, R2, R3; R1 = R2 + R3 Sj: SUB R3, R4, R5; R3 = R4 R5 Tampoco en este caso se pueden producir conflicto de datos, ya que todas las instrucciones pasan por las mismas etapas y en el mismo orden, y todas

10 Arquitectura de computadores

las instrucciones con registros escriben el resultado cuando pasan por la ltima etapa, as pues cuando la instruccin Sj escribe, todas las anteriores ya han ledo correctamente sus operandos. Dependencias de escritura: Se producen cuando dos instrucciones escriben en alguna variable comn. Si: ADD R1, R2, R3; R1 = R2 + R3 Sj: SUB R1, R4, R5; R1 = R4 R5 Tampoco en este caso se pueden producir conflicto de datos, ya que todas las instrucciones escriben en la misma etapa y cuando la instruccin Sj escribe, todas las anteriores ya han escrito. Dependencias reales: Tienen lugar cuando la instruccin Si genera una variable que es utilizada por la instruccin Sj. Si: ADD R1, R2, R3; R1 = R2 + R3 Sj: SUB R4, R3, R1; R4 = R3 R1 stas son las nicas dependencias de verdad que pueden acontecer en el procesador segmentado lineal. Hay diferencia si la variable que provoca la dependencia (en este caso R1) est en memoria o en un registro. Si est en un registro, la instruccin Sj debe encontrarse, al menos a una distancia de 4 instrucciones para que no provoque dependencia (ver figura adjunta). Si la variable problemtica est en la memoria no puede haber conflicto de datos ya que la lectura y escritura siempre se produce en la misma etapa (la cuarta) del procesador segmentado lineal. Hasta ahora hemos considerado que las instrucciones se ejecutaban una detrs de otra, sin producirse saltos, pero como sabemos eso no siempre es as y esto nos introduce en un nuevo tipo de errores, los conflictos de secuenciacin. Para aadir la secuenciacin debemos hacer una serie de cambios en nuestro procesador segmentado lineal, as se podr comparar el valor de un registro y en funcin del resultado saltar a una cierta distancia de la instruccin de salto:
Secuenciacin Dependencias reales Variable en registro Variable en memoria

La etapa de bsqueda de instrucciones y la de descodificacin y lectura son las mismas que para las otras instrucciones. En la etapa UAL puede utilizarse la UAL del camino de datos para calcular el contador de programa de la instruccin siguiente en caso de que tenga que saltarse (PC = PC + X), tambin hay que comparar el registro ledo con cero, y aadir un comparador en esta etapa del procesador. En el ciclo siguiente, en la etapa de memoria ya puede evaluarse la condicin de salto y al final del ciclo todo est preparado (condicin de salto y direccin de destino) para poder saltar.

Pero eso s, si no se hace nada por evitarlo, durante 3 ciclos se habr ido a buscar y se habrn ejecutado las tres instrucciones que siguen a la instruccin de salto; si finalmente se tiene que saltar porque se cumple la condicin, habremos ejecutado errneamente 3 instrucciones que con el mtodo secuencial del cdigo no se hubieran ejecutado y por tanto se habr modificado el resultado del cdigo original Tanto para evitar este problema en los conflictos de secuenciacin como en los conflictos de datos, se utiliza el bloqueo del procesador. Es una tcnica que detiene la bsqueda de nuevas instrucciones y deja que las que estn en las etapas

Arquitectura de computadores 11

de UAL, memoria y escritura se continen ejecutando. Los dos tipos de bloqueos de procesador que existen son: Para resolver los conflictos estructurales y de datos, adems de detener la bsqueda de nuevas instrucciones, se detiene la etapa de descodificacin y lectura de operandos; as la distancia entre las instrucciones que tienen dependencia o quieren usar un mismo recurso, aumenta hasta que desaparece el riesgo. Para resolver los conflictos de secuenciacin no puede detenerse la descodificacin y lectura de operandos, ya que tenemos que dejar que la instruccin de salto se ejecute para saber cul es la instruccin siguiente que hay que buscar.

Durante estos ciclos que se bloquea el procesador, se generan instrucciones nulas, instrucciones NOP (no operacin) que no modifican el estado del procesador.

5. REDUCCIN DE LOS CICLOS PERDIDOS POR CONFLICTOS DE DATOS La solucin del captulo anterior es buena pero, por desgracia, nos hace perder 3 ciclos de proceso datos que es, en definitiva, para lo que segmentbamos el procesador, para poder ejecutar paralelamente ms instrucciones por ciclo. Pero, como casi siempre, existen tcnicas para reutilizar estos ciclos y que se sigan generando instrucciones, son dos principalmente, la planificacin de instrucciones y los cortocirtuitos.
Planificacin de instrucciones 1: ADD R1, R2, R3 2: SUB R4, R2, R1 3: ADD R5, R6, R2 4: MUL R7, R3, R6 5: ADD R2, R3, R2 6: SUB R3, R2, R4 1: ADD R1, R2, R3 3: ADD R5, R6, R2 4: MUL R7, R3, R6 2: SUB R4, R2, R1 5: ADD R2, R3, R2 6: SUB R3, R2, R4

Renombramiento de registros 1: ADD R1, R2, R3 3: ADD R5, R6, R2 4: MUL R7, R3, R6 2: SUB R4, R2, R1 5: ADD R2, R3, R2 6: SUB R3, R2, R4 1: ADD R1, R2, R3 3: ADD R5, R6, R2 4: MUL R7, R3, R6 5: ADD R20, R3, R2 2: SUB R4, R2, R1 6: SUB R3, R20, R4

La planificacin de instrucciones es una tcnica de software que se encarga de aplicar el compilador o el programador. Consiste en generar cdigo teniendo en cuenta las dependencias de datos entre las instrucciones. Se basa en que cualquier par de instrucciones puede intercambiar el orden de ejecucin si no tiene ningn tipo de dependencia entre ellas ni con las instrucciones que hay en medio. Pues bien, en los ciclos que se pierden por dependencia, en lugar de ejecutar instrucciones NOP, se ejecutan estas otras que realmente pertenecen al cdigo y as no se pierden ciclos de procesador. En la figura lateral se observa un conjunto de instrucciones en las cuales, entre la primera y la segunda se perderan 3 ciclos de procesador, con una reorganizacin del mismo cdigo, se obtiene el mismo resultado final y no se pierde ningn ciclo. En el ejemplo resuelto anteriormente, todava se pierde un ciclo de procesador por culpa de la dependencia real entre las instrucciones 1 y 2. Todava puede aplicarse otra tcnica de software para intentar solucionarlo, el renombramiento de registros. Slo con cambiar en nuestro ejemplo en la instruccin 5 y 6 el registro R2 por R20, podemos continuar reordenando instrucciones y separar an ms las que tienen dependencias reales. Los cortocircuitos son una tcnica de hardware que consiste en introducir cambios en el camino de datos y en el control del procesador segmentado que reducirn el nmero de ciclos perdidos a causa del conflicto de datos. Son conexiones especiales para los datos en el camino de datos que toman los mismos del punto donde se encuentran y las llevan donde se necesitan. Para ello debemos distinguir quienes son los productores de valores y quienes son los consumidores. Los productores de valores se dan en la UAL (al ejecutar una instruccin de clculo) y en la memoria de datos (al ejecutar una instruccin LOAD); estos valores pueden tomarse en cualquier punto entre el lugar que se calcula (UAL o memoria) y el lugar donde se escribir (banco de registros), con lo que hay 3 lugares posibles donde pueden ir a buscarse valores: en la salida de la UAL (etapa UAL), en la salida de la memoria (etapa de memoria) o en la salida del registro de segmentacin (etapa de escritura). Los consumidores de valores son los que necesitan dichos valores para hacer un clculo (UAL) o para almacenarlo (la memoria en la etapa STORE) y se pueden necesitar en los dos registros de entrada a la UAL y en el de salida de

12 Arquitectura de computadores

valores hacia la memoria en la etapa de descodificacin y lectura de operandos, o en el registro que propaga los valores que van a la memoria durante la etapa UAL. As, con todos estos aspectos, rediseamos el procesador segmentado, aadindole nuevos caminos que son los cortocircuitos. An as, en nuestro procesador segmentado sigue existiendo un caso de conflicto de datos que no puede resolverse con cortocircuitos y que nos har bloquear el procesador y perder un ciclo de ejecucin de instrucciones tiles; se trata de una instruccin LOAD seguida de cualquier instruccin a distancia 1 que utilice el registro que cargar la instruccin LOAD, que debe ser bloqueado para que d un resultado correcto. Por ejemplo:
LOAD R1, R2, #13; ADD R4, R1, R5; SUB R7, R2, R1; R1 = Memoria [R1 + R13] R4 = R1 + R5 R7 = R2 R1

Cortocircuitos en el procesador segmentado

Esto sucede porque el valor que llega a la memoria est disponible al final de la cuarta etapa (MEM) de la ejecucin de la instruccin LOAD, y la instruccin siguiente ADD necesita este valor al principio de la tercera etapa (UAL); se necesita pues antes de que el valor est calculado y no hay ningn cortocircuito que pueda adelantar el valor del registro, perdemos por ello un ciclo de procesador.

6. REDUCCIN DE LOS CICLOS PERDIDOS POR CONFLICTOS DE SECUENCIACIN Ya hemos visto la necesidad de bloquear el procesador con cada instruccin de salto para que el cdigo se ejecute correctamente. Como por trmino medio una de cada 5 instrucciones son de salto y, en ese caso, perdemos 3 ciclos de procesador, los conflictos de secuenciacin son realmente graves para el rendimiento del procesador. El programador puede evitar esto introduciendo el menor nmero de instrucciones de salto posibles, pero por otro lado, existen otras 3 formas en el mbito del hardware de mejorar este resultado. Adelanto del clculo de la condicin y de la direccin de destino: Se desplaza el hardware de la UAL necesario para que este clculo tenga lugar en la etapa ms temprana posible. Lo mximo que podemos hacer es efectuar el clculo de la direccin de destino y evaluar la condicin de salto en la etapa de descodificacin y lectura. No podemos hacerlo antes porque entonces tendramos que estar haciendo los clculos sin saber todava si se trata de una operacin de salto o no. Destacamos en esta solucin que hay que aadir un sumador extra al camino de datos del procesador segmentado para poder calcular la direccin de destino del salto y, que
Adelanto del clculo de la condicin y direccin de destino

Arquitectura de computadores 13

en un ciclo es necesario tener tiempo para leer el banco de registros, comparar el registro y evaluar la condicin; esto implica un tiempo de ciclo muy malo. Prediccin de saltos: Consiste en empezar a ejecutar instrucciones (ya sea de las que siguen en secuencia a la instruccin de salto o de las instrucciones a partir de la direccin del salto) antes de acabar la ejecucin de la instruccin de salto. Una vez que se ejecuta el salto, conviene saber si hemos tomado la decisin correcta respecto a las instrucciones a ejecutar (50% de probabilidades); para obtener la direccin de salto se utiliza una memoria cach de instrucciones de salto conocida como BTB, ahora bien, existen dos formas de predecir el salto: o Esttica: La prediccin para una instruccin de salto concreta es siempre la misma, bien porque todas las instrucciones de salto tienen la misma prediccin (por ejemplo saltar siempre) o bien porque cada una de las instrucciones de salto tienen una prediccin diferente. o Dinmica: La prediccin puede variar a lo largo del tiempo en funcin de su comportamiento; as el Pentium III de Intel tiene u predictor de saltos dinmico que predice correctamente en torno al 90% de los saltos condicionales. Una vez producido o no el salto, si la prediccin es correcta no se perder ningn ciclo de procesador al ejecutar el salto, mientras que si es errnea se perdern tantos ciclos como en un procesador sin prediccin. Tambin hay que aadir que en el caso de un predictor esttico en el que nunca se salte, no es necesaria siquiera memoria BTB, solo el fluir normal, sin bloquear, del procesador. Saltos retardados: Otra tcnica consiste en hacer visible para el programador los ciclos que tarda en calcularse la direccin de destino y la condicin de salto; as siempre se ejecutarn las n primeras instrucciones que hay despus de una instruccin de salto, independientemente de si ste definitivamente se produce o no. Lo habitual es que tengan dos posiciones de retardo, por tanto se realizarn los dos ciclos siguientes del cdigo.

7. ARQUITECTURA SEGMENTADA CON OPERACIONES MULTICICLO El diseo del procesador que hasta ahora nos traamos entre manos, complentaba una ejecucin lineal con tiempo de ciclo constante que, para ms INRI, tena que ser el tiempo que tardase ms. Si el objetivo es mejorar el rendimiento todo lo posible, interesa dividir la ejecucin de las operaciones en las etapas que requiera cada tipo de operacin. La segmentacin ahora no ser lineal y el diseo del procesador ser ms complejo. Un ejemplo de esta necesidad son las operaciones en coma flotante, que son mucho ms complejas que las operaciones con enteros. As crearemos una mquina con dos procesadores, una ser equivalente al procesador segmentado lineal que venimos conociendo en todo el tema, y la otra mquina ejecutar las nuevas instrucciones en coma flotante. En este nuevo esquema tendremos en cuenta que: Las operaciones con nmeros enteros se efectan de la misma forma que antes en el procesador segmentado lineal. Las operaciones en coma flotante se ejecutan en la nueva mquina con un banco de registros propios. Las operaciones de acceso a la memoria sern las nicas que relacionan ambas mquinas y se ejecutarn siempre en la parte de los enteros. El clculo de las direcciones de la memoria siempre tiene lugar en la parte de los enteros y se requiere leer un registro del banco de registros enteros.

Obviamente estos cambios tambin influyen en las operaciones de clculo apareciendo nuevas operaciones como FSUM para la suma en coma flotante. Las instrucciones adems tienen un nmero de etapas que dependen de su dificultad,

14 Arquitectura de computadores

as las operaciones de suma y resta se ejecutan en 3 Camino de datos segmentado multiciclo ciclos, las de multiplicacin en 5 y la de divisin en coma flotante, la ms compleja, en 8 ciclos. En este procesador segmentado con operaciones multiciclo ahora la nueva mquina puede tener tambin dependencias que estudiamos a continuacin: Antidependencias: Todas las operaciones son idnticas hasta la etapa de lectura, como siempre se escribe despus de leer (igual al procesador segmentado lineal) estas dependencias no pueden crear nunca un conflicto de datos. Dependencias reales: Una instruccin puede intentar leer un registro que ha calculado una instruccin anterior pero que todava no se ha escrito, en este caso con bloqueos y prdida de ciclos superamos el problema; reordenando las instrucciones y utilizando cortocircuitos evitamos este problema. Dependencias de salida: Como las operaciones pueden terminar en un orden diferente a aqul en el que se empezaron a ejecutar, es necesario en algunas ocasiones bloquear el procesador o anular la escritura ms antigua.

8. TEMAS AVANZADOS Dos tcnicas que actualmente suelen aplicar todos los procesadores para mejorar su rendimiento: Ordenacin dinmica de las instrucciones: Ya hemos comprobado anteriormente que cuando se produce un conflicto de datos que no puede resolverse, el procesador se bloquea y perdemos ciclos de trabajo. Pero si sabemos que las instrucciones que siguen al bloqueo se pueden ejecutar y son independientes y no dan lugar a ningn conflicto, entonces podremos ejecutarlas durante el tiempo de bloqueo. Lo que hacen los procesadores actuales es guardar dentro del procesador la instruccin bloqueante y se continan buscando instrucciones, as que el procesador slo se bloquear cuando ya no pueda guardar ms instrucciones en su interior. Lgicamente con esta nueva tcnica pueden surgir nuevos conflictos, que se solucionan con un renombramiento de registros, as el procesador puede funcionar como si el compilador hubiera generado cdigo para un procesador con infinitos registros. Lo negativo de esta tcnica de ordenacin dinmica de instrucciones con renombramiento de registros es que complica el diseo del control y empeora el tiempo de ciclo del procesador. Ejecucin superescalar de las instrucciones: Se ejecutan ms de una instruccin por ciclo de procesador, aprovechndonos de la tcnica de multiplicacin para explotar el paralelismo a nivel de instruccin. El grado de un procesador segmentado superescalar es el nmero de instrucciones que puede ejecutar por ciclo y que actualmente es de 2 a 4. Ambos mtodos anteriores pueden dar problemas en el tratamiento de las excepciones, dado que al no ejecutar el cdigo lnea a lnea, cuando se presenta una excepcin no puede detenerse para tratarla y luego continuar por el mismo punto en que se detuvo sin que ya se hayan ejecutado varias instrucciones intermedias.
Texto elaborado a partir de:

Agustn Fernndez Jimnez, Toni Juan Hormigo Junio 2005

Arquitectura de computadores

Arquitectura de sistemas distribuidos


TEMA 1 ARQUITECTURAS DISTRIBUIDAS A ESCALA INTERNET
Tema 1 Arquitectura distribuida a escala Internet 1. Conceptos previos 2. Cliente-servidor 3. Publlicacin-suscripcin 4. De igual a igual 5. Sistemas distribuidos basados en eventos 6. Cdigo mvil 7. Topologas de los sistemas distribuidos

1. CONCEPTOS PREVIOS Existen muchas definiciones de sistemas distribuidos, aunque la ms completa dice as: Un sistema distribuido es una coleccin de ordenadores autnomos, enlazados por una red de ordenadores y soportados por un software que hace que la coleccin acte como un servicio integrado. La escala Internet confiere dificultad a estos sistemas distribuidos, por la gran cantidad de ordenadores y usuarios conectados, por la dispersin geogrfica de stos, por la calidad del servicio, la seguridad, autonoma, porqu algunos ordenadores se conectan y desconectan sin control, etc. A la hora de disear un sistema distribuido, deberemos tener en cuenta las siguientes caractersticas: Heterogeneidad: Pueden coexistir distintos tipos de dispositivos (ordenadores, PDA, etc) con distintos sistemas operativos, hardware y distinto lenguaje de programacin. Seguridad: Puede existir informacin valiosa para los usuarios que se est compartiendo, se pueden usar tcnicas de cifrado para que siga siendo lo ms confidencial posible. Escalabilidad: Debemos poder aadir nuevos recursos, usuarios, etc, evitando que se pierda el rendimiento y el control; es especialmente perjudicial la existencia de cuellos de botella que, a la larga, disminuirn el rendimiento del sistema. Fallos: El sistema debe ser capaz de detectar la existencia de fallos, funcionar con el error derivando recursos (tolerar los fallos) y ser capaz de recuperarse completamente cuando el fallo se haya solventado. Concurrencia: Debe permitirse acceder a varios usuarios a un recurso simultneo (datos) y ser capaz de cambiarlo sin que afecte y de resultados errneos. Transparencia: Ciertos aspectos del sistema estn ocultos a las aplicaciones, como por ejemplo la transparencia de ubicacin acceso a un recurso sin saber su ubicacin.

2. CLIENTE-SERVIDOR En el modelo cliente-servidor hay dos tipos de procesos, los clientes son procesos que hacen peticiones de servicio y los servidores proveen esos servicios. Hay ejemplos hbridos, como por ejemplo un buscador de Internet, que es servidor de la peticin que nosotros podemos hacerle a travs de su pgina web, pero a su vez es cliente de otros servidores de Internet buscando la informacin para nosotros. Arquitectura multiestrato La funcionalidad est distribuida entre distintas plataformas u ordenadores, y hay tres niveles: interfaz de usuario del sistema, capacidad de procesamiento y gestin de los datos. Dependiendo a qu nivel se siten estos tres niveles podemos tener distintos tipos de arquitecturas:

2 Arquitectura de Sistemas Distribuidos

Arquitectura de dos estratos: La interfaz de usuario est ubicada en el cliente, y la gestin de base de datos en el servidor; la capacidad de procesamiento est repartida tanto entre el cliente como en Arquitecturas multiestrato el servidor. As se mejora la usabilidad, escalabilidad y flexibilidad de las aplicaciones. Arquitectura de tres estratos: Se sita un tercer estrato entre el cliente y el servidor, encargado de la capacidad de procesamiento.

Aplicaciones basadas en web Este tipo de aplicaciones son un caso especial de arquitectura cliente-servidor. Cuando un usuario hace clic en un enlace se genera una peticin al servidor que pone en marcha el cdigo CGI, Java, etc y que acaba generando como respuesta una pgina en formato web con todos los datos procesados en el script y que visualizamos directamente en nuestro navegador en formato HTML. La gran ventaja de este tipo de aplicaciones es que son accesibles desde cualquier ordenador que disponga de un navegador web, sin necesidad de incluir ms cdigo o instalar ms programas en el cliente, y esta facilidad y universalidad ha sido uno de los elementos responsables del boom de empresas en Internet.

3. PUBLICACIN-SUSCRIPCIN En el modelo cliente-servidor, cada vez que el cliente Publicacin-suscripcin necesita cierta informacin, la pide o la busca en el servidor; pero hay servicios en los que esta forma de actuar no es til. Por ejemplo, si somos un inversos en bolsa y nos interesan las cotizaciones del IBEX 35, no podemos estar constantemente buscando la ltima cotizacin y monitorizando si hay cambios o no. En este caso, es mucho ms til la publicacinsuscripcin: un productor de informacin anuncia la disponibilidad de cierto tipo de informacin y un consumidor interesado se suscribe para recibir esta informacin de la que el productor peridicamente le va a proveer. El modo de funcionamiento se detalla en la tabla adjunta y se caracteriza por: Localizacin: La informacin no hay que buscarla, ya est localizada. Personalizacin: Recibimos justo la informacin que queremos y a la que nos hemos suscrito. Actualizacin permanente de los datos. Reduccin del trfico: El trfico en la red se reduce ya que no buscamos ni actualizamos peridicamente los datos como clientes, sino que ya est localizada y se nos enve (sncrona o asncronamente) cuando hay algn cambio.

4. DE IGUAL A IGUAL Un sistema de igual a igual (peer-to-peer) se caracteriza por ser un sistema distribuido en el que todos los nodos tienen las mismas capacidades y responsabilidades, y en el que toda la comunicacin es simtrica. Ejemplo de estos sistemas son napster, emule, etc, usados frecuentemente para la comparticin de ficheros, pero existen otras aplicaciones como la computacin distribuida, comunicacin, colaboracin Las caractersticas de estos sistemas son las siguientes:

Arquitectura de Sistemas Distribuidos 3

Descentralizacin: Los distintos iguales (miembros) del sistema son los propietarios y tienen el control de los datos y recursos de su ordenador, no hay ningn nodo que tenga una idea completa del sistema. Escalabilidad: Una consecuencia directa de la descentralizacin es la mejora de la escalabilidad, ya que se pueden soportar muchas ms operaciones que si se tiene que recurrir a un nodo que centralizara las operaciones. Anonimato: Puede haber anonimato de autor (de documentos), de publicador (no se puede identificar quin public o introdujo un determinado documento en el sistema), de lector, de servidor (no se puede saber en qu servidores se encuentra un documento), de documento (no se sabe qu documentos tienen almacenados los servidores), de peticin. Autoorganizacin: el sistema crece o cambia su organizacin sin que esta evolucin est supervisada. Coste de la propiedad: La propiedad compartida reduce el coste de poseer el sistema y los contenidos. Conectividad puntual: Los iguales pueden conectarse y desconectarse del sistema a voluntad. Rendimiento: Suele ser una preopcupacin en este tipo de sistemas, se mejora con la reproduccin (acerca copias de objetos o ficheros a iguales), uso de memorias cach (reduce la distancia necesaria para obtener un objeto) y encaminamiento inteligente (los iguales que se comunican ms frecuentemente que tienen intereses comunes). Seguridad: A travs de cifrados multicalave, derechos digitales, cortafuegos Transparencia y usabilidad: Deben funcionar los sistemas de igual a igual independientemente de la red utilizada, del dispositivo que se conecte, del sistema operativo instalado Resiliencia a fallos: si falla uno o varios componentes del sistema, ste debe seguir funcionando. Algunos sistemas tienen almacenes temporales que registran las modificaciones o comunicacin y cuando el igual vuelve a estar activo, recibe las actualizaciones. En otras ocasiones se encolan los mensajes hasta que los iguales estn disponibles. Interoperabilidad: Hay muchos sistemas de igual a igual, pero actualmente ninguno puede interoperar con otro existente, aunque se dan tmidos avances en este sentido como la red emule y eKad.

5. SISTEMAS DISTRIBUIDOS BASADOS EN EVENTOS El uso de eventos permite que un objeto pueda reaccionar a cambios que han ocurrido en otro objeto. Un componente puede anunciar o difundir uno o ms eventos y otros componentes del sistema pueden registrar que estn interesados en este tipo de eventos y, cuando un evento se anuncia, el sistema invoca a todos los componentes interesados que estn registrados. Los sistemas basados en eventos tienen dos caractersticas principales: son heterogneos y son asncronos. Por ello aunque inicialmente se parezcan a los sistemas de publicacin-suscripcin, no tienen nada que ver, dado que los roles son muy diferentes (en publicacin-suscripcin estn diferenciados, aqu no), la frecuencia de la informacin es muy variable (mucho mayor en los sistemas basados en eventos) y la cantidad tambin (ms elevada la informacin por publicacin-suscripcin que en eventos, que tiende a ser mnima, frecuente, pero mnima).

6. CDIGO MVIL Los sistemas de cdigo mvil pretender usar la movilidad para cambiar dinmicamente la distancia entre el procesamiento y la fuente de datos o destino de los resultados, as cambiando de ubicacin, un componente puede mejorar la

4 Arquitectura de Sistemas Distribuidos

proximidad y la calidad de las interacciones, reducir el coste de las mismas y as, mejorar la eficacia y la percepcin del usuario sobre el rendimiento. Bsicamente se trata de ejecutar partes de cdigo en mquinas distintas, tanto enviando el cdigo, los datos o una mezcla de ellos: Evaluacin remota: El cliente enva el conocimiento al servidor ubicado en un ordenador remoto, all se ejecuta el cdigo recibido con los recursos que tiene y se devuelve el resultado al cliente. Un ejemplo prctico sucede entre un procesador de textos y una impresora PostScript. Cdigo bajo demanda: El cliente enva una peticin a un servidor remoto para que le enve el cdigo necesario y el cliente con los datos con los que ya contaba, ejecuta totalmente y obtiene los resultados esperados. En este caso el cliente tiene los recursos, pero no el conocimiento necesario. Un ejemplo son las miniaplicaciones web que bajamos y ejecutamos constantemente desde nuestros navegadores web, pues las bajamos y ejecutamos en nuestro ordenador. Agentes mviles: Una unidad de computacin se nueve a un ordenador remoto, y se lleva su estado, la parte de cdigo que necesita y los datos necesarios (si los requiere) para llevar a cabo la tarea. Es una combinacin de las dos anteriores. En todos los casos la seguridad es importante, la confidencialidad de los datos, y sobre todo por el hecho de ejecutar cdigo ajeno en nuestro ordenador o enviarlo a otro para que lo ejecute, es por ello que el cliente y el servidor deben ser de mutua confianza.

Topologas de los sistemas distribuidos: Centralizada, en anillo, jerrquica, descentralizada, centralizada y en anillo, y centralizada y descentralizada.

7. TOPOLOGAS DE LOS SISTEMAS DISTRIBUIDOS Centralizada: Es la que estamos ms habituados a ver (primera figura de la imagen lateral), un nodo servidor contiene la informacin y los nodos clientes obtienen la informacin de este servidor. Es un sistema simple en administracin y consistencia de datos, pero es muy vulnerable a fallos. En anillo: Se utiliza cuando un servidor se satura porque tiene muchas peticiones, y consiste en tener un conjunto de servidores conectados entre s de manera que se coordinen para tener un estado comn, balanceando la carga y obteniendo un buen resultado frente a fallos (segunda figura de la imagen lateral). Jerrquica: (tercera figura) Un conjunto de nodos tiene un nodo superior que les ofrece la informacin que stos necesitan, si un nodo no tiene la informacin, la reclama a su inmediato superior. Son sistemas muy escalables y bastante resistentes a fallos, pero con un punto dbil: el nodo raz. Descentralizada: Cualquier nodo se conecta a cualquier otro, como podemos ver en la cuarta figura de la imagen lateral. Son sistemas muy extensibles y muy tolerantes a fallos, pero son difciles de administrar y suelen ser bastante inseguros. Centralizada y en anillo: Es una topologa hbrida, y se comporta como un sistema centralizado, pero el nodo servidor no es un nico ordenador, sino que est formado por un conjunto de ellos, as el usuario ve un nico punto de conexin pero con las ventajas que ofrece tener un conjunto de ordenadores que responden a las peticiones de los clientes. Es una combinacin simple pero potente. Centralizada y descentralizada: Este tipo de topologa intenta que cualquier nodo puede relacionarse con cualquier otro, que es la principal desventaja de las topologas descentralizadas. As con cierta centralizacin se aporta sencillez a la hora de conseguir coherencia dentro del sistema, aunque sigue siendo difcil de administrar y bastante inseguro.

Arquitectura de Sistemas Distribuidos 5

TEMA 2 CONCEPTOS DE SISTEMAS DISTRIBUIDOS

Tema 2 Conceptos de sistemas distribuidos 1. La observacin de un sistema distribuido 2. Tiempos y relojes 3. Tolerancia a fallos 4. Comunicacin en grupo

1. LA OBSERVACIN DE UN SISTEMA DISTRIBUIDO Un sistema distribuido est formado por personas, mquinas, procesos, agentes situados en lugares distintos. Puede entenderse de manera abstracta como un conjunto de procesos que cooperan para solucionar un problema intercambiando mensajes. Y ste ltimo punto es el que hace imposible la observacin fotogrfica de un sistema distribuido, es decir, no es posible poder construir una imagen del sistema en un momento dado, ya que varios procesos nunca se pueden observar a la vez y, por tanto, no se pueden hacer afirmaciones sobre el estado global del sistema. El efecto relativista ocurre en Internet todos los das: velocidad de propagacin menor, datos que circulan formando colas y sufriendo retrasos para atravesar routers, datos que se pierden porque una cola rebosa o un bit cambia de valor por error, datos desordenados que tardan en ser procesados por la carga del servidor, etc.

2. TIEMPOS Y RELOJES Es necesario en todo sistema distribuido medir el tiempo y saber con la mayor exactitud el momento en el que ocurri un evento determinado: es necesario sincronizar el reloj del computador con una fuente de referencia externa. Cada computador tiene su reloj propio, con valor temporal que vara de manera distinta y que requiere un ajuste continuo para que todos los computadores de un sistema tengan un valor de tiempo aproximadamente igual. Por medio de intercambiar mensajes, los relojes de varias mquinas se pueden coordinar entre stas, teniendo en cuenta el tiempo de ida y vuelta del mensaje, se puede ajustar el reloj local sin dar saltos, es decir, acelerndolo o ralentizndolo durante un perodo de tiempo hasta que incorpore el ajuste. As si sabemos el Treal y el Tdespl, los valores para ajustar el reloj de un computador en N ciclo, segn el mtodo Christian, seran: A = (Treal Tdespl) / N B = Tdespl (1+a) h

Adems, si en una red local solo hay un servidor al que consultar el tiempo, puede ser problemtico en caso de fallos y por eso se suelen usar mecanismos de sincronizacin con varias referencias de tiempo: el algoritmo de Berkeley permite que una mquina pregunte el tiempo a otra e incorpore los ajustes necesarios con tolerancia a fallos y enva a cada mquina del conjunto el ajuste de reloj que necesite; el protocolo de tiempo en red permite que una mquina puede ajustar su hora por Internet. Otra forma de actuar son los relojes lgicos que en lugar de usar la hora, determinan el orden relativo de ocurrencia de dos eventos; es decir, se trata de contadores de eventos que siempre aumentan y que no tienen relacin con el reloj fsico. As cada proceso P tiene un reloj lgico L que se usa para marcar el tiempo virtual en el que se ha producido un evento. Las relaciones importantes entre eventos y relojes lgicos son las siguientes: Procedencia: si dos eventos e1 y e2 se dan ene el mismo proceso P, el orden es claro para todo el sistema e1 e2. El envo de un mensaje ocurre antes de la recepcin envio(e1) recepcin(e1); y si e1, e2 y e3 son eventos que e1 e2 y e2e3 entonces por transitividad e1e3. Concurrencia: (||) entre eventos, cuando dos no estn relacionados por no hay una relacin causal

6 Arquitectura de Sistemas Distribuidos

La ordenacin causal de eventos captura en muchos casos la informacin esencial para describir una ejecucin, pero como hay un reloj Lamport para cada proceso, y comparando su valor en dos mensajes que nos llegan, no podemos concluir si uno precede al otro o son concurrentes, para esto se inventaron los relojes vectoriales.

3. TOLERANCIA A FALLOS Podra esperarse que la fiabilidad de un sistema distribuido dependiera de la fiabilidad de sus componentes, pero no es as, ya que un sistema distribuido est formado por componentes que interactan y nuestro objetivo de funcionamiento es no fallar cuando falla un componente, sino funcionar con componentes averiados o en mantenimiento. Una forma tradicional y sencilla, aunque cara de obtener este objetivo es tener el sistema replicado, aunque es posible obtener tolerancia a fallos a partir de hardware sin replicar y una capa de programas que ofrezcan un modelo de programacin y algunos servicios esenciales para programar aplicaciones distribuidas tolerantes a fallos. Varios de estos servicios son los siguientes. La gestin de replicacin tiene lugar cuando se replican los datos en varios servidores y es necesario saber quin gestiona qu y como se gestionan estas rplicas. Hay dos tipos de operaciones, las de servidor a servidor (sirven para ajustar el rendimiento, prevenir y reaccionar ante fallos) y las de cliente a servidor que se pueden encontrar varios casos: Copia disponible: (leer uno, escribir todos). Las actualizaciones se aplican a todas las copias, y las lecturas se hacen de cualquier rplica. Votacin: Cada rplica tiene uno o ms votos, cada operacin recolecta votos de las replicas hasta conseguir qurum y, entonces, se aplicar la operacin. La deteccin de fallos puede asumir varios tipos de fallos: Fallo y parada: un proceso funciona bien, y de pronto se para, es el modelo de fallo ms fcil de detectar. Funcionamiento errneo: todo parece ir bien hasta que se empiezan a percibir resultados errneos; es un fallo peligrado pues es difcil detectar la situacin y desde cuando se llevan cometiendo errores. Sistema ms lento: todo parece funcionar, pero la velocidad general del sistema va decreciendo paulatinamente.

Una manera de simplificar todos estos fallos es disponer una capa de software que vista todos los fallos como si fueran paradas. As que se trata de preguntar a los procesos para verificar que no estn funcionando errneamente, y si se ralentizan o dan errores, se les considera parados y se les ignora. La gestin de grupos de procesos se hace enviando mensajes a todos los miembros del grupo para comprobar que todo funciona bien, pero existen segn el nmero de miembros varias tcnicas: Enviar el mensaje a un proceso que gestiona y grupo y ste se encarga de reenviarlo a todos los miembros; este proceso se convierte en un punto dbil, que si falla, falla la comunicacin con todo el grupo. El proceso que quiere enviar pide primero la lista de miembros al proceso que gestiona el grupo, y el emisor manda el mensaje a cada destinatario; el problema es que si el nmero de miembros aumenta o disminuye desde que se pide la lista hasta que se enva el mensaje, la entrega a todos los miembros puede no ser correcta.

Arquitectura de Sistemas Distribuidos 7

Una lista compartida entre emisores y algoritmo de cardinalidad; los mensajes se entregan cuando el nmero de miembros no vara y nos aseguramos que todos reciben el mensaje.

La entrega de mensajes es esencial para garantizar ciertas propiedades del sistema. As nos aseguramos de determinar la fiabilidad, orden y latencia. Fiabilidad: Determina qu procesos pueden recibir una copia del mensaje, y cada participante tendr que guardar informacin de estado y una copia de los mensajes, para ofrecer atomicidad (a todos los miembros del grupo o a ninguno), fiabilidad (a todos los miembros en funcionamiento), qurum (a una fraccin del grupo), intent (a cada miembro del grupo, pero ninguno garantiza haber recibido el mensaje). Orden: Cada receptor tendr una cola de entregas que reordenar segn restricciones: total causal (en el mismo orden a cada uno respetando el orden de causalidad), total no causal (a todos los miembros sin tener en cuenta el orden causal), causal (respetando las relaciones causales), FIFO (en orden desde cada uno, pero los mensajes provenientes de otros pueden llegar en cualquier orden) y desordenado. Latencia: los procesos que se comunican debern tener en cuenta la latencia elegida para determinar si un mensaje se ha entregado correctamente o no: sncrona (comienza y se completa en tiempo limitado inmediatamente), interactiva (comienza inmediatamente, pero no tiene tiempo limitado), limitada (los mensajes pueden encolarse o retrasarse, pero hay un tiempo lmite para recibirlos) o eventual (los mensajes se pueden encolar o retrasar pero no hay tiempo lmite para la entrega).

Las transacciones en presencia de fallos para saber que se ha ejecutado correctamente y se ha entregado de forma atmica a todos los miembros del grupo puede requerir varias rondas de comunicacin: una primera en la que el emisor Transacciones en presencia de fallos propone la operacin y recoge el acuerdo de los receptores. Si todos estn de acuerdo, el emisor confirma de nuevo a todos que la operacin se puede llevar a cabo (o notifica que se cancela) y por ltimo puede haber una tercera ronda en que los receptores pueden confirmar que han podido llevar a cabo la operacin y el emisor comunica a todos los receptores que la operacin ha ido bien. Con todo ello observamos que la entrega de un solo mensaje a tres destinatarios con ciertas garantas, como en la figura lateral, puede generar mucho ms que los tres mensajes que inicialmente podramos imaginar que se requeriran.

4. COMUNICACIN EN GRUPO Una forma segura que evite todos los inconvenientes mencionados anteriormente sera un modelo de cuasisincrona en la que los eventos duran internos, envios, recepciones y cambios de cardinalidad, donde los mensajes fueran de difusin selectiva a grupos de procesos, donde cualquier pareja de procesos recibe los eventos en orden total y causal y donde una difusin selectiva se entrega a todos los miembros: el vento de entrega y recepcin concurren al mismo tiempo. Es una imagen bonita pero irrealizable, la cuasisincrona es imposible en presencia de fallos, pues los fallos no se puede programar para que no ocurran durante las entregas; adems el sistema avanza paso a paso, tan lento como el ms lento de los procesos y una operacin que bloquease el sistema, cuando lo desbloquease, seguramente se seguira de otra que lo volvera a bloquear, por ello es mucho ms realizable y realista hablar de sincrona virtual.

8 Arquitectura de Sistemas Distribuidos

En este orden de cosas se sita ISIS, es un entorno de programacin de sistemas tolerante a fallos que ofrece este modelo de sincrona virtual, se consigue con ello cierto equilibrio entre velocidad del sistema y tolerancia a fallos.

Arquitectura de Sistemas Distribuidos 9

TEMA 3 REPRESENTACIN DE DATOS

Tema 3 Representacin de datos 1. Antecedentes: el hipertexto 2. Hojas de estilo HTML 3. XML 4. XHTML 5. XSLT

1. ANTECEDENTES: EL HIPERTEXTO La publicacin de pginas mediante HTML ha sido muy til durante muchos aos, pero su principal virtud, que es su publicacin por Internet, se convierte tiempo despus en su principal defecto, pues quiz nos interesara optimizar pginas para pantallas de ordenador, pero tambin para telfonos mviles, mediante archivos de voz, para dispositivos sin teclado o con pantalla tctil, etc. La familia de aplicaciones XML ofrece varias ventajas en su lugar: EN XML se puede escribir informacin estructurada independiente de la presentacin. Los documentos XML se pueden asociar a informacin de presentacin que puede particularizarse para cada medio de presentacin (hojas de estilo). Los documentos XML se pueden transformar en otros documentos XML o de otro tipo. Se pueden expresar operaciones y secuencias de interaccin complejas, especficas para comunidades de personas, denominadas vocabularios.

2. HOJAS DE ESTILO HTML Dos de los problemas ms importantes que tiene el lenguaje HTML son que la informacin de formato y estructura est mezclada y que la variedad de maneras aceptables de expresar una marca es elevada, ya que los pequeos errores siguen siendo bien interpretados por la mayora de los navegadores de Internet. El primer problema se soluciona con las hojas de estilo en cascada (CSS) que podemos aplicar sin problemas en el lenguaje HTML actual; el segundo, en cambio, requiere un nuevo lenguaje ms estricto basado en XML: el XHTML. Suele ser recomendable dejar toda la informacin de estilo de un sitio web completo en u documento aparte, compartido por todos los documentos HTML; as un cambio en el documento de estilo afectar inmediatamente a todos los documentos que usen ese estilo. Se les llama hojas de estilo en cascada o superpuestas porque a un mismo documento se le pueden aplicar varios estilos antes de ser presentado, siendo el orden de aplicacin el siguiente: Declaraciones importantes del autor. Declaraciones importantes del lector. Declaraciones normales del autor. Declaraciones implcitas (atributos HTML) del autor. Declaraciones normales del lector. Valores por defecto del agente de usuario (navegador).

Estas hojas en cascada crecen y evolucionan con la web, pero a pesar de ello, el lenguaje HTML est limitado desde el comienzo para la representacin de pginas web; en stas y otras muchas situaciones es necesario un lenguaje para representar datos estructurados: el XML.

3. XML El lenguaje XML (extensible markup language) es el formato universal para documentos estructurados y datos en la web. Un documento XML puede ser perfectamente presentado en la web con formato tanto de forma como de contenido, y adems una persona o un programa podrn automticamente obtener datos del mismo que pueden ser de nuevo procesados.

10 Arquitectura de Sistemas Distribuidos

Por tanto XML puede servir para representar y transportar informacin estructurada como la que se puede guardar en una base de datos, tambin sirve para representar informacin. El XML es ms restrictivo que el HTML, pero se permite que diferentes comunidades pueden intercambiar documentos siempre que se pongan de acuerdo en el nombre de los elementos a incluir y la forma de organizarlos; varias organizaciones han definido su propio vocabulario (nombres de elementos y atributos particulares) y conjuntos de restricciones para construir documentos aceptables dentro de su comunidad. Tambin XML puede combinar elementos o atributos definidos por varias comunidades, as el mecanismo de declaracin de espacios de nombres permite asociar un prefijo a cada espacio de nombres o incluso definir el espacio de nombres por defecto para no tener que escribir constantemente el prefijo. La funcin de los esquemas XML es definir y restringir el contenido y estructura de documentos XML expresado en XML y, por tanto, sustituir los DTD (herencia de SGML) por esquemas XML. Un esquema XML resulta bastante ms largo que un DTD, pero a cambio, la verificacin de los datos es ms rigurosa y la exportacin e importacin de datos es ms sencilla para cualquiera que use un procesador de documentos XML que previamente valide el documento contra un esquema.

4. XHTML XHTML es la formulacin de HTML 4.01 en lenguaje XML 1.0; el objetivo es reducir la complejidad que supone procesar documentos HTML y que hace difcil incorporar un navegador a un dispositivo de capacidad reducida. Se trata de limpiar HTML, de crear una nueva base para modularizar y extender el lenguaje, de facilitar que nuevos dispositivos puedan navegar por la web, pero sin romper con HTML.

5. XSLT Es un lenguaje para expresar hojas de estilo; un documento que describe cmo mostrar un documento XML de cierto tipo. Tiene 3 partes: Transformaciones XSL: un lenguaje para transformar documentos XML (representados como una estructura de datos arborescente). El lenguaje de caminos (XPath): un lenguaje de expresiones que usa XSLT para acceder a partes de un documento XML o referenciarlas. Objetos de formato XSL: Un vocabulario XML para expresar el formato de presentacin de un documento, que define objetos y propiedades del formato de un documento y sus componentes. El lenguaje XSL es muy extenso y sigue evolucionando.

Arquitectura de Sistemas Distribuidos 11

TEMA 4 MECANISMOS DE INVOCACIN

Tema 4 Mecanismos de invocacin 1. El mecanismo de invocacin remota 2. Codificacin de datos para el intercambio 3. Formatos de codificacin de datos 4. Invocacin de operaciones remotas (RPC) 5. Tipos de protocolos RPC

1. EL MECANISMO DE INVOCACIN REMOTA El mecanismo fundamental de construccin de programas se basa en la invocacin de trozos de programa entre la memoria y el procesador con la mediacin del bus PCI. Resulta tentador extender este modelo para la invocacin entre mquinas diferentes y sustituyendo el bus PCI por la red. Sera adems ideal que la separacin no se notara, que fuese transparente, pero es difcil dado que la red tiene un comportamiento ms complejo que el bus interno de un PC: se pierden, desordenan, duplican paquetes y, a veces, la red falla. La separacin entre la mquina y el proceso que solicita un servicio y quien realmente lo lleva a cabo da pie a introducir nuevas variantes o parmetros como la arquitectura (tamao y organizacin de los datos), lenguaje de programacin, sistema operativo de ejecucin (puede ser diferente entre las dos mquinas), etc. En general se tratar de pasar toda la informacin, lo ms encapsulada y comprimida posible, pero siendo entendida por las dos mquinas que actan como cliente y servidor respectivamente.

2. CODIFICACIN DE DATOS PARA EL INTERCAMBIO Cualquier mecanismo de invocacin remota necesita pasar datos por la red en forma de secuencia de octetos. Obviamente hay que acordar un mecanismo de codificacin (el emisor) y una interpretacin de los datos recibidos (receptor). El problema es ms complejo de lo que parece a priori: hay que definir qu tipos de datos se van a utilizar (enteros, caracteres, reales), el orden en que se van a enviar estos datos, repertorio o juego de caracteres a utilizar. Es decir, hay que representar en serie un conjunto de datos que inicialmente no estaban pensados para este tipo de representacin y adems si es posible, debemos intentar compactarlo tanto como sea posible para disminuir el trfico en la red y mejorar la velocidad de ejecucin. Hay varios formatos para reducir la complejidad y el coste de los datos: Enviar en el formato interno del emisor o transformar los datos en el formato interno del receptor. En cualquiera de los dos casos el problema es complejo pues uno de los extremos no debe hacer nada y el otro debera conocer como representar los datos para cualquier arquitectura, no parece una solucin viable. Enviar en forma cannica intermedia que debe ser conocida por cada computador. No conversin si los dos computadores son similares. Es decir en el caso anterior si los dos computadores son iguales, estamos haciendo dos conversiones innecesarias. En el formato del emisor incluyendo una indicacin del formato, para que el receptor a la llegada de los mismos, pueda convertirlos.

Otro aspecto interesante es el endian, el orden de representacin de datos de varios bytes de longitud. Puede ser de dos tipos: Little-endian: el byte menos representativo se guarda en la direccin de memoria menor, son little-endian los Pentium, el sistema operativo Windows y distintos tipos de archivos; su ventaja es que las operaciones matemticas son ms fciles de hacer porque el primer byte que se encuentran es el ms pequeo y a partir de ah en orden creciente, se van encontrando los siguientes bytes para operar. Big-endian: El byte ms significativo se guarda en la direccin de memoria menor. Son de este tipo los procesadores motorola, el superSparc de Sun, el

12 Arquitectura de Sistemas Distribuidos

sistema operativo Macintosh y sirve para saber rpidamente si un nmero es positivo o negativo, se guarda tal como se escribe. Cada valor de datos necesita una etiqueta que aporta informacin para delimitar e identificar el valor, suele indicar el tipo de valor, la longitud o la arquitectura (endian). Otra duda es la codificacin textual o binaria; con la primera todo se convierte a texto, es una opcin muy legible y se prefiere por su facilidad para analizar por si algo falla, pero tiene el inconveniente que se usan muchos bits de informacin para expresar algo corto y por tanto la velocidad de ejecucin y la transmisin por la red se resienten. Por el contrario, con la codificacin binaria no se busca legibilidad, sino eficiencia, minimizando el nmero de bits que ocupa la informacin y as minimizando el tiempo de conversin de datos. Para delimitar los elementos a codificar hay varios opciones habituales: Longitud fija: es compacta e inflexible, precisamente el efecto 2000 Formas de delimitar datos se debi a este tipo de codificacin. Solo es recomendable para datos que tengan siempre la misma longitud, pues en otro caso o desperdiciamos mucho espacio o corremos el riesgo de no poder expresar algn dato. Por longitud: Se debe conocer la longitud con antelacin y as al receptor lo primero que le llega es la medida exacta del dato, lo malo es que el emisor debe recorrer todo el dato para poder enviar esta informacin lo primero de todo. Delimitada: En lugar de calcular la longitud, se reserva un smbolo para separar datos (en el ejemplo lateral es ;. Por longitud a fragmentos: Cuando se desconoce la longitud total del dato se utiliza para ser menos lesivo para el emisor; esto posibilita que los datos comiencen a emitirse antes y que el productor pueda ahorrar memoria dedicada a mantener datos preparados para el envo.

Como ya hemos dicho anteriormente, para expresar los datos solemos necesitar una etiqueta que distingue su presencia del resto de datos, la longitud del mismo (si no se usan delimitadores) y el valor que tiene. En general, para minimizar la informacin que se enva por la red podemos usar varios mecanismos: Si todos los datos de un conjunto aparecen siempre y en el mismo orden, la etiqueta se puede omitir. Si la longitud la conocen de antemano los participantes en la comunicacin, tambin se puede omitir. Si los participantes conocen de antemano el valor por defecto que suele tomar el dato, tambin se puede omitir.

3. FORMATOS DE CODIFICACIN DE DATOS Tenemos varios formatos para codificar los datos que estudiaremos a continuacin: XML (el nico textual, el resto son binarios), XDR, ASN.1, Network data representation, Common data representation y serializacin de objetos java. XML Es el nico sistema que representa datos en forma textual, no siendo una representacin nada compacta (como se ve en la tabla lateral), pero s que muy informativa y fcil de entender.
XML <?xml version=1.0?> <methodCall> <methodName>buscar</methodName> <params> <param> <value> <struct> <member><name>nombre</name><value>Juan </value></member> <member><name>edad</name><value><i4> 42 </i4></value></member> </struct></value></param> </params></methodCall>

Arquitectura de Sistemas Distribuidos 13

XDR

External data representation (XDR) Soporta todos los tipos del lenguaje C, define la forma cannica intermedia, no usa etiquetas y utiliza big-endian. Abstract suntax notation 1 (ASN.1) Su formato es [etiqueta, longitud, valor], si ocupa menos de 127 bits, ocupa 1 byte, utiliza big-endian. Network data representation Adoptado por Microsoft para invocacin remota binaria; el emisor enva en su orden endian preferido y el receptor se encargar de arreglarlo, las etiquetas se indican en cada mensaje, pero los datos no las llevan. Common data representation (CDR) Definido en Corba 2.0 permite representar tanto big como little-endian. Los valores se transmiten en el orden del emisor: se enva etiqueta de arquitectura, pero no se envan etiquetas de tipo pues es implcito: el emisor y el receptor ya lo han acordado previamente. Serializacin de objetos Java Es especfico para el lenguaje Java. En general la ventaja principal de XDR es su simplicidad, pues usa enteros de longitud fija y todos los datos ocupan mltiplos de 4 bytes, los ms pequeos se redondean con bits a 0. CDR es ms complejo que XDR y permite seleccionar entre big y little endian, lo que permite ahorrar conversiones entre mquinas. ASN.1 es ms ineficiente en espacio y codificacin; el mecanismo de empaquetado de tipos y longitudes hace que requiera ms instrucciones para procesar los datos. Por ltimo, XML ocupa mucho ms espacio, el cdigo para (des)codificar es ms complejo y lento, pero su forma textual hace que sea muy fcil de depurar.

Common Data Representation

4. INVOCACIN DE OPERACIONES REMOTAS (RPC) La invocacin de operaciones remotas exige un protocolo mucho ms ordenado que a nivel local, y suele tener 4 fases: Recogida del proceso. Envo de los datos por la red. Seleccin del proceso. Invocacin de la peticin

Y todo esto x2 para devolver los resultados, claro. Esta comunicacin podra realizarse por TCP pero como tiene bajo rendimiento para transferencias breves no sabemos si es lo ms adecuado. Los principales problemas que surgen al convertir una llamada local en remota son: Gestin de la memoria y referencias: Todo esto es muy problemtico, en especial los apuntadores. Estas referencias a espacios de memoria local que a veces no tienen longitud definida son poco propensos a ser eficientes en invocaciones remotas. Tratamiento de errores: Puede fallar adems del cliente, la red o el servidor, y el cliente debe poder reaccionar, reenviando la informacin si el fallo es temporal o informando del error cuando no se pueda solucionar. El tratamiento de estas situaciones se hace con construccin de excepciones, como en Java o C++.

14 Arquitectura de Sistemas Distribuidos

Garantas de ejecucin: No es lo mismo que la invocacin falle a la ida, que falle a la vuelta. Para diferenciarlas se pueden ofrecer garantas de entrega.

5. TIPOS DE PROTOCOLOS RPC Veamos algunas caractersticas muy someras de los distintos protocolos RPC: ONC-RPC: Basado en los tipos de datos del lenguaje C, se ha popularizado por su uso en NFS. Corba, DCOM: Desarrollado por la Open Software Foundation y adoptado por Microsoft. RMI (Remote method invocation): Es el mecanismo de invocacin remota de Java, y sirve para indicar mtodos de otros objetos dentro de la misma o en otra mquina virtual; en este ltimo caso los objetos deben declarar que implementan la interfaz remote y tambin la excepcin java.rmi.remoteException para el tratamiento de excepciones. Es el mtodo ms sencillo porque originariamente ya estaba pensado para la invocacin remota y es un mtodo muy homogneo HTTP (Invocacin sobre web): Fue concebido como un mecanismo de peticin/respuesta en el que se intercambian mensajes y se invocan mtodos predefinidos (get, put). Con la aparicin del servidor HTTPD se defini un mecanismo simple CGI (interfaz comn de pasarela) para invocar distintos comandos al estilo Unix. SOAP (Simple object access protocol): Es un protocolo para intercambiar en la web datos estructurados y con tipo asociado; puede combinarse con protocolos y formatos como MIME, SMTP y HTTP, para aplicaciones como RPC y mensajera.

Arquitectura de Sistemas Distribuidos 15

TEMA 5 ARQUITECTURA DE APLICACIONES WEB

Tema 5 Arquitectura web

de

aplicaciones

1. CARACTERSTICAS DE LA DEMANDA DE PGINAS WEB El trfico web es el responsable de un buen porcentaje del trfico en Internet (73%) y no parece que vaya a tender a disminuir; pero lejos de ser un flujo de trfico constante es muy voluble y cambiante. Un mismo sitio puede recibir muy pocas visitas durante mucho tiempo y, de repente, recibir ms peticiones de las que puede servir (trfico a rfagas); adems dentro de un mismo sitio web, la frecuencia de acceso a documentos sigue la distribucin de Zipf, que fija logartmicamente esta distribucin, pero que a grandes rasgos indica que unos pocos documentos copan casi todos los accesos, mientras que la mayora apenas son visitados; podemos observar en la figura lateral esta distribucin de popularidad de Zipf en su formato logartmico y lineal. Como resumen podemos decir que los distintos estudios del trfico en web han arrojado las siguientes caracterticas El tamao medio de un objeto es de 10-15 Kbytes, aunque tambin existen documentos de varios Megabytes pero comparativamente son los menos. La mayora de los accesos a la web son por objetos grficos. Una pgina html incluye una media de 10 imgenes y mltiples enlaces a otras pginas. El trfico web es a rfagas, por lo que valores medidos con medias durante decenas de segundo son poco fiables. Se cancelan un 5-10% de los accesos web antes de finalizar.

1. Caractersticas de la demanda de pginas web 2. Organizacin de las aplicaciones en servidores web 3. Servidores Proxy-cach web 4. Contenidos distribuidos

Distribucin de Zipf Logartmica y lineal

Es importante probar el rendimiento de un servidor para comprobar que todo funciona correctamente; as evitaremos la degradacin del servicio (responde muy lentamente por exceso de peticiones o trfico) o situaciones crticas (sobrecargas que hacen que no responda). Para esto la mayora de los servidores web disponen de herramientas de visualizacin y archivos log que almacenan todos los sucesos y peticiones que reciben.

2. ORGANIZACIN DE LAS APLICACIONES EN SERVIDORES WEB La organizacin de un servidor web requiere conocer algunos trminos: Proceso: La unidad ms pesada de la planificacin de tareas que ofrece el sistema operativo. No comparte espacios de direcciones ni recursos relacionados con ficheros. Flujo: La unidad ms ligera de planificacin de tareas que ofrece el sistema operativo. Como mnimo hay un flujo por proceso, y si hay ms de uno, comparten la misma memoria y recursos de archivo. Fibra: Flujos gestionados por el usuario con cambios de contexto en operaciones de entrada/salida.

Ahora bien, se pueden combinar procesos, flujos y fibras de forma nica o mltiple, dependiendo del tipo de servidor web que queramos construir. En general, los modelos con muchos procesos son costosos de memoria y de carga; en servidores de alto rendimiento, los modelos con flujos parecen mejores porque son muy rpidos atendiendo peticiones, aunque son poco portables. En mquinas con un nico procesador los modelos con un solo flujo funcionan bien, en mquinas multiprocesador, es necesario usar mltiples flujos o procesos para aprovechar el hardware. En definitiva, como todo depende del hardware que tengamos y del tipo de servidor web que queramos montar, lo mejor es decantarse por un software

16 Arquitectura de Sistemas Distribuidos

modular, como Apache 2.0 que permite con su mdulo de gestin de procesos seleccionar en la instalacin el tipo de modelo que queramos ejecutar. Como modelos de organizacin encontramos: CGI: Common gateway interface, es la interfaz comn de pasarela, un estndar para proporcionar una interfaz web a programas que se ejecutan en cada peticin. Cada peticin recibe los datos de entrada por la entrada estndar y genera una respuesta por la salida estndar. Es un procedimiento que consume muchos recursos y es lento. FastCGI: Pretenda resolver problemas de velocidad y recursos, principalmente permitiendo que un solo proceso cargado vaya sirviendo peticiones sin descargarse. Los CGI y FastCGI no pueden interactuar con el corazn del servidor (por ejemplo generando logs), para lo que existen alternativas como las APIs de extensin de cada servidor, que son muy prcticas, pero son extensiones no portables (nicas para cada servidor), con complejas de desarrollar y mantener, e introducen riesgo de seguridad en el servidor. Servlet Java: Es una extensin grfica del servidor que se puede cargar dinmicamente en ste para extender la funcionalidad del servidor web. Son portables, potentes, eficientes, seguras y se integran perfectamente con el ervidor.
Organizacin de aplicaciones web CGI FastCGI - APIs - Servlet Java

3. SERVIDORES PROXY-CACHE WEB Un Proxy es un servidor intermediario que acepta peticiones http de clientes u otros intermediarios y genera a su vez peticiones hacia otros intermediarios o hacia el servidor web destino. Acta como servidor del cliente y como cliente del servidor. Aprovechando que tanto la peticin del cliente como el resultado del servidor pasan por este intermediario, se puede aprovechar para ofrecer algunas funciones: Control de acceso a contenidos: El Proxy consulta que la pgina solicitada est permitida por la organizacin. Control de seguridad: El intermediario genera peticiones que salen a Internet, lo que oculta informacin y evita ataques directos sobre las mquinas internas de la organizacin. Adaptar el contenido: Puede tambin adaptar los objetos que vienen del servidor a las caractersticas del cliente: telfonos mviles, PDA, ajustando el tamao y peso de los objetos. Aprovechar peticiones reiteradas: y ser usado como Proxy-cach, que es lo que ms frecuentemente se hace. El intermediario guarda una copia de los objetos pedidos al servidor, as se puede ahorrar trfico y peticiones al servidor, sirvindolas directamente cuando se le vuelvan a pedir.

Como esta ltima funcin se ha extendido mucho, se define una nueva cabecera en el entorno http para controlar este tipo de peticiones, por ejemplo que un determinado objeto no sea almacenable, definir el tiempo de almacenamiento del objeto (expiracin), peticin obligatoria del objeto al servidor, etc. Su uso puede producir una reduccin del trfico de la red y en el tiempo de espera del usuario para recibir los contenidos; actualmente los Proxy-cach son objetos pasivos, pero se han propuesto mejorar para hacerlos ms activos: acumular documentos de inters en horas de bajo trfico para tener el contenido preparado en las horas de trfico pico; traer pginas de Internet que con gran probabilidad un usuario va a consultar a continuacin, etc, pero estos futuros

Arquitectura de Sistemas Distribuidos 17

cambios quiz solo supongan un malgasto de los recursos de comunicacin sin llegar a ser realmente efectivos y prcticos. Cuando varios Proxy-cach cooperan se forma una jerarqua, y si estn al mismo nivel hablamos de hermanamiento; quiz un Proxy-cach no contenga un documento que se le ha pedido y en lugar de pedirlo al servidor, lo pida a un hermano. El problema es que si un Proxy-cach tiene muchos hermanos, genera tantas peticiones como hermanos tiene y puede suponer una mayor saturacin de la red en un intento por ahorrar; un intento de solucionarlo es utilizar los llamados cach-digest, es una tabla hash con la informacin de qu objetos hay en la memoria de trabajo de cada Proxy y que los hermanos piden peridicamente entre s para estar actualizados, as cuando tienen una determinada peticin, se la hacen al hermano que ya saben que tiene la respuesta. El problema que aparece ahora es que es muy posible que muchos hermanos guarden la misma informacin, porque ya sabemos que las peticiones siguen la distribucin de Zipf. Para solucionarlo a su vez apareci el CARP (Cach array routing protocol), que mediante una funcin de hash se calcula a qu servidor pedir determinada informacin, con lo que el contenido no se repite en todos los Proxycach. CARP tiene problemas cuando aparece o desaparece un servidor Proxycach ya que debera cambiar el algoritmo de eleccin y los contenidos que antes se pedan a un servidor determinado, ahora se repartir entre otros.

4. CONTENIDOS DISTRIBUIDOS Las aplicaciones que ofrecen contenidos en Internet se enfrentan al reto de la escala: un solo servidor ante eventualmente millones de personas que pueden pedirle sus servicios todos a la vez: el proveedor de informacin debe poner tantos recursos como audiencia pueda tener. Para poder abarcar toda la audiencia, existen diferentes mtodos para repartir peticiones entre distintas mquinas: Espejos o mirrors con un programa que redirige la peticin http a la mejor rplica. Hacer que el servicio de nombres DNS devuelva diferentes direcciones IP. Redireccin en el nivel de transporte: un encaminador mira los paquetes IP de conexiones TCP hacia un servidor web y las redirige a la mquina interna menos cargada. Redireccin en el nivel de aplicacin: un encaminador mira las conexiones http y puede decidir a qu rplica contactar en funcin del URL solicitado. Mandar todas las peticiones a un Proxy interno que responda o con contenido previamente guardado en la memoria o que pase la peticin a uno o varios servidores internos.

Las redes de distribucin de contenidos (CDN) son empresas que han instalado mquinas en muchos lugares del mundo y algoritmos para decidir qu mquina es la ms adecuada para atender peticiones segn la ubicacin del cliente y la congestin de la red.

Leandro Navarro Moldes, Joan Manuel Marqus i Puig Junio 2006

Arquitectura de sistemas distribuidos

Texto elaborado a partir de:

ADMINISTRACIN DE SISTEMAS OPERATIVOS

Licencia del documento: Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 Espaa

Usted es libre de: -copiar, distribuir y comunicar pblicamente la obra -hacer obras derivadas Bajo las condiciones siguientes: -Reconocimiento: Debe reconocer los crditos de la obra de la manera especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra). -No comercial: No puede utilizar esta obra para fines comerciales. -Compartir bajo la misma licencia: Si altera o transforma esta obra, o genera una obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta. http://creativecommons.org/licenses/by-nc-sa/3.0/es/

Realizado por Jorge Lpez para la web www.sagraramirez.es


Para cualquier correccin, aclaracin o si quieres el documento en formato editable (Open Office), ponte en contacto por correo con la direccin jorge@sagraramirez.es Versin del Documento 1.0.0 24 de diciembre de 2010

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

1-Particiones de disco duro y sistemas de archivos


Particiones de disco
Una particin de un disco es cada una de las divisiones que se pueden realizar en un disco duro fsico (o cualquier otro dispositivo de almacenamiento), de modo que el sistema operativo las identifica como unidades independientes. De este modo podemos hacer creer al ordenador que tenemos varios discos cuando en realidad slo tenemos uno.

Tipos de particiones
Existen tres tipos de particiones: primarias, lgicas y extendidas.

Particiones primarias:
Originariamente en los sistemas Windows cada disco duro slo poda tener 4 particiones, denominadas particiones primarias. Se podran definir como las particiones principales de la unidad. Contienen un nico sistema de archivos, es decir, equivaldran a una unidad para el ordenador. En los sistemas basados en windows la particin de arranque, que contendr el sistema operativo, debe ser una particin primaria. Cuando se formatea todo un disco duro con una sola particin, debe ser primaria.

Particiones extendidas:
Para poder crear ms de las 4 particiones en un disco se crearon las particiones extendidas. Sustituiran a una de las primarias de un disco. Estas particiones no contienen un sistema de archivos (como las primarias) ya que sirven para crear otras particiones dentro de ellas y no para almacenar datos.

Particiones lgicas:
Son cada una de las divisiones de una particin extendida. Como las primarias, tendr un sistema de archivos propio, pero no podr arrancarse el sistema operativo en ordenadores con windows.

Representacin grfica de un disco particionado (fuente: wikipedia.org)

En esta imagen cada recuadro blanco representa algn sistema de archivos. Los espacios en gris representan los espacios sin particionar del disco, que no seran accesibles (huecos en el disco). Las particiones rodeadas por lneas moradas o violetas representan las particiones primarias. Las particiones rodeadas por bordes rojos representan la particin extendida (que es un tipo de particin primaria); y en su interior, se encuentran las particiones lgicas, rodeadas por los bordes de color

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

verde. Como vemos, estamos en el lmite de 4 particiones entre primarias y extendidas, y sta ltima contiene a todas las particiones lgicas.

Sistemas de archivos:
Los sistemas de archivos o ficheros son la estructura con la que se guardan los archivos en el disco. Nos indican cmo se almacenan los documentos, carpetas... en la unidad de almacenamiento (o en una de sus particiones). Existen distintos sistemas de archivos, algunos propios de Windows y otros de Linux. Los sistemas ms utilizados son: FAT y FAT32: Usado por los primeros sistemas de Microsoft (DOS yWindows). Tambin est soportado por Linux. Hoy en da slo se suele utilizar en unidades extraibles (como pendrives). Su principal limitacin es el tamao de las unidades (en FAT32 hasta 2TB) y que no soporta archivos muy grandes (como mximo 4 GB). NTFS: Sistema utilizado en la actualidad por windows. Elimina la mayor parte de sus desventajas pero no es recomendable para unidades pequeas ya que necesita mucho espacio para datos de control. Microsoft permite convertir una particin FAT en NTFS sin perder los datos, pero no al revs. Ext2, ext3 y ext4 (extended filesystem 2, 3 y 4): son distintas versiones de uno de los sistemas de archivos utilizados por linux. Soportan cada vez mayor tamao de archivos y de disco, siendo superiores los lmites a los de los sistemas de windows. Para poder ver particiones con este formato en windows es necesario instalar unos drivers especiales, ya que por defecto Microsoft no lo soporta. XFS: es otro de los sistemas de archivos ms utilizados en Linux. Soporta journaling: mantiene un registro de todos los ficheros que se van a modificar antes de hacer los cambios, de modo que si hay un problema y el ordenador se reinicia, podra acabar las modificaciones que se hubieran quedado a mitad. Swap o rea de intercambio: no es un sistema de archivos propiamente dicho. Simplificando mucho, las particiones con este formato se usan en linux como ampliacin de la memoria RAM. Cuando la memoria se llena en este espacio del disco duro se almacena la informacin de los procesos menos utilizados. Su funcin es similar a la memoria virtual de los sistemas windows, pero con una particin independiente en vez de un fichero en la particin del sistema. Las principales razones para utilizar particiones en un disco son: -Utilizar discos ms grandes de los soportados por el sistema operativo: aunque esto ya no suele ser necesario, hace unos aos se podan comprar discos duros de tamao mayor que el tamao ms grande que poda soportar el sistema operativo. Por esta razn, si no se creaban particiones, haba una parte del disco duro que no poda ser utilizado. -Poder separar informacin de sistema de los datos de usuario: podramos instalar el sistema operativo en una particin y guardar nuestros datos en otra. De este modo si necesitramos reinstalar el sistema operativo porque hubiera quedado daado podramos formatear esa particin (borrando todos los datos que incluya) sin perder nuestros ficheros, que se encontraran en otra particin. -Instalar varios sistemas operativos en el mismo ordenador: cuando queremos tener ms de un sistema operativo distinto en un ordenador (por ejemplo Linux y Windows) es necesario tener una particin distinta para cada uno de ellos. Despus podramos elegir con qu sistema arrancar el ordenador usando un gestor de arranque (tal y como veremos ms tarde). -Necesidad del sistema operativo: en algunos sistemas linux se recomienda tener particiones especficas para distintas funciones, como la particin de intercambio (swap) o una particin para arranque o para backup de datos.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

2-Creacin de particiones
Para crear particiones en un disco duro nuevo o modificar las existentes es necesario un programa de particionado. Existen programas propietarios (como Partition Magic) o libres (como gparted), pero el funcionamiento de todos ellos es similar. -Sobre un disco vaco habra que elegir cuntas particiones queremos hacer, indicando el tamao y el sistema de archivos de cada una de ellas. Tambin deberamos definir si se trata de una particin primaria o lgica (el sistema suele crear la particin extendida cuando hay varias lgicas contiguas). -Sobre un disco en el que ya tenemos datos, podramos modificar el tamao de las particiones o crear nuevas siempre que dispongamos de espacio libre. En este caso el proceso puede ser lento ya que a veces es necesario mover datos que estaban fsicamente en un lugar del disco a otro que no se estuviera usando. Los cambios en las particiones de discos que ya tienen informacin deben hacerse sin que se estn utilizando los datos, es decir, despus de arrancar el ordenador y antes de iniciar el sistema operativo. Los programas de particionado que funcionan sobre el sistema operativo te obligan a reiniciar para realizar todos los cambios que necesarios. Modificar las particiones existentes es un proceso crtico, por lo que un problema en el ordenador en ese momento (por ejemplo si se va la luz) puede provocar una prdida de todos los datos del disco. Por esta razn se recomienda hacer una copia de seguridad antes de realizar este tipo de modificaciones. Como ejemplo, vamos a ver cules seran los pasos a realizar para crear las particiones necesarias en un disco duro antes de instalar linux si ya tenemos instalado Windows. 1.- Arrancar el programa de particionado, por ejemplo con un live-CD (un CD que puede arrancar el ordenador por s mismo) que nos permite no utilizar el sistema operativo instalado en el ordenador. El programa nos dir qu particiones tenemos en el disco duro, su formato, su tamao y el espacio utilizado.

2.- Tenemos que redimensionar la particin existente, donde tenemos instalado windows, para dejar espacio para las nuevas particiones. El programa nos permitir hacerla tan pequea como queramos hasta el lmite del espacio utilizado en ella.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

3.- Creamos una primera particin para los datos de linux en el espacio que hayamos dejado libre. Podemos usar por ejemplo el formato ext4. Elegimos su tamao, la posicin (al final o al principio del hueco). Tambin podemos decidir si queremos que sea una particin lgica o primaria, as como elegir el punto de montaje (lugar del sistema de archivos donde accederemos a los datos de esa particin. Este punto lo explicaremos ms adelante).

4.- Creamos otra particin como rea de intercambio (swap) para linux. Histricamente se ha dicho que esta particin debe ser del doble de tamao de la RAM, pero hoy en da con el aumento de la memoria RAM en los equipos es suficiente con elegir el mismo tamao que la RAM que tengamos instalada.

Notar que el tamao posible para la particin es el que dejamos libre al crear la particin ext4

5.- Podemos crear ms particiones. Por ejemplo una particin FAT para datos que podra ser utilizada por los dos sistemas operativos, o una segunda particin de linux para los datos de usuario (que montaramos en /home).

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

6.- Por ltimo, aplicamos los cambios. Hasta este momento no se ha realizado ninguna modificacin en el disco, por lo que podramos haber cancelado la operacin y dejarlo como estaba. Es ahora cuando el programa realizar las modificaciones necesarias, una a una: -primero mover los datos de la particin de windows que estn en la parte final del disco, donde deben ponerse las nuevas particiones, a huecos no utilizados en la parte delantera. -despus cambiar el tamao de la particin de windows -luego crear todas las particiones nuevas que hayamos indicado. Despus de realizar todos estos pasos podremos seguir con la instalacin de linux o reiniciar para arrancar windows. En este ltimo caso, si hubiramos creado alguna particin con formato accesible en windows (FAT o NTFS) nos informara que ha encontrado un nuevo disco y le asignara una letra a esa unidad vaca.

Imagen final de las particiones y pasos a realizar.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

3-Gestores de arranque
Un gestor de arranque es un programa que nos permite elegir entre todos los Sistemas Operativos que tenemos instalados en el ordenador cul arrancar. No hay que confundirlo con el Sector de Arranque o Master Boot Record. El Master Boot Record es el primer sector del disco duro. Almacena un pequeo gestor de arranque y la tabla de particiones del disco, en la que indica las caractersticas de las cuatro particiones primarias (o extendidas) que puede haber en el disco. Para cada particin indicara su tamao, el tipo de sistema de archivos, el tamao del cluster (mnima unidad utilizable en el disco), su localizacin dentro del disco y si es la particin de arranque (la primera a la que se acceder para arrancar el disco duro). En el arranque del ordenador se siguen los siguientes pasos: -En la BIOS del ordenador se indicar el orden en el que deben buscarse los dispositivos para el arranque. Es lo que se denomina secuencia de buteo. Intentar arrancar desde cada uno de los dispositivos indicados. Si no puede, pasar al siguiente (el caso tpico es intentar arrancar desde CD o un pendirve, y si no hay ninguno, pasa a arrancar de disco duro). -Si no hubiera ningn dispositivo previo, se arrancara desde el disco duro. En ese caso el ordenador leera el pequeo gestor de arranque del Master Boot Record. Ah se indica por qu particin deber seguir arrancando: podra ser la nica con un sistema operativo instalado o aquella en la que tenemos el gestor de arranque que nos permitira elegir qu sistema vamos a utilizar. El gestor de arranque, como hemos dicho, permitira elegir el sistema operativo que queremos que arranque entre todos los que tenemos instalado. Algunos de los gestores de arranque ms utilizados son LILO o GRUB. ste ltimo es el que utiliza lliurex y es el que vamos a estudiar. La instalacin de GRUB se hace de forma automtica al instalar lliurex. Por si mismo detecta todos los sistemas operativos que se pueden arrancar en el ordenador (por ejemplo si tuviramos windows previamente instalado o algn otro linux) y genera un men que nos permite elegir uno de ellos. Tambin permitira elegir distintas opciones dentro de esos sistemas operativos instalados (como arrancar a prueba de fallos). Para modificar posteriormente GRUB tendramos que arrancar lliurex e ir a la opcin Sistema>Administracin>Administracin de Arranque

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Opciones de arranque

En esa pequea aplicacin podramos modificar el funcionamiento de GRUB. Por ejemplo podemos elegir qu sistema operativo queremos que arranque por defecto (si no modificamos nada, arrancara lliurex) o el tiempo de espera para que ocurra este arranque automtico. Tambin podramos modificar manualmente el fichero de configuracin de grub (/boot/grub/grub.cfg), pero no es recomendable si no tenemos amplios conocimientos de su funcionamiento. Hay que tener en cuenta que la instalacin de windows sobreescribe el Master Boot Record y hace que arranque directamente su particin. Por esa razn, si queremos instalar en un ordenador windows y linux debemos instalar primero windows. Del mismo modo, si tenemos que reinstalar windows (por algn fallo en el sistema) GRUB quedar inutilizado. Si ocurre esto, deberamos reinstalar el gestor de arranque. Para reinstalarlo deberamos arrancar de nuevo con un liveDVD (como hicimos al instalar lliurex), montar la unidad de disco donde tenemos lliurex instalado y ejecutar el comando adecuado (sobrepasa el contenido de este manual). Al reiniciar el ordenador arrancara lliurex directamente. Tendramos que modificar GRUB, como se ha explicado antes, para aadir el sistema windows nuevo que borr el gestor.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

4-Sistema de archivos en windows: unidades, directorios, archivos


Windows estructura la informacin de forma jerrquica. Dentro de esta estructura podemos diferenciar archivos, directorios y unidades.

Archivos
Los archivos son conjuntos de bits almacenados en un dispositivo. La organizacin de los bits dentro del fichero depender del tipo de archivo con el que estemos trabajando. Se pueden diferenciar 2 tipos de archivos: los ejecutables, que pueden funcionar y realizar instrucciones en el ordenador por si mismos; y los no ejecutables, que necesitaran un ejecutable para poder ver su contenido (por ejemplo un documento de texto o una imagen). Los archivos se identifican en windows con un nombre y una extensin separadas por un punto. En los primeros sistemas DOS (origen de windows) los nombres slo podan tener 8 caracteres y las extensiones 3. Las ltimas versiones de windows permiten nombres y extensiones de mayor tamao, aunque por compatibilidad las extensiones suelen usarse todava con 3 caracteres. La extensin se utiliza para identificar el tipo de archivo, es decir, la informacin que est guardada en l, la estructura interna, el programa con el que se abrir... Los sistemas windows no diferencian maysculas y minsculas en los nombres de archivo o directorio, por lo que se pueden usar unas y otras indistintamente para referirnos a un archivo.

Directorios
Los directorios se utilizan para organizar la informacin. Es una agrupacin de archivos de datos o de otros directorios. En los directorios se almacena un listado de los archivos y directorios que contiene as como la informacin de localizacin de los mismos en el disco Desde la aparicin de los sistemas grficos los directorios se denominan tambin carpetas ya que es el icono que se ha elegido para representarlos.

Unidades
Las unidades son cada uno de los dispositivos de almacenamiento de que dispone el ordenador. Windows identifica cada unidad con una letra mayscula seguida de 2 puntos (:). Aunque las ltimas versiones de windows permiten cambiar la letra de una unidad, las letras ms habituales y que se configuran por defecto son: A: Para la disquetera (La letra B: se reserva para una segunda disquetera, aunque ahora es poco habitual) C: Para el disco duro principal, donde est instalado el sistema operativo D: Para el CD o el segundo disco duro. A partir de aqu, el sistema operativo va asignando las letras por orden: otros discos duros, grabadora de DVD/CD, lectores de tarjeta... Al introducir un pendrive le asigna la letra posterior a la ltima utilizada. Por ltimo, para las unidades de red (acceso a carpetas/unidades compartidas en otro ordenador) se suelen elegir las ltimas letras del abecedario: Z, Y, X...

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ruta
La ruta es la forma de referenciar un archivo o directorio. Es una cadena de texto que no da toda la informacin necesaria para poder encontrar ese recurso en el ordenador. En los sistemas windows, la estructura de la ruta de un archivo o directorio es la siguiente: -Primero el identificador de la unidad seguido de \, que hace de carcter separador. -Despus toda la lista de carpetas dentro de esa unidad a las que habra que entrar para llegar al recurso. Despus de cada directorio se vuelve a aadir el carcter separador \ (en la barra de direcciones del explorador de windows se puede ver la ruta hasta este punto). -Al final el nombre del archivo (con la extensin) o el nombre del directorio seguido de \ (para saber que se trata de un directorio y no un archivo. Por ejemplo, el programa de la calculadora tiene normalmente la siguiente ruta en windows: C:\WINDOWS\system32\calc.exe De donde podemos deducir que el programa est en la unidad C: (que suele indicar el disco duro); dentro de ese disco en el directorio Windows y dentro en el directorio System32; y el programa se llama calc.exe. Recordad que podemos poner WINDOWS o Windows para referirnos al mismo directorio ya que windows no diferencia maysculas y minsculas Y el directorio mis Documentos de un usuario podra tener la siguiente ruta (acabada en \ porque se refiere a un directorio y no a un fichero: C:\Documents and settings\1bach\Mis Documentos\

Captura del explorador de windows en la que podemos ver la ruta hasta el directorio. A ella habra que aadir la ltima barra y el nombre del archivo.

Principales directorios en los sistemas windows:


Los principales directorios de un sistema windows son (normalmente en la unidad C:) -Windows: guarda el sistema operativo y todos los programas que se instalan con l, como la calculadora o paint. -Documents and settings: guarda los ficheros y la configuracin de los usuarios. Dentro de este directorio hay un directorio por usuario, otro para todos los usuarios denominado All Users (lo que se aada/cambie ah afectar a todos, como los programas del men inicio) y otro para el usuario por defecto llamado Default User (que es la configuracin inicial que se copia a los nuevos usuarios en el primer arranque de sesin)

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Directorios de Documents and Settings

Dentro del directorio de cada usuario encontraramos, entre otros, carpetas con sus datos (por ejemplo Mis documentos o Escritorio) o configuracin personal de algunos programas (como Configuracin Local o Datos de Programa)

Ejemplo de directorio personal

-El ultimo directorio importante es Archivos de programa, donde se instalan todos los programas que no vienen con el Sistema Operativo, como puede ser el Office o el Openoffice, Firefox, Gimp, juegos...

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Programas instalados en Archivos de Programa

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

5-Sistema de archivos en linux: /, volmenes, directorios, archivos


Linux tambin estructura la informacin de forma jerrquica, aunque tiene algunas diferencias con respecto a Windows. Tambin encontramos archivos y directorios. A las unidades les denomina volmenes y las trata como un directorio ms.

Archivos
Los archivos son conjuntos de bits almacenados en un dispositivo. La organizacin de los bits dentro del fichero depender del tipo de archivo con el que estemos trabajando. Se pueden diferenciar 2 tipos de archivos: los ejecutables, que pueden funcionar y realizar instrucciones en el ordenador por si mismos; y los no ejecutables, que necesitaran un ejecutable para poder ver su contenido (por ejemplo un documento de texto o una imagen). En linux tambin son archivos todos los recursos hardware, como puede ser una impresora o un disco duro o cdrom. En este caso, para acceder al dispositivo se accedera al fichero asociado. Por ejemplo, para imprimir se podra mandar directamente un fichero de texto al fichero de la impresora. Los archivos se identifican en linux con un nombre. A diferencia de windows, pueden llevar una extensin para ayudar a reconocer su contenido, pero en este caso no es obligatoria. La informacin sobre el tipo de archivo va incluida dentro del mismo, en la parte inicial del archivo. La extensin, si la hay, slo sirve para que el usuario sepa el tipo de archivo que se trata pero no para el sistema operativo. Otra diferencia con windows, muy importante, es que linux diferencia en los nombres las maysculas de las minsculas (en ingls se utiliza el trmino case sensitive). As pues, el documento Teoria.odt no sera el mismo que el documento teoria.odt simplemente por el cambio de la T mayscula a minscula. Lo mismo ocurrira si el cambio maysculas/minsculas se diera en la extensin.

Directorios
Los directorios se utilizan para organizar la informacin. Es una agrupacin de archivos de datos o de otros directorios. En los directorios se almacena un listado de los archivos y directorios que contiene as como la informacin de localizacin de los mismos en el disco Desde la aparicin de los sistemas grficos los directorios se denominan tambin carpetas ya que es el icono que se ha elegido para representarlos.

Volmenes
Las volmenes en linux equivalen a las unidades de windows: son cada uno de los dispositivos de almacenamiento de que dispone el ordenador. En linux no se identifican con una letra sino que se tratan de un directorio ms del sistema. Para acceder a un dispositivo de almacenamiento, linux debe montarlo: asignarle un directorio dentro de la estructura jerrquica del sistema. Al entrar en ese directorio estaramos entrando en la unidad. En el caso de los dispositivos extraibles (pendrives, disquetes, Cds...) linux suele montarlos en la carpeta /media/. Por ejemplo, la carpeta /media/disk/ podra referirse a un pendrive. Para extraer el dispositivo habra que desmontarlo, proceso por el que desaparecera la carpeta y dejara de ser accesible.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ruta
La ruta es la forma de referenciar un archivo o directorio. Es una cadena de texto que no da toda la informacin necesaria para poder encontrar ese recurso en el ordenador. La principal diferencia con windows es que el carcter separador de los directorios es la barra (/) y no la contrabarra (\), y que no se usan letras para las unidades, que hemos visto que se identificaban como un directorio. En los sistemas linux, la estructura de la ruta de un archivo o directorio es la siguiente: -Primero el carcter /. Al no utilizar letras para las unidades, todos los recursos del sistema parten de la carpeta raz denominada /. -Despus toda la lista de carpetas a las que habra que entrar para llegar al recurso. Despus de cada directorio se aade el carcter separador /. -Al final el nombre del archivo o el nombre del directorio seguido de / (para saber que se trata de un directorio y no un archivo). Por ejemplo, el programa de la calculadora en lliurex tiene la siguiente ruta /usr/bin/gcalctool De donde podemos deducir que el programa est en el directorio /usr/bin la y el programa se llama gcalctool (sin extensin). Recordad que en linux s que se diferencian las maysculas en los nombres de archivos y directorios, por lo que no sera lo mismo el directorio bin que el directorio Bin, o el programa gcalctool y el programa gCalcTool. Y el directorio personal de un usuario podra tener la siguiente ruta (acabada en / porque se refiere a un directorio y no a un fichero: /home/1bach/

inodo
Un inodo es una estructura de datos que usan todos los sistemas linux. En esta estructura se guarda informacin sobre un fichero o directorio como puede ser el propietario, los permisos, el tipo de fichero o la fecha de creacin, pero no el nombre. Cada archivo tiene asociado un inodo, aunque el mismo inodo podra ser enlazado por varios archivos (se usa para poder llegar a la misma informacin desde distintos sitios, enlazando con distintos nombres el mismo archivo). Los inodos se crean al formatear la particin. Inicialmente estarn vacos, y se van llenando a medida que introducimos datos en el sistema de archivos.

Directorios principales en lliurex


Al instalar lliurex se crean muchos directorios en el directorio /. En cada uno se suele guardar una informacin especfica. Los principales directorios son: /bin y /sbin: programas esenciales del Sistema Operativo /usr/bin: aqu se guardan la mayor parte de los programas que se instalan con lliurex que no son especficos del Sistema Operativo, como las aplicaciones, juegos... Equivaldra a Archivos de Programa en Windows /etc: se guardan los ficheros de configuracin del sistema /home: habr un directorio por cada usuario. En este directorio se guarda toda la informacin del mismo (ficheros, escritorio, configuracin de programas...). Equivaldra a Documents and settings en Windows.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Carpeta home

Carpeta de un usuario. Las carpetas cuyo nombre empiezan por punto son carpetas de configuracin ocultas.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Volmenes extraibles: disk es la carpeta donde se montan los pendrives. Desaparece al desmontarla.

/tmp: ficheros temporales. Se suelen borrar al apagar el ordenador.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

6-Tipo de archivos: extensiones principales. Visor binario de archivos


Los archivos son conjuntos de bits almacenados en un dispositivo. La organizacin de los bits dentro del fichero depender del tipo de archivo con el que estemos trabajando. Se pueden diferenciar 2 tipos de archivos: los ejecutables, que pueden funcionar y realizar instrucciones en el ordenador por si mismos; y los no ejecutables, que necesitaran un ejecutable para poder ver su contenido (por ejemplo un documento de texto o una imagen). Los archivos se identifican de distinto modo en windows y en linux. En windows tienen un nombre y una extensin separadas por un punto. La extensin se utiliza para identificar el tipo de archivo, es decir, la informacin que est guardada en l, la estructura interna, el programa con el que se abrir... En los primeros sistemas DOS (origen de windows) los nombres slo podan tener 8 caracteres y las extensiones 3. Las ltimas versiones de windows permiten nombres y extensiones de mayor tamao, aunque por compatibilidad las extensiones suelen usarse todava con 3 caracteres. En linux, sin embargo, no es necesario usar una extensin para identificar el tipo de archivo, ya que esa informacin se guarda dentro del fichero en la parte inicial. De todos modos, suele ponerse extensin para que el usuario sepa el tipo de archivo que se trata. Otra diferencia entre windows y linux es que en linux s que se tienen en cuenta las maysculas y minsculas en los nombre de fichero (texto.doc, Texto.doc y TEXTO.doc seran 3 ficheros distintos) mientras que en windows no. Las extensiones, as pues, son la forma que tiene windows y los usuarios de identificar el tipo de archivo. Las principales extensiones se pueden ver en estas tablas:

Documentos de suite ofimtica:


Tipo de programa Procesador de texto Hoja de clculo Presentaciones digitales Bases de datos Dibujo vectorial Extensin Office Word: doc. Word 2007: docx Excel: xls Excel 3007: xlsx Power Point: ppt y pps Power Pont 2007: pptx y ppsx Access: mdb Extensin Openoffice Writer: odt Calc: ods Impress: odp Base: odf Draw: odg

Otros documentos ofimticos:


Tipo de archivo Fichero de texto Fichero de acrobat (adobe) Extensin txt pdf

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Imgenes:
Tipo de archivo y caractersticas Imagen de mapa de bits (paint) Imagen comprimida jpg (cmaras de fotos) Imagen formato libre Imagen de photoshop Imagen de GIMP Imagen vectorial de Inkscape Imagen vectorial de Corel Draw Imagen de escner Extensin bmp jpg png psd xcf svg cdr tiff

Imagen comprimida gif (permite animacin) gif

Documentos de audio:
Tipo de archivo y caractersticas Archivo de audio comprimido Archivo de ondas (sin comprimir) Archivo comprimido de windows rdenes para un sintetizador (politono) Archivo de audio Real Player (Real Audio) Archivo libre de audio Proyecto de audacity Extensin mp3 wav wma mid o midi rm/rma/ra ogg aup

Documentos de video:
Tipo de archivo y caractersticas Vdeo comprimido divx o xvid (MPEG4) Video mpeg2 Vdeo de Real Player (Real Video) Video Quick Time Vdeo de Windows Media Matroska video Flash Vdeo (youtube) Archivo libre de vdeo Extensin avi mpg rm/rmv/rv mov wmv mkv flv ogg

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Programas y documentos de sistema:


Tipo de archivo y caractersticas Programas ejecutables Archivo por lotes MS-DOS Aplicacin MS-DOS Archivo de sistema Librera, extensin de aplicacin Drivers de perifricos Fuente Acceso Directo (windows) Extensin exe bat com sys dll ini, drv ttf, fon lnk

Documentos comprimidos:
Tipo de archivo y caractersticas Documento comprimido con winzip Documento comprimido con winrar Otros documentos comprimidos Extensin zip rar arj, ace ...

Documentos de Internet:
Tipo de archivo y caractersticas Pgina web esttica Pgina web dinmica Pgina web dinmica (microsoft) Hoja de estilos Extensin html o htm php asp css

Es posible ver la informacin interna de cualquier fichero. Para ello hay que utilizar unos programas especiales denominado visores de archivos. Estos programas nos permiten ver todos los bytes que tiene un archivo, tanto en formato hexadecimal como en ASCII (nos muestra los caracteres a los que se corresponden esos bytes). Uno de los programas que nos dan esa informacin es HxD (http://mh-nexus.de/en/hxd/). Se trata de un programa gratuito que dispone de una versin portable que se puede llevar en un pendrive y ejecutarlo sin instalarlo en el ordenador. La parte ms importante de un documento suele ser el principio y el final del archivo. En esta parte se encuentra la informacin sobre el tipo de fichero, el programa con el que se ha creado, la versin, el autor, configuraciones del programa con el que se abrir...

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Vista interna de un fichero de openoffice. Se puede ver informacin de configuracin del programa

Vista interna de una imagen de formato BMP (Paint)

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

7-Personalizacin del SO windows: escritorio, ratn, modificacin de los accesos directos del men Inicio para un usuario/todos los usuarios
Personalizacin del escritorio
En los Sistemas Operativos actuales los usuarios trabajan con una interfaz grfica. Cada programa se abre en una ventana y se utiliza el ratn para trabajar (a diferencia de las consolas que slo permiten introducir comandos de texto con el teclado). La mayor parte de Sistemas Operativos permiten personalizar el escritorio. Para realizar esa personalizacin en windows, pulsamos con el botn derecho sobre el escritorio y elegimos la opcin Propiedades. Nos saldr una ventana de propiedades de Pantalla con las siguientes pestaas: -Temas: modifica el fondo, sonidos, iconos... de forma conjunta. Utiliza unas configuraciones pregrabadas por el sistema.

-Escritorio: permite elegir la imagen de fondo de pantalla (o un color plano). Si la imagen es ms pequea que el tamao de la pantalla se puede poner en el centro, expandir para que ocupe toda la pantalla o poner como mosaico de modo que se repite hasta que se rellena el monitor. Para evitar que al expandir la imagen quede pixelada es recomendable bajar una imagen de tamao grande (lo ideal es que la cojamos de la resolucin que tengamos puesta en el monitor). Con el botn personalizar escritorio podemos elegir si queremos que los iconos de MiPC, Mis Documentos y Mis sitios de red aparezcan en el escritorio. Tambin nos deja modificar esos iconos.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-Protector de pantalla: permite elegir un protector de pantalla que se activar cuando no usemos el ordenador. Podemos poner una contrasea para volver a la sesin (y evitar el acceso de personas ajenas al ordenador). Con el botn Energa podemos hacer que el monitor se apague para ahorrar energa, y en el caso de los porttiles evitar que nos consuma ms batera de la necesaria. -Apariencia: permite ajustar la forma (redondeada o cuadrada), los colores de las ventanas y el tamao del texto. Podemos modificar ms opciones con el botn Efectos... como hacer los iconos ms grandes (funcin til si tenemos una resolucin de pantalla grande) o con opciones avanzadas en las que podemos cambiar el color de todas las opciones de las ventanas. -Propiedades de pantalla: permite elegir la resolucin (nmero de puntos que se representan en la pantalla). A ms resolucin, ms pequeos se vern los iconos ya que cada punto ser ms pequeo. En el caso de los monitores LCD hay una resolucin ptima que se corresponde con los puntos reales que tiene el monitor. Cualquier otra resolucin har que las imgenes se vean deformadas ya que tienen que ajustar los puntos elegidos con los puntos del monitor. Otra opcin es la calidad del color, que nos dice cuntos colores distintos podr representar el monitor. Hay que intentar dejarlo al mximo soportado. Si el ordenador tiene ms de una salida de vdeo (por ejemplo 2 tarjetas grficas, o una salida externa y la pantalla del porttil) nos permite modificar la configuracin de ambas salidas. Si estamos trabajando con los dos o ms monitores a la vez, pulsando identificar nos muestra en la pantalla su nmero. Las opciones avanzadas permiten modificar configuracin propia de la tarjeta grfica. Nos abrir el software de configuracin del propio fabricante que deberemos haber instalado con los drivers de la tarjeta.

Personalizacin del ratn


Windows tambin soporta personalizar algunas opciones del ratn desde el panel de control. La principal modificacin que se puede hacer es cambiar la funcin de los botones izquierdo y derecho,

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

de modo que los zurdos utilicen la mano izquierda y tengan como botn principal el que se activa con el dedo ndice.

Otras opciones que permite son la personalizacin de los punteros (distintos smbolos que puede presentar el puntero del ratn en funcin de su uso -seleccin, ocupado, ajuste, no disponible...), la velocidad del puntero en funcin del movimiento del ratn, opciones sobre la rueda del ratn...

Creacin de accesos directos


Los accesos directos son enlaces a programas o ficheros desde una ubicacin o directorio distinto a donde se encuentran en realidad. Nos permiten, por ejemplo, acceder a la mayor parte de programas del ordenador desde el men Inicio, o a los que usemos ms habitualmente desde el escritorio o la barra de inicio rpido. El acceso directo guarda la ruta absoluta del archivo al que permite acceder, por lo que si cambiamos los nombres de las unidades podra dejar de funcionar correctamente. Los accesos directos se identifican porque aparece una flecha en la parte inferior izquierda del icono. Su extensin de archivo es lnk (del ingls link->enlace).

Para crear un acceso directo tenemos varias opciones: -Pulsar con el botn secundario del ratn y luego elegir la opcin: Enviar a>Escritorio (crear acceso directo). Una vez en el escritorio podramos llevarlo a cualquier otra ubicacin. -Pulsar el botn secundario del ratn en cualquier ubicacin y elegir la opcin Nuevo>Acceso directo... Saldr una ventana nueva en la que tendremos que escribir la ruta del archivo, o buscarlo dndole al botn Examinar

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-Arrastrando el archivo y pulsando la tecla Alt simultneamente. Veremos que cambia el icono y nos aparece la flecha indicndonos que se va a crear un acceso directo.

Modificacin y personalizacin de los programas del men Inicio


Desde el men de Inicio podemos acceder a la mayor parte de programas instalados en el ordenador. Cada vez que instalamos un nuevo programa se suele introducir un acceso directo en este men. Sin embargo es posible crear otros accesos directos o crear carpetas para organizar los que ya tengamos. Todo lo que vemos en la opcin Programas del men Inicio no son ms que carpetas y accesos directos que se encuentran en un directorio de configuracin del ordenador. Para modificarlo nicamente tenemos que ir al directorio y crear las carpetas o accesos directos que queremos. Hay una carpeta para los programas que aparecern a todos los usuarios que se encuentra en C:\Documents and Settings\All Users\Men Inicio\Programas. Lo cambios realizados en esa ubicacin afectaran a todos los usuarios del ordenador. Si quisiramos personalizarlo slo para nuestro usuario, iramos a la carpeta del mismo nombre ubicada en la configuracin de nuestro usuario que se encontrara en: C:\Documents and Settings\ [NOMBRE DE NUESTRO USUARIO]\Men Inicio\Programas.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

8-Cuentas de usuario en windows; creacin, permisos, grupos


Todos los sistemas operativos actuales soportan la creacin de usuarios. Cada usuario del sistema representara a un usuario real que utiliza el ordenador. Las ventajas de utilizar usuarios son, entre otras: -Podra personalizar a su modo su sesin: escritorio, accesos directos, idioma que quiere utilizar, opciones de los principales programas... -Cada usuario dispone de un directorio personal en el que dejar sus ficheros, que podra proteger para que ningn otro usuario pudiera acceder a ellos. -El administrador del sistema puede asignar distintos permisos a cada usuario, de modo que no todos pudieran instalar programas, cambiar configuraciones importantes del ordenador o usar algn perifrico (como la impresora o una grabadora). Windows diferencia 3 tipos de usuario: -Usuarios administradores: son capaces de crear otros usuarios, instalar programas y realizar cualquier cambio en el sistema. -Usuarios limitados: pueden utilizar el ordenador pero no pueden realizar modificaciones como instalar programas o cambiar configuracin de los programas. -Usuario invitado: es un usuario sin contrasea que utilizaran las personas que no acceden al ordenador de forma habitual. No podra realizar ninguna modificacin.

Creacin, modificacin y eliminacin de usuarios en windows con interfaz grfica


Windows permite crear usuarios con una interfaz grfica, a travs de distintas ventanas en las que vamos eligiendo las opciones que deseemos. Tendramos que ir al Panel de Control y elegir la opcin Cuentas de Usuario. Se abrira una ventana como esta:

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Desde esta ventana podemos crear una cuenta nueva o modificar una cuenta existente. Al crear una cuenta nueva nos pedir el nombre, el tipo de cuenta (administrador o limitada) y por ltimo podramos asignarle una contrasea. Los usuarios limitados slo pueden cambiar su cuenta, por ejemplo modificando la imagen, la contrasea y el nombre (es importante recordar que internamente se mantendr el primer nombre asignado a la cuenta, por ejemplo para la carpeta del usuario en documents and settings). En las cuentas administradoras podra adems cambiar tambin el tipo de cuenta (cambiar a limitada) y realizar los cambios anteriores para cualquier otro usuario. Tambin podra eliminar una cuenta (y todos los documentos y configuracin de la misma).

Usuarios en windows con interfaz de comandos


En windows tambin es posible trabajar con usuarios (modificar, crear...) a travs de una interfaz de comandos. Se usa el comando net user, con modificadores en funcin de la accin que queremos realizar. Aqu vamos a ver las opciones ms importantes, aunque existen ms que se podran consultar en el manual del comando. En todos los casos tendramos que ser usuarios administradores para poder aadir/modificar/eliminar usuarios. Para crear un usuario se usa el comando net user nombreusuario [contrasea] /add La contrasea sera opcional: si no se escribe el usuario sera creado sin contrasea.

Ejemplo de creacin de usuario

Para cambiar o crear contrasea se usa el mismo comando, pero si el modificador /add net user nombreusuario contrasea

Cambio de contrasea de usuario

Por ltimo, para eliminar un usuario se usa el mismo comando sin contrasea y con el modificador final /delete net user nombreusuario /delete

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Eliminacin de usuario

Grupos en windows
Adems de usuarios, en la mayor parte de sistemas operativos es posible crear grupos de usuarios. De este modo, cuando tengamos que asignar permisos para un recurso (quin puede acceder a una carpeta, o imprimir, o usar un hardware determinado) es ms rpido y cmodo asignarlo a un grupo que a varios usuarios. Adems, si creamos posteriormente otro usuario lo podemos aadir a un grupo existente y ya tendr asignados todos los pemisos del grupo. Un usuario podra pertenecer a uno o ms grupos, y podr realizar todas las tareas que se permitan a cualquiera de ellos. Para crear grupos o asignar usuarios a los mismos hay que ir a la herramienta que proporciona el Sistema Operativo. En el caso de Windows XP hay que abrir el Panel de Control, despus las Herramientas Administrativas, y por ltimo acceder a Administracin de Equipos. Dentro veremos una opcin que nos permite gestionar los usuarios locales y grupos. [NOTA: No todas las versiones de Windows soportan la creacin de grupos. Las ms bsicas, como la Home Edition, no disponen de esta herramienta]

Entrando en grupos podramos crear un nuevo grupo y asignar despus usuarios al mismo.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ejemplo de grupo con usuarios

Ventana de bsqueda de usuarios para aadir a un grupo

Grupos a travs de la interfaz de comandos


Tambin sera posible aadir un usuario a un grupo a travs de la interfaz de comandos. Se usara el comando net, el mismo que el usado para crear usuarios, pero con el modificador localgroup. Sin ningn parmetro ms nos muestra todos los grupos del sistema:

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Comando para ver los grupos del ordenador

Para crear o eliminar un grupo se aadira en la parte final del comando anterior el nombre del grupo y el modificador /add o /delete.

Creacin del grupo Alumnos

Para aadir o eliminar usuarios de un grupo se pondran el nombre del grupo y despus el nombre del usuario, seguido de /add o /delete segn corresponda. net localgroup nombregrupo nombreusuario /add para aadir un usuario a un grupo net localgroup nombregrupo nombreusuario /delete para quitar un usuario de un grupo

Ejemplo de cmo aadir y eliminar un usuario de un grupo. En este caso es el grupo administradores, por lo que el usuario Usuario1 pasara a ser administrador en vez de usuario limitado

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Permisos
A los usuarios y grupos se le pueden asignar permisos. Estos permisos les permitiran acceder a recursos del sistema. El ejemplo ms fcil es permitir el acceso a una carpeta. Habra que pulsar el botn derecho sobre la carpeta y pulsar propiedades. De la ventana que se abre podramos elegir qu usuarios locales pueden acceder a la misma desde la pestaa Seguridad, y qu tipo de permisos tendrn esos usuarios. [NOTA: no confundir con la pestaa Compartir que se utiliza para permitir el acceso desde otros ordenadores de la red.]

Desde la pestaa seguridad podramos permitir el acceso a esta carpeta a otros usuarios del ordenador.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

9-Cuentas de usuario en linux: creacin, permisos, grupos


Todos los sistemas operativos actuales soportan la creacin de usuarios. Cada usuario del sistema representara a un usuario real que utiliza el ordenador. Las ventajas de utilizar usuarios son, entre otras: -Podra personalizar a su modo su sesin: escritorio, accesos directos, idioma que quiere utilizar, opciones de los principales programas... -Cada usuario dispone de un directorio personal en el que dejar sus ficheros, que podra proteger para que ningn otro usuario pudiera acceder a ellos. -El administrador del sistema puede asignar distintos permisos a cada usuario, de modo que no todos pudieran instalar programas, cambiar configuraciones importantes del ordenador o usar algn perifrico (como la impresora o una grabadora). Los sistemas basados en Linux diferencia 2 tipos de usuario: -Usuario administrador o root: es capaz de realizar cualquier cambio en el sistema. Se recomienda usar este usuario cuando sea imprescindible, por ejemplo, para crear un usuario o instalar algn programa. Una vez realizada la accin deberamos volver a nuestro usuario habitual. -Resto de usuarios: podrn realizar ms o menos funciones segn los permisos asignados, pero, en principio, no podrn realizar cambios importantes en el sistema.

Creacin, modificacin y eliminacin de usuarios en linux con interfaz grfica


Linux, igual que windows permite crear usuarios con una interfaz grfica, a travs de distintas ventanas en las que vamos eligiendo las opciones que deseemos. Las ventanas y cmo accceder a ellas cambiarn segn la distribucin que utilicemos. En el caso de lliurex deberamos ir a

Ventana usuarios y grupos

Desde esta ventana podemos crear una cuenta nueva o modificar una cuenta existente. Al crear una cuenta nueva nos pedir el nombre y la contrasea (a diferencia de windows, lliurex no soporta usuarios sin contrasea). Tambin podramos decir qu permisos le permitimos a ese usuario.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ventana de creacin de usuarios y eleccin de los privilegios

Los usuarios normales solo podrn modificar la contrasea de su cuenta. El usuario root podra realizar cualquier cambio en todas las cuentas, incluso eliminarlas.

Usuarios en linux con interfaz de comandos


En linux tambin es posible trabajar con usuarios (modificar, crear...) a travs de una interfaz de comandos. En todos los casos hay que ser superusuario (salvo para cambiar nuestra propia contrasea). Para crear un usuario se puede usar el comando adduser. Este comando crea un grupo con el mismo nombre que el usuario y pregunta la contrasea y otros datos personales del usuario.

Creacin de un usuario con adduser

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Para modificar la cotrasea se usa el comando passwd. Si el comando se pone sin ningn parmetro cambiar la contrasea del usuario actual.

Por ltimo, se podra eliminar un usuario con el comando userdel seguido del nombre del usuario. Con el modificador -r eliminara tambin sus datos personales userdel -r nombreusuario

Grupos en linux
Adems de usuarios, en la mayor parte de sistemas operativos es posible crear grupos de usuarios. De este modo, cuando tengamos que asignar permisos para un recurso (quin puede acceder a una carpeta, o imprimir, o usar un hardware determinado) es ms rpido y cmodo asignarlo a un grupo que a varios usuarios. Adems, si creamos posteriormente otro usuario lo podemos aadir a un grupo existente y ya tendr asignados todos los pemisos del grupo. Un usuario podra pertenecer a uno o ms grupos, y podr realizar todas las tareas que se permitan a cualquiera de ellos. La misma herramienta que permite crear usuarios en linux tambin permite crear y modificar grupos. En lliurex se accede desde la opcin Sistemas>Usuarios y grupos. Desde la ventana de

En la ventana que aparece podemos crear grupos nuevos, cambiar sus propiedades y asignar usuarios a los grupos. Cada usuario tiene un grupo principal, pero despus puede pertenecer todos los grupos que sea necesario.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ventana del grupo alumnos con los usuarios que pertenecen al mismo marcados

Tambin se pueden crear grupos a travs de una interfaz de comandos con el comando addgroup. Se podra aadir un grupo a un usuario con el comando adduser seguido del nombre del usuario y del nombre del grupo.

Ejemplo de creacin de un grupo y de cmo se aade un usuario al mismo

Permisos en linux
Para linux todos los recursos son archivos. Linux soporta tres tipos de permisos y para tres tipos de usuarios. Los tres tipos de permisos son: -lectura (r): permitira leer el documento, pero sin modificarlo

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-escritura (w): permite modificar el documento o carpeta que lo tiene activado -ejecucin (x): este permiso permite ejecutar el programa o documento. En el caso de los directorios es necesario tener este permiso para poder listar los contenidos del mismo. Estos permisos se suelen representar como 3 bits de valor 1 0, segn si se tiene el permiso (1) o no se tiene (0). El orden de los bits es el mismo que aparece arriba: lectura, escritura y ejecucin. Por ejemplo un permiso 111 indicara que podemos leer, escribir y ejecutar el fichero. Un permiso 101 permitira leerlo y ejecutarlo pero no modificarlo. Normalmente en vez de 1 0 se representa con la letra del tipo de permiso si se tiene (r w x), o un guin si no se tiene. El permiso 101 visto antes se podra representar tambin como r-x. Otra forma de representarlo es con el valor numrico de esos 3 bits: el permiso 101 valdra 5, o el 111 valdra 7. Los tres tipos de usuarios sobre los que se aplican estos permisos son: -El usuario que ha creado el fichero/directorio -El grupo del fichero, que ser el grupo primario del usuario que lo ha creado (recordamos que un usuario puede pertenecer a varios grupos, pero slo uno de ellos ser el primario). -El resto de usuarios Agrupando los dos puntos anteriores, sobre un fichero tendremos 9 permisos (los 3 tipos sobre los 3 tipos de usuario) que se representaran como 9 bits: los 3 primeros seran los permisos (rwx) del usuario, los 3 siguientes los del grupo y los 3 ltimos sobre todos los usuarios. Uno ejemplos de permisos sobre un documento podra ser rwxr-xr-- el usuario podra leer, escribir y ejecutar el fichero; los usuarios del grupo podran leerlo y ejecutarlo; y el resto de usuarios slo podran leerlo. Otra forma de representar ese mismo permiso sera con los nmeros 754 (estos nmeros son la conversin a decimal del binario 111101100) rwxr----- el usuario podra leer, escribir y ejecutar el fichero; los usuarios del grupo podran slo leerlo; y el resto de usuarios no podra acceder al mismo. Otra forma de representar ese mismo permiso sera con los nmeros 740.

Usuarios en servidor
Cuando se dispone de un servidor de usuarios, como pasa en el aula, es posible crear los usuarois y asignar permisos en el servidor en vez de hacerlo en todos los ordenadores de la red. De este modo, cualquier usuario validado en el servidor podr utilizar los recursos del ordenador en el que se encuentre y del resto de la red independientemente de dnde haya inciado la sesin. Adems, podra acceder a sus ficheros personales desde cualquier ordenador ya que stos se encontrarn en el servidor. Si la red tiene muchos ordenadores, usar un servidor para validar a los usuarios facilita el mantenimiento de los mismos, y simplifica la modificacin de la red (por ejemplo al aadir un ordenador o una impresora de red).

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

10-Compartir recuros en windows y linux


Los Sistemas Operativos permiten compartir recursos entre usuarios del mismo ordenador o entre distintos ordenadores. Para que distintos usuarios del mismo ordenador accedan, por ejemplo, a alguna carpeta, se seguira los pasos explicados anteriormente. Ahora vamos a centrarnos en cmo compartiramos recursos entre distintos ordenadores de una red local. En cualquier caso, adems de la configuracin por parte del Sistema Operativo, si existiera un firewall instalado en el ordenador (programa que controla el acceso del ordenador a la red y de la red al ordenador) habra que realizar los cambios oportunos en el mismo.

Compartir recursos en de windows


Windows XP soporta compartir carpetas o dispositivos hardware de forma sencilla, utilizando un asistente, o realizando la configuracin a mano. Vamos a ver el ejemplo de cmo se compartira una carpeta. En primer lugar pulsaramos con el botn derecho sobre la carpeta y elegiramos la opcin Propiedades. En la ventana que se abre hay una pestaa de nombre Compartir en el que se realizara la configuracin.

Al elegir la opcin de compartir sin usar el asistente cambia la vista de este ventana en el apartado de Uso compartido y seguridad de red.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Para compartir deberamos marcar la opcin Compartir esta carpeta en red y elegir el nombre que queremos mostrar al compartir. Podramos elegir si slo se pueden leer los documentos o tambin se pueden modificar. Como se ve, en la parte inferior de la ventana, si tenemos nicamente el Firewall de Windows automticamente se configurar para que se pueda acceder a esta carpeta desde el exterior. Una vez compartida, el icono de la carpeta se modifica aadiendo una mano, de modo que podemos ver rpidamente que tenemos una carpeta compartida.

Para que despus otros ordenadores accedieran a esta carpeta deberan ir en el Explorador de Windows a Mis sitios de red>Toda la Red>Red de Microsoft>Nombre de nuestro grupo de trabajo y luego accederan al nombre de nuestra ordenador y apareceran todas las carpetas o recursos que hubiramos compartido.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Acceso a una carpeta compartida por red

Compartir recursos en linux


Linux puede acceder a carpetas compartidas en sistemas Windows, y tambin permite compartir una carpeta de modo que sea accesible desde ordenadores con Windows. Para poder hacerlo es necesario instalar samba, una versin libre del protocolo de comparticin de archivos de windows. Una vez instalado podramos compartir una de nuestras carpetas pulsando el botn derecho sobre ella y eligiendo la opcin Opciones de comparticin.

Ventana en la que se configura la carpeta como compartida

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Tambin podramos acceder a las carpetas compartidas en otros ordenadores a travs del explorador Nautilus. Una vez abierto seleccionaramos la opcin Red, y luego iramos navegando del mismo modo que se hara en Windows ( Toda la Red > Red de Microsoft > Nombre de nuestro grupo de trabajo).

Ordenadores con windows a los que se accede desde Lliurex

Archivos de usuarios en el servidor


En el modelo de aula de lliurex, independientemente de en qu ordenador estn los alumnos, pueden acceder a sus ficheros cmo si el usuario estuviera en su ordenador. Para conseguirlo se utiliza el protocolo NFS (Network File System o Sistema de Archivos en Red). Este protocolo permite acceder a carpetas en otro ordenador (en nuestro caso el servidor) como si estuvieran en nuestro disco duro de forma transparente al usuario, que puede no ser consciente de ello.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

11-Redes de ordenadores. Topologas.


Qu es una red informtica?
Una red est formada por un conjunto de ordenadores u otros dispositivos informticos conectados entre s con el fin de compartir recursos (ficheros, sistemas de almacenamiento, impresoras, programas). Las conexiones se pueden realizar con cables o de forma inalmbrica, y en funcin del medio fsico elegido, la red tendr distintas prestaciones (velocidad, retardo).

Clasificacin de las redes informticas


Existen distintas formas para clasificar las redes: segn su tamao, el tipo de mquinas que conecta, la topologa Vamos a ver ahora alguna de estas clasificaciones

Segn su tamao:
Redes LAN (Local Area Network-Red de rea Local): son redes de tamao reducido, por ejemplo en una casa, un instituto, una empresa, o un edificio. Generalmente permite que todos los ordenadores conectados en ella se comuniquen directamente entre s. Las LAN estn mantenidas por la empresa, la familia que la instala. Redes WAN (Wide Area Network-Red de rea Amplia): son redes ms grandes, por ejemplo del tamao de una ciudad o un pas. Normalmente se utiliza para conectar varias redes LAN entre s. Las WAN las crean normalmente operadores de telecomunicaciones (Telefnica, ONO, Orange) y luego permiten que las usen sus clientes. Generalmente las redes WAN ofrecen menor velocidad que las LAN. Por ejemplo, dentro del instituto los ordenadores forman una LAN. Lo mismo ocurre con otros institutos y colegios de la Comunidad. Por otro lado, la Conselleria dEducaci conecta todos los institutos y colegios entre s utilizando una red WAN que contrata a un operador (actualmente Telefnica).

Segn la relacin entre los ordenadores:


Redes cliente-servidor: en estas redes unos ordenadores, denominados servidores y normalmente muy potentes, ofrecen servicios (permiten que otros ordenadores se conecten a ellos). Los clientes por su parte utilizan los servicios que ofrecen los servidores (se conectan a los servidores). Por ejemplo en un aula de informtica el ordenador del profesor puede compartir la impresora permitiendo que los ordenadores de los alumnos impriman en ella: el primero sera un servidor, y los otros clientes. Al acceder a una pgina web, tu ordenador es un cliente y el ordenador donde est almacenada la pgina sera el servidor. Redes igualitarias o de pares (peer to peer): en estas redes todos los ordenadores tienen la misma consideracin y todos ofrecen recursos y pueden utilizar los de los dems. Un ejemplo sera la red del e-mule, en la que todos los ordenadores pueden descargarse ficheros compartidos en cualquiera de las mquinas de la red.

Segn la topologa (la forma fsica como se conectan los ordenadores entre s):
Redes en estrella: en estas redes hay un dispositivo central al que se conectan fsicamente el

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

resto. La comunicacin entre 2 ordenadores siempre pasa a travs de este equipo. Por ejemplo en el aula de informtica hay un switch al que se conecta un cable que va a cada ordenador.

Topologas en estrella. Ntese en la segunda imagen que tener un nodo central no implica que fsicamente est en el centro Redes en rbol: estas redes estaran formadas por varias redes en estrella conectadas entre s. De este modo, para enviar datos de un ordenador a otro, stos van bajando por las conexiones (el rbol), y luego subira por otra rama hasta llegar al destino. Esta es la forma que tiene la red del instituto: en cada aula hay una red en estrella, otra para los ordenadores de cada planta, pero luego hay una conexin desde cada aula a un equipo central.

Ejemplo de red en rbol, en la que se conectan distintas redes en estrella Redes en anillo: en estas redes los equipos se conectan formando un anillo, de modo que la informacin va circulando por el anillo hasta que llega a su destino. Esta configuracin ya no se utiliza en redes locales, aunque s en algunas redes WAN.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Topologa en anillo

Direccionamiento en redes: IP, MAC


Protocolos de red
Un protocolo es un conjunto de normas que regula una comunicacin. En el caso de las redes informticas, son una serie de reglas que nos dicen cmo se tiene que intercambiar la informacin entre los ordenadores de la red. De este modo, como todos los ordenadores usan el mismo protocolo son capaces de comunicarse entre si. El protocolo ms utilizado en las redes de comunicacin se denomina TCP/IP. El protocolo TCP/IP est formado realmente por dos protocolos TCP (Transmision control protocol) e IP (Internet protocol). IP se encarga de la transmisin de informacin. Los datos se envan en fragmentos denominados paquetes. Cada uno de los paquetes es independiente y puede ir por caminos diferentes.

Direccin IP
El protocolo IP identifica a los equipos de la red con un nmero denominado direccin IP. Este nmero est formado por 4 bytes (32 bits), y es nico para cada dispositivo dentro de la red. Aunque la direccin IP est formada por 32 bits (32 nmeros con valor 1 0), para facilitar su representacin suele escribirse como 4 nmeros entre 0 y 255 separados por puntos. Por ejemplo una direccin IP podra ser 10.0.2.168, o 1.2.3.4.

Mscara de subred
Dentro de una red local todos los equipos tienen una parte de la direccin comn y otra que los diferencia, de modo que es sencillo saber si un paquete va a un equipo de la propia red o a un equipo de fuera de la misma. Para diferenciar qu parte de la direccin es comn se utiliza la mscara de subred, tambin formada por 32 bits que valen 1 en los bits comunes de la direccin IP en a red, y 0 en los bits que varan entre ordenadores (los 1s siempre estn juntos y a la izquierda). Normalmente las mscaras se representan igual que las direcciones IP, como 4 nmeros separados por 3 puntos. Las mscaras ms habituales tiene 8, 16 24 unos, y el resto ceros. Cada bloque de 8 unos se traduce a 255, y cada 255 en la mscara de subred indica que ese nmero de la IP es fijo en toda la

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

red. Cuantos ms nmeros de la IP puedan variar, ms ordenadores podramos tener en esa red. Por ejemplo, en el aula tenemos una mscara de subred con valor 255.255.255.0. Eso significa que los tres primeros nmeros de la direccin IP son iguales en todos los ordenadores del aula (las IPs del aula son todas del tipo 10.0.2.X, variando slo el ltimo nmero en cada ordenador) y que podramos tener hasta 254 ordenadores. N de bits a 1 en la mscara 8 16 24 Mscara N de dgitos comunes en la IP 1 2 3 N de ordenadores que podramos tener en la red 16777214 65534 254

255.0.0.0 255.255.0.0 255.255.255.0

Los ordenadores podran tener cualquier direccin IP de la red excepto la primera y la ltima, llamadas direccin de red y de broadcast. En las redes como la de clase (con mscara 255.255.255.0) la direccin de red acaba en 0 y la direccin de broadcast en 255.

Direccin MAC
Cada tarjeta de red tiene un identificador nico (denominado direccin MAC o direccin fsica) de 48 bits (6 bytes) que permiten identificarla (suele escribirse en hexadecimal, con nmeros del 0 al 9 y letras de la A a la F. Por ejemplo 02-3A-DE-34-11-0F). De ese modo los datos se envan slo a la direccin de la tarjeta que debe recibirlos, y el resto no los ve. La direccin es asignada por el fabricante y est grabada en un chip de la tarjeta. La primera parte de la direccin (los primeros 24 bits o 6 dgitos hexadecimales) se denominan OUI y son iguales en todas las tarjetas del fabricante.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

12-Configuracin de la conexin de red. Configuracin IP (IP fija o por DHCP)


Configuracin IP
Despus de tener la red disponible, hay que configurarla, asignarle una IP para que se pueda comunicar con otros ordenadores. Si utilizamos el sistema operativo Windows, hay que seguir los siguientes pasos. Primero hay que ir al panel de control, conexiones de red, y pulsar el botn derecho sobre la conexin que acabamos de instalar (generlamente conexin de rea local) pulsar propiedades.

En la ventana que se abre, seleccionar protocolo TCP/IP y volver a pulsar Propiedades. En la siguiente ventana ya se puede dar la configuracin IP al ordenador. Existen 2 mtodos: asignacin automtica o asignacin manual. La asignacin automtica utiliza un protocolo denominado DHCP. Para poder usarla debe haber un equipo en la red que har de servidor, normalmente el router, al que el ordenador pide su configuracin cada vez que arranca. El servidor asignar una IP, una mscara de subred, y la direccin del router (indicado como puerta de enlace) que nos permite conmunicarnos con equipos fuera de nuestra red. Tambin se puede asignar la configuracin DNS. En la asignacin manual podemos poner los datos que queramos. Sin embargo, para que la conexin de red funcione correctamente debemos asignar una mscara de red igual a la del resto de equipos y una direccin IP que est dentro de la propia red y no la est utilizando ningn otro equipo, ya que no puede repetirse. El resto de parmetros (servidor DNS y puerta de enlace predeterminada) deberamos conocerlos para poder asignarlos a mano.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Instalacin de una red de slo 2 ordenadores


Podemos crear una red slo con dos ordenadores conectados directamente. Para ello usaremos un cable especial, denominado cruzado, en la que los pines de los dos extremos no se conectan al mismo cable. Despus deberamos configurar de forma manual los dos equipos, asignndoles IP de la misma red, y ya se podrn pasar informacin entre ellos.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

13-Configuracin de red inalmbrica: mtodos de seguridad


Del mismo modo que hemos visto cmo crear una red cableada, tambin es posible crear una red inalmbrica para conectar distintos ordenadores. Las redes inalmbricas tienen ventajas e inconvenientes sobre las cableadas. Aqu podemos ver algunas de ellas: Ventajas de las redes inalmbricas No necesitan instalar cableado (menor coste de instalacin) Los ordenadores se puede mover por el rea de cobertura de la red Es ms fcil aadir un nuevo PC a la red Inconvenientes de las redes inalmbricas Ofrecen peores velocidades, sobre todo cuando hay muchos equipos (ya que se comparte el ancho de banda) Pueden sufrir interferencias electromagnticas (por ejemplo de otra red inalmbrica cercana) Pueden suponer un riesgo si no se utilizan medidas de seguridad de acceso (cifrado, contraseas...)

Las redes inalmbricas utilizan seales electromagnticas para enviar la informacin entre las mquinas. En Espaa utilizan la frecuencia de 2,4 Mhz. Para que todos los fabricantes sean compatibles entre s, la organizacin IEEE ha aprobado una serie de estndares (normas que se deben seguir) para las redes inalmbricas, que se han numerado como 802.11. Estos estndares definen cmo se pasan los datos entre ordenadores: la velocidad, la frecuencia, el tipo de cifrado... Existen distintos estndares para conexin inalmbrica. Se pueden agrupar en dos categoras segn la frecuencia que utilizan: 802.11b, 802.11g y 802.11n: Utilizan la frecuencia de 2,4 Ghz y son compatibles entre si. El primero es el ms antiguo y el que menos velocidad mxima permite (11 Mbps). El 11g soporta hasta 54 Mbps mientras que el ms nuevo, el 802.11n soporta en teora hasta 600 Mbps, aunque todava no hay equipos que lleguen a tanta velocidad. La principal desventaja de este grupo es que la frecuencia en la que transmiten se usa para otro tipo de comunicaciones como Bluetooth o WUSB. 802.11a: Utiliza la frecuencia de 5GHz y soporta hasta 54 Mbps de velocidad mxima. Tiene menos alcance que las anteriores (a mayor frecuencia, menor alcance) aunque no tiene otras tecnologas que le provoquen interferencias. No se puede usar en Espaa ya que no est permitido usar esa frecuencia de forma libre.

Dispositivos de redes inalmbricas


Para crear una red inalmbrica, hacen falta los mismos dispositivos que para las redes cableadas:

Tarjeta de red inalmbrica


Cumple las mismas funciones que la tarjeta cableada, y se instala del mismo modo. La principal diferencia es que adems de tarjetas que se conectan dentro de la caja del ordenador, existen tarjetas USB que permiten usarse sin necesidad de abrir el ordenador. La instalacin sequira los mismos pasos que vimos en las tarjetas cableadas: se conecta el dispositivo, se instalan los drivers y para acabar se configura.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Punto de acceso inalmbrico


Cumple la misma funcin que un switch en redes cableadas: permite conectar todos los dispositivos inalmbricos entre s. Adems, tiene un puerto RJ-45 para unir nuesta red wireless con una red cableada. Normalmente el punto de acceso est incluido dentro del propio router, por lo que no es necesario tener 2 equipos distintos. Un punto de acceso puede tener un alcance de hasta 150 metros en el exterior, aunque esa distancia se reduce mucho cuando estamos dentro de un edificio y tiene que atravesar paredes.

Repetidor inalmbrico o punto de extensin


Es un equipo que amplifica la seal inalmbrica para ampliar la cobertura, y no tiene conexin a la red cableada. Se colocara al final de la zona de cobertura del punto de acceso y permitira, en el mejor caso, duplicar el alcance. Su funcin es almacenar todos las paquetes que le llegan a travs de la red inalmbrica y volver a transmitirlos despus con mayor seal.

Modos de funcionamiento Wifi


El estndar 802.11 define dos modos operativos: de infraestructura y ad-hoc.

Modo de infraestructura
El modo de infraestructura es aquel en el que los clientes de tecnologa inalmbrica se conectan a un punto de acceso. ste es por lo general el modo predeterminado. En este modo se utiliza un identificador de red deonminado SSID. Se trata de un identificador de 32 caracteres en formato ASCII que acta como su nombre en la red.

Modo ad-hoc
El modo ad-hoc en el que los clientes se conectan entre s sin ningn punto de acceso. En el modo ad hoc los equipos cliente inalmbricos se conectan entre s para formar una red punto a punto, es decir, una red en la que cada equipo acta como cliente y como punto de acceso simultneamente. Sera equivalente a conectar dos ordenadores con un cable cruzado, tal y como se ha explicado ms arriba.

Configuracin de la red inalmbrica


En primer lugar hay que configurar el punto de acceso. Generalmente se hace a travs de un interfaz web del propio dispositivo, poniendo la direccin IP en un navegador (como Mozilla Firefox o Internet Explorer). Si usamos un router que nos da nuestro proveedor de Internet, suele venir configurados de fbrica, con una pegatina debajo del router con los datos necesarios para realizar la conexin.

SSID
El primer dato (y nico imprescindible) que necesitamos saber es el nombre de la red o SSID. Nos permitir diferenciar nuestro punto de acceso de otros con cobertura en la zona. Tambin es posible cambiar otras configuracione secundarias como son el canal por el que enviamos los datos, el estndar que vamos a seguir, o si queremos ocultar el SSID.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Si queremos poner seguridad en nuestra red inalmbrica, tendramos que configurarla tambin en el punto de acceso. Existen distintas formas de seguridad como son el cifrado (WEP o WPA) o el control de acceso por MAC. Para conectar posteriormente el ordenador al punto de acceso, usaremos el icono de red inalmbrica que aparece junto al reloj en la mayor parte de Sistemas Operativos (Windows y Linux). Si los conocemos, podemos escribir a mano el nombre de la red a la que queremos conectarnos, pero es ms sencillo ver todas las diponibles y hacer doble clic en la elegida. En caso de que hayamos puesto seguridad, nos pedir la contrasea para poder conectarnos.

Asistente de windows donde podemos ver las redes disponibles y si tienen seguridad habilitada

Seguridad en redes inalmbricas


Un muy elevado porcentaje de redes son instalados sin tener en consideracin la seguridad convirtiendo as sus redes en redes abiertas (o completamente vulnerables a los crackers), sin proteger la informacin que por ellas circulan. Hay que pensar que, si nosotros podemos conectarnos a nuestra red simplemente encendiendo el ordenador sin realizar ningn tipo de configuracin, nuestros vecinos, o cualquiera que pase por la calle, podr hacerlo tambin. Existen varias alternativas para garantizar la seguridad de estas redes. Las ms comunes son:

SSID oculto
Se puede ocultar el punto de acceso (Router) de manera que sea invisible a otros usuarios. Esto no es realmente una medida de seguridad sino un primer freno a vecinos cotillas o ataques de principiantes. De este modo, al detectar redes inalmbricas disponibles no aparecera nuestra red. Para poder conectarnos nosotros deberamos introducir a mano el nombre de nuestra red en la herramienta para conexin a red inalmbrica.

Filtardo de MAC
La direccin MAC era el identificador de la tarjeta de red. En la mayor parte de puntos de acceso es posible indicar a mano qu direcciones MAC permitimos que se conecten a la red. De este modo,

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

slo permite acceso a la red a aquellos dispositivos autorizados. Su principal inconveniente es que cada vez que queremos que se conecte un nuevo equipo habra que aadirlo a mano. La desventaja de este sistema es que, aunque la direccin MAC venga configurada de fbrica, la mayor parte de sistemas operativos permiten asignar a mano otra direccin MAC, por lo que un vecino listillo podra suplantar a nuestro ordenador y conectarse a nuestra red (aunque no es habitual).

Cifrado WEP
WEP, cifra los datos en su red de forma que slo el destinatario deseado pueda acceder a ellos. Los cifrados de 64 y 128 bits son dos niveles de seguridad WEP. WEP codifica los datos mediante una clave de cifrado antes de enviarlo al aire. Cuanto ms larga sea la clave, ms fuerte ser el cifrado. Cualquier dispositivo de recepcin deber conocer dicha clave para descifrar los datos. Este tipo de cifrado no est muy recomendado, debido a las grandes vulnerabilidades que presenta, ya que cualquier cracker puede conseguir sacar la clave de forma relativamente sencilla.

WPA y WPA2
WPA emplea el cifrado de clave dinmico, lo que significa que la clave est cambiando constantemente y hacen que las incursiones en la red inalmbrica sean ms difciles que con WEP. WPA, y sobre todo su variante WPA2, estn considerado como uno de los ms altos niveles de seguridad inalmbrica, y es el mtodo recomendado si los dispositivos son compatibles con este tipo de cifrado. Las claves se insertan como de dgitos alfanumricos, sin restriccin de longitud, en la que se recomienda utilizar caracteres especiales, nmeros, maysculas y minsculas, y palabras difciles de asociar entre ellas o con informacin personal. Adems de una contrasea WPA es capaz de soportar la autenticacin de usuarios. Cada usuario dispone de un nombre y una contrasea que deber introducir para conectarse a la red. Este mtodo es el utilizado, por ejemplo, en las universidades para que sus estudiantes se conecten a la red inalmbrica.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

14-Conexin a Internet: ISP, principales tecnologas de acceso


Qu es Internet?
Internet no es una nica red, como la que podemos tener en casa o en el instituto. Internet est formada por muchas redes conectadas entre s. Cada una de esas redes es autnoma, gestionada por la propia empresa u organizacin. Por ejemplo tendramos redes de universidades, de grandes empresas, de las administraciones pblicas (ministerios, consellerias, ayuntamientos) o de los operadores de telecomunicaciones (tambin llamados ISP). Para crear Internet, estas redes se conectan entre s mediante routers. Cuando conectamos dos ordenadores, la informacin va saltando entre las redes, para llegar desde el ordenador que la enva a su destino. El camino que siguen los datos se decide a travs de unos protocolos de enrutamiento, que deciden el mejor camino de forma automtica en funcin de muchos parmetros (la velocidad de las lneas, su carga o porcentaje de uso, las conexiones directas entre operadores). La ventaja de usar estos protocolos consiste es que pueden adaptarse por si mismos a los cambios de la red. Por ejemplo, si una excavadora corta un cable de comunicaciones, rpidamente buscaran un camino alternativo para los datos, de modo que seguirn llegando a su destino pero dando un rodeo. Para simplificar las conexiones entre las redes, normalmente en cada pas existe un centro de conexin donde llegan lneas de datos de los principales operadores de telecomunicaciones. All es donde se realiza el salto entre las redes. Tambin tiene conexiones con lneas que van a otros pases, para poder enviar y recibir informacin de todo el mundo. En Espaa ese centro se llama espanix.

Proveedores de Servicios de Internet


Los proveedores de Servicios de Internet o ISP son las empresas que nos permiten conectarnos a Internet a cambio de una cuota. Utilizando un mdem (para un nico ordenador) o un router (si tenemos varios ordenadores en casa) nos conectamos a su red, y desde ella podemos acceder al resto de Internet. Hoy en da existen muchas modalidades de conexin segn la tecnologa utilizada y la forma de pago, y tendramos que elegir cul nos conviene segn nuestras necesidades.

Segn la forma de pago:


Tarifas planas 24 horas sin lmites: permiten usar la conexin en cualquier momento y descargar cualquier cantidad de datos a cambio de una cuota mensual. Son las que ms libertad dan, aunque por eso son las ms caras. Tarifas planas 24 horas con lmites: permiten conectarnos en cualquier momento, pero nos limitan la cantidad de datos que podemos descargar. A partir de esa cantidad nos pueden reducir la velocidad o hacernos pagar una cantidad extra. Pago por utilizacin: nicamente se paga cuando se utiliza la conexin o por la cantidad de datos descargados. Es til cuando slo vamos a conectarnos algunas veces a Internet.

Segn la tecnologa utilizada:


Mdem telefnico: utiliza la lnea de telfono para conectarse a Internet, por eso cuando la

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

estamos utilizando no podemos usar el telfono. Es el tipo de conexin ms antigua, y ofrece velocidades muy bajas (56Kbps). ADSL: tambin utiliza el cable del telfono, pero usa frecuencias distintas a las de la voz por lo que es compatible con el mismo. Permite conexiones permanentes sin tener ocupado el telfono. Las siglas ADSL significan Asymmetric Digital Subscriber Line o Lnea de Suscriptor Digital Asimtrica. Actualmente ya se utililizan distintas evoluciones de esta tecnologa que soportan mayor velocidad (ADSL2, ADSL2+, VDSL). El trmino Asimtrica indica que las velocidades de subida y de bajada de informacin a Internet son distintas (siendo mucho menor la de subida). Las velocidades habituales que ofrece van desde 1 Mbps a 20 Mbps de bajada, y desde 300 Kbps a 1 Mbps de subida. Cable-Modem: esta tecnologa utiliza un cable coaxial, como el de la antena de la televisin, para la conexin a Internet. Es el tipo de conexin que ofrece ONO en Valencia. Soportan ms velocidad de conexin que el ADSL, aunque las ofertas habituales dan la misma velocidad que ADSL por el mismo precio. Una ventaja de esta tecnologa es que suele dar menor retardo de conexin (til para juegos on-line). Mvil: utiliza la red de telefona mvil para realizar la conexin a Internet. Como ventaja, permite conectarse en cualquier lugar con cobertura de telfono. Como desventajas, ofrece velocidades ms bajas (como mximo 7 Mbps) y es la ms cara. Ademas la velocidad podra variar segn la zona en la que nos encontremos. Fibra ptica: permite velocidades mucho ms altas (100 Mbps simtricos y superiores). En Espaa por su precio slo la contratan empresas, aunque est empezando a ofrecerse a particulares en pequeas zonas piloto. En otros pases, como Corea, es ms barata y la utilizan tambin usuarios residenciales.

Direccionamiento en Internet
El servicio DNS
En Internet, como en todas las redes TCP/IP, los ordenadores se identifican con su direccin IP. Sin embargo, recordar esos nmero cuando queremos utilizar algn servicio, por ejemplo navegar por pginas web, es complicado. Para evitar este problema se permiti asignar un nombre ms sencillo de recordar a los ordenadores, en forma de texto (por ejemplo www.tuenti.com). El protocolo DNS es el que se encarga de realizar la conversin de nombre de dominio a direccin IP. Por ejemplo, si nosotros escribimos en el navegador www.marca.com lo primero que har es utilizar DNS para conocer su direccin IP (193.110.128.199) y luego se comunicar con el ordenador que tiene esa direccin. As pues, el protocolo DNS hace algo parecido a cmo funciona la agenda de un telfono mvil: nosotros buscamos un nombre y el telfono llama al nmero asociado de forma automtica.

URL
El URL (Localizador Universal de Recursos) es un identificador que nos permite encontrar cualquier recurso (documento, fichero de texto, imagen, vdeo, animacin flash...) en Internet. Al ver una pgina web en el navegador es la direccin que aparece en la barra de direcciones. Cada uno de los objetos de la pgina web (imgenes, vdeos...) tiene su propio URL.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ejemplo de una URL en la barra de direcciones del ordenador Dentro del URL podemos diferenciar 4 partes, que vamos a definir con el ejemplo de la imagen anterior: http://www.upv.es/estudios/futuro-alumno/index-es.html 1. El protocolo: es la parte que va hasta la doble barra (incluida), en este caso http://. Nos indica cmo se va a pasar la informacin entre el servidor y nuestro ordenador. 2. El ordenador: se puede indicar a travs de un nombre de dominio (en este caso www.upv.es) o con la direccin IP. Se utiliza para encontrar en Internet el ordenador donde est la informacin. Ira hasta la primera barra. 3. La ruta: es un parmetro opcional. Indica la lista de directorios, dentro del ordenador, donde se encuentra el recurso que estamos buscando. Ira del nombre de dominio hasta la ltima barra (en el ejemplo estudios/futuro-alumno). 4. El nombre del recurso: es la ltima parte, a partir de la ltima barra, y nos indica el nombre y la extensin del fichero que estamos buscando. En el ejemplo index-es.html.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

15-Consola de comandos: rdenes sobre ficheros y directorios en windows


Aunque en la mayor parte de Sistemas Operativos actuales se trabaja con una interfaz grfica, con ventanas y utilizando el ratn, antiguamente slo se poda trabajar con interfaces textuales, en los que haba que escribir con el teclado las rdenes que queremos que realice el ordenador. Hoy en da todava se puede acceder a un terminal de texto, denominado consola o interfaz de comandos. Para abrir una consola en Windows XP podemos seguir 2 caminos: -Ir al men Inicio>Programas>Accesorios>Smbolo del sistema -Ir al men Inicio>Ejecutar y escribir cmd. Luego habra que pulsar aceptar. Con ambos mtodos se abrira una ventana negra similar a esta, en la que escribir los comandos.

En la ventana nos aparece la ruta del directorio en el que nos encontremos (por defecto C:\Documents and Settings\Usuario). Ahora veremos los principales comandos para trabajar con ficheros y directorios (realizando las acciones que podramos hacer en el Explorador). Sobre la mayor parte de comandos se pueden elegir opciones. Generalmente hay que dejar un espacio y luego escribir un guin y la letra de la opcin elegida (Por ejemplo dir -p)

Directorios
La primera opcin es listar el contenido de un directorio. Se usa el comando dir, que nos muestra el nombre de los ficheros, su tamao y la hora de modificacin de los mismos, as como el tamao total que ocupan.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Para movernos por los directorios se usa el comando cd seguido del nombre del directorio al que queremos cambiarnos. Para subir al directorio anterior (como pulsar a la flecha en el explorador) se usa un nombre de directorio especial llamado .. (punto punto). En el siguiente ejemplo cambiaramos al directorio listas y luego volvemos al escritorio:

Por ltimo se pueden crear directorios con el comando mkdir seguido del nombre del directorio. Se borraran con rmdir tambin seguido del nombre del directorio, aunque slo funciona si el directorio est vaco.

Ficheros
Para ver los atributos de los ficheros se usa el comando attrib. Nos dira si hay algn fichero de sistema (marcado con una S), oculto (marcado con una H) y de slo lectura (marcado con una R) si no se puede modificar. Se podran modificar los atributos con la opcin -S, -R o -H seguida del nombre del fichero (por ejemplo attrib -r fichero.txt)

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Para copiar un fichero se usa el comando copy. Habra que poner el nombre del fichero original y el nombre nuevo del fichero copiado.

Para mover un fichero a otra carpeta se usa el comando move seguido del nombre del fichero y su nueva ubicacin. Si adems de una carpeta se pone el nombre del fichero en la nueva ubicacin se podra cambiar el nombre.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Para borrar un fichero se usa el comando del seguido del nombre del fichero.

Cambio de unidad
Windows identifica las unidades con una letra. Para cambiar de unidad se escribe la letra de la unidad seguida de 2 puntos (:).

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Configuracin de hora y fecha


Para ver o cambiar la hora y la fecha se usan los comandos time y date respectivamente. En ambos casos nos mostrar el valor actual y nos permitir modificarlo.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

16-Consola de comandos: rdenes sobre ficheros y directorios en linux


Aunque en la mayor parte de Sistemas Operativos actuales se trabaja con una interfaz grfica, con ventanas y utilizando el ratn, antiguamente slo se poda trabajar con interfaces textuales, en los que haba que escribir con el teclado las rdenes que queremos que realice el ordenador. Hoy en da todava se puede acceder a un terminal de texto, denominado consola o interfaz de comandos. Para abrir una consola en Lliurex debemos ir al men Aplicaciones>Accesorios>Terminal. Se abrira una ventana en la que escribir los comandos. (Lliurex tambin permite abrir un terminal de forma ms rpida pulsando el botn derecho sobre el escritorio y eligiendo despus la opcin Abrir terminal.) En la ventana nos aparece el nombre del usuario seguido del smbolo @ y el nombre del ordenador. Despus muestra la ruta del directorio en el que nos encontremos seguido del smbolo $ si estamos con un usuario normal o # si somos el usuario root. Cuando estamos en nuestro directorio personal (/home/usuario) no mostrara la ruta sino el smbolo ~.

Terminal en linux. Se puede comprobar que el usuario utilizado se llama lliurex, as como el ordenador, y no es administrador (aparece $ al final del prompt). Estamos dentro de la carpeta UserFiles del directorio personal.

Ahora veremos los principales comandos para trabajar con ficheros y directorios (realizando las acciones que podramos hacer en el Explorador). Sobre la mayor parte de comandos se pueden elegir opciones. Generalmente hay que dejar un espacio y luego escribir un guin y la letra de la opcin elegida (Por ejemplo ls -a)

Directorios
La primera opcin es saber en qu directorio estamos. Como hemos dicho antes normalmente lo muestra a no ser que estemos en nuesrto directorio. Para saber exactamente dnde estamos usamos el comando pwd, que mostrara la ruta actual.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

La primera opcin es listar el contenido de un directorio. Se usa el comando ls, que nos muestra el nombre de los ficheros. Algunas opciones son -l para mostrar los detalles de los documentos (incluidos los permisos) o -a para ver tambin archivos ocultos.

El comando ls -la muestra toda la informacin de los ficheros incluidos los ocultos

Para movernos por los directorios se usa el comando cd seguido del nombre del directorio al que queremos cambiarnos. Para subir al directorio anterior (como pulsar a la flecha en el explorador) se usa un nombre de directorio especial llamado .. (punto punto). En el siguiente ejemplo cambiaramos al directorio listas y luego volvemos al escritorio:

Cambio al directorio UserFiles y vuelta al directorio del usuario

Por ltimo se pueden crear directorios con el comando mkdir seguido del nombre del directorio.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Se borraran con rm tambin seguido del nombre del directorio, aunque slo funciona si el directorio est vaco. Para borrar un directorio y la informacin que haya dentro se usa la opcin -r.

Ejemplo de creacin y eliminacin de directorios. Al usar -r permite eliminar el directorio dir1 aunque tenga contenido.

Ficheros
Para copiar un fichero se usa el comando cp. Habra que poner el nombre del fichero original y el nombre nuevo del fichero copiado. Se podra aadir la ruta si el fichero estuviera en otro directorio: cp nombreoriginal nuevonombre cp /dir1/dir2/dir3/archivo /dir1/dir2/achivo Para mover un fichero a otra carpeta se usa el comando mv seguido del nombre del fichero y su nueva ubicacin. Si adems de una carpeta se pone el nombre del fichero en la nueva ubicacin se podra cambiar el nombre. mv nombreoriginal nuevonombre mv /dir1/dir2/dir3 /dir1/dir2 (el segundo caso movera el fichero sin cambiar el nombre) NOTA: la diferencia entre copiar y mover es que en el primer caso se mantiene el fichero original (al final habr 2 ficheros) y en el segundo no. Para borrar un fichero se usa el comando rm seguido del nombre del fichero, igual que para un directorio. rm nombrefichero

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ejemplo: primero se copia un fichero con el comando cp, luego se le cambia el nombre con el comando mv, y por ltimo se elimina con el comando rm

Configuracin de hora y fecha


Para ver o cambiar la hora y la fecha se usa el comando date respectivamente. Para modificarlas debemos ser el usuario root

Fecha y hora del sistema

Ayuda
Linux dispone de un comando que nos muestra la ayuda de cualquier otro comando. Es man (de manual). Se usa poniendo detrs el comando del que queremos ver la ayuda. Para salir de la ayuda pulsaremos q (del ingls quit). Por ejemplo man cp mostrara la ayuda del comando cp, o man gedit mostrara la ayuda del programa de edicin de texto gedit.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

17-Consola de comandos: instrucciones de redes (ping, tracert/traceroute, ipconfig/ifconfig, netstat, route, hostname)
La consola de comandos es un terminal de texto en el que hay que escribir con el teclado las rdenes que queremos que realice el ordenador. Este tipo de terminal es muy til cuando la conexin de red no funciona bien ya que permite realizar comprobaciones de forma rpida. Para abrir una consola en Windows XP podemos seguir 2 caminos: -Ir al men Inicio>Programas>Accesorios>Smbolo del sistema -Ir al men Inicio>Ejecutar y escribir cmd. Luego habra que pulsar aceptar. Para abrir una consola en Lliurex debemos ir al men Aplicaciones>Accesorios>Terminal, o pulsar el botn derecho sobre el escritorio y elegir despus la opcin Abrir terminal. Vamos a ver ahora los principales comandos de redes con ejemplos sobre windows, y comentaremos las diferencias, cuando existan, con los que habra que utilizar para linux

Ipconfig
El comando ipconfig se utiliza para comprobar la configuracin de red del ordenador. Nos muestra la direccin IP, mscara de red y puerta de enlace. Una variante es ipconfig /all que nos da mucha ms informacin, entre ella los servidores DNS, las direcciones MAC de las tarjetas de red o el hostname entre otros.

En linux el comando que habra que utilizar es ifconfig.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Ping
El comando ping sirve para enviar un paquete a otro ordenador con lo que podramos comprobar la conexin entre los mismos. Habra que escribir detrs la direccin IP de la mquina (o nombre del dominio) con la que quisiramos comprobar la conexin.

Ejemplo de ping. En el primer caso (sobre un dominio, permite comprobar la IP a la que se corresponde) s que responde el ordenador pero en el segundo caso no.

Tracert
Cuando enviamos informacin a travs de una red, como puede ser Internet, los paquetes van saltando entre routers hasta que llegan a su destino. El comando tracert nos muestra las direcciones IP por las que va pasando el paquete hasta llegar a su destino. Como en el comando anterior habra que escribir la direccin IP de la mquina a la que queremos conocer su ruta.

Ruta hasta la web de la UPV a travs de 14 routers hasta llegar al destino (salto n 15)

Administracin de Sistemas Operativos En linux el comando que habra que utilizar es traceroute.

Jorge Lpez Jimnez

Hostname
El comando hostname nos muestra el nombre que tiene configurado nuestro ordenador (tanto en Windows como en linux). Es el nombre que tendrn que utilizar otros ordenadores de nuestra red para conectarse a nosotros.

Netstat
El comando netstat nos muestra las conexiones que tenemos abiertas con otros ordenadores.

Tambin se podra usar con la opcin netstat -a que, adems de la informacin anterior, nos dira qu puertos tenemos abiertos. Estos puertos nos informan de programas que permitiran a otros ordenadores conectarse con nosotros. Son los que aparecen con estado LISTENING, as como los que aparecen con protocolo (primera columna) UDP

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Otra opcin sera netstat -e, que nos mostrar la cantidad de datos enviados y recibidos en la tarjeta.

En linux el comando que habra que utilizar es el mismo aunque cambia la informacin que muestra y las opciones que permite.

Route
El comando route con el modificador PRINT nos permite ver la tabla de enrutamiento de nuestro ordenador (es la que se mira para decidir por cul, de todas las tarjetas de red del ordenador, se enviar un paquete). Sera til si tenemos un ordenador con varias tarjetas que sirve para conectar varias redes (como el servidor de aula).

Route tambin se puede utilizar para modificar esa tabla de enrutamiento.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Nslookup
El comando nslookup abre una pequea aplicacin que nos permite realizar resoluciones DNS, es decir, conocer qu direccin IP se corresponde con un dominio.

Ejemplo de resolucin d enombre. En el caso de tuenti hay varias direcciones que responden al mismo dominio.

Ftp
El comando ftp abre un cliente ftp en formato texto. Nos permitira conectarnos a un servidor FTP y subir y descargar ficheros del mismo, utilizando los comandos apropiados. Realizara la misma funcin que un cliente grfico, pero deberamos conocer cules son las rdenes necesarias para realizar cada tarea.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

18-Herramientas del sistema en windows: restaurar sistema, desfragmentar disco, informacin del sistema, panel de control
Todos los Sistemas Operativos disponen de distintas herramientas para controlar, gestionar y administrar el ordenador. En Windows XP, la mayor parte se encuentran en el Panel de Control, o se pueden arrancar a travs del men Programas>Accesorios>Herramientas Administrativas. Aqu vamos a ver algunas de ellas:

Restaurar Sistema
Esta herramienta permite dejar el sistema tal y como estaba en un momento anterior sin modificar los documentos del usuario. Al arrancar esta herramienta nos permite realizar dos funciones: crear un punto de restauracin o restaurar el sistema a un punto anterior:

Al crear un punto de restauracin guardar una copia del registro y del resto de ficheros de configuracin. Sera til realizarlo antes de instalar algn nuevo programa o si vamos a cambiar alguna opcin del sistema operativo. Hay que ver que, aunque no creemos nunca un punto de restauracin, Windows los crea de forma automtica por ejemplo al actualizar el sistema. La opcin de restaurar mi equipo nos mostrara un calendario en el que estn marcadas las distintos

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

puntos de restauracin a los que podemos volver. Slo tendramos que elegir alguno de ellos y esperar a que se deshagan todos los cambios posteriores.

Dentro de las opciones de esta herramienta nos permite elegir cunto tamao en disco queremos que ocupen los puntos de restauracin. Al sobrepasar ese tamao Windows eliminara automticamente los ms antiguos, ya que no es probable que sean necesarios.

Desfragmentador de disco
Un disco duro est formado por discos, pistas y sectores. Cada sector es la mnima unidad en la que podemos almacenar un fichero, como un cajn de un armario. Dentro de cada sector (generalmente entre 512 Bytes y 4 KB) slo puede almacenarse un archivo. Cuando el archivo es ms grande debe ocupar varios sectores (en el smil del armario, ocupara varios cajones). Los sectores que ocupa un fichero pueden estar juntos o separados. Cuando estn separados puede ralentizarse el acceso al archivo ya que el cabezal del disco duro tiene que ir movindose para leer las todos los sectores. La herramienta desfragmentador de disco hara un anlisis de la unidad y nos dira si los archivos estn muy fragmentados (separados por el disco) o no. En caso de que sea necesario, y nosotros queramos, se encargara de ir moviendo los archivos, aprovechando los espacios libres del disco, para dejar al final los ficheros juntos.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Es muy recomendable realizar una desfragmentacion del disco a menudo para mejorar la velocidad del sistema.

Informacin del Sistema


La herramienta Informacin del Sistema recopila y muestra informacin acerca de la configuracin del sistema. La informacin se muestra en forma de rbol, desde un repaso ms general a informacin ms especfica de cada dispositivo. Los datos que podemos obtener son:

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-Resumen del Sistema: nos da un resumen del resto de ramas del rbol: versin del Sistema Operatio y BIOS, cantidad de memoria, tipo de procesador... -Recursos de hardware: muestra informacin acerca de la asignacin de los recursos y los posibles conflictos entre los dispositivo hardware. -Componentes: muestra informacin sobre cada componente del hardware: discos, tarjetas, monitor, teclado, impresora... -Entorno de software: muestra informacin sobre la configuracin de distintos programas, variables de entorno, trabajos de impresin... Adems, pueden aparecer ms ramas en funcin de los programas instalados, como es el caso de la imagen anterior con la configuracin de Internet y de Office 2003

Administrador de tareas
El administrador de tareas se enciende pulsando Ctrl+Alt+Supr en cualquier momento. Se suele utilizar cuando el sistema se queda bloqueado, ya que permite terminar las aplicaciones que hayan producido el bloqueo.

Las pestaas que aparecen son: -Aplicaciones: muestra las aplicaciones que tenemos arrancadas. Si alguna est bloqueado en la columan Estado mostrara No responde. Permiten finalizar alguna de ellas. -Procesos: mostrara todos los procesos abiertos. De cada uno de ellos nos puede dar distinta informacin en columnas, que podemos configurar segn nos interese. Una de las columnas ms tiles es Uso de CPU, que nos dira que proceso est usando ms cantidad del procesador.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-Rendimiento: nos saca una grfica de porcentaje de uso del procesador y de la memoria. -Funciones de red: muestra una grfica del uso de las tarjetas de red del ordenador. -Usuarios: nos indica cuntos usuarios han iniciado sesin. Permitira cerrar la sesin de algn usuario (siempre que seamos administradores)

Panel de Control

El panel de control permite acceder a la casi toda la configuracin del ordenador que se ha explicado en los apartados anteriores. En funcin de los programas y componentes hardware instalados en el ordenador podran aparecer ms o menos iconos. Algunos de los ms importantes son: -Actualizaciones automticas: permiten configurar cmo se actualizar windows

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-Agregar o quitar programas: nos muestra todos los programas instalados y permite quitar los que ya no queramos de forma sencilla. -Conexiones de red: permite configurar las tarjetas de red. -Cuentas de usuario: se usa para configurar los usuarios. -Opciones de energa: se usa para configurar cundo queremos que se apague la pantalla o los discos duros para ahorrar energa (muy til en los porttiles) -Sistema: muestra el nombre del equipo y permite arrancar el administrador de dispositivos que muestra un listado de todos los componentes hardware y nos dejara modificar su configuracin.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

19-Actualizacin del SO en windows y en linux. Atualizaciones automticas.


Los Sistemas Operativos, como el resto de programas, van sacando distintas versiones a lo largo del tiempo que mejoran sus funciones. En muchas ocasiones, la empresa que ha creado el programa lo modifica y pone a disposicin de los usuarios que han adquirido una versin anterior, en forma de actualizacin (en vez de instalar el programa de cero slo aade las modificaciones realizadas). Las principales razones por las que se realiza una actualizacin son: -Corregir problemas de seguridad a raz de fallos detectados en las versiones anteriores. -Aparicin de nuevas funciones. -Publicacin de nuevas versiones de drivers de los dispositivos hardware.

Actualizaciones en windows
Windows permite actualizar el sistema de forma automtica (realizando el sistema operativo todas las tareas), semiautomtica (avisara al usuario de la existencia de actualizaciones disponibles y podra hacer la descarga de forma auotmtica) o manual (el usuario tendra que comprobar si hay actualizaciones e instalarlas)

Actualizaciones automticas en windows


Windows permite actualizar de forma automtica o manual el sistema.

Para elegir cmo queremos que se actualice debemos ir a la opcin Actualizaciones automticas del Panel de control. Las opciones que permite son:

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

-Automticas: descargara los ficheros necesarios y los instalara de forma automtica. Al acabar es probable que nos indique que debemos reiniciar el ordenador. El problema de este mtodo es que, si el ordenador no es muy potente, podra quedar semibloqueado mientras hace la instalacin. -Descargar actualizaciones pero no instalarlas: descargara los ficheros pero luego no los instalara sino que nos avisara de que estn descargadas. Suele mostrar un icono en la barra de iconos (junto al reloj) para indicarnos que una actualizacin est pendiente de instalar. Si no lo hacemos antes, avisara al apagar el ordenador de que se van a realizar las actualizaciones. -Notificarme pero no instalarlas: nicamente nos mostrara el icono anterior al lado del reloj para avisarnos que podemos descargar alguna actualizacin. Tendramos que hacer la instalacin de forma manual. -Desactivar actualizaciones: no actualizar ni nos informar de que hay actualizacines disponibles. Deberamos hacer las actualizaciones de forma manual.

Actualizaciones manuales en windows


Para actualizar Windows de forma manual si hemos desactivado las automticas deberamos ir a la pgina web de Windows Update. En esta pgina buscara las actualizaciones disponibles, nos las mostrara, y nos permitira elegir cules queremos instalar. Una vez elegidas las descargara e instalara. Este mtodo permite actualizar tambin otros programas de Microsoft como Office. Como curiosidad, falta indicar que normalmente Microsoft pone las actualizaciones a disposicin de sus usuarios los segundos martes de cada mes, a no ser que se trate de un problema de seguridad importante que suele activarse en cualquier momento.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Actualizacin de otros programas


Igual que el sistema operativo deberamos actualizar el resto de programas del ordenador, sobre todo para solucionar problemas de seguridad. Algunos de ellos nos informan en la barra de iconos de que hay una actualizacin disponible (como Adobe Reader o Java) y nos dejan actualizarlo desde all de forma sencilla. Otros nos avisan al arrancar el programa (como Firefox). En otros casos deberamos ir a la pgina web del programa, comprobar si hay una nueva versin, descargarla e instalarla sobre la antigua (como Winrar)

Actualizaciones en lliurex
Lliurex, como muchas distribuciones de linux dispone de una herramienta denominada Synaptic para instalar nuevos programas. Esta herramienta se conecta a los servidores de la empresa/organizacin que ha realizado la distribucin y muestra gran cantidad de programas que podemos aadir en nuestro ordenador.

Ventana de Synaptic. Para realizar la actualizacin de todo el sistema pulsaramos en orden los tres botones de la barra de herramientas: Recargar, Marcar todas las actualizaciones y Aplicar.

Del mismo modo que permite instalar nuevos programas, tambin nos avisa si hay versiones nuevas de los programas (denominados en esta herramienta paquetes) instalados. Para realizar la actualizacin deberamos realizar 3 pasos 1-Recargar la lista de paquetes: se conectara al servidor para ver cules son las versiones que se pueden descargar.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Descarga la informacin de paquetes para saber si hay nuevas versiones

2-Marcar las actualizaciones que queremos realizar. Lo normal es usar el botn Marcar todas las actualizaciones. Si no podramos marcar a mano las que nos interesen (o usaramos esta opcin para instalar nuevos programas)

Informacin sobre las actualizaciones y nuevas instalaciones marcadas

3-Pulsar Aplicar. A partir de este momento nos dira cuntos paquetes se van a actualizar y qu cantidad de datos se van a descargar. Si aceptamos los descargara e instalara. En algunas ocasiones, pero no todas, nos obligara a reiniciar el ordenador.

Administracin de Sistemas Operativos

Jorge Lpez Jimnez

Informacin sobre las actualizaciones/instalaciones a realizar

La ventaja de este sistema frente al de Windows es que no slo se actualiza el Sistema Operativo sino tambin la mayor parte de aplicaciones instaladas. En el caso de la configuracin del aula, el propio servidor tiene una imagen de todos los paquetes disponibles en lliurex. De este modo solo se tienen que descargar de Internet las actualizaciones una vez y todos los ordenadores del aula podran usar esos paquetes descargados, liberando la conexin a Internet.

Sistemas operativos
TEMA 1 INTRODUCCIN A LOS SISTEMAS OPERATIVOS

Tema 1 Introduccin a los sistemas operativos 1. Definicin de sistema operativo 2. Visin histrica 3. Los servicios que ofrece el sistema operativo

1. DEFINICIN DE SISTEMA OPERATIVO Es muy difcil dar una definicin exacta y precisa del trmino sistema operativo, por lo que nos ser ms sencillo formular esta definicin a partir de la descripcin de las funciones que ste cumple.

En el esquema superior de un computador, la capa inferior corresponde al hardware, sobre sta encontramos justamente el sistema operativo, cuyas funciones son: Gestin eficiente de los recursos del sistema: El sistema operativo controla el acceso eficiente a los recursos del computador: memoria, tiempo en la CPU, dispositivos, etc, se encarga de trabajos de proteccin y de utilizacin eficiente del sistema. Es decir, el sistema operativo reparte el tiempo de CPU entre los diferentes programas que concurren en un mismo computador (incluso de distintos usuarios), consigue una ejecucin concurrente, protege el acceso a memoria y coordina el acceso a dispositivos compartidos e incluso a los no compartidos. Presentacin a los usuarios de una mquina virtual mucho ms sencilla de utilizar: El sistema operativo proporciona un entorno de trabajo al usuario y a los programas de aplicacin que permite utilizar el computador de forma ms fcil e intuitiva; es decir, se proporciona una mquina virtual mucho ms fcil de entender y utilizar por el hecho de que oculta la complejidad del hardware.

Como vemos en el dibujo superior, por encima del ncleo del sistema operativo tenemos el software de sistema (shell, compiladores, editores) y por encima de ste, el software de aplicacin (hojas de clculo, editores de texto).

2. VISIN HISTRICA Los sistemas operativos y la evolucin del hardware corren ntimamente relacionadas en su evolucin histrica. Es lgico pensarlo as, esencialmente porque los sistemas operativos han evolucionado en funcin de los cambios tecnolgicos y a la vez intentaban sacar el mayor provecho de estas nuevas tecnologas. Vamos a estudiar someramente la evolucin de estos sistemas operativos divididos en 4 generaciones:

2 Sistemas operativos

Primera generacin: Los primeros ordenadores. Solo se contaba en los momentos iniciales con el hardware del ordenador. Se trataba de vlvulas de vaco que obligaban a fabricar aparatos mostruosamente grandes que se alimentaban de cintas de papel y tarjetas perforadas y cuyo uso estaba reservado al mbito militar para efectuar clculos matemticos como trayectorias balsticas y tablas de senos y cosenos. En esta poca se consideraba que no exista sistema operativo y que el usuario interaccionaba directamente con el computador. Segunda generacin: Con la aparicin del transistor en 1950 ya se podan fabricar computadores ms pequeos, pero muy caros y solo al alcance de unas pocas empresas grandes. Aparecen nuevos dispositivos de entrada/salida, unidades de almacenamiento (disco y cintas magnticas), aparece el primer software (ensambladores, libreras de funciones matemticas) Su modo de funcionamiento era simple. Se cargaba todo el cdigo del sistema operativo y despus se realizaban clculos en lote. Se le peda un clculo y cuando terminaba otro y despus otros, todos de forma lineal; esto haca perder mucho tiempo de CPU, dado que aunque las CPUs eran lentas, ms lentos an eran los dispositivos que introducan la informacin a evaluar (cintas perforadas). Para intentar reducir el tiempo que estaba parada la CPU apareci el trabajo off-line, con lo que se intentaban solapar las operaciones de entrada/salida con la ejecucin de programas distintos que se haban cargado en la CPU a travs de una unidad de cinta auxiliar. Luego se idearon tcnicas como el almacenamiento en memoria intermedia, que consista en solapar las operaciones de entrada/salida de un programa con las de clculo de ese mismo programa. Luego lleg la gestin de colas que permitan solapar las operaciones de entrada/salida de distintos trabajos mientras se ejecutaban otras operaciones. Tercera generacin: Surge a mediados de los aos 60 y se basa en circuitos integrados. Son mucho ms pequeas que las anteriores y ms rpidas, apareciendo mecanismos de interrupciones, proteccin, etc, y adems se desarrollan perifricos ms rpidos y efectivos, terminales remotos (acceso a bancos de datos) y se estandarizan lenguajes de alto nivel ya existentes como Fortran, algol, cobol. Aparece una nueva forma de trabajar para la CPU que es la programacin concurrente o multiprogramada, donde se solapan tiempos de mayor entrada/salida con tiempos de clculo intensivo de la CPU para distintas operaciones. Cuantos ms programas solapemos tendremos un mayor grado de multiprogramacin; debido a esto varios usuarios pueden conectarse a una misma CPU y compartirla, pero para evitar que un usuario la colapse demasiado tiempo seguido, el programa de un usuario determinado deja de ejecutarse cuando su programa ha finalizado, cuando se programa una operacin esencialmente de entrada/salida o cuando ha pasado un quantum de ejecucin (tiempo determinado) para que todos tengan acceso a esa CPU, de esta forma los diferentes usuarios conectados al sistema progresan en sus operaciones concurrentemente y cada uno de ellos tiene la impresin de que es el nico que utiliza el sistema.
Generacin Primera 1925-1957 Segunda 1958-1964 Tercera 1964-1974 Cuarta 1974 ? Tecnologa Vlvulas de vaco Programacin Lenguaje binario o mquina Fortran, Cobol, Pascal, Ensambladores Sistemas con multiprogramacin Interconexin con bases de memoria Vel. operacin Milisegundos Dispositivos Cintas de papel Tarjetas perforadas Lectores de tarjetas Impresoras Unidades de disco Perifricos ms rpidos y efectivos Redes mbito de uso Militar Grandes corporaciones Gobiernos Universidades Empresas medianas

Transistores Memorias de ferrita

Microsegundos

Circuitos integrados LSI/VLSI Memoria de semiconductores o burbujas

Nanosegundos

Domstico

Sistemas operativos 3

Cuarta generacin hasta hoy da: En 1974 se inicia la era de los computadores personales con la integracin a gran escala; y seguramente su aportacin ms importante es la red de computadores (internet e intranet). Aparecen los sistemas operativos en red y distribuidos que permiten utilizar recursos de mquinas remotas (discos, impresoras) y aparece tambin el sistema operativo en tiempo real (sistemas que deben procesar muchos datos en un tiempo limitado y lo ms rpidamente posible).

3. LOS SERVICIOS QUE OFRECE EL SISTEMA OPERATIVO El sistema operativo ofrece una gran variedad de servicios, pero que podemos agrupar en dos bloques: Llamadas al sistema: Ofrecen soluciones bsicas para poder utilizar todos los recursos de forma correcta y controlada. Encontramos entre estas llamadas al sistema: gestin de procesos, sealizacin de procesos, gestin de dispositivos de entrada/salida, gestin del sistema de archivos y funciones de tiempo. Intrprete de rdenes: Es el encargado de traducir y comunicar al sistema operativo lo que quiere hacer el usuario del sistema. Este programa reconoce un conjunto limitado de rdenes que, bsicamente, permiten al usuario acceder, modificar, crear y proteger la informacin.

4 Sistemas operativos

TEMA 2 EL SISTEMA OPERATIVO: UNA MQUINA VITUAL

1. UNA INTRODUCCIN A LA MQUINA VIRTUAL 1.1. El concepto de mquina virtual El sistema operativo define una mquina virtual sobre la cual los usuarios pueden trabajar con una mayor comodidad de la que lo haran si trabajasen directamente sobre los elementos que componen el sistema; es decir el sistema operativo esconde el hardware mediante una capa de software que tiene dos objetivos principales: La abstraccin del sistema como un hardware determinado para tener una visin global y sencilla de la mquina. Proporcionar un funcionamiento nuevo y seguro, adaptado al usuario que accede al sistema y adems protegido para evitar corromper el funcionamiento correcto de la mquina. Las capas del sistema que aparecen las podemos observar en la figura adjunta y se definen en 3 niveles:
Capas del sistema operativo

Tema 2 Una introduccin a la mquina virtual 1. Una introduccin a la mquina virtual 2. Fases de ejecucin de un programa 3. Los espacios de direcciones de un proceso 4. Los mecanismos de entrada al sistema operativo: traps, excepciones e interrupciones

Intrprete de rdenes: Aqu se introducen rdenes directamente que son interpretadas por el sistema de manera inmediata. Herramientas del sistema y libreras: Accesibles mediante el intrprete de ordenes y tambin para el programador como herramientas de apoyo a su labor. Ncleo del sistema operativo: Contiene rutinas de gestin del sistema ms relacionadas con el hardware (del que se encuentra muy muy cerca). El cdigo que se ejecuta a este nivel lo hace con privilegios de sistema, es decir como supervisor.

1.2. El concepto de sesin de trabajo En los sistemas multiusuario para poder utilizar el sistema se tiene que iniciar una sesin de trabajo. Es un proceso de identificacin que tiene 3 fases: Entrada en el sistema: o fase de login, donde se le pide al usuario su nombre de usuario (username) y su contrasea correspondiente (password). Cuando se introduce el hombre el sistema operativo lo busca en la lista de usuarios autorizados (primer nivel de seguridad), cuando lo encuentra compara la contrasea con la introducida por el usuario (segundo nivel) y si coinciden le asigna el entorno propio de ese usuario y se inicia la sesin de trabajo. Uso del sistema: El usuario interacciona con el intrprete de rdenes, uso normal del sistema. Salida del sistema: o logout, el usuario declara que ha terminado la sesin de trabajo y desea abandonarla, de esta forma se liberan los recursos que se le tiene asignados y, por otro lado al cerrar la sesin ningn otro usuario puede usar la cuenta abierta (la cuenta es el entorno de trabajo y los privilegios a que tiene acceso por ser ese usuario).
Entrada en el sistema

Sistemas operativos 5

1.3. El intrprete de rdenes


Esquema de funcionamiento sacar prompt leer orden Mientras la orden no sea salir hacer ejecutar la orden sacar prompt leer nueva orden fin mientras

El intrprete de rdenes es un programa que se encarga de interpretar y comunicar al sistema lo que el usuario desea hacer; este programa al iniciar una sesin de trabajo se carga en memoria y no se descarga hasta que no se acaba la sesin de trabajo. Su esquema de funcionamiento lo vemos en la figura lateral. De este modo de funcionamiento se desprende que su misin es solicitar de manera cclica, mediante un bucle una orden para ejecutar hasta que tenga lugar la de salir. Existen dos tipos de rdenes: las internas (forman parte del ncleo del sistema operativo) y las externas (se suelen encontrar en un directorio concreto del sistema de ficheros o sigue una ruta concreta path-). La forma en la que el sistema indica que ya est preparado para recibir rdenes es escribir en pantalla una combinacin de caracteres o prompt, que por ejemplo en MS-Dos es C:\>. En la actualidad el intrprete de rdenes ha quedado un poco disimulado por el uso de entornos grficos basados en ventanas.
Prompt en Ms-Dos y en Windows XP

Las modalidades de ejecucin del intrprete de rdenes son: Primer plano: o foreground: el intrprete de rdenes pasa el control al programa que corresponde y no lo recupera hasta que finaliza por completo la ejecucin. Segundo plano: o background: se inicia la ejecucin de la orden solicitada pero concurrentemente se sigue ejecutando el intrprete de rdenes. Diferidas: Se admite la ejecucin de rdenes en un momento especificado previamente. Por ejemplo los clculos intensivos o largas simulaciones durante la noche.

El intrprete de rdenes tambin se puede utilizar como lenguaje de programacin a travs de ficheros de texto (por ejemplo los batch en Ms-Dos) en los que se pueden guardar una secuencia de rdenes; y tambin se puede utilizar como personalizador del entorno de trabajo, ya que cuando un usuario se identifica (logon) el intrprete de rdenes habilita por defecto las herramientas, programas, path, etc, que el usuario ha decidido previamente. 1.4. El sistema operativo desde el punto de vista del programador El usuario se fija en su sistema operativo sobre todo en los programas que tiene accesibles y en el intrprete de rdenes. En cambio el programador ve los recursos fsicos del sistema y no tanto la capa de software colocada encima. El programador suele utilizar principalmente las libreras del sistema (procedimientos de uso comn que se aade a sus aplicaciones y que hace disminuir el cdigo en toda programacin) y las llamadas al sistema.

6 Sistemas operativos

2. LAS FASES DE EJECUCIN DE UN PROGRAMA 2.1. El concepto de proceso Existen varias definiciones distintas para el concepto de proceso, pero una de las ms aceptadas es la de un programa en ejecucin. Un programa es la descripcin detallada para la resolucin de un problema de manera general, en abstracto; mientras que un proceso es la aplicacin en concreto del programa a un caso particular y en un momento determinado, con la asignacin de unos recursos concretos. Un proceso determinado es nico e irrepetible, mientras que un programa se puede ejecutar mltiples veces. Por ejemplo, en la figura lateral se pueden observar parte de los procesos abiertos en este momento por mi sistema; cada proceso en ejecucin es irrepetible, porque cerrar un proceso y volverlo a abrir ya supone una instancia diferente del mismo. 2.2. El lenguaje informtico Los programadores escriben sus programas en ficheros de texto que siguen unas normas de un lenguaje informtico determinado, y que se intenta acercar en la medida de lo posible al lenguaje natural (ms cercano a las personas de habla inglesa que al resto de lenguajes naturales). Este lenguaje de programacin es una convencin de sentencias y estructuras de datos que pueden convertirse en lenguaje mquina (lenguaje que entiende el computador) y que se pueden ejecutar. Clasificaremos los distintos tipos de lenguajes en: Lenguaje de alto nivel: Escribimos las instrucciones en un formato texto muy cercano al lenguaje natural, aunque con reglas ms estrictas. Este lenguaje luego ser traducido por un compilador para pasarlo a lenguaje mquina. Lenguaje ensamblador: Para simplificar el uso directo del lenguaje mquina (lenguaje binario de 1 y 0) se han diseado lenguajes en los que cada instruccin mquina se corresponde con una instruccin en un lenguaje mnemotcnico ms inteligible. Aun as el lenguaje ensamblador cada da es ms sofisticado y casi resulta inviable programarlo a mano, por lo que esta tarea tan compleja queda reservado a compiladores y optimizadotes de cdigo. Cdigo mquina: Las nicas instrucciones que reconoce un procesador son stas, en cdigo binario.
Procesos: Programas en ejecucin

2.3. El proceso de creacin de un programa ejecutable En la pgina siguiente puede observarse una grfica con todo el proceso de creacin de un programa ejecutable. Vamos a estudiar los distintos pasos: Edicin En esta fase el programador escribe todas las instrucciones del programa en un fichero fuente que no es ms que un fichero de texto. Para ello puede utilizar cualquier editor de texto ms o menos complejo para su edicin. Hay editores especficos para lenguajes determinados que ayudan a programar, asignando colores distintos a diferentes partes del programa o comandos, etc. Compilacin (Ensamblaje) Es el proceso de traduccin de un programa escrito en alto nivel a un equivalente en lenguaje mquina; es decir, desde un fichero fuente, obtenemos un fichero objeto. A partir de esta fase, independientemente del lenguaje de alto nivel utilizado C, Java, etc, los ficheros objetos ya estarn escritos en un mismo idioma. Pero el programa no est terminado ya que el fichero objeto no suele ser nico sino que est dividido normalmente en varias partes que facilitan su

Sistemas operativos 7

manipulacin y edicin y porque los programas ms pequeos de uso comn como clculos matemticos y operaciones de entrada/salida se encuentran generalmente compilados y programados en las libreras.
Proceso de creacin de un programa ejecutable

Montaje (Enlazado) El montaje es el proceso que se encarga de agrupar todos los mdulos correspondientes a un programa, as como las libreras (si hacen falta) para construir un nico programa ejecutable. Tambin se llaman enlazadores porque su principal misin es resolver las direcciones externas entre los mdulos, as como con la librera; con lo que obtenemos un programa ejecutable definitivo con un espacio lgico de direcciones que est completamente construido. El encabezamiento de este fichero contiene informacin relativa al procedimiento que hay que seguir para cargarlo en memoria. Carga La principal tarea del cargador es buscar los recursos que solicita el programa ejecutable (incluida la memoria). As que el cargador adapta las direcciones lgicas de los programas ejecutables a direcciones fsicas de la memoria real del sistema. Adems transfiere el control a la primera instruccin del programa y marca el proceso como preparado.

Ejecucin (Depuracin) Los programas depuradores controlan la ejecucin del programa, por lo que el programador puede fijar los puntos de detencin de la ejecucin y estudiar si se va desarrollando la ejecucin adecuadamente, as pueden limitarse los puntos en los que aparecen errores e intentar subsanarlos. 2.4. Las libreras de sistema En el proceso de creacin del programa ejecutable hemos hecho varias veces referencia a las libreras del sistema; stas son un conjunto de mdulos objeto organizadas de manera adecuada y suministradas por el fabricante del sistema operativo. Contienen las denominaciones de procedimientos, parmetros necesarios y formas en las que pasarlos para poder disponer de muchos ms mtodos para ejecutar nuestros programas ejecutables y, de paso, ahorrarnos lneas de cdigo. Existen tres grandes familias de libreras a nuestra disposicin: Libreras estndar: Son las ms genricas y sus reas ms comunes son la gestin de ficheros, dispositivos de entrada/salida, funciones matemticas, manejo de ficheros, etc. Libreras especializadas: Son opcionales y se aaden al sistema para resolver problemas especficos, por ejemplo libreras de clculos matemticos complejos, de clculos estadsticos y se suelen emplear especficamente en entornos industriales. Libreras de llamadas al sistema operativo: Adaptamos nuestro programa ejecutable al formato de llamadas, parmetros, etc del sistema operativo que utilizamos. Eso s, solo podremos hacer esas llamadas que el sistema operativo que se est ejecutando nos permita.

8 Sistemas operativos

3. LOS ESPACIOS DE DIRECCIONES EN UN PROCESO Un programa reubicable es aquel que se puede ejecutar en diferentes direcciones que le son asignadas por el cargador del programa. As podemos distinguir dos tipos de direcciones de memoria: Direcciones lgicas: Son las referenciadas por el programador. Son por tanto referencias locales y no reales. Direcciones fsicas: Son las direcciones asignadas en tiempo de carga, es decir, el lugar donde realmente residir el proceso durante su ejecucin. Obviamente la propiedad de la reubicacin hace referencia a la capacidad de cargar y despus ejecutar un programa en cualquier posicin de la memoria. Ello hace necesario un mecanismo de traduccin entre las direcciones lgicas y fsicas en la memoria y se puede llevar a cabo a travs de dos sistemas: Reubicacin esttica: Se realiza antes o justo durante la carga del programa en la memoria. La lnea inicial de carga suele reverenciarse como 0 y a partir de ella el resto de direcciones del programa sern direcciones lgicas relativas a esta lnea inicial. Tras ser cargado ya no hay diferencia entre direcciones lgicas y fsicas; el problema de esto es que si el proceso por alguna razn tiene que salir del espacio fsico asignado, o bien vuelve luego exactamente al mismo sitio o tiene que volverse a cargar desde el principio. A causa de este problema este formato de reubicacin se limita a ciertos sistemas operativos. Reubicacin dinmica: La transformacin entre las direcciones fsicas y lgicas se efecta en tiempo de ejecucin y no en tiempo de carga. Se puede por tanto cargar en cualquier posicin de memoria y una parte del hardware es el encargado de hacer el trabajo de reubicacin. Para ello suele utilizar los registros de base ms la direccin lgica y resulta completamente transparente para el programador.

4. LOS MECANISMOS DE ENTRADA AL SISTEMA OPERATIVO: TRAPS EXCEPCIONES E INTERRUPCIONES Vamos a estudiar en este punto la llamada a los servicios del sistema operativo en tiempo de ejecucin. Lo que se hace es ceder el control de la ejecucin a una parte del cdigo que se ejecuta en el ncleo (kernel o corazn) del sistema operativo. Es como si hiciramos una llamada a cualquier subrutina de una aplicacin pero ejecutada en modo sistema; porque as tiene una mayor capacidad para gestionar sus propios recursos del sistema, el cdigo est mucho ms depurado y resulta ms fiable, ya que es cdigo del propio sistema operativo el que estamos utilizando. 4.1. Las rutinas de servicio del sistema operativo Las rutinas de servicio son funcionalidades que puede ejecutar el procesador y que hace lleva a cabo al hardware operaciones realmente complicadas pero con la seguridad de que es el propio sistema operativo el que las realiza y gestiona. Los servicios dependen un poco de cada sistema operativo pero en general podemos dividirlos en 7 grandes grupos: Gestin de procesos: Creacin, eliminacin, suspensin, reanimacin y asignacin de procesos, as como la cuota de CPU asignado a cada uno de ellos. Sealizacin entre procesos: En un sistema multitarea el nexo natural de unin entre las aplicaciones en ejecucin, evidentemente es el propio sistema operativo. Seales, semforos, regiones crticas Gestin de dispositivos de entrada/salida: Crear, abrir y cerrar canales de entrada/salida, as como leerlos y escribirlos. Gestin directa de los recursos del sistema: Dependen un poco de cada sistema operativo, pero suele contar entre otros con la gestin de la memoria del sistema.

Sistemas operativos 9

Gestin del sistema de archivos: Crear, eliminar, copiar, cambiar de nombre ficheros y directorios. Protecciones: Determina si un servicio determinado se puede dar a un usuario o no (por ejemplo compartir una impresora o leer un determinado fichero o escribir sobre l), es ms utilizado por los administradores de sistemas que por los usuarios. Funciones de tiempo: Referencias temporales de los procesos.

4.2. Los mecanismos de acceso a los servicios Estudiamos aqu como podemos, voluntariamente desde una aplicacin, acceder a estos servicios del sistema operativo, es decir, como transferir el control de la CPU al sistema operativo (pasamos de modo usuario normalmente, a modo supervisor con el consecuente cambio de privilegios). Hay dos mtodos: Puntos fijos: Se realizan las llamadas de manera idntica a cualquier procedimiento de usuario, porque entendemos que en el ncleo del sistema operativo estn as codificadas, como meros procedimientos. El problema es que como el ncleo del sistema operativo se carga en memoria al arrancar el PC, puede haber problemas para vincular los nombres simblicos de los procedimientos con los nombres reales que encontrarn los procesos durante su actividad; podemos intentar solucionarlo de dos formas: o Se activa el procedimiento a travs de su direccin real, lo cual representa muchos inconvenientes. o Se utilizan nombres simblicos y se suministran las direcciones para las libreras del sistema. Ambas soluciones son sensibles a los cambios de ubicacin en los puntos de entrada al sistema operativo, lo que no garantiza la portabilidad de las aplicaciones durante las distintas versiones de un mismo sistema operativo o a causa de diferentes configuraciones de software. Llamadas al supervisor o traps: Se transfiere el control indirectamente para la utilizacin de una tabla de direcciones de las rutinas de servicio. En el momento de la carga el memoria del ncleo del sistema operativo, las entradas de la tabla de direcciones de las rutinas de servicio se llenan con las direcciones reales de cada rutina. Si no varan estos nmeros, estaremos garantizando la portabilidad del cdigo a las diferentes versiones del sistema operativo o a diferentes configuraciones hardware. Las llamadas al supervisor son instrucciones hardware especializadas en transferir el control de la ejecucin al sistema operativo (es una clase concreta dentro del conjunto general de interrupciones del sistema). 4.3. Los mecanismos bsicos de transferencia El control de la ejecucin de un cdigo al sistema operativo puede transferirse por voluntad del proceso en ejecucin o por cualquier otro motivo. Existen tres mecanismos bsicos para llevarlo a cabo: Llamadas explcitas al sistema operativo: Son puntos concretos del cdigo de usuario donde se realiza una transferencia explcita del control al sistema operativo, son acontecimientos sncronos. Excepciones: Son roturas de secuencias no previstas pero provocadas directamente por la ejecucin del mismo cdigo del usuario en curso (por ejemplo, la divisin por cero). La interrupcin llama a una rutina de servicio y se intenta solucionar el problema o se informa al sistema operativo de la situacin. No podemos generalizar la situacin posterior pero a veces no queda ms remedio que suspender la ejecucin del proceso. Interrupciones: Son sucesos asncronos totalmente ajenos al proceso en ejecucin, pero su resultado es la transferencia del control de la CPU al sistema operativo.

10 Sistemas operativos

4.4. El ncleo del sistema operativo El ncleo (o krnel) es la parte del sistema operativo formada por un conjunto de procesos ubicados siempre en la memoria principal. Se encarga de gestionar el hardware y de implementar las funciones ms bsicas de la gestin de procesos, memoria y entrada/salida. Entre ellas destaca la gestin de las interrupciones, excepciones y llamadas al supervisor. El ncleo en s es solo una pequea parte del sistema operativo, pero es el cdigo ms utilizado y por ello se carga en la memoria, no todo el sistema operativo tiene que cargarse en la memoria. En la tabla siguiente se muestra un diagrama de las posibles formas en las que se puede ejecutar el ncleo.
Gestin de interrupciones

Es conveniente observar que el ncleo del sistema operativo es la parte del software que guarda una relacin mucho ms directa y estrecha con el hardware y por ello este ncleo utiliza todas las herramientas que el hardware puede ofrecernos. Los mecanismos ms significativos que utiliza son los siguientes: Ejecucin en modo privilegiado: Le permite acceder a todos los registros de control de la mquina y ejecutar instrucciones que en modo normal provocaran una excepcin. Podemos pasar de modo usuario a sistema (como ya sabemos haciendo una llamada a sistema por un cdigo en ejecucin- o por una interrupcin de hardware), de sistema a usuario (cuando ha acabado la rutina de servicio del ncleo que habamos invocado) o de sistema a sistema (cuando se atiende una interrupcin mientras se est ejecutando cdigo del sistema). Jerarquizacin de interrupciones mediante prioridades: Para poder organizar de manera correcta la urgencia de los servicios que se solicitan al ncleo es imprescindible que se organicen por prioridades. En la tabla lateral podemos observar un ejemplo tpico de organizacin de interrupciones.

Prioridad en interrupciones

Sistemas operativos 11

TEMA 3 LA GESTIN DE LA MEMORIA


Tema 3 La gestin de la memoria 1. Las funciones de traduccin de direcciones 2. Los modelos de gestin de la memoria de asignacin contigua 3. Los modelos de gestin de la memoria de asignacin no contigua 4. La memoria virtual

La gestin de la memoria se encarga bsicamente de asignar la memoria fsica del sistema, que es finita, a los procesos que lo soliciten. Ningn programa que se encuentre en el interior del sistema puede ser ejecutado si no se le ha asignado memoria principal, de ah su importancia. Adems la gestin de la memoria debe satisfacer dos operaciones que pueden ser conflictivas: la proteccin del espacio de direcciones, es decir, que ningn proceso pudiese acceder al espacio de memoria asignado a otro proceso; y la comparticin de memoria, permitiendo espacios comunes de memoria para todos los procesos.

1. LAS FUNCIONES DE TRADUCCIN DE DIRECCIONES Recordemos que en un proceso el espacio lgico del mismo es la estructura que contiene el cdigo, los datos y la pila; mientras que el espacio fsico hace referencia a las direcciones de la memoria donde se carga el espacio lgico sealado anteriormente, es decir, es el espacio real. Tambin debemos distinguir lo que es el espacio de direcciones del procesador que son las direcciones que genera el procesador a la hora de acceder al cdigo, datos y pila del proceso; este espacio adems limita el tamao de la memoria, ya que determina el nmero de posiciones de memoria a las que puede remitir el procesador. Podemos encontrar los siguientes esquemas de reubicacin en memoria Reubicacin esttica en tiempo de compilacin/montaje: Si es posible saber de antemano en qu lugar de la memoria fsica se cargar el proceso, el compilador genera un cdigo ejecutable que contiene esas direcciones fsicas reales. As, las direcciones que genera el procesador, coinciden con las direcciones fsicas. En el ejemplo de la figura lateral, podemos observar en el ejecutable (a) que como sabemos que el proceso se va a cargar a partir de la direccin @64000 de la memoria fsica, el compilador se encarga ya de asociar a la variable la direccin @64066 (ya que ocupaba la direccin @66 en el cdigo fuente). Lo malo es esta reubicacin es que si quisiramos que el proceso se cargase a partir de otra direccin de memoria distinta habra que compilar de nuevo todo el programa. Reubicacin esttica en tiempo de carga: Al no ser posible conocer por anticipado el espacio real de memoria donde se cargar el proceso, el compilador solo puede contener direcciones lgicas; pero en tiempo de carga s se conoce la direccin y se produce la traduccin de direcciones lgicas a fsicas. Al igual que antes, el proceso lanza direcciones fsicas, con la diferencia de que si quisiramos situar el proceso en otro lugar de la memoria, no sera necesario volver a compilar todo el proceso, aunque s es necesario volver a cargarlo. Por tanto, es igual al modelo anterior, con la diferencia d que el fichero ejecutable contiene direcciones lgicas, en el ejemplo, observamos el ejecutable (b).

Reubicaciones estticas

12 Sistemas operativos

Reubicacin dinmica en tiempo de ejecucin: Implica que la correspondencia entre el espacio de direcciones lgico y el espacio de direcciones fsico se lleva a cabo en tiempo de ejecucin; ello permite que un proceso tenga la posibilidad de moverse durante su ejecucin de un lugar de la memoria a otro. Tambin es necesario un hardware aadido para traducir las direcciones, generalmente consiste en registros de base que indican la direccin de la memoria a partir de la cual se ha cargado el proceso de memoria (puede observarse en la figura de la tabla lateral). Como notas positivas decir que permite llevar a cabo una gestin dinmica de los procesos en memoria, permite reubicarla en otro lugar de la misma y compactarla, permite el intercambio, la particin del espacio lgico del proceso, etc.

Reubicacin dinmica

2. LOS MODELOS DE GESTIN DE LA MEMORIA DE ASIGNACIN CONTIGUA En un principio no exista gestin alguna de la memoria, es decir, el usuario tena el control completo de la misma; ello era viable en sistemas que se dedican a entornos de trabajo muy especficos; pero completamente inviable en sistemas complejos y compartidos por una gran cantidad de usuarios. La primera estructuracin de la memoria consiste en dividirla en dos partes, una particin destinada al sistema operativo y protegida para evitar accesos no controlados, y otra dedicada al usuario para que pudiese ejecutar los programas. Debido a que generalmente solo se cargaba un proceso en la memoria, la comparticin no tena demasiado sentido y la reubicacin sola ser esttica, dado que el proceso no dejaba la memoria hasta que no finalizaba su ejecucin. 2.1. Las particiones fijas El primer esquema que se propone para la gestin en la memoria en sistemas multiprogramados es la particin de la memoria en varios fragmentos (generalmente de tamaos diferentes): Estas particiones se crean cuando la mquina arranca y no se puede modificar su tamao. Una vez definidas las particiones el sistema necesita guardar la informacin asociada a cada una de ellas, como es el inicio, tamao y estado de ocupacin de la misma, y ello lo hace en la tabla de descripcin de particiones (vase tabla lateral). Cuando se quiere ejecutar un proceso que no est en memoria, se busca una particin libre y se carga el proceso all; existen dos polticas de asignacin de memoria: Cuando hay particiones de memoria libres, se puede asignar a la particin que se ajusta mejor al tamao del proceso (recordemos que las particiones suelen ser de tamaos distintos) o se le asigna la primera particin libre en la que quepa el proceso. La primera opcin optimiza lgicamente el uso del sistema, pero es ms lenta que la segunda. Cuando no hay particiones de memoria libres, se puede dejar el proceso pendiente de ejecucin y esperar que se libere otro proceso que deje una particin de memoria lo bastante grande o se puede obligar a un proceso que est en memoria a dejar libre su particin para que se puede cargar el nuevo proceso. Esto ltimo es lo que se denomina intercambio del proceso o swapping. A la hora de volverlo a cargar si la ubicacin es esttica se har en el mismo espacio de memoria que ocupaba anteriormente o se podr realizar en una particin cualquiera (en la que quepa, claro est).

Particiones fijas

Sistemas operativos 13

Queda claro que en este sistema de particiones fijas, el nmero de particiones determina el nmero mximo de procesos que se pueden tener cargados en memoria simultneamente y adems el tamao de una particin determina tambin el espacio lgico mximo que puede ocupar un proceso; adems un proceso solo podr ejecutarse si queda libre alguna particin de memoria con el espacio suficiente para poder cargar en ella el cdigo del proceso. El principal problema en este tipo de sistemas es la fragmentacin interna, sucede cuando un proceso no utiliza todo el espacio de particin de memoria para l asignado y por tanto, est haciendo mal uso de la misma. Por ejemplo, si un proceso ocupa 10K y se carga en una particin de 15K, se forma una fragmentacin interna dentro de la particin de 5K. Este sistema de particiones fijas es uno de los mtodos ms sencillos que soportan la multiprogramacin dado que los algoritmos de gestin y asignacin de la memoria son sencillos, rpidos y fiables. Es un mtodo adecuado para los sistemas en los que se conoce la carga de trabajo y no se produce desarrollo de nuevos programas, aunque la mayor parte de sus inconvenientes proviene de la falta de flexibilidad para adaptarse a las necesidades variables del sistema. 2.2. Las particiones variables Debido a los problemas que generan las particiones fijas, se implementan las particiones variables para intentar solucionarlos. En este tipo las particiones variables se crean y se destruyen en funcin de las variaciones en la carga del sistema. Por ejemplo, cuando se intenta ejecutar un proceso y hay que asignarle espacio en memoria, es necesario primero saber qu parte de la memoria est ocupada (inicialmente existe una nica particin libre con toda la memoria de la que pueden disponer los programas de usuario); hecho esto se intenta encontrar un espacio contiguo de memoria donde quepa el proceso y una vez encontrado se crea una particin introduciendo la direccin de inicio (base), el tamao y el estado en una tabla de descripcin de particiones como podemos observar en la figura lateral. Cuando un proceso finaliza o se retira de la memoria, el sistema libera la particin e invalida la entrada correspondiente en la tabla de particiones del sistema. En cuanto a las polticas de asignacin de la memoria, existen varias de ellas como puede ser asignar la primera particin libre donde el proceso pueda caber, la menor particin de la memoria libre donde cabe el proceso ajustando el tamao lo mximo posible- etc. Las ventajas que aporta el sistema de particiones variables son: Queda prcticamente eliminada la fragmentacin interna. Se puede asignar la totalidad de la memoria a un nico proceso y as ejecutar procesos que requieren mucha memoria. Podemos soportar y adaptarnos al crecimiento dinmico de un proceso. contrario, tambin existen

Particiones variables

Por el desventajas:

14 Sistemas operativos

Aparece lo que se llama fragmentacion externa, dado que a medida que finaliza la ejecucin de diferentes procesos, la memoria queda fraccionada de modo que el espacio libre no es contiguo. Por ejemplo, han finalizado dos procesos no contiguos de 300 y 100 k respectivamente, pero necesitamos cargar en memoria un proceso de 350 K. Hay espacio suficiente, pero al no ser contiguo no lo podemos utilizar. Esto se intenta resolver con la compactacin de la memoria, consistente en reorganizar los procesos residentes en memoria, de modo que todo el espacio libre quede en una nica particin. Esto requiere que los programas cargados en memoria sean de reubicacin dinmica (lgicamente, dado que de lo contrario no los podramos desplazar en tiempo de ejecucin), y por otro lado la compactacin es un proceso muy costoso en esfuerzo del procesador y en tiempo. Requiere protocolos de asignacin y mantenimiento de las particiones ms complejos que consumen ms tiempo y espacio del sistema operativo.

3. LOS MODELOS DE GESTIN DE LA MEMORIA DE ASIGNACIN NO CONTIGUA Hasta ahora, los modelos que hemos estudiado eran de asignacin contigua, es decir, cada proceso ocupaba un espacio contiguo de memoria, no haba saltos ni particiones entre los procesos. Pero para una mejor gestin de la memoria y una mejor optimizacin de la misma caben dos nuevos modelos, la segmentacin y la paginacin. 3.1. La segmentacin En la segmentacin, el espacio lgico del proceso se parte en unidades lgicas denominados segmentos. En la tabla lateral podemos observar como un mismo proceso ha sido dividido en 4 segmentos: el cdigo, los datos, la pila y el segmento comn, cada uno de ellos con un tamao distinto. Cada segmento se compila por Proceso de segmentacin separado y cualquier objeto dentro del segmento se identifica por el nmero de segmento al que pertenece y el desplazamiento relativo dentro del segmento. Se crea una tabla de segmentos y tambin una tabla de descriptores de segmento asociada a cada proceso para poder luego acceder a su espacio real en memoria. As para acceder a la subturina2 se identifica con el segmento al que pertenece y se busca en la tabla de descriptores de segmento (segmento comn: 3) y la posicin relativa que ocupa en ese segmento (100) nos dar la direccin fsica real del mismo. Adems observamos un proceso de filtrado o bsqueda de errores. Si el segmento al que se quiere acceder entra dentro de la longitud permitida o no. Adems podemos aadir en esta tabla otros campos para permitir el tipo de acceso: permitido, compartido, etc. Podemos compartir cdigo de manera sencilla y til. Por ejemplo si varios usuarios utilizan un mismo editor, en lugar de cargar el cdigo del editor varias veces en memoria se carga una nica vez y se comparte entre todos, eso s, la parte del editor que sea especfica de un usuario en concreto no se podr compartir, y se tendr que duplicar.

Sistemas operativos 15

Como desventaja, decir que la tabla de descriptores generalmente no se implementa en hardware, sino en software,, lo que hace la gestin de segmentos algo ms lenta. 3.2. La paginacin La paginacin es gestionada por el sistema operativo y lo que hace es dividir el espacio lgico del proceso en partes de tamao fijo, que reciben el nombre de pginas. La memoria principal tambin se dividir en trozos del tamao de una pgina, denominados frames.
Paginacin de un proceso en 4 pginas

Por ejemplo, partimos de un sistema de de 10 Kbytes de memoria. El tamao de una pgina es de 1 K; de modo que la memoria posee un total de 10 frames. El espacio lgico del proceso que queremos aadir a la memoria tiene un mximo de 4 K, por lo tanto cuatro pginas, y ocupar un mximo de 4 frames. Supongamos que nos encontramos con un proceso que ocupa 2536 Kbytes, en cuyo caso ocupar completamente las dos primeras pginas y una porcin de la tercera, dejando la cuarta completamente vaca. El sistema busca 3 frames libres de la memoria (que no tienen que ser contiguos) y establece la correspondencia entre pgina y frame, en la llamada tabla de pginas. Cada entrada de la tabla de pginas tiene asociado un bit que se conoce como bit de validez V, que indica si la pgina contiene informacin vlida para el proceso o no. En nuestro ejemplo las tres primeras pginas tendrn bit V a 1, y la ltima estar a 0. Igualmente, para saber si un frame de memoria est libre o no, el sistema dispone de una tabla de frames donde se indica su estado y otra serie de bits para indicar informacin referente a punteros, proteccin, comparticin, etc. Esta tabla de pginas se implementa por software y por lo tanto necesita dos accesos a memoria: un primer acceso para examinar la tabla de pginas y obtener la direccin fsica del objeto que se quiere consultar y un segundo acceso para llegar al objeto en cuestin. Este sistema al igual que los anteriores tiene ventajas y desventajas: Se evita la fragmentacin externa, aunque observamos que se genera cierta fragmentacin interna. Normalmente el ltimo frame de un proceso no estar lleno del todo es muy difcil que coincida el tamao de un proceso con mltiplos de 1024 bits-. Eso s, el problema es mucho menor que en particiones variables dado que el espacio despreciado siempre ser muy pequeo. Cuanto menor sean las pginas/frames en tamao, menos espacio se desperdiciar, pero a cambio aumentar en memoria el sistema para las tablas de pginas de todos los procesos, lo que lo puede hacer algo lento. Con bits de acceso controlado en la tabla de pginas, podemos conseguir un acceso controlado, compartido, permitido, etc., a cada pgina, pero como la divisin en pginas se hace de manera mecnica por tamao- y no por tipo de datos (cdigo, pila, etc) se complica en modo extremo. Habra que conseguir que los datos, el cdigo, y dems, ocuparan las mismas pginas lgicas y que no se produjesen mezclas, lo cual complica bastante la proteccin de la informacin.

16 Sistemas operativos

4. LA MEMORIA VIRTUAL Hasta ahora todos los procesos estudiados se cargaban completamente en la memoria para poder ejecutarse. Con la memoria virtual lo que vamos a pretender es que un proceso solo se cargue parcialmente en la memoria, mientras que se mantiene una imagen del espacio lgico del proceso en la memoria secundario, preferentemente el disco duro. El sistema operativo toma la decisin de qu parte del proceso resulta imprescindible cargar para su ejecucin y lo har en funcin de la carga y disponibilidad. La memoria se puede implementar igual que la segmentacin o paginacin en memoria que hemos visto en los puntos anteriores, la nica diferencia es que hay que aadir algunos campos ms en cada entrada de la tabla de pginas o segmentos para indicar si la pgina o el segmento se encuentra cargado o no en la memoria principal, estos campos son el bit de presencia P que indica si la pgina est cargada en la memoria fsica (bit 1) o no est cargada (0); lo habitual es que no haya ninguna pgina cargada y lo vayan haciendo a medida que se van necesitando. Previamente a esto se estudia el bit de validez V, para saber si la direccin que se ha dado es vlida. Tambin es necesaria una tabla de pginas de la memoria secundaria para poder ser consultada. En fin, el proceso sera como sigue y como podemos observar en la figura siguiente:
Carga de pginas en la memoria virtual

Se observa el bit de validez para ver si la direccin es correcta. Se observa el bit de presencia P para saber si est o no cargada en memoria. En caso de que no est cargada debe buscar en el disco y en la tabla de pginas de memoria secundaria para cargarla. La poltica de carga de pginas determina si debemos cargar las pginas solo cuando se han solicitado y no se encuentran en la memoria principal (bajo demanda), o tambin se puede adelantar trabajo aprovechando la localizacin espacial de los programas. Para cargarla es necesario que existan frames libres, de no ser as dependiendo de la poltica de sustitucin de pginas habr que desalojar alguna de la memoria principal para subir la que necesitamos en ese momento.

Sistemas operativos 17

TEMA 4 LOS DISPOSITIVOS DE ENTRADA/SALIDA

Tema 4 Los dispositivos de entrada/salida 1. El concepto de dispositivo de entrada/salida 2. Las caractersticas de los dispositivos 3. Los dispositivos reales 4. La independencia de los dispositivos 5. La gestin de dispositivos en UNIX

1. EL CONCEPTO DE DISPOSITIVO DE ENTRADA/SALIDA El concepto de dispositivo de entrada/salida se asocia al de perifrico, como por ejemplo los teclados, pantallas, discos o mdems. Pero un dispositivo de entrada/salida es algo ms, es un objeto gestionado por el sistema operativo sobre el cual los procesos pueden realizar operaciones de lectura/escritura con la finalidad de obtener, almacenar, mostrar o transferir informacin. El sistema operativo se encarga de gestionar tales dispositivos a travs de: Herramientas: Que desarrollan polticas de acceso en funcin de las necesidades de los usuarios. Interfaz de acceso que es independiente de las particularidades de cada uno de los dispositivos pero a la vez permite explotar todas las caractersticas del mismo. Entorno portable que permite que las aplicaciones trabajen con los dispositivos sin tener que modificarlas.

Dispositivos de entrada/salida

2. LAS CARACTERSTICAS DE LOS DISPOSITIVOS Los dispositivos presentan caractersticas singulares que el sistema operativo tiene que gestionar de diferentes modos. Los hemos clasificado atenindonos a sus caractersticas fsicas, de acceso y de control, pero es una clasificacin ms de las muchas que podramos haber hecho, debido a la pluralidad de los dispositivos. Debido a ello tambin hemos de tener en cuenta que accedemos a los dispositivos y los manipulamos con operaciones distintas y con parmetros distintos; adems estos dispositivos segn el tipo pueden producir distintos resultados e incluso dar errores diferentes frente a situaciones anlogas. El sistema operativo es el encargado de independizarnos de todos estos casos diferentes mediante una gestin de la mquina virtual que hace que toda esta variedad sea transparente para el usuario. Las caractersticas fsicas de los dispositivos son las siguientes: Extrables o fijos: Hay dispositivos fijos como los discos duros y otros extrables como los discos compactos. Los dispositivos extrables necesitan un tratamiento adicional por parte del sistema y de los usuarios, ya que debe asignarse el dispositivo a un nico usuario al mismo tiempo y hay que informar al sistema del hecho de que se ha insertado o se proceder a extraer el dispositivo extrable. Capacidad de almacenamiento: Se caracteriza por la geometra u organizacin del espacio de almacenamiento en sectores, pistas y caras (discos duros), en bloques (cintas), etc.; tambin reconocer que el tipo de almacenamiento puede ser permanente o temporal: permanente como un disco duro donde queda la informacin hasta que explcitamente se borra o temporal como puede ser un fichero temporal (por ejemplo la cola de impresin de un documento) que cuando acaba su funcin deja de existir y se borra. Tipo de unidad de transferencia: Encontramos los dispositivos que transfieren caracteres como puede ser un terminal o dispositivos que transfieren bloques de caracteres como es un disco que transfiere como mnimo 512 caracteres.

18 Sistemas operativos

Velocidad de transferencia; Suele ser menor que la del procesador, por lo que ste aplica tcnicas que intenten reducir el tiempo de espera: o Buffering o almacenamiento en memoria intermedia: tiene la funcin de suavizar la diferencia de velocidades entre el procesador y los dispositivos, almacenando en una memoria entre el dispositivo y el procesador los datos que se van a procesar (por ejemplo en la grabacin de un CD). o Spoolin o gestin de colas: Permite que la entrada/salida de un proceso tenga un paso intermedio por dispositivos de gran capacidad de almacenamiento como pueden ser el disco duro. Por ejemplo a la hora de imprimir un documento relativamente largo se perder el control del PC hasta que se haya impreso completamente; como la impresora es ms lenta esto supone un tiempo de desfase enorme, por lo que se gestiona la impresin mediante la cola de impresin. Tipo de codificacin de la informacin: Tiene que seguir unas normas de codificacin que dependan de cada dispositivo. Por ejemplo un terminal orientado a caracteres debe seguir el cdigo ASCII de 7 u 8 bits. Estructura de la informacin: Condiciona esto las operaciones que podemos llevar a cabo con dicha informacin. Por ejemplo podemos compilar un fichero fuente, y podemos ejecutar un fichero ejecutable, pero no al revs. Entre las caractersticas de acceso se encuentran:

Acceso a dispositivos de entrada/salida: Los dispositivos pueden ser de entrada, salida o ambos a la vez, y en funcin de ello tendr sentido o no una determinada operacin de acceso. Por ejemplo podemos hacer una salida por impresora, pero es absurdo hacerla sobre un ratn. Acceso compartido o exclusivo: Un ejemplo de dispositivo exclusivo es la impresora. Es evidente que no se puede imprimir ms de un documento al mismo tiempo; pero el propio sistema se encarga de proporcionar mecanismos de exclusin como los semforos o la comparticin que solucionan el problema. Acceso secuencial, indexado o directo: Segn el dispositivo se tendr acceso secuencial (una cinta), directo (disco duro) o indexado. Acceso sncrono o asncrono: La mayor parte de los dispositivos tienen un acceso sncrono, es decir, si la informacin no se encuentra disponible en ese momento, el proceso que efecta el acceso esperar hasta que lo est. Si es asncrono, en cambio, el proceso informa que no hay informacin y contina su ejecucin (tambin puede advertir cuando los datos ya estn disponibles). Otras caractersticas: Como son el activar o no el modo de echo, por ejemplo lo habitual es ver que se introducen los caracteres que se introducen por el teclado (echo activado) excepto en las password donde no se ve (echo desactivado). Tambin es til el modo de edicin cooked en el que determinados caracteres de entrada se interpretan como rdenes y no como simples caracteres. Y por ltimo destacan las caractersticas de control: Caractersticas del controlador: El sistema controla los perifricos mediante una serie de puertos que pertenecen al hardware denominado controlador. Pueden ser muy distintos, por DMA, por interrupciones, por encuesta El sistema operativo esconde a los usuarios todas estas particularidades. Lenguajes de rdenes: Algunos dispositivos utilizan lenguajes de control especficos como son el lenguaje PostScript para determinadas impresoras

3. LOS DISPOSITIVOS REALES Un dispositivo real es un dispositivo que existe realmente y que es la combinacin de diferentes elementos de hardware y software, como se puede observar en la imagen de la pgina siguiente.

Sistemas operativos 19

Dispositivos fsicos, lgicos y virtuales

Los dispositivos pueden ser fsicos, lgicos o virtuales. Un dispositivo fsico es un dispositivo que existe fsicamente y est formado por el perifrico + su hardware de control (parte fsica) y por el software que lo gestiona (driver). Tipos de estos dispositivos son las impresoras, teclados, pero tambin los discos duros, la memoria RAM, etc. Estos dispositivos son los ms evidentes en un sistema y rpidamente los identificamos como tales. No sucede lo mismo con un dispositivo lgico, pues no existe fsicamente sino como el resultado de un software del sistema que crea este dispositivo, estn formados nicamente por su driver. Un ejemplo puede ser la unidad virtual de DVD/CD que puede crear el software de grabacin Nero para poder montar imgenes de grabaciones. Otro dispositivo lgico es la ventana, que combina cuatro dispositivos fsicos para existir: pantalla, memoria, teclado y ratn; pero en s la ventana es un rea grfica almacenada en la memoria que se representa total o parcialmente sobre una ventana.

4. LA INDEPENDENCIA DE LOS DISPOSITIVOS Como programadores nos interesa poder realizar programas portables, que se adapten a diferentes situaciones y esta necesidad por supuesto, incluye el entorno de entrada/salida donde se van a ejecutar. Para ello debemos independizar el cdigo de los programas con respecto a los dispositivos que se van a utilizar. El primer paso para esta independizacin es la utilizacin de los dispositivos virtuales. Un dispositivo virtual es un dispositivo que, a priori, no se encuentra asociado a ningn dispositivo real, lo utilizar el programador pero sin saber en principio, sobre qu dispositivo en concreto se van a llevar a cabo las operaciones que se especifican en l. Ms tarde, en la ejecucin del programa, tendr lugar la asociacin entre el dispositivo real y el virtual de dos formas: Asociacin implcita: El sistema y el proceso que ha iniciado la ejecucin del programa se encarga de efectuar la asociacin. En general, los dispositivos virtuales asociados implcitamente se denominan dispositivos estndar y contamos con el estndar de entrada, el de salida y el de error. Asociacin explcita: Se efecta la asociacin por el mismo programa durante la ejecucin. A partir del momento en que se ha realizado la asociacin, el programa redirigir todas las entrada/salidas del dispositivo mediante el dispositivo virtual. Pero no solo con los dispositivos virtuales conseguimos la independencia de los programas, ya que si se requieren operaciones especficas de los dispositivos reales con los cuales estn asociados, no hemos ganado nada. Necesitamos operaciones uniformes es decir, conocer cuales son las operaciones ms utilizadas por los programas y las ms comunes en los dispositivos, para poder redefinirlas como un conjunto de operaciones independientes de las caractersticas de los dispositivos. Encontramos dos grandes tipos de operaciones: las bsicas de acceso y las de control. Operaciones bsicas de acceso: Son dos: leer y escribir y nos tienen que permitir acceder a la informacin con independencia del dispositivo. Para que sean realmente compatibles con todos los dispositivos, debe incluir estas operaciones el tipo de acceso, el tipo y la estructura de datos que se tiene que transferir. Las operaciones de acceso leer y escribir quedan as definidas: o Estado = leer (disp, buff, cont).

20 Sistemas operativos

Estado = escribir (disp, buff, cont).

Donde disp es el dispositivo virtual sobre el que se quiere trabajar, buff es la variable desde la cual se extraern o se introducirn los datos y cont es el nmero de datos que hay que transferir. Si no aadimos ms parmetros queda claro que accedemos al mismo tipo de datos, generalmente es el ms elemental y es el byte. El motivo de ello es que no se pueden reconocer todos los tipos posibles, por ms tipos que el sistema reconociese, siempre surgiran aplicaciones con tipos nuevos; adems el Sistema operativo a travs de libreras y herramientas puede hacer que posteriormente esta poltica se adapte a situaciones individuales. Operaciones bsicas de control: Hay 3 que son posicionar, abrir y cerrar. La operacin posiciona nos permite efectuar accesos directos dentro de la informacin en aquellos dispositivos que lo soporten. En general el orden que seguimos en una sesin de acceso a un dispositivo es: o o o As o o o Asociar un dispositivo real a uno virtual de manera explcita. Inicializar las estructuras de datos internos del sistema operativo que sean necesarias para realizar los accesos (secuencial y directo). Verificar los derechos de acceso que tiene el proceso sobre el dispositivo. las operaciones de control podran ser: Estado = posicionar (disp, pos). Disp = abrir (nombre, op). Estado = cerrar (disp).

Donde op es el tipo de acceso que se quiere efectuar y nombre es el nombre del dispositivo real.

5. LA GESTIN DE DISPOSITIVOS EN UNIX UNIX como todos los sistemas operativos, ofrece una visin de los dispositivos que hace que las caractersticas propias de cada uno sean transparentes para el usuario. El sistema UNIX reconoce dos tipos de dispositivos: Dispositivos de bloques: Como los discos, cintas y ficheros; permiten el acceso directo y utiliza una memoria de cachs de bloques con la finalidad de mejorar el rendimiento en sus accesos. Dispositivos de caracteres: Como terminales, impresoras, ratones los accesos se realizan de manera secuencial Internamente los diferentes tipos de dispositivos se identifican por su tipo bsico (bloques o caracteres), por un nmero denominado major (tipo de dispositivo) y un nmero minor (dispositivo distinto dentro del mismo tipo major). UNIX gestiona los dispositivos mediante drivers asociados a cada tipo de dispositivo como se muestra en la figura de la pgina siguiente. El usuario que quiere dirigirse a un dispositivo real de UNIX debe hacerlo por medio del sistema de ficheros mediante el cual se nombran ficheros especiales. Por ejemplo en UNIX la impresora es /dev/1p0 y el disco duro /dev/hda. UNIX utiliza los file descriptor que son nmeros locales en el proceso que forma parte den entorno de ejecucin de un dispositivo. Encontramos 3 file descriptors: el 0 o estndar de entrada, el 1 o estndar de salida y el 2 o estndar de error. En la pgina siguiente tambin podemos apreciar las entrada/salida estndar de los procesos.
Disp. bloques / caracteres

Sistemas operativos 21

Esquema de las entradas/salidas en UNIX

Un caso especial de dispositivo lo constituyen las pipes. Una pipe es un dispositivo lgico destinado a comunicar procesos. Su funcionamiento es el de una cola de caracteres con una longitud fija en la que los procesos pueden escribir y leer. Cuando se intentar leer sobre una pipe vaca, se quedar bloqueado hasta que otro proceso escriba en ella los caracteres suficientes como para que se pueda efectuar una lectura. Otro caso es intentar escribir sobre una pipe llena; en este caso hasta que otro proceso no haya ledo los suficientes caracteres no se producir la escritura. Existen las named pipe que es un dispositivo normal que forma parte del sistema de ficheros y su comportamiento es idntico al de cualquier dispositivo. Y luego la pipe que es un dispositivo que se crea en el momento en que un proceso lo abre y se destruye cuando se cierra el ltimo proceso que lo tiene abierto. Una vez creada, los diferentes procesos lo asocian a un dispositivo virtual de manera implcita, por ello las pipes no tienen asociado ningn nombre que aparezca en el sistema de ficheros.

Entrada/salida estndar de los procesos

El tema ms interesante de UNIX desde el punto de vista de la entrada/salida es la facilidad con que se pueden redireccionar los files descriptors estndares de los procesos desde el shell. El smbolo < se utiliza para redireccionar el estndar de entrada, y el smbolo > el de salida; as por ejemplo: $ps > nombre guarda el estado de los procesos actuales en un fichero nombre. Otro ejemplo ms: $ tail < nombre muestra por la salida estndar actual las diez ltimas lneas del fichero nombre. Otra funcin muy interesante es el posible encadenamiento de la ejecucin de ms de un programa mediante pipes. Esto se consigue redireccionando la salida estndar de un proceso y la entrada estndar de otro a una pipe; para indicar la conexin de dos procesos se utiliza el smbolo |. Por ejemplo: $ps aux | sort +2 -3 | tail > nombra Enva al fichero nombre la informacin de los nueve procesos que tuilizan durante ms tiempo la CPU.

22 Sistemas operativos

TEMA 5 EL SISTEMA DE FICHEROS

1. EL CONCEPTO DE FICHERO El sistema de ficheros es el encargado de gestionar el conjunto de ficheros contenidos en un mismo dispositivo de almacenamiento. Se encarga de proporcionar un espacio de nombres y un control de acceso a todos los dispositivos. Ahora bien, un fichero es un dispositivo lgico formado por una agrupacin lgica de informacin almacenada en un dispositivo fsico, por ejemplo, un disco, una cinta o la memoria, que se puede manipular como un todo. La informacin que incluye tiene en comn un conjunto de propiedades que la caracterizan, y son: La informacin relativa al contenido del fichero y a su modificacin: es decir, tamao, fecha de creacin, ltima modificacin, tipo de informacin. La ubicacin de esta informacin dentro del dispositivo de almacenamiento, as el sistema podr localizar el fichero dentro del dispositivo. La accesibilidad del fichero: es decir la proteccin del mismo, quien puede realizar operaciones, escribirlo, borrarlo, quien es el usuario propietario As pues podemos encontrar ficheros ejecutables, que el sistema operativo es capaz de ejecutar (dado que tienen una estructura y un encabezado que as se lo indican), otras veces abren un programa grfico si el fichero es una imagen y un caso especial es el del fichero directorio, que es una lista de parejas de nombres y nmeros cuya finalidad es dar nombre a los ficheros y permitir su localizacin.

Tema 5 El sistema de ficheros 1. El concepto de fichero 2. El espacio de nombres 3. La proteccin 4. El sistema de ficheros y la proteccin en UNIX

2. EL ESPACIO DE NOMBRES En este apartado vamos a tratar dos aspectos relacionados con el espacio de nombres: La estructura de los espacios de nombres y las operaciones que podemos realizar sobre la misma. Por qu necesitamos nombres? Esta bien claro que dentro del sistema se identifica cada objeto (entendiendo por objeto cualquier fichero, directorio, dispositivo, proceso, etc.) por un nombre interno que consiste en direcciones de memoria; pero claro a los usuarios nos resulta ms fcil recordar que el dispositivo con el nombre impresora es la impresora, que recordar un nmero que suele tener varias cifras. Una de las funciones del sistema de ficheros es facilitar una traduccin entre unos nombres a los que estamos acostumbrados los usuarios y los nombres internos del sistema. El sistema operativo adems implementa la funcin de traduccin de los nombres mediante estructuras de datos llamadas directorios, los cuales a su vez se implementan mediante ficheros en los que el sistema almacena la estructura de datos, consistente en una tabla que relaciona los nombres que contiene el directorio con los nombres internos del sistema operativo (ver figura lateral). Un sistema operativo puede ofrecer una visin de un nico espacio de nombres para todos los objetos y el sistema de ficheros (as lo hace UNIX que no diferencia distintas unidades) o un espacio de nombres separado e independiente para cada tipo de
Estructura de un fichero directorio

Sistemas operativos 23

objeto (Como Ms-Dos que el disquete y su contenido es A:, el disco duro C:, LPT1, etc). La estructura de los espacios de nombres puede ser de tres tipos: espacio lineal, espacio jerrquico en rbol y espacio jerrquico en grafo.
Distintas estructuras de los espacios de nombres

La estructura en espacio lineal es la ms sencilla, ya que solo tiene una dimensin en la que todos los nombres se encuentran en el mismo nivel (como vemos en la tabla lateral. Esta estructura es adecuada para espacios con pocos objetos, en sistema monousario ya que se trata de una estructura que permite tener una buena visin de conjunto y conseguir una localizacin rpida de cualquier objeto; pero resulta inadecuado cuando el nmero de objetos comienza a ser elevado, ya que el significado que para el usuario puedan tener los nombres que nos vemos obligados a poner a los dispositivos para no repetir, puede llegar a quedar desvirtuado. Por ello y porque nos gustara poder agrupar los ficheros por tipos, trabajos o cualquier otra clasificacin que nos resulte til, tenemos las estructuras jerrquicas. Para conseguir un espacio jerrquico tratamos los directorios como objetos con un nombre y as pueden formar parte de los objetos que agrupan otros directorios. La estructura jerrquica en rbol parte de un directorio raz del cual cuelgan otros directorios y/o ficheros que configurarn las hojas del rbol. El nombre absoluto es el formado por la ruta que va desde la raz, pasando por los diferentes subdirectorios, hasta llegar al fichero (separado cada nivel por el carcter delimitador /). Tenemos un directorio inicial y un directorio de trabajo. Los nombres relativos sern entonces los que forma el recorrido que va desde el directorio de trabajo hasta el fichero en cuestin. As varios ficheros pueden tener el mismo nombre relativo siempre que se obtengan a partir de diferentes directorios de trabajo, pues los nombres absolutos no son iguales. Con este sistema ya podemos clasificar los ficheros en directorios distintos, pero el problema de esta estructura es que no permite compartir de una manera sencilla ficheros entre diferentes usuarios ni permite moverse por el rbol de directorios en sentido ascendente, cambiando el directorio de trabajo.

Para ello tenemos la estructura jerrquica en grafo dirigido el cual permite direccional al mismo tiempo con los nombres absolutos y relativos. As podemos acceder a un objeto mediante ms de un nombre. Por ejemplo, en UNIX y en DOS en cada directorio figuran dos nombres especiales: . y ... El primero hace referencia al directorio que lo contiene, as podemos referenciar el directorio en el que nos encontramos sin conocer su nombre absoluto, y el .. es el nombre del padre del directorio, que nos permite ascender por la estructura. As solucionamos todos los problemas que nos habamos planteado anteriormente, pero eso s, el inconveniente que surgir despus (ya lo veremos) es la gestin de estos grafos. Las operaciones que podemos realizar sobre estas estructuras son varias:

24 Sistemas operativos

Operaciones de manipulacin del sistema de ficheros: o Crear_SF: El sistema de ficheros se incluye dentro de un sistema de almacenamiento. Por ello debemos dotar a cada dispositivo de un conjunto de estructuras de datos que permitan definir los ficheros, los directorios, etc, y as poder transportarlo sin prdida de informacin en el caso que se tratase de un dispositivo extrable. o Montar_SF: En algunos sistemas operativo s, se tiene que informar al mismo antes de acceder a una nuevo SF, tanto si se acaba de introducir un nuevo volumen (CD) como si se ha creado una estructura nueva, esto se requiere para poder seguir ofreciendo un nico espacio de nombres. o Desmontar_SF: Al contrario de lo anterior, por ejemplo cuando extraemos un CD. o Verificar_SF: Podemos verificar las estructuras de datos que configuran un SF; por norma general esto no suele formar parte del ncleo del sistema operativo, sino que son aplicaciones y utilidades. Operaciones de manipulacin de directorios: o Localizar_objeto: Consiste en que dado un nombre absoluto o relativo, se localiza el objeto al que hace referencia. No es en s una operacin nica, sino que suele formar parte de multitud de llamadas y procedimientos. o Modificar_nombre: Se localiza el directorio, se verifica que el nombre es nico y se cambia por el nuevo. o Crear_nombre: Se crea un nombre para un objeto en concreto. Si el objeto ya exista, se establece un enlace nuevo entre el nombre y el objeto al que hace referencia (enlace fsico). Es lo contrario a un enlace simblico que es un enlace a otro fichero que contiene el nombre del objeto (vnculo). La existencia de estos dos tipos de enlaces hace que la operacin localizar_objeto se vea obligada a saber de qu tipo de enlace se trata y a actuar en consecuencia. Si el objeto no exista y se crea a la vez que el nombre, debe proporcionar adems del fichero en s, su tabla de traduccin y los enlaces . y .. pertinentes. o Destruir_nombre: Se localiza un directorio y se destruye. Si el fichero al que haca referencia este nombre no contiene ningn otro, el sistema operativo lo destruir y liberar los recursos que ocupo. Los enlaces fsicos son fcilmente detectables, pero los simblicos no tanto, ya que estos enlaces simblicos pueden no estar en el mismo sistema o no hallarse activos en ese momento; como resultado de ello puede ser que aparezcan enlaces simblicos que no sealen a ningn lado o, lo que es peor an, que apunten a un fichero que ha reutilizado un nombre antiguo. Para evitar esto, el sistema detecta los enlaces simblicos que ya no apuntan a ningn fichero mediante la operacin localizar_objeto. o Ver_nombres: Permite consultar el contenido de un directorio. Operaciones de manipulacin del directorio de trabajo: o Cambio_de_directorio o Directorio_actual: estas dos operaciones nos indican en qu directorio estamos trabajando y cmo podemos cambiar el directorio de trabajo.

3. LA PROTECCIN Un sistema operativo gestiona los recursos y objetos sobre los cuales se pueden desarrolla acciones. Pero es responsabilidad del sistema operativo:

Sistemas operativos 25

La proteccin, es decir, impedir que la dinmica de unos usuarios se vea afectada por las acciones de otros. Esta proteccin se consigue autorizando o denegando los accesos que en un instante concreto soliciten los usuarios. La seguridad del sistema, es decir, impedir que la dinmica de unos usuarios se vea afectada por las acciones de agentes externos al sistema computador. Se centra esta responsabilidad en cuestiones como la identificacin de los usuarios.

El concepto que vamos a estudiar en este apartado es el primero, el de proteccin, y aunque proteccin y seguridad sean conceptos muy relacionados, supondremos que los usuarios han sido debidamente identificados y por tanto son en realidad quienes dicen que son. El concepto de proteccin se refiere al control que lleva a cabo el sistema operativo sobre las diferentes formas con que cuentan los usuarios para acceder a los objetos del sistema. Hay dos casos en los que no se necesita de proteccin: Cuando solo tenemos un usuario no hace falta control a los archivos, puesto que todos pertenecen al mismo usuario y cuando el sistema es multiusuario pero todos tienen acceso a todos los ficheros, pues no hay concepto de propiedad de fichero. Los elementos que intervienen en la proteccin son: Los objetos: son aquellos elementos que gestiona el sistema operativo sobre los cuales se pueden efectuar diferentes acciones: ficheros, dispositivos, directorios, procesos Los dominios son los diferentes agentes activos del sistema que pueden actuar sobre un objeto. As son dominios los procesos que pertenecen a un mismo usuario o a un mismo grupo de usuarios. Los derechos son acciones sobre un objeto permitidas por parte de un dominio: leer, escribir, ejecutar, crear, destruir

La matriz de accesos est formada por tantas filas como dominios hay y tantas columnas como objetos, como vemos en el ejemplo inferior:
Matriz de accesos

En esta matriz anterior, el dominio Juan tiene derechos de lectura y escritura sobre el objeto ejercicio1.txt, pero en cambio solo tiene derechos de lectura sobre el objeto ejercicioB.txt. En la tabla observamos que los dominios aparecen como objetos debido a que un dominio tambin es un objeto sobre el

26 Sistemas operativos

cual se pueden llevar a cabo acciones. Por ejemplo, el dominio Profesores tiene derecho de cambio sobre el dominio Estudiantes. La matriz de accesos es una buena forma de contemplar las relaciones que se establecen entre los diferentes elementos, pero no es un buen instrumento de trabajo, dado que su volumen crece rpidamente a medida que aumenta el nmero de usuarios y ficheros del sistema y adems el nmero de objetos sobre los cuales un usuario tiene derechos es pequeo en comparacin con el nmero total de objetos del sistema, con lo que la matriz se convertir en una estructura muy grande pero con la mayor parte de las celdas vacas. Para evitar este problema existen tres tipos de protecciones: las listas de control de acceso, las listas de capabilities y los modelos combinados: Listas de control de acceso son listas de parejas (derechos, dominio) asociadas a un objeto y que se obtienen como resultado de dividir la matriz de accesos es columnas y eliminar todas las celdas vacas (se ahorra espacio y la estructura es ms dinmica). As las listas de control de acceso se encuentran asociadas a los objetos y no a los procesos, de manera que cada vez que un proceso quiere llevar a cabo un acceso a un objeto hay que verificar si tiene derecho en la LCA. En una sesin de trabajo con un fichero se verifican los derechos en cada operacin de lectura o escritura que se quiere realizar, hecho que representar un volumen de sobrecarga importante para el sistema; aunque a cambio de ello como todos los derechos de los dominios sobre un objeto se encuentran en un mismo lugar, la asignacin y revocacin de los mismos por parte del propietario se efectuar con total sencillez. Listas de capabilities (capacidades): Es una lista de parejas (objeto, derechos) asociada a un dominio, cada una de las cuales se denomina capability. Las listas resultan de dividir la matriz en fijas y eliminar las celdas vacas; as estas listas son estructuras de datos asociadas a procesos (que pueden estar protegidas en un espacio determinado o cifradas para evitar modificar su contenido). As cuando un proceso accede a un objeto, tiene que presentarle al sistema la capability que le da derecho a llevarlo a cabo. El sistema verifica su validez y efecta el acceso, es ms gil que el mtodo anterior; en cambio la modificacin de los derechos no es trivial, ya que stos se encuentran repartidos por todos los procesos del sistema y para revocar un derecho hay que recorrer todos los procesos para eliminar las capabilities asociadas. Modelos combinados: Para solucionar los problemas que presentan uno y otro modelo, los sistemas utilizan una combinacin de los dos que permite disfrutar de las ventajas de los dos esquemas. Las LCA se utilizan como mecanismo bsico y se suelen presentar realizando una reduccin de todos los dominios posibles a unos cuantos. Por ejemplo en Unix hay tres grupos de dominio: el propietario, todos los dominios asociados al grupo de trabajo del propietario y el resto de dominios del sistema. El primer acceso a cada objeto se verifica mediante las LCA. Tras haber verificado el derecho, el sistema genera una capability que se utilizar durante la sesin de trabajo; esta capability se asocia al dispositivo virtual que se genera durante la operacin abrir y se destruye con la operacin cerrar. As los accesos que se lleven a cabo durante la sesin de trabajo no necesitar acceder a la LCA. Otro sistema es el llamado llave y cerrojo. Cada capability tiene asociado un nmero denominado llave y los objetos tienen asociada una coleccin de nmeros denominados cerrojos; para que una capability sea correcta, la llave tiene que coincidir con alguno de los cerrojos que posee el objeto; para revocar el conjunto de derechos el propietario de objeto solo debe eliminar uno o ms cerrojos. No es tan flexible como la LCA, pero soluciona parcialmente el problema de tener que recorrer todos los dominios para eliminar las capabilities asociadas.

Sistemas operativos 27

5. EL SISTEMA DE FICHEROS Y LA PROTECCIN EN UNIX En Unix encontramos los ficheros ordinarios, los ficheros directorio y los ficheros especiales o dispositivos. El sistema Unix, reconoce un solo tipo de fichero ordinario y lo trata como una secuencia de bytes; a excepcin del fichero ejecutable, que se caracteriza evidentemente por poderse ejecutar y por tener una marca especial en los primeros bytes del archivo. El no encontrar esta secuencia especial de bytes asegura que no es un ejecutable, pero el encontrarla no asegura que sea ejecutable, pues puede ser un fichero ordinario que casualmente tiene la secuencia de bytes ejecutable.
LCA de Unix

Recordemos que el sistema de ficheros es de grafo dirigido organizado en directorios y a pesar de que cada dispositivo contiene un sistema de ficheros con su propia estructura de directorios, Unix da una visin del espacio totalmente conectado porque dispone de un Sistema de ficheros permanentemente accesible sobre el cual se irn aadiendo el resto de sistema de ficheros antes de poder acceder a ellos (justo en el momento del montaje). Las protecciones de Unix, se basan en un modelo mixto; un usuario se identifica dentro del sistema mediante un nombre de usuario y contrasea; una vez dentro, todos los procesos asociados tendrn asociados los dominios de usuario y de grupo de usuarios al que pertenezca. En cada momento determinado un usuario solo puede pertenecer a un grupo. Para determinar los derechos de un usuario sobre un fichero, Unix utiliza una LCA con tres dominios: el usuario propietario, los usuarios que pertenecen al mismo grupo que el propietario y por ltimo, cualquier otro usuario y para cada uno prev tres derechos diferentes: de lectura, de escritura y de ejecucin. La visualizacin de las LCA se realiza mediante tres grupos de caracteres, como se puede observar en la figura lateral. El significado de los derechos r (lectura), w (escritura) y x (ejecucin) vara si el fichero es un directorio. En este caso, r permite visualizar los nombres contenidos en el directorio, w permite aadir nombres nuevos al directorio y x hace posible que el usuario utilice el directorio como un directorio de trabajo.

28 Sistemas operativos

TEMA 6 LA GESTIN DE PROCESOS

1. EL PROCESO: UNA MIRADA DESDE EL INTERIOR DEL SISTEMA Un proceso es bsicamente un entorno formado por todos los recursos necesarios para ejecutar programas. Desde el punto de vista del sistema operativo, un proceso es un objeto ms que hay que gestionar y al cual hay que dar servicio. Para gestionar este conjunto de recursos como un todo, el sistema rene informacin de stos en una estructura denominada bloque de control de procesos o PCB. Los campos ms importantes que configuran el PCB son: El identificador de proceso: Es el cdigo que identifica de manera biunvoca cada uno de los diferentes procesos que se encuentran en ejecucin. El estado del proceso: Indica el estado del proceso en el momento actual dentro de unas posibilidades determinadas: run, ready, wait El contador del programa: Seala la instruccin que estaba a punto de ejecutarse justo en el momento en que se produce una interrupcin. Cuando el proceso pueda continuar, la har exactamente en este punto. Los registros internos de la CPU: Como son registros utilizados por todos los procesos hay que guardar su valor para retornarlo cuando un proceso contine de manera que se encuentre en un entorno idntico a cuando lo abandon. El estado de la memoria: Cantidad de memoria asignada, lugar donde se encuentra, etc. Contabilidad y estadsticas: Informacin de valor para los administradores de sistema pero poco til para el usuario. El estado de los dispositivos de entrada/salida: Los dispositivos asignados, las solicitudes pendientes, ficheros abiertos El dominio de proteccin: Dominios a los cuales pertenece el proceso y los derechos asociados. La planificacin de la CPU: Informacin a la forma como el proceso accede al procesador en concurrencia con otros procesos.
Ejecucin concurrente de procesos

Tema 6 La gestin de procesos 1. El proceso: una mirada desde el interior del sistema 2. El ciclo de vida de un proceso 3. Las excepciones y las seales de software 4. La gestin de procesos en Unix

La ejecucin concurrente da al usuario la impresin de que es l solo el que accede a la maquina e interacta con el sistema de forma apropiada (figura a). Pero si estudiamos con mayor zoom la ejecucin concurrente de procesos (figura b) apreciamos una multiplexacin del procesador. Para conseguir el efecto de ejecucin concurrente se lleva a cabo una conmutacin entre los procesos que se reparten el tiempo del procesador. Estas conmutaciones se denominan cambios de contexto. En la figura c observamos un cambio de contexto a mayor escala de tiempo y podemos apreciar que es necesario guardar el estado del procesador en el proceso 1, localizar el proceso 2 y restaurar todo el estado del procesador a como lo dej el estado 2 cuando lo abandon para poder dar el efecto de ejecucin concurrente de procesos.

Los estados de un proceso existen porque en un sistema monoprocesador solo puede haber un proceso en ejecucin y el resto debe esperar su turno de entrada en el procesador. Cuando el sistema acaba de crear un proceso, ste se encuentra en el estado inicial Ready. Desde este estado puede evolucionar hacia la finalizacin del proceso (en la figura de la pgina siguiente, esquema 2) porque otro proceso provoque la finalizacin del mismo; o puede ejecutarse, pasar al estado Run porque el gestor le asigna la CPU (3).

Sistemas operativos 29

Diagrama de estados

Desde el estado Run puede evolucionar hacia 3 direcciones: El proceso ejecuta la ltima lnea de cdigo y finaliza (4); el proceso debe esperar un acontecimiento externo, por ejemplo cuando se solicita una operacin de entrada/salida, como pulsacin de una tecla por parte del usuario (5) y pasa al estado Wait; o el proceso ha superado su cuota mxima de tiempo en la modalidad de tiempo compartido (6) y debe volver al estado ready. Hay que apreciar que cuando un proceso sale del estado run para pasar a ready o wait, se produce un cambio de contexto. Desde el estado wait, el proceso puede evolucionar hacia el estado ready, cuando finaliza la operacin por la cual estaba esperando (7); o puede finalizar (8) debido a un acontecimiento externo al propio proceso. Para saber qu hace cada uno de los procesos y as poder controlar sus recursos, el sistema operativo mantiene unas colas de procesos en funcin de su estado. Hay una cola de procesos preparados (ready), otra cola de procesos en espera (wait), pero o hay cola de procesos en ejecucin, pues solo puede haber uno cada vez.

2. EL CICLO DE VIDA DE UN PROCESO Los procesos son elementos dinmicos y como tales operan durante un intervalo de tiempo en el que tiene lugar: La creacin del proceso La destruccin del proceso La herencia entre procesos La sincronizacin y el estado de finalizacin en la destruccin de procesos. Los cambios en el entorno de ejecucin 2.1. La creacin del proceso La creacin de un proceso nuevo es el resultado de la ejecucin de una llamada al sistema del tipo crear_proceso, que es invocada, como todas las llamadas, por un proceso ya existente. Debe contener los siguientes elementos: La memoria donde residirn el programa, el cdigo y los datos. El punto de entrada desde donde se ejecutar el programa que contenga la memoria El entorno de entrada/salida con el cual el proceso se comunica con el exterior. Los atributos relacionados con los dominios de proteccin.
Elementos de la creacin de un entorno de ejecucin

La especificacin de estos elementos puede realizarse de manera explcita con los parmetros de la llamada al sistema con que se crea el proceso; o de manera implcita haciendo que tome valores por defecto; el sistema operativo combina las dos alternativas con unos parmetros especficos de llamada y otros valores se dejan por defecto. Tras haber creado el proceso, el sistema le otorga un nombre mediante el cual se podr referenciar, este nombre es nico para cada proceso durante toda la vida del sistema; ya que si dos procesos estn sincronizados A y B; y se destruye B pero se reutiliza inmediatamente su nombre, A

30 Sistemas operativos

estar sincronizado con un proceso no previsto y lo ms probable es que no funcione correctamente o, lo que es peor, se abra un agujero de seguridad. 2.2. Destruccin de procesos La destruccin de un proceso comporta la destruccin del entorno que lo constituye y la liberacin de los recursos que tena asignado. Puede tener lugar por alguna de estas situaciones: La ejecucin de una llamada destruir_proceso, especfica para tal finalidad. Una vez acabada la ejecucin del proceso sin incidentes, tiene que ser destruido. El mal funcionamiento del proceso destruido. Si el sistema detecta que le proceso no funciona correctamente y efecta operaciones no permitidas (como la divisin por cero, races cuadradas de nmeros negativos), entonces lo destruye. El efecto lateral de la ejecucin por parte de otro proceso, de una llamada al sistema diferente a la de destruir_proceso que provoca una excepcin sobre el proceso que se destruye. 2.3. La herencia entre procesos Los procesos son creados por el sistema operativo a peticin de otros procesos. Esta situacin hace que podamos ver los procesos desde el punto de vista de la descendencia, en la que los procesos mantienen relaciones de parentesco como la de padre e hijo. Existen tres tipos de herencia: Comparticin: El proceso padre y el hijo comparten un mismo elemento y por ello las manipulaciones de este elemento afectarn a ambos procesos. Copia: El sistema operativo crea los elementos que configuran el entorno del proceso hijo a semejanza de los del padre, pero a partir del momento de la creacin evolucionarn en dos entornos distintos y no se vern afectados los cambios de uno en el otro. Valores nuevos: A travs de parmetros en la creacin, el sistema operativo crea los nuevos elementos del proceso hijo. Ahora estudiaremos como estos tipos de herencia pueden afectar a cada uno de los elementos del entorno del proceso: La memoria y su contenido: Tenemos tres segmentos: el cdigo, los datos y la pila. El cdigo y los datos pueden compartirse; esto es muy til cuando comparten segmentos del programa cuya informacin debe ser leda y as evitamos la duplicidad; pero cuando se comparten datos hay que saber que afectarn a ambos procesos, aunque suele usarse para compartir informacin. La pila jams puede compartirse, ya que refleja el estado de llamadas a procedimientos y a variables locales de cada proceso. Cuando se utiliza la copia, se copia todos los segmentos, incluida la pila; la pila tambin se copia cuando se comparte la memoria, por lo que ya hemos avanzado anteriormente. Tambin, por supuesto, se pueden dar valores nuevos. El punto de inicio de ejecucin dentro de la memoria: Solo tiene cabida cuando se ha copiado o compartido el cdigo. Puede copiarse, con lo que normalmente el valor de retorno son diferentes de la llamada de creacin del sistema; o pueden darse valores nuevos, o bien por parmetros del sistema operativo, o por el fichero ejecutable que definir el contenido de la memoria. El entorno de entrada/salida: Es independiente de la memoria y tiene 3 modalidades. Puede compartirse con lo que las modificaciones que uno de los procesos realice sobre estas sesiones de trabajo afectarn al otro. Eso s, las sesiones de acceso a los dispositivos que abran a partir del momento de la creacin sern independientes en cada proceso. Pueden copiarse: el hijo encuentra abierta las mismas sesiones de acceso a dispositivos que el padre, pero las acciones no afectarn unos a otros. O por supuesto, valores nuevos.

Elementos del entorno del proceso La memoria y su contenido: Comparticin: solo puede compartirse segmento y datos, la pila se copia. Copia: de todos los elementos Valores nuevos Punto inicio de la memoria: Copia: con distinto valor de retorno. Valores nuevos. Entorno de entrada/salida: Comparticin: la sesin inicial entre ambos se ve afectada, las nuevas son independientes. Copia: Mismos dispositivos pero diferentes sesiones desde el inicio. Valores nuevos. Dominio de proteccin: Comparticin: mismo dominio del mismo usuario, por tanto mismos derechos. Valores nuevos.

Sistemas operativos 31

Dominio de proteccin: La lista de capabilities puede ser perfectamente copiada, por lo que aqu nos referiremos a los atributos de dominio, que no pueden ser copiados. Encontramos dos modalidades: Comparticin: el proceso hijo pertenece al mismo dominio (mismo usuario) que el padre por lo que tiene los mismos derechos; o valores nuevos.

2.4. La sincronizacin y el estado de finalizacin en la destruccin de procesos


Modalidades de ejecucin

Existe una necesidad a veces imperiosa de sincronizacin entre procesos padre e hijo. Cuando hay modalidades de ejecucin en primer plano, de fondo y diferidas. Por ejemplo: En primer plano, el intrprete de rdenes espera a que finalice la orden antes de solicitar una nueva. En esta situacin el proceso padre tiene que esperar a que el proceso hijo finalice y claro, para ello el sistema operativo debe congelar la ejecucin del proceso padre hasta que el hijo sea destruido. En ejecucin de fondo el intrprete de rdenes no espera a que finalice la orden, sino que puede ejecutar ms. En esta situacin, el proceso padre solo necesita que el sistema lo retenga mientras crea el nuevo proceso, con el fin de retornarle el identificador del proceso si la creacin ha sido correcta o un error si no ha sido as. Modalidad mixta: El proceso padre crea un proceso hijo en modalidad de fondo y a partir de un determinado instante en su ejecucin, decide esperar a que finalice uno de sus procesos hijo. Con todo ello, el sistema operativo puede ofrecer dos modelos de llamadas al sistema: introducir un parmetro modo_ejecucin que indique si el proceso padre tiene que esperar la destruccin del hijo o no; y conseguir que para crear no sea necesario esperar nunca la finalizacin de un proceso. Tambin es necesario para el proceso padre muchas veces conocer el punto donde la aplicacin ha finalizado o el motivo de esta finalizacin. Ya que a veces un proceso hijo puede finalizar felizmente pero en otras ocasiones por ejecuciones incorrectas o por efectos laterales de la ejecucin de otras llamadas al sistema puede finalizar abruptamente. 2.5. Los cambios en el entorno de ejecucin Los sistemas operativos tienen que permitir que los procesos carguen nuevos programas en la memoria para ser ejecutados. Los pueden hacer de dos maneras: al mismo tiempo que crea un nuevo proceso; a posteriori, una vez creado el proceso, mediante la invocacin de la llamada especfica cargar. sta ltima es la que nos interesa; lo que ocurre en este caso es que el intrprete de rdenes obtiene la orden cargar a travs de la entrada estndar, analiza la existencia de algn ejecutable y crea un nuevo proceso igual que l; este nuevo proceso al ejecutarse, cargara la aplicacin que da servicio a la orden recibida. La carga del nuevo ejecutable provoca la reconfiguracin total del espacio lgico del proceso, de manera que todos los valores de variables y constantes, los procedimientos y las funciones que se encontraban dentro del espacio lgico antes de la carga, desaparecen; pero para que el nuevo cdigo pueda utilizar informacin anterior a su carga deben existir mecanismos o dispositivos de almacenamiento que sirvan de puente entre ambos. A pesar de poder guardarse en el sistema de

32 Sistemas operativos

ficheros, tambin el sistema operativo ofrece la posibilidad de pasar la informacin a travs de parmetros de llamada, los cuales son recibidos por el nuevo programa como parmetros de entrada de la funcin principal.

3. LAS EXCEPCIONES Y LAS SEALES DE SOFTWARE Los procesos pueden necesitar ser informados de acontecimientos que suceden de manera imprevista en cualquier instante de la ejecucin de un programa. Por ejemplo, un proceso puede necesitar saber si se ha producido un error en el acceso a la memoria para solicitar que se aumente el rea asignada a una determinada variable; o tambin puede necesitar saber si un cierto terminal sobre el que trabaja se ha apagado, para acabar la aplicacin correctamente. Las seales de software son la herramienta que proporciona el sistema operativo para trasladar el mecanismo de las interrupciones al mbito del proceso. Igual que sucede en el mbito del hardware, los procesos tienen que reconocer ciertos eventos y atenderlos con urgencia. La procedencia de las seales de software nos permite clasificarlas en: Dispositivos de entrada/salida: Como por ejemplo la desconexin de un terminal, la pulsacin de una tecla de control por parte del usuario Excepciones: Provocadas por el proceso de manera involuntario durante la ejecucin de una instruccin, porque es errnea, porque el elemento hardware al que hace referencia est saturado o por violacin de un segmento. Llamadas explcitas al sistema: Son seales entre procesos del mismo dominio de proteccin que pueden informar sobre eliminaciones de proceso, sincronizaciones, etc. El reloj del sistema: Cuando un proceso tiene que realizar acciones a intervalos regulares de tiempo; por ejemplo un mdem que espera cierto lapso de tiempo para detectar si la lnea se ha cortado o no. Efecto lateral de una llamada al sistema: Un proceso padre, por ejemplo, puede recibir una seal de que uno de sus procesos hijo ha sido destruido.

Ahora bien, una vez recibidas estas seales, puede tener uno de los siguientes tratamientos: Tratamiento definido por el mismo usuario. Ignorar el acontecimiento. Tratamiento definido por el sistema operativo: Si por ejemplo existe un mal funcionamiento de un proceso y no se han especificado un tratamiento para ese caso particular, el sistema operativo tiene que proporcionar uno, y por norma general ser la destruccin del proceso. En este caso, el sistema operativo se encarga de enviar el estado de finalizacin al proceso padre para indicarle el motivo de la destruccin.

4. LA GESTIN DE PROCESOS EN UNIX En Unix, un proceso es un entorno de ejecucin identificado por un nmero denominado PID que es el identificador del proceso y que es nico durante toda la vida del sistema operativo. Los principales elementos que constituyen un proceso en Unix (y que podemos observar en la imagen de la pgina siguiente son: El espacio de memoria, formado por el segmento de cdigo, datos y pila. El segmento de cdigo puede ser compartido por otros procesos. Y entre el de datos y pila hay una porcin libre que puede aumentar el segmento de datos con la llamada malloc.

Sistemas operativos 33

Proceso en Unix

El entorno de entrada/salida formado por los file descriptors locales a cada proceso. Cada entrada de la tabla apunta a otra tabla, en este caso de carcter global para el sistema y contienen los punteros, el modo de acceso, etc. El UID y GID que corresponden al nmero de identificador de usuario y al de grupo de usuario para determinar el dominio de proteccin de los procesos. El estado de los registros del procesador que refleja en qu estado se encuentra la ejecucin del programa que tiene el proceso. La informacin estadstica que presenta informaciones tales como el tiempo consumido de UCP, el volumen consumido de memoria o el nmero de procesos hijo generados.

A continuacin estudiaremos 3 caractersticas inherentes a los procesos, como son: Creacin y destruccin de procesos Cambios de entorno Jerarqua y seales en Unix 4.1. Creacin y destruccin de procesos Ya sabemos que las operacin son crear_proceso (fork), Destruir_proceso (exit) y Esperar_finalizacin (wait).
Creacin de un proceso en Unix

La llamada fork no tiene ningn parmetro y crea un nuevo proceso hijo que es un duplicado del padre. El PCB hijo es una copia del padre, al igual que el espacio de memoria, y las entradas de la tabla file descriptor. Pertenecen ambos procesos al mismo usuario y grupo de usuarios; pero a partir de la orden fork cada proceso contina su ejecucin de manera independiente. El proceso hijo recibe un valor 0 y el padre recibe el identificador PID del hijo para poder ser distinguidos. Adems Unix no permite que la ltima entrada de la tabla de procesos y el ltimo espacio de memoria libre sean ocupados por un usuario normal, ya que estos espacios se destinan para iniciar algn proceso del sistema de manera urgente, como puede ser el proceso de detencin del sistema shutdown. La llamada exit destruye el proceso, y es el sistema el que se encarga de destruir el proceso que se ejecuta. Se pasa un parmetro al sistema operativo que el proceso padre podr recoger mediante la orden wait para ser notificado del estado de finalizacin. La llamada wait bloquea el proceso que lo ha llamadao hasta que alguno de sus procesos hijo haya sido destruido. Cuando esto ocurre, el sistema le retorna el PID del proceso destruido y como parmetro de salida, el estado en que ha finalizado. Unix guarda el estado de finalizacin de los procesos destruidos en su PCB y espera que el proceso padre lo recoja mediante la llamada wait. As que el proceso no es liberado en el momento de su

34 Sistemas operativos

destruccin, estn a la espera de la recogida de su PCB, se encuentran entonces en el llamado estado zombie, hasta que la llamada wait permita destruirlos definitivamente. Para evitar que se acumulen demasiados procesos en este estado, est limitado el nmero de procesos zombie que puede tener cada usuario en cada momento y si un proceso es destruido ms tarde que su proceso padre, entonces pasan a ser considerados hijos del primer proceso del sistema (el proceso INIT que es el nico proceso en Unix que no se crea con la llamada fork, tiene PID 0) que ser el encargado de recoger su estado de finalizacin. 4.2. Cambios de entorno Cualquier cambio que se quiera llevar a cabo en un proceso de tiene que realizar despus de que ste haya sido creado. El cambio de ejecutable y los cambios en las entrada/salida permiten hacer el programa controlable y flexible. El cambio de ejecutable realizada con la llamada exec al sistema de Unix, permite cambiar la imagen o el ejecutable que contiene el proceso. Normalmente solo afecta a la programacin de seales y al dominio de proteccin. Se suele cambiar al dominio del usuario propietario o al grupo del usuario propietario del fichero ejecutable, lo que permite construir aplicaciones que accedan de manera controlada a bases de datos, etc.
Cambio de entorno en Unix

La Manipulacin de los file descriptors a travs de la llamada dup que permite duplicar el valor de una entrada concreta de la tabla de file descriptors en la primera posicin libre que se encuentre dentro de la tabla. El proceso es como explicamos a continuacin: En primer lugar, el intrprete crea el proceso hijo que tendr que ejecutar la orden; cuando se ha creado hay que redireccionar la entrada estndar para que cuando se haya cargado el programa orden se encuentre el redireccionamiento efectuado. Para ello se crea un file descriptor vinculado a fichero con la llamada open (desFichero) con lo cual se ocupa la primera entrada libre de la tabla de file descriptors. (primera imagen lateral) Para redireccionar la entrada estndar desde fichero hay que hacer que el file descriptor 0 se encuentre asociado al fichero, por lo que desasignamos el dispositivo real asociado al file descriptor 0 y mediante la llamada dup (segunda imagen lateral), lo volvemos a signar, copiando sobre su entrada (STdin) la entrada asociada a descFichero. Por ltimo, falta eliminar mediante la llamada close (tercera imagen de la figura lateral) el file descriptor DescFichero para conseguir el entorno de entrada/salida que debe encontrar la orden que hay que ejecutar. Despus, el proceso hijo puede cargar el nuevo ejecutable mediante la llamada exec.

Sistemas operativos 35

Funcionalidad de las pipes

Las pipes son un dispositivo lgico destinado a comunicar procesos con una relacin de parentesco. Funcionan como una cola de caracteres con una longitud fija, donde los procesos pueden escribir y leer. Se crean en el momento en que se abre mediante la llamada pipe y se destruye cuando el ltimo proceso que lo tiene abierto lo cierra. El dispositivo que se crea con pipe tiene asociados dos file descriptors, uno de entrada y otro de salida; pero no se pueden abrir con la orden open, sino que los procesos que lo quiera utilizar necesitan heredar los file descriptors de su proceso padre. Funciona por sincronizacin: cuando un proceso intenta leer sobre una pipe vacia, se queda bloqueado hasta que otro proceso escribe sobre ella y ya hay material suficiente para leer; cuando un proceso intenta escribir sobre una pipe completa, se queda bloqueado hasta que algn otro proceso lee la cantidad suficiente de la pipe como para que el proceso bloqueado pueda efectuar su operacin de escritura En la figura lateral podemos ver un ejemplo de utilizacin de pipes. El dibujo superior es la situacin tras haber creado la pipe, con lo cual sta tiene los file descriptors de lectura y escritura en el mismo proceso. En cambio la pipe es ms til cuando se lleva a cabo la llamada fork al sistema, y el proceso hijo hereda del padre los file descriptors, entre los cuales se encuentran los creados con la llamada pipe. Tras la creacin del hijo y para mantener la comunicacin, ambos cierran el canal del sentido de la comunicacin que no van a utilizar, para permitir la deteccin del proceso de comunicacin (queda unidireccional); como podemos observar en la parte inferior de la imagen. 4.3. Jeraquia y seales en Unix Ya sabemos que el proceso INIT lo inicia el propio sistema operativo, no est creado por la orden fork. Sus principales funciones son las de inicializar todos los procesos del sistema, como los procesos servidores de red, liberacin de los procesos zombies que ya no tienen proceso padre y poner en funcionamiento el proceso getty. Este proceso se encarga de esperar que se pongan en marcha los terminales. Cuando esto ocurre, el proceso carga el programa login, para indentificar al usuario, si es correcto posteriormente carga el shell e inicia una sesin de trabajo con ese usuario. Cuando el usuario finaliza, el proceso shell se destruye e INIT crea un nuevo proceso getty que lo sustituye. Las seales en Unix pueden ser generados por los dispositivos de entrada/salida, excepciones, llamadas explcitas al sistema o por el reloj del sistema. En cualquier caso, los tratamientos posibles son los ya conocidos: el que da el sistema operativo por defecto segn el tipo de seal; una segunda posibilidad es ignorar el acontecimiento (excepto la seal SigKill que no puede ser ignorada); y por ltimo el que haya definido particularmente el usuario.

36 Sistemas operativos

TEMA 7 LA CONCURRENCIA Y LA COMUNICACIN

1. INTRODUCCIN En sistemas concurrentes, los procesos cooperan en el clculo y la realizacin de diferentes tareas y comparten recursos (como los dispositivos, cdigo, variables); as los procesos deben contar con la posibilidad de intercambiar informacin entre s, a travs de dos procesos principalmente: Sincronizacin: Permite el acceso concurrente de los procesos a objetos del sistema que son bsicamente secuenciales. Todos los procesos que deseen compartir algn objeto deben ponerse de acuerdo para saber qu acceso se va a llevar a cabo y ste sea coherente y libre de errores. Veremos en los puntos siguientes diversas soluciones de software y los semforos. Comunicacin: Muchas veces es necesario intercambiar resultados parciales entre procesos concurrentes o informacin en general. Hay varias formas a su vez de hacerlo: o Paso de mensajes: Integra tareas de comunicacin y a la vez de sincronizacin. o Memoria compartida. o Seales: Interrupciones de software que pueden recibir los procesos para indicar que ha tenido lugar un determinado suceso. o Mecanismos de comunicacin remota.

Tema 7 La concurrencia y la comunicacin 1. Introduccin 2. La sincronizacin de procesos 3. Las soluciones de software para la exclusin mutua 4. Los semforos 5. El soporte de hardware para la exclusin mutua 6. Procesos productores y consumidores 7. La comunicacin entre procesos: el paso de mensajes 8. Problemas de coordinacin entre procesos (deadlock)

2. LA SINCRONIZACIN DE PROCESOS Antes de nada deberamos preguntarnos porqu es necesaria la sincronizacin de procesos. Y esto lo vamos a ver con un ejemplo; para ello utilizaremos el dispositivo cola de impresin. Este dispositivo lo gestionan los usuarios (cuando quieren imprimir un trabajo, las tares pendientes en la cola de impresin aumentan en 1) y el gestor de impresora (que decrementa en 1 las tareas cuando ha finalizado la impresin de un documento). Bien, en principio, tareas pendientes es una variable compartida por todos los usuarios y por el gestor de impresora. Pero cuando el acceso es concurrente, la simple orden de un usuario al mandar imprimir un trabajo sera:
Tarea_pendiente = tarea_pendiente + 1

Aunque parezca as de sencillo, en cdigo mquina quedara:


LOAD R0, tarea_pendiente; INC R0 STORE tarea-pendiente, R0

Sucede que la utilizacin de registros, puede hacer que si una tarea es interrumpida en el proceso INC o STORE y estos no se completan (interrumpida por un cambio de contexto porque ha expirado su quantum, por interrupcin de dispositivo, etc.); otro procesos concurrentes pueden hacer cambiar el valor de tarea_pendiente, siendo el resultado errneo. Por ejemplo, si un usuario es interrumpido cuando ha enviado un trabajo a imprimir, ocurrir que luego la impresora intentar imprimir un trabajo inexistente; mientras que si el gestor de impresoras es interrumpido en la actualizacin de la variable, el resultado final es que una tarea se quedar sin imprimir. Estos problemas han dado lugar a la llamada seccin crtica, que es una secuencia bien delimitada (con inicio y fin) de instrucciones que modifican una o ms variables compartidas. Esta seccin crtica debe mimarse especialmente, dado que las principales causas de estos problemas de sincronizacin tienen lugar por: La aparicin de copias temporales

Sistemas operativos 37

La posibilidad de que un proceso acceda al contenido de una variable compartida en cualquier instante, antes de asegurarse de que todas las peticiones de modificacin previas han finalizado.

Por ello, cuando un proceso entra en una seccin crtica, tiene que completar todas las instrucciones del interior de la seccin antes de que cualquier otro proceso pueda acceder a sta; es por tanto un acceso a la seccin crtica en exclusin mutua y tiene que cumplir los siguientes requisitos: Asegurar la exclusin mutua entre los procesos a la hora de acceder al recurso compartido. No hacer ningn tipo de suposicin de la velocidad de los procesos ni del orden en que stos se ejecutarn. Garantizar que si un proceso finaliza por cualquier razn dentro de la zona de seccin crtica, no afectar al resto de procesos que quieran acceder a la misma. Permitir que todos los procesos que estn esperando acceder a la seccin crtica, puedan hacerlo en un tiempo finito (starvation). Garantizar que solo uno de los procesos, como mucho, de los que quieran acceder a la seccin crtica, acabar entrando (deadlock). As, si la seccin crtica est ocupada ya por un proceso, el resto de procesos se bloquear (durmindose o ponindose en alguna cola de espera) o entrarn en espera activa (consultado constantemente el estado del recurso). Por el contrario, si la seccin est libre, el proceso que pide paso entrar, pero cerrar el acceso a cualquier otro proceso, hasta que haya utilizado el recurso compartido y libere la exclusin mutua.

3. LAS SOLUCIONES DE SOFTWARE PARA LA EXCLUSIN MUTUA Para que se cumplan los requisitos anteriores se han diseado (entre otros remedios) soluciones de software. Estudiamos a continuacin tres algoritmos.
Algoritmos Primer Algoritmo Cdigo que ejecuta P0 While (cierto) {/*Bucle infinito*/ While (turno ==P1) {intentarlo de nuevo} Seccion critica Turno = P1 /*Otras operaciones de P0*/ } /*Fin while {cierto}*/ Cdigo que ejecuta P1 While (cierto) {/*Bucle infinito*/ While (turno ==P0) {intentarlo de nuevo} Seccion critica Turno = P0 /*Otras operaciones de P1*/ } /*Fin while {cierto}*/ __________ Segundo algoritmo While (cierto) {/*Bucle infinito*/ While (P1dentro==cierto) {reintentar} P0dentro=cierto Seccion critica P0dentro=falso /*Otras operaciones de P0*/ } /*Fin while {cierto}*/ __________ Tercer algoritmo While (cierto) {/*Bucle infinito*/ P0dentro = cierto Turno = P1 While (Pdentro==cierto y turno==P1) {reintentar} Seccion critica P0dentro=falso /*Otras operaciones de P0*/ } /*Fin while {cierto}*/

En un primer algoritmo, sincronizamos los dos procesos P0 y P1, definindose una variable global denominada turno. Si turno es igual a P0, el proceso P0 puede acceder a la seccin crtica; si es igual a P1, ser este proceso el que acceder; pero presenta varios problemas: Hay que conocer los procesos. Es difcil generalizar el protocolo de sincronizacin para un nmero variable de procesos, ya que aadir o quitar procesos implica modificar el cdigo de otros procesos que ya existan. Este protocolo obliga a una alternancia estricta en el orden de acceso a la seccin crtica: P0, P1, P0, P1 si por ejemplo el proceso 1 es ms rpido porque tiene una mayor velocidad, el acceso ya no es equitativo. Si uno de los dos procesos aborta o muere el otro proceso no podr acceder al a seccin crtica y se quedar de manera indefinida en un bucle while esperando su turno.

Un segundo algoritmo pretende resolver estos problemas, con el identificador Pxdentro evitamos la alternancia estracita en el acceso a la zona crtica y adems sin un proceso muere, el otro puede acceder a la seccin crtica sin ningn tipo de restriccin. Pero aun as tenemos todava algunos problemas sin resolver:

38 Sistemas operativos

Es difcil tambin generalizar para un nmero variable de procesos. Podra ocurrir que ambos procesos pudieran estar dentro de la seccin crtica al mismo tiempo. Si no ha llegado a ejecutarse la tercera lnea del algoritmo que todava indica que la seccin crtica est libre y es consultada la variable por el segundo proceso, podr acceder junto al primer que ya tena permiso- a la zona crtica.

En un tercer algoritmo identificamos las variables Pxdentro a falso y no inicializamos la variable turno; as si ambos procesos quieren entrar en la zona crtica al mismo tiempo, acceder el que indique la variable turno. Todos estos algoritmos que hemos visto solo tienen en cuenta dos procesos, debemos ser conscientes que existen para mayor nmero de los mismos, pero no se describirn por la complicacin que ello supone y porque existe un mtodo mucho ms elegante y sencillo para resolver el problema: los semforos, solucin que estudiaremos a continuacin.

4. LOS SEMFOROS Los algoritmos de software anteriores son complejos y a menudo difciles de generalizar para ms de dos procesos. Una solucin posible a este problema puede ser el uso de semforos. Un semforo es una variable entera s que solo se puede incrementar mediante la operacin signal y decrementar con la operacin wait. El proceso wait (s) decremente la variable s y hace pasar el proceso a la seccin crtica cuando S es mayor que o, el proceso signal incrementa el valor de la vairable s=s+1. Evidentemente, para que esto funcione las seales wait y signal deben tener un funcionamiento atmico. Podemos encontrarnos con semforos binarios que solo puede tomar los valores o y 1 y, que por tanto, nicamente permiten tener un proceso dentro de la seccin crtica; o podemos encontrarnos semforos n-arios que permiten tomar valores entre 0 y n y por tanto dejan incluir hasta n procesos dentro de la seccin crtica. Igualmente podemos tener semforos de baja granularidad que comporta tener diferentes semforos para distintas zonas crticas, lo que aumenta el grado de concurrencia entre procesos y suele interesarnos; o de alta granularidad con lo que se utiliza un mismo semforo para distintas zonas crticas. La utilizacin de los semforos sigue el siguiente proceso: Se inicializa el semforo (S>=1). Este valor inicial debe ser mayor o igual que 1 para indicar que no hay ningn proceso dentro de la seccin crtica y as permitir paso al primer proceso que lo pida. Se ejecuta la operacin wait: un proceso quiere acceder al a zona de exclusin mutua; entonces se cambia el valor de s a s-1 y no se permite el paso de ningn proceso ms. Se ejecuta la operacin signal y se incrementa el valor de la variable con lo cual queda liberada la zona de exclusin y puede entrar otro proceso distinto.
Algoritmos de los semforos /*Definicin de la variable e inicializacin*/ Variable semforo: exclusin; exclusin =1; /*Inicializacin*/ /*Codigo procesos usuario*/ while(cierto){ /*Generar fichero*/ wait (exclusin); tarea_pendiente=tarea_pendiente + 1; signal (exclusin); } /* fin del while /*Cdigo proceso gestor impresora*/ while(cierto){ while (tarea_pendiente==0); /*Enviar trabajo a la impresora*/ wait(exclusin); tarea_opendiente=tarea_pendiente 1; signal(exclusin); } /*Fin while (cierto)*/

En la tabla lateral se expone el ejemplo de los algoritmos de inicializacin, cdigo de procesos usuario y cdigo de proceso gestor de la impresora para la comparticin del recurso impresora. En la pgina siguiente se observa la evolucin de 3 tareas de impresin P1, P2 y P3 y el proceso gestor de la impresora G1, y como consiguen acceder a la seccin crtica. Vemos en el tiempo T1 que todos los procesos estn esperando pero no existen tareas de impresin pendientes.

Sistemas operativos 39

En un tiempo T2 el proceso P1 consigue entrar en la zona de exclusin mutua, aumenta el nmero de tareas pendientes y luego libera el semforo mediante signal. Ahora bien, cualquiera de los procesos que estn esperando puede entrar en la zona de exclusin, dado que no hay un criterio para la entrada y observamos que es el proceso P3 el que consigue entrar, aumentando las tareas pendientes del gestor de impresin a 2.
Ejemplo de acceso a exclusin mutua

Como observamos los semforos son un mecanismo fcil y muy til para sincronizar procesos concurrentes, pero podemos observar que existen dos problemas que pueden llegar a ser muy graves: Un proceso utiliza ciclos del procesador en un trabajo que no es til: la consulta constante de una variable. Estos ciclos se podran dedicar a otros procesos. Un proceso puede quedar esperando indefinidamente su entrada en la seccin crtica, ya que la implementacin anterior no permite ningn tipo de control sobre los procesos que estn esperando. As en el ejemplo anterior si constantemente llegan procesos para ser impresos y el proceso gestor G1 tiene la mala suerte de no entrar en la zona de exclusin mutua, podra llegarse a no imprimir ningn trabajo y colapsarse la memoria del sistema a causa de la cantidad de tareas pendientes por imprimir.

Estos problemas pueden solucionarse mediante la implementacin de los semforos con cola de espera: El nuevo cdigo de las operaciones wait y signal quedan de la siguiente manera:
/* Cdigo de la operacin wait*/ If (S<=0) then /* Ponemos el proceso en la cola*/ Else S = S 1 /* Cdigo de la operacin signal*/ If (Cola no vacia) then /* Sacamos un proceso de la cola*/ Else S = S + 1

A cada semforo se le asigna una cola en la que los procesos pueden colocarse. As cuando un proceso solicita paso a una seccin crtica ocupada, en lugar de quedarse activamente consultando el valor de la variable, suspende su ejecucin y se pone en la cola del semforo. Cuando un proceso libera la seccin crtica, se da paso al siguiente proceso en la cola segn poltica de asignaciones varias: por prioridades, por tiempo de espera, FIFO (First in, first out), etc.

40 Sistemas operativos

5. EL SOPORTE HARDWARE PARA LA EXCLUSIN MUTUA Para implementar los semforos que hemos visto es la seccin anterior, es necesario asegurar que estas seales son atmicas, es decir que se ejecutan indivisiblemente; esto tiene lugar gracias a las tres soluciones de hardware que proponemos a continuacin: La inhibicin de interrupciones ofrece la posibilidad de deshabilitar las mismas. De esta manera si un proceso las desactivas, ste proceso siempre tendr asignado el procesador hasta que no las vuelva a activar; as con el siguiente algoritmo quedara solucionado el problema:
Inhibir {desactivar las interrupciones} Seccin crtica Desinhibir {activar de nuevo las interrupciones}

Estas interrupciones son peligrosas y no podemos hacer un uso indebido o malintencionado de ellas, por lo que lo ms habitual es que sean utilizadas no por los programadores, sino por el sistema operativo. La operacin test and set es una segunda posibilidad hardware para la exclusin mutua. La idea bsica es definir una variable de control asociada a la seccin crtica que determine si es posible el acceso a la misma o no. Cada proceso que quiere acceder al recurso ejecuta la operacin test and set (TS) y le pasa por parmetro la variable de control asociada al recurso. As un semforo es espera activa como vemos en el algoritmo lateral hace que TS observe el estado de S, si est libre lo pone a ocupado e inmediatamente modifica los flags para indicar que S estaba libre. La instruccin BNF (Branco if not free) salta a la etiqueta wait si S estaba ocupado, pero dado que est libre el proceso retorna de la llamada wait y accede al recurso compartido. Para liberar el recurso compartido, damos la seal de libre, tal como se ve en el algoritmo lateral. El intercambio o swap es una instruccin de lenguaje mquina que intercambia atmicamente el valor de dos palabras de memoria, como podemos observar en el primer algoritmo de la tabla lateral. Lo que hacemos es definir una variable global que denominamos lock, la cual puede tomar valores cierto o falso; la variable se inicializa a falso. Cada proceso tiene adems una variable local que recibe el nombre de clave y que tambin puede tomar los valores cierto o falso; todo proceso que quiera acceder a una zona crtica deber ejecutar el cdigo inferior de la tabla lateral, que es de por si, bastante explicativo.
Algoritmos test and set /*Semforo espera activa wait: TS s BNF wait Return /* Seal de libre */ signal: mov S, libre

Algoritmos swap /*Algoritmo swap */ swap (A, B) { temp = A; A = B ; B = temp ; } /* Fin swap*/ /* Codigo de procesos */ while (cierto){ clave = cierto ; Do Swap (lock, clave); Until (clave = falso) Seccion critica Lock = falso } /* fin while (cierto) */

6. LA COMUNICACIN ENTRE PROCESOS: EL PASO DE MENSAJES El hecho de que varios procesos llevan a cabo actividades conjuntamente, puede plantearnos la necesidad de sincronizar y comunicar datos entre ellos, ya sean resultados finales, datos parciales, etc. Esto podemos realizarlo a travs del paso de mensajes, un mecanismo sencillo e intuitivo que permite la sincronizacin y la comunicacin entre procesos. El mensaje es un conjunto de informacin que, aunque puede ser de formato flexible, suele tener dos partes: el encabezamiento que contiene la informacin necesaria para que pueda llegar a su destino correctamente, y el cuerpo que es el mensaje propiamente dicho. Los mensajes son soportados por dos tipos de operaciones bsicas: enviar_mensaje (send) y recibir_mensaje (receive). El mecanismo de paso de los mensajes puede ser: directo/indirecto, sncrono/asncrono. Pasamos a verlos:

Sistemas operativos 41

Paso de mensajes /* Mensajes directos */ Proceso A send (B, mensaje) Proceso B receive (A, mensaje) /* Mensajes indirectos */ Proceso A send (Buzon1, mensaje) Proceso B receive (buzon1, mensaje)

Los mensajes directos, son aquellos en los que el proceso emisor tiene que identificar al proceso receptor y a la inversa. Tambin se denomina comunicacin simtrica ya que cada emisor tiene que conocer todos los posibles receptores y a la inversa. Los mensajes indirectos no se envan a un receptor en concreto, sino a un buzn, y es el proceso receptor el que lo busca no es un emisor en concreto sino en un buzn; as que se definen estos buzones como estructuras intermedias para el paso de mensajes. Ello permite la comunicacin de uno a uno, uno a muchos, y de muchos a muchos. El sistema UNIX ofrece un tipo de comunicacin indirecta, mediante unos buzones llamados pipes, y que hace posible la comunicacin entre procesos con parentesco. La comunicacin sncrona se basa en un intercambio sncrono de mensajes. Esto implica que el emisor y el receptor acaben la transferencia de la informacin en el mismo momento. Por tanto, la operacin send es bloqueadora y hasta que el receptor no efecta la operacin complementaria receive, el emisor queda bloqueado. Esta forma de comunicacin permite establecer un punto de sincronismo entre procesos, aunque en algunos servidores puede suponernos un problema. La comunicacin asncrona no bloque el proceso y el sistema guarda el mensaje temporalmente en la memoria hasta que se lleva a cabo la operacin receive complementaria. Esto hace aumentar el grado de concurrencia del sistema, pero tambin hay que gestionar los vectores de memoria intermedia que almacenan los mensajes.

Semforo binario con mensajes While (cierto){ Receive (buzon, mensaje); Seccion crtica; Send (buzon, mensaje); {/* Fin while (cierto)*/

Un mtodo muy sencillo para implementar la ejecucin concurrente en exclusin mutua es mediante el paso de mensajes indirectos. Para solicitar acceso a la seccin crtica, el proceso lee del buzn con la operacin receive. Si el buzn est vaco, el proceso queda bloqueado hasta que alguien escriba un mensaje; si est lleno, el proceso lee el mensaje. Eso s nos interesa que le primer proceso que pida acceso pueda pasar, para ello es necesario que el buzn se inicialice introduciendo un mensaje en su interior; de esta forma, el buzn desarrolla el papel equivalente al de un semforo binario. Tambin podramos implementar semforos n-arios con buzones en los que se permitiese hasta n mensajes.

7. LOS PROBLEMAS DE COORDINACIN ENTRE PROCESOS (DEADLOCK) Un bloqueo es una situacin en la que un grupo de procesos permanece bloqueado de manera indefinida sin ninguna posibilidad de que contine su ejecucin. Suele suceder porque unos procesos han adquirido un conjunto de recursos necesarios que otros procesos necesitan para continuar. Por ejemplo, si un proceso P1 pidiese acceso a dos dispositivos en exclusin mutua como son disco e impresora por este orden, y otro proceso P2 hiciera lo propio pero en orden contrario; nos podramos encontrar en un bloqueo si a P1 se le hubiese concedido el disco y antes de concedrsele la impresora, sta ya se hubiera concedido a P2; a su vez P2 no puede continuar porque necesita acceso a disco que tiene P1. Como ninguno de los procesos libera sus recursos, la situacin se puede prolongar indefinidamente, es decir, tenemos un bloqueo. Para que esto suceda deben cumplirse cuatro requisitos: Exclusin mutua: Hay que acceder a los recursos en exclusin mutua. Retencin y espera: Cada proceso que tiene ya asignados recursos no los libera, sino que espera a tener los que necesita. No expropiacin: Los recursos que un proceso ya tiene solo se liberan a peticin explcita del proceso, el sistema no se los puede quitar. Espera circular: Los procesos bloqueados forman una cadena circular como en el ejemplo anterior.

42 Sistemas operativos

Podemos encontrar varias soluciones a este tipo de problemas, clasificadas en funcin de su objetivo en: Prevenir el bloqueo: Se ordena de manera lineal los recursos del sistema, as se obliga a los procesos a solicitar los recursos en un orden creciente. Evitar el bloqueo: Solo se asignan los recursos disponibles que no pueden generar ningn tipo de bloqueo; esto requiere un control detallado de los recursos asignados y a qu procesos y qu recursos esperan qu procesos. Detectar y recuperar el bloqueo: Se basa en comprobar si se han producido bloqueos mediante la observacin de algn ciclo en el grafo de recursos asignados. Si se detectase alguno, el sistema reinicia algunos de los procesos bloqueados para liberar este ciclo.

Sistemas operativos 43

TEMA 8 EL ESTADO ACTUAL DE LOS SISTEMAS OPERATIVOS

Tema 8 El estado actual de los sistemas operativos 1. Conceptos generales 2. Los sistemas operativos de tiempo real 3. Los sisemas operativos multiprocesador 4. Los sistemas operativos en red y los sistemas operativos distribuidos.

1. CONCEPTOS GENERALES La evolucin de los sistemas operativos se ha visto muy influenciada por dos conceptos que procedemos a estudiar a continuacin: el modelo cliente/servidor y los sistemas multiflujo. En el modelo cliente/servidor, las llamadas al sistema, la invocacin de procedimientos y la solicitud de ejecucin de rdenes son consideradas como la peticin de un servicio (por ejemplo una llamada al sistema), de un cliente (ente que realiza la peticin) hacia un servidor (ente que ofrece el servicio). La figura lateral muestra las 3 posibles situaciones que pueden darse entre el cliente y el servidor: El cliente es un proceso y el servidor es su sistema operativo, como hemos estado viendo hasta ahora. El cliente y el servidor son servicios del sistema operativo; se utilizan las llamadas al sistema para poner el contacto al cliente y al servidor. El cliente y el servidor son procesos de sistemas operativos diferentes, y se utiliza en red para comunicar mquinas distintas. Este ltimo caso es el ms interesante, pues permite ofrecer servicios desde cualquier punto de la red, y es la idea base de los sistemas abiertos. Los mecanismos de comunicacin que podemos hallar en estos casos son 3: Paso de mensajes: Es el caso ms elemental; cliente y servidor tienen que ser conscientes de la ubicacin de cada uno y tienen que presentar toda la informacin de manera explcita, as como los parmetros la respuesta de su solicitud. Procedimientos remotos: El cliente considera el servicio como un procedimiento ms de la librera y el sistema operativo se encarga de esconder al usuario las particularidades de esta comunicacin. Objetos distribuidos: Se adopta la semntica de la programacin orientada a objetos. El usuario ve el servicio como la llamada de un mtodo del objeto al que quiere acceder.

Modelos cliente/servidor

Pero tambin es cierto que la relacin cliente/servidor tambin aporta una serie de incertidumbres que necesitan respuesta, por ejemplo: localizar un servidor o un servicio concreto dentro de los servidores, como recuperar errores cuando algo falla, etc, problemas que no se daban en un entorno de trabajo aislado como tenamos antes. Hay dos posibilidades para dar solucin a estos y otros problemas: o bien tenemos ms de un servidor repartido en mquinas diferentes para implementar polticas tolerantes a fallos (y de paso ser ms eficientes); o bien nos centramos en la estructura del propio servidor, tolerando o no ms de un cliente a la vez, dando comunicaciones sncronas o asncronas, etc. El segundo concepto a estudiar son los sistemas multiflujo, que consideran un proceso como una mquina virtual completa, con memoria, dispositivos de entrada/salida, etc. Ahora al tener ms de un procesador, se plantea la necesidad tambin de tener ms de un flujo de ejecucin por proceso (antes solo tenamos un flujo por proceso porque anlogamente solo contbamos con un procesador). Adems podemos ejecutar aplicaciones paralelas que se comunican y sincronizan a travs de la memoria compartida.

44 Sistemas operativos

2. LOS SISTEMAS OPERATIVOS EN TIEMPO REAL Los sistemas operativos en tiempo real tienen que ofrecer servicio con unas restricciones temporales muy concretas, en general deben garantizar el inicio de la ejecucin antes de un cierto intervalo de tiempo y debe finalizar antes que la accin que hemos iniciado deje de tener sentido. Por ejemplo, para evitar el desbordamiento de una presa frente a una riada, debemos iniciar la apertura de las compuertas, teniendo adems en cuenta el tiempo que tardan en abrirse, para que la presa no reviente bajo la presin del agua. Si no podemos abrir las compuertas asegurando esto, debemos dedicar los recursos a otras cosas como avisar a la poblacin y a los sistemas de emergencias. Por ello, la gestin del sistema debe: Evitar los mecanismos de gestin que no pueden ofrecer servicio en un intervalo de tiempo conocido o que lo hacen con un coste de tiempo excesivo. Proporcionar herramientas que permitan ordenar los procesos en funcin de su urgencia. Facilitar mecanismos de comunicacin rpidos y flexibles.
Aplicacin de tiempo real

En la figura lateral se observa un ejemplo de aplicacin de tiempo real, con unos procesos ordenados por prioridades. Por todo lo anterior, los principales puntos de accin son:

Gestin de procesos: La planificacin del procesador es externa a l y se basa en la determinacin de prioridades para los diferentes procesos; y el procesador admite los procesos en funcin de esta prioridad. Gestin de memoria: No es deseable la memoria virtual ya que introduce un grado de variabilidad temporal nada bueno. As que en los sistemas de tiempo real algunos procesos deben estar de forma permanente residentes en memoria. Gestin de la entrada/salida: El sistema proporciona herramientas para que los usuarios puedan definir los tratamientos de las interrupciones de determinados dispositivos de entrada/salida y evitar la ejecucin del cdigo genrico del sistema operativo. Comunicacin entre procesos: Los mecanismos de seales tambin deben tener asociada una prioridad para su ejecucin. Para mejorar adems la comunicacin entre procesos se definen regiones de memoria compartidas para que los procesos puedan comunicarse sin costes de tiempo aadidos. Gestin del sistema de ficheros: Se suele utilizar la memoria compartida y por ello tambin se podra usar esta misma memoria como dispositivo de almacenamiento.

3. LOS SISTEMAS OPERATIVOS MULTIPROCESADOR Como cada vez se desarrollan ms aplicaciones software que deben soportar mayor volumen de trabajo y de clculo, se hace necesario mejorar el hardware que utilizamos con l, hay varias soluciones: el simple avance tecnolgico que hace evolucionar todo el hardware, soluciones arquitectnicos que permiten las ejecuciones concurrentes en paralelo, mejorar el diseo del procesador, o combinar varios procesadores en un mismo sistema; esto ltimo suele ser econmico y ms viable que el resto. Podemos encontrar dos sistemas multiprocesador principalmente (en la tabla de la pgina siguiente mostramos una imagen aclaratoria):

Sistemas operativos 45

Modelos cliente/servidor

Multiprocesadores acoplados fuertemente, o conocidos como sistemas de memoria compartida, en los que cada procesador ve y puede acceder de forma directa a la totalidad de la memoria del sistema. Multiprocesadores acoplados dbilmente: tambin denominados sistemas de memoria distribuida, en los que cada procesador solo puede acceder a una memoria privada y se comunican entre s por el paso de mensajes. Las ventajas del sistema multiprocesador son varias:

Tolerancia a fallos: Se pueden disear de forma que funcionen aunque alguno de los procesadores que lo integran falle; e incluso puede reemplazarse el componente fallido sin tener que parar el sistema. Rendimiento y potencia de clculo: Al disponer de varios procesadores las aplicaciones se ejecutan en paralelo, e incluso una misma aplicacin se divide en partes ms pequeas que se ejecutan en procesadores distintos. Crecimiento modular: Un mismo sistema puede trabajar con mayor o menor cantidad de procesadores, as puede crecer segn la cantidad de trabajo que se requiera realizar, sin tener que renovar todo el sistema. Especializacin funcional: Los procesadores que integran un mismo sistema pueden ser muy heterogneos en s mismos. Flexibilidad: Todo lo anterior hacen que estos sistemas sean muy flexibles y adaptables.

En general con estos sistemas queremos o bien aumentar la productividad (el usuario tendra una visin idntica a la de un sistema monoprocesador, pero obviamente ms rpido) o bien a aumentar la velocidad (el usuario trabaja en manera diferida). As clasificamos los sistemas operativos multiprocesador en: Supervisores separados: Cada procesador tiene un sistema operativo independiente que funciona casi como un sistema aislado; casi, porque cada sistema operativo dispone de algunos servicios como el de comunicacin entre procesos de diferentes procesadores. Adems suelen existir herramientas para repartir la carga de trabajo de manera homognea entre procesadores. Su objetivo bsico es el de aumentar la velocidad de ciertas aplicaciones. Maestro/esclavo: Un procesador es el maestro que se encarga de ejecutar el sistema operativo, mientras que el resto (los esclavos), ejecutan los procesos que el maestro les encarga. Aunque los esclavos pueden ejecutar llamadas elementales al sistema, habitualmente el maestro es el que se encarga de realizar los servicios directamente. Este modelo permite asignar de mejor forma los procesos a los distintos procesadores, aunque hay que reconocer que no es vlido para sistemas con muchos procesadores, pues el acceso al maestro puede convertirse en un cuello de botella para todo el sistema; por ello suele gestionar multiprocesadores de memoria compartida con un nmero pequeo de procesadores. Simtrico: Todos los procesadores tienen las mismas competencias y los recursos del sistema se encuentran a disposicin de todos los procesos. Como el sistema se ejecuta en paralelo, requiere herramientas de sincronizacin y exclusin mutua para gestionar sus recursos sin conflictos. Este modelo est especialmente indicado para sistemas de memoria compartida, en los que el objetivo es la productividad.

46 Sistemas operativos

4. LOS SISTEMAS OPERATIVOS EN RED Y LOS SISTEMAS OPERATIVOS DISTRIBUIDOS El entorno distribuido se define como varios sistemas interconectados con una red con la capacidad de cooperarse y comunicarse, adems se caracterizan por no tener memoria compartida, el estado del sistema est repartido entre los diferentes componentes y tienen retrasos y son frgiles por los propios condicionamientos de la red de interconexin. Eso s, aportan innumerables ventajas: Comparticin de recursos caros, como pueden ser perifricos muy especializados. Comunicacin y comparticin de informacin: que a su vez hace posible la cooperacin de personas en un mismo trabajo y la ejecucin de aplicaciones en paralelo. Fiabilidad, disponibilidad y tolerancia a fallos: Se pueden duplicar clculos en ms de un equipo, duplicacin de discos duros y sistemas enteros por si uno de ellos falla, etc. Crecimiento progresivo: La flexibilidad de la red hace poder conectar de manera gradual distintos elementos que actualicen y se adapten a las circunstancias puntuales. Rendimiento: puede ser elevado el rendimiento global. Los sistemas operativos distribuidos son sistemas operativos que engloban y gestionan un entorno distribuido de manera transparente para el usuario. Es decir tenemos toda la potencia del conjunto de elementos que integra la red pero con una mquina que esconde las particularidades de su gestin. A continuacin exponemos la gradacin en el nivel de transparencia e integracin en varios apartados del sistema operativo: Ejecucin de procesos: En un sistema cerrado no nos preocupa donde se ejecutar un proceso ni cual ser su entorno. Pero esto no es tan obvio en un sistema en red y las situaciones que nos podemos encontrar (de menos a ms complejas e integradas) son las siguientes: o Para ejecutar una aplicacin en una mquina remota desde la mquina local hacemos un telnet que nos abre la sesin en la mquina remota, y comporta un cambio completo de entorno. o Podemos ejecutar desde la mquina local una aplicacin concreta en una mquina remota. Pero ambos entornos, el de la aplicacin y el del usuario son diferentes y disyuntos. o El propio sistema local tiene una llamada al sistema crear_proceso con un parmetro para especificar la mquina donde se puede ejecutar. La principal diferencia con el sistema anterior es que la distribucin la realiza directamente el sistema operativo, mientras que antes se haca mediante una aplicacin externa al sistema operativo. o El sistema local tiene una llamada crear_proceso que localiza automticamente la mquina del sistema ms adecuada para realizar la ejecucin y el proceso. El entorno de ejecucin es el mismo que si fuese una aplicacin local. El sistema de ficheros: o Si se quiere compartir un fichero remoto del sistema, el usuario tiene que copiarlo dentro de su sistema local de ficheros y para ello requiere una aplicacin especfica como por ejemplo ftp. Por ello, los sistemas de ficheros local y remoto son totalmente disyuntos. o El sistema operativo tiene un espacio de nombres que incluye el nmero de la mquina remota. El usuario ya no tiene que ejecutar una aplicacin externa para llevar a cabo la transferencia de ficheros, sino que lo hace el propio sistema operativo. o El sistema ofrece al usuario un nico espacio de nombres que integra los sistemas de ficheros de las mquinas remotas y no tiene que transferir los ficheros a su propia mquina local. El usuario

Sistemas operativos 47

desconoce donde se ubican los ficheros y como estn repartidos entre todas las mquinas del sistema. o El usuario finalmente puede tener la misma visin que en un sistema aislado. El sistema se encarga de distribuir los ficheros entre los discos de la red, replicarlos o moverlos si conviene por seguridad o eficiencia en el acceso. La proteccin: En un sistema aislado cuando hacamos login y entrbamos en el sistema ya no debamos preocuparnos por el dominio y nuestros derechos pues el propio sistema operativo se encargaba de ello. Ahora en un sistema distribuido el saber en qu dominio estamos depender del grado de distribucin del sistema: o Las mquinas tienen dominios de proteccin totalmente separados. As cada mquina tiene usuarios con derechos independientes de las del resto. As para acceder a otra mquina debemos hacer un telnet o rlogin (remote login) y tender un nombre de usuario y una contrasea. o Los sistemas pueden poseer tablas de conversin entre dominios de mquinas diferentes. As cuando el usuario accede a un sistema remoto no necesita identificarse de nuevo ya que el sistema local informa al remoto del usuario de que se trata. o En un sistema distribuido los usuarios tienen un nico dominio, independientemente de la mquina del sistema en la que estn trabajando; as con un nico nombre de usuario es lcito entrar en todas las mquinas del sistema con los mismos derechos. Tipos de sistemas operativos distribuidos Existen dos tipos de sistemas operativos distribuidos que son el modelo monoltico y el microncleo. El modelo monoltico es un sistema en el que los servicios son gestionados por servidores que en su mayora forman parte del ncleo del propio sistema y por tanto se encuentran dentro de su espacio protegido. En cada nodo de su red se ejecuta el sistema completo e internamente los diferentes ncleos se coordinan para llevar a cabo la gestin de los recursos. Es el sistema tradicional y su principal ventaja es la integracin en un nico espacio de todos los servicios lo que permite llevarlo a la prctica con un coste reducido (no son necesarios cambios de espacios de direcciones ni transferencias de informacin entre procesos). Por otro lado, los modelos microncleo tienen un sistema operativo que se reduce a un ncleo que proporciona y gestiona lo ms bsico: memoria, procesos, comunicacin entre procesos; mientras que el resto de los servicios viene dado por los servidores externos que se pueden crear y destruir de manera dinmica y se pueden situar en cualquier nodo de la red. As pues el microncleo es una capa de software que se encuentra en todas las mquinas del sistema y que cubre el hardware proporcionando un entorno bsico. Sus principales ventajas se centran en que son sistemas muy abiertos que permiten al usuario adaptarse y evolucionar; utilizan servidores externos que hacen que puedan emular modelos de sistema y tienen una dimensin reducida que hace posible desarrollarlos y depurarlos con facilidad; ello hace que tambin puedan transportarse a plataformas diferentes con mayor facilidad.
Texto elaborado a partir de: Teodor Jov Lagunas, Dolors Royo Valls, Josep Llus Marzo i Lzaro Junio 2004

Sistemas operativos

Diseo de redes de computadores


TEMA 1 TENDENCIAS EN REDES LAN
Tema 1 Tendencias en redes LAN 1. Ethernet, Fast Ethernet y Gigabit Ethernet 2. Nuevas prestaciones de las redes Ethernet 3. LAN virtuales 4. NAT

1. ETHERNET, FAST ETHERNET Y GIGABIT ETHERNET El trmino Ethernet engloba a una familia de implementaciones de rea local que pasamos a estudiar: Ethernet: Red de rea local que funciona a 10 Mbps. Fast Ethernet: Red de rea local que funciona a 100 Mbps. Gigabit Ethernet: Red de rea local que funciona a 1000 Mbps.

Ethernet Existen dos estndares de Ethernet, el primero data de 1980 de la unin de las compalas Digital, Intel y Seros (DIX) que comenzaron a explotar redes de rea local de 10 Mbps e impusieron su estndar. Algo ms tarde surge el estndar internacional IEE 802.3 y aunque pueden coexistir en un mismo medio, son distintas, especialmente se diferencian en el formato de la trama. Formato de trama Ethernet II o DIX Como se puede observar en la imagen Formato de trama IEE 802.3 lateral, la diferencia se observa en el campo Tipo / Longitud de datos. El estndar DIX no contempla la longitud de datos porque eso se negociar en el software adecuado, pero s el tipo de datos para ser reconocido. Dado que DIX no utiliza tipos inferiores a 1500, y en el estndar IEE ste es la mxima longitud que nos podemos encontrar, queda claramente definido por este campo cuando una trama pertenece a un formato u otro. Por otro lado la longitud mxima es de 1500 bytes para evitar colisiones y prdida de informacin. Cuando un dispositivo transmite primero escucha el canal, espera que est vaco y entonces trasmite. El tiempo de trama debe ser igual o mayor al doble de tiempo de propagacin mximo, con estos valores se requieren 64 bytes mnimos para una trama, y como ya tenemos 18 ocupados por valores fijos, el campo de datos debe ser como mnimo de 46. Fast Ethernet Las necesidades de velocidad han ido en aumento y por tanto se ha requerido aumentar en 10 veces la velocidad de transmisin de las tramas, esto no es tan fcil como aumentar dicha velocidad y ya est, sino que supone una serie de problemas. La diferencia ms importante entre 100BaseT y 10BaseT es el dimetro Caractersticas de los medios fsicos 100BaseT de la red: el dimetro mximo es 100BaseT es de 200 metros, aproximadamente 10 veces menor que el de una red Ethernet a 10 Mbps; para evitar colisiones, una estacin que transmite a una velocidad 10 veces mayor que antes, ahora deber estar colocada a una distancia 10 veces menor; dependiendo del cableado que se estructure, las distancias pueden varias segn la tabla lateral. Como existen tarjetas y medios que pueden funcionar indistintamente a 10 o 100 Mbps, estar redes cuentan con una caracterstica adicional, denominada autonegociacin, que permite a dos dispositivos intercambiar informacin sobre sus capacidades para crear un entorno

2 Diseo de redes de computadores

ptimo, primero negocian sobre la velocidad (10 100), luego sobre si half o full duplex. Gigabit Ethernet Como la red Fast Ethernet se extendi rpidamente, result que los servidores se colapsaban con facilidad y se cre la Gigabit Ethernet a 1000 Mbps, que est orientada a conectar servidores, bridges o conmutadores, es decir, a funcional como nivel fsico de la red troncal de una red corporativa y, de forma ocasional, puede servir para conectar a un usuario final con su servidor. A diferencia de la red Fast Ethernet, sta nueva red s requiri cambios fsicos y no nicamente conceptuales. En la conexin half duplex, para evitar colisiones (en una transmisin full duplex no se producen colisiones y por tanto no es necesario utilizar el protocolo de acceso al canal), al mantenerse la misma longitud de trama y formato se producen problemas, dado que ahora la distancia de colisin es 10 veces menor que en una red Fast, por tanto, de 200 metros pasamos tan solo a 20 metros, lo cual obviamente es insostenible. Para evitar este problema se han desarrollado dos soluciones: Extensin de portadora: Consiste en aadir bits a la trema Ethernet mnima hasta llegar a los 512 bytes y as tener una trama de duracin similar a una trama de 64 bytes a 100 Mbps. Naturalmente esta solucin solo aumenta un 12% el rendimiento respecto a una red 100BaseT. Paquet bursting: Consiste en introducir distintas tramas Ethernet clsicas en una supertrama mayor o igual a 512 bytes.

2. NUEVAS PRESTACIONES DE LAS REDES ETHERNET Transmisin full duplex: El hecho de que slo una estacin pueda transmitir en un instante determinado en una red (half duplex) disminuye considerablemente el rendimiento (60%); para que una red Ethernet puede trabar en modo full duplex se requiere que el medio fsico soporte este tipo de trasmisiones, as como los dispositivos conectados y las tarjetas de red. El hecho de que slo haya dos estaciones conectadas entre ellas y que el canal de comunicacin sea independiente para cada sentido, implica que el medio de transmisin no es compartido, as se crea un dominio libre de colisiones, sin necesidad de disponer de un protocolo de acceso al medio, sin necesidad de de tramas de longitud determinada, a la velocidad mxima que permite la red y en el que la limitacin de la distancia slo vendr impuesto por la atenuacin de la seal. Control de flujo: Es una tcnica para evitar el desbordamiento de las memorias intermedias (buffers) de almacenamiento del receptor, junto con la consiguiente eliminacin de tramas que este hecho comportara. Cuando la estacin receptora no puede aceptar ms tramas entrantes, enva una peticin de pause, con una duracin determinada que puede posteriormente ampliar o reducir para continuar despus con al transmisin. Puede ser simtrico (los dos dispositivos pueden enviar seales de pause) o asimtrico. Autonegociacin: Ya visto anteriormente, esta tcnica permite sacar el mximo aprovechamiento de las caractersticas de los dos dispositivos que se interconectan, negocian primero sobre el medio fsico y la velocidad de transmisin, despus sobre el modo (half o full duplex) y finalmente sobre el control de flujo y el establecimiento simtrico o asimtrico de ste. Agregacin de enlaces: Es una tcnica de agrupamiento de enlaces del mismo tipo de medio fsico y velocidad, de manera que se tratan como si formasen parte de un solo y nico enlace lgico, de forma que permite el acceso a capacidades de transmisin mayores cuando no es posible cambiar a una velocidad superior y permite tambin un crecimiento gradual a medida que van surgiendo nuevas necesidades de ancho de banda en la infraestructura ya montada.

Diseo de redes de computadores 3


Implementacin tpica de una LAN y debajo, implementacin de una VLAN

3. LAN VIRTUALES Las configuraciones de una red de rea local tpica depende en gran medida, de la infraestructura de sus conexiones, perteneces a la red a la que ests fsicamente conectado; en cambio, una LAN Virtual o VLAN es una agrupacin lgica de dispositivos o de usuarios que no est restringida por el segmente fsico donde estn conectados, sino que los dispositivos o los usuarios se pueden agrupar por la funcin que lleven a cabo, el departamento del cual forman parte o la aplicacin que utilizan. Las VLAN no se pueden implementar sobre concentradores, sino que deben ser sustituidos por conmutadores que s soporten este protocolo. Cuando un dispositivo de una VLAN manda informacin a otro dispositivo de la misma VLAN pero de distinto conmutador, es el encaminador el que proporciona la comunicacin entre los distintos grupos de trabajo y puede filtrar las tramas segn los criterios elegidos por el administrador de red a la hora de crear las VLAN. Las VLAN se pueden clasificar en: VLAN estticas: El administrador de red define de manera permanente la relacin entre los puertos del conmutador y la VLAN a la que pertenece, es fija, fcil de configurar y gestionar, pero siempre dependiente del administrador. VLAN dinmicas: Los puertos de un conmutador determinan de manera automtica su asignacin a una VLAN, dependiendo de las direcciones del nivel de enlace, de las direcciones lgicas o del tipo de protocolo de los paquetes. VLAN basadas en el puerto: Es otra forma de dividir las VLAN, y el conmutador utiliza los nmeros de puerto para hacer la agrupacin lgica de usuarios, es igual que una VLAN esttica definida por el administrador. VLAN basadas en el protocolo: El conmutador clasificar el trfico recibido. Un conmutador puede tener dos tipos de puerto, access port y trunk port. Por defecto todos los puertos son de acceso, es decir, pertenecen a una determinada VLAN, pero los trunk ports se utilizan adems para interconectar diferentes conmutadores sin tener en cuenta a que VLAN pertenecen. Estos puertos deben pertenecer a todas las VLAN con las que se quiera tener comunicacin para as poder reconocer y transmitir las tramas que les lleguen de todas ellas. As en la imagen lateral, en el primer conmutador, el puerto 6 es un trunk port que reconoce ambas VLAN (1 y 2) mientras que los puertos 1, 2, 4 y 5 reconocen la VLAN1 y el puerto 3 la VLAN 2. El formato de trama de una VLAN que lleva la identificacin de la VLAN y la informacin de prioridad del usuario se incluye en un nuevo campo de la trama conocido por tag header, que se sita inmediatamente despus de los campos de las direcciones destino y origen existentes en la trama original. Tiene dos partes el ETPID (etherned-code tag protocol identifier cuyo valor es 81-00) y el campo TCI, que a su vez consta de los campos usuario prioritario (3 bits), canonical format indicador (1 bit) y VID (VLAN identifier, que con 4 bits indica a que VLAN pertenece la trama).

Uso de los trunk ports Tag header y debajo, formato del campo TCI

4 Diseo de redes de computadores

4. NAT NAT tiene como objetivo solucionar el problema de la falta de direcciones IP pblicas disponibles en Internet, para ello utiliza direccionamiento privado en la red local y nicamente publica al exterior las direcciones que realmente son necesarias. Hay un conjunto de direcciones reservadas para utilizar en cualquier red interna: 10.0.0.0 a 10.255.255.255 172.16.0.0 a 172.31.255.255 192.168.0.0. a 192.168.255.255

Y existen a su vez, 4 formas de realizar la traduccin de direcciones, unas ms efectivas que otras, como veremos a continuacin: NAT esttica Cada direccin privada tiene su direccin pblica equivalente para lo que es imprescindible que el administrador haga esta relacin de equivalencia una a una. El proceso es bien sencillo, cuando una mquina de la red interna enva un paquete a la red externa, el valor de la direccin IP origen ser la direccin privada de la estacin origen (por ejemplo 10.1.11.11), una vez que el paquete llega al encaminador, ste aplicar la traduccin de direcciones correspondiente y el paquete IP viaja ahora con la direccin IP pblica correspondiente. Ni que decir tiene que esta traduccin de direcciones es el ms sencillo existente, pero a su vez, no nos permite ahorrarnos ni una sola direccin IP pblica. NAT dinmica El encaminador de salida conoce el conjunto de direcciones internas que tiene que traducir y el rango de direcciones pblicas de las que dispone; no todas las mquinas de nuestra organizacin estarn conectadas a Internet al mismo tiempo y por ello, no habr que disponer de tantas direcciones pblicas como privadas. Cada vez que una mquina enve un paquete IP hacia Internet, a su direccin privada se le asignar una direccin pblica que se guardar en una tabla de traducciones. Esta tabla tendr un tiempo de caducidad, despus del cual se borrar de la tabla de manera que pueda ser utilizada por nuevas direcciones privadas. De esta forma, podemos contar con menos direcciones IP pblicas que ordenadores conectados simultneamente a la red externa. PAT (Port Adress Translation) PAT es un tipo de NAT dinmica que permite reducir al mximo (hasta 1) el nmero de direcciones IP pblicas utilizadas dinmicamente, para conseguir esto PAT utiliza adems de la direccin IP privada para identificar una mquina, el puerto TCP/UDP. Se utilizan as los puertos del 1024 al 5000, que se encuentran libres en toda mquina. Cada vez que el encaminador de salida recibe una nueva conexin TCP o UDP contra el exterior, le asigna un puerto libre del rango especificado (a veces solo hay una direccin IP pblica, ahorro mximo); de esta manera, todas las conexiones se publican en el exterior con la misma direccin IP, pero son distinguidas segn el puerto TCP o UDP asignado. LSNAT (Load Sharing NAT) Este tipo est pensado para solucionar el problema que presentan los servidores de aplicaciones sobresaturados. Cuando se sobresatura un servidor, por ejemplo un servidor de un portal web muy visitado, en lugar de comprar un servidor ms potente que supone un desembolso mayor, es ms fcil comprar ms servidores ms modestos y poder balancear y compartir la carga de trabajo entre todos ellos. Una vez replicados los servidores, aplicaremos un sistema que publique todos los servidores en Internet como si fueran uno nico, y repartiremos la carga

Diseo de redes de computadores 5

entre todos. Este aspecto es completamente transparente para el usuario que se conecta a dicho servidor.

6 Diseo de redes de computadores

TEMA 2 RDSI: RED DIGITAL DE SERVICIOS INTEGRADOS

1. ARQUITECTURA DE PROTOCOLOS RDSI La red digital de servicios integrados es una red evolucionada de la red de telefona integrada digital que proporciona conectividad digital extremo a extremos para dar soporte a una amplia gama de servicios, a los cuales los usuarios tienen acceso mediante un conjunto limitado de interfaces estndar multipropsito. La RDSI surge para mejorar las prestaciones de la red analgica de telefona; proporciona un canal digital extremo a extremo pero conservando el par de cobre ya instalado, con lo cual se proporciona al usuario un bucle de abonado local digital con las ventajas y nuevos servicios que ello supone, pero manteniendo una red ampliamente extendida de par de cobre que no es necesario cambiar. La RDSI utiliza dos canales de transmisin de datos, el canal B por donde irn todos los datos y la voz de los usuarios en las llamadas, y el canal D de sealizacin para asegurar el control correspondiente al otro canal.

Tema 2 RDSI: red Digital de Servicios Integrados 1. Arquitectura de protocolos RDSI 2. Canales y estructuras de acceso 3. Jerarqua digital plesicrona 4. Protocolos RDSI 5. Protocolos complementarios al RDSI 6. Aplicaciones RDSI

2. CANALES Y ESTRUCTURAS DE ACCESO Los grupos funcionales son conjuntos de funciones que se pueden necesitar para el acceso de los usuarios a la RSDI. En el fondo, son los distintos componentes. Los puntos de referencia son puntos conceptuales que dividen los grupos funcionales; pueden corresponder tanto a una interfaz fsica como a una interfaz lgica. TR1: Terminacin re red 1 o NT1 conecta el circuito de dos hilos del bucle local (punto de referencia U) con el circuito en cuatro hilos (punto S/T) del abonado. TR2: Dirige el trfico entre diferentes dispositivos de usuario y el grupo TR1. ET1: Es un Terminal diseado para que se conecte directamente a la RDSI. ET2: Terminal no compatible con RDSI y que por tanto, requiere un adaptador de Terminal. AT: Adaptador de Terminal para equipos ET2 no compatibles directamente con RDSI. R: Punto de referencia entre un dispositivo no compatible RDSI y su adaptador de Terminal. S: Punto de referencia entre un equipo compatible RDSI y su TR2. T: En la prctica los puntos de referencia S y T se pueden considerar idnticos, por lo que se suele hablar de puntos S/T. U: Punto de referencia entre la conexin TR1 y la RDSI.
Grupos funcionales y puntos de referencia Estructuras de acceso

El RDSI tiene dos canales, el B y el D. El canal B de 64 kbps es el canal de usuario bsico para la transmisin de datos (datos,

Diseo de redes de computadores 7

imgenes, voz), mientras que el canal D se utiliza para transmitir los mensajes de sealizacin y funciona a 16 kbps. Tenemos dos tipos de accesos, el bsico y el acceso primario. El acceso bsico consta de dos canales B full duplex a 64 kbps ms un canal D full duplex a 16 kbps, por lo que su capacidad total es de 144 kbps; al aadir los bites de control necesarios, sincronismo y mantenimiento (48 kbps), llegamos a un bit rate total de 192 kbps. El acceso primario en Europa ofrece 30 canales B ms un canal D con lo que llegamos a una velocidad de 2048 Mbps, mientras que en EEUU y Japn son 23 canales B con lo que la velocidad mxima es de 1544 Kbps.

3. JERARQUA DIGITAL PLESICRONA El principio bsico es aprovechar el tiempo entre muestras de un canal de voz para transmitir informacin de otros canales de voz. El perodo de tiempo entre dos muestras consecutivas de un mismo canal se denomina tiempo de trama y es de 125 microsegundos, el inverso de la frecuencia de muestreo (8.000 Hz). La propuesta europea, como ya hemos dicho, es de 30 tramas para el canal B ms dos tramas, una e sincronismo y otra para el canal D; y como tambin hemos dicho esto nos da 2048 Kpbs de velocidad. Se puede aumentar todava ms multiplexando cuatro tributarios del nivel jerrquico inferior y aumentando en algo ms de 4 veces la velocidad en cada una de estas multiplexaciones; para controlar las diferencias de velocidad se utiliza un conjunto de bits que se denominan de relleno (R) y de justificacin(J). La trama de orden superior tiene estos bits de relleno para acomodarse a las variaciones de velocidad del tributario correspondiente, si el tributario se acelera, los bits de relleno transmiten informacin del tributario, pero si ste ltimo se frena, no transmiten informacin til. Para saber si es informacin til o no la que se est transmitiendo, contamos con los bits de justificacin. Este modo de trabajar plesicrono tiene la ventaja de la sencillez pero tiene un inconveniente grave y es que el hecho de que los bits de un determinado canal no ocupen siempre la misma posicin en los niveles jerrquicos superiores, hace que cuando a un nodo intermedio le interesa solo un determinado canal, no puede extraer la trama de orden superior e insertar canales individuales directamente, sino que tiene que demultiplexar y volver a multiplexar todos los niveles jerrquicos y todos los niveles; ello representa una importante prdida de flexibilidad, por lo que en el diseo de la RDSI de banda acha se ha elegido una jerarqua digital sncrona que dispone de sincronismo de red y que permite las operacin de extraccin e insercin individuales.

4. PROTOCOLOS RDSI Tres son los protocolos a estudiar: LAP-D, Q.931 y SS7. El protocolo LAP-D ofrece dos capacidades: el direccionamiento de los dispositivos de usuario y la transmisin de mensajes entre un dispositivo y la red local. Dado que varios dispositivos de usuario (telfono, PC, etc) pueden compartir una misma interfaz fsica, y stos a su vez pueden generar distintos tipos de trfico (sealizacin, paquetes de usuario) es necesario identificar correctamente cada dispositivo que se hace mediante el SAPI (identificador de punto de acceso al servicio) + TEI (Identificador de punto final del Terminal). El TEI se puede asignar automticamente en el momento de la conexin del equipo o manualmente; as cada SAPI+TEI define un enlace diferente con el que pueden establecerse diferentes conexiones simultneamente con el canal D. Las tramas LAP-D pueden ser de tres tipos: tramas de informacin utilizadas para la transmisin de los datos, tramas no numeradas que se utilizan para iniciar y cerrar los canales lgicos del nivel de enlace y las tramas de

8 Diseo de redes de computadores

supervisin que confirman la recepcin de tramas fuera de secuencia, para contestar tramas de informacin recibidas, para sondear el otro extremo y contestar estos sondeos. El protocolo Q.931 especifica el protocolo del control de llamada en los canales B (establecer, mantener y acabar estas conexiones) y proporciona adems sealizacin de control de usuario a usuario sobre el canal D. Para el establecimiento de una llamada se sigue el siguiente proceso: Cuando el dispositivo llama, genera un mensaje de configuracin (setup) hacia la central local, especificando el canal B que se quiere utilizar Cuando la central local recibe este mensaje con el nmero de telfono de destino, genera los mensajes de sealizacin entre todos los nodos intermedios entre origen y destino (protocolo SS7 del que hablaremos despus), genera un mensaje call proceeding para informar al Terminal de usuario de que la llamada est en proceso y enva un mensaje de configuracin al receptor. Cuando el usuario destino acepta la llamda, enva un mensaje de conexin a su central local, que se transmite mediante mensajes SS7 hasta la central local del emisor, que enva un mensaje al emisor de connect que se responde con un connect ACK por parte del emisor y as queda establecida la comunicacin entre los dos terminales por el canal B.
Diagramas de establecimiento y fin de llamada

Para finalizar una llamada en RDSI: Cualquiera de los nodos, emisor o receptor, puede iniciar la finalizacin de la llamada, cuando lo hacen, la central local contesta con un realease hacia el telfono que envi la seal disconnect a su central local. La central local enviaun mensaje SS7 mediante la red, que a medida que atraviesa centrales de trfico, stas van confirmando a su central predecesora que han hecho la liberacin. Cuando el mensaje de finalizacin llega a la central local del otro extremo, genera un mensaje de desconecin, al que contesta el Terminal con un release y la central confirma con un release complete. El protocolo SS7 que hemos visto anteriormente es un sistema de sealizacin que transmite la informacin necesaria para inicializar y gestionar las llamadas telefnicas en una red paralela, de manera que la sealizacin no tenga que viajar por la misma red por donde lo hace llamada Sealizacin en RDSI telefnica, tanto si es digital como analgica. Asimismo este protocolo slo se establece entre redes locales RDSI y nunca con el abonado; por lo tanto, y como vemos en la figura lateral, los mensajes entre terminales RDSI y su nodo de acceso son mediante mensajes Q.921 y 931, mientras que entre los nodos intermedios, se utiliza el protocolo SS7.

5. PROTOCOLOS COMPLEMENTARIOS AL RDSI Tres son los protocolos que se utilizan en RDSI aunque no son especficos de este estndar. SLIP es un protocolo estndar de nivel de enlace para encapsular paquetes IP de manera simple y transmitirlos por una lnea serie. Se utiliza para conectar ordenadores personales a Internet con un proveedor de servicios de Internet o para unir dos redes mediante lneas dedicadas o RDSI. Al principio y al final del paquete IP se aade un carcter especial denominado END (0 x db), si este carcter ya existiese en la trama IP se sustituye por (0 x db + 0 x dc). El protocolo SLIP tiene varias deficiencias que le confieren un uso reducido:

Diseo de redes de computadores 9

Cada extremo debe conocer la direccin IP del otro extremo. No hay ningn campo que indique qu protocolo se utiliza, por lo que no se puede utilizar otro al mismo tiempo. No hay ningn tipo de control de errores ni ningn mtodo de autenticacin.

El protocolo CSLIP se cre para reducir los problemas de rendimiento de SLIP, es decir, muchas aplicaciones como telnet y rlogin envan cada carcter de comunicacin interactiva en un paquete IP, y calro, 40 bytes para enviar un nico byte de informacin es demasiado. Esta nueva versin de CSLIP lo que hace es que a excepcin de las primeras tramas, luego puede reducir la cabecera de 40 a 3 5 bytes dado que la mayora de los campos no van a cambiar; pero eso s las deficiencias mostradas anteriormente para SLIP continan patentes.
Arquitectura de protocolos PPP Formato de las tramas PPP

El protocolo PPP (Point to point protocol) define un protocolo de control de enlace para establecer, configurar y certificar la conexin de datos (podemos negociar distintos parmetros) y tambin define una familia de protocolos de control de red para diferentes protocolos de nivel de red, como vemos en la figura lateral. El formato de las tramas PPP se eligi de manera que fuera parecido al de las tramas HDLC; as vemos los campos indicador (valor 7e), direccin (FF) y control (03); el campo protocolo nos indica si es un datagrama IP (21), LCD (c021) o NCD (8021). Las ventajas que soporta PPP frente a los anteriores son mltiples: Soporta protocolos de nivel 3 sobre la misma lnea. Utiliza el CRC para detectar errores. Permite la negociacin dinmica de direcciones IP. Permite la compresin de cabeceras IP y TCP. Permite la autenticacin de usuarios. Esta ltima autenticacin de usuarios permite conocer si la identidad de cualquier usuario que llama corresponde con un cliente vlido o no. Se puede hacer por PAP o por CHAP. Por PAP es un mtodo ms sencillo; cuando un usuario pide una peticin PPP, el usuario remoto enva su identificacin y clave secreta, el servidor comprueba que este usuario tenga permiso de acceso y se lo acepta o deniega en su caso. EL principal inconveniente es que el nombre de usuario y la contrasea viajan sin cifrar por lo que pueden ser robadas. El mtodo CHAP es muy parecido, pero el servidor al responder a la peticin PPP enva un reto particular para esa peticin en concreto, entonces el usuario responde al reto con el nombre de usuario y un valor calculado a partir del reto y su contrasea; as no viaja la contrasea, sino un valor calculado que aunque sea robado slo es vlido para ese reto en concreto.

Autenticacin PAP Autenticacin CHAP

6. APLICACIONES RDSI Acceso remoto: o Dial on demand, se puede hacer tambin por red telefnica conmutada (muy extendida pro con graves limitaciones de velocidad), lnea dedicada (enlace punto a punto con los recursos siempre disponibles pero muy caro) o frame relay (adecuada para trfico a rfagas, pero el administrador tiene poco control sobre la red). Hacerlo en RDSI permite transmitir volmenes de datos no muy grandes y peridicos con velocidades ms elevadas que la red telefnica conmutada.

10 Diseo de redes de computadores

Multiplexacin inversa: agregacin de paquetes que permite aumentar el ancho de banda, y por tanto controlar trfico a rfagas para lo que inicialmente no estaba diseado el RDSI. Se divide el flujo de bits en fracciones de 64 kbps y se transmite cada una de ellas por un canal B; al otro lado es necesario otro multiplexor inverso que resincronice los canales a la recepcin, dado que los paquetes pueden llegar desordenados. Llamada de retorno: Cuando un cliente remoto llama a un servidor, ste cuelga y le devuelve la llamada al cliente, de forma que el pago de la factura siempre lo realiza el servidor (control en grandes empresas) y adems hay un control de usuarios, pues a telfonos no permitidos (recordemos que el nmero de telfono siempre viaja en la peticin de la conexin) el servidor puede no devolverles la llamada de retorno. Identificacin de llamadas: Parecido a lo anterior, pero en este caso en lugar de devolverle la llamada, basndonos en el nmero de telfono en cuestin (y por tanto en el usuario) podemos desviarlo hacia otra centralita o realizar algn proceso particular.

Diseo de redes de computadores 11

TEMA 3 FRAME RELAY

Tema 3 Frame relay 1. Evolucin de X.25 2. Protocolos de frame relay 3. Control de congestin

1. EVOLUCIN DE X.25 Tanto X.25 cp,p frame relay son tecnologas basadas en la conmutacin de paquetes orientada a la conexin. X.25 fue la primera en aparecer, proporcionando un nivel muy elevado de fiabilidad a partir de introducir una gran sobrecarga de informacin a las transmisiones, posteriormente frame relay las sustituy porque eliminaba esta sobrecarga y, por ende, mejoraba el rendimiento de la red. Las caractersticas de X.25 son: Utiliza protocolos de control de errores, control de flujo y fiabilidad en el nivel de red y de enlace; Frame Relay por el contrario se basa en que las redes actuales son muy fiables y no implementa dichos controles, con lo que aumenta su rendimiento. Permite circuitos permanentes (PVC) en los que el origen, destino y clase de servicio estn fijados manualmente por el administrador de red y donde no hay fase de establecimiento ni desconexin; igualmente permite circuitos virtuales conmutados (SVC) con sus fases de establecimiento, transmisin y desconexin a demanda del usuario. Los paquetes de control para establecimiento y desconexin se envan por el mismo canal y circuito virtual, en cambio en Frame Relay se enva por una conexin lgica diferente. En X.25 la multiplexacin de circuitos virtuales tiene lugar a nivel de red, mientras que en Frame Realy es en el nivel de enlace, lo que ahorra toda una capa de procesamiento y agiliza la multiplexacin.

2. PROTOCOLOS DE FRAME RELAY


Planes de control y usuario

Frame Relay lgicamente define una arquitectura de protocolos determinada para que un usuario pueda interconectarse a un nodo de acceso de red, para los niveles fsico de enlace y de red. Adems distingue dos tipos de planes: el plan de control (se encarga del establecimiento y desconexin y por ello trabaja entre el usuario y la red) y el plan de usuario (aspectos de sealizacin y transmisin de informacin). En la figura lateral podemos observar estos protocolos en los planes de usuario y de control para cada nivel. En la figura lateral se detallan el conjunto de protocolos en los niveles fsico, de enlace y red para el plan de control, es decir, en el establecimiento y desconexin en Frame Relay; mientras que justo debajo hacemos lo mismo para el plan de usuario, por lo tanto, para la transferencia de datos. El protocolo LAP-F es el protocolo de acceso al enlace en Frame Relay. Se parece al ya estudiado protocolo LAP-D pero tiene algunas diferencias: No tiene campo de control, por lo que slo se puede enviar un nico tipo de trama. Se utiliza una conexin lgica para la transmisin de la sealizacin y otra distinta para la transmisin de datos. No implementa control de flujo

Protocolos en planes de control y de usuario

Los campos que se distinguen en una trama LAP-F core protocol son:

12 Diseo de redes de computadores

Indicador: Delimita el origen y el final de la trama con el valor 7E y ocupa un byte. Direccin: Ocupa 2 bytes y a su vez se distinguen: o DLCI: Es el identificador de conexin del enlace de datos, es un valor nico que se le asigna a cada enlace fsico de un circuito virtual en una red Frame Relay y slo tiene significado local. A diferencia de X.25 en Frame Relay se acostumbran a utilizar los circuitos virtuales permanentes y es el proveedor de servicios quien tendr que crear los PVC que requiera el usuario. El DLCI ocupa hasta 10 bits y por ello podemos elegir hasta 1024 valores, aunque ciertos de ellos estn reservados. o C/R: bit reservado y que no se utiliza. o EA: Este campo indica cuando se acaba la direccin LAP-F, as se puede permitir direcciones ms largas de 2 bytes. o FECN: Bit que permite el control de congestin, cuando est a 1 implica una situacin de congestin en el mismo sentido de transmisin de la trama, que recibe el receptor y que puede iniciar las acciones oportunas para corregirlo. o BECN: Tambin es un bit de congestin pero lo indica para el sentido contrario al de la trama, as cuando llega al origen ste disminuye la velocidad de transmisin de datos hasta que esta seal se desactive. o DE: Permite marcar las tramas menos importantes y que se pueden eliminar en caso de congestin de red. Informacin: Puede incluir datos de usuario o bien de sealizacin. Control de errores: Son 2 bytes utilizados para detectar errores en la trama.

Las tramas LAP-F control protocol son exactamente iguales a la anterior, a excepcin de la existencia de un campo control de 1 2 bytes situado entre los campos de direccin y de informacin y que permiten funciones de control de flujo y control de errores de extremo a extremo. Las topologas de Frame Relay son: En estrella: Es la ms utilizada dado que es la ms econmica. Los puntos remotos estn conectados a un punto central que proporciona conexin multipunto al resto; recordemos que los circuitos ms utilizados en Frame Relay son los PVC y que se paga por cada uno de ellos, como esta opcin es la que menos circuitos implementa para tener conectados todos los nodos, es la ms barata. Completamente mallada: Todos los nodos estn conectados directamente con el resto. Es la topologa ms cara y realmente a partir de un cierto nmero de nodos se hace insostenible econmicamente pues la progresin es exponencial, ahora que la conectividad es ideal. Parcialmente mallada: Solucin intermedia entre las dos anteriores.

En cualquier caso existen siempre nodos que estn conectados a ms de un nodo distinto, y en este caso se puede crear una interfaz para cada conexin (ms caro= o recurrir a lo que se hace ms habitualmente, crear subinterfaces: Subinterfaz punto a punto: Una sola subinterfaz para establecer un PVC hacia otra interfaz fsica; las interfaces estn en la misma subred y cada subinterfaz tiene un solo DLCI, cada subinterfaz viene a ser como una lnea dedicada.

Diseo de redes de computadores 13

Subinterfaz multipunto: Una sola subinterfaz para mltiples PVC, todas las interfaces estn en la misma subred y cada interfaz tiene su DLCI.

Se nombran las subinterfaces del modo s0.0; siendo la s porque es una interfaz serie, el valor antes del punto es el nmero de la interfaz fsica y el valor posterior el de la subinterfaz lgica.

3. CONTROL DE CONGESTIN Aparte de las tcnicas explcitas de congestin vistas en el apartado anterior (FECN y BECN) existen el CIR, DE y EIR.
Umbrales de conexin

EL CIR es la tasa de informacin que la red se compromete a transportar; cualquier volumen a velocidad superior es susceptible de ser descartado. El CIR es el valor que el usuario contrata como parmetro de trfico y obviamente, cuanto ms alto, ms coste. Obviamente el CIR de todos los circuitos contratados por un cliente en un nodo determinado no deben superar la tasa de velocidad mxima fsica del enlace. EL DE es un campo que ya veamos introducido en la trama LAP-F, pues bien, cuando superamos el CIR, la red marcara los paquetes que superen esta velocidad con un 1 en este campo y en condiciones normales incluso podran llegar a su destino, pero en caso de congestin sern los primeros eliminados; por lo cual una trama marcada con un 1 en el campo DE no se puede asegurar que lleguen a su destino en ninguna circunstancia. El EIR es la velocidad mxima sostenible, que suele coincidir con la velocidad de acceso local, y obviamente cualquier trama que supere esta velocidad ser automticamente descartada. Otros 2 parmetros debemos conocer: Bc define la mxima cantidad de datos en bits que la red aceptar transmitir bajo condiciones normales durante un intervalo de tiempo Tc; por tanto nos queda la siguiente relacin: CIR = Bc / Tc. Be es el exceso mximo de datos respecto de Bc que la red intentar transmitir en condiciones normales, durante un intervalo de tiempo Tc. La relacin entre CIR y este nuevo parmetro es: CIR = (Be+Bc) / Tc.

14 Diseo de redes de computadores

TEMA 4 ATM

1. INTRODUCCIN Las redes ATM se crearon como respuesta a la baja velocidad de la banda estrecha, en 1988 se empez a crear la RDSI-BA (banda ancha) que se estableci 3 preguntas importantes para su implementacin: Qu modo de transferencia deba utilizar? La longitud de los paquetes debe ser fija o variable? Si son de longitud fija, cual debe ser sta? El modo de transferencia se discuta entre sncrono y asncrono. En la banda estrecha se utiliza el modo sncrono, en el que el ancho de banda se divide en intervalos de tiempo perodicos y a cada usuario se le asigna uno de estos canales, los canales quedan perfectamente identificados, pero es poco flexible porque si necesitamos ms ancho de banda hay que asignar un canal entero y los canales ocupan espacio aunque no se estn utilizando. Por ello, la eleccin fue un modo de transferencia asncrono, donde se multiplexa el flujo de paquetes a demanda, aunque por el contrario, haya que aadir una cabecera a cada uno. La longitud del paquete se decidi que fuese fija porque minimiza el retraso de paquetizacin de las fuentes de datos y porque simplifica el diseo de los conmutadores de red. Ahora bien Cul va a ser esta longitud? Pues los europeos defendamos un valor de 32 bytes para el paquete ATM y as favorecer el trfico de voz; en EEUU se defenda un valor de 64 bytes para darle ms eficiencia a los mismos, al final se qued justo en la mitad: 48 bytes + 5 bytes de cabecera, en total: 53 bytes.

Tema 4 ATM 1. Introduccin 2. Nivel fsico 3. Nivel ATM 4. Nivel de adaptacin AAL 5. Gestin de trfico 6. Sealizacin ATM 7. Aplicaciones ATM

Modelo de referencia ATM

El modelo de referencia ATM tiene distintas capas: Plan de gestin: Incluye la gestin de las distintas capas y planes. Plan de control: Controla las llamadas y las funciones del control de conexiones. Plan de usuario: Transferencia de la informacin de usuario. Capas superiores: Corresponden a arquitecturas de protocolo como TCP/IP, voz sobre ATM, etc. Capa AAL: Adapta los distintos flujos de datos que provienen de las capas superiores al formato de paquete de longitud fija que utiliza ATM. Capa ATM: Hace llegar las celdas ATM del emisor al receptor mediante la red ATM. Capa fsica: Cable UTP, fibra ptica, etc.

2. NIVEL FSICO Como hemos visto anteriormente la tecnologa ATM utiliza celdas de longitud fija, y para delimitar estas celdas a nivel fsico hay dos opciones principales: SDH y PDH. Tambin se pueden transmitir directamente sin ninguna estructura a nivel fsico, pero dado su dificultad, en la actualidad no se implementa. SDH es la tecnologa ms utilizada actualmente, y se caracteriza porque es completamente sncrona (ojo, slo a nivel fsico): la red no solo transporta los datos de los usuarios, sino tambin el reloj de tiempo generado por una unidad central con lo cual se consigue no tener que aadir bits de justificacin para multiplexar n estructuras (ya que todos los tributarios estn perfectamente sincronizados) y podemos recuperar cualquier flujo de datos de usuario sin necesidad de demultiplexar toda la trama. El inconveniente del SDH es que es ms complicada de implementar que la PDH (su predecesora) y por lo tanto ms cara, aunque las prestaciones que

Diseo de redes de computadores 15

ofrecen, realmente merecen la pena. La topologa preferedida y recomendada para la implementacin de una red PDH es de doble anillo: uno primario que permite redireccionar al secundario si el primario falla. En Europa la estructura utilizada es el STM y en EEUU el Ocnet, encontramos las 3 principales:
Trama SDH

STM1 / OC3 / 155,52 Mbps STM4 / OC12 / 622,08 Mbps STM16 / OC48 / 2488,32 Mbps

La estructura bsica de SDH es una trama STM1. Como la trama se genera a una velocidad de 8000 tramas por segundo, encontramos que la velocidad total es de 9x270x8x8000=155,52 Mbps. Eso s, la carga til de informacin no es esa ni mucho menos, debemos descontar: RSOH: Supervisin y mantenimiento de red SDH. MSOH: Supervisin y mantenimiento de multiplexacin de red. Carga til: Dentro de la carga til la informacin no viaja suelta, sino que va empaquetada en estructuras denominadas VC4 de 9 x 261 bytes, y cada VC4 no viaja justo en una trama STM1 sin oque viaja flotando entre una trama STM1 y la siguiente, por lo que debemos descontar el puntero que nos indica donde empieza el STM4. Celda ATM: A su vez la celda ATM que viaja en la carga til, tiene una columna de 9 bytes dedicado a funciones de gestin y mantenimiento y nos quedan 9x260 libres, pero como no es mltiplo exacto de 53 (lo que ocupa una celda ATM) encontramos que las celdas ATM pueden cruzar el umbral entre dos VC4, con lo que volvemos a necesitar otro indicador que nos seale donde empieza la celda ATM (est en la cabecera de 9 bytes). Si adems descontamos la cabecera de 5 bytes de la celda ATM, el resultado final es que tenemos 9x260x8000= 149,76 Mbps, restando los 5 bytes de cabecera por cada 53 enviados, nos queda un total de 135,63; hemos perdido un 13% de la capacidad inicial del SDH.

Los cables y conectores que se utilizan pueden ser:


Cabecera ATM

Puertos ATM de fibra ptica monomodo: Es el medio ms utilizada ya que permite altas velocidades (del orden de Gigabit) a grandes distancias (5 Kms.), por el contrario es el ms caro. Puertos ATM de fibra ptica multimodo: Est ms limitada en velocidad (se suele utilizar a 155,52 Mbps.) y distancia (500 metros), pero su precio es ms ajustado y se suele utilizar en conexiones dentro de edificios. Puertos ATM UTP: Se utiliza en en laces de 155,52 Mbps siendo cables de categora UTP 5e.

3. NIVEL ATM La celda ATM es un paquete de nivel 2 de longitud constante con 53 bytes, 48 de los cuales son de datos y 5 de cabecera. Nos quedamos con esta cabecera en la figura lateral con dos interfaces diferentes, UNI (la primera) y NNI: GFC: 4 bits, no se utiliza y siempre vale cero. VPI: Identificador del camino virtual, de 8 12 bits, segn interfaz. VCI: Identificador de circuito virtual (12 bits). Este campo y el anterior VPI+VCI determinan para cada flujo de datos el circuito virtual al que pertenecen y, por tanto el camino que seguirn. Estos valores se establecen al inicio de la comunicacin ATM pero no son fijos para todo el trayecto, ya que solo tienen sentido a nivel local en cada enlace fsico cambia de valor, ya que al pasar por cada conmutador que tiene una tabla que guarda las entradas y salidas, cambia el valor de VPI+VCI segn el camino a recorrer. Esta estructura simplifica enormemente las tablas de conmutacin de los nodos ATM, ya que stas han

16 Diseo de redes de computadores

sido pensadas para albergar una gran cantidad de conexiones lgicas. Adems as se ayuda a rebajar los costes del control en la red y a agrupar en una sola unidad gestionable diferentes conexiones que comparten caminos comunes. PT: Nos informa del tipo de informacin que transporta la celda; el tercer bit (de 3 que tiene) nos indica la ltima celda de una trama AAL-5. CLP: Prioridad de prdida de celdas. Un valor 0 indica que la celda tiene prioridad elevada, mientras que un valor 1 indica que en caso de congestin podemos prescindir de ella. HEC: Controla errores de cabecera (8 bits).

4. NIVEL DE ADAPTACIN AAL Subimos una capa ms, y nos encontramos ya en la capa AAL con a su vez 4 protocolos o capas diferentes segn el servicio que se vaya a utilizar:
Servicios en la capa AAL

Capa AAL-1: Est diseada para transportar fuentes de trfico de velocidad constante, con sincronizacin entre emisor y receptor; adems hay que introducir en las celdas ATM la informacin necesaria para que el receptor pueda saber si se han perdido tramas y en ese caso, cuales han sido. AAL-1 coloca flujos constantes y continuos de bytes encapsulados en una trama de 47 bytes con 1 byte de cabecera; ya as se encapsulan de nuevo en una trama ATM (a nivel de capa ATM) para que pueda ser transmitido. El byte (8 bits) de cabecera de esta capa AAL-1 incluye campos de control, deteccin de errores y paridad. Capa AAL-2: Transportar voz sobre ATM en AAL-1 presenta dificultades como que solo puede haber un nico usuario por conexin, la voz va siempre en bloques de 64 kbps y no se puede comprimir voz ni eliminar silencios; por ello se configur el protocolo AAL-2 para transmitir eficientemente trfico de baja velocidad (como la voz). Lo que se hace es multiplexar diferentes canales e ir llenando eficientemente cargas tiles de celdas ATM, una vez llena una celda, se pasa a la siguiente. Capa AAL-3/4: A pesar de que inicialmente eran especificaciones distintas, resultaron tan similares que acabaron unificndose; pero adems el formato de trama resultante es tan complejo que hizo que se utilizase poco, hasta tal punto que se sustituy por la capa AAL-5. Capa AAL-5: Permite esta capa adaptar el trfico que proviene de aplicaciones que no requieren ni sincronizacin en el emisor ni requerimientos de velocidad ni de retraso (por ejemplo los datos sobre TCP/IP). El formato de este tipo de capa es muy sencillo: se aade a la trama de datos que proviene de los niveles superiores un conjunto de campos (trailer) al final de la trama de 8 bytes en total y antes de esto se aade un relleno para conseguir que la trama resultante sea mltiplo entero de 48 bytes. El trailer contiene campos que indican formato, longitud y deteccin de errores.

5. GESTIN DE TRFICO Cuando el usuario establece una conexin ATM negocia con la red un contrato de trfico mediante el procedimiento CAC: se evala si es posible garantizar el contrato de trfico negociado o no, analizando el estado actual de la red y teniendo en cuenta el resto de conexin ya establecidas y que no pueden quedar afectadas por el hecho de incorporar una nueva. Los parmetros de calidad del servicio que encontramos son: CLR: Tasa de celdas perdidas, es la tasa de celdas descartadas por la red por el incumplimiento del contrato de trfico o perdidas por desbordamiento de buffer.

Diseo de redes de computadores 17

CTD: Retraso de transferencia de celdas: Retraso mximo requerido que puede experimentar una celda entre el emisor y el receptor. CDV: Variacin de retraso de celda: define el retraso variable mximo requerido en recepcin entre dos celdas consecutivas; es decir el intervalo mximo entre una celda y la siguiente. Las categoras de servicio que hayamos y que podemos encontrar relacionadas en la tabla lateral son: CBR: Proporciona una velocidad de transmisin constante entre el emisor y el receptor. Corresponde a la clase de servicio A y utiliza una capa de adaptacin AAL-1 y requiere que la red asegure los parmetros CLR, CTD y CDV. VBR-rt: Se utiliza en trficos de velocidad variable que requieren definir un retraso mximo entre el emisor y el receptor y que son sensibles a la variacin del retraso de celda. Corresponde a la clase de servicio B (por ejemplo una videoconferencia) y debe asegurar los mismos 3 parmetros de servicio de la categora anterior. VBR-nrt: Se utiliza en trficos de velocidad variable pero que no son sensibles a la variacin del retraso de celdas (servicio B) y requiere que la red asegure el CLR. UBR: Trfico de aplicaciones no en tiempo real que no necesitan calidad de servicio (clase C) utilizando capas de adaptacin AAL y AAL-5. El parmetro que la describe es la PCR. ABR: Soporta trfico parecido al de las LAN en el que el usuario no reserva ancho de banda pero quiere hacer un uso ptimo del ancho residual disponible en la red. Pertenece a la clase de servicio C y utiliza la capa AAL-5.

Servicios ATM

Adems del mecanismo de control CAC que veamos anteriormente, tambin se utiliza el UPC (control de parmetros de usuario para comprobar que se cumple el trfico negociado), control de prioridades (los propios conmutadores ATM hacen un control de prioridades) y control reactivo en trfico ABR.

6. SEALIZACIN ATM El direccionamiento ATM est formado por 20 bytes que se estructuran en los 3 formatos que podemos ver en la tabla lateral, vienen a tener los mismos campos: AFI (formato de direccin), DSP (dominio de red), ESI (Direccin MAC del equipo), SEL (servicio). Slo los conmutadores ATM tienen direccin ATM completa asignada (prefijo + ESI); los clientes ATM solo disponen de su direccin MAC (ESI) y mediante el protocolo de sealizacin ILMI, obtienen el prefijo del conmutador ATM al cual se conectan. Tenemos 3 tipos de sealizacin: UNI: Igual a los mensajes definidos en la Q931 de la RDSI de banda estrecha. Es decir, pasa por fase de setup, call proceeding, connect y connect ACK. Lo ms caracterstico es que cuando el mensaje de stop llega al receptor, es la red la que asigna el valor VPI/VCI correspondiente a aquel extremo; en cambio en el lado del que llama, es en el mensaje de call proceeding donde la red le indica qu valores de VPI/VCI debe utilizar. Los mensajes Q.2931 se encapsulan en tramas equivalentes al protocolo LAPd de la RDSI de banda estrecha, que en este caso son SSCOP o Q-2110 y a ms bajo nivel utiliza la capa AAL-5. ILMI: Se utiliza para intercambiar informacin de direccionamiento ATM y del estado del enlace tanto entre clientes y conmutadores ATM como entre los mismos conmutadores ATM. ILMI es el protocolo que utilizan los usuarios de

Direccionamiento ATM

Encapsulamiento UNI

18 Diseo de redes de computadores

ATM para conseguir la direccin ATM completa; recordemos que los usuarios ATM inicialmente solo disponen de una direccin MAC; al ser conectados a la red ATM obtienen mediante ILMI el prefijo ATM (13 primeros bytes) del conmutador al cual estn conectados. PNNI: Es el protocolo de direccionamiento y sealizacin entre conmutadores ATM. Por ello, la PNNI se encarga de la distribucin de informacin topolgica de la red y del estado de los nodos y enlaces.

7. APLICACIONES ATM Estudiaremos ahora 3 aplicaciones principales sobre ATM en el mundo de las redes de datos: LANE, MPLA y IPoA. LANE significa LAN emulation, es decir, emulacin de Arquitectura de protocolos LANE sobre ATM red, permite utilizar la tecnologa ATM para implementar LAN virtuales y simular el comportamiento de entorno compartido de las redes locales, como por ejemplo Ethernet. Los clientes de LAN emulation se pueden implementar en un ordenador conectado directamente a la red ATM; el software de LANE se sita en el lugar que ocupara el software de nivel MAC como en Ethernet, como podemos ver en la figura lateral. Los elementos LANE ms sobresalientes (siendo todos ellos entidades software que pueden estar en una mquina especfica dedicada a este fin y conectada a la red ATM, o en uno de los conmutadores ATM de la red) son: LEC: Dispositivo cliente de LANE. LECS: Servidor de configuracin LANE. LES: Servidor de direcciones ATM. Cuando un LEC se conecta con otro LEC del cual solo conoce la direccin MAC, pregunta al LES qu direccin ATM le corresponde y cuando ya la conoce, crea el circuito virtual para transferirle los datos. BUS: Servidor de difusin y direcciones desconocidas. Cada LEC crea un VCC punto a punto contra el BUS y ste crea un VCC multipunto contra todos los LEC. Cuando un LEC quiere transmitir una trama a una direccin desconocida o a una direccin de difusin la enva al BUS y ste la retransmite a todos con este VCC multipunto. MpoA: Multiprotocolo sobre ATM tiene como objetivo conseguir la comunicacin directa entre estaciones de nivel 3 utilizando cualquier protocolo de nivel 3 (IP, Appletalk) y sin pasar por encaminadotes. Es decir, podemos conseguir la comunicacin directa entre mquinas de diferentes redes sin pasar por ningn encaminador, haciendo que ste ltimo no se convierte en un cuello de botella si el trfico es elevado. El proceso es sencillo, en el momento en que una estacin de una ELAN quiere establecer comunicacin con una estacin de otra ELAN, se crearn dos circuitos virtuales (desde el origen hasta el encaminador y desde el encaminador hasta el destino). El servidor de MPLA situado en el encaminador detecta un flujo de informacin entre el origen y el destino que si se mantiene ms de un cierto perodo de tiempo preestablecido, provocar que se establezca un circuito virtual directo entre ellos y que se redirija el trfico que los LEC enviaban hacia el encaminador. IPoA: IP sobre ATM. Su utilidad principal es tablecer conexiones WAN entre encaminadotes IP sobre una red troncal ATM, con los encapsulamientos que podemos observar en la figura lateral.

Tipos de encapsulamiento IPoA

Diseo de redes de computadores 19

TEMA 5 ADSL

Tema 5 ADSL 1. Tecnologas de acceso RTC, RDSI y ADSL 2. Tecnologa ADSL 3. Arquitectura de red 4. Arquitectura de protocolos: ATM sobre ADSL 5. Configuraciones ADSL

1. TECNOLOGAS DE ACCESO RTC, RDSI Y ADSL La tecnologa DSL utiliza el par de cobre de las lneas telefnicas junto con dos mdems (uno en el lado del usuario y otro en el del proveedor del servicio) para proporcionar un servicio de datos de alta velocidad a sus usuarios. Gracias al uso del par normal de cobre no hay que hacer grandes cambios para que se pueda ofrecer banda ancha a la mayora de usuarios de telefona fija; llegando a ofrecer hasta 2.048 kbps de velocidad en comparacin con los 128 que ofrece el RDSI o los 56 que puede llegar a ofertar la red de telefona bsica; adems de que en estos dos ltimos casos el coste para el usuario es por tiempo de conexin, mientras que con ADSL hay tarifa plana.

2. TECNOLOGA ADSL La tecnologa ADSL consiste en explotar hasta el lmite las capacidades de los pares de cobre domstico para la transmisin de datos digitales. Dado que actualmente gran parte del trfico de Internet consiste en la bajada de informacin desde los servidores hacia el cliente, la informacin viaja mayoritariamente en este sentido, y esto est especialmente indicado en el ADSL que por su asimetra puede ofrecer un mayor ancho de banda a esta labor, en detrimento de la subida de informacin. Para conseguirlo sobre el par de cobre se utiliza DMT, una nueva tecnologa de modulacin que multiplexa numerosos canales con ancho de banda telefnica. Operan en frecuencias desde los 25 KHz hasta los 1100 KHz (la seal del telfono no interfiera porque oscila entre 300 y 3400 Hz). DTM consiste en mltiples portadoras multiplexadas en frecuencia, ocupando 4 KHz cada una ms el margen entre portadoras queda en 4,3125, por lo que en la frecuencia en la que opera el ADSL tenemos 249 subportadoras disponibles. Como las subportadoras se agrupan para formar el canal de subida y el de bajada se pueden usar dos tcnicas distintas para separar correctamente estos canales: Multiplexacin FDM: Establece la restriccin de que los espectros de subida y de bajada no deben coincidir nunca, lo cual reduce el ancho de banda disponible. Cancelacin de eco: Ambos espectros de bajada y subida coinciden en parte en el mismo margen de frecuencias, por lo que se necesitan equipos canceladores de eco para separar las dos seales, pero obtenemos mayor ancho de banda.

La nica desventaja tecnolgica de los pares de cobre en ADSL es la atenuacin por distancia, por lo que el ancho de banda disponible depende totalmente de la longitud del bucle de abonado (aunque la presencia de ruido tambin puede afectar a la velocidad de transmisin total). Hasta una distancia de 2,6 kms de la central incluso en presencia de ruido (peor caso) se obtiene un caudal de 2 Mbps en sentido descendente y 0,9 en ascendente; por lo que los operadores ofrecen un servicio mximo de 2 Mbps, aunque en algunos casos de buena recepcin se pueda llegar hasta los 8.

3. ARQUITECTURA DE RED ADSL es slo una solucin de acceso a una red de telecomunicaciones, y no una solucin de conectividad extremo a extremo; por lo que deberemos usar tecnologas de red posteriores para conectar a Internet mediante ADSL.

20 Diseo de redes de computadores

La conexin a Internet con ADSL se puede dividir en 3 tramos: Tramo de usuario: Comprendido desde el PC del usuario hasta el punto de salida de la conexin telefnica del edificio. En este tramo la comunicacin se hace de manera asimtrica: se utiliza un ancho de banda distinto para cada sentido, lo cual comporta emplear mdems diferentes en cada lado (ATU-R). Adems debemos contar con un separador (splitter) que separe la seal de telefona del ADSL y adems que evite interferencias por las subportadores de ADSL ms cercanas a la seal telefnica. Tramo del proveedor de acceso: Corresponde a la conexin desde la parte pblica del bucle de abonado hasta la conexin a Internet del proveedor de acceso. Cabe destacar el mdem ATU-C para cada abonado, que hoy da se sustituye por DSLAM (chasis instalado en la central del operador con slots para mltiples ATU-C). Tramo del proveedor de servicios: Que corresponde a la red en la que se ubican los servidores a los cuales tenemos acceso. Los elementos ms destacados en este tramo son los encaminadotes y los switches ATM.

4. ARQUITECTURA DE PROTOCOLOS: ATM SOBRE ADSL

Diseo de redes de computadores 21

Como la tecnologa ADSL es de nivel fsico, necesita tecnologas de niveles de enlace y red para conseguir dar servicio de conectividad extremo a extremo. El protocolo de nivel de red por excelencia es IP pero para transportarlo se requiere un protocolo de nivel de enlace, que se ha decidido que sea ATM, con lo cual el usuario se beneficia del gran control de calidad de servicio (QoS) que el operador puede ofrecer, tambin nos ofrece transparencia de protocolo y un ancho de banda escalable. La figura de la pgina anterior muestra la arquitectura de protocolos extremo a extremo utilizada entre el acceso ADSL del usuario y el proveedor de servicios; hay que remarcar que en el tramo entre el usuario y el proveedor de acceso se utiliza ATM sobre ADSL y en el tramo entre el proveedor de acceso y el de servicios se utiliza ATM sobre SONET o SDH.

5. CONFIGURACIONES ADSL
Configuracin monousuario con mdem ADSL Configuracin multiusuario con mdem-router ADSL Configuracin multiusuario con mdem-router ADSL y cortafuego

El principal parmetro de una conexin ADSL es el ancho de banda que nos ofrezca el proveedor (de donde se derivar el precio de la misma); a partir de ah existen 3 configuraciones para la instalacin de nuestro mdem o router ADSL: Configuracin monousuario con mdem ADSL: Es la conexin ms utilizada en el mbito domstico porque es la que representa menos coste para el usuario. El ordenador del usuario est conectado directamente al mdem ADSL que lo conecta a Internet. Configuracin multiusuario con mdem-router ADSL: Es ms flexible y segura que la anterior (que nos deja al descubierto y visibles en Internet). El router incorpora el mdem ADSL y por otra tiene una conexin ethernet que permite conectarlo a un concentrador o conmutador ethernet. Configuracin multiusuario con mdem-router ADSL y cortafuego: Los cortafuegos forman parte de un proyecto completo de seguridad y son indispensables cuando hablamos de conexiones permanentes a Internet como el ADSL.

22 Diseo de redes de computadores

TEMA 6 MPLS: MULTIPROTOCOL LABEL SWITCHING

1. MPLS: ALTERNATIVA A IP SOBRE ATM A causa del crecimiento y expansin de las redes que utilizaban el protocolo IP como protocolo de nivel de red, stas redes se potenciaron con el despliegue de redes ATM. As pues se potenci la integracin de los niveles 2 y 3 mediante el modelo de red IPoA. La red troncal ATM se presenta como una nube central rodeado por encaminadotes IP.

Tema 6 MPLS: Multiprotocol label switching 1. MPLS: alternativa a IP sobre ATM 2. Tecnologa MPLS

2. TECNOLOGA MPLS Los objetivos para MPLS que se plantearon en el momento de su definicin es que debera poder aprovechar cualquier tecnologa de transporte existente y funcionar en la misma; debera soportar el envi de paquetes uni y multicast; deba ser compatible con los procedimientos de operacin, administracin y mantenimiento de las redes IP actuales. As se construy MPLS, un estndar que integra y relaciona las funcionalidades de control (direccionamiento) y envo (conmutacin) que hasta el momento se han implementado mediante protocolos independientes: los niveles 2 y 3. Tiene MPLS dos bloques funcionales: El bloque de control: Responsable de crear y mantener la tabla de etiquetas con el resto del conjunto de conmutadores MPLS. Se crea tambin la tabla de direccionamiento IP correspondiente, pero reutiliza para hacer eficazmente el intercambio de etiquetas con otros nodos y no para reenviar la informacin. El bloque de envo: Utiliza la base de datos de etiquetas de envo para hacer el reenvo de los paquetes de datos entrantes marcados con las etiquetas correspondientes, y se puede hacer mediante cualquiera de las tecnologas que ya existen: ATM, frame relay, lneas punto a punto, LAN, etc.

Para aprovechar las caractersticas de los distintos protocolos, si el protocolo de transporte de datos (nivel 2) ya tiene campos para identificar las etiquetas, se utilizan stos. En cambio, si la tecnologa de nivel 2 no dispone de ellas, habr que aadirle una cabecera genrica MPLS que contiene un campo especfico para la etiqueta.

Jaume Abella i Fuentes, Guiomar Corral i Torruella, Guiomar Corral i Torruella Febrero 2006

Diseo de redes de computadores

Texto elaborado a partir de:

Redes
TEMA 1 TCP/IP: LOS PROTOCOLOS DE LA RED INTERNET

Tema 1 TCP/IP: Los protocolos de la red Internet 1. Estructura de protocolos en Internet 2. Redes de acceso a Internet 3. El IP 4. El ARP 5. El ICMP 6. Protocolos de nivel de transporte 7. El UDP 8. El TCP

1. ESTRUCTURA DE PROTOCOLOS EN INTERNET El modelo de red Internet consta slo de 4 partes o niveles: Todo lo que hay por debajo del IP, el IP, el TCP y lo que hay por encima del TCP: Nivel de red: Est formado por una red LAN y constituye todo lo que hay por debajo del IP es decir, el nivel de red fsica o simplemente nivel de red. Nivel IP: O nivel Internet, confiere unidad a todos los miembros de la red e independientemente de que la conexin sea por ADSL o RDSI, permite que todos los equipos se puedan interconectar. Nivel TCP: O nivel de transporte, confiere fiabilidad a la red, lleva a cabo un control de flujo y errores y solo se implementa por los equipos conectados a la red y no por redireccionadores o routers. Nivel de aplicacin: Engloba todo lo que hay por encima del TCP y corresponde a las aplicaciones que utilizan Internet: correo electrnico, www, ftp En cada uno de los niveles de red expuestos anteriormente encontramos protocolos distintos que podemos observar en la siguiente figura:

Modelo de red

El protocolo TCP, va sobre otro protocolo, el IP, y ste ltimo a su vez, va sobre Ethernet. Todo este encapsulamiento funciona con estructuras fundamentales que genricamente se conocen como PDU (protocol data units) pero en cada nivel tienen nombres diferentes para designar una misma funcin. En el nivel ms bajo, en Ethernet, se denominan tramas, al ascender en IP se denominan paquetes y en TCP se denominan segmentos. La consecuencia de todos estos niveles es que cuando el nivel superior quiere transmitir cierta informacin, se provoca una cascada de PDU que va descendiendo hasta el nivel inferior. As para transmitir 1 byte de informacin, ste se encapsula en un segmento TCP con 20 bytes agregados de cabecera. Al bajar al nivel IP se encapsula en un paquete con otros 20 bytes de cabecera, y finalmente, en el nivel de red se encapsula con otros 8 bytes de cabecera. Como resultado para transmitir 1 byte de informacin, debemos acabar enviando una cadena de 49 bytes.

2 Redes

2. REDES DE ACCESO A INTERNET Los tres modelos de acceso que vamos a estudiar son el acceso telefnico (ms utilizado en hogares), el acceso ADSL (empresas y hogares) y el acceso Ethernet. 2.1. El acceso telefnico El PPP es el protocolo de acceso telefnico, y tiene una trama como la que se ve en la siguiente figura:
8 bits Flag 8 bits Direccin 8 bits Control 16 bits Tipo LCP Prto. Red Paquete NCP Max 200-250 bytes Datos Datos LCP Datagrama IP Datos NCP 16 bits CRC 8 bits Flag

Los campos flag, direccin y control estn fijados en valores determinados. El campo Tipo define la multiplexacin de diferentes protocolos que pueden ser: LCP: Test de enlace y gestin del mismo. Protocolos de red: Encapsulan paquetes de nivel superior, como puede ser IP. NCP: Permite que uno de los terminales asigne la direccin de Internet al otro (redireccionador, mscara). La pirmide PDU que vimos en el punto anterior provoca muchas ineficacias en el transporte, ineficacias que se dejan notar especialmente en protocolos como Telnet (en tiempo real) y para evitar este problema se utiliza la compresin de cabeceras de Van Jacobson que mejora considerablemente este problema eliminando campos intiles en la mayora de las conexiones. La MTU es la longitud mxima de transmisin que, en principio, no tienen ningn lmite y las podramos hacer tan largas como la probabilidad de error nos permite (es decir, muy larga), pero el confort de conexin s se resentir; se ha lelgado al acuerdo que el usuario debe recibir una reaccin a sus acciones en una dcima de segundo como mximo, dado que retrasos superiores provocan cansancio y dan la sensacin de poca velocidad en la mquina. Si estamos utilizando un protocolo como Telnet a la par que otro como FTP o web que tienen paquetes ms largos, y los nuestros en tiempo real (telnet) deben esperar en la cola de espera a los dems, ralentizamos exageradamente a transmisin, por ello se establece un lmite mximo del tamao del paquete que puede ser enviado con cualquier protocolo, y en conexiones PPP la MTU est entre 250 y 500 bytes. 2.2. Acceso ADSL El ADSL ofrece ms ventajas que la lnea telefnica convencional, dado que deja libre la lnea para llamadas mientras se est conectado a Internet; para ello se realiza una divisin del espectro de frecuencias que se puede recibir por el par de hilos telefnicos, hasta 4 kHz (la voz que puede alcanzar el odo humano) y a partir de aqu el espectro de codificacin del ADSL, y se pueden alcanzar velocidades de hasta 1,92 Mbps de entrada y 15,36 Mbps de salida; aunque es difcil alcanzar este lmite mximo y las operadores solo ofrecen hasta 8 Mbps en la mejor conexin ADSL.

Redes 3

2.3. Acceso LAN: El protocolo Ethernet La simplicidad de este protocolo y no sus prestaciones, ha hecho que sea el ms utilizado en redes de rea local, desde que DEC, Intel y Xerox establecieron un estndar. Hay que saber que en las redes de rea local lo que una estacin transmite es recibido por todas las dems, pero una estacin en concreto sabe cuando una trama va destinada a ella porque lee todas las que le llegan y comprueba la direccin de destino, lgicamente rechaza todas las que no vengan a ella (aunque se puede configurar toda tarjeta en modo promiscuo, escuchando todas las informaciones que pasen por ella, aunque no sea su direccin de destino).
64 bits Prembulo 48 bits @destino 48 bits 2origen 16 bits Tipo Entre 46 y 1500 bytes Datos 32 bits CRC

Los campos que forman la trama Ethernet son: Prembulo: Formado por 64 bits, alternativamente 0 y 1 y los dos ltimos son 11. Obviaremos su presencia en el resto del temario pues solo indica el inicio de la trama. Direccin de origen: Lleva la direccin fsica o direccin MAC del transmisor de la trama. Sobre papel, las direcciones LAN se escriben en hexadecimal, separando los bytes con dos puntos y escribiendo primero el byte menos significativo, por ejemplo: 08:00:00:10:97:00. Direccin de destino: Direccin MAC de destino. Tipo: Indica el tipo de contenido del campo de datos que lleva la trama. Datos: La longitud debe ser mltiplo de 8 bits, es decir Ethernet transmite la informacin en bytes; la longitud mxima, es decir, su MTU es de 1500 bytes; y adems el campo de datos debe tener como mnimo 46 bytes de longitud. CRC: Es el cdigo de redundancia cclica para la deteccin de errores y abarca toda la trama a excepcin del prembulo.

3. EL IP IP y TCP son un par de protocolos bien compenetrados. El IP es un protocolo de interconexin de red orientado a datagrama por lo que no es capaz de recuperar tramas perdidas ni de garantizar que las tramas se entregarn en el orden correcto ni que el ritmo de recepcin sea el adecuado para que el destinatario pueda procesar convenientemente los datos. El IP es del tipo best effort o con la mejor intencin; para subsanar estas deficiencias del IP tenemos al TCP. Las Direcciones IP Estas direcciones son nicas para cada mquina, aunque para ser ms precisos, cada direccin es nica para cada una de las interfaces de red IP de cada mquina, as si una mquina dispone de ms de una interfaz de red, necesitar una direccin IP para cada una. Las direcciones IP tienen una longitud de 32 bits, y se suelen escribir los 4 bytes que lo componen en decimal separados por puntos, por ejemplo 147.83.153.100. Para conseguir que no haya ninguna direccin repetida, Internetp dispone de una organizacin denominada InterNIC que se dedica a esta tarea. La mscara de red se utiliza para poder gestionar un conjunto de direcciones internamente. La mscara de red nos permite esta flexibilidad, a travs de 32 bits de mscara podemos saber si el destino de un paquete se encuentra dentro de la misma red de rea local que el origen o si por el contrario, se encuentra en una LAN remota y por tanto debe delegar su transmisin a algn equipo de su misma LAN. Todas las estaciones de una misma red de rea local deben utilizar el mismo identificador de red y es preciso que todas las estaciones posean la misma mscara. As, si tenemos dos estaciones 147.83.153.100 y

4 Redes

147.83.153.200 podemos deducir que estn interconectadas directamente, si la mscara de su red es 255.255.255.0. Una notacin alternativa es proporcionar el nmero de bits 1 de la mscara, as pues 255.255.255.0 es una mscara de 24 bits y 255.255.255.128 es de 15 bits; y se notara as: 147.83.153.100/24 Existen direcciones de propsito especial como son: Direcciones de red: Se expresan con la direccin que tendra cualquier estacin suya y con los bits del identificador de estacin a 0. Poe ejemplo la red en que se encuentra la estacin 147.83.153.100/24 es la 147.83.153.0/24. Direccin 127.0.0.1: Loopback es una direccin no vlida para los paquetes IP y lo utiliza el software de red para transmitir paquetes a la misma mquina local. Direccin 255.255.255.255 (broadcast): Solo es vlida como direccin de destino de un paquete y sirve para enviar paquetes a todas las estaciones localizadas dentro de la misma LAN que la mquina de origen.

El formato del paquete IP


Longitud de cabecera 4 bits Longitud total del paquete 16 bits Posicin de este fragmento 13 bits Tiempo de vida TTL 8 bits

Versin 4 bits

Tipo de servicio

Identificacin del paquete 16 bits

Indicadores 3 bits

Protocolo 8 bits

Checksum 16 bits

@origen 32 bits

@destino 32 bits

Opciones <=40 bits

Versin: Para la versin actual IPv4 siempre vale cuatro (0100). Longitud de la cabecera: El nmero de bytes de la cabecera siempre debe ser mltilplo de 4, asimismo la longitud de la cabecera est limitada a 60 bytes puesto que 15 es el mximo que se puede expresar con 4 dgitos binarios. Tipo de servicio: Contiene a su vez varios subcampos aunque raramente se implementa. Longitud total del paquete: Como este campo es de 16 bits, un paquete IP no puede tener ms de 65.535 bytes. Identificacin del paquete: Identificador distinto para cada paquete Indicadores y posicin de este fragmento: Permiten gestionar la fragmentacin de paquetes. Se divide en DF, + y un bit aadido. Recordemos que existe la MTU de la interfaz de red que restringe el tamao mximo del paquete segn el protocolo utilizado que se puede enviar. Si mandamos un paquete a una red con MTU inferior al tamao de ese paquete, debemos fragmentarlo y los nuevos fragmentos tienen caractersticas comunes: tienen el mismo identificador de paquete en las cabeceras IP, indican en el campo Posicin de este fragmento (lo veremos despus) el primer byte de datos del fragmento dentro del paquete original. El bit + del campo indicadores es 1 en todos los fragmentos a excepcin del ltimo, por lo que se le suele denominar a este campo hay ms?. El resto de los campos de la cabecera se copia ntegramente excepto claro est el indicador de longitud del paquete y el checksum que debe calcularse de nuevo. Como el direccionador de Internet hace el trabajo mnimo, el responsable de recomponer todos los fragmentos es nicamente la estacin de destino. Cuando le llega un paquete fragmentado reserva memoria suficiente (65536 bytes) para tratarlo y pone un temporizador en marcha dado que no sabe la longitud completa de lo que ha de llegar. Si pasado el tiempo no llegan todos los fragmentos se descarta todo lo recibido y el nivel TCP (el IP no es capaz) es el responsable de pedir una retransmisin nueva cuando sea posible. Tiempo de vida o TTL: Indica el nmero mximo de direccionadores que pueden cruzar el paquete. Y sirve para evitar que un paquete pueda quedar dando vueltas indefinidamente dentro de la red en caso de que haya algn problema al entregarlo. Cada direccionador disminuye el campo en 1 y cuando

Redes 5

llega a 1 el siguiente direccionador lo elimina y envia al originario del mensaje un error. Protocolo: Identifica el tipo de protocolo que transporta el paquete. Checksum: Realiza el control de errores en la cabecera para evitar posibles errores en su contenido. Aunque a decir verdad tampoco es demasiado fiable, es decir, el algoritmo es fcil y rpido de calcular (suma aritmtica de los bytes de la cabecera agrupados de dos en dos), pero por ello mismo poco fiable. Direccin de origen IP: el que enva el paquete. Direccin de destino IP: El destinatario del mismo. Opciones: Hay varios servicios que se pueden implementar aqu, aunque generalmente no se utilizan

Direccionamiento y direccionadores Los direccionadores deben interconectar dos o ms subredes IP y encargarse de direccional el trfico destinado a estaciones remotas. Cada direccionador no decide la ruta entera de un paquete de datos, sino solo el trozo de ruta en que participa y debemos saber que entre origen y destino de un paquete tenemos un nmero variable de saltos y por tanto de direccionadores. Esto plantea varios problemas: Cuando se salta entre varias redes, hay que averiguar la correspondencia entre direcciones IP y MAC, aunque el paquete no tenga la direccin MAC el mapeado IP-MAC realizado por el protocolo ARP es capaz de solventar este problema; adems tambin el direccionador debe decidir en cada momento cual es el siguiente direccionador a utilizar. Para esto se utilizan las tablas de direccionamiento que disponen de informacin limitada, pero suficiente en cada salto, para permitir la conexin de todas las subredes que componen Internet. Todo equipo conectado a una red IP necesita una tabla de direccionamiento. Vamos a distinguir a continuacin dos tablas de direccionamiento, para una estacin con una nica interfaz o con ms de una:
Tabla de direccionamiento de la estacin con una nica interfaz Direccin Mscara Direccionador Interfaz 147.83.153.103 255.255.255.255 127.0.0.1 Loopback 127.0.0.0 255.0.0.0 127.0.0.1 Loopback 147.83.153.0 255.255.255.0 147.83.153.103 Ether0 255.255.255.255 255.255.255.255 147.83.153.103 Ether0 0.0.0.0 0.0.0.0 147.83.153.5 Ether0

1 2 3 4 5

En la tabla anterior tenemos la tabla de direccionamiento de una estacin conectada a una lan con direccin 147.83.153.103/24 con una nica tarjeta ethernet. La primera y segunda entradas permiten transmitir paquetes IP a las direcciones 147.83.153.103 y a todas las direcciones que empiecen por 127. En ambos casos se envan a la interfaz visual del propio ordenador local, y ninguno de los paquetes que se direccione con alguna de estas dos reglas saldr a la red. La tercera entrada sera adoptada por todos los paquetes destinados a la red local. La cuarta entrada nos indican que los broadcasts IP se restringirn a la red local, por tanto tiene una importancia relativa. La quinta entrada permite a la estacin comunicarse con estaciones remotas. Notemos que la mscara no tiene ningn bit en 1 y ser la ruta por defecto. El direccionador establecido queda identificado en la tabla por 147.83.153.5.

6 Redes

Toda la informacin anterior se calcula a partir de la direccin local (en el ejemplo anterior 147.83.153.103), la mscara de la LAN (255.255.255.0) y la direccin del direccionador (147.83.153.5). En un direccionador, las tablas de direccionamiento lgicamente tienen ms entradas que las de una estacin, aunque el funcionamiento es el mismo.

4. EL ARP Es el encargado de llevar a cabo la resolucin automtica del mapeado entre direcciones MAC. Es decir, cuando efectuamos la transmisin de un paquete entre dos direcciones LAN, indicamos nicamente la IP, entonces el sistema identifica esta direccin IP, busca en la cach ARP la direccin MAC a la que corresponde dicha IP y enva el paquete. Obviamente no todas las direcciones se encuentran en la cach ARP, primero porque no mandamos constantemente paquetes a todas las IP-MAC posibles, pero adems las direcciones que se encuentran en la cach caducan en un espacio de tiempo breve, entre uno o varios minutos. Cuando se desconoce la MAC de destino y no se encuentra en la cach ARP, se enva una peticin ARP que transporta la direccin IP que se quiere conocer (con una trama broadcast FF: FF: FF: FF: FF: FF; todas las estaciones de la LAN procesan la trama pero solo la poseedora de la IP pedida contesta; entonces se produce la respuesta ARP comunicando la direccin MAC directamente a quien la ha pedido. Los formatos de estas peticiones y respuestas son irrelevantes.

5. EL ICMP El Internet Control Message Protocol se puede definir como un protocolo o como una herramienta que utiliza el protocolo IP para notificar errores. Los mensajes ICMP viajan dentro de paquetes IP (no como los ARP) y existen 13 tipos de mensajes ICMP como peticin de eco, respuesta de eco, redireccionamiento, peticin de hora, el tiempo de vida ha expirado, etc El programa ping permite descubrir si una estacin se encuentra activa o no, simplemente efectuando ping <direccin IP de destino>. La instruccin Ping enva un menaje ICMP de tipo 8 (peticin de eco) con el destino indicado; el receptor debe responder con un eco (ICMP tipo 0) lo cual indica que la estacin remota est activa).
Ping ping 66.194.152.210 Haciendo ping a 66.194.152.210 con 32 bytes de datos: Respuesta Respuesta Respuesta Respuesta desde desde desde desde 66.194.152.210: 66.194.152.210: 66.194.152.210: 66.194.152.210: bytes=32 bytes=32 bytes=32 bytes=32 tiempo=2800ms tiempo=3146ms tiempo=3221ms tiempo=2564ms TTL=47 TTL=47 TTL=47 TTL=47

Estadsticas de ping para 66.194.152.210: Paquetes: enviados = 4, recibidos = 4, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: Mnimo = 2564ms, Mximo = 3221ms, Media = 2932ms

El programa traceroute permite encontrar las rutas entre un origen y un destino, utiliza un mecanismo bastante ingenioso: Recordemos que cuando un direccionador recibe un paquete aparte de las funciones que deba llevar a cabo, reduce en una unidad el valor del campo TTL (tiempo de vida) y en caso de que el resultado sea 0 el paquete debe eliminarse, pero adems se enva una notificacin de la misma al originador del paquete. Pues bien, el programa traceroute simplemente debe enviar paquetes al destino con TTL secuencialmente ascendentes, es decir, comienza con TTL=1 que ser rechazado por el primer redireccionador, el TTL=2 superar este primero pero ser rechazado por el segundo, etc. hasta llegar a su fin.

Redes 7

tracert 66.194.152.210 Traza a la direccin 66-194-152-210.gen.twtelecom.net [66.194.152.210] sobre un mximo de 30 saltos: 1 <1 ms <1 ms <1 ms 129.Red-213-97-197.pooles.rima-tde.net [213.97.197.129] 2 1533 ms 1636 ms 1821 ms 129.Red-213-97-197.pooles.rima-tde.net [213.97.197.129] 3 2036 ms 2231 ms 2154 ms 19.Red-80-58-11.pooles.rima-tde.net [80.58.11.19] 4 2093 ms 2172 ms 1970 ms 37.Red-80-58-76.pooles.rima-tde.net [80.58.76.37] 5 2188 ms 1696 ms 1401 ms 17.Red-80-58-72.pooles.rima-tde.net [80.58.72.17] 6 2186 ms 2215 ms 1988 ms 242.Red-80-58-73.pooles.rima-tde.net [80.58.73.242] 7 2031 ms 1677 ms 1969 ms 114.Red-80-58-72.pooles.rima-tde.net [80.58.72.114] 8 1689 ms 1787 ms 1512 ms GE4-1-0-0-grtmadde1.red.telefonica-wholesale.net [213.140.50.149] 9 1294 ms 1590 ms 1364 ms So5-1-0-0-grtmadpe1.red.telefonica-wholesale.net [213.140.36.113] 10 1797 ms 1851 ms 1701 ms So7-0-0-0-grtparix1.red.telefonica-wholesale.net [213.140.36.146] 11 2309 ms 1844 ms 2446 ms P14-0-grtwaseq1.red.telefonica-wholesale.net [213.140.37.190] 12 2303 ms 2074 ms 2166 ms timewarner-2-1-grtwaseq1.red.telefonica-wholesale.net [213.140.39.246] 13 2020 ms 1507 ms 1655 ms 66.192.255.228 14 1423 ms 1269 ms 1534 ms core-02-so-0-0-0-0.atln.twtelecom.net [66.192.255.23] 15 1506 ms 1229 ms 1335 ms 66.192.243.15 16 * 1492 ms 1588 ms dist-01-ge-2-3-0-0.mtld.twtelecom.net [66.192.243.129] 17 1891 ms 1805 ms 1562 ms hagg-01-ge-0-3-0-0.mtld.twtelecom.net [66.192.243.146] 18 1558 ms 2216 ms 1923 ms 66.162.30.58 19 1260 ms 1195 ms 1422 ms 66-194-152-210.gen.twtelecom.net [66.194.152.210] Traza completa.

6. PROTOCOLOS DEL NIVEL DE TRANSPORTE


Modelo de red

El objetivo principal del nivel de transporte es actuar de interfaz entre los niveles orientados a la aplicacin y los niveles orientados a la red de jerarqua de protocolos. El nivel de transporte oculta a los niveles altos del sistema el tipo de tecnologa al que est conectado el Terminal. Por encima del TCP e IP tenemos el puerto, y por debajo la direccin IP. Las aplicaciones que podemos encontrar son muy variadas y necesitan un protocolo de nivel de aplicacin como puede ser FTP, http, SMTP, SNMP, etc. Por tanto, cuando se establece la comunicacin no slo es esencial conocer la IP del Terminal o servidor de destino, sino tambin el puerto que identifica la aplicacin de destino. As se utilizan puertos como: 7 para el servidor de eco. 20 y 21 para el FTP de datos y control y POP3 80 para http (Internet). Las comunicaciones se realizan en forma cliente/servidor. El cliente, como hemos dicho antes, necesita conocer no solo la direccin IP de la mquina servidora para poder comunicar con ella, sino tambin el puerto de aplicacin con que desea comunicarse con el cliente: ftp, http, correo electrnico

Jerarqua de protocolos TCP/IP

7. EL UDP El UDP es un protocolo no orientado a la conexin, de manera que no proporciona ningn tipo de control de errores, como vemos en la figura lateral, por debajo utiliza el IP para su transmisin. Recordemos que hablamos de datagramas, y, en este caso tambin recordemos que no garantiza la fiabilidad, pues el UDP utiliza el protocolo best-effort, es decir, hace lo posible por transferir los datagramas, pero no garantiza su entrega. Se compone la cabecera del paquete de:

8 Redes

Puertos de origen y destino, cada uno con 16 bits. Campo Longitud: otros 16 bits. Checksum: otros 16 bits, aunque el clculo del checksum al igual que en el protocolo IP no es demasiado fiable.

El UDP es til para entregar informacin en modo multicast o broadcast a un grupo de usuarios o todos los usuarios de la red sin esperar respuesta de ellos. En principio la ventaja que representa el UDP sobre el IP que en principio tambin podra hacer todo esto es que el UDP ofrece un servicio de multiplexacin a las aplicaciones que el IP no ofrece. 8. EL TCP El TCP a diferencia del UDP proporciona fiabilidad a la aplicacin, es decir, garantiza la entrega de toda la informacin en el mismo orden en que ha sido transmitida por la aplicacin de origen, sus principales caractersticas son: Transmisin libre de error: La informacin se transmite casi libre de errores, puesto que siempre puede haber algn error que se quede oculto. Garanta de entrega de la informacin y de la secuencia de la transmisin. Eliminacin de duplicados: Si se reciben copias a causa del mal funcionamiento de la red, el TCP las eliminar.

El TCP utiliza el concepto buffered transfer es decir, cuando se transfiere la informacin el TCP divide el flujo en trozos del tamao que ms le convenga, esperando si hay poca informacin a llenar un buffer completo para ser enviado o mandar la informacin sin que la memoria intermedia est completamente llena. El formato del segmento TCP es como sigue:
Puerto de destino 16 bits Longitud de la cabecera 4 bits

Puerto de origen 16 bits

Nmero de secuencia 32 bits

Nmero ACK 32 bits

Reservado 4 bits

Control 6 bits

Ventana 16 bits

Checksum 16 bits

Urgent Pointer 16 bits

Opciones TCP 32 bits

Los campos puerto de origen y destino identifican la aplicacin en el Terminal de origen y destino respectivamente. Nmero de secuencia identifica el primer byte del campo de datos, pues en el TCP no se numeran segmentos, sino bytes. El nmero ACK menos uno indica el ltimo byte reconocido. La longitud de cabecera indica eso mismo, puede ser de 20 bytes, pero si se utiliza el campo opciones, puede llegar a 60 bytes. El campo reservado lo est y se suelen utilizar ceros. El campo control est formado por 6 indicadores independientes: URG (urgente), ACK (si esta a 1 el campo nmero ACK tiene sentido), PSH (dice al receptor si est a 1 que enve todos los datos aunque la memoria intermedia no est completamente llena), RST (reset de la conexin), SYN (inicio y resincronizacin de la conexin) y FIN (fin de la transmisin). El campo ventana indica cuantos bytes componen la ventana de transmisin, en los protocolos de enlace el tamao de la ventana era constante, pero ahora un extremo TCP advierte al otro extremo de la cantidad de datos que est dispuesto a recibir en cada momento. El campo checksum, como siempre detecta errores. Urgent Pointer tiene sentido cuando URG est a 1 e indica que los datos que enva el origen son urgentes e identifica el ltimo byte del campo de datos que tambin lo es. Opciones TCP permite aadir campos a la cabecera para marcar el tiempo en que se transmiti el segmento, aumentar el tamao de la ventana, indicar el

Redes 9

tamao mximo del segmento MSS. Cuanto mayor sea el tamao MSS (tamao mximo del segmento) ms datos enviaremos y ms amortizaremos las cabeceras que enviemos, pero claro dependemos de la MTU local. Podemos antes de empezar la conexin preguntar cunto vale la MTU local y ajustar ese mismo valor para la MSS o fragmentar el MSS en caso de que la MTU sea menor. Establecimiento y cierre de la conexin
Establecimiento y cierre de la conexin

Para establecer una conexin se utiliza el protocolo 3way handshake, en el que hacen falta 3 segmentos TCP para iniciar la conexin. Veamos como se desarrolla la secuencia de comandos: Segmento de peticin de la conexin: El cliente TCP enva este segmento para iniciar la conexin, se conoce como segmento SYN porque tiene activado el bit SYN en el ampo control de la cabecera, el nmero de secuencia es elegido al azar. Segmento de confirmacin de la conexin: El servidor TCP responde con un segmento SYN que indica el nmero de secuencia inicial que utilizar y el ACK del segmento SYN es igual al ISN del cliente ms uno. Segmento de reconocimiento de la conexin: Se reconoce la conexin conteniendo el ISN del servidor ms 1; y a partir de aqu ya se inicia la conexin.
15:56:54.796091 argos.1023 > helios.login: S 3541904332: 3541904332 (0) win 31744 <mss 1460> 15:56:54.796091 helios.login > argos.1023: S 548133143: 548133143(0) ack 3541904333 win 8760 <mss 1460> 15:56:54.796091 argos.1023 > helios.login: . ack 548133144 <mss 1460>

En este ejemplo vemos como argos intenta conectarsea Helios eligiendo ISn 35..32, luego responde Helios devolvindole ese nmero ms 1 como ACK y diciendo que espera recibir mandar segmentos con tamao 1460 (igual que argos). Finalmente Argos responde con ack del helios ms uno. Esta conexin abierta se dice que es activa por parte del que enva el primer segmento, en este caso argos y pasiva del que la recibe. Para el cierre de la conexin normalmente se considera cierre activo el del cliente y pasivo el del servidor. Cuando se cierra la conexin el cliente enva un segmento TCP del tipo FIN con el nmero de secuencia correspondiente; el servidor enva una confirmacin de cierre por medio de un ACK con el nmero de secuencia recibido ms uno. El servidor enva un segmento TCP de tipo FIN con el nmero de secuencia correspondiente al cliente y este responde automticamente con el nmero ms uno.
15:57:01.616091 15:57:01.616091 15:57:01.616091 15:57:01.616091 helios.login > argos.1023: F 1417:1417 (0) ack 41 win 8760 argos.1023> helios.login: .ack 1418 win 31744 argos.1023> helios.login: F 41:41 (0) ack 58031744 helios.login > argos.1023: .ack 42 win 8760

Los estados por los que puede pasar una conexin tanto al abrirse, como al cerrarse, pueden observarse en la figura adjunta de la pgina siguiente. Transferencia de la informacin El TCP enva datos manteniendo un temporizador, cuando ste salta, el TCP empieza a transmitir. Cuando el TCP recibe un segmento de datos, enva un reconocimiento.

10 Redes

Si un segmento enviado es incorrecto (se sabe por el campo checksum) el TCP descarta ese segmento y enva un segmento con el mismo numero de ACK que reconoci correctamente la ltima vez. El transmisor ver un ACK duplicado e interpretar que no le han reconocido la informacin. Si los datos llegan desordenados (reconozcamos que por debajo tenemos el IP que no reconoce la informacin, nicamente la transporta), el TCP los reordena y los pasa correctamente a la aplicacin, si algunos aparecen repetidos, los descarta. Como el TCP posee una memoria limitada, se realiza un control de flujo mediante el campo ventana que estudiaremos posteriormente.
Estados por los que puede pasar una conexin

Hay dos tipos de informacin que se puede enviar: la transmisin de datos interactivos y la transmisin de un gran volumen de datos; Ambos, para aprovechar los recursos de la red, se tratan de forma distinta. En el caso de datos interactivos: Reconocimientos retrasados: Es habitual que el TCP no enva en este caso los reconocimientos ACK inmediatamente tras recibir los datos, sino que espera un tiempo a que haya datos que retransmitir en sentido contrario. Por ejemplo en la aplicacin Telnet es habitual que retransmitamos muy pocos datos, por ejemplo para pedir el contenido de todo un directorio; en este caso el TCP utiliza un temporizador de hasta 200 ms por si hay datos que transmitir antes de enviar el ACK. Algoritmo de Nagle: Cuando tenemos muy pocos datos que enviar, por ejemplo solo 1 byte, recordemos que le aadimos entre el TCP y el IP 40 bytes de cabecera, y esto es poco prctico. El algoritmo de Nagle se utiliza para que se puedan enviar segmentos pequeos sin que se haya reconocido; eso s solo se puede enviar uno a la red y esperar a que sea recibido para poder mandar el siguiente. Esto es til cuando el segmento debe atravesar WAN, pero si es una LAN no es necesario; e incluso se debe desinhibir para determinadas funciones como es el movimiento del ratn que genera segmentos de pocos bytes pero que deben mandarse inmediatamente.

Para los grandes volmenes de datos el tratamiento es diferente, se basa en la ventana deslizante donde la ventana de transmisin no es fija sino variable. La idea es que cada extremo TCP regula la cantidad de datos que el otro extremo puede transmitir, con esta finalidad cada extremo notifica al extremo opuesto cada vez que enva un segmento, la ventana que puede aceptar en ese momento y el par TCP se actualiza con esa informacin. Hemos de recordar que un reconocimiento reconoce posiciones de bytes en el flujo de datos sin tener en cuenta el segmento al que pertenecen. En la imagen lateral vemos una ventana de 7 bytes en total; se han reconocido hasta el byte 999 con lo cual se podra transmitir sin esperar confirmacin hasta el 1006; solo se ha transmitido hasta el 1003, si esto es reconocido la ventana se deslizara desde el 1004 hasta el 1010. La ventana puede variar: puede deslizarse a la derecha a medida que se van enviando y reconociendo datos, puede cerrarse si el lmite izquierdo alcanza el derecho (se cerrara el envo de datos), puede comprimirse cuando el lmite derecho se mueve hacia la izquierda o puede disminuir si el lmite izquierdo se desliza hacia la derecha (esto es menos

Redes 11

problemtico porque a pesar de que se pueden enviar menos datos en el prximo envo, todos los enviados han sido correctamente reconocidos).
Ejemplo de ventana deslizante

Temporizadores Los segmentos de datos, pero tambin los de reconocimiento se pueden perder durante la transmisin, por ello se hace necesario utilizar un temporizador de retransmisiones o RTO. Pero la cuestin estriba en qu tiempo hay que darle a este temporizador para considerarlo correcto. Si le damos el RTT que es el tiempo de ida y vuelta, es decir, desde que se enva un segmento hasta que ser recibe el ACK, puede ocurrir digo en este caso RTO=RTT que el siguiente envo por cualquier causa se retrase un milisegundo y ya salte el error. Para evitar estos problemas existen varios tipos de algoritmos que lo calculan: Algoritmo de retransmisin adaptativo: Se calcula el RTT a partir del RTT medio y del valor del ltimo RTT; el problema de este clculo es que no considera las posibles fluctuaciones. Algoritmo de Jacobson: Se sirve tanto de la media estimada del RTT como de la desviacin estndar estimada; mejora, en parte, el clculo del algoritmo anterior. Algoritmo de Karn: Hay que tener en cuenta que uno de los parmetros para calcular los algoritmos anteriores se basa en la medida del tiempo de ida y vuelta RTT, por tanto si el ACK que llega no es el esperado en la retransmisin se producen clculos incorrectos. Karn considera hacer clculos slo cuando el segmento no sea reconocido, duplicando entonces el valor del temporizador. Algoritmo slow start: Cuando el transmisor emite el mayor nmero de segmentos que le est permitido, pero en su viaje, estos segmentos tienen que atravesar equipos intermedios que se pueden congestionar por muchas razones, es normal que estos equipos descarten datagramas IP enteros; estos datagramas le vuelven al origen por la congestin intermedia y la congestin as aumenta. Este algoritmo permite que el transmisor incremente el nmero de segmentos que es preciso transmitir exponencialmente cada vez que recibe un reconocimiento. Comienza enviando un solo segmento y abrindose una ventana de congestin que se inicializa con el valor MSS mximo y cada vez que se recibe un ACK de reconocimiento, se incrementa en un segmento. Algoritmo congestion avoidance: Este algoritmo reduce la ventana de congestin a la mitad cada vez que se pierde un segmento y reduce la congestin en la red. Temporizador keepalive: Cuando una conexin TCp no dispone de datos para emitir, no se enva ningn tipo de informacin entre el cliente y el servidor pero la conexin puede estar abierta horas o das enteros si la aplicacin no se cierra. Normalmente, si no hay actividad durante dos horas, el servidor enva uno o varios segmentos de prueba al cliente y si no hay respuesta, cierra la conexin; si hay respuesta se vuelve a poner el temporizador a cero.

12 Redes

TEMA 2 PROGRAMACIN DE SOCKETS

1. QU SON LOS SOCKETS Un socket es un punto de acceso a los servicios de comunicacin en el mbito de transporte. Para ello, cada socket tiene asociada una direccin diferente que lo identifica y as se puede establecer una comunicacin con l, dentro del mbito de la misma mquina como en mbito mundial. Los sockets comenzaron con el inicio de la red Arpanet y, por ello, suelen estar muy unidos al sistema operativo Unix. Por ello algunas llamadas a sockets van directas al krnel del sistema y otras estn integradas en el lenguaje C. Actualmente otros lenguajes de programacin como Java hacen uso de los sockets. Como est muy unido al mundo Unix, se sigue su filosofa general de tratar los sockets como dispositivos y los mecanismos de entrada y salida como ficheros. Direcciones de Sockets Es fundamental como hemos dicho anteriormente conocer la direccin de un socket para poder establecer comunicacin con l. Existen dos tipos de nombres (direcciones) que se le pueden dar a un socket: El espacio de nombres de ficheros: Se utiliza para sockets que deben comunicar un proceso con otro del mismo sistema. En este caso el socket constituye un nombre de fichero y en este sentido, es similar al mecanismo de comunicacin mediante pipes que vimos en sistemas operativos 1, aunque las pipes solo podan leer por un lado y escribir por otro y, en los sockets, la comunicacin es bidireccional. El espacio de nombres de Internet: En este caso el nombre se compone del protocolo concreto que debe utilizarse, de la direccin del nodo de ned (direccin Internet de la mquina correspondiente por medio de los nmeros de 32 bits utilizados en el protocolo IP; recordemos que una mquina puede disponer de mltiples direcciones de Internet, pero cada direccin solo debe corresponder a una mquina) y tambin se compone del nmero de puerto, dicho nmero puede ser un valor comprendido entre 1 y 65535, aunque veremos que hay en el punto siguiente algunas restricciones. Socket servidor y socket cliente El socket que inicia la comunicacin, en realidad hace una peticin por lo que es el socket cliente, mientras que el que sirve la peticin es el socket servidor. La direccin de este socket servidor es muy importante y debe estar muy bien determinada, dado que los socket clientes las necesitarn para poder establkecer la conexin. Hemos dicho que existen 65535 puertos distintos, pero los 1024 primeros suelen estar reservados para servicios estndar como ftp, telnet, smtp, con lo que generalmente el socket servidor toma una direccin entre 1024 y 65535. El nmero de puerto del socket cliente suele ser irrelevante, tal es as que se suele dejar al sistema que seleccione uno automticamente, puesto que esta direccin solo la tiene que conocer el servidor para saber donde enviar la peticin. Estilos de comunicacin Existen dos estilos de comunicacin o tipos de socket que son: Estilo secuencia de bytes: Los datos son transmitidos de extremo a extremo como una corriente o flujo ordenado de bytes. Se denomina orientado a
Tema 2 Programacin de sockets 1. Qu son los sockets 2. Sockets con lenguaje C 3. Sockets con lenguaje Java

Redes 13

Comunicacin entre sockets

conexin puesto que cuando se hace utilizando el espacio de nombres de Internet, se corresponde con el protocolo TCP. Este estilo garantiza la llegada de todos los datos, sin prdidas, desordenaciones ni repeticiones. Estilo datagrama: Cada vez que el emisor escribe datos, se transmite un paquete individual o datagrama con dichos datos y cada vez que el destinatario quiere leer estos ltimos, recibe como mximo un datagrama. Como todos los datagramas tienen la direccin del socket al que van dirigidos, son independientes, y se pueden perder por el camino, desordenar, etc. Es un estilo no orientado a conexin que no garantiza la llegada de todos los datos, ni su orden, ni su unicidad. La ventaja es que requiere muchos menos recursos que la secuencia de bytes y se utilizan cuando no es indispensable la fiabilidad total en la recepcin de datos.

La comunicacin entre sockets se establece como vemos en la figura lateral dividiendo las operaciones que deben realizar los sockets clientes y los servidores

2. SOCKETS CON LENGUAJE C Vamos a estudiar a continuacin las operaciones comunes a servidores y clientes, luego las propias de los servidores y por ltimo las propias de los clientes. 2.1. Operaciones comunes a servidores y clientes Crear un Socket El prototipo de la llamada bsica para crear un socket est declarado en el fichero cabecera <sys/socket.h> y es
Int socket (int espacio, int estilo, int protocolo)

El primer parmetro, espacio, especifica el espacio de nombres o familia de protocolos correspondiente al socket y puede ser: PF_FILE: Espacio de nombres de ficheros. PF_UNIX: Versiones antiguas de PF_FILE. PF_INET: Protocolos de Internet El parmetro estilo indica el estilo de comunicacin y puede ser: SOCK_STREAM: Secuencia de bytes. SOCK_DGRAM: Datagrama. SOCK_RAW: Acceso directo a un nivel ms superior pero parecido al datagrama SOCK_SEQPACKET: Datagramas transferidos de manera fiable. Estos dos parmetros, el espacio y el estilo, limitan el valor del tercer parmetro protocolo, tal es as que si se deja a 0 puede ser porque para un estilo y espacio de nombres determinado solo exista un tipo de protocolo o porque as se deja por defecto el ms utilizado establecidos ya los dos primeros. El valor retornado por el socke es -1 si se ha producido un error y no se ha podido producir el socket o un nmero que estar asociado a un descriptor de fichero. Hay llamadas que permiten crear dos sockets de un plumazo y ya conectados:
Int socketpair (int espacio, int estilo, int protocolo, int vs[2])

14 Redes

En este caso, los 3 primeros parmetros actan igual que anteriormente y el ltimo es la direccin de un vector de enteros que disponga de al menos dos elementos. Si la llamada tiene xito retorna 0 y llena los dos primeros elementos del vector con los descriptores de los sockets creados. Estos sockets creados deben pertenecer necesariamente al mismo sistema y al mismo proceso, por lo que quiz inicialmente no parezca de mucha utilidad, pero si lo es en el caso de comunicaciones entre un proceso padre y uno hijo. Asignar direccin a un socket El fichero cabecera <sys/socket.h> proporciona la definicin del tipo sockaddr:
Struct sockaddr { Short int sa_family; Char sa_data []; };

El tipo sockaddr como vemos contiene los campos sa_family y sa_data. El primero de ellos indica el espacio de nombres o familia de protocolos y puede ser el formato de direcciones del espacio de nombres de ficheros (F_FILE y AF_UNIX) o el formato de direcciones del espacio de nombres de Internet (AF_INET y AF_UNSPEC). El campo sa_data por su parte, es un contenedor genrico de la direccin que se quiere representar. Si utilizamos el espacio de nombres de ficheros debemos especificar los parmetros sun_family (formato de la direccin) y sun_path (nombre del socket); si utilizamos el espacio de nombres Internet especificaremos sin:family (formato de direccin), sin_addr (direccin internet del servidor) y sin_port (puerto al que conectarse). Dicho todo esto la llamada para asignar una direccin a un socket posee el prototipo siguiente:
Int bind (int descr, const struct sockaddr *adr, size_t long_adr)

El parmetro descr es el descriptor del socket, adr es un puntero a la estructura que representa la direccin que debe asignarse y long_adr cuantos bytes ocupa esta estructura por si su longitud es variable. El valor retornado por la llamada bind es 0 si se ha podido asignar correctamente, -1 si se ha producido algn error, de entre los que destacan que el primer parmetro no es un descriptor o no es un descriptor vlido, no se puede asignar la direccin especificada desde este sistema, la direccin especificada ya est asignada a otro socket, etc. Enviar datos Para enviar datos podemos utilizar tres llamadas diferentes: La llamada write enva datos a un socket que sea orientado a conexin o si es no orientado, que tenga definida una direccin de destino por defecto.
Ssize_t write (int dexcr, const void *datos, size_t longitud);

Descr es un descriptor que puede ser un dispositivo, una pipe, un socket, un fichero datos es la direccin de la memoria donde se encuentran los datos que queremos escribir y longitud indica cuantos bytes queremos escribir. La llamada send es especfica de los socket:
Int send (int descr, const void *datos, size_t longitud, int flags)

Redes 15

Se diferencia de write en el ltimo parmetro, flags, que permite especificar ciertas opciones de transmisin como son envo de datos urgentes (admitido por el protocolo TCP) u otras. La ltima llamada que queda es sendto:
Int sendto (int descr, const void *datos, size_t longitud, int flags, const struct sockaddr *adr, size_t long_adr)

Se diferencia del primer send en que los dos parmetros adicionales permiten especificar a qu socket deben enviarse los datos por medio de un puntero a su direccin (adr) y el nmero de bytes que sta ltima ocupa (long_adr). Si el socket correspondiente es no orientado a conexin esta llamada enva el socket indicado por los parmetros adr y long:adr un datagrama con los datos especificados. En muchos sistemas estas 3 llamadas anteriores retornan cuando los datos se han copiado en el buffer de transmisin del socket, si el buffer est lleno, tendrn que esperar hasta que haya suficiente espacio disponible, por lo cual, un retorno sin error no implica necesariamente una recepcin correcta en el socket remoto. Recibir datos De forma anloga a enviar datos, al recibir contamos con 3 llamadas complementarias: La llamada read:
Ssize_t read (int descr, void *datos, size_t longitud);

Descr es el descriptor del socket, datos es un puntero a la zona de memoria en que deben dejarse los datos ledos y longitud es el nmero de bytes mximo que queremos leer. Se retorna el valor de bytes ledos, que puede ser menor al este ltimo parmetro si de momento no hay ms disponibles. La llamada recv es especfica de los socket para leer datos, y anlogamente a send, se conforma de:
Int recv (int descr, void *datos, size_t longitud, int flags);

Se diferencia igual que antes en el parmetro adicional flag, que puede servir para indicar el envo de datos urgentes. Cuando UNIX recibe esta llamada, normalmente la descarta, pero se puede capturar y definir procesos propios para conferir prioridad a los datos urgentes sobre los que no lo son. La llamada recvform lee datos e indica de dnde han venido, opera como sendto y se conforma de:
Int recvform (int descr, void *datos, size_t longitud, int flags, struct sockaddr *adr, size_t *long_adr);

La diferencia entre recv y recvform es que la ltima llena la estructura apuntada por el parmetro adr con la direccin del socket del que se han recibido los datos (salvo que este parmetro constituya un puntero nulo). Esperar disponibilidad de datos La llamada select en Unix permite esperar hasta que se puedan leer o escribir datos en algn descriptor de una lsita determinada. Esta llamada tambin es aplicable a los sockets y es muy til cuando un proceso debe recibir datos pro diferentes canales. El prototipo de la llamada select es:

16 Redes Int select (int n_descr, fd_set *d_lect, fd_set *d_escr, fd_set *d_excep, struct timeval *tiempo)

El tipo fd_set sirve para representar conjuntos de descriptors, struct timeval sirve para representar un intervalo de tiempo definido en segundos y/o microsegundos. La llamada select retorna en una de las 4 siguientes condiciones: Se puede llevar a cabo una lectura sin bloque, o porque hay datos preparados para ser leidos en alguno de los descriptores especificados en d_lect o porque hemos llegado al final de los datos. Se pueden escribir datos inmediatamente en alguno de los descriptores de la lista especificada en d_escr. Hay una situacin excepcional en alguno de los descriptores de la lista que se halla en d_excep. Ha transcurrido el tiempo especificado en el parmetro tiempo. Cerrar un socket Se utiliza para ello la llamada close:
Int close (int descr);

Sirve para cerrar un descriptor cuando ya no se va a trabajar ms en el mismo y as liberar los recursos que el sistema tiene ocupados en l. En general si se cierra un socket que utiliza un protocolo de transmisin fiable y todava quedan datos pendientes de enviar, la llamada close no retorna hasta que no se han acabado de enviar todos los datos. Existe una llamada ms especfica que es shutdown que permite dar por finalizada la comunicacin en cualquiera de los dos canales del intercambio de datos bidireccional. 2.2. Operaciones propias de los servidores Preparar un socket para recibir conexiones Con la clusula:
Int listen (int descr, unsigned int n_petic);

Se crea una cola en la que se iran guardando las peticiones de conexin que lleguen destinadas a la direccin del socket; como es natural primero los clientes deben saber la direccin del socket servidor, para poder conectar al mismo, y eso se asigna previamente con la llamada bin. Aceptar una peticin de conexin Un socket servidor al que se le haya aplicado la llamada listen, debe utilizar la llamada accept para establecer las conexiones con los clientes que lo soliciten:
Int accept (int descr, struct sockaddr *adr, size_t *long_adr);

Esta llamada extrae la primera peticin de conexin de la cola asociada al socket indicado por el primer parmetro descr, crea un nuevo socket que tendr la misma direccin que el original y estar conectado al originador de la peticin. El valor int retornado es el descriptor del nuevo socket creado, que deber utilizarse en el intercambio de datos con el cliente. Si en el momento de invocar la llamada accept no hay ninguna peticin de conexin a la cola, dicha llamada acta de la misma manera que read; se bloquea y se queda esperando hasta que llegue una, salvo que el socket trabaje en modo no bloqueante.

Redes 17

El servidor inetd Muchos servidores UNIX se encargan de dar servicio a distintos tipos de conexiones: FTP, www, pop En lugar de crear un proceso por cada conexin pedida, lo que se hace es crear un nico proceso llamado inetd (Internet daemon) que se encarga de escuchar simultneamente todos los puertos por los que pueden llegar peticiones, y cada vez que llega una, arranca un proceso hijo que proporciona el servicio correspondiente. Al proceso inetd se le pasan los puertos que debe escuchar por medio de un fichero de configuracin denominado inetd.conf que tiene lo siguientes campos: Servicio estilo protocolo espera usuario programa argumentos. 2.3. Operaciones propias de los clientes Conectar un socket La llamada connect sirve para que un cliente inicie de manera activa una conexin de la manera siguiente:
Int connetc (int descr, const struct sockaddr *adr, size_t long_adr);

2.4. Operaciones auxiliaries Obtener direcciones de socket Hay dos llamadas al sistema que permiten conocer la direccin de un socket local y el socket remoto al que est conectado.: Getsockname: int getsockname (int descr, struct sockaddr *adr, size_t *long_adr); El parmetro adr contiene la direccin del socket correspondiente al parmetro descr y el parmetro long_adr es un inicio debe contener el nmero mximo de bytes de la estructura que deben llenarse. Getpeername: int getpeername (int descr, struct sockaddr *adr, size_t *long_adr); ste permite conocer la direccin del socket remoto.

Convertir direcciones de Internet Permiten trabajar con la representacin de las direcciones IP en la notacin textual de los bytes en decimal separados por puntos (tipo 66.193.215.28) y encontramos dos llamadas diferentes:
Int inet_aton (const char *text, struct in_addr *adr); Char *inet_ntoa (struct in_addr adr);

Consultar bases de datos de nombres Habitualmente lod dos protocolos de nombres ms importantes y con los que ms se trabajan son con las direcciones IP y con los nmeros de puerto. Segn el sistema los datos se pueden obtener de un fichero de texto (Unix), por medio de un servicio de informacin distribuida local (NIS) o global (DNS de Internet). Para el servicio NIS obtendremos los nombres con la clusula gethostbyname (recibe como parmetro el nombre del servidor, lo busca en la base de datos correspondiente y si lo encuentra, llena una variable con informacin sobre el servidor). Tambin se puede aplicar gethostbyaddr, que realiza una bsqueda inversa: dada la direccin especificada por los parmetros, retorna la informacin del servidor que tiene esta direccin o retorna NULL si no la puede encontrar. La funcin getservbyname y getservbyport buscan informacin sobre el servicio por el nombre y por el puerto, respectivamente.

18 Redes

3. SOCKETS CON LENGUAJE JAVA En lenguaje Java se esconden todos los detalles de implementacin que hemos visto en C y proporcional al programador esencialmente lo que se necesita. El mecanismo principal es la clase socket que implementa todas las funcionalidades de los sockets. El constructor de la clase es el equivalente a la funcin socket de la librera C, crea el socket, mientras el resto de funciones lo constituyen mtodos de la clase. Constructor:
Socket (InetAddress adr, int port) Socket (InetAddress adr, int port, InetAddress adr_local, int port_local) Socket (string maquina, int port)

Segn la manera de especificar el servidor al que se quiere conectar condiciona cual de los constructors se ejecuta: La primera consiste en pasar por parmetro la Direccin IP y el puerto en que se quiere realizar la conexin. La segunda consiste en suministrarle adems de lo anterior, la direccin y el puerto locales que van a utilizarse. La ltima consiste en especificar la mquina remota con el nombre y no con la direccin IP. La clase ServerSocket se utiliza en el extremo del servidor, y se encarga de crear el socket, vincularlo a una direccin y crear la cola en que se almacenarn las peticiones de conexin no atendidas todava. Constructor:
ServerSocket (int port) ServerSocket (int port, int n_petic) ServerSocket (int port, int n_petic, inetAddress adr)

En el primer caso se sumistra solo el Puerto en que debe vincularse el socket, en el Segundo el puerto y el tamao de la cola y en el tercero adems de estos dos, la direccin IP de la interfaz a la que se quiere vincular el socket. Una vez creado el objeto de la clase ServerSocket, el mtodo accept se encarga de esperar conexiones de clientes po medio del socket, cuando se haya efectuado la conexin ya podr empezar el intercambio de informacin Para la comunicacin con datagramas disponemos de las clases DatagramSocket y DatagramPacket: la primera para los objetos socket UDP y la segunda para los paquetes que deben enviarse.

Redes 19

TEMA 3 APLICACIONES INTERNET

Tema 3 Aplicaciones Internet 1. El modelo cliente/servidor 2. Servicio de nombres Internet 3. Servicios bsicos de Internet 4. Transferencia de ficheros 5. Correo electrnico Intertet 6. Servicio de noticias: NNTP 7. Servicio de hipermedia: WWW 8. Acceso al servicio de directorio 9. Protocolos Internet en tiempo real 10. Seguridad en las comunicaciones

1. EL MODELO CLIENTE/SERVIDOR Las redes de computadores han hecho aparecer un nuevo modelo en el mundo de la programacin: la programacin distribuida, con la que se pretende aprovechar la potencia y recursos de varios ordenadores interconectados. La cooperacin de los diferentes ordenadores se realiza mediante un protocolo comn, del que existen varios tipos, pero sin duda el que ms xito ha tenido es el modelo cliente/servidor. En este modelo el servidor ofrece un servicio y el cliente realiza una peticin al servidor y espera un resultado de la misma. Este sencillo sistema puede complicarse mucho ms incluyendo mltiples clientes o mltiples servidores, que a su vez entre ellos, se comunican por el modelo cliente/servidor. Un servidor por tanto, puede ser a su vez cliente de otro servicio simultneamente. El diseo de una aplicacin distribuida que siga el modelo cliente/servidor incluye dos elementos: la especificacin de los servicios que el servidor ofrece y la especificacin del protocolo de acceso a esos servicios.

2. SERVICIO DE NOMBRES INTERNET La red Internet permite el acceso a una ingente cantidad de ordenadores y de recursos que se pueden referenciar mediante un nombre. Todos estos nombres estn lgicamente ordenados de forma jerrquica, formando un sistema de dominios. Para obtener un servicio determinado (por ejemplo una pgina web) se consultaba el nombre en una base de datos centralizada y se obtena la respuesta, pero la rpida expansin de la red hicieron inviable este mtodo y se pas al sistema de nombres de dominio. El sistema de nombres de dominio (DNS) proporciona un espacio de nombres para referenciar recursos, el nombre de dominio correspondiente a un nodo se define como la secuencia formada por las etiquetas existentes en el camino entre este nodo y la raz, as para llegar a campus.uoc.edu; el primer nodo es edu (TLD o dominio de nivel superior), de ah se pasa a uoc y dentro de este al subdominio campus. Los dominios de nivel superior inicialmente era com, edu, gov, mil y org y agrupaban diferentes tipos de organizaciones (comercial, educativa, gubernativa, militar y ONG), pero actualmente hay nuevos dominios: net, biz, info, museum, name, pro y cada pas adems tiene el suyo propio constituido por dos caracteres: Espaa (es), Alemania (de), Francia (fr) Modelo de DNS Tenemos dos partes en el modelo bien diferenciadas: Servidores: Reciben las consultas y envan las respuestas correspondientes; tanto desde la base de datos local como accediendo a otros servidores cuando no se haya la respuesta prontamente. Revolvedores: Son clientes del servicio, es un programa o librera que recibe peticiones de las aplicaciones de usuario, las traduce a consultas DNS y extrae de la respuesta, la informacin solicitada. Para que este modelo sea efectivo, se han agrupado por zonas los sistemas de nombres de dominio, de manera que cada zona es gobernada por un administrador que adems tiene permisos para delegar parte del trabajo o a su vez dividirlo en subzonas. El administrador o sus delegados pueden aadir o quitar nodos en la zona y toda esta informacin se debe almacenar en la base de datos local de un servidor, del que se dice que tiene autoridad sobre esa zona. Cuando se envan

20 Redes

consultas a este servidor, se dice que responde con autoridad. Si le llega una consulta de otra zona puede responder de dos formas: Modo no recursivo: La respuesta solo incluye una referencia a otro servidor que puede proporcionar ms informacin. Este modo es obligatorio en todos los servidores con autoridad. Modo recursivo: El servidor busca la informacin que no tiene en otros servidores y sirve la respuesta, pero no referencias al servidor que le dio la respuesta correcta. Hecho esto el servidor aade la respuesta a su cach por si recibe la misma consulta de nuevo; pero si sirve la respuesta de nuevo, aade un comentario que es sin autoridad, pues el dato correcto puede haber cambiado en ese breve lapso de tiempo. Este mtodo de funcionamiento es opcional en los servidores pero en la prctica es la forma habitual de funcionamiento.
Configuracin de un servicio DNS en un ordenador

Bases de datos DNS La informacin asociada a un nodo consta de un conjunto de registros de recurso, que en total forman la base de datos DNS. Cada registro consta de los campos siguientes: Nombre: Nombre de dominio del nodo al que est asociado el registro. Tipo: Indica que tipo de informacin contiene el registro. Los valores que se pueden encontrar en este campo pueden ser la direccin de un ordenador (A), el nombre cannico de un alias (CNAME), informacin sobre el tipo de ordenador (HINFO), nombre de un servidor de correo (MX), Configuracin de un servicio DNS en un ordenador nombre de un servidor DNS con autoridad para esa zona (NS) Clase: Indica la familia de protocolos utilizados en el espacio de nombres. Tiempo de vida (TTL): El tiempo mximo que un servidor o revolvedor pueden guardar el registro en su cach. Datos del recurso (RDATA): Depende del tipo de registro, puede ser una direccin IP, un conjunto de caracteres

Protocolo Para acceder al DNS se puede utilizar tanto el protocolo UDP como el TCP. El primero se suele utilizar en las consultas de los clientes por su simplicidad y los pocos recursos que requiere; el segundo se utiliza cuando conviene asegurar una transmisin fiable. La estructura de un mensaje DNS es como sigue: ID: Nmero de 16 bits que asigna quin realiza la consulta y

Redes 21

que luego se copiar en la respuesta. QR (Quero/response): es un bit que indica si el mensaje es una consulta (0) o una respuesta (1). OPCODE: Cdigo de operacin de 4 bits que indica si es una consulta directa, inversa, peticin de status AA: Indica si el mensaje es una respuesta con autoridad. TC (Truncation): Avisa si el mensaje ha sido truncado porque no cabe en el datagrama. RD: Indica si el cliente solicita respuesta en modo recursivo. RA: Indica si el servidor soporta las respuestas en modo recursivo. RCODE: Cdigo de posibles errores. En la seccin de la pregunta, se puede disponer de una o ms entradas (una o ms preguntas) cada una contar con el nombre del dominio del que el cliente desea obtener informacin, el tipo de registro de recurso que se quiere obtener como respuesta y la clase de registros deseados. En la seccin de la respuesta encontramos las respuestas a todo lo preguntado en el apartado anterior En autoridad se pueden contener registros que referencien un servidor con autoridad si la respuesta ha sido en modo no recursivo.

En la mayora de ordenadores conectados a Internet ya se cuentan con alguna implementacin de un cliente DNS para poder acceder a otros ordenadores conociendo los nombres de los mismos. En UNIX sin ir ms lejos se cuenta adems con la utilidad denominada nslookup que sirve para efectuar todo tipo de consultas directamente a un servidor DNS.

3. SERVICIOS BSICOS DE INTERNET Vamos a estudiar dos servicios bsicos que ofrece Internet, que son el protocolo telnet y el protocolo rlogin. El protocolo telnet es un Terminal virtual, un dispositivo imaginario para el que se definen unas funciones de control cannicas, de manera que se puede establecer una correspondencia entre ellas y las de cada tipo de Terminal real. Antes era muy utilizado en los famosos teletipos, que era un Terminal generalmente unido a una impresora o, ms directamente, una impresora con teclado. El protocolo telnet se basa en el protocolo de transporte TCP, y se sigue normalmente el modelo cliente/servidor, as el usuario establece una conexin con el sistema proveedor, que est esperando peticiones de conexin en un puerto determinado (aunque puede ser cualquier puerto, si la sesin de trabajo va a ser interactiva, se utiliza el 23). En las sesiones interactivas, adems se usa el concepto de Terminal virtual de red (NVT) con una funcionalidad muy bsica pero soportada por todos los ordenadores. Normalmente una vez iniciada la sesin bsica, se ve seguida por un proceso de negociacin para soportar funcionalidades ms avanzadas (esto es lo habitual) y consiste en intercambiar cdigos que indican las opciones del protocolo que cada parte desea o est dispuesta a utilizar. Cuando se llega a un acuerdo, en ocasiones se necesita todava una subnegociacin para determinar valores de parmetros. El protocolo Telnet se utiliza en UNIX a travs del comando telnet. El protocolo rlogin se utiliza cuando se desea establecer una sesin de trabajo interactiva desde un sistema UNIX con otro sistema UNIX. En este tipo de protocolo cada Terminal conoce y soporta perfectamente al otro con lo que no hay procesos de negociacin y tambin se informan mutuamente de sus respectivas identidades con lo que se automatiza el proceso de autenticacin. EN UNIX se utiliza con el comando rlogin. Existen otros servicios denominados triviales como echo, discard, chargen, daytime y time, pero que no interesa tampoco conocerlos en profundidad.

22 Redes

4. TRANSFERENCIA DE FICHEROS Una de las primeras aplicaciones desarrolladas entre ordenadores conectados fue el FTP o File transfer protocol, es decir, el protocolo de transferencia de ficheros, que se basa en el modelo cliente/servidor y permite la transferencia de ficheros entre el cliente y el servidor de forma bidireccional y entre dos servidores por mediacin del cliente. El protocolo habitual de funcionamiento podemos observarlo en la imagen lateral; adems como hemos dicho antes existe una variacin del modelo general para el caso de que el cliente controle una transferencia entre dos servidores sin que los archivos deban copiarse primariamente al cliente, sino que pasan del servidor activo, al pasivo directamente.
Modelo funcional del protocolo FTP

El FTP est basado en conexiones TCP, y el puerto oficial asignado para su funcionamiento es el 21. Los comandos FTP constituyen los mensajes que enva el cliente al servidor, que responde con otros comandos. Las respuestas se generan en orden cronolgico estricto, pues en general el servidor Ejemplo de comunicacin FTP efecta sus operaciones de forma secuencial, es decir, no STATUS:> Getting listing "public_html"... Resolving host name ftp.sinpuntocom.com... empieza una nueva operacin hasta que no ha terminado STATUS:> STATUS:> Host name ftp.sinpuntocom.com resolved: ip = la anterior. Comandos FTP encontramos muchos: nombre 66.194.152.210. de usuario (USER), directorio actual (PWD), puerto STATUS:> Connecting to ftp server (PORT), listar (LIST), etc, no pueden tener ms de 4 ftp.sinpuntocom.com:21 (ip = 66.194.152.210)... STATUS:> Socket connected. Waiting for welcome caracteres, y las respuestas FTP son una numeracin de 3 message... 220---------- Welcome to Pure-FTPd [privsep] dgitos, seguidos de un texto descriptivo a ese error o [TLS] ---------respuesta enviados. 220-You are user number 1 of 50 allowed. Habitualmente cuando se inicia la conexin, lo primero que hace el cliente FTP es enviar el nombre de usuario (USR), el FTP servidor pide entonces la contrasea (PASS) a veces se pide un nombre de cuenta, y a continuacin se establecen verificaciones de la estructura de fichero y del modo de transmisin. En la actualidad existen muchsimas implementaciones de FTP, incluso a travs de www; sin embargo durante mucho tiempo el ms utilizado fue la utilidad ftp del sistema operativo UNIX. El TFTP (Trivial File Transfer Protocol) es una variacin del FTP, mucho ms sencilla de utilizar, que admite muy pocos comandos (solamente leer y escribir ficheros) y que se suele utilizar sobre todo para transferir ficheros a un ordenador por ejemplo para cargar un sistema operativo a travs de red. Esta operacin sencilla no se podra llevar a cabo con el FTP habitual pues requiere la carga del sistema UDP y una serie de protocolos que requieren la existencia de sistema operativo. Este sistema funciona enviando un datagrama por parte del cliente, al que responde el servidor, y as alternativamente el datagrama siguiente responde al anterior y se sabe que la comunicacin se va realizando correctamente. En Unix este sistema TFTP est implementado a travs de la utilidad tftpd, y como no existe ningn tipo de identificacin de usuario, en principio los clientes pueden acceder a cualquier fichero con permiso de acceso pblico; por ello se suele restringir el acceso a un directorio (tftpboot) o directamente se inhabilita el servicio.
inactivity. STATUS:> COMMAND:> COMMAND:> sinpunto STATUS:> COMMAND:>

220-Local time is now 15:34. Server port: 21. 220 You will be disconnected after 5 minutes of Connected. Authenticating... USER sinpunto 331 User sinpunto OK. Password required PASS ***** 230-User sinpunto has group access to:

230 OK. Current restricted directory is / Login successful. PWD 257 "/" is your current location STATUS:> Home directory: / COMMAND:> FEAT 211-Extensions supported: EPRT IDLE MDTM SIZE REST STREAM MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*; MLSD ESTP PASV EPSV SPSV ESTA PROT 211 End. STATUS:> This site supports features. STATUS:> This site supports SIZE. STATUS:> This site can resume broken downloads. COMMAND:> REST 0 350 Restarting at 0 COMMAND:> CWD /public_html 250 OK. Current directory is /public_html STATUS:> PWD skipped. Current dir: "/public_html". COMMAND:> PASV 227 Entering Passive Mode (66,194,152,210,195,139) COMMAND:> LIST STATUS:> Connecting ftp data socket 66.194.152.210:50059...

Redes 23

5. CORREO ELECTRNICO INTERNET El correo electrnico es la operacin distribuida que permite enviar mensajes electrnicos por medio de sistemas informticos. Para llevar a cabo esta funcionalidad se definieron 3 protocolos que pasamos a estudiar: el SMTP, el POP3 y el IMAP, aunque antes debemos ver el formato de los mensajes de correo. Formato de los mensajes de correo Un correo electrnico tiene dos grandes campos: la cabecera y el cuerpo del mensaje. ste ltimo no reviste gran inters puesto que contiene el mensaje en s. La cabecera, a su vez cuenta con varios campos: Originador: La identidad y la direccin del buzn del remitente. Destinatario. Destinatario de copia (CC). Destinatario de copia oculta (BCC). Destinatario de respuesta: especialmente til si se necesita recibir la respuesta al mensaje en un correo diferente al de origen. Asunto (Subject). Data: Hora y fecha, que lo genera automticamente el primer sistema de correo que recibe el mensaje. Sistema remitente Camino de retorno hacia el originador Informacin de sistemas intermedios: Informacin de cada uno de los sistemas informticos por los que pasa un mensaje. Hay que saber que un mensaje de correo electrnico no parte de un ordenador, va a una oficina postal y de ah lo recoge el destinatario. En absoluto: un mensaje viaja por muchas oficinas postales, si cuando llega a una oficina, sta no tiene en su lista de usuarios el destinatario, lo enva a otra ms cercana, y as hasta que llega a la oficina del destinatario donde ser recogido por ste. Funciona igual que el correo postal y aunque es un funcionamiento sencillo, asegura que aunque se caigan las lneas no se pierda el correo, puesto que en cada momento alguna oficina es responsable de ese mensaje. Palabras clave Comentarios Identificacin del mecanismo de cifrado. El SMTP O Simple Mail Transfer Protocol, proporciona la funcionalidad necesaria para conseguir la transferencia fiable y eficiente de mensajes de correo entre ordenadores que actan como una oficina de correos. El modelo SMTP (que utiliza el puerto 25) funciona como se observa en la figura inferior. Hay que aclarar que los sistemas que actan como oficina, deben tener un receptor SMTP para recibir correos y un emisor para desprenderse de los que no son suyos.
Modelo SMTP

Las direcciones de correo utilizan como apellido el nombre de dominio, por ejemplo uoc, y previo el nombre de usuario seguido de arroba.

EL POP3 O Post Office Protocol version 3, es una funcionalidad aadida al SMTP. En sistemas pequeos no es prctico soportar el SMTP, porque ello implicara tener el sistema constantemente conectado y dispuesto a recibir mensajes en cualquier momento. Lo que se hace es que las anteriores oficinas de correo, almacenan los mensajes de los buzones de usuario y con un servidor POP3 los facilitan al usuario cuando

24 Redes

stos se conectan para conocer los Modelo POP3 mensajes nuevos que le han llegado a su buzn. Como vemos, seguimos manteniendo el modelo cliente/servidor, y la imagen de la pgina anterior para SMTP, ahora la vemos completada con el servidor y el cliente POP3 (ste ltimo es el usuario) en su acceso al correo. El POP3 utiliza el puerto 110 del ordenador. La utilizacin del POP3 se inicia con la identificacin del usuario, el envo de la contrasea y despus se puede optar por ver la lista de mensajes (solo el encabezado), bajarlos todos, bajar los seleccionados, borrar, etc. Una vez que, por ejemplo y es lo que usualmente suelen hacer los gestores de correo, hemos bajado todo el correo, automticamente pasamos al estado de actualizacin, donde se borran todos los mensajes marcados (aquellos que nos hemos bajado a nuestro ordenador correctamente) y despus se liberan todos los recursos y se cierra la conexin TCP. El IMAP O Internet Messages Access Protocol permite al cliente acceder a los mensajes de correo electrnico de un servidor y manipularlos. Como mejora respecto al POP3 proporciona una estructura jerrquica del buzn en forma de carpetas, as como facilidades de suscripcin, lo que da lugar a nuevos comandos que permiten gestionar todos estos elementos. Por ejemplo, cuando con Outlook nos bajamos los mensajes, esto se hace de forma automtica: identificacin, contrasea, bajada de mensajes, y liberacin de recursos; no podemos pararnos en cualquiera de esas partes, ni estudiar los buzones de correo. En cambio con IMAP una vez que se ha establecido la conexin somos nosotros los que llevamos la voz cantante y decidimos qu hacer con nuestros mensajes y cuando hacerlo. Formato MIME de los mensajes de correo El modelo de mensaje de correo que estudibamos en la pgina anterior es insuficiente para las capacidades de comunicacin y multimedia que estn surgiendo hoy da. Por tanto de la norma RFC822 se pas al formato MIME (Multipurpose Internet Mail Extensions), que recoge, como su nombre indica, extensiones de multipropsito. Se crearon nuevos campos de cabecera sobre todo para informacin de texto adjunta, imgenes, audio, vdeo y aplicaciones.

6. SERVICIO DE NOTICIAS: NNTP El servicio de noticias permite el envo de mensajes, como el servicio de correo, pero sin un destinatario o destinatarios especficos, sino que cualquier usuario que pueda acceder al servicio puede leerlos; viene a ser como un tabln de anuncios. En principio este servicio se conoca como Usenet por el nombre de la red que lo origin. El servicio de noticias es completamente descentralizado. Los artculos no estn en un nico servidor sino que se alojan en uno o ms servidores, los cuales se encargarn de reenviarlo a los ms prximos, que a su vez lo reenviarn al resto. No se puede asegurar que un determinado artculo llegue a todos los servidores e incluso a uno especfico, pero este modelo funciona mucho mejor que el modelo con un nico servidor centralizado. Los artculos as publicados tienen un encabezado como el de correo con un remitente, fecha y hora, subjetc, mensaje y como destinatario el grupo o grupo de noticias donde se publicar.

Redes 25

7. SERVICIO HIPERMEDIA: WWW El http es la base del servicio www; sus orgenes fueron los trabajos de un grupo de investigadores del Centro Europeo de Investigacin Nuclear, que lo utilizaban para acceder de manera sencilla y cmoda a la informacin distribuida en diferentes sedes del centro; cuando el conjunto de sistemas se extendi a otras organizaciones y pases de todo el mundo naco la World Wide web. El http sigue el mtodo general de peticiones y respuestas entre un cliente y un servidor. En la versin 1.0 el cliente establece una conexin con el servidor, le enva un mensaje http con la peticin ya continuacin el servidor enva la respuesta y cierra la conexin. En la versin 1.1 cambia a conexin persistente con diferentes peticiones y respuestas en una misma conexin. Para optimizar el trfico de la red es habitual que los clientes http guarden una copia de las respuestas que reciben en los servidores, este almacn se conoce como memoria cach y su dimensin mxima y su poltica de almacenamiento es controlada por el usuario. Tambin es habitual que un cliente no se conecte directamente a un servidor, sino a un Proxy, el cual establece la conexin con el servidor o, incluso, con otro proxie. Estos proxies guardan tambin en cach las respuestas recibidas a las peticiones para poder dar un servicio ms rpido a otros usuarios. Es decir si una peticin de un cliente ya est en la cach de un proxie, no la pedir de nuevo al servidor de origen. El problema estriba en la actualizacin de estas memorias cach, pues la informaci que puede recibir el cliente puede ser obsoleta o desfasada. El uso del proxie adems sirve como un cortafuegos que asla una red local del resto de las redes y como memoria cach compartida en esta red local.

8. ACCESO AL SERVICIO DE DIRECTORIO El servicio de directorio X.500 permite el almacenamiento de todo tipo de informacin de manera distribuida. El X.500 define la estructura de la informacin, as como los protocolos necesarios para acceder a la misma. El servicio de directorios no est ideado como una base de datos de propsito general, sino como un mecanismo de almacenamiento de informacin distribuida y se basa en que las peticiones de informacin son ms frecuentes que las actualizaciones y que para acceder a la informacin se utilizan nombres con estructura jerrquica y no la direccin en que se encuentra la informacin. As un objeto tiene dos nombres, el nombre relativo de directorio (diferencia un objeto de sus hermanos dentro del directorio, se forma a partir de los atributos de una entrada que tiene valores distintivos, as que stos deben ser persistentes y tener pocas probabilidades de quedar obsoletos), y el nombre de directorio (permite diferenciar un objeto del resto de objetos del directorio). As exponemos un ejemplo de ambos casos:
Nombre relativo: {CN=Ramn Mart} Nombre relativo: {O=UOC, L=Barcelona} Nombre de directorio: {C=ES; O=IRIS; OU=UOC; L=Barcelona; CN=Ramn Mart}

9. PROTOCOLOS INTERNET EN TIEMPO REAL Hay una serie de aplicaciones como la transmisin de audio y vdeo en tiempo real en la que es preciso que los datos se vayan presentando al destinatario a medida que van llegando. En este sentido se encuentran varios protocolos implementados: RTP: Es un estndar que proporciona servicios de entrega punto a punto para datos con caractersticas de tiempo real como audio y vdeo. Se hacen necesarios dos puertos entre el cliente y el servidor: uno para el RTP y otro para el RTCP. El RTP es el protocolo de transporte en tiempo real y es capaz de

26 Redes

hacer reconstrucciones temporales, detectar prdidas e identificar el contenido y la seguridad. El RTCP, por su parte, proporciona soporta para conferencias en tiempo real de grupos de cualquier tamao. RSTP: EL protocolo de flujo de tiempo real proporciona el control del flujo de datos multimedia. Se considera ms un entorno de trabajo que un protocolo. Con este protocolo los datos se fragmentan en mltiples paquetes del tamao apropiado al ancho de banda disponible entre cliente y servidor. Cuando el cliente ha recibido suficientes paquetes, es capaz de reproducir el primero, mientras descomprime el segundo y recibe un tercero; as el usuario cliente puede empezar a reproducir los datos casi inmediatamente, sin necesidad de esperar a recibirlos todos. RSVP: El protocolo de reserva de recursos est orientado a la calidad del servicio (retraso, jitter, ancho de banda y prdida de datos).

10. SEGURIDAD EN LAS COMUNICACIONES Las principales amenazas que podemos tener en nuestras comunicaciones informticas pueden ser por acciones hostiles: Interrupcin de mensajes por terceros, intercepcin de los mismos, modificacin o impostura (hacerse pasar por otro usuario) o por acciones que no incluyan otro usuario como son el repudio (un usuario niega haber mandado un mensaje a otro) o la negacin de recepcin (en este caso el que recibe el mensaje niega haberlo hecho). las Los servicios de seguridad por tanto, intentarn proteger a los usuarios de siguientes amenazas, implementando: Confidencialidad Integridad Autenticacin No rechazo.

Las tcnicas criptogrficas son los sistemas que sirven para codificar y decodificar mensajes que pueden ayudarnos en aumentar la seguridad del sistema. Hay dos tcnicas principales de criptografa: la simtrica y la asimtrica. La criptografa simtrica consiste en que se utiliza la misma clave para cifrar y descifrar un mensaje. Es fcil y rpido, pero los dos usuarios A y B deben ponerse previamente de acuerdo en las claves a usar, dado que no las pueden enviar por el mismo canal de comunicacin. En cambio, la criptografa asimtrica se basa en dos claves, pblica y privada. Dada una de estas claves (la privada) es sencillo obtener la otra (la pblica) pero a la inversa es imposible. Esto nos da dos modalidades de uso de la criptografa asimtrica: Si se cifra el mensaje con la clave pblica y se utiliza la privada para descifrarlo, el remitente del mensaje puede estar seguro que solo el destinatario con la clave privada adecuada podr leerlo. Si se utiliza la clave privada para cifrar el mensaje y la pblica para descifrarlo, prcticamente cualquiera podr leer el mensaje, pero se tendr la certeza de quien ha sido el remitente, esto es la base de la firma digital.

Texto elaborado a partir de:

Jordi igo Griera, Enric Peig Oliv, Jos M. Barcel Ordinas, Xavier Perramon Tornil, Ramon Mart Escal Junio 2004

Redes

Administracin de redes y sistemas operativos


TEMA 1 INTRODUCCIN A LA ADMINISTRACIN DE SISTEMAS
Tema 1 Introduccin a la administracin de sistemas 1. El sistema informtico y la organizacin 2. Componentes del sistema informtico 3. Personal responsable del sistema informtico

1. EL SISTEMA INFORMTICO Y LA ORGANIZACIN La informtica dentro de una organizacin puede estudiarse desde puntos de vista muy diferentes. Desde el punto de vista de la organizacin, desde el punto de vista de los informticos, de los usuarios, de la direccin, etc, pero en cualquier caso el sistema informtico debe ser eficaz (conseguir lo que pretende) y eficiente (hacerlo con un consumo de tiempo y recursos aceptable). Destaca la figura del jefe de departamento de informtica o jefe de las tecnologas de informacin cuyos objetivos son la planificacin y gestin del departamento y ofrecer un buen servicio a los usuarios.

2. COMPONENTEL DEL SISTEMA INFORMTICO


Sistema informtico

Destacan dentro del sistema informtico las siguientes partes: Servidores: Es normal contar con diferentes servidores que se especializan en funciones distintas, lo que aumenta el control por parte de los administradores de sistemas y disminuye el riesgo de fallos. Terminales de trabajo: Se est llegando a alcanzar un Terminal de trabajo por cada trabajador de la empresa. Red: Es el cableado fsico que conecta los terminales de trabajo y la electrnica de control de la red (hubs, routers, switches). Software: Podemos encontrar como mnimo dos sistemas operativos: el de los servidores y el de los terminales, lo que complica la administracin de los sistemas.

3. PERSONAL RESPONSABLE DEL SISTEMA INFORMTICO Existen diversas funciones que pueden ser cubiertas cada una de ellas por una persona o un grupo de ellas encabezadas por un jefe; o una persona puede llevar a cabo ms de una funcin a la vez, todo ello estar en consonancia con la poltica y tradicin de la empresa y tambin con la envergadura de la organizacin. Las distintas funciones y/o departamentos que podemos encontrar son: Administracin de servidores: Se encarga de instalar y mantener dando servicio a la organizacin en todo lo referente a los servidores, tambin se encarga de recuperarlos en caso de fallo. Administracin de usuarios: Necesidades y atencin a los usuarios y al mantenimiento de sus equipos de sobremesa, ya sean PCs o terminales. Administracin de la red: Se debe asegurar que funcione correctamente la red y tambin controlar que se encuentre en buen estado, as como mejorarla y extenderla hacindola llegar a todos los rincones de la organizacin. Administracin de los datos: Esta funcin se ocupa de mantener la integridad de la informacin de la organizacin, tanto si se encuentra en un lugar fsico como dispersa por los servidores (lo ms habitual es una combinacin de ambas).

Funciones

2 Administracin de Redes y Sistemas Operativos

Administracin de la web: Mantenimiento del servidor web y actualizacin del contenido de las pginas. Administracin de la seguridad: Es compleja esta funcin pues incluye desde la seguridad de la informacin existente hasta la proteccin fsica de los equipos contra robos, prevencin contra ataques por virus, etc. Desarrollo: Si se requiere nuevo software para cubrir necesidades que van apareciendo, el departamento de desarrollo es el encargado de llevarlo a cabo. Jefe de informtica: Esta funcin junto con la de administracin de servidores y de usuarios son las ms importantes. El jefe de informtica es el enlace entre las necesidades de la empresa y el trabajo que se realiza en el departamento. Qu software comprar o desarrollar, qu servidores son necesarios, que red instalar, etc, son decisiones a las que el jefe de informtica debe enfrentarse

El solapamiento de funciones puede llegar a darse con mucha facilidad, es decir, si debemos dar de alta un usuario en un servidor, Quin lo hace? El administrador de usuarios o el de servidores este solapamiento de funciones se debe a que cada departamento tiene unas tareas muy definidas pero en absoluto independientes de otros departamentos. De hecho, una misma persona puede asumir los tres cargos ms importantes dentro del departamento informtico, es decir: jefe de informtica, administrador de usuarios y administrador de servidores, siempre y cuando la envergadura de la organizacin lo permita.

Administracin de Redes y Sistemas Operativos 3

TEMA 2 ADMINISTRACIN DE SERVIDORES

Tema 2 Administracin de servidores 1. El servidor y sus funciones 2. Tipos de servidores existentes 3. Requerimientos de los sistemas operativos de red 4. Requerimientos de un servidor 5. Discos duros 6. Dispositivos de copia de seguridad 7. Copias de seguridad 8. Impresoras 9. La corriente elctrica 10. Seguridad de los servidores 11. Ejemplo: sistemas operativos actuales 12. Aspectos legales y Tareas/Responsabilidades

1. EL SERVIDOR Y SUS FUNCIONES Un servidor es una mquina que funciona las 24 horas los 7 das de la semana, lo que implica tener un hardware preparada para no detenerse nunca y soportar reparaciones y ampliaciones en caliente. Cuenta con sistemas para que los usuarios puedan acceder a la informacin de una manera selectiva, gestionan colas de impresin, muestran pginas web, registran la actividad de cuanto se realiza, tramitan el correo de la organizacin y ya no ocupan, como antao, habitaciones enteras. Las funciones de los servidores son varias: Servidores de ficheros Servidores de impresin Servidores de pginas web Servidores de Noticias Servidores de Correo Servidores de FTP

Hemos de distinguir el servidor fsico (o corporativo que es la cantidad de ordenadores que estn instalados) de los servidores funcionales (que realizan una funcin de servidor al ofrecer informacin a otro ordenador cliente). El nmero y la funcin o funciones de cada servidor estar en funcin, como siempre, de la envergadura de la organizacin.

2. TIPOS DE SERVIDORES EXISTENTES Existen dos grandes tipos de arquitecturas con sus diferencias: Arquitecturas UNIX: El ordenador suele ser el propietario del sistema operativo que se instala: Hewlett-Packard, SUN, Silicon Graphics, IBM, Dec Alpha Arquitecturas PC: El hardware corresponde al de un PC, pero con componentes de elevadas prestaciones y con sistema operativo Linux, Unix, Microsoft para redes

Como actualmente la tendencia es la informtica distribuida, es decir, servidores con funciones especficas con un coste variable a las funciones que debe realizar, pero comunicados entre ellos para intercambiar informacin, contamos as con servidores heterogneos: Las organizaciones suelen poseer ms de un servidor fsico que se conecta con otro servidor fsico que probablemente tenga un sistema operativo diferente y un sistema de ficheros tambin distinto. Para solventar el problema de comunicacin entre ambos primero debemos contar con una conexin fsica de cable entre ellos, y despus o esperamos contar con una frmula comn para intercambiar informacin (TCP/IP para los servidores modernos) o con algn software de terceros que nos solucione la papeleta. En cualquiera de los dos casos debemos tener cuidado de no ralentizar en exceso la red global o empeorar el rendimiento del sistema al realizar un uso intensivo de este intercambio de informacin.

4 Administracin de Redes y Sistemas Operativos

3. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS DE RED Las funciones que debe proporcionas el sistema operativo de red son: Servidor de ficheros: definir grupos de usuarios, compartir ficheros entre todos los usuarios, compartir ficheros entre grupos de usuarios y asignar un espacio personal para cada usuario. Servidor de aplicaciones: Compartir programas entre usuarios y grupos de usuarios. Servidor de impresin: Compartir impresoras. Servidor de correo: Enviar y recibir mensajes.

Todo esto por supuesto, con las restricciones de seguridad y permisos correspondientes.

4. REQUERIMIENTOS DE UN SERVIDOR Un servidor es un ordenador con una configuracin de hardware y software ajustada a la funcin que debe llevar a cabo. Las caractersticas ms o menos especiales con que debe contar este ordenador especial son: RAM: Es fundamental una gran cantidad de RAM ya que se realizan multitud de peticiones de diferentes usuarios simultneamente y si se trata del servidor de base de datos, la cuestin es entonces mucho ms crtica. CPU: En contra de lo que pudiera parecer no se requiere una CPU especial, ni siquiera una CPU multiprocesador. Caja con fuente de alimentacin: Es recomendable una caja grande, bien aireada con una fuente de alimentacin si es posible sobredimensionada, para que o bien el exceso de temperatura no disminuya la frecuencia de trabajo en los servidores que lo soporten o, lo que es peor, no se quemen en los servidores que no soporten dicha disminucin. Placa base: Debe ser de buena calidad para no disminuir el rendimiento general del servidor. Placa de comunicaciones: Determina la capacidad de transmitir informacin a la red del servidor, por lo cual es fundamental una placa 10/100 de par trenzado unida a un concentrador o conmutador de 100 Mb y si se cuenta con tecnologa superior como la fibra ptica, mejor. Discos: Pueden ser IDE o SCSI como en los ordenadores de sobremesa. Los IDE presentan el inconveniente que solo se suelen soportar 4 discos (2 por cada bus IDE) y son muy lentos, como mucho 66 Mb/s. En cambio aunque los discos SCSI son ms caros, se controlan hasta 8 discos por controladora, y su velocidad es de 320 Mb/s.

5. DISCOS DUROS Es fundamental realizar una buena gestin de particiones en los discos duros. Debemos particionar porque esto hace que un mismo disco fsico tenga x particiones lgicas que son independientes y aunque una particin falle, el resto sigue siendo completamente accesible. Las particiones habituales son: Sistema: Es necesaria para poner en marcha al servidor y cuenta con el sistema operativo. Usuarios: Carpetas de usuarios y carpetas de grupos de usuarios. Datos: Hay directorios con datos de programas que deben ser instalados localmente en los terminales de trabajo. Aplicaciones bsicas: Que todos suelen utilizar, el software base de los usuarios.

Administracin de Redes y Sistemas Operativos 5

Aplicaciones: No son las bsicas es decir, no todos los usuarios las utilizan y por ello determinados usuarios tienen acceso a ellas y, probablemente, no a todas. Gestin Informtica: Aqu se suelen instalar los programas y archivos de instalacin al que solo tienen acceso los informticos para instalar programas en cualquier Terminal sin tener que cargar siquiera con un disquete.

Las extensiones de los discos en el servidor se llevan a cabo para mejorar su capacidad y rendimiento: Multivolumen: Podemos unir dos discos de inferior capacidad para crear lgicamente un nico disco con la suma de las dos capacidades, la principal ventaja es obtener una particin de la medida que se desee a partir de discos de menor capacidad, pero por desgracia, si un disco fsico falla, no se puede acceder a ninguna de las particiones fsicas que conforman un mismo volumen. Debido al actual precio de los discos duros (muy baratos) no se suele utilizar este sistema. Espejo: Si la informacin es primordial se coloca un disco extra por cada disco duro del servidor, de manera que cualquier cosa que se escriba en el disco 1, se escribe y actualiza tambin en el disco 2. Tenemos dos discos fotocopiados, de forma que si uno falla, el otro sigue dando servicio hasta que en caliente, cambiamos el estropeado. El espejo puede ser mediante software (ms lento) o hardware. RAID: El espejo es una opcin costosa que solo se puede aplicar a un disco, si necesitamos un espejo para cada disco, el coste se dispara, la tcnica RAID distribuye la informacin entre distintas unidades y ofrece un sistema de redundancia para aumentar la seguridad. As podemos disponer de 5 discos funcionando y solo uno de ellos ofrecer la redundancia para poder recuperar datos. Hay varios niveles de RAID: o RAID 0: La informacin se distribuye entre distintos discos pero no hay redundancia, as que si algo falla no podemos recuperar la informacin. o RAID 1: Cada unidad est duplicada con otra de soporte, es similar al espejo pero la informacin se distribuye entre los discos. o RAID 2: No se emplea. o RAID 3: Datos distribuidos con relacin al bit en todas las unidades menos en una que ofrece la paridad. o RAID 4: Igual que RAID 3 pero a nivel de sector, lo que mejora los tiempos de acceso. o RAID 5: Se escribe en todos los sectores de cada unidad y se aaden cdigos correctores en cada sector, con tiempos de acceso en la lectura muy buenos.

El sistema de ficheros es otro aspecto muy importante a tener en cuenta. Hay varios sistemas, que de ms antiguos a ms modernos son: FAT: Es muy antiguo y solo soporta medidas de 2 GB. sin ofrecer adems ninguna seguridad. FAT32: Igual al anterior pero soportando mayores dimensiones aunque tambin sin ofrecer ninguna medida de seguridad. NTFS: Introducido por Windows NT ofrece un tamao del sector y clsteres muy pequeos por lo que se aprovecha mejor el disco, cuenta con seguridad para el sistema de ficheros. UFS y EXT2: Se utilizan en Unix y Linux con mucha seguridad. HSFS: High Sierra File SYstem utilizado en el formato de los CD-Rom y comnmente aceptado.

6 Administracin de Redes y Sistemas Operativos

6. DISPOSITIVOS DE COPIA DE SEGURIDAD Cintas: Hay varios tipos: las cintas DAT suelen ser dispositivos SCSI con capacidades de 20 Gb, por cinta; las cintas DLT suelen llegar hasta 100 Gb. y las AIT tambin. Otro tipo son las LTO. Libreras de copia: Con estos tamaos por cinta, en una gran organizacin con 20 Gb. de copia de seguridad no hacemos nada. Para evitar este problema existen robots motorizados y controlados por software que pueden controlar entre 20 y 2000 de estas cintas, con lo que tenemos asegurada una buena cantidad de informacin, unos 400 Terabytes. Grabadoras Cd-Rom y DVD: Los Cd con capacidades de hasta 700 Mb, grabables y/o regrabables al igual que los DVD con capacidades de hasta 8,5 Gb. son adecuados para copias de seguridad de poca cantidad, dado que el precio tanto del dispositivo como de los fungibles, es mnimo. Unidades ZIP/Jazz: Actualmente en desuso, son unidades de disquete con un tamao igual a stos pero con capacidades de hasta 250 Mb. que lo hacen insuficiente para una mnima copia de seguridad. Disco duro: Dado el precio actual de estos dispositivos no es descartable hacer una copia de seguridad sobre ellos mismos, dado que adems necesitan muy poco tiempo para efectuarla y as no colapsan el sistema.

Libreras de Copia

7. COPIAS DE SEGURIDAD Las copias de seguridad son imprescindibles para proteger la informacin de los usuarios frente a ellos mismos (borrados accidentales), frente a desastres naturales, frente a ataques de terceros, frente al propio sistema que puede dejar en un momento dado por malfuncionamiento la informacin inconsistente y adems porque posibilita el traspaso de informacin cuando se actualiza o reinstala el sistema. Tipos de copia de seguridad La copia de seguridad completa es aquella en la que se hace una imagen del disco duro completo o una copia completa del sistema de ficheros. En el primer tipo de copia al restaurar sta no puede ser selectiva, restaura toda la imagen del disco duro, en el segundo tipo s podemos seleccionar los archivos y directorios a restaurar. La copia de seguridad incremental guarda slo los ficheros que se han modificado desde la ltima actualizacin. Esto hace que el copiado sea mucho ms rpido, consuma menos recursos y tiempos del sistema. La copia de seguridad selectiva solo copia ficheros y/o directorios determinados, generalmente los de ms uso y cuya informacin cambia con ms frecuencia. Polticas de copia de seguridad Es necesario analizar el tipo y cantidad de informacin y la organizacin en que nos movemos para llevar a cabo una adecuada poltica de copias de seguridad. Si optamos por un tipo de copia de seguridad completa diariamente nos aseguraremos que tenemos siempre toda la informacin disponible. Cada da en discos distintos se efecta dicha copia de seguridad y guardamos la ltima copia del mes, el resto de cintas volvemos a utilizarlas en el mes siguiente; pero es un gran gasto en recursos y tiempo del sistema. Si hacemos una copia de seguridad completa los Lunes y de Martes a Jueves una incremental consumimos menos recursos y es ms rpido pero con la

Administracin de Redes y Sistemas Operativos 7

desventaja de que si una copia de un da no funciona (por ejemplo la del Mircoles), el resto de cintas hasta la siguiente copia completa queda inservible aunque funciona correctamente (por ejemplo las del Jueves y Viernes). Otro problema importante es saber dnde guardar las copias de seguridad, en muchas ocasiones se almacenan cerca del servidor o en la misma habitacin; esto tiene su lgica dado que as se puede restaurar o solventar un problema con rapidez, pero si existe un desastre natural o un incendio perderemos toda la informacin. Tampoco el hecho de que estn bajo llave o en una caja fuerte nos solventa el problema, en un incendio las altas temperaturas destruyen los datos aunque estn en una caja fuerte; y el pensar que como todos los datos estn en papel se pueden volver a introducir es un error, dado que actualmente muchos formularios y datos no se pasan a papel. Por tanto hay que guardar una copia de seguridad alejada del servidor y actualizada frecuentemente para evitar males mayores, incluso se dice que debe estar a varios cientos de kilmetros (en otra placa tectnica diferente) para evitar el riesgo de destruccin por terremotos.

8. IMPRESORAS Existen dos tipos de impresoras habitualmente: las impresoras lser que son caras, con una alta duracin del cartucho, rpidas y verstiles; y las impresoras de chorro de tinta habitualmente de uso personal por ser de coste bajo, con baja duracin de los cartuchos, en color habitualmente y de muy baja velocidad. Aunque informticamente lo que ms nos interesa es la posibilidad de compartir impresora. En algunos casos las impresoras se comparten mediante una cola de impresin por software y un dispositivo que la conecta a la red de la empresa; en otros casos, la impresora ya tiene un puerto de red, que le asigna una IP dentro de la red interna de la empresa y hace que se comparta con total facilidad y transparencia.

9. LA CORRIENTE ELCTRICA Si todos nuestros equipos dependen de la corriente elctrica para funcionar, porqu le damos tan poca importancia?, es decir, una vez que hemos conectado un aparato a la red elctrica, ya pensamos que va a recibir corriente de manera constante, normalizada y fluida durante toda su vida til, y esto no es cierto, ya que pueden haber picos de tensin (ruidos) e incluso cortes del fluido elctrico. Las consecuencias de esto pueden ser prdida o corrupcin de los datos, daos directos en el equipo o un acortamiento de la vida til de los mismos. Sera conveniente tener en cuenta dos aspectos: la toma de tierra y los SAI. La toma de tierra debe realizarse con un supresor de picos situado justo antes del panel elctrico de la oficina y unos estabilizadores situados justo antes de la conexin a la red de los servidores y/o los terminales individuales. Por otro lado, contar con SAI (Sistema de Alimentacin Ininterrumpida) tambin nos protege frente a cortes de corriente y problemas con la tensin, permitiendo que los equipos se apaguen correctamente cuando hay un corte de fluido. Actualmente estos SAIs disponen de un puerto USB que informan al equipo del tiempo que les queda con la batera una vez que se ha ido la corriente elctrica.

10. SEGURIDAD DE LOS SERVIDORES La seguridad hay que contemplarla a dos niveles: seguridad fsica y seguridad de software. La seguridad fsica requiere de algunas precauciones: Cerrar el recinto donde est el servidor y no trabaja nadie, y bloquear el sistema mediante salvapantallas con contrasea.

8 Administracin de Redes y Sistemas Operativos

Fijar fsicamente el equipo con cadenas para evitar robos. Evitar que el ordenador arranque desde disquete o, incluso, retirar este dispositivo si realmente no lo usamos. Colocar contraseas de encendido en la BIOS del sistema.

En la seguridad por software: Contar con una buena poltica de cambio peridico de contraseas, especialmente en aquellos usuarios que tengan privilegios especiales. Asimismo, estas cuentas especiales no deben tener nombres esperados, como administrador o admin. No instalar ni ejecutar software en el servidor por el peligro de virus que entraa. Contar con una buena poltica de usuarios y grupos con privilegios bien definidos.

11. EJEMPLO: SISTEMAS OPERATIVOS ACTUALES Dos son los principales sistemas operativos que se utilizan: Windows y Unis/Linux. Ambos pueden realizar las mismas funciones, como veremos a continuacin, a partir de s mismos o de software de terceros: Ficheros: Ambos sistemas sirven ficheros sin ninguna dificultad, y adems comparten recursos tambin sin problemas Web: Windows tiene el IIS (Internet Information Server) que es un servicio que se puede arrancar o no, mientras U/L necesita instalar un software como Apache, que es potente y gratuito. FTP y Correo: El FTP en un servicio en Windows que debe ser arrancado y configurado, y en el correo requiere el Microsoft Exchange Server; en U/L en cambio ya est preparado para trabajar. Ofimtica: Windows parece ms universal con su paquete Office; U/L cuenta con OpenOffice que es muy compatible. Seguridad: No hay acuerdo sobre qu sistema operativo es ms seguro. Conexin entre ordenadores: generalmente para aprovechar CPU, Windows no puede, U/L es intrnseco al sistema operativo por lo que puede. Entornos grficos: Windows cuenta con uno, U/L con cientos.

12. ASPECTOS LEGALES y TAREAS/RESPONSABILIDADES El administrador de sistema operativo y redes puede llegar a hacer cosas, sin saber, que estn fuera de la legalidad, como abrir simplemente un archivo o directorio de la carpeta personal de un trabajador. Actualmente existen colegios profesionales para dar apoyo legal e informacin a los informticos en estos aspectos. Son tareas del administrador: Velar por el buen funcionamiento de los servidores: es decir cuidar la proteccin fsica de los mismos, velar por unos tiempos de respuesta y recursos correctos, mantener el sistema operativo actualizado as como el software que le es asignado. Garantizar la informacin que contienen los servidores: hacer copias de seguridad siguiendo la poltica que se haya adoptado. Configurar adecuadamente todo el hardware del sistema.

Administracin de Redes y Sistemas Operativos 9

TEMA 3 ADMINISTRACIN DE USUARIOS

Tema 3 Administracin de Usuarios 1. Diseo del entorno de usuarios 2. Diseo en los servidores 3. Configuracin de terminales de trabajo 4. Mantenimiento de los terminales de trabajo 5. Formacin del usuario 6. Centro de atencin al usuario 7. Responsabilidades del administrador de usuarios y aspectos legales

1. DISEO DEL ENTORNO DE USUARIOS Disear el entorno de los usuarios significa preparar todo aquello con lo que se encontrar el usuario cuando utilice el sistema informtico de la organizacin. La idea es que debe resultar fcil e intuitivo para el usuario, proporcionar un entorno homogneo (si el usuario cambiar de Terminal, no le debe resultar extrao), el sistema debe ser rpido de respuesta de los servidores y en la red, debe aportar un buen nivel de seguridad y adems debe ser fcil de administrar (fcil de actualizar, de reinstalar, de reconfigurar, fcil en las copias de seguridad). Todo esto supone una contradiccin informtica, dado que la seguridad acostumbra a estar reida con la comodidad y la velocidad. Las necesidades de los usuarios generalmente son: Un Terminal de trabajo. Un lugar donde se pueda imprimir. Espacio para guardar la informacin. Software para trabajar: que dividiremos en Software de base (sistema operativo y aplicaciones bsicas de comunicaciones en los servidores), software de ofimtica, software de comunicaciones y aplicaciones especficas como control de produccin, nminas, etc.

A partir de todas estas necesidades, podemos elaborar tres diseos informticos distintos, con sus pros y sus contras: Primer diseo: Todos los usuarios ven todos los programas y todas las aplicaciones, con permisos de lectura y ejecucin para todo. Las aplicaciones especficas que ya contaban con permisos de acceso propios, quedan controladas por las propias aplicaciones, y en las carpetas de usuario solo puede entrar el propio usuario. Las ventajas de este sistema es que es muy fcil de administrar, es fcil preparar un Terminal modelo, una vez clonado un equipo casi no existe ajuste final, el cambio de puesto de trabajo de un usuario no implica modificar en nada su perfil. Lo negativo, en cambio, es que la idea de grupo de trabajo no existe, por lo que compartir informacin con un grupo de personas no es posible; de hecho si un usuario quiere compartir la informacin de su carpeta personal, estar disponible para toda la organizacin. Adems el usuario puede perderse ante tanto software disponible no sabiendo el que tiene que utilizar para trabajar y el que no. Segundo diseo: Los usuario se agrupan de manera natural en grupos de trabajo, de manera que un usuario pertenece a un grupo y slo a uno; una aplicacin o programa puede funcionar para todo el mundo o slo para un grupo; al igual que antes las aplicaciones especficas siguen controlando sus permisos de acceso; a las carpetas de usuario slo puede entrar el usuario con permisos de lectura, escritura y ejecucin. Las ventajas de este diseo es que crear un usuario implica tener en cuenta a qu grupo deber pertenecer. El usuario puede acceder a la informacin personal y a la del grupo por lo que la proteccin de la informacin est ms asegurada; no se pueden producir manipulaciones incorrectas del software (ni se la el propio usuario) ya que solo aparece el software que se debe utilizar por cada grupo. Se puede compartir informacin con el grupo de trabajo no siendo accesible para el resto de usuarios. Lo malo de este diseo es que modificar el esquema de trabajo puede llevar a una reorganizacin completa de permisos de grupos; el cambio de puesto de una persona implica modificar el perfil (en caso de que cambie de grupo); compartir informacin entre grupos sigue siendo complejo.

10 Administracin de Redes y Sistemas Operativos

Tercer diseo: Los usuarios, como antes, se agrupan pero un usuario puede pertenecer a un grupo o a ms; una aplicacin puede funcionar para todos los usuarios, o para uno o ms grupos; las aplicaciones especficas, como siempre, siguen controlando el acceso propio. Las ventajas de poder pertenecer a ms de un grupo son varias: Ahora s que existe una verdadera idea de grupo de trabajo, se simplifica la administracin, se puede compartir informacin sensible entre grupos de trabajo distintos, etc. Lo negativo, como en el segundo diseo, al crear un usuario debemos saber a qu grupo o grupos pertenece; el cambio en el puesto de trabajo de un usuario implica modificar el perfil
Tabla del Terminal Tabla del Servidor

Para poder decidirse por cualquiera de estos diseos hay que elaborar la tabla de aplicaciones. Es una tabla donde en la primera columna aparecen las aplicaciones existentes, en segundo lugar si se ejecutan en local (el propio Terminal) o en remoto (el servidor, lo cual aumenta la carga de trabajo para ste y el flujo de la red), si la informacin se almacena en local o en el servidor y los permisos que se les da a los distintos grupos de trabajo. En la figura lateral podemos observar esta primera tabla. La tabla inferior muestra los mismos datos, pero aplicndolos no ya a un Terminal, sino al servidor; lgicamente el diseo de los terminales va indisolublemente unido al diseo del servidor.

Por ltimo, es fundamental el sistema operativo del Terminal de trabajo, el cual en los ltimos tiempos es un sistema operativo de red con interfaz grfica que facilite el uso del mismo. Su sencillez y flexibilidad de uso hace que sea inversamente fcil de administrar, es decir es difcil de instalar, configurar, y muy fcil de desconfigurar por manos inexpertas.

2. DISEO EN LOS SERVIDORES Como indicbamos anteriormente, el diseo de los terminales de trabajo lleva emparejado el diseo del servidor o servidores. Para hacerlo adecuadamente y que no tengamos que llevar a cabo cambios de ltima hora que afecten tanto a los servidores como a todos y cada uno de los terminales, debemos elaborar escrupulosamente la tabla del servidor, para conocer qu aplicaciones se instalarn en l, saber donde se ubicar la informacin de los distintos programas y con todo ello prever las necesidades de disco y las particiones que debemos realizar. Respecto a las particiones sabemos que son 4: de sistema, de usuarios, de aplicaciones y de datos; aunque tambin hay que decir que a poco que la organizacin sea medianamente grande, en lugar de particiones deberemos hablar de discos duros para cada una de estas 4 actividades La saturacin de la red es otro aspecto importante a tener en cuenta. Si las peticiones de los usuarios son tantas que el sistema se vuelve lento e inestable, habr que repartir la carga de trabajo mediante diversos sistemas: usar tecnologa SCSI (la ms rpida), implementar servidores redundantes o servidores RAID, etc.

3. CONFIGURACIN DE TERMINALES DE TRABAJO Finalmente configuramos los terminales de trabajo. Por una lado podemos decir que cuanto menos software se encuentre en el disco del usuario, menos peligro existe de prdida de informacin y de tiempo para recuperar el equipo; pero claro, si todo se encuentra en el servidor, probablemente lo colapsaremos, tambin

Administracin de Redes y Sistemas Operativos 11

colapsaremos la red, el sistema funcionar muy lentamente y tendremos muchas quejas de los usuarios acerca del rendimiento general del sistema. Obviamente, los inconvenientes superan a las ventajas, por lo que colocaremos todo el software de base, los paquetes de ofimtica y el software que utiliza toda la organizacin en cada uno de los terminales de trabajo. Bueno, esto tampoco es realmente as, crearemos lo que se llama un Terminal modelo con todo el software y la configuracin que debe tener, es decir, instalamos el sistema operativo, las aplicaciones, los clientes de las aplicaciones remotas, configuramos todas las opciones del sistema operativo para ajustarlo a las necesidades de la organizacin y lo probamos durante algn tiempo. Cuando estamos seguros que todo funciona a la perfeccin y que no debemos aplicar ningn cambio ms, creamos una imagen de disco de este Terminal modelo, lo situamos en la particin de administracin en el disco duro del servidor, y lo utilizamos para clonarlo tantas veces como terminales debamos configurar.

4. MANTENIMIENTO DE LOS TERMINALES DE TRABAJO Por mantenimiento de los terminales de trabajo entendemos todas las acciones necesarias para que el equipamiento est en ptimas condiciones de funcionamiento para el usuario final y distinguimos dos partes: el mantenimiento del equipamiento y las tareas peridicas de mantenimiento. El mantenimiento del equipamiento puede abarcar la sustitucin y/o actualizacin del hardware o software del Terminal de trabajo por varias causas: avera grave de hardware a sustituir, aadir un nuevo elemento de hardware por poltica de empresa, sustitucin completa de un ordenador, reinstalacin de software de un equipo por cambio de ubicacin y/o funciones del usuario, etc. Tambin puede acontecer la desconfiguracin completa del equipo debido a un virus, al propio usuario o a fallos de corriente elctrica. Para proceder correctamente con este mantenimiento, es fundamental tener bien preparado y configurado un Terminal modelo y adems tener piezas de hardware (sobre todo las ms comunes) para reparar sencillas averas. Cuando se hace necesario extraer datos de un equipo, aunque siempre intentamos que los datos sensibles se encuentren en el servidor, muchas veces hay que recuperar tambin datos en terminales de trabajo daados, tenemos dos opciones: Mover el disco duro e instalndolo como disco secundario en otro ordenador, y tras extraer los datos, y con el CD de clonacin, recuperarlo a su estado habitual, copiando de nuevo los datos en l. Utilizar unidades Zip/Jazz para este proceso. Las tareas peridicas de mantenimiento son la segunda parte del mantenimiento de los terminales de trabajo. Son tareas que se deben realizar forzosamente cada cierto tiempo y que son transparentes para el usuario final. Estar tareas pueden ser, entre otras: Control para que no se llenen los buzones de correo de los usuarios, esto se hace en el servidor. Control para que no se llenen los directorios de los usuarios en el disco compartido, tambin se hace en el servidor. Actualizar el fichero de firmas del software antivirus, para que se actualicen as todos los terminales de trabajo y mantener este problema a raya. Si un usuario cree, a pesar de todo, tener o haber tenido un virus, debe contactar con el administrador de usuarios para explicarle el problema y evitar as una propagacin o, lo que es peor, que pueda salir al exterior. Control remoto: Es un software que permite desde una estacin de trabajo, controlar otra tal como si se encontrase delante de ella y as poder diagnosticar y tratar los posibles problemas del Terminal.

12 Administracin de Redes y Sistemas Operativos

Documentacin y procedimientos: Un procedimiento es una descripcin del conjunto de acciones necesarias para realizar una tarea determinada; todos estos procedimientos deben encontrarse documentados en un manual, dado que a menudo intervienen distintos administradores y es conveniente saber qu procesos cambian segn qu software en momentos determinados.

5. FORMACIN DEL USUARIO de Un aspecto a menudo olvidado por las grandes organizaciones es la formacin los usuarios. Las ventajas son muchas: Mejora del uso del software Mejora en la eficiencia y satisfaccin del personal Disminucin de incidencias en el dpto. de informtica y, por lo tanto, de los costes derivados de ellos.

Adems, las desventajas de no llevar a cabo un plan de formacin, tambin son muchas: Prdida de tiempo de los usuarios y errores frecuentes Probabilidad de que estos errores provoquen mal funcionamiento del sistema Gran parte del volumen de trabajo del dpto. de informtica se deber, sin duda, a consultas de los usuarios que se podran haber evitado con un buen plan inicial. Desconcierto, quejas, sensacin de mala instalacin o software incorrecto en el usuario. Generalmente la formacin del usuario tendr 3 planes de formacin distintos: Planes de actualizacin: Cuando se actualiza software se puede informar en una charla, seminario o cursillo del porqu, como y qu ventajas aportarn estos cambios. Implantacin de software nuevo: Es mucho ms compleja que la anterior pues debemos incluir a los usuarios en esta nueva implantacin, preguntndoles sus dudas, cmo creen que debe funcionar el programa, pidiendo opiniones, propuestas o quejas. Bien es cierto que daremos una imagen de inters por el usuario pero tambin es importante hacerles ver que no siempre es posible hacer todo lo que se pide y, por tanto, no se podrn satisfacer todas las peticiones. Usuarios nuevos: Cursillo con un fuerte componente estndar y una parte ms pequea dedicada a su especfico puesto de trabajo.

6. CENTRO DE ATENCIN AL USUARIO Para el usuario el ordenador debe ser una herramienta para aumentar su grado de organizacin y/o eficiencia y, por ello, no deben conocer necesariamente todos los detalles tcnicos del equipamiento que utiliza. Cuando un usuario tiene un problema informtico, debe dirigirse a un nico lugar para resolverlo, que es el centro de atencin al usuario (CAU); este CAU es una seccin del departamento de informtica que se dedica a gestionar las incidencias de los usuarios, resolverlas y documentarlas para que las soluciones puedan servir para el mismo o parecidos problemas futuros de otros usuarios. Cuando el usuario contacto con el CAU lo har con el personal de atencin (Primer nivel) que no tiene que ser necesariamente un tcnico; ste buscar en la base de datos el diagnstico de los sntomas que el usuario refiera; si lo encuentra y le da la solucin, perfecto; en otro caso abrir una incidencia con toda la informacin que se encauzar a un tcnico (segundo nivel) y ste solucionar el problema, documentndolo en la base de datos de primer nivel para futuras consultas.

Administracin de Redes y Sistemas Operativos 13

Adems de esto, alguien debe encargarse del control de incidencias pendientes, y realizar un seguimiento en los casos de mayor duracin, avisando al usuario de los cambios que se van generando para que comprenda que el departamento de informtica se preocupa de su problema Tambin el CAU ejerce de filtro de peticiones, pues en algunos casos el usuario exige procedimientos que no se pueden realizar, como puede ser por ejemplo la instalacin de un software que se encuentra fuera de la organizacin.

7. RESPONSABILIDADES DEL ADMINISTRADOR DE USUARIOS Configurar los equipos terminales de trabajo. Abrir cuentas de usuario, espacio privado y cuentas de correo y mantenerlas para todos los usuarios. Facilitar mediante nombre de usuario y contrasea el acceso a aplicaciones corporativas o espacios de trabajo en grupo. Realizar copias de seguridad de los datos de los usuarios. Mantener y gestionar el hardware de los terminales de trabajo., Gestionar y actualizar el CAU.

8. ASPECTOS LEGALES Existe actualmente un vaco legal sobre el tratamiento y gestin de la informacin personal del usuario en los sistemas informticos. Debemos ser conscientes del momento en que pueda surgir un problema y es entonces cuando necesitaremos un adecuado asesoramiento legal para resolverlo.

14 Administracin de Redes y Sistemas Operativos

TEMA 4 ADMINISTRACIN DE LA RED

1. ELEMENTOS Y DISEO FSICO DE UNA RED Las redes, por su dispersin se pueden clasificar en: LAN: Local area network o redes de rea local, de 10 metros a 1 km. MAN: Metropolitan area network o redes de area metropolitana: de 1 a 10 kms. WAN: Wide are network, ms de 10 kms.

Tema 4 Administracin de la red 1. Elementos y diseo fsico de una red 2. Protocolos de comunicacin 3. Configuracin de la red en los ordenadores (cliente/servidor) 4. Seguridad de la red 5. Responsabilidades del administrador

Los elementos que encontramos en una red son varios, por un lado tenemos el cableado del que existen varios tipos: Par trenzado: Son diferentes hilos conductores que pueden alcanzar los 100 metros de distancia sin experimentar amortiguamientos de la seal y una velocidad entre 10 y 100 Mbps. A su vez encontramos varios tipos: el STP (shielded twisted pair) son dos pares de hilos conductores recubiertos por una malla. El UTP (unshielded twisted pair) son cables sin apantallas formado por cuatro pares de hilos, que pueden ser de categora 3 (velocidades de hasta 30 Mbps) o de categora 5 (hasta 100 Mbps). ste ltimo es el tpico cable que conecta el MODEM o router ADSL con el ordenador. Cable coaxial: Es un nico conductor interno con varias capas de proteccin, permite velocidades de hasta 20 Mbps en distancias de hasta 2 kms, mientras que en distancia de hasta 100 metros llega los 100 Mpbs. Se reducen con este cable los problemas de amortiguamiento en distancias cortas, pero es muy sensible al ruido producido por aparatos elctricos. Para conectar diferentes ordenadores a un mismo cable coaxial se utilizan los conectores en T. Fibra ptica: Permite una gran anchura de banda y puede conseguir velocidades del orden de centenares de Mbps e incluso Gbps. Experimenta una reduccin mnima de la seal, es inmune a las interferencias electromagnticas y resulta difcil de interceptar y espiar. Los elementos de interconexin de redes son: Repetidores: Son dispositivos no inteligentes que amplifican la seal y evitan los problemas de amortiguamiento. Puente: llamado bridge, conecta entre s dos segmentos de red. Router: Gestiona el trfico de paquetes que proviene del exterior de la red y se dirige al interior, o al revs. Ofrecen servicios de encaminamiento de los datos que se transmiten. Pasarela: Acta en los niveles superiores de la jerarqua de protocolos y permiten la interconexin de redes que utilizan protocolos incompatibles. Las tipologas ms habituales en el diseo de redes son: Topologa de bus: En una red en bus todos los nodos se conectan a un cable comn, de forma que todos los mensajes llegan a todos los nodos, no hay que encaminar la informacin, la fiabilidad de la comunicacin solo depende del bus (esto es un punto crtico), la configuracin es muy flexible y modular siendo de bajo coste (por lo que todava se utiliza bastante). Topologa en anillo: El cable va de Terminal en Terminal si ningn punto final. Cada nodo amplifica y repite la informacin que recibe, no es necesario dirigir el encaminamiento de la informacin y la fiabilidad del anillo depende de cada uno de los nodos, de forma que si un solo Terminal cae, la red entera puede dejar de funcionar. Topologa en estrella: Todos los terminales de trabajo y el servidor se conectan a un nico concentrador o conmutador, lo cual se convierte en un punto crtico.

Topologas Bus En Estrella En Anillo

Administracin de Redes y Sistemas Operativos 15

En los ltimos aos estn proliferando las redes sin cable WLAN (Greles local area network) que solventa varios problemas como la dificultad de cablear en determinados lugares y facilita el crecimiento posterior de la red. Por el contrario la seguridad es su taln de Aquiles, dado que es muy fcil pasar a la red al no existir cortafuegos y el hardware actual no es demasiado seguro.

2. PROTOCOLOS DE COMUNICACIN NetBIOS/NetBEUI: Fue desarrollado por IBM y lo utilizan Windows 98 y NT. IPX/SPX: Desarrollado por Novell y utilizado por el sistema operativo de red NetWare. TCP/IP: Son un conjunto de protocolos que permiten compartir recursos de ordenadores de una red, desarrollado en 1972 por el departamento de defensa de los Estados Unidos, se caracteriza por enviar datagramas segmentados que son recibidos, recuperados y reorganizados (dado que no se tienen que recibir en orden cronolgico) en el ordenador de destino. Existen interesantes comandos del protocolo TCP/IP que nos interesa conocer: o ARP: Addres resolution protocol, muestra las tablas de mapeo de las direcciones IP. o IPCONFIG: Configuracin IP. o NETSTAT: Estadsticas de protocolo y conexiones actuales. o PING: Enva datagramas a una mquina de destino y mide el tiempo de respuesta, de este modo podemos saber si la mquina destino funciona o no. o TRACERT: Muestra el camino que conduce a un destino determinado.

3. CONFIGURACIN DE LA RED EN LOS ORDENADORES CLIENTE/SERVIDOR Para configurar los terminales de trabajo en la red, los pasos que debemos seguir son los siguientes: Instalacin y configuracin de los controladores de la tarjeta de red, es decir, instalar los drivers de las tarjetas Ethernet. Seleccin y configuracin del protocolo de comunicacin: puede ser Novell, Apple talk o, lo ms frecuente TCP/IP. En este ltimo caso debemos configurar por este orden: o Direccin IP y mscara de subred: Reconoce la mquina de entre todas las que se hallan conectadas a la misma red. Suele tener las 3 primeras cifras iguales y la ltima permite tener hasta 254 direcciones o mquinas en la subred. Configuracin DNS: Permite que la traduccin de nombres de direcciones IP (por ejemplo www.uoc.edu) sea traducida a su direccin real. Puerta de enlace: Se introduce la direccin IP de los routers que permiten la salida al exterior, para poder tener Internet por ejemplo.

Instalacin y configuracin de los clientes, para establecer un dominio de trabajo. Otros aspectos configurables: control de accesos, comparticin de ficheros, carpetas e impresoras.

16 Administracin de Redes y Sistemas Operativos

4. SEGURIDAD DE LA RED Una red es un conglomerado de muchos elementos heterogneos, y debemos cuidar especialmente los siguientes aspectos: Sistema de ficheros: Slo deben acceder los usuarios autorizados. Cdigo malicioso: Vigilar que especialmente virus y troyanos no infecten programas autorizados. Autenticacin de usuarios: Proceso de verificacin de la identidad de una persona en el momento de acceder a un recurso. Criptografa: Permite la confidencialidad de la informacin que viaja por la red. Herramientas de seguridad: Existen herramientas para comprobar distintos aspectos de la red, y deben ser utilizadas. Monitorizacin del sistema: Una vez montada la red hay que vigilar que se mantienenlos parmetros de velocidad, comodidad y seguridad adecuados.

5. RESPONSABILIDADES DEL ADMINISTRADOR Es evidente que las responsabilidades del administrador de la red son varias: velar por el funcionamiento correcto, garantizar un tiempo de respuesta que se encuentre entre los mrgenes establecidos, controlar la seguridad, actualizar el sistema operativo de los servidores, gestionar y controlar las impresoras de la red y los servicios propios de la misma. Tambin es importante la adquisicin de licencias para software de red, pues el uso de licencias monousuarios en red pueden conllevar sanciones posteriores.

Administracin de Redes y Sistemas Operativos 17

TEMA 5 ADMINISTRACIN DE LOS DATOS

Tema 5 Administracin de los datos 1. Los datos y la organizacin 2. Dnde est la informacin 3. La consulta de la informacin 4. Proteccin de la informacin 5. Responsabilidades del administrador

1. LOS DATOS Y LA ORGANIZACIN La organizacin crea datos constantemente, pero un gran depsito de datos en bruto no es til, porque si no existe coherencia no tiene ningn tipo de sentido. Los datos son los registros de los sucesos y lo que realmente nos interesa es la informacin: el procesamiento de estos datos para que tengan sentido; aunque en nuestra vida diaria usamos los dos conceptos como si fueran el mismo. Generalmente, se guardan datos y se presenta al usuario informacin, es decir, el procesamiento de estos datos para que tenga sentido, en el dispositivo de salida. El gran problema es que el software puede guardar los datos en formatos diferentes, en sitios distintos y adems siendo incompatible con otros programas. El sistema informtico pretende guardar la informacin de la organizacin para que sea fcil recuperarla posteriormente, manipularla y presentarla al usuario.

2. DNDE EST LA INFORMACIN Ya apuntbamos anteriormente los principales problemas con los datos: estn guardados en ficheros, con formatos determinados, no siempre en el sitio donde se necesitan y probablemente incompatibles entre s. As, en la estructura de la red pueden existir datos dispersos en diferentes particiones y carpetas del servidor y de cualquiera de los terminales de trabajo, por no comentar los porttiles, que deben aparecer como dispositivos dentro y fuera de la organizacin, sacando datos al exterior y a veces conectndose y sincronizando los datos generados. Varias soluciones podemos poner en marcha para intentar paliar todos estos problemas: A partir de la tabla de aplicaciones y del diseo de los usuarios podemos saber dnde se guarda la informacin. A partir de la misma tabla sabemos qu software genera informacin local que debe ser guardada en las copias de seguridad diarias. La informacin no controlable generada con software comercial debe guardarse por defecto en la unidad de red privada y no en el disco duro del Terminal individual.

3. LA CONSULTA DE LA INFORMACIN Igual que los usuarios generan datos constantemente, tambin necesitan poder consultarlos (para, a su vez, generar ms datos). Ya que la seguridad de toda la informacin de la organizacin es responsabilidad del administrador, ste debe conocer la localizacin de los datos, disponer de un mtodo de restauracin en caso de problemas y tener una idea general del contenido. Cuando conseguimos que todos los datos estn en los servidores podemos hacer que diferentes grupos/usuarios accedan a los mismos modificndolos o actualizndolos, de forma que no se dupliquen los mismos; adems, sin duda alguna la seguridad es mucho ms alta.

18 Administracin de Redes y Sistemas Operativos

Ahora bien, para manipular toda esa informacin que se encuentra en los servidores, se inventaron los servidores de bases de datos, que intentan integrar en un nico punto toda la informacin, as es ms rpido, seguro, fcil de usar, sencillo de ampliar, accesible para copias de seguridad, toda la informacin aunque pueda entrar en formatos heterogneos se encuentra en un formato homogneo, facilita las consultas de la direccin, etc. Entre estos sistemas comerciales encontramos Microsoft Access que se usa solo en sobremesa, SQL Server es su hermano mayor que acepta mayor cantidad de datos y consultas, Informix y Oracle que tambin son realmente potentes. Actualmente todava se ha llevado mucho ms all la idea de los servidores de bases de datos, mediante los ERP. Un ERP es un conjunto de mdulos o paquetes perfectamente integrados que circulan sobre un servidor de bases de datos, de manera que todas las aplicaciones que el usuario requiera ya se encuentren instaladas y homogeneizadas. Un ejemplo de ello es SAP/R3, donde los sistemas de nminas, facturas, ventas, etc, se encuentran en una plataforma homognea; en un sistema adems que intenta adaptarse a las caractersticas de la empresa, pero que claro, tambin hace que los usuarios tengan que amoldarse al nuevo sistema. Adems adquirir un SAP implica adquirir un servicio, de manera que cambios de moneda, cambios en el IRPF, etc, se mantiene constantemente actualizado.

4. PROTECCIN DE LA INFORMACIN La informacin es uno de los bienes ms valiosos de la organizacin. Se debe invertir una parte importante de los esfuerzos en salvaguardarla. La seguridad ya la hemos tratado en el apartado anterior, pero por otro lado, las copias de seguridad se realizarn de forma ms segura y completa si las aplicaciones guardan la informacin por defecto en los espacios personales de red o en el servidor, no en el Terminal de cada usuario; y se le explica a los usuarios el uso que deben hacer de su espacio personal de red para salvaguardar su informacin. En cuanto a las copias de seguridad estudiaremos brevemente las que se pueden realizar con el backup recovery de Oracle. Pueden ser copias lgicas o fsicas. Las copias lgicas son breves en el tiempo pero su restauracin puede ser muy laboriosa, incluso de das. Este sistema funciona bien como complemento al sistema de copias fsico, por si se estropea alguna tabla, ya que se puede importar sta nicamente sin importar el resto. Por otro lado las copias fsicas son el sistema por excelencia en oracle, dado que con un archiveLog activado se puede recuperar el sistema hasta un segundo antes de la cada, eso s siempre que el log est activado.

5. RESPONSABILIDADES DEL ADMINISTRADOR Velar para que los datos se almacenen en los servidores Mantener en buen funcionamiento las bases de datos Disear y llevar a cabo una adecuada poltica de copias de seguridad. Evitar en lo posible la duplicacin de informacin. Saber donde se encuentran todos los datos sensibles de la organizacin.

Administracin de Redes y Sistemas Operativos 19

TEMA 6 ADMINISTRACIN DE LA WEB

Tema 6 Administracin de la web 1. Los servidores web y la organizacin 2. El administrador y el servidor 3. Recursos para crear pginas 4. Ejemplos de servidores 5. Seguridad 6. Aspectos legales 7. Responsabilidades del administrador

1. LOS SERVIDORES WEB Y LA ORGANIZACIN Normalmente, cuando el servidor web se utiliza como parte de una aplicacin, solamente ejerce de interfaz para la aplicacin, de forma que es un elemento ms. Es un medio, eso s muy flexible, para hacer funcionar la aplicacin. El servidor web tambin puede funcionar como servidor de pginas, tanto para la intranet como para Internet; en este ltimo caso hay que ser muy cuidadoso con los datos y la esttica comn pues muestra la imagen corporativa de la organizacin a la comunidad Internet, es decir, a todo el mundo.

2. EL ADMINISTRADOR Y EL SERVIDOR El binomio administrador-servidor debe coordinarse perfectamente para obtener el mejor rendimiento posible. Un servidor web se compone de un ncleo que es el centro del servidor web y de mdulos que aumentan la funcionalidad del mismo. Instalar un servidor web no plantea muchos problemas dado que es un proceso bastante automatizado y que proporciona herramientas de control que nos pueden servir para monitorizar y analizar el rendimiento. Hay que ser muy estricto en la organizacin y estructura de directorios y pginas para saber en todo momento donde se encuentran o pueden encontrar determinadas pginas y as poder obrar en consecuencia al realizar la copia de seguridad; pero eso s, el administrador instala y cuida la web, pero no el contenido. Para el administrador web existen dos tipos de usuarios: el consumidor del material de la web, y el creador el mismo; el administrador debe promover la utilizacin de los recursos de la web entre los creadores de pginas, les debe proporcionar los recursos y conocimientos necesarios para que puedan crear pginas web y colgarlas en el servidor.

3. RECURSOS PARA CREAR PGINAS WEB HTML: Es el lenguaje por excelencia y que interpretan todos los navegadores, basado en marcas actualmente est algo anticuado por la imposibilidad de construir pginas dinmicas, pero aun as es fundamental conocerlo para cualquier administrador web. XML: Intentado poseer un lenguaje de marcas nico, es un estndar ajustado a las necesidades de Internet. Al ser incompatible con el HTML, se cre otro lenguaje intermedio y compatible el XHTML. CSS: Para que todas las pginas tuvieran un mismo estilo e imagen corporativa: color de texto, fuentes, etc. se crearon las Cascade Style Sheet u hojas de estilo en cascada; de esta forma se definen todos estos parmetros de estilo en un nico punto y automticamente se aplican a todas las pginas de un sitio web, sin necesidad de ir cambiando estos parmetros en todas ellas. JavaScript: Es un cdigo de ejecucin insertado dentro de la pgina HTML que se ejecuta en el cliente y que dota de cierto dinamismo la pgina web. CGI: Common Gateway Interface fue el primer intento de acceder a bases de datos a travs de pginas web, el problema es que consume demasiados recursos en el servidor. Perl: Practical Extraction and Report Language, permite as mismo ejecutar cdigo en el servidor. Java: Son programas que se copian del servidor al cliente y es en ste ltimo donde se ejecutan con fuertes restricciones de seguridad. La independencia de plataforma y de sistema operativo es uno de los puntos clave de su xito.

20 Administracin de Redes y Sistemas Operativos

Servlets (JDBC): Son programas que se ejecutan en un servidor web y construyen una pgina web, con la ventaja sobre el CGI de que consumen menos recursos pues se ejecutan como hilos de ejecucin y no como procesos. ESL: Embedded Scripting Language, es una programacin como JavaScript pero se trata de un elenguaje completo que se ejecuta en el servidor. PHP: Hypertext preporcessor, el servidor interpreta las pginas PHP y las convierte en HTML antes de envirselas al cliente. Es el lenguaje por excelencia de las pginas dinmicas. ASP: Active Server Page, Servidor de pginas activo, es una DLL de Microsoft que debe correr en servidor Windows y proporciona prcticamente, los mismos elementos que PHP pero con el inconveniente que no es cdigo libre, sino propiedad de Microsoft. JSP: Servidor de pginas Java, nos permite mezclar HTML esttico con dinmico.

4. EJEMPLOS DE SERVIDORES Apache Server: Es gratuito en la pgina www.apache.org. Corre sobre plataforma Linux aunque hay versiones Windows, es cdigo libre y es un servidor francamente potente. Internet Information Server (IIS): Es el servidor web de Microsoft. Netscape SuiteSpot: Fue gratuito hasta determinada versin.

En general todos estos servidores son sencillos de instalar y llevan herramientas para monitorizar y controlar la seguridad, adems de soportar sin problemas un nmero elevado de accesos concurrentes.

5. SEGURIDAD Hay que vigilar distintos aspectos: Seguridad de publicacin: para evitar que se puedan publicar por error, datos internos de la organizacin. Seguridad del software: la cantidad de informacin a la que pueden acceder los servidores les hace especialmente interesantes para ser atacados. Protocolos de comunicacin cifrados: Los famosos HTTPS son los protocolos ms extendidos para comunicacin cifrada por Internet, se basan en el estndar SSL y la escucha se realizar por el puerto 443 y no por el habitual 80. Registro de las conexiones: Con poco trabajo aadido los servidores web pueden registrar las direcciones DNS, fecha y hora, pginas y tiempo de conexin que ha tenido un determinado usuario. Copias de seguridad: El servidor web tiene pocos ficheros de configuracin, pero por su importancia y la imagen que puede dar dentro y fuera de la organizacin es indispensable volver a restaurarlo rpidamente en caso de fallo. Virus: Dado que un servidor web est constantemente distribuyendo documentos a clientes y proporcionando ficheros puede ser una fuente importante de infeccin dentro y fuera de la organizacin. Bases de datos: para acceder a bases de datos, lo usual es situar un cortafuegos entre la web y el servidor de aplicaciones, adems se sitan en mquinas separadas para que si se cuelga el servidor de aplicaciones no afecte al servidor web.

6. ASPECTOS LEGALES Aunque el administrador web no se encargue de los contenidos, s debe vigilarlos, dado que la aparicin de imgenes, msica, etc que han podido subir los

Administracin de Redes y Sistemas Operativos 21

administradores de contenidos pueden tener derechos de copyright. Cualquier creacin o producto de la creatividad humana se intenta proteger mediante la propiedad intelectual, y el caso del ciberespacio no es ninguna excepcin.

7. RESPONSABILIDADES DEL ADMINISTRADOR Hacer que la web se mantenga siempre activa, con un tiempo de respuesta dentro de los mrgenes aceptados, controlando su seguridad y las estadsticas que genera. Hacer que la web resulte homognea y prepara la formacin de las personas que deben mantener los contenidos, aunque nos debemos responsabilizar slo parcialmente de los mismos.

22 Administracin de Redes y Sistemas Operativos

TEMA 7 ADMINISTRACIN DE LA SEGURIDAD

1. SEGURIDAD INFORMTICA Dado que es completamente imposible garantizar la seguridad e inviolabilidad absoluta de un sistema informtico, en lugar del inalcanzable concepto de seguridad, ser preferible utilizar el trmino fiabilidad. Diremos que un sistema informtico es fiable cuando cumpla las tres propiedades siguientes: Confidencialidad: Slo pueden acceder a los recursos los elementos autorizados a hacerlo. Integridad: Los recursos del sistema slo pueden ser modificados o alterados por los elementos autorizados a hacerlo. Disponibilidad: Los recursos del sistema permanecen accesibles a los elementos autorizados. Los tipos de ataque que puede sufrir el hardware y el software pueden ser: Interrupcin: Es un ataque contra la disponibilidad, de forma que se destruye o queda no disponible un recurso del sistema. Intercepcin: Es un ataque contra la confidencialidad, donde un elemento no autorizado consigue el acceso a un recurso, como puede ser interceptar un correo electrnico dirigido a otra persona. Modificacin: Es un ataque contra la integridad, pues adems de conseguir el acceso no autorizado al recurso, se modifica, borra o altera de cualquier forma. Fabricacin: Es un ataque contra la integridad, pues se inserta o crea un objeto falsificado en el sistema, por ejemplo un usuario nuevo con su contrasea de acceso.

Tema 7 Administracin de la seguridad 1. Seguridad informtica 2. Seguridad del entorno 3. Seguridad del sistema 4. El delito informtico

La mayor parte de los ataques provienen de personas y pueden ser pasivos o activos. Los ataques pasivos son aquellos en los que el atacante no modifica ni destruye ningn recurso informtico, simplemente lo observa. Los ataques activos pueden ser varios: suplantacin de identidad, reactuacin (por ejemplo intentar repetir varias veces un ingreso en una cuenta bancaria), degradacin fraudulenta del servicio (por ejemplo interceptar y eliminar todos los mensajes de correo de un dominio o hacia una cuenta determinada) y modificacin de mensajes (se intercepta y se reenva modificado el mensaje). Las personas que pueden provocar estos ataques pueden ser el mismo usuario (por descuido o ignorancia el propio trabajador puede provocar grandes males en el sistema de una empresa), antiguos trabajadores (por lo que hay que anular todos los privilegios de los trabajadores en cuanto abandonan la empresa), intrusos informticos que pueden ser por hobbie, pueden ser remunerados por empresas contrarias o incluso por la propia empresa para tratar de descubrir sus puntos dbiles.

2. SEGURIDAD DEL ENTORNO Analizamos ahora las medidas de proteccin fsica que se pueden utilizar para evitar los accesos no autorizados a los sistemas informticos. Como medidas de prevencin podemos aplicar las siguientes: Mantener todos los servidores en una zona de acceso fsico restringido y ubicar los dispositivos de almacenamiento en un lugar diferente del resto del hardware. Llevar a cabo inventarios o registros de todos los elementos del sistema informtico.

Administracin de Redes y Sistemas Operativos 23

Utilizar cmaras de vigilancia y escoger una topologa de red adecuada a nuestra organizacin. Utilizar contraseas de entrada en la BIOS, en el sistema operativo, en los ahorros de pantalla, etc.

Y un apartado fundamental son establecer mecanismos de autenticacin, denominamos autenticacin al proceso de verificacin de la identidad de una persona o de un proceso que quiere acceder a los recursos de un sistema informtico. Dividiremos estos mecanismos de autenticacin en dos tipos, de usuarios y de datos. Los mecanismos de autenticacin de usuarios pueden estar basados en elementos conocidos por el usuario, en elementos que posee el usuario o biomtricos. Como elementos conocidos por el usuario es el conocido sistema de nombre de usuario y contrasea; es un mtodo muy extendido por la facilidad de uso y lo barato de su aplicacin pero en absoluto es seguro, especialmente porque tendemos a poner contraseas conocidas (telfono, DNI), a usar las mismas contraseas en varios procesos y a no cambiarlas nunca. Como elementos que posee el usuario destacan las tarjetas inteligentes, que pueden funcionar por contacto o por proximidad. Por ltimo los sistemas biomtricos son los ms seguros y tambin los ms caros; basados en la voz, escritura, huellas dactilares, patrones de retina o geometra de la mano, estn basados en caractersticas fsicas del usuario que no pueden copiarse fcilmente. Los mecanismos de proteccin de datos se basa en dos sistemas principalmente: la criptografa y la esteganografa. La criptografa es la ciencia y el estudio de la escritura secreta. Varios sistemas criptogrficos de clave secreta, pblica y compartida son la base de la firma digital. Destacan la funcin hash o resumen con algoritmos de 128, 256 e incluso 512 bits; tambin tenemos la PGP que es una herramienta criptogrfica en origen gratuita y de dominio pblico hasta determinada versin. La esteganografa es el conjunto de tcnicas que permiten ocultar o esconder cualquier tipo de datos. No se pretende aqu cifrar datos para intentar ocultarlos sino simplemente esconderlos en los bits menos representativos de archivos que pasaran completamente desapercibidos, como por ejemplo una imagen JPG. El fichero original y el que oculta informacin son una casi misma imagen, con el mismo tamao de archivo y esa es la principal caracterstica de esta tcnica, que al tratarse de un fichero normal y corriente no despierta sospechas. Es decir, un fichero criptografado se puede pensar que esconde informacin importante, y aunque tardemos mucho tiempo en descifrarlo lo conseguiremos; en cambio un fichero esteganografiado no despierta sospechas y, por eso mismo, no intenta descifrarse su contenido que, por otro lado, sera fcil de hacer.

3. SEGURIDAD DEL SISTEMA Ataques a contrasea Las contraseas en UNIX almacenadas en /etc/passwd son muy sensibles a los cambios. Cuando un usuario accede al sistema no se descifra su contrasea almacenada en este fichero, sino que se traduce la que ha introducido y se compara con la que est guardada en el fichero, si son iguales, de acuerdo, el usuario puede acceder al sistema. En ocasiones si la contrasea es demasiado fcil o guarda relacin con datos del usuario o su entorno puede intentar descifrarse por ingeniera social; si es una palabra que existe en el idioma del pas, se puede intentar encontrar con ataques de diccionario repetidos, mientras que si contiene pocos caracteres puede intentar descubrirse por ataques de fuerza bruta.

24 Administracin de Redes y Sistemas Operativos

Cdigo malicioso y amenazas lgicas Se denomina cdigo malicioso al que se inserta dentro de un programa autorizado y realiza una serie de acciones desconocidas por el usuario. Puede eliminar datos, reenviar informacin sensible por correo electrnico, etc. Este cdigo malicioso se vale de: Software incorrecto: agujeros de seguridad que deben ser parcheados constantemente actualizndonos el sistema operativo y los distintos programas. Bombas lgicas: partes de cdigo malicioso que se mantiene inerte hasta que se produce una cierta condicin: una fecha, una secuencia de teclas, etc. Virus, como los gusanos (se autoejecuta para propagarse por la red y colapsar el ancho de banda), troyanos (cdigo oculto que puede capturar contraseas y otros datos pero que aparentemente no produce daos en el sistema), bacterias (se reproducen hasta agotar los recursos del sistema) y backdoors (puertas de acceso a sistema operativo y software general que permite saltarse todas las medidas de seguridad establecidas).

Detectores (sniffers) Son programas que permiten la captura y el registro de la informacin que circula por una red y se basan en la activacin del modo promiscuo de las interfaces de red de los terminales de trabajo. Su actividad es difcilmente detectable pues no dejan huellas, sin embargo existen distintas herramientas software para comprobar la presencia de interfaces en modo promiscuo. Escneres Son herramientas de seguridad que sirven para detectar las vulnerabilidades de un sistema informtico, tanto local (escneres de sistema) como en la red (escneres de red). Ataques de denegacin de servicio Es toda accin iniciada por una persona o por otras causas, que inutiliza el hardware y/o software de manera que los recursos del sistema no sean accesibles desde la red. Pueden ser ataques contra el hardware de la red (envo de paquetes errneos al sistema que el receptor no puede procesar), ataques contra el sistema operativo (por ello hay que actualizarse con los ltimos parches disponibles) o ataques contra aplicaciones que utilizan el sistema operativo (aprovechando al igual que en el propio sistema operativo, errores de programacin). Auditora y ficheros log El logging es el proceso mediante el cual se registran en un fichero las actividades que se producen en un sistema operativo y log es el fichero propiamente dicho. Estos ficheros del sistema operativo son demasiado conocidos por los intrusos, por lo que conviene utilizar herramientas de logging diferentes y complementarias a ellas para llevar otros registros ms personalizados y ocultos. La informacin contenida en los ficheros log es fundamental en la investigacin de los delitos que se hayan podido cometer con el concurso de las nuevas tecnologas, y aunque no existe ninguna legislacin por el momento que obligue a crear y mantener estos ficheros, la gran mayora de proveedores de servicios disponen de ellos y los almacenan durante un perodo de tiempo razonable.

4. EL DELITO INFORMTICO El delito informtico no aparece en el actual Cdigo Penal (1995) por lo que se debe hablar de delitos cometidos con el concurso de la informtica o las nuevas tecnologas. Entre estos delitos destacan: Delitos contra la intimidad: Como la intercepcin del correo electrnico est asimilada a la violacin de la correspondencia, las conductas de apoderamiento de mensajes de correo electrnico, intercepcin de las telecomunicaciones y

Administracin de Redes y Sistemas Operativos 25

utilizacin de artificios de escucha, transmisin o grabacin de seales de telecomunicacin, estn prohibidas. Ahora bien, tambin es cierto que un correo electrnico laboral no debe ser utilizado con fines personales y de ah que las empresas reivindiquen sus derechos a poder consultar el correo electrnico de sus trabajadores. Usurpacin y cesin de datos reservados de carcter personal: El apoderamiento, utilizacin, modificacin, revelacin, difusin o cesin de datos reservados de carcter personal que se encuentren almacenados en ficheros, soportes informticos, electrnicos o telemticos son constitutivas de delito. La Ley Orgnica de Proteccin de Datos de Carcter Personal de 1999 establece 3 niveles de seguridad segn el tipo de datos que se contengan: o Nivel bsico: Requiere medidas de autenticacin y control de acceso a estos ficheros personales. o Nivel medio: El administrador debe elaborar un catlogo sobre las medidas de seguridad genricas y se deben implantar mecanismos seguros de autenticacin remota. o Nivel alto: Es necesario usar mtodos criptogrficos para evitar que los datos sensibles sean inteligibles, y los datos relativos a ideologa, creencias, origen racial, salud, vida sexual, etc, son susceptibles de ser protegidos en este nivel. Revelacin de secretos de empresa. Daos: Destruccin, alteracin, inutilizacin o cualquier otra modalidad que implique el dao de datos, software o documentos electrnicos almacenados en redes, soportes o sistemas informticos. Cuando se denuncia una accin delictiva deben valorarse los daos, como por ejemplo restauracin de una pgina web y compensacin por el tiempo durante el que no se ha podido prestar un determinado servicio. Delitos contra la propiedad intelectual: Reproduccin ntegra de software y venta al margen de los derechos de licencia, utilizacin de una nica licencia de software para su uso en varios ordenadores, instalacin de copias no autorizadas de software en u ordenador en el momento de su compra, publicacin del cdigo fuente de software al margen de los derechos de autor y ruptura de los mecanismos de proteccin que permiten el funcionamiento correcto aunque protegido del software.

26 Administracin de Redes y Sistemas Operativos

TEMA 8 EL SISTEMA INFORMTICO DENTRO DE LA ORGANIZACIN

1. EL JEFE DE INFORMTICA El jefe de informtica gestiona los recursos del departamento de informtica y acta de enlace entre el departamento y la organizacin. Esto quiere decir que el jefe de informtica posee informacin relativa a la situacin de la organizacin que el personal tcnico no es necesario que conozca; tambin se ocupa de velar por una serie de proyectos que desempean los administradores relativos a la informtica de la organizacin. Por todo ello, el jefe de informtica tiene una visin ms global de todo, y necesita la figura del administrador que es quien cuida de los servidores.

Tema 8 El sistema informtico dentro de la organizacin 1. El jefe de informtica 2. Los planes 3. Deteccin de necesidades de software en la organizacin 4. Implantacin/diseo de aplicaciones 5. Aspectos legales 6. Responsabilidades del jefe de informtica

2. LOS PLANES Una planificacin estratgica es un conjunto de propuestas realistas para fijar los objetivos de la organizacin en un futuro. La planificacin estratgica para minimizar riesgos y maximizar resultados, debe plantear estrategias y objetivos simples, claros, alcanzables y mensurables. Para realizar correctamente esta planificacin en los ltimos aos ha aparecido el anlisis DAFO (debilidades, amenazas, fortalezas y oportunidades) que se ha convertido en un instrumento de diagnstico para la direccin estratgica de la direccin. Se estudian las debilidades, amenazas, fortalezas y oportunidades y, de esa manera se establece un plan de contingencias, que aplicndolo exclusivamente al sector informtico intenta un doble objetivo: reducir la posibilidad de que pueda ocurrir algn percance y prever las acciones y actuaciones que es preciso poner en prctica si esto llegara a ocurrir. El plan de seguridad y anlisis de riesgos debe velar por toda la seguridad del equipamiento informtico, para ello se preguntan qu puede ir mal, estimar el coste que comportara para la organizacin y calcular la probabilidad de que se d cada uno de los posibles problemas. A la par se estudia paralelamente qu se intenta proteger y qu valor tiene dentro de la organizacin. Segn la probabilidad de riesgos, lo que cueste reponerlo y el valor que tiene dentro de la organizacin se tomarn unas u otras medidas conducentes a la proteccin de ese equipamiento.

3. DETECCIN DE LAS NECESIDADES DE SOFTWARE EN LA ORGANIZACIN Cuando la informtica est implantada en una organizacin, siempre existen necesidades nuevas, dado que una organizacin es una entidad viva, con necesidades que varan a lo largo del tiempo, entre las que se encuentran, por supuesto, las informticas. El cubrir estas necesidades suele tener 3 etapas: Deteccin: A menudo una necesidad muy evidente es difcil de detectar, puede provenir de muchas fuentes: quejas en el CAU, peticiones en el CAU, desde el mismo departamento de informtica para mejorar el servicio, el rendimiento o simplemente ampliarlo, desde cualquier punto de la organizacin, etc. por tanto la aparicin de una necesidad que deba cubrir el departamento de informtica puede llegar por muchas vas. Concrecin: Ya se ha detectado una necesidad, pero a menudo son personas ajenas al mundo de la informtica las que en su lenguaje habitual nos la demandan; es necesario por tanto concretar esa necesidad con sucesivas

Administracin de Redes y Sistemas Operativos 27

reuniones. La comunicacin con todas las personas y departamentos relacionados directa o indirectamente con la necesidad puede ser clave para concretar el problema y, especialmente, la solucin. Anlisis: Se elabora un primer estudio sobre viabilidad del proyecto para determinar cmo puede encajar en el sistema informtico actual o cual sera la mejor manera de solucionar el problema planteado. Se prepara un informe tcnico preliminar con todos los recursos hardware, software, humanos y econmicos con que contamos.

4. IMPLANTACIN/DISEO DE APLICACIONES Si para cubrir una necesidad informtica necesitamos software nuevo, se nos plantean varias posibilidades: modificar el software que tenemos (si podemos), comprar software estndar o crear software a medida. En el primer caso debemos ver si con actualizar el software de que disponemos es suficiente; esta tarea puede ser tan sencilla como leer las especificaciones va web o papel de las ltimas versiones disponibles, o tan compleja como pedir un cd-rom de evaluacin para comprobar in situ si se adapta a nuestra necesidades.
Decisin de software

Si nos decantamos por comprar software estndar debemos saber que nunca se adaptar del todo a nuestras necesidades y que se va a introducir un elemento nuevo que el personal de la organizacin deber aceptar y aprender; debemos estar pendientes de todo el proceso de parametrizacin del software (adaptacin a la empresa), implantacin en servidores, en los terminales y disear un plan de formacin para todos los usuarios. A pesar de estas desventajas es una opcin ms barata que la siguiente. El desarrollar software a medida implica a mucha gente, mucho dinero y muchas reuniones. Si la organizacin es lo suficientemente grande como para contar con un equipo de desarrollo perfecto, de no ser as deberemos contratar una empresa externa y, en este caso, habr que negociar en un contrato la propiedad de las fuentes y la programacin y, por otro lado, escoger una empresa lo suficientemente fuerte como para que se mantenga en el mercado y nos permita actualizaciones posteriores. En cualquier caso, escoger la mejor opcin es muy difcil y de ello se encargar el jefe de informtica. El diagrama lateral puede ser una ayuda para la eleccin de la mejor solucin.

5. ASPECTOS LEGALES Cuando sucede un problema de seguridad son varios los pasos a seguir: 1. Que el administrador de sistemas ponga en marcha el protocolo tcnico de parada, copia, restauracin; previamente recogiendo los ficheros de log y todas las pruebas para poder hallar al culpable. En caso de delitos como pornografa infantil se ha de poner primero en contacto con la polica con el fin de no destruir pruebas que podran resultar fundamentales.

28 Administracin de Redes y Sistemas Operativos

2. Hablar con la direccin de administracin sobre el problema de seguridad que se ha producido. 3. Informar al cuerpo de polica adecuado para denunciar el hecho, elaborando un informe exhaustivo sobre lo ocurrido con toda la documentacin y pruebas que se hayan podido reunir; se elabora paralelamente un informe de desperfectos y valoracin de daos econmicos y materiales. Respecto al software a medida, es fundamental la redaccin de un contrato adecuado para dilucidar la propiedad del cdigo fuente (o alguna parte de ste) antes de empezar el proyecto.

6. RESPONSABILIDADES DEL JEFE DE INFORMTICA Elaboracin del plan estratgico del departamento, subordinado al plan estratgico de la organizacin y velar por su cumplimiento. Elaboracin de los planes de actualizacin informtico y contingencias. Deteccin y concrecin de necesidades Actuacin y respuesta ante situaciones que comprometan la seguridad del sistema.

Miquel Colobran Huguet, Unidad de Delitos en Tecnologas de la Informacin-Mossos dEsquadra Junio 2005

Administracin de redes y sistemas operativos

Texto elaborado a partir de:

Bases de datos 1
TEMA 1 LOS DATOS: CONCEPTOS INTRODUCTORIOS

Tema 1 Los datos: conceptos introductorios 1. Los tres mundos: el real, el conceptual y el de las representaciones 2. El mundo conceptual: entidades y atributos 3. El mundo de las representacionesl 4. La memoria externa

1. LOS 3 MUNDOS: EL REAL, EL CONCEPTUAL Y EL DE LAS REPRESENTACIONES Los trminos que manejaremos en la asignatura, se distinguen en 3 mbitos diferentes: El mundo real: con los objetos cotidianos que nos rodean. Es la realidad que nos interesa y la que percibimos con nuestros sentidos, compuesta por objetos concretos, ya sean fsicos o no. El mundo de las conceptualizaciones lgicas: estos conceptos se obtienen tras observar y abstraer determinados conocimientos de la realidad que nos interesan en un momento dado. La informacin es un conocimiento transmisible y es en esta asignatura el nico conocimiento que nos interesa. Eso s, en el paso del mundo real a las conceptualizaciones encontramos pluralismo; as un profesor le interesar del alumno su calificacin en la asignatura; mientras que en secretara estarn ms interesados en datos del tipo si el alumno tiene beca o no, el importe de su matrcula, etc. El mundo de las representaciones informticas o datos: aqu toman forma las abstracciones del mundo anterior; es decir para transmitir esos conocimientos y poder comunicarlos es necesario representarlos fsicamente de alguna manera: los datos. Los datos son, por tanto, las representaciones fsicas de los conocimientos que tenemos de los objetos del mundo real. El paso de los conocimientos a los datos no es automtico, sino que es un proceso humano: un proceso de diseo. Sin duda, las tareas ms importantes del analista/diseador de aplicaciones informticas son: analizar los objetos del mundo real para hacer abstracciones y obtener una concepcin lgica de ellos; y posteriormente disear una representacin informtica concreta que se pueda tratar eficientemente. Hoy da, gracias a la evolucin tecnolgica se ha simplificado el proceso de diseo con lo cual la principal tarea suele ser la observacin/abstraccin.

Los tres mundos

2. EL MUNDO CONCEPTUAL: ENTIDADES Y ATRIBUTOS Para nuestro mundo conceptual, ser imprescindible conocer una serie de trminos: Entidad: es el objeto que conceptualizamos como distinguible y viene a ser el trmino sujeto que utilizamos en lingstica; as por ejemplo en la frase El alumno Pedro naci en el ao 1979; tenemos como entidad al alumno Pedro. Atributo: Es la propiedad que describimos de la entidad y que en la lingstica forma parte del predicado; as el atributo de la frase anterior sera naci en el ao. Valor: Es la magnitud a la que hace referencia el atributo; en este caso 1979. Lgicamente para conocer una informacin debemos conocer a quin hace referencia (entidad), sobre qu versa (atributo) y cual es la magnitud de ese atributo (valor). El tiempo: La informacin no es independiente del tiempo y este detalle habra que saber reflejarlo en nuestro sistema de bases de datos. Quiz nos parezca que la fecha de nacimiento de alguien no va a cambiar, o el DNI; quiz nos equivoquemos, pues el DNI puede tener un error policial y tener que cambiarse por otro, o incluso la fecha de nacimiento que nosotros hemos introducido en la

2 Bases de Datos 1

base de datos est errneo y haya que cambiarlo. Tanto el cambio posterior como todo el tiempo en que ese error se ha mantenido y se ha estado difundiendo esa informacin errnea convendra tenerlo registrado. As, para tener bien caracterizada una informacin, necesitaremos la entidad, el atributo, el valor y el tiempo. Dominios y valores nulos: El conjunto de valores vlidos o legales que puede tener un atributo recibe el nombre de dominio. As, en fecha de nacimiento de un alumno, podemos llegar a tomas desde 1900 hasta al actualidad. Ojo, no confundamos el dominio con el tipo; es cierto que el valor fecha debe ser de tipo numrico, y esto limita en parte los valores aceptables, pero no todos, dado que 23456 sera un valor aceptable, pero irreal en nuestro caso. El valor nulo puede definirse como el valor vaco, y debemos hacer saber a nuestro sistema si para un determinado atributo se admite ese valor vaco (por ejemplo un alumno de menos de 18 aos, no tiene porqu tener DNI). Identificadores y claves: Los atributos que conforman aplicaciones inyectivas se denominan identificadores. Es decir, si hablamos de personas adultas, el DNI es un identificador nico; pero si hablamos de accidentes de trfico, el DNI de la persona involucrada no es un identificador, pues puede haberse encontrado envuelto en ms de un accidente. Una clave es un atributo o conjunto de ellos que permite identificar las entidades individuales. En el ejemplo anterior, el conjunto de atributos DNI, fecha y hora, s que puede considerarse una clave, aunque cada uno de sus componentes no sean un identificador en s mismos.

3. EL MUNDO DE LAS REPRESENTACIONES Ya dijimos anteriormente que para transmitir y procesar la informacin, requerimos representarla mediante datos. Una representacin formal muy utilizada es la representacin tabular como la que vemos al margen, en ellas se utiliza una entidad por fula y un atributo de cada una de esas entidades por columna. Al productor cartesiano entidades x atributos es a lo que se denomina representacin tabular. Ahora bien, se denomina registro a la representacin de una entidad (es decir, una fila cualquiera de la tabla) y campo a la representacin del valor de un atributo de una entidad (es decir los campos son columnas).
Representacin tabular

Una base de datos es un conjunto de ficheros de datos interrelacionados. Por ejemplo en secretaria de una universidad, tenemos 3 ficheros de base de datos: alumnos (con sus atributos DNI, nombre, fecha nacimiento), asignaturas (cdigo, nombre y crditos) y profesores (DNI, nombre y despacho). Para obtener por ejemplo la nota de un alumno en una asignatura, no podemos asignar el campo nota a la asignatura, pues al ser de valor nico todos los alumnos obtendran la misma nota, ni al alumno, pues obtendra la misma nota en todas las asignaturas en las que estuviera matriculado. El campo nota, es el resultante de la interrelacin alumno/asignatura; interrelacin que puede ser mltiple para cada alumno, pues hay muchas asignaturas en las que puede estar matriculado. As nacieron los sistemas de gestin de bases de datos, para poder manipular y tratar esta informacin que quedaba fuera del concepto de base de datos. Para poder almacenar esta informacin existen diversas frmulas; cintas, DAT, CDs, el propio disco duro; cada una de ellas con sus particularidades; pero casi lo que ms nos interesa es el acceso a la informacin: tenemos segn diferentes criterios el acceso secuencial y el directo; y por otro lado el acceso por valor o por posicin; implementando ambos obtenemos: Acceso secuencial por posicin: Tras haber accedido a un dato, accedemos al siguiente de la lista por posicin.

Bases de Datos 1 3

Acceso directo por posicin: Queremos acceder al registro que ocupa la posicin x (por ejemplo, el alumno que es la mediana de todas las notas de una asignatura). Acceso secuencial por valor: Queremos obtener el siguiente alumno por orden alfabtico a partir del alumno x; realmente nuestra lista est ordenada por cdigo de alumno, as que este sera un acceso secuencial por valor (apellido) y no por posicin. Acceso directo por valor: El alumno que ha obtenido un 5,6 por ejemplo.

4. LA MEMORIA EXTERNA La necesidad de almacenar datos nos obliga a utilizar memorias externas con soportes permanentes. La no-volatilidad de esta informacin (las memorias internas pierden su contenido en cuanto se apaga el PC), la gran capacidad que tienen y su bajo precio los hacen ideales para ello; solo tienen un pequeo inconveniente, el tiempo de acceso. El tiempo de acceso a un disco duro es igual al tiempo de bsqueda (el brazo portador de los cabezales se coloca en el cilindro seleccionado), ms el tiempo de espera (hay que esperar a que en su giro constante el cabezal pase por la zona de datos a transferir), ms el tiempo de transferencia. Los soportes que ms se suelen utilizar son: Disco duro: no es transportable, es rpido, fiable, barato y de gran capacidad. CD-ROM: si es solo grabable se utiliza para ficheros histricos o definitivos, y solo para realizar consultas. Cintas: solo tienen acceso secuencial por lo que se suelen utilizar nicamente como copia de seguridad (backup).

4 Bases de Datos 1

TEMA 2 INTRODUCCIN A LAS BASES DE DATOS

1. CONCEPTO Y ORIGEN DE LAS BD Y DE LOS SGBD Las aplicaciones informticas de los aos 60 acostumbraban a darse totalmente por lotes (batch). Cada BD sola trabajar con un nico fichero maestro que se encontraba sobre una cinta magntica, y con su acceso secuencial. Cuando se quera aadir una aplicacin que requera alguno de los datos de dicha cinta y otros nuevos, se diseaba un fichero nuevo copiando todos los datos repetidos (redundancia) y aadiendo los nuevos, para evitar que un mismo programa tuviera que leer varios ficheros distintos. Cuando aparecieron lneas de comunicacin y se poda acceder de forma on-line y a medida que se integraban las diferentes aplicaciones, fue necesario eliminar toda la redundancia y disear un conjunto de ficheros interrelacionados entre s. A este conjunto de ficheros, con estructuras complejas y compartidos por varias procesos de forma simultnea se le conoce como bases de datos. A partir de los 80 fue saliendo al mercado software que permita gestionar e interrelacionar todos estos ficheros, y es lo que se denomin sistemas de gestin de bases de datos. Una base de datos, en otras palabras, es un conjunto estructurado de datos que representa entidades y sus interrelaciones; representacin nica e integrada que a su vez permite utilizaciones varias y simultneas.

Tema 2 Introduccin a las bases de datos 1. Concepto y origen de las BD y de los SGBD 2. Evolucin de los SGBD 3. Objetivos y servicios de los SGBD 4. Arquitectura de los SGBD 5. Modelos de BD 6. Lenguajes y usuarios 7. Administracin de BD

2. EVOLUCIN DE LOS SGBD Aos 60 y 70: Se pueden definir estos aos con dos palabras sistemas centralizados; es decir, un gran ordenador para toda la empresa y una red de terminales sin inteligencia ni memoria conectados a l; era la visin hardware de la poca que adems, se apoyaba en el software de sistema operativo existente en aquel momento. Los programas de aplicacin para acceso, consulta y escritura en la base de datos estaban escritos en alto nivel y eran gran cantidad de rdenes y subrutinas que requeran que el programador conociera todos los detalles de diseo fsico y lgico; todo haca que la programacin fuese muy costosa. Lo que interesaba en esta poca era maximizar el rendimiento: disminuir el tiempo de respuesta y aumentar las transacciones por segundo. Aos 80: Sistemas de gestin de base de datos relacionales. La aparicin de ordenadores micro extendieron la informtica a todas las empresas e instituciones. Aparecen los primeros SGBD relacionales que facilitan la programacin de aplicaciones y consiguen que los programas sean independientes de los aspectos fsicos de la base de datos. La estandarizacin en el ao 1986 del lenguaje SQL produce una autntica explosin de este tipo de programas. Aos 90: Caracterizados por la distribucin, el modelo cliente/servidor y 4GL. A pesar de que las SGBD ya aparecen en la dcada anterior, no es hasta este momento en el que las empresas se dan cuenta de que han comprado ordenadores departamentales y existen multitud de bases de datos diferentes pululando por la empresa. La necesidad de tener una visin global de la empresa y de interrelacionar las diferentes aplicaciones llevan a buscar un programa que tratase todas las BD como una sola: base de datos distribuida; esta distribucin es mejor cuando hay homogeneidad (misma marca de SGBD), lo cual es difcil que ocurra en toda la empresa; no obstante aunque existe heterogeneidad, gracias al lenguaje SQL se pueden tratar todas las bases de datos, aunque no se da la apariencia de que se trata de una sola. En otras ocasiones tambin se da una distribucin deseada, dado que pueden existir varias copias de BD iguales en distintos puntos (por cercana, por acceso, por utilizacin, etc) o solo con aquellos datos que se vayan a utilizar

Bases de Datos 1 5

frecuentemente. As si una BD queda fuera de servicio, el resto puede seguir funcionando, adems el coste se reduce as tambin sensiblemente. La tecnologa que se suele utilizar para esta distribucin es la cliente/servidor. Cualquier PC puede ser servidor (acepta una consulta de BD y la sirve) o ser cliente (pide una consulta o un dato) o ambas a la vez. Adems el xito de las BD hasta en los ordenadores personales, ha llevado a la aparicin de los lenguajes de cuarta generacin 4GL, fciles, potentes, y muy visuales a la hora de realizar consultas o cambios en la BD. Tendencias actuales: Actualmente las bases de datos estn en plena transformacin (no lo estn siempre?) para adaptarse a la multimedia, a la orientacin de objetos y a internet. Se pueden establecer consultas desde la web, se pueden reconocer gran cantidad de objetos multimedia como tipos de bases de datos, etc. Tambin recalcar que actualmente existe lo que se da en llamar almacn de datos, es decir, en las grandes empresas y sobre todo fruto de las fusiones, se quiere tener un almacn en el que se reflejen todos los datos (por pequeos que sean) para poder ser analizados desde distintos prismas y poder hacer consultas con informacin valiosa para la empresa.

3. OBJETOS Y SERVICIOS DE LOS SGBD Consultas no predefinidas y complejas: Se debe pedir a un sistema de base de datos que permita a los usuarios hacer consultas de cualquier tipo y complejidad, sin que estn preestablecidas, sin que se tenga que compilar un programa exclusivamente para ello y que sea sencillo y cmodo para el usuario. Consultas del tipo; Quiero un listado ordenado por apellidos de los alumnos nacidos entre 1965 y 1971, que estn matriculados de 3 o menos asignaturas y que vivan en Barcelona capital. Flexibilidad e independencia: Interesa obtener la mxima independencia posible entre los datos y los procesos usuarios, para que cuando existan cambios tecnolgicos se puedan implementar con facilidad. En ese sentido nos tiene que dar igual el Sistema operativo o el tipo de fichero en el que los datos estn escritos (independencia fsica de los datos); pero es que adems queremos que diferentes usuarios tengan unas visiones distintas e independientes de la base de datos (como hablbamos en el tema anterior de la visin de una base de alumnos desde el punto de vista del profesor o de la secretara); a esto se le denomina independencia lgica de los datos. Problemas de redundancia: Es necesario eliminar la redundancia de datos, dado que cuando se quiere consultar alguno de ellos, podemos estar basando la consulta sobre datos anticuados o errneos, lo cual revierte claramente en una prdida de integridad de los mismos. Adems, cuando un dato es calculado (o derivado) producto de dos o ms datos; es el SGBD quien debe servir ese dato calculado en el momento, pues al programador o al usuario puede habrsele olvidado realizar el clculo tras actualizar los nuevos datos. Integridad de los datos: Se requiere un mantenimiento de alta calidad de los datos en cualquier circunstancia. Cuando se define una base de datos, se definen sus tipos y tambin las reglas de integridad que debe cumplir; reglas de dos tipos: las reglas de integridad del modelo (por ejemplo, no aceptar datos duplicados) y reglas de integridad del usuario (por ejemplo no aceptar alumnos de menos de 18 aos en la universidad ni de ms de 120). Adems los procesos de backup y restauracin tras un accidente, deben estar automatizados y ser transparentes al usuario. Concurrencia de usuarios: Cuando muchos usuarios concurren en la misma base de datos en modo lectura, el nico problema es el rendimiento; pero si un usuario o ms estn variando datos, se pueden dar problemas de interferencia; se minimizan estos problemas con la transaccin de BD; consiste en un conjunto de operaciones simples que se ejecutan de manera atmica, es decir o se ejecutan por completo o no se ejecuta ninguna; nunca, en cualquier caso, se ejecutar parcialmente. As por ejemplo si realizamos una transferencia de efectivo de la cuenta A a la B; primero nos quitan el dinero de A y antes de

6 Bases de Datos 1

ingresarlo en B sucede una cada de tensin; entonces Dnde ir ese dinero? Para evitar estos problemas se define una transaccin de BD, que utilizar la operacin COMMIT para indicar que ya ha terminado; si no puede acabar la transaccin, no llega a esta COMMIT, se deshar todo lo realizado, con la operacin denominada ROLLBACK. Adems mientras tiene lugar esta transferencia, para que se ejecute felizmente, se asla de las dems operaciones con la tcnica de bloqueo, que pone limitaciones a los accesos del resto de las transacciones para que no interfieran; lo malo de esto es que produce esperas, retenciones y, en consecuencia, el sistema se ralentiza. El esfuerzo actual de los SGBD se centra en minimizar estos efectos negativos. Seguridad: No hacemos aqu referencia a los backups que ya habamos tratado anteriormente, sino a temas relativos a la confidencialidad, autorizaciones, derechos de acceso, etc. Los datos manejados en bases de datos estn en Espaa protegidos por ley; y los diferentes sistemas de gestin de bases de datos utilizan tcnicas de limitar las autorizaciones e incluso de encriptacin de datos.

4. ARQUITECTURA DE LOS SGBD Ya comentamos en puntos anteriores los niveles existentes en una base de datos: el nivel lgico y el nivel fsico; el comit conocido como ANSI/SPARC defini en 1980 otra definicin de estos niveles, denominados esquemas: Esquemas externos: Se sitan las diferentes Esquemas y niveles visiones lgicas que los usuarios tendrn de las partes de las BD que utilizarn. Esquema conceptual: Es nico y global y sirve de referencia para todos los sistemas: se describen aqu las entidades tipo, atributos, interrelaciones, restricciones, reglas de identidad, etc. As, los esquemas externos se nutren en la parte que les interese del esquema conceptual. Si por ejemplo en el esquema conceptual tenemos los atributos de alumno: nombre, apellido1, apellido2 quiz en algn esquema externo aparezca el atributo persona, que sea la refundicin de nombre+apellido1+apellido2. Esquema interno: Se corresponde completamente con el nivel fsico del que hablbamos anteriormente: caminos de acceso, Independencia fsica codificacin de datos, gestin del espacio y del tamao de la pgina.

Con esta nueva arquitectura de los SGBD la independencia de los datos est asegurada; as, hablaremos de independencia fsica, cuando los cambios en la organizacin fsica (esquema interno) no afectan al mundo exterior (es decir, los esquemas externos). Si cambiamos, como se ve en la figura lateral unos datos de un soporte a otro, no se vern afectados ni los programas ni los usuarios directos; pero tampoco se tendran que ver afectados por ejemplo si cambiamos el mtodo de acceso a un conjunto de registros determinados; solo deben variar las correspondencias entre el esquema conceptual y el nivel fsico, pero nada ms. La independencia lgica tambin est asegurada: cuando existen cambios en el esquema conceptual, dichos cambios no afectarn a los esquemas externos que no hagan referencia a entidades o atributos

Bases de Datos 1 7

modificados; por otro lado cuando es efectan cambios en un esquema externo, solo debe afectar a los usuarios de dicho esquema, pero no a usuarios de otros esquemas externos, ni al esquema conceptual ni, por supuesto al esquema interno.
Flujo y control

Por ltimo, destacaremos en este punto el flujo y control habitual que suelen hacer los SGBD cuando, por ejemplo, reciben una consulta desde un esquema externo. Supongamos que desde un programa usuario de secretara de la universidad se piden los datos acadmicos de un alumno. El proceso es el siguiente: 1. Empieza una llamada al programa SGBD en el que se enva la operacin de consulta. 2. El SGBD se basa en el esquema externo en el que est trabajando y por supuesto en el conceptual. Se da el visto bueno a la consulta. 3. Entonces el SGBD determina cual es el mejor mecanismo para responderla. Supongamos que hemos encontrado el registro del alumno en cuestin y nos devuelve como resultado la pgina donde se encuentran estos datos, entre los de otros muchos alumnos. 4. Cuando se sabe en qu pgina se encuentra, se consulta el buffer por si esta pgina ya se encontrase cargada en memoria, como resultado de una consulta anterior sobre ese u otro alumno. De ser as, nos saltamos el punto 5. 5. La pgina no estaba en memoria, as que hay que buscarla en disco y cargarla en buffer. 6. El SGBD aplica datos eventuales a las transformaciones lgicas que implica el esquema externo y las lleva al rea de trabajo del programa donde se espera recibir el resultado de la consulta inicial. 7. A continuacin el SGBD retorna el control al programa del usuario y da por terminada la ejecucin de la consulta.

5. MODELOS DE BD
Modelos de BD

Todo modelo de base de datos debe proveernos de estructuras de datos para construir la BD (tablas, rboles), restricciones o reglas de identidad que deben cumplir los datos introducidos y luego una serie de operaciones para trabajar con los datos: borrado, consulta, inserciones, bsquedas Existen 3 modelos principales de BD que vamos a estudiar segn su evolucin histrica: Modelo Jerrquico: Sus estructuras son registros interrelacionados en forma de rboles, son propios de los aos sesenta. Modelo en red: De principios de los 70, hay registros e interrelaciones, aunque ya no obliga como en el anterior, que un registro sea hijo de un solo registro. Modelo relacional: Se basa en el concepto matemtico de relacin, entendindola como tabla. El modelo relacional se limita al nivel

8 Bases de Datos 1

lgico (no hace consideracin alguna sobre las representaciones fsicas, por lo que nos da una independencia total), mientras que los dos modelos anteriores prerrelacionales s. En los ltimos aos se est extendiendo el modelo de BD relacional con objetos, aadiendo tipos abstractos de datos (TAD) a los tipos reconocidos y manipulados por la BD; esto acerca los sistemas relacionales al paradigma de la orientacin a objetos.

6. LENGUAJES Y USUARIOS Para comunicarse con el SGBD, el usuario, ya sea un programador, o un usuario directo, se vale de un lenguaje. Hay lenguajes especializados en la escritura de esquemas, es decir en la descripcin de las BD, son llamados genericamente DDL (data definition language; otros estn especializados en la utilizacin de la BD y se denominan DML (Data management language). Aunque es frecuente que un lenguaje disponga de construcciones para las dos funciones. De entre ellos, el ms utilizado es el lenguaje SQL, que tiene verbos (instrucciones) de varios tipos: Verbos DML: por ejemplo SELECT, para hacer consultas, INSERT, DELETE, para el mantenimiento de datos Dentro de este aspecto hay lenguajes muy declarativos (se especifica qu se debe hacer y no cmo) y otros ms procedimentales (nos exigen conocer cuestiones del funcionamiento de las SGBD). Verbos DDL: como CREATE TABLE para definir las tablas, sus columnas, restricciones. Verbos de control del entorno: como COMMIT y ROLLBACK, como ya vimos anteriormente. Otros lenguajes son el 4GL de muy alto nivel que pretende facilitar el uso de la BD y tambin la definicin de mens, pantallas, dilogos; las herramientas o interfaces visuales permiten usar el estilo visual de windows con ventanas que facilitan el trabajo.

7. ADMINISTRACIN DE BD Hay un tipo de usuario en la BD muy especial, el administrador: es el responsable del correcto funcionamiento de la base de datos y velan para que siempre est accesible y til. En algunas empresas multinacionales el administrador de BD pueden llegar a ser 10 personas distintas las que se encarguen de ello. El administrador debe facilitar los backups, resolucin de emergencias, vigilancia de la integridad y calidad de los datos

Bases de Datos 1 9

TEMA 3 EL MODELO RELACIONAL Y EL LGEBRA RELACIONAL

Tema 3 El modelo relacional y el lgebra relacional 1. Estructura de datos 2. Operaciones del modelo relacional 3. Reglas de integridad 4. El lgebra relacional

1. ESTRUCTURA DE DATOS El modelo relacional es un modelo de datos y tiene muy en cuenta los 3 siguientes aspectos: La estructura que debe permitir representar la informacin que nos interesa del mundo real. La manipulacin de esa informacin mediante la actualizacin y consulta de los datos. La integridad que da consistencia a los datos mediante el establecimiento de reglas que stos deben cumplir. Los principios del modelo de base de datos relacional fueron establecidos en el ao 1970; aunque no fue hasta la dcada de los 80 en que se empezaron a comercializar los primeros SGBD con rendimientos aceptables. Su principal objetivo es facilitar que la base de datos sea percibida por el usuario con una estructura lgica consistente en un conjunto de relaciones, olvidndonos de la implementacin fsica (independencia de los datos). Visin formal de una relacin Un dominio es un conjunto de valores atmicos (indivisibles). Estos dominios pueden ser de dos tipos: Predefinidos: Corresponde a tipos de datos como enteros, cadenas de caracteres, reales Definidos por el usuario: Que pueden ser ms especficos y adaptables a cada base de datos.

Esquema de relacin Empleados DNI Nombre Apellido 40444 Juan Garcia 33567 Marta Roca 55898 Luis Bernal Sueldo 2000 2500 3000

Extensin de la relacin

Toda relacin se compone del esquema y de la extensin. El esquema consiste en el nombre de una relacin y el conjunto de atributos; mientras que la extensin es un conjunto de tuplas. En la tabla lateral, el esquema est consituido por las dos primeras filas: empleados y el nombre de sus atributos; y la extensin por las 3 filas restantes. Algunos autores denominan tablas, columnas y filas a lo que en BD se llaman relaciones, atributos y tuplas. As, en este ejemplo, el nombre de la relacin es EMPLEADOS y el conjunto de atributos es {DNI, nombre, apellido, sueldo}. Si denotamos el esquema de la relacin representada en esta tabla como EMPLEADOS {DNI, nombre, apellido, sueldo}, el conjunto de tuplas de su extensin ser el de la figura que tenemos debajo del esquema. Observamos como la primera representacin tabular es ms cmoda, pero la representacin en forma de conjunto refleja mejor la realidad de la situacin de la extensin. El grado de una relacin es el nmero de atributos que pertenecen a su esquema; en nuestro ejemplo es 4 (DNI, nombre, apellido y sueldo); mientras que la cardinalidad de una relacin es el nmero de tuplas que pertenecen a su extensin (en nuestro ejemplo la cardinalidad de empleados es 3). Cuando un valor de un atributo es deconocido para una tupla, estamos hablando de un valor nulo; es el caso de que un empleado desconozca su sueldo (cosa rara) o por ejemplo el campo telfono est vaco dado que no tenga telfono ni mvil (cosa tambin bastante rara). No debemos confundir relaciones con ficheros de datos; a primera vista resultan similares, dado que los registros y los campos que forman los ficheros se parecen a las tuplas y a los atributos de las relaciones respectivamente, pero existen diferencias radicales e insalvables: Atomicidad: Los valores de los atributos de una relacin son atmicos, no deben tener estructura interna; esto da simplicidad y uniformidad al modelo relacional.

10 Bases de Datos 1

No repeticin de tuplas: En un fichero clsico se pueden repetir registros exactamente iguales. En el modelo relacional no es posible que una relacin contenga dos tuplas repetidas (dado que es un conjunto, no puede tener elementos repetidos) No ordenacin de tuplas: Dado que una relacin es un conjunto, no existen elementos ordenados; aunque luego los SGBD relaciones proporcionen una implementacin fsica que almacenar las tuplas de relaciones en un orden concreto, esta ordenacin no es visible en el nivel conceptual en el que nos hayamos. No ordenacin de los atributos: Los atributos tampoco estn ordenados; as la relacin EMPLEADOS {DNI, apellido, nombre, sueldo} es la misma que EMPELADOS {DNI, nombre, sueldo, apellido}

Claves Una superclave es un subconjunto de los atributos del esquema, tal que no pueda haber dos tuplas en la extensin de la relacin que tengan la misma combinacin de valores para los atributos del subconjunto. En nuestro ejemplo de Empleados, una superclave podra ser {DNI y apellido} o tambin {DNI} o tambin {NumSegSocial}. Una clave candidata es una superclave de C que cumple que ningn subconjunto propio de C es superclave. En nuestro ejemplo anterior solo hay dos claves candidatas {DNI} y {NumSegSocial} que son exclusivas cada una de cada empleado. Clave primaria es aquella clave candidata cuyos valores se utilizan para identificar las tuplas de la relacin. As el diseador de la BD debe elegir de entre todas las claves candidatas, cual ser la clave primaria y el resto, se convertirn en claves alternativas. Si en nuestro ejemplo elegimos como clave primaria {DNI}, entonces {NumSegSocial} se convertir en la clave alternativa. La clave primaria se designa subrayndola, de forma que nuestra relacin empleados quedara as: EMPLEADOS {DNI, nombre, apellido, sueldo}. Claves forneas son aquellas que permiten establecer relaciones entre las tuplas de las relaciones. Por ejemplo, si la relacin empleados se aumentase con los siguientes atributos EMPLEADOS {DNI, nombre, apellido, sueldo, DNIjefe, edificiodesp, numerodesp} y tuvisemos otra relacin de despachos del tipo DESPACHOS {edificio, numero, superficie} y as a cada empleado le asignsemos un despacho diferente en cada uno de los edificios de los que disponemos; nos podemos encontrar como edificiodesp y numerodesp son claves fornes de relacin con la tabla despachos. Y si adems quisieramos establecer una relacin jerrquica de jefe-empleados, el DNIjefe establecera una clave fornea con DNI dentro de la misma tupla; tal como vemos en la imagen lateral. Toda clave fornea debe cumplir tener o valor nulo o valores que coinciden con los valores a los que hace referencia la clave primaria. Es decir, no podemos tener un empleado cuyo edificio sea Pars y despacho el 108, si no tenemos en la relacin Despachos, este edificio y este nmero de despacho; si se admiten, en cambio, los valores nulos. Obviamente adems, el nmero de atributos de la clave fornea y de la clave primaria debe ser el mismo (biyeccin); y adems sus dominios deben coincidir.

Claves forneas

2. OPERACIONES DEL MODELO RELACIONAL Las operaciones del modelo relacional deben permitir poder manipular datos almacenados en una base de datos relacional. Hay 3 operaciones bsicas de actualizacin: La insercin (aadir tuplas), el borrado (suprimr tuplas) y la modificacin (alterar los valores de una o ms tuplas). La consulta de datos consiste en la obtencin de datos deducibles a partir de las relaciones que contiene la base de datos. Encontramos varios lenguajes distintos para poder llevar a cabo estas consultas:

Bases de Datos 1 11

Lenguajes basados en el lgebra relacional: Se denominan lenguajes procedimentales, porque al basarse en la teora de conjuntos, es necesario seguir uno o ms pasos para ir construyendo una nueva relacin que contengan los datos que responden a nuestra consulta. Lenguajes basados en el clculo relacional: Se denominan lenguajes declarativos, porque al estar basados en el clculo de predicados de la lgica matemtica, proporcionan una notacin ajustada a cada consulta que queremos realizar.

El lenguaje SQL que estudiaremos posteriormente, es una combinacin de los dos anteriores, aunque con un predominio del clculo relacional, por lo que se considera un lenguaje declarativo.

3. REGLAS DE IDENTIDAD Una base de datos debe contener datos que, en cada momento, deben reflejar la realidad. En estas condiciones determinadas configuraciones de valores para las tuplas de las relaciones pueden no tener sentido. Por ello, denominaremos integridad a la propiedad de los datos de corresponder a representaciones plausibles del mundo real. En general, las condiciones que garantizan la integridad de los datos pueden ser de dos tipos: Restricciones de integridad de usuario: Condiciones especficas de una base de datos concreta. Por ejemplo, en nuestro ejemplo de EMPLEADOS, no tiene sentido sueldos negativos. Restricciones de integridad de modelo: Son condiciones que deben cumplir todas las bases de datos que sigan dicho modelo. Por ejemplo la regla de identidad que garantiza que los valores de una clave primaria de una relacin no se repitan en tuplas diferentes de la misma relacin. Todo modelo de base de datos debe cumplirlo. Son este ltimo tipo de reglas el que pasamos a desgranar a continuacin: Regla de integridad de unicidad de la clave primaria: Toda clave primaria que se elija para una relacin, no debe tener valores repetidos. As, en el ejemplo lateral, no podra ser clave primaria {apellido}, dado que encontramos que est repetido. Aunque no estuviera repetido en este momento, sera arriesgado ponerla como clave primaria, porque si la empresa aumenta, es posible que en algn momento este valor se repita. Podemos elegir como clave primaria {DNI} que no puede repetirse. Regla de integridad de entidad de la clave primaria: Los atributos de la clave primaria de una relacin no pueden tener valores nulos. As si hemos elegido DNI como clave primaria, todo empleado debe proporcionrnoslo, pues no podemos tener valor nulo. En el ejemplo lateral, se provocara un error de integridad en la base de datos. Regla de integridad referencial: Se relaciona con el concepto de clave fornea. En concreto determina que todos los valores que toma una clave fornea deben ser valores nulos o valores que existen en la clave primaria que referencia. O sea, que en el ejemplo lateral, los valores no nulos de edificiodesp y numerodesp deben hacer referencia a un valor que exista en la relacin Despachos. Para asegurarse el SGBD de que esta relacin siempre se cumpla, deber efectuar comprobaciones cada vez que se produzcan varios tipos de operaciones: o Inserciones en una relacin que tenga clave fornea (Por ejemplo en edificiodesp en EMPLEADOS) o Modificaciones que afecten a atributos que perteneces a la clave fornea de la relacin o Borrados en relaciones referenciadas por otras relaciones (por ejemplo, borrado de una tupla en la relacin DESPACHOS)

Unicidad de clave primaria Empleados DNI Nombre Apellido 40444 Juan Roca 33567 Marta Roca 55898 Luis Bernal Sueldo 2000 2500 3000

Entidad de clave primaria Empleados DNI Nombre Apellido 40444 Juan Roca 33567 Marta Roca Nulo Luis Bernal Sueldo 2000 2500 3000

Integridad referencial

12 Bases de Datos 1

Modificaciones que afecten a los atributos que pertenecen a la clave primaria de una relacin referenciada por otra relacin (modificacin de edificio o nmero en la relacin DESPACHOS).

En estas comprobaciones pueden aplicarse diferentes polticas: de restriccin, actualizacin en cascada o anulacin, que pasamos a explicar, es el diseador de la base de datos el que debe tomar en cuenta el significado de cada clave que asigna para as introducir una u otra poltica de integridad en cada una de ellas: o Restriccin: La restriccin en caso de borrado consiste en no permitir borrar una tupla si tiene una clave primaria referenciada por alguna clave fornea; restriccin en caso de modificacin consiste en no permitir modificar ningn atributo de la clave primaria de una tupla si tiene una clave primaria referenciada por alguna clave fornea. As si tenemos una tupla con los nombres de los clientes, referenciada a otra tupla con los pedidos realizados; no podremos borrar un cliente que tenga pedidos pendientes. o Actualizacin en cascada: Consiste en permitir la operacin de actualizacin de la tupla y en efectuar operaciones compensatorias que propaguen en cascada la actualizacin a las tuplas que la referenciaban. As, en cado de borrado podemos permitir borrar las tuplas referenciadas (en el ejemplo, si borramos el cliente, borramos tambin sus pedidos pendientes); en caso de modificacin, permite modificar los atributos en las tuplas que referenciaba (as, si le cambiamos el nmero de cliente, tambin cambiar el nmero de cliente en el pedido pendiente). o Anulacin: Consiste en permitir la operacin de actualizacin y compensarlo poniendo valores nulos a los atributos de la clave fornea de las tuplas que la reverenciaban. En caso de borrado, permite el borrado de una tupla y modifica todas las tuplas referenciadas con ese atributo poniendo valor nulo; en caso de modificacin, los atributos de las tuplas referenciadas no tomarn el nuevo valor como en la actualizacin en cascada, sino que tambin tomarn un valor nulo. Regla de integridad de Dominio: Tiene a su vez dos condiciones. La primera es que todos los valores no nulos que contiene la base de datos para un determinado atributo, deben ser del dominio declarado para dicho atributo. As, si en una base de datos hemos declarado el dominio DNI como el de los nmeros enteros, no permitir introducir el dato Luis; tambin si hemos definido como edad del trabajador el dominio 16 a 65 aos, no se admitirn valores que estn por encima o debajo de estos dados. La segunda condicin sirve para establecer qu operadores pueden aplicarse sobre los valores que tengan los dominios. As no podr consultarse el DNI con operaciones del tipo: DNI=Luis dado que Luis no es un real. Otro ejemplo podra ser que si hemos definido edad como de 16 a 65, tampoco debera poder comparar DNI con edad, dado que aunque sean ambos nmeros reales, el dominio es distinto. No obstante los SGBD actuales no implementan esta regla de integridad de dominio, todava queda camino por recorrer.

4. EL LGEBRA RELACIONAL Las operaciones que se pueden realizar en el lgebra relacional son las siguientes: Redenominar, unin, interseccin, diferencia, producto cartesiano, seleccin, proyeccin, combinacin y divisin. A continuacin pasamos a estudiar cada una de ellas; pero para ello, primero estableceremos unas relaciones de ejemplo que usaremos en todas y cada una de estas operaciones para llegar a su completa comprensin.

Bases de Datos 1 13

Relaciones de ejemplo

Operacin Redenominar (:=) La denotaremos con el smbolo := y permite asignar un nombre R cualquiera a la relacin que resulta de una operacin del lgebra relacional; por ejemplo, si queremos sumar los nombres de todos los empleados de la empresa, independientemente que trabajen en administracin o en produccin, podemos hacer: EMPLEADOS:= EMPLEADOS_ADM EMPLEADOS_PROD Operacin Unin ( ) La unin es una operacin en la que, a partir de dos relaciones, se obtiene una nueva relacin formada por todas las tuplas que estn en alguna de las relaciones de partida. Solo tiene sentido aplicar la unin a relaciones que tengan tuplas similares y que ambas sean compatibles; es decir, que tengan el mismo grado y que se pueda establecer una biyeccin entre los atributos. As, si llevamos a cabo: R:= EMPLEADOS_ADM EMPLEADOS_PROD Obtendremos:
DNI
40444255 33.567.711 55.898.425 77.232.144 21.335.245 88.999.210

nombre
Juan Marta Carlos Elena Jorge Pedro

apellido
Garca Roca Buenda Pla Soler Gonzlez

edificiodesp
Marina Marina Diagonal Marina NULO NULO

numerodesp
120 120 120 230 NULO NULO

Y se deducir que a DNI de empleados_adm le corresponde DNI de empleados_prod y todas las relaciones subsiguientes. Siempre y por convencin, haremos que los atributos de la relacin resultante, coincidan con los atributos de la relacin que figura en primer lugar. Operacin Interseccin ( ) A partir de dos relaciones, se obtiene una nueva relacin formada por las tuplas que pertenecen a las dos relaciones de parida. Al igual que la unin solo se puede aplicar a relaciones que tengan tuplas similares. Como ejemplo: R:= EMPLEADOS_ADM
DNI
33.567.711

EMPLEADOS_PROD
R

nombre
Marta

apellido
Roca

edificiodesp
Marina

numerodesp
120

14 Bases de Datos 1

Solo obtenemos, por tanto, los elementos que se encuentran en las dos relaciones, tanto en empleados_adm como en empleados_prod. Operacin Diferencia (-) En la unin, a partir de dos relaciones, se obtiene una nueva relacin formada por todas las tuplas que estn en la primera relacin y, en cambio, no estn en la segunda. Solo tiene sentido, obviamente, si se aplica a tuplas similares y es necesario que las relaciones sean compatibles. R:= EMPLEADOS_ADM - EMPLEADOS_PROD
DNI
40444255

nombre
Juan

apellido
Garca

edificiodesp
Marina

numerodesp
120

Producto Cartesiano (x) Es una operacin que, a partir de dos relaciones, obtiene una nueva relacin formada por todas las tuplas que resultan de concatenar tuplas de la primera relacin con tuplas de la segunda. Las tuplas no tienen que ser compatibles y no deben tener ningn nombre de atributo comn. En estas condiciones podemos hacer el producto cartesiano de DESPACHOS y EDIFICIOS_EMP, que requiere una redenominacin para no incurrir en atributos con el mismo nombre:
EDIFICIOS (nombreedificio, supmediadesp):= EDIFICIOS_EMP(edificio, supmediadesp) R:= EDIFICIOS x DESPACHOS

nombreedificio
Marina Marina Marina Marina Diagonal Diagonal Diagonal Diagonal

supmediadesp
15 15 15 15 10 10 10 10

edificio
Marina Marina Diagonal Diagonal Marina Marina Diagonal Diagonal

numero
120 230 120 440 120 230 120 440

superficie
10 20 10 10 10 20 10 10

Conviene sealar que el producto cartesiano raramente se utiliza de forma explcita, pues su resultado no suele ser muy til, en cambio s se utiliza como operacin primitiva de la combinacin. Seleccin T(C) Es una operacin que a travs de unas condiciones (C) pretende seleccionar algunas tuplas (T) del resto. Por ejemplo: R:= DESPACHOS (edificio = Marina y superficie > 12)
edificio
Marina

numero
230

superficie
20

Seleccionamos as los despachos del edificio Marina, cuya superficie es mayor de 12. Proyeccin T[A1, A2] Es una operacin unaria (igual que la anterior, solo requiere una relacin) que sirve para elegir algunos atributos de una relacin y eliminar el resto. Si necesitamos hacer una consulta por ejemplo de los empleados de administracin, pero solo queremos el nombre y apellido, sin ningn dato ms, podemos hacer: R:= EMPLEADOS_ADM[nombre, apellido]
nombre
Juan Marta R

apellido
Garca Roca

Bases de Datos 1 15

Combinacin T[B]S La combinacin es una operacin que, a partir de dos relaciones, obtiene una nueva formada por todas las tuplas que resultan de concatenar tuplas de la primera relacin con tuplas de la segunda y que cumplen una condicin de combinacin especificada. Para ello se requieren que las dos tuplas que participan (T y S) no tengan ningn nombre de atributo comn, siendo B la condicin de combinacin. As, si queremos obtener una relacin que contenga todos los datos de cada uno de los despachos cuya superficie es mayor o igual a la media del edificio en el que se encuentran, podemos hacer (primero redenominamos atributos):
EDIFICIOS (nombreedificio, supmediadesp):=EDIFICIOS_EMP(edificio, supmediadesp) R:= EDIFICIOS[nombreedificio = edificio, supmediadesp <= superficie] DESPACHOS
R

nombreedificio
Marina Diagonal Diagonal

supmediadesp
15 10 10

edificio
Marina Diagonal Diagonal

numero
230 120 440

superficie
20 10 10

Cuando existe una equicombinacin (hemos utilizado el operador = en las condiciones que haba que cumplir), siempre aparecen una o ms parejas de atributos que tienen valores idnticos en todas las tuplas. En el caso anterior nombreedificio y edificio son iguales. Puesto que de este par de atributos uno es suprfluo, se utiliza la combinacin natural (T*S) comouna equicombinacin seguida de la elimincin de los atributos suprfluos. As, podemos hacer: R:= EDIFICIOS_EMP * DESPACHOS
R

nombreedificio
Marina Marina Diagonal Diagonal

supmediadesp
15 15 10 10

numero
120 230 120 440

superficie
10 20 10 40

Operaciones relacionales

Redenominar (:=) Unin ( ) Interseccin ( ) Diferencia (-) Producto Cartesiano (x) Seleccin T(C) Proyeccin T[A1, A2] Combinacin T[B]S Divisin (:)

Divisin (:) Es una combinacin de una proyeccin, del producto cartesiano y de la diferencia. La divisin de una relacin R1 (dividendo) por otra R2 (divisor) es una relacin R (cociente) tal que al realizarse su combinacin con el divisor, todas las tuplas resultantes estn en el dividendo. Secuencias de operaciones del lgebra relacional Como en muchos casos para formular una consulta en lgebra relacional e spreciso utilizar varias operaciones que se aplican en un cierto orden, es mejor descomponer la expresin en varios pasos, donde cada paso aplique una sola operacin y obtenga una relacin intermedia que se pueda utilizar en los pasos siguientes. As, por ejemplo, si queremos obtener el nombre del edificio y el nmero de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12, podemos utilizar la siguiente secuencia de operaciones: A:= EDIFICIOS_EMP (supmediadesp > 12) B:= DESPACHOS * A R:= B[edificio, numero]

16 Bases de Datos 1

TEMA 4 EL LENGUAJE SQL

1. SENTENCIAS DE DEFINICIN Para poder trabajar con bases de datos relacionales, lo primero que hay que hacer es definirlas. En el estndar SQL92 (estndar que vamos a utilizar en toda la asignatura) vamos a llevar a cabo las siguientes operaciones: Creacin y borrado de una base de datos relacional. Creacin de tablas. Modificacin y borrado de tablas. Creacin y borrado de vistas. Creacin y borrado de una base de datos relacional El estndar SQL92 no dispone de ninguna sentencia para crear ni para borrar una base de datos relacional, ya que como una base de datos no es ms que un conjunto de tablas, este lenguaje se concentra en la creacin, modificacin y borrado de estas tablas. De lo que s disponemos es de una sentencia ms potente que la creacin de bases de datos y es la denominada CREATE SCHEMA, con la que se pueden agrupar un conjunto de elementos de la base de datos que son propiedad de un usuario. La sintaxis es:
CREATE SCHEMA {[nombre_esquema] | [AUTHORIZATION usuario]} [lista-elementos]

Tema 4 El lenguaje SQL 1. Sentencias de definicin 2. Sentencias de manipulacin 3. Sentencias de control 4. Sublenguajes especializados

Aunque todos los parmetros de la sentencia anterior son opcionales, como mnimo debemos dar el nombre del esquema o el usuario. Para borrar el esquema:
DROP SCHEMA nombre_esquema {RESTRICT|CASCADE}

Restrict hace que el esquema slo se pueda borrar si no contienen ningn elemento, mientras que si elegimos Cascade borraremos el esquema aunque no est completamente vaco. Creacin de tablas Para crear una tabla es necesario utilizar la sentencia Create table, en la que definiremos el nombre de tabla y despus de definicin de cada columna con el tipo de daos o el dominio y sus restricciones:
CREATE TABLE departamentos (nombre_dep CHAR(20), ciudad_dep CHAR(20), telefono INTEGER DEFAULT NULL, PRIMARY KEY (nombre_dep, ciudad_dep) );

Creamos as una tabla de departamentos de una empresa, cuya clave primaria es el nombre del departamento y la ciudad en que se encuentra. Podramos aadir sentencias de restricciones de dominio, que podra ser:
CREATE DOMAIN dom_ciudades AS CHAR (20) CONSTRAINT ciudades_validas CHECK (VALUE IN (`Barcelona, `Madrid, `Valencia))

Donde nos aseguramos con la orden CONSTRAINT (restriccin de dominio) que todas las ciudades sean una de las 3 que hemos incluido posteriormente. Para borrar un dominio utilizamos el formato:
DROP DOMAIN nombre_dominio {RESTRICT|CASCADE}

Donde al igual que antes restrict hace que el dominio solo se pueda borrar si no se utiliza en ningn sitio,mientras que cascade borra el dominio aunque est referenciado.

Bases de Datos 1 17

Para modificar un dominio utilizamos la sentencia ALTER DOMAIN, as por ejemplo:


ALTER DOMAIN dom_ciudades DROP CONSTRAINT ciudades_validas;

Eliminamos la restriccin de dominio antigua y ahora introducimos una nueva restriccin.:


ALTER DOMAIN dom_ciudades ADD CONSTRAINT ciudades_validas CHECK (VALUE IN (`Barcelona, `Madrid, `Valencia, `Mataro));

La orden def_defecto nos permite especificar que nomenclatura queremos dar a nuestros valores por omisin. Por ejemplo, para un empelado que todava no se ha decidido cunto ganar, podemos elegir que de momento tenga un suelo de 0 euros (DEFAULT 0.0) o bien que tenga un sueldo con valor nulo ( DEFAULT NULL), eso s, la columna para la que daremos la definicin por defecto de valor nulo debe admitir valores nulos. Recordemos tambin que en el tema anterior vimos 3 polticas aplicables a los casos de borrado y modificacin de filas que tienen una clave primaria referenciada por claves forneas, stas eran: restriccin, cascada y anulacin; bien, cuando especificamos una clave fornea, SQL nos permite definir qu poltica de las tres anteriores queremos seguir, sera asi:
FOREIGN KEY clave_secundaria REFERENCES tabla[(clave_primaria)] [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] [ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

As, NO ACTION corresponde a la poltica de restriccin; CASCADE a la actualizacin es cascada y SET NULL la anulacin; adems SET DEFAULT es una variante de SET NULL donde en lugar de valores nulos se puede poner el valor especificado por defecto. Modificacin y borrado de tablas Para modificar una tabla es preciso utilizar la sentencia ALTER TABLE, normalmente querremos aadir o borrar una columna, modificar las definiciones por defecto para una columna, aadir o borrar alguna restriccin de tabla. Creacin y borrado de vistas Las vistas no existen realmente como un conjunto de valores almacenados en la base de datos, sino que son tablas ficticias denominadas derivadas (no materializadas) construidas a partir de tablas reales.
CREATE VIEW proyectos_por_cliente (codigo_cli, numero_proyectos) AS (SELECT c.codigo_cli, COUNT(*) FROM proyectos p, clientes c WHERE p.codigo_cliente = c.codigo_cli GROUP BY c.codigo_cli)

Todo el cdigo anterior parte de una tabla clientes y una tabla proyectos referenciada a la primera, y se ha creado una vista en la que obtenemos el cdigo de cliente y el nmero de proyectos en los que se est trabajando con cada cliente actualmente. Para borrar una vista utilizamos la orden DROP VIEW e igualmente elegiremos entre las opciones RESTRICT o CASCADE. Con la primera la vista no se borrar si est referenciada (por ejemplo en otra vista); en cambio con CASCADE todo lo que referencia a la vista se borrar con esta.
DROP VIEW clientes RESTRICT;

18 Bases de Datos 1

2. SENTENCIAS DE MANIPULACIN Una vez creada la base de datos con sus tablas, debemos poder insertar, modificar y borrar los valores de las filas de la tabla. Esto es lo que vamos a llevar a cabo en los siguientes apartados: Insercin de filas en una tabla Borrado de filas en una tabla Modificacin de filas en una tabla Consultas a una base de datos relacional Insercin de filas en una tabla La insercin de filas en una tabla se lleva a cabo con la sentencia INSERT INTO seguida del nombre de la tabla y de los valores a insertar:
INSERT INTO clientes VALUES (10, `EGIGSA, `37.248.573-C, `ARAGON 242, `Barcelona, DEFAULT);

O bien si estos datos introducidos para esta fila no estuviesen en orden, le indicados tras insert into el orden de los datos que introducimos (todo entre parntesis) y procedemos luego a VALUES. Borrado de filas en una tabla Se utiliza la sentencia DELETE y se selecciona con WHERE las condiciones para borrar esos datos, por ejemplo:
DELETE FROM proyectos WHERE codigo_cliente=2;

Se borrar de la base de datos proyectos todas las filas cuyo cdigo_cliente sea 2, y se pueden borrar multiples filas con esta sentencia. Modificacin de filas en una tabla Se lleva a cabo con una combinacin de sentencias: UPDATE seguido del nombre de tabla, SET para saber qu columna vamos a cambiar y WHERE donde se establecen los condicionantes:
UPDATE empleados SET sueldo = sueldo+1000 WHERE num_proyec = 2

Le acabamos de subir en 1000 euros el sueldo a los empleados que estn trabajando en el proyecto nmero dos. Consultas a una base de datos relacional Haremos uso de la sentencia SELECT seguido de las columnas que queremos seleccionar de esa tabla y FROM la tabla de la que extraemos; si despus de SELECT hacemos uso de la sentencia AS renombraremos las tablas (alias). As:
SELECT * FROM clientes; SELECT codigo_cli, nombre_cli, direccion, ciudad FROM clientes WHERE num_proyec=4;

En la primera consulta seleccionamos todas las columnas y filas de la base de datos clientes; en cambio en la segunda solo seleccionamos las columnas especificadas del proyecto nmero 4. Si resulta que de nuestros condicionantes se repiten resultados en la consulta, podemos evitar que aparezcan los repetidos con la clave DISTINCT inmediatamente despus de SELECT, por defecto, aparecer todo (ALL). Tras el WHERE pueden aparecer tambin consultas dentro de la consulta, y predicados como BETWEEN, para establecer entre qu dos lmites debe moverse

Bases de Datos 1 19

Funciones de agregacin

COUNT N total de filas seleccionadas SUM Suma valores de una columna MIN Valor mnimo de la columna MAX Valor mximo de la columna AVG Valor medio

el resultado, IN para indicar que el resultado debe coincidir con alguno de los que pongamos despus entre parntesis, LIKE implica alguna caracterstica, por ejemplo WHERE nombre_empl LIKE `J% implicar que el empleado empiece por J o WHERE nombre_emple LIKE `S _ _ _ buscar aquellos empleados que empiecen por S y tengan cuatro letras, como Sara. Tambin aparecen otros predicados como IS NULL para indicar que buscamos los nulos (o IS NOT NULL). Tambin podemos utilizar funciones de agregacin, que son las que vemos en la tabla lateral, como por ejemplo:
SELECT COUNT (*) AS numero_dep FROM departamentos WHERE ciudad_dep = `LERIDA;

Obtenemos as el nmero de departamentos que tenemos en la ciudad de Lrida. Tras la consulta, podemos pedir que la tabla se ordene con ORDER BY, como por ejemplo:
SELECT codigo_empl, nombre_empl, apellido_empl, sueldo FROM empleados CORDER BY sueldo DESC, nombre_empl

Donde obtenemos las 4 columnas pedidas en SELECT sobre todos los empleados (no hemos puesto ningn condicionante) y queremos que nos salda ordenado por el sueldo y, a igual sueldo, ordenado posteriormente por el apellido. Adems hemos pedido que nos lo ordene de mayor a menor sueldo (DESC). A continuacin vamos a llevar las mismas consultas que llevbamos a cabo en la unidad anterior en lenguaje SQL, por tanto: Combinacin
SELECT proyectos.codigo_proyecto, proyectos.precio, clientes.nif FROM clientes, proyectos WHERE clientes.codigo_cli=proyectos.codigo_cliente AND clientes.codigo_cli=20;

Combinamos de dos tablas proyectos y clientes, aquellos proyectos que son del cliente con cdigo 20. Podemos ahorrarnos repetir proyectos y clientes, utilizando un alias, como se ve en el ejemplo inferior, en el que hemos utillizado p para proyectos y c para clientes y hemos limpiado un poco el cdigo:
SELECT p.codigo_proyecto, p.precio, c.nif FROM clientes c, proyectos p WHERE c.codigo_cli=p.codigo_cliente AND c.codigo_cli=20;

Haciendo uso de otro SQL ms evolucionado, la sentencia anterior sera


SELECT p.codigo_proyecto, p.precio, c.nif FROM clientes c JOIN proyectos p on c.codigo_cli=p.codigo_cliente WHERE c.codigo_cli=20;

Combinacin natural

SELECT p.codigo_proyecto, p.precio, c.nif FROM clientes c NATURAL JOIN proyectos p WHERE c.codigo_cli=20;

Queda entendido que en clientes y proyectos debe existir una columna con el mismo nombre para poder realizarse esta combinacin natural. Al igual que en Lenguaje SQL tenamos combinacin por la derecha, por la izquierda o completa. La combinacin interna es la que hemos realizado anteriormente, se pierden los valores de las dos tablas que no coinciden INNER JOIN, pero podemos hacer uso de la combinacin por la izquierda (NATURAL LEFT OUTER JOIN), por la derecha (NATURAL RIGHT OUTER JOIN) o combinacin externa plena (NATURAL FULL OUTER JOIN)

20 Bases de Datos 1

La Unin Se lleva a cabo con la clusula UNION


SELECT ciudad FROM clientes UNION SELECT ciudad_dep FROM departamentos;

Interseccin Se lleva a cabo con la clusula INTERSECT, pero de la misma forma que la Unin. Diferencia Se utiliza la clusula EXCEPT como en el ejemplo:
SELECT codigo_cli FROM clientes EXCEPT SELECT codigo_cliente FROM proyectos;

De esta consulta extraemos el cdigo de clientes que no tienen ningn proyecto contratado ahora mismo con nosotros.

3. SENTENCIAS DE CONTROL Adems de todo lo anterior, debemos establecer una serie de mecanismos de control para resolver problemas de concurrencia por un lado (transacciones) y garantizar la seguridad por otro (autorizaciones). Una transaccin es una unidad lgica y atmica de trabajo; es decir, es un conjunto de sentencias que se ejecutan como si fuesen una sola. Para iniciar una transaccin se utiliza la clusula SET TRANSACTION y para finalizarla COMMIT (confirma todos los cambios producidos) o ROLLBACK (deshace todos los cambios desde el inicio de la transaccin)
SET TRANSACTION READ WRITE; UPDATE empleados SET sueldo=sueldo-1000 WHERE num_proyec=3; UPDATE empleados SET sueldo=sueldo+1000 WHERE num_proyec=1; COMMIT;

Acabamos de aumentar en 1000 el sueldo de los empleados del proyecto 3 y, a la par, disminuir en 1000 el sueldo de los empleados del proyecto 1. Las autorizaciones se llevan a cabo con la sentencia:

GRANT privilegios ON objeto TO usuarios [WITH GRANT OPTION]

Donde privilegios puede ser sustituido por ALL PRIVILEGES (todos los privilegios), USAGE (segn el objeto), SELECT (Consultas), INSERT [Columnas] (insercin de segn qu columna), UPDATE, DELETE, REFERENCES. Los objetos pueden ser un dominio, una tabla o una vista; y por fin, los usuarios pueden ser todos (PUBLIC) o una lista de identificadores de usuario. Asimismo, se puede utilizar la opcin WITH GRANT OPTION, que permite al usuario autorizado a autorizar a otros usuarios con los mismos privilegios que l ha sido autorizado. Para desautorizar la orden utilizada es REVOKE:
REVOKE [GRANT OPTION FOR] privil ON objeto TO usuarios [RESTRICT|CASCADE]

La opcin Restrict no nos permite desautorizar a un usuario si ste ha autorizado a otros y la opcin cascada s, y adems hace que queden todos desautorizados a la vez.

Bases de Datos 1 21

4. SUBLENGUAJES ESPECIALIZADOS
Lenguaje hospedado

Para poder utilizar el SQL desde un lenguaje de programacin, podemos utilizar el SQL hospedado y para ello precisamos de un precompilador que separe las sentencias del lenguaje de programacin de las del lenguaje de base de datos. Una alternativa interesante son las tuinas SQL/CLI. El precompilador separa las sentencias del SQL y las sentencias de programacin; as donde hay una sentencia de acceso a la base de datos, tendremos una llamada a la interfaz del SGBD. Todas las sentencias que hemos usado hasta ahora son las mismas que se van a seguir usando pero precedidas de la clusula EXEC SQL. Las SQL/Call-Level Interface, denominadas de forma abreviada CLI permiten que aplicaciones desarrolladas en un cierto lenguaje de programacin puedan incluir sentencias SQL mediante llamadas a libreras; por ejemplo la interfaz ODBC define una librera de funciones que permite a las aplicaciones acceder al SGBD utilizando el SQL.

22 Bases de Datos 1

TEMA 5 INTRODUCCIN AL DISEO DE BASES DE DATOS

1. INTRODUCCIN AL DISEO DE BASES DE DATOS El diseo de una base de datos consiste en definir la estructura de los datos que debe tener la base de datos en un sistema de informacin determinado; as que deberemos definir los atributos, dominios de atributos, claves primarias y forneas, etc. Las etapas de diseo que reconocemos en una base de datos son tres: Diseo conceptual: Obtenemos aqu una estructura de la informacin de la futura BD independiente de la tecnologa a emplear, el resultado se sita en el mundo de las concepciones; as que nos concentraremos nicamente en la problemtica de la estructura de la informacin sin tener que preocuparnos de resolver cuestiones tecnolgicas. Uno de los modelos de datos de alto nivel ms empleados es el modelo entidad-interrelacin (entity-relationship), que abreviaremos con la sigle ER y es el que utilizaremos en el siguiente captulo. Diseo lgico: Partimos del diseo conceptual anterior ajustando el modelo obtenido al SGBD con el que implementaremos la base de datos; aprenderemos a transformar un modelo ER en un modelo relacional. Diseo fsico: Transformaremos la estructura obtenida en el diseo lgico con el objetivo de conseguir mayor eficiencia.

Tema 5 Introduccin al diseo de bases de datos 1. Introduccin al diseo de bases de datos 2. Diseo conceptual: El modelo ER 3. Diseo lgico: Del modelo ER al modelo relacional

2. DISEO CONCEPTUAL: EL MODELO ER Dentro de este modelo distinguiremos las construcciones bsicas y las extensiones. CONSTRUCCIONES BSICAS Por entidad entendemos un objeto del mundo real que podemos distinguir del resto de objetos y del que nos interesan algunas propiedades (que denominaremos atributos). Las entidades, como la entidad EMPLEADO de la figura lateral se representan con un rectngulo y su nombre en maysculas en el interior. Los atributos se representan mediante un nombre en minsculas unido con un guin al rectngulo de la entidad. La clave primaria de entre todas las candidatas se subraya para distinguirla del resto de las claves (dni). Definimos interrelacin como una asociacin entre entidades, y en ocasiones estas interrelaciones tambin tendrn atributos, y al igual que los de las entidades, tendrn un cierto dominio. Estudiaremos este aspecto profundizando en el grado de las interrelaciones, este grado es el nmero de entidades que asocia una interrelacin. Las interrelaciones se representan con un rombo que une las dos entidades relacionadas y, a veces, con un atributo que califica esta relacin. Una relacin binaria es aquella que se da entre dos entidades. Por ejemplo, en la relacin estudiante-asignatura que tenemos en la figura lateral, es una relacin binaria que relaciona dos entidades y que queda calificada por el atributo nota. Ntese que para cada alumno que cursa una determinada materia, existe una nota, y por ello obtenemos la interrelacin en el nivel de clase y, ms abajo, en el nivel de ocurrencias. La conectividad de una relacin expresa el tipo de correspondencia que se establece entre las ocurrencias de las entidades asociadas en esta interrelacin. As, a nivel binario podemos tener: Conectividad uno a uno (1:1): Ponemos un 1 al lado de cada entidad. Por ejemplo si tuvisemos una interrelacin binaria de una empresa que asocia delegaciones con capitales de provincia; expresando que en cada capital solo
Entidad

Interrelacin binaria

Bases de Datos 1 23

Dependencia

hay una delegacin y que adems tenemos delegaciones en todas las capitales de provincia, la conectividad sera 1:1. Conectividad 1:N: Conectividad despacho, empleado con la relacin Asignacin. Resulta que todo despacho debe estar ocupado, con uno o ms empleados y que todo empleado tiene despacho pero solo uno. Por tanto en el lado de despacho pondremos un 1 y en el lado de empleado una N. Conectividad M:N: Varios a varios. As las notas que un estudiante puede tener en una misma asignatura, no tiene porqu ser solo una, sino que puede tener varias hasta que consiga aprobarla; de la misma forma, una misma asignatura es cursada por varios estudiantes, con lo cual tenemos tambin muchas notas.

Es muy habitual que las interrelacionas binarias M:N y todas las n-arias (>2) tengan atributos, en cambio las binarias 1:1 y 1:N no tienen por qu tenerlos; dado que siempre se le pueden asignar atributos a la entidad del lado N en el caso de 1:N y a cualquiera de las dos en el caso 1:1. En algunos casos adems se da una dependencia de la existencia, en la cual una entidad individual solo9 puede existir si hay como mnimo otra entidad individual asociada con ella mediante una interrelacin binaria determinada. Por ejemplo, en el modelo lateral vemos que la entidad empleado es obligatoria (lnea perpendicular que la cruza) en su relacin con direccin es decir, cada departamento tiene un empleado (y slo uno) que le sirve de director; pero no todos los empleados tienen porqu ser directores de departamento, (circunferencia).
Relacin ternaria

Muchas veces, el modelo binario no nos sirve para modelas todas las situaciones de la vida real; as por ejemplo, retomando el ejemplo del alumno que se matricula en una asignatura, si la suspende, tiene que volver a matricularse y volver a obtener, como resultado de ello, otra calificacin. Nos interesa modelar esta situacin y, en este caso hablaremos de una relacin ternaria (adems 1:1:1), en la que cada alumno obtiene para cada asignatura, una nota en cada semestre. Las interrelaciones recursivas son aquellas en las que la misma entidad est asociada ms de una vez. Un ejemplo sera persona y boda. Toda persona se tiene que casar con otra persona, y normalmente en estos casos se refleja el papel o rol diferenta que tiene cada una de ellas en la interrelacin; fijmonos adems que se trata de una relacin de dependencia, establecida por los crculos que marcan cada rol en su relacin. Las entidades dbiles son aquellas cuyos atributos no la identifican completamente, sino solo parcialmente y debe participar en una interrelacin que ayude a identificarle. Se representan con un rectngulo doble y la interrelacin que ayuda a identificarla con una lnea doble. As, en el ejemplo lateral, la entidad despacho no queda perfectamente definida por su nmero, sino que depende del edificio en el que est situada para definirse completamente (dado que un mismo despacho, el 106 puede existir en ambos edificios y ser distinto, lgicamente). Esta interrelacin obligatoriamente debe ser binaria con conectividad 1:N y la entidad dbil debe estar del lado de la N. Adems la entidad del lado 1 debe ser obligatoria en la relacin. EXTENSIONES DEL MODELO ER Estudiaremos dos extensiones: la generalizacin/especializacin y las entidades asociativas. La generalizacin/especializacin permite reflejar el hecho de que hay una entidad general, que denominaremos aqu superclase, que se puede especializar en entidades subclase. Estas ltimas tienen, adems de las caractersticas de la superclase a la que pertenecen, algunas caractersticas propia de su especializacin.

Interrelacin recursiva

Entidad dbil

24 Bases de Datos 1

As, por ejemplo, en el modelo lateral, observamos que tanto los directivos, tcnicos como administrativos son subclases (por la flecha que les une) de la superclase Empleado. Tienen los tributos DNI, nombre, apellido, direccin y telfono de la superclase, pero adems el directivo tiene una caracterstica que no tienen los dems y es contar con coche de la empresa, el tcnico tiene titulacin y del administrativo nos interesa la antigedad. Adems la generalizacin puede ser:

Generalizacin/Especializacin

Disjunta/Solapada: Una misma ocurrencia no puede aparecen en dos entidades subclase distintas (disjunta) o s puede (Solapada). Total/Parcial: Toda ocurrencia de la entidad superclase debe pertenecer a alguna de las entidades subclase (Total) o no (Parcial).

En el ejemplo anterior se trata de una generalizacin/especializacin disjunta, total. Las entidades asociativas son las que resultan de considerar una interrelacin entre entidades como si fuese una entidad, y tendr el mismo nombre que la interrelacin sobre la que se define. As nos permite tener interrelaciones en las que a su vez intervienen interrelaciones. Se denota una entidad asociativa recuadrando el rombo de la interrelacin de la que proviene Hay que considerar que el mecanismo de las entidades asociativas subsume el de las entidades dbiles y resulta todava ms potente. En el ejemplo lateral hemos sustituido la entidad dbil despacho que tiene la interrelacin asignacin con la entidad empleado; y vemos en el diagrama inferior la sustitucin. Observamos as que siempre que utilicemos una entidad dbil podremos sustituirla pro una entidad asociativa, pero no al revs. Hay ocasiones en las que no nos interesa el cambio, sobre todo porque en el modelo ER resultan menos complejas y son suficientes para modelizar las situaciones que se producen en el mundo real.
Entidad asociativa

3. DISEO LGICO: DEL MODELO ER AL MODELO RELACIONAL En esta etapa tenemos que transformar el modelo ER obtenido en la fase anterior en una estructura de datos de modelo relacional. En este sentido las entidades originarn relaciones y las interrelaciones pueden dar lugar a claves forneas de alguna relacin ya obtenida o pueden dar lugar a una nueva relacin. Pasamos a analizar todos los casos posibles. Transformacin de entidades
Entidad

Cada entidad ER pasa a ser como decamos anteriormente, una relacin del modelo relacional. Los atributos de la entidad sern atributos de la relacin y, de forma anloga, la clave primaria de la entidad, ser la clave primaria de la relacin. As, en el ejemplo lateral ya conocido de la entidad empleado, obtendramos la relacin: EMPLEADO(DNI, NSS, nombre, apellido, sueldo) Una vez transformadas todas las entidades, se hace necesario transformar todas las interrelaciones en las que intervienen estas entidades.

Bases de Datos 1 25

Conectividad 1:1

Transformacin de interrelaciones binarias Conectividad 1:1: Slo es necesario aadir a estas dos relaciones ya convertidas una clave fornea que referencia a la otra relacin. En el ejemplo lateral, donde para cada ciudad hay una y solo una delegacin, tenemos dos opciones y ambas referencian correctamente la relacin:
DELEGACION(nombre_del,, nombre-ciudad) Donde{nombre-ciudad} referencia CIUDAD CIUDAD (nombre-ciudad) DELEGACION (nombre-del,) CIUDAD (nombre-ciudad, nombre-del) Donde {nombre-del} referencia DELEGACION

Conectividad 1:N

Conectividad 1:N: Solo debemos aadir en la relacin correspondiente a la entidad del lado N, una clave fornea que referencie la otra relacin. As en el ejemplo lateral donde un empleado puede tener solo un despacho, pero este despacho ser a su vez de varios empleados, la interrelacin se transforma en:
DESPACHO (desp, .) EMPLEADO (emp, , desp) Donde {desp} referencia DESPACHO

Conectividad M:N

Conectividad M:N: Una interrelacin M:N se transforma en una relacin. Su clave primaria estar formada por los atributos de la clave primaria de las dos entidades interrelacionadas. Los atributos de la interrelacin sern atributos de la nueva relacin. As el ejemplo lateral se convierte en:
ESTUDIANTE (est, ) ASIGNATURA (asign, ) EVALUACION (est, asign, nota) ESTUDIANTE y {asign} referencia

Donde ASIGNATURA

{est}

referencia

Influencia de la existencia de dependencia: Hay que tener en cuenta que si una de las entidades es opcional en la interrelacin y la transformacin ha consistido en poner una clave fornea que corresponde a la otra entidad, entonces esta clave fornea puede tomar valores nulos. As en el primer ejemplo de esta pgina, si no en todas las ciudades existiesen delegaciones y optamos por la segunda opcin, tendremos en cuenta que nombre-del puede tomar valores nulos; en este caso nos decantaremos por la primera opcin.

Transformacin de interrelaciones ternarias


Conectividad M:N:P

La transformacin de una relacin ternaria siempre da lugar a una nueva relacin, que tendr como atributos las claves primarias de las tres entidades interrelacionadas y todos los atributos que tenga la interrelacin. Ahora bien, la clave primaria de la nueva relacin depende de la conectividad de la misma; y por tanto estudiaremos los casos posibles: Conectividad M:N:P: En este caso la clave primaria de la nueva relacin est formada por las claves primarias de las tres entidades interrelacionadas. Por ejemplo, estudiando el caso de la imagen lateral, la interrelacin sera:

ESTUDIANTE (est, ) ASIGNATURA (asign, ) SEMESTRE (sem, ) EVALUACIN-SEMESTRAL (est, asign, sem, nota) donde {est} referencia ESTUDIANTE, {asign} referencia ASIGNATURA y {sem} referencia SEMESTRE

Conectividad M:N:1

26 Bases de Datos 1

Conectividad M:N:1: La clave primaria de la nueva relacin est formada por todos los atributos que forman las claves primarias de las dos entidades de los lados de la interrelacin etiquetados como M y N. As para el ejemplo lateral obtenemos como resultado:
MAESTRO (codigo-maestro, ) CURSO (codigo-curso, ) ESCUELA (codigo-escuela, ) DESTINO (codigo-maestro, codigo-curso, codigo-escuela) donde {codigomaestro} referencia MAESTRO, {codigo-curso} referencia CURSO y {codigoescuela} referencia ESCUELA

Conectividad N:1:1: La clave primaria la forman la clave primaria de la entidad del lado N y los que forman la clave primaria de cualquiera de los dos lados con conectividad 1. As para el ejemplo lateral escogemos el siguiente ejemplo de los dos posibles:
HORA-SEMANAL (codigo-hora, ) AULA (codigo-aula, ) ASIGNATURA (asign, ) CLASE (codigo-hora, codigo-aula, asign, duracion) donde {codigo-hora} referencia HORA SEMANAL, {codigo-aula} referencia AULA y {asign} referencia ASIGNATURA

Conectividad N:1:1

Conectividad 1:1:1: La clave primaria la forman la clave primaria de dos entidades cualesquiera de las que forman la relacin. Por ejemplo en la interrelacin que registra la informacin de defensas de los proyectos de fin de carrera, intervienen el estudiante, el proyecto y el tribunal. De las 3 opciones disponibles, hemos elegido la siguiente:
TRIBUNAL (trib, ) ESTUDIANTE (est, ) PROYECTO (proy, ) DEFENSA (trib, est, proy, fecha-defensa) donde {trib} referencia TRIBUNAL {EST} referencia ESTUDIANTE y {proy} referencia PROYECTO

Conectividad 1:1:1

Transformacin de interrelaciones n-arias Es una generalizacin de lo explicado para las ternarias; consistir pues en la obtencin de una nueva relacin que contiene todos los atributos que forman las claves primarias de las n entidades interrelacionadas y todos los atributos de la interrelacin. Adems, si todas las entidades estn conectadas con muchos, la clave primaria de la nueva relacin se formar por los atributos de las claves de las n entidades interrelacionadas; si una o ms entidades estn conectados con 1, entonces la nueva clave primaria tendr n-1 claves interrelacionadas, con la nica condicin que la clave no incluida pertenecer a una conexin 1. Transformacin de interrelaciones recursivas Las interrelaciones recursivas se tratan igual que el resto de las interrelaciones; por ello si tiene conectividad 1:1 1:N da lugar a una clave fornea, mientras que si la conectividad es M:N o n-aria, originar una nueva relacin. As para el ejemplo de la persona y la boda, el resultado puede ser:
PERSONA (codigo-per, codigo-conyuge ) donde {codigo-conyuge} referencia PERSONA y codigo-conyuge admite valores nulos.
Conectividad 1:1:1

Bases de Datos 1 27

Transformacin de entidades dbiles Se traducen al modelo relacional igual que el resto de entidades, con una pequea diferencia; siempre se encuentran en el lado N de una interrelacin 1:N que completa su identificacin; as pues la clave fornea debe formar parte de la clave primaria de la relacin correspondiente a la entidad dbil. El ejemplo se transforma tal y como se muestra a continuacin:

Entidades dbiles

EDIFICIO (nombre, direccion) DESPACHO (nombre, numero, superficie)donde {nombre} referencia EDIFICIO

Transformacin de la generalizacin/especializacin
Generalizacin/Especializacin

En este caso, cada una de las entidades superclase y subclase se transforman en una relacin: La relacin de la entidad superclase tiene como clave primaria la clave de la entidad superclase y contiene todos los atributos comunes. Las relaciones de las entidades subclase tienen como clave primaria la clave de la entidad superclase y contienen los atributos especficos de la subclase. Si retomamos el ejemplo que vimos anteriormente para la generalizacin/especializacin, se traducira as para el modelo relacional:
EMPLEADO (dni, nombre, direccion, telefono) DIRECTIVO (dni, coche) donde {dni} referencia EMPLEADO ADMINISTRATIVO (dni, antiguedad) donde {dni} referencia EMPLEADO TECNICO (dni, titulo) donde {dni} referencia EMPLEADO PROYECTO {pro, } TRABAJA (dni, pro, superficie) donde {dni} referencia TECNICO y {pro} referencia PROYECTO

Transformacin de entidades asociativas


Entidades asociativas

Como una entidad asociativa tiene su origen en una interrelacin, la transformacin de la interrelacin originaria es, al mismo tiempo, la transformacin de la entidad asociativa.
CIUDAD (nombre-ciudad, ) VIAJE (id-viaje, ) RECORRIDO (nombre-ciudad, id-viaje) donde {nombreciudad} referencia CIUDAD e {id-viaje} referencia VIAJE CLIENTE (codigo-cliente, ) REPARTO (nombre-ciudad, id-viaje, codigo-cliente, paq-car, paq-desc) donde {nombre-ciudad, id-viaje} referencia RECORRIDO y {codigo-cliente} referencia CLIENTE

Finalmente, se propone una tabla que muestra los aspectos ms bsicos de todas las transformaciones estudiadas en este apartado:
Elemento modelo ER Entidad Interrelacin 1:1 Interrelacin 1:N Interrelacin M:N Interrelacin n-aria Interrelacin recursiva Entidad dbil Transformacin al modelo relacional Relacin Clave fornea Clave fornea Relacin Relacin Clave fornea para binarias 1:1 y 1:N Relacin para binarias M:N y n-arias La clave fornea de la interrelacin identificadota forma parte de

28 Bases de Datos 1 la clave primaria Relacin para la entidad superclase Relacin para cada una de las entidades subclase La transformacin de la interrelacin que la origina es a la vez su transformacin.

Generalizacin/especializacin Entidad asociativa

Texto elaborado a partir de:

Rafael Camps Par, Xavier Franch Gutirrez, Carme Martn Escofet, Dolors Costal Costa Febrero 2004

Bases de datos I

Bases de datos 2
TEMA 1 INTRODUCCIN A LOS SISTEMAS DE GESTIN DE BASES DE DATOS

Tema 1 Introduccin a los sistemas de gestin de bases de datos 1. Funcionalidad y objetivos de los SGBD 2. Arquitectura de 3 niveles de los SGBD 3. Modelos de BD 4. Modalidades de uso del lenguaje

1. FUNCIONALIDAD Y OBJETIVOS DE LOS SGBD Entre la funcionalidad que se espera de una base de datos encontramos: Consultas no predefinidas y complejas: Se debe pedir a un sistema de base de datos que permita a los usuarios hacer consultas de cualquier tipo y complejidad, sin que estn preestablecidas, sin que se tenga que compilar un programa exclusivamente para ello y que sea sencillo y cmodo para el usuario. Consultas del tipo; Quiero un listado ordenado por apellidos de los alumnos nacidos entre 1965 y 1971, que estn matriculados de 3 o menos asignaturas y que vivan en Barcelona capital. Flexibilidad e independencia: Interesa obtener la mxima independencia posible entre los datos y los procesos usuarios, para que cuando existan cambios tecnolgicos se puedan implementar con facilidad. En ese sentido nos tiene que dar igual el Sistema operativo o el tipo de fichero en el que los datos estn escritos (independencia fsica de los datos); pero es que adems queremos que diferentes usuarios tengan unas visiones distintas e independientes de la base de datos (como hablbamos en el tema anterior de la visin de una base de alumnos desde el punto de vista del profesor o de la secretara); a esto se le denomina independencia lgica de los datos. Problemas de redundancia: Es necesario eliminar la redundancia de datos, dado que cuando se quiere consultar alguno de ellos, podemos estar basando la consulta sobre datos anticuados o errneos, lo cual revierte claramente en una prdida de integridad de los mismos. Adems, cuando un dato es calculado (o derivado) producto de dos o ms datos; es el SGBD quien debe servir ese dato calculado en el momento, pues al programador o al usuario puede habrsele olvidado realizar el clculo tras actualizar los nuevos datos. Integridad de los datos: Se requiere un mantenimiento de alta calidad de los datos en cualquier circunstancia. Cuando se define una base de datos, se definen sus tipos y tambin las reglas de integridad que debe cumplir; reglas de dos tipos: las reglas de integridad del modelo (por ejemplo, no aceptar datos duplicados) y reglas de integridad del usuario (por ejemplo no aceptar alumnos de menos de 18 aos en la universidad ni de ms de 120). Adems los procesos de backup y restauracin tras un accidente, deben estar automatizados y ser transparentes al usuario. Concurrencia de usuarios: Cuando muchos usuarios concurren en la misma base de datos en modo lectura, el nico problema es el rendimiento; pero si un usuario o ms estn variando datos, se pueden dar problemas de interferencia; se minimizan estos problemas con la transaccin de BD; consiste en un conjunto de operaciones simples que se ejecutan de manera atmica, es decir o se ejecutan por completo o no se ejecuta ninguna; nunca, en cualquier caso, se ejecutar parcialmente. As por ejemplo si realizamos una transferencia de efectivo de la cuenta A a la B; primero nos quitan el dinero de A y antes de ingresarlo en B sucede una cada de tensin; entonces Dnde ir ese dinero? Para evitar estos problemas se define una transaccin de BD, que utilizar la operacin COMMIT para indicar que ya ha terminado; si no puede acabar la transaccin, no llega a esta COMMIT, se deshar todo lo realizado, con la operacin denominada ROLLBACK. Adems mientras tiene lugar esta transferencia, para que se ejecute felizmente, se asla de las dems operaciones con la tcnica de bloqueo, que pone limitaciones a los accesos del resto de las transacciones para que no interfieran; lo malo de esto es que produce esperas, retenciones y, en consecuencia, el sistema se ralentiza. El esfuerzo actual de los SGBD se centra en minimizar estos efectos negativos.

2 Bases de Datos 2

Seguridad: No hacemos aqu referencia a los backups que ya habamos tratado anteriormente, sino a temas relativos a la confidencialidad, autorizaciones, derechos de acceso, etc. Los datos manejados en bases de datos estn en Espaa protegidos por ley; y los diferentes sistemas de gestin de bases de datos utilizan tcnicas de limitar las autorizaciones e incluso de encriptacin de datos.

2. ARQUITECTURA DE 3 NIVELES DE LOS SGBD Encontramos dos niveles en toda base de datos: el nivel lgico y el nivel fsico; el comit conocido como ANSI/SPARC defini en 1980 otra definicin de estos niveles, denominados esquemas: Esquemas externos: Se sitan las diferentes Esquemas y niveles visiones lgicas que los usuarios tendrn de las partes de las BD que utilizarn. Esquema conceptual: Es nico y global y sirve de referencia para todos los sistemas: se describen aqu las entidades tipo, atributos, interrelaciones, restricciones, reglas de identidad, etc. As, los esquemas externos se nutren en la parte que les interese del esquema conceptual. Si por ejemplo en el esquema conceptual tenemos los atributos de alumno: nombre, apellido1, apellido2 quiz en algn esquema externo aparezca el atributo persona, que sea la refundicin de nombre+apellido1+apellido2. Esquema interno: Se corresponde completamente con el nivel fsico del que hablbamos anteriormente: caminos de acceso, Independencia fsica codificacin de datos, gestin del espacio y del tamao de la pgina.

Con esta nueva arquitectura de los SGBD la independencia de los datos est asegurada; as, hablaremos de independencia fsica, cuando los cambios en la organizacin fsica (esquema interno) no afectan al mundo exterior (es decir, los esquemas externos). Si cambiamos, como se ve en la figura lateral unos datos de un soporte a otro, no se vern afectados ni los programas ni los usuarios directos; pero tampoco se tendran que ver afectados por ejemplo si cambiamos el mtodo de acceso a un conjunto de registros determinados; solo deben variar las correspondencias entre el esquema conceptual y el nivel fsico, pero nada ms. La independencia lgica tambin est asegurada: cuando existen cambios en el esquema conceptual, dichos cambios no afectarn a los esquemas externos que no hagan referencia a entidades o atributos modificados; por otro lado cuando es efectan cambios en un esquema externo, solo debe afectar a los usuarios de dicho esquema, pero no a usuarios de otros esquemas externos, ni al esquema conceptual ni, por supuesto al esquema interno.

c Bases de Datos 2 3

3. MODELOS DE BD Todo modelo de base de datos debe proveernos de estructuras de datos para construir la BD (tablas, rboles), restricciones o reglas de identidad que deben cumplir los datos introducidos y luego una serie de operaciones para trabajar con los datos: borrado, consulta, inserciones, bsquedas
Modelos de BD

Existen 3 modelos principales de BD que vamos a estudiar segn su evolucin histrica: Modelo Jerrquico: Sus estructuras son registros interrelacionados en forma de rboles, son propios de los aos sesenta. Modelo en red: De principios de los 70, hay registros e interrelaciones, aunque ya no obliga como en el anterior, que un registro sea hijo de un solo registro. Modelo relacional: Se basa en el concepto matemtico de relacin, entendindola como tabla. El modelo relacional se limita al nivel lgico (no hace consideracin alguna sobre las representaciones fsicas, por lo que nos da una independencia total), mientras que los dos modelos anteriores prerrelacionales s. En los ltimos aos se est extendiendo el modelo de BD relacional con objetos, aadiendo tipos abstractos de datos (TAD) a los tipos reconocidos y manipulados por la BD; esto acerca los sistemas relacionales al paradigma de la orientacin a objetos.

4. MODALIDADES DE USO DEL LENGUAJE


Lenguaje hospedado

Para poder utilizar el SQL desde un lenguaje de programacin, podemos utilizar el SQL hospedado y para ello precisamos de un precompilador que separe las sentencias del lenguaje de programacin de las del lenguaje de base de datos. Una alternativa interesante son las tuinas SQL/CLI. El precompilador separa las sentencias del SQL y las sentencias de programacin; as donde hay una sentencia de acceso a la base de datos, tendremos una llamada a la interfaz del SGBD. Todas las sentencias que hemos usado hasta ahora son las mismas que se van a seguir usando pero precedidas de la clusula EXEC SQL. Las SQL/Call-Level Interface, denominadas de forma abreviada CLI permiten que aplicaciones desarrolladas en un cierto lenguaje de programacin puedan incluir sentencias SQL mediante llamadas a libreras; por ejemplo la interfaz ODBC define una librera de funciones que permite a las aplicaciones acceder al SGBD utilizando el SQL.

4 Bases de Datos 2

TEMA 2 TRANSACCIONES EN LAS BASES DE DATOS

1. VISIN EXTERNA DE LAS TRANSACCIONES Una transaccin es un conjunto de operaciones de lectura y/o actualizacin de la BD que acaba confirmando o cancelando los cambios que se han llevado a cabo. Ya conocemos de la asignatura Base de Datos 1 que una transaccin acaba con la instruccin COMMIT o bien con la instruccin ROLLBACK que anula todos los cambios. Toda transaccin debe cumplir las 4 propiedades de atomicidad, denominadas propiedades ACID (Atomicidad, Consistencia, Aislamiento Isolated- y Definitividad): Atomicidad: La operacin de transaccin o se realiza toda ella o no se realiza ninguno de los cambios, por tanto aplicaremos ROLLBACK o COMMIT segn nos interese. Consistencia: Toda transaccin que parte de un estado consistente de la BD la debe dejar tambin consistente tanto desde el punto de vista fsico como del lgico. Aislamiento: La transaccin debe comportarse como si no hubiese ms usuarios accediendo a la BD, por tanto no debe verse afectada por otras transacciones simultneas. Definitividad: Los resultados de una transaccin confirmada, tienen que ser permanentes, con independencia de que se produzcan fallos o desastres.
Tema 2 Transacciones en las bases de datos 1. Visin externa de las transacciones 2. Control de concurrencia mediante reservas 3. Recuperacin 4. Consideraciones con respecto al nivel de paralelismo 5. Otras visiones de las transacciones 6. Un caso de SGBD concreto: Informix

Los tipos de interferencias que podemos encontrar si las transacciones no se aslan correctamente entre s son: Actualizacin Perdida: Se pierde el cambio que ha efectuado una operacin de escritura. Puede suceder porque o bien una de las transacciones simultneas aborta la operacin cuando la otra transaccin ya ha ledo el nuevo valor, o bien a un orden de lectura inadecuado para dos transacciones simultneas. Veamos estos dos ejemplos:
T1 T2 T1 T2 R(A) R(A) W(A) W(A) W(A) W(A) COMMIT COMMIT COMMIT ABORT

En la primera tabla al escribir en A (por ejemplo una cuenta bancaria) se puede sumar una cantidad, en T2 le puede aadir una cantidad a la inicial pero al abortar el proceso T1 esa cantidad de la que parte no es correcta. EN el segundo ejemplo el orden de lectura inadecuada para dos transacciones que realmente acaban tampoco es el adecuado Lectura no confirmada: Se produce cuando una transaccin lee un dato que ha sido modificado por otra transaccin que despus aborta. Realmente como no hay aislamiento de las transacciones se lee un dato no confirmado que, finalmente, no es el correcto.
T1 T2 R(A) W(A) R(A) W(A) ABORT COMMIT

Lectura no repetible: Tiene lugar cuando una transaccin lee dos veces el mismo dato y obtiene valores diferentes a causa de una modificacin efectuada por una segunda transaccin simultnea.

c Bases de Datos 2 5 T1 T2 R(A) R(A) W(A) COMMIT R(A) COMMIT

Anlisis inconsistente (fantasmas): Ahora el error se produce cuando se producen interferencias respecto a un conjunto de datos (y no frente a un nico dato como hasta ahora). Cuando una transaccin T1 lee unos datos, mientras otra T2 actualiza una parte, se puede obtener un estado de los datos incorrectos que nunca hubiese tenido lugar si T1 y T2 ase hubiesen ejecutado una detrs de otra.
T1 T2 R(A1) R(A2) W(A1) R(A1) R(A2) W(A2) COMMIT COMMIT

En este ejemplo de transferencia entre dos cuentas A1 y A2, los datos que lee T2 no son correctos, corresponden a un estado intermedio que no deberan haberse leido fuera de la transaccin T1. Para evitar estos problemas existe lo que se llama nivel de aislamiento. Podramos aislar completamente todas las transacciones y todos los problemas desapareceran, pero esta proteccin exigira una sobrecarga tremenda en trminos de gestin de informacin de control, o de acceso a la base de datos. En SQL la instruccin SET TRANSACTION permite relajar el nivel de aislamiento a uno de los 4 siguientes niveles:
Lectura no repetible y anlisis de inconsistencias (excepto fantasmas) No No S S

Actualizacin Perdida READ UNCOMMITED READ COMMITEED REPEATABLE READ SERIALIZABLE

Lectura no confirmada

Fantasmas

S S S S

No S S S

No No No S

Estos niveles aparecen de menos a ms estrictos y, por lo tanto, de menos a ms eficientes. La definicin del SQL estndar establece que un SGBD tiene la obligacin de garantizar al menos el nivel de aislamiento que se haya solicitado, pero puerde ser mayor, por lo que el nico nivel que tienen la obligacin de implementar es el ms alto, el serializable. Se denomina nivel de paralelismo o concurrencia al grado de aprovechamiento de los recursos de proceso disponibles segn la ejecucin de transacciones concurrentes en la BD. Es decir, el objetivo del paralelismo es aumentar el trabajo til para los usuarios por unidad de tiempo, intentando obviamente minimizar todo lo posible el coste de las tareas de control de la BD. De momento nos interesa la serializabilidad de conflictos, en la que se parte de una visin simplificada de las transacciones, que se considera formadas por dos nicos tipos que ya vimos anteriormente, la lectura (R) y la escritura (W); adems estos mtodos se implementarn sobre lo que denominamos grnulo que es la unidad de datos controlada individualmente por el SGBD, que puede ser un nico dato, una pgina o un bloque de disco, segn el gestor. Llamaremos horario o historia a un determinado orden de ejecucin de las acciones de lectura/escritura de un conjunto de transacciones.

6 Bases de Datos 2

Un horario serial es aquel en el que no se produce ningn solapamiento entre las acciones de las transacciones implicadas. Por ejemplo:
T1 T2 R(A) R(A) R(B) W(A) W(C)

Y como no hay solapamiento, los 2 posibles horarios seriales podran ser:


T1 T2 T1 T2 R(A) R(B) W(C) R(A) R(A) R(A) W(A) R(B) W(A) W(C)

Dos acciones sern conflictivas si pertenecen a transacciones distintas y el orden en que se ejecutan pueden afectar al valor del grnulo que haya ledo una de las transacciones o al valor final del grnulo; por tanto, estas acciones sern no conmutables. Por el contrario, un horario se considera correcto o serializable si el orden relativo de todos los pares de acciones es el mismo que en algn horario serial. Un horario serializable siempre produce el mismo resultado que algn horario serial. Veamos algunos ejemplos:
T1 T2 R(A) R(A) W(A) W(A)

Horario no serializable, pues se pierde W(A) en T1 (Actualizacin perdida)


T1 T2 R(A) W(A) R(A)

No serializable, lectura no repetible en R(A) en T1.


T1 T2 R(A) R(C) R(D) W(B) W(A) R(E) W(E)

Es un horario serializable, ya que es equivalente a un horario serial en que T1 se ejecuta antes que T2:
T1 T2 R(A) W(B) R(E) W(E) R(C) R(D) W(A)

El grafo de precedencias es til para encontrar interferencias en estos horarios serializables. Para ello se construye el grafo siguiendo los siguientes puntos: Los nodos denotan transacciones Los arcos se etiquetan con el identificador de grnulo siempre y cuando no sean conmutables (se comprender mejor con el ejemplo). Dos operaciones no son conmutables cuando pertenecen a transacciones diferentes y el orden de ejecucin puede afectar al valor ledo o al valor final del grnulo. Cuando el grafo de precedencia tiene ciclos, existen interferencias y ello implica que las transacciones no estn correctamente aisladas. Para encontrar un horario serial equivalente, el nodo no debe tener ciclos y entonces basta situarse en un nodo Terminal (al que no llegue ningn arco), apuntar la transaccin representada en el nodo, eliminar el nodo y todas las flechas que salgan del nodo eliminado, y repetir el proceso hasta que el grafo quede vaco.

Vamos a comentar todo este proceso del grafo de precedencias con un ejemplo que encontramos al margen de la pgina siguiente. Al comenzar a procesar el horario, vemos que las acciones 30 y 70 no son conmutables, dado que si se

c Bases de Datos 2 7

Horario no serializable # 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 T1 R(B) R(C) R(B) R(E) R(C) W(C) W(E) W(A) W(B) T2 R(A)

efecta antes W(C), la R(C) variar, por tanto dibujamos un primer arco en el grafo, con el valor del grnulo afectado (C) y como nodos las transacciones, parte primero de T1 que es la primera que se realiza y la flecha llega a T2 que es la segunda.

W(B)

R(E) R(C) Commit

Si continuamos avanzando por el horario de ejemplo, llegamos a encontrar mas acciones no conmutables, la 40-60, 80-110, 90-120 y 70-130, con lo que el grafo final nos queda de esta forma:

Commit

De lo que se desprende que el horario no es serializable.


Horario de ejemplo serializable # 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 T1 R(A) W(A) T2 T3 R(A) T4

Ponemos ahora otro nuevo ejemplo, que vemos en la figura lateral y al desarrollar el grafo de precedencias, obtenemos:

R(B) W(B) R(A) R(D) W(D)

R(B) R(E) W(E) R(F) R(D) Commit

Commit Commit Commit

Como el grafo es acclico, no existe ninguna interferencia, por lo que ahora s podemos encontrar los horarios seriales equivalentes. Debemos comenzar con un nodo Terminal, en este caso, solo existe T1; lo eliminamos, junto con las flechas que de l parten y nos queda:

Procedemos ahora igual con T2, y luego podemos escoger indistintamente T3 T4, con lo cual los dos horarios seriales equivalentes seran: T1, T2, T3, T4 y tambin T1, T2, T4 y T3. La recuperabilidad hace referencia a las interferencias que se producen al cancelar transacciones, referencia de la que se haca caso omiso en la serializabilidad en la que considerbamos que no exista la posibilidad de cancelar o abortar una accin ya comenzada. Un horario, incluyendo las acciones COMMIT y ABORT cumple el criterio de recuperabilidad, si ninguna transaccin T1 que lee o escribe un grnulo escrito por otra transaccin T2, confirma sin que antes lo haya hecho T2.

8 Bases de Datos 2

T1 T2

W(A) W(A) COMMIT

ABORT

Este horario anterior segn es serializable, pero no es recuperable, dado que ahora se puede cancelar una accin comenzada, esto se podra arreglar con el siguiente orden horario:
T1 T2 W(A) ABORT W(A) COMMIT

2. CONTROL DE CONCURRENCIA MEDIANTE RESERVAS Hay diversas tcnicas de control de concurrencia, pero sin duda la ms utilizada con diferencia en los sistemas comerciales es el control mediante reservas. La idea bsica es que una transaccin tiene que obtener una reserva de un grnulo antes de poder operar sobre el mismo. Existen dos tipos de reservas, las compartidas (que permiten llevar a cabo lecturas de un grnulo) y las exclusivas (permiten realizar lecturas y escrituras). En un momento dado, un mismo grnulo puede estar reservado para n transacciones con modalidad S o para una nica transaccin en modalidad X. Una vez pedida la reserva, por ejemplo lock (granulo, modalidad) se desbloquea con el comando unlock (granulo). Si una reserva no puede concederse, se suspende la ejecucin de la transaccin, y cuando se libera esta reserva de grnulo, el SGBD trata de reanudar la ejecucin de alguna transaccin que haya quedado suspendida. Si las transacciones reservan los grnulos justo antes de operar y los liberan inmediatamente despus, es evidente que podran producirse exactamente las mismas interferencias que si no se hace nada, por ello toda transaccin debe cumplir lo que se denomina protocolo de reservas en dos fases (PR2F): Si una transaccin reserva cualquier grnulo en la modalidad adecuada antes de operar, nunca adquiere o refuerza una reserva despus de haber liberado cualquier otra antes. Con este protocolo conseguimos alterar horarios no serializables para convertirlos en serializables. Por ejemplo:
T1 T2 R(A) R(A) W(A) W(A)

Ante la posible interferencia de actualizacin perdida, al aplicar PR2F:


T1 T2 L(A.X) R(A) L(A,X) W(A) --UL(A) --R(A) W(A)

Ahora ponemos otro ejemplo, frente a:


T1 T2 T1 T2 L(A,X) L(A,X) W(A) W(A) W(A) --UL(A) --ABORT W(A) UL(A) ABORT

Observamos que ahora no hemos solucionado nada, y es que debemos recordar que estre protocolo PR2F converta en serializable los horarios, pero no en recuperables, para ello debemos aplicar el PR2F estricto que no libera ninguna reserva hasta que acaba con COMMIT o ABORT indistintamente. Ya con este nuevo protocolo obtendremos y habremos solucionado el problema:
T1 T2 L(A,X) L(A,X) W(A) --ABORT (UL(A)) --W(A)

c Bases de Datos 2 9

Con el PRF2 estricto conseguimos simplificar la implementacin y el uso del sistema, eliminamos la posibilidad de cancelaciones en cascada aunque como contrapartida, el nivel de paralelismo que permite alcanzar es ms bajo. Se dice que se produce un abrazo mortal cuando la ejecucin de dos o ms transacciones queda suspendida porque todas necesitan que otra de las transacciones implicadas en el abrazo libere alguna reserva ya obtenida. Por ejemplo:
T1 T2 L(A,S) R(A) L(B,X) W(B) L(A,X) L(B,S) ------

Horario # 10 20 30 40 50 60 70 80 90 100 110 120 # 10 20 30 40 50 60 70 80 T1 LOCK (B,X) R(B) LOCK (C,S) R(C) W(B) LOCK (E,S) R(E) R(C) COMMIT T1 T2 LOCK (A,X) R(A) W(A) T2 LOCK(A,X) R(A)

T2 no puede continuar porque T1 tiene reservada en modalidad lectura el grnulo A, pero no se puede compartir, mientras que T1 est esperando que T2 libere B que lo tiene reservado para escritura. Para saber cuando se puede producir un abrazo mortal, podemos dibujar los grafos de espera, que conviene no confundir con los grafos de precedencia aunque sobre el papel se parezcan bastante. El grafo de espera se caracteriza por: Evoluciona a lo largo del tiempo, a medida que las transacciones adquieren o liberan reservas. Los nodos denotan transacciones Los arcos se etiquetan con un identificador del grnulo que interviene en la operacin. Cuando en un grafo de espera existan ciclos, tenemos un abrazo mortal.

LOCK (B,X)

En el primer ejemplo de la tabla lateral, si analizamos las operaciones desde la 10 hasta la 70, encontramos que la 30 y la 70 son incompatibles, por lo que hasta ese momento el grafo tendr la forma (recordemos que evoluciona a lo largo del tiempo):

LOCK (B,X) R(B) W(B) LOCK (A,X)

LOCK (B,X)

Lnea 70

Hasta que T2 no consiga la reserva de B no puede continuar su ejecucin, por lo tanto solo T1 est activa, y esta liberacin se consigue en 120 con el COMMIT que libera todas las reservas. Por lo que en este horario no hay ningn problema, es serializable y recuperable. En cambio, en el ejemplo siguiente (de 80 lneas), en le momento de ejecutar la accin de la lnea 70 el grafo es igual al anterior, y lo tenemos justo debajo de la tabla del ejemplo, pero en el momento de llegar a la lnea 80 el grafo de espera es el ltimo con el que nos encontramos, tenemos un ciclo y por tanto un abrazo mortal. Para resolver estos abrazos, los SGBD pueden optar por una de las tres posibilidades siguientes: Prevenirlos antes de que se produzcan. Definir un tiempo de espera mximo que al ser superado, haga que se cancele automticamente toda transaccin. Detectarlos y resolverlos una vez que se hayan producido. Es la opcin ms comn, la bsqueda de estos ciclos de espera a su vez pueden hacerse: o Siempre que una transaccin pida una reserva y no la obtenga inmediatamente, esto implica que algo sucede; es la mejor forma pero implica una carga de trabajo excesiva a la BD. o Cada cierto tiempo, que no debera ser demasiado largo. o Cuando existen transacciones sospechosas (al menos dos) porque estn en espera desde hace ms de un cierto tiempo.

Lnea 80

10 Bases de Datos 2

En cualquier caso, una vez detectado lo nico que puede hacerse es romper el ciclo cancelando una o varias de las transacciones implicadas, generalmente se cancela la que se vea implicada en ms abrazos mortales o la que lleve menos tiempo en ejecucin para deshacer menos trabajo. Jerarqua de composicin de grnulos Hay muchas veces que se dispone de mltiples niveles de Jerarqua de composicin de grnulos granularidad y esto afecta obviamente a los protocolos implementados en el punto anterior. Pueden existir jerarquas de grnulos donde grnulos de dimensiones mayores pueden contener subgrnulos, o grnulos ms pequeos. As una reserva S o X de un grnulo puede permitir acceder a los ms pequeos sin llevar a cabo nuevas reservas. As, si una transaccin tiene que acceder a todos o a una gran parte de los grnulos elementales que contiene otro grnulo, puede incrementar el rendimiento haciendo menos peticiones de reserva, si reserva el grnulo completo. Para leer todos los datos de la tabla T1 lateral, la transaccin podra ser:
T1 L(T1,S) R(P1) R(P2) R(P3)

Para que este protocolo funcione perfectamente, cuando se pide una reserva de un grnulo debe comprobarse que no haya ninguna reserva incompatible por parte de ninguno de sus subgrnulos, ni de ninguno de los grnulos que lo contienen. As para reservar cualquier grnulo en modo S, habr que reservar todos los grnulos que lo contienen, partiendo desde la raz de la jerarqua en modo IS (intencin de lectura), de modo anlogo existe la reserva en modo IX; las liberaciones de las reservas se harn en orden inverso al de adquisicin. La tabla de compatibilidad entre estas nuevas modalidades puede observarse en el lateral:
Tabla de compatibilidades

Las reservas IS de un grnulo dan derecho a pedir reservas de tipo S o IS de los subgrnulos, lo cual debe impedirse cuando otra transaccin tenga reservado el grnulo para escritura (X). Las reservas IX dan derecho a pedir reservas de tipo X o IX de los subgrnulos, lo cual debe impedirse si el grnulo ya ha sido reservado para lectura o escritura. Tambin existen las reservas SIX que no son estrictamente necesarios pero pueden ser tiles pues permiten leer cualquier subgrnulo (sin pedir reservas particulares) o pedir reservas de escritura: vienen a sumar los derechos de las reservas S e IX.

IS IS S IX S S S SIX S X No

IX S S No No No

S SIX X S S No No No No S No No No No No No No No

Niveles de aislamiento El SGBD siempre gestiona las reservas de escritura con el mximo rigor, esto implica que todas las reservas con modalidad X se mantienen hasta la finalizacin de la transaccin. No obstante, las reservas para lectura pueden variar: Nivel serializable: Igual al concepto anterior, las reservas se mantienen siempre hasta que las transacciones finalizan. Nivel Repeatable Read: Las reservas S de lectura se mantienen hasta que la transaccin no necesite volver a leer cada grnulo. Nivel Read Committed: Las reservas de lectura se mantienen hasta justo despus de la lectura del grnulo. Garantiza que lo que se lee se ha confirmado, ya que las reservas para cada actualizacin siempre se mantienen hasta el final de la transaccin.

c Bases de Datos 2 11

Nivel Uncommitted: No se efectan reservas para la lectura, as que estos datos pueden haber sido actualizados por una transaccin todava no confirmada.

3. RECUPERACIN Los mecanismos de recuperacin tienen que garantizar la atomicidad y la definitividad de las transacciones. Su objetivo primordial es que nunca se pierdan los cambios de las transacciones que ya han sido confirmadas y que no se mantengan los cambios efectuados por transacciones que han sido canceladas. El SGBD tienen que asegurar la cancelacin voluntaria de las transacciones a peticin de la aplicacin, la involuntaria a causa de fallos de aplicacin, violaciones de restricciones de integridad integridad frente a una caida del sistema o por la destruccin total de la BD. Vamos a distinguir a su vez la restauracin de la reconstruccin. La restauracin si es hacia atrs debe ser capaz de deshacer los cambios de una transaccin abortada y si es hacia delante debe rehacer los cambios de una transaccin confirmada. Para analizar estos cambios hay que tener en cuenta la utilizacin de una memoria intermedia por parte del SGBD. No todas las peticiones de lectura/escritura van directamente a la BD, en un momento determinado puede haber acciones de escritura que no han llegado a la BD en memoria externa y otras que s lo han hecho, y suele ser independiente del hecho de que las transacciones hayan confirmado o no: puede haber escrituras confirmadas que no hayan llegado al disco. Para deshacer y rehacer cambios, el SGBD utiliza una estructura de datos con informacin de cambios el dietario, que guarda un identificador por cada transaccin, el estado anterior del grnulo modificado y el posterior; eso s, para que el dietario permita deshacer y rehacer transacciones, los registros de cambio deben escribirse a partir de los datos existentes en las memorias intermedias, antes de que stos lleguen a la memoria externa en la BD y las transacciones se confirmen. As, cuando una transaccin aborta, se deshacen los cambios hechos hasta ese momento. Sus registros de cambio en el dietario se recorren hacia atrs hasta que se identifica el primer cambio y ah se terminan de deshacer los cambios. Cuando se produce una cada del servicio, hay que deshacer los cambios de todas las transacciones activas y rehacer las de todas las confirmadas; el problema es saber hasta qu cambio hay que deshacer y para eso existen los registros de punto de control que identifican en qu ltimo momento el SGBD llev a la memoria externa todos los cambios. Todo este proceso puede simplificarse si: Antes de confirmar una transaccin, el SGBD siempre lleva todos los cambios a la memoria externa, as ante una cada nunca habr que rehacer transacciones confirmadas. El SGBD no lleva cambios de transacciones no confirmadas a la memoria externa, entonces no ser nunca necesario deshacer los cambios de transacciones canceladas. El inconveniente de todas estas simplificaciones es que pueden empeorar el rendimiento o gastar demasiados recursos del SGBD. Tras la restauracin encontramos la reconstruccin: Para poder reconstruir una BD despus de una prdida parcial habra que utilizar dos fuentes de informacin: una copia de seguridad correcta aunque anterior de la BD y el contenido del dietario a partir del momento en que se hizo la copia de seguridad.

12 Bases de Datos 2

4. CONSIDERACIONES CON RESPECTO AL NIVEL DE PARALELISMO Hemos visto que con la utilizacin de reservas, unas transacciones pueden quedar bloqueadas hasta que otras terminen lo que estaban haciendo pero y si esa transaccin est esperando que el usuario introduzca algn dato? Entonces la reserva puede alargarse un tiempo que podemos considerar infinito, pues el usuario puede empezar a realizar otra tarea y olvidarse de la base de datos. En estos casos se suelen hacer descomposicin de transacciones posibilitando que otras transacciones accedan a los datos entre la ejecucin de las transacciones resultantes de la descomposicin. Otro aspecto a tener en cuenta es que la utilizacin de herramientas de desarrollo deba permitir al programador ajustar el uso de las transacciones a gusto del programador y no conformarnos con utilizar el sistema por defecto que utilice la herramienta. Por ltimo para prevenir abrazos mortales no es imprescindible la utilizacin de reservas explcitas que disminuyen el nivel de paralelismo; tambin podemos reorganizar las transacciones para que accedan a los datos en un mismo orden y as evitar que se tengan que esperar con reservas unas a otras.

5. OTRAS VISIONES DE LAS TRANSACCIONES Todo lo estudiado en este mdulo se basa en que la mayor parte de las transacciones tendrn una duracin muy corta; en casos especiales esto no es as, por motivos histricos o de rendimiento, grandes compaas implementan los denominados monitores transaccionales que es un software que les permite hacer convivir distintos tipos de SGBD y otras aplicaciones de manera concurrente, mientras que el monitor coordina el funcionamiento de cada uno de los gestores implicados en una transaccin. Para transacciones largas y persistentes pueden existir en su interior transacciones convencionales que s permitan reservas e incluso transacciones anidadas que pueden ser canceladas de dentro a afuera sin afectarse unas con otras en su cancelacin.

6. UN CASO DE SGBD CONCRETO: INFORMIX En Informix el control de concurrencia se basa en reservas, existiendo dos tipos de BD: ANSI, que escribe siempre todos los cambios en memoria externa antes de confirmarla y NO-ANSI que permite activar o desactivar este comportamiento. As para crear una BD: CREATE DATABASE nombre [IN espacio_bd] [WITH [BUFFERED LOG | LOG MODE ANSI]]; Se puede modificar el comportamiento de una transaccin cuando no puede obtener una reserve de la siguiente forma: SET LOCK MODE TO [WAIT (segundos) | NOT WAIT] Con No wait, no espera; con WAIT puede esperar los segundos que se indiquen antes de abortar o, si no se han puesto segundos, intentar continuar indefinidamente. Al crear una tabla puede especificarse el nivel del grnulo por registros (row) o por pginas (page) con la siguiente sintaxis: CREATE TABLE nombre_tabla () [LOCK MODE [ROW|PAGE]]

c Bases de Datos 2 13

TEMA 3 PROGRAMACIN CON SQL

Tema 3 Programacin con SQL 1. Introduccin a las tcnicas de SQL programado 2. Programacin con SQL hospedado 3. Programacin con SQL/CLI 4. SQL y Java

1. INTRODUCCIN A LAS TCNICAS DE SQL PROGRAMADO El SQL es un lenguaje especfico para definir y manipular BD pero se dice que es un sublenguaje especial para la gestin de BD y no un lenguaje de programacin completo dado que no permite declarar variables, ni construir bucles ni comprobar condiciones. En este sentido, para construir aplicaciones que puedan acceder a una BD, se suele recurrir dentro del SQL a 3 aplicaciones: El SQL hospedado donde las sentencias de SQL se encuentran incorporadas directamente dentro de la aplicacin, mezcladas con las sentencias propias del lenguaje. El SQL/CLI, donde la aplicacin se comunica con el SGBD mediante una interfaz. JDBC que constituye la evolucin propuesta por Java al modelo SQL/CLI.

2. PROGRAMACIN CON SQL HOSPEDADO


Compilacin en SQL hospedado

La idea bsica del SQL hospedado es permitir la insercin de sentencias SQL dentro de una aplicacin desarrollada con un determinado lenguaje de programacin. Para que esto ocurra felizmente, contamos con los recursos siguientes: Un precompilador: Necesitamos una herramienta capaz de separar las sentencias SQL de las propias del programa anfitrin en el archivo fuente. Como resultado de este proceso se obtienen dos archivos: el programa fuente original en el cual las sentencias de SQL se han sustituido por llamadas a rutinas de la interfaz del SGBD y un archivo que contiene las sentencias de SQL. El primer programa fuente sin las sentencias SQL es tratado por el compilador particular del lenguaje de programacin, y a continuacin el montador produce el programa ejecutable. En cambio, el archivo que contiene las sentencias SQL es analizado por el mdulo de procesamiento de consultas del SGBD. Mecanismos para definir y poder utilizar variables puente con el SQL, tanto variables definidas y utilizadas por el programa fuente en una sentencia de SQL hospedado, como variables especiales definidas en el programa fuente para asignar y recuperar los valores nulos de la BD. La incorporacin de nuevas sentencias y clusulas de SQL que no existen en el SQL directo para poder procesar fila a fila los resultados de las distintas consultas de SQL y facilitar as el tratamiento de errores.

Las principales caractersticas que encontramos en un programa con SQL hospedado son las siguientes:

14 Bases de Datos 2

Las sentencias SQL se mezclan con las del programa anfitrin, indistintamente en maysculas o minsculas. Las sentencias SQL van precedidas de la clave EXEC SQL. Hay que marcar el final de las sentencias de SQL hospedado, en lenguaje C por ejemplo con ;. Se declara el rea de comunicaciones SQLCA que sirve para que el SGBD informe al programa de los diferentes errores que pueden producirse en tiempo de ejecucin. As se puede evaluar el xito o fracaso de una sentencia SQL y continuar el programa en consecuencia. Se declaran variables puente con SQL con BEGIN DECLARATE SECTION y END DECLARATE SECTION; adems se debe prefijar el nombre de la variable con dos puntos :nombre_variable. Podemos declarar estas variables al comienzo del programa o en estructura de bloques como el lenguaje C, donde entonces la visibilidad de cada variable queda restringida al bloque en que se declar. Hay que tener en cuenta adems que el tipo de datos reconocido por el lenguaje SQL y el lenguaje anfitrin puede ser distinto; amn del reconocimiento de los valores nulos. Para evitar este ltimo problema, cada variable puente SQL tiene que tener una variable indicadora asociada si la columna con la que est relacionada admite valores nulos. As un valor indicador igual a 0 significa que el valor no es nulo y que la variable puente contiene el valor buscado; un valor indicador negativo significa que queremos asignar un valor nulo para la columna que tratamos, con lo cual el valor real de la variable puente es irrelevante; por ltimo un valor indicador positivo indica que la variable puente tiene un valor vlido pero que puede haber sido redondeado, truncado, etc. Gestin de errores: En SQL hospedado la gestin de errores es responsabilidad de la aplicacin. Los errores de cdigo SQL son reconocidos por el precompilador, pero los errores en tiempo de ejecucin son tratados por dos variables la SQLCODE y la SQLSTATE. Tenemos dos porque la variable inicial para los errores era SQLCODE pero al no existir un acuerdo sobre el valor de los distintos cdigos en las diferentes SGBD, se opt por mantenerla de forma histrica e inventar la SQLSTATE. SQLCODE: Cuando se ha ejecutado la sentencia de SQL hospedado, se fija el valor de la sentencia SQLCODE para indicar el estado de finalizacin de la misma, si SQLCODE vale 0, la sentencia se ha ejecutado con xito; si vale negativo, significa que se ha producido un error grave que impide la ejecucin correcta de la sentencia; mientras que si vale positivo se ha producido una situacin de aviso, tpica del redondeo o truncamiento (por ejemplo SQLCODE=100 significa que no se han encontrado datos que cumplan las condiciones especificadas por la sentencia). SQLSTATE: Consta de cinco caracteres, los dos primeros de la cadena identifican la clase de error y los 3 ltimos la subclase.

Manipulacin de una BD Insercin de filas en una tabla: Se lleva a cabo con la sentencia siguiente: INSERT INTO nombre_tabla VALUES ({INDICATOR: var_1_ind] | constante|NULL}) As en el lenguaje C nos quedara: Void insertar_empleado() { Int estado; Printf(Introduce el DNI del empleado: Scan f (%s, dni_empl); .

);

Borrado de filas en una tabla DELETE FROM nombre_tabla [WHERE condiciones]

c Bases de Datos 2 15

Modificacin de filas en una tabla UPDATE nombre_tabla SET col_k = [WHERE condiciones] Consulta de tablas: Este tipo de operacin requiere sentencias aadidas que no existen en el SQL directo, dado que habitualmente una consulta de este tipo genera distintas filas de datos y los lenguajes de programacin solo son capaces de procesar una de estas filas cada vez. Por ello definimos dos tipos distintos, las consultas que dan como resultado una fila (por ejemplo una bsqueda de empleado por el DNI) y la que produce o puede producir ms de una fila de resultados. Consultas de una fila SELECT [ALL|DISTINCT] {exp.|*} INTO :var_1 [INDICATOR :var_1_ind] FROM tabla [{, tabla] [WHERE condiciones] Hay que especificar con INTO tantas variables puente como columnas o funciones de agregacin hayan sido especificadas en la clusula SELECT y adems en el mismo orden. Consultas con cursor Creamos una nueva estructura, el cursor, por el que se podr desplazar el programa, y se define con las sentencias DECLARE nombre_cursor CURSOR FOR consulta 1 [UNION consulta2] [ORDER BY col_k [, col_m]] [ASC|DESC] La sentencia declare cursor define la consulta que se debe ejecutar y le asocia un nombre de cursor; eso s, la sentencia de declaracin de un cursor concreto debe preceder al resto de sentencias que puedan operar sobre ese mismo cursor. Una vez creado y realizada la bsqueda, para abrir el cursor se utiliza OPEN nombre_cursor, para desplazarse avanzando una fila se utiliza FETCH nombre_cursor INTO vr_1 [INDICATOR :var_1_ind] Y para cerrar el cursor se utiliza CLOSE nombre_cursor, no pudindose volver a abrir o recuperar los datos de ese cursor de nuevo.

3. PROGRAMACIN CON SQL/CLI El SQL/CLI permite que una aplicacin desarrollado con un lenguaje de programacin como puede ser C, pueda incorporar sentencias de SQL mediante la llamada de subrutinas predefinidas disponibles en libreras. Est muy relacionado con la interfaz ODBC de Microsoft. Con el SQL/CLI no se precisa precompilador, simplemente se monta la aplicacin junto con la librera de subrutinas. Las ventajas que nos aporta este tipo de programacin son: EL cdigo de aplicaciones solo incorpora sentencias de l lenguaje de programacin, ya que las sentencias SQL quedan escondidas. Permite desarrollar aplicaciones que no necesitan conocer de manera exacta las sentencias de SQL antes de ser ejecutadas y aplicaciones adems que no dependen de las caractersticas propias de un SGBD concreto; as aunque cambiemos de SGBD las aplicaciones continuarn siendo vlidas. La gestin de errores se efecta con las propias subrutinas de SQL/CLI y no del SGBD. No se precisan variables puente ni variables indicadoras. Estas subrutinas SQL/CLI se caracterizan por: Pueden ser una funcin o una accin.

16 Bases de Datos 2

El nombre consta de un prefijo SQL y el nombre real de la subrutina. Cada rutina lleva asociados unos parmetros de entrada y salida y cada parmetro un tipo de datos, existiendo concordancia entre el tipo de parmetros y el tipo de datos que espera la subrutina. Las subrutinas siempre devuelven un cdigo de error para indicar el estado en que queda el programa despus de ejecutarse.

Toda aplicacin que utiliza subrutinas SQL/CLI establece primeramente una conexin con el servidor, ejecuta las sentencias SQL y finaliza despus la conexin. Eso s el entorno de ejecucin que se requiere tiene un conjunto de sentencias que suelen ser para obtener memoria para almacenar datos relevantes. Para obtener la conexin las sentencias suelen ser: SQLAllocEnv: Busca memoria para almacenar datos de control global. SQLAllocConnect: Datos de control de las conexiones establecidas. SQLAllocStmt: Memoria para la informacin de control de las sentencias SQL.

Una vez tenida lugar la conexin generalmente se ejecutan las sentencias SQLFreeStmt, SQLFreeDisconnect, SQLFreeConnect y SQLFreeEnv, que liberan los recursos de memoria que habamos reservado para la conexin. La gestin de errores se lleva a cabo consultando los cdigos de error prefijados que devuelve toda sentencia SQL/CLI. En cuanto a los tipos de datos no suele haber gran problema pues son derivados directamente del ODBC que derivan directamente de los tipos de datos C. Por el contrario a lo que nos pasaba en el SQL Hospedado, los valores nulos pueden ser perfectamente tratados por el programa.

4. SQL Y JAVA La solucin propuesta por Java para el acceso y manipulacin de BD no parte de cero, sino que a partir de SQL/CLI y de su implementacin ODBC construye un sistema fiel a los principios del lenguaje, es decir, simpleza y elegancia. Java ofrece el JDBC que va ms all de lo que se consigue con SQL/CLI que es ofrecer mtodos para controlar el posicionamiento de los cursores (previous, netxt), mtodos para modificar el contenido de tablas sin utilizar SQL, permite la realizacin batch de un conjunto de modificaciones, etc. Los drivers Es necesario contar con drivers que son una implementacin para poder trabajar con SGBD. Encontramos 4 tipos de drivers distintos (podemos ver los 4 tipos en la imagen lateral): Tipo 1: Puente JDBC-ODBC ms un driver ODBC: Con ese driver Java llama al driver ODBC y se encarga de ocultar toda su complejidad; eso s el rendimiento no es todo lo bueno que poda esperarse y obliga a que en la mquina cliente estn instalados los drivers ODBC correspondientes. Tipo 2: API Nativo: Es un driver Java Parcial, convierte las llamadas al JDBC en llamadas especficas del API del SGBD cliente; se puede entender como una simplificacin del tipo anterior que mejora bastante el rendimiento; requiero que parte del driver est cargado en la mquina cliente. Tipo 3: JDBC Red: Es un driver Java puro que convierte las llamadas al API JDBC en llamadas a un servidor de red intermedio. Es una implementacin muy flexible.
Tabla de compatibilidades

c Bases de Datos 2 17

Tipo 4: JDBC Nativo, tambin es un driver Java puro que permite llamadas directas al protocolo nativo de red del SGBD sin una capa de software intermedio.

Los tipos 1 y 2 se plantearon e implementaron como modelos transitorios hasta que la industria suministrase drivers Java puros; de hecho el puente JDBC-ODBC no soporta las especificaciones JDBC 2.0 y el hecho de que la mquina cliente dependa de un sistema propietario le resta portabilidad. Una aplicacin Java siempre tendr que contar con la existencia de una instalacin previa, mientras que con los tipos 3 y 4 el driver es descargable, al igual que la propia aplicacin o applet. Estructura de un programa con JDBC Una aplicacin que utilice el JDBC ha de seguir un esquema similar al siguiente: Localizacin y carga del driver Conexin con el SGBD Operaciones de acceso y gestin de excepciones Desconexin del SGBD Para localizar y cargar el driver recordemos que debemos definir un PATH con la ruta del mismo, el driver es ifkjdbc.jar y por supuesto el programa tendr que importar explcitamente el API del JDBC, a travs de import java.sql.*. Hechas estas dos cosas, ya estamos en condiciones de escribir las primeras lneas del programa. Normalmente todo el cdigo lo introduciremos en un bloque try-catch para evitar errores de programa: Conexin con el SGBD: conn = DriverManager.getConnection (url, Login, Password). Ms sencillo es inmposible. Esta expression peude variar al tratarse de un tipo de driver y otro. Nosotros de aqu en adelante, actuaremos sobre el tipo 4. Para cerrar simplemente es necesaria la orden conn.close, sin necesidad de liberar recursos, pues ya lo har Java por nosotros; comparemos este mtodo con el del SQL/CLI en cuanto a complejidad. Operaciones de acceso y gestin de excepciones: Las sentencias se envan precedidas de stmt.executeUpdate y entre parntesis por ejemplo Insert Into. Sentencias de modificacin: Por ejemplo para actualizar datos en una tabla podremos usar: stmt.executeUpdate (UPDATE Empleados.) para crear tablas por ejemplo Strip cmd = CREATE TABLE ExecuteQuery: Es el comando que utilizaremos cuando queramos realizar una consulta; en este caso al ser una consulta devuelve un valor o un conjunto de ellos a travs del objeto JDBC resultSet (conjunto de filas obtenidas al realizar la consulta). Adems JAVA nos permite desplazarnos por cualquiera de estas filas y no obligatoriamente una a una y en orden; podemos ir al siguiente next, anterior, previous, una fila absoluta absolute(5) la 5 fila en este caso, una realtiva relative (-2) iramos ahora a la 3 pues estbamos en la 5, etc. Control de las transacciones: Las transacciones se realizan automticamente en Java, pero quiz nos convenga que tengan lugar en momentos determinados, o tras realizar todo un conjunto de comandos, en este caso deberemos comenzar el bloque try con conn.setAutoCommit (False) y luego realizar un conn.commit cuando queramos aceptar todo el conjunto de sentencias introducidas. Sentencias preparadas: Se pueden preparar sentencias que luego se ejecuten de manera continuada a traves de PreparedStatement. Procedimientos almacenados: Es parecido al ejemplo anterior, si bien las sentencias preparadas se utilizan ms para tareas reiterativas, los procedimientos almacenados son una agrupacin de sentencias que suelen formar una tarea lgica y se pueden crear a traves de CREATE PROCEDURE e invocar a travs de CallableStatement. Modificaciones por lotes: Al igual que en DOS, es posible almacenar en una matriz interna de un objeto, una serie de sentencias de modificacin para que sean ejecutadas en lote, se consigue a travs de stmtaddBatch (para ir uniendo

18 Bases de Datos 2

sentencias) y se ejecutan con stmt.executeBatch. Como podemos observar, el mecanismo no puede ser ms sencillo a la par que muy prctico.

c Bases de Datos 2 19

TEMA 4 COMPONENTES LGICOS DE UNA BASE DE DATOS

Tema 4 Componentes lgicos de una base de datos 1. Componentes lgicos de datos 2. Componentes lgicos de control 3. Catlogo

1. FUNCIONALIDAD Y OBJETIVOS DE LOS SGBD Los principales componentes lgicos de una base de datos son dos: las tablas y las vistas. Adems de los componentes lgicos anteriores que seran los de datos, tenemos los componentes lgicos de control que pueden ser entre otros, los procedimientos y los disparadores. Para un SGBD, una base de datos es un conjunto definido y relacionado de componentes lgicos de datos y de componentes lgicos de control. Recordemos que para crear una base de datos tenemos la orden CREATE DATABASE <nombreBaseDeDatos> El nombre debe ser nico. El inicio del trabajo lo marcaremos con BEGIN WORK y lo finalizaremos con COMMIT o con ROLLBACK. Para borrar una base de datos contamos con DROP DATABASE y para conectarnos a ella y comenzar a trabajar con CONNECT TO <nombreBD>. Tablas Este es el componente lgico principal de la BD, y para crearla utilizaremos la sentencia CREATE TABLE <nombreTabla> (definicionColumnas, definicionRestricciones). La definicin de columnas incluye la definicin del conjunto de columnas que incorpora la tabla, separada por comas. Definiremos para la columna el nombre, el tipo de datos, la definicin por defecto y la restriccin de columnas. El tipo de datos puede ser byte, carcter, date, la definicin por defecto, si queremos permiten especificar los valores que se asignan a cada columna por omisin; mientras que las restricciones de columna estn limitadas a una sola columna no a todas las que forman una tabla determinada, y pueden ser NOT NULL, DISTINCT, UNIQUE, PRIMARY KEY y CHECK. Podemos borrar tablas mediante la sentencia DROP TABLE y podemos modificarla aadiendo, eliminando columnas o restricciones mediante la sentencia ALTER TABLE. Vistas Es el segundo componente lgico de datos de las BD. Una vista realmente es una tabla derivada, su esquema y contenido derivan de otras tablas e incluso de otras vistas, mediante una consulta. Partiendo de ello podemos pensar que dado que las vistas realmente son tablas, se deberan poder consultar y actualizar mediante sentencias SQL, y puesto que son derivadas, su existencia no existe fsicamente en la BD como las tablas sino que se genera cada vez que se hace una peticin a esa vista. Para crear la vista tenemos la orden CREATE VIEW <nombreDeVista>, columnas as <sentenciasSelect> [WITH CHECK OPTION], y para borrar la vista DROP VIEW. Por ejemplo sobre una tabla de departamentos podemos crear la vista: CREATE VIEW DeptRicos AS SELECT * FROM Departamentos WHERE presupuesto>240000 Esta vista contendr los departamentos de la tabla departamentos cuyo presupuesto es mayor de 240.000. Una vez creada la vista podremos consultarla como si fuese una tabla cualquiera de forma que para el usuario final este hecho es completamente transparente. Ahora bien, existen problemas con los cambios de contenidos. Los cambios de contenido en una vista pueden suceder por dos razones: Cambia el contenido de las tablas que intervienen en la definicin de la vista. Se ejecuta una peticin de cambio directamente sobre la vista, y que el SGBD tiene que traducir a un cambio sobre la tabla de la que parte.

20 Bases de Datos 2

Este segundo aspecto puede ser fuente de problemas porque a veces el SGBD dispone de diferentes alternativas para propagar un mismo cambio, y por ello no sabe cual elegir y muchas vistas no son actualizables. Solo sern actualizables estos dos casos: La operacin que queremos realizar en una operacin de seleccin del lgebra relacional sobre una nica tabla o vista actualizable. La operacin es una seleccin + proyeccin de lgebra relacional siempre que la proyeccin incluya todas las columnas clave (primaria o alternativas) y todas las columnas que incorporen la restriccin NOT NULL. As pues aquellas vistas que, por ejemplo, incluyan operaciones de combinacin de dos o ms tablas o que incorporen funciones de agregacin o la clusula GROUP BY no sern actualizables.

2. COMPONENTES LGICOS DE CONTROL Los componentes lgicos de control que vamos a estudiar son los procedimientos almacenados, los disparadores y los privilegios. 2.1. Procedimientos almacenados Un procedimiento almacenado es una accin o funcin definida por un usuario que proporciona un determinado servicio. Una vez creado el procedimiento se guarda en la BD y se trata como un objeto ms de la misma. La utilidad de estos procedimientos es para simplificar el desarrollo de aplicaciones, mejorar el rendimiento de la BD y para encapsular un conjunto de operaciones que se efectan en una BD. En Informix para escribir procedimientos almacenados podemos utilizar dos tipos de sentencias: las propias del SQL (que no es un lenguaje computacionalmente completo) y sentencias propias del SPL (Stored Procedure Language que lo complementa). El conjunto de sentencias que forman el procedimiento se sitan entre la sentencia inicial CREATE PROCEDURE nombreProcedimiento (parametrosEntrada) y la sentencia final END PROCEDURE. Luego para ejecutar el procedimiento bastar con EXECUTE PROCEDURE NombreProcedimiento (parametrosEntrada). En principio, un procedimiento almacenado devuelve un conjunto de valores nico como resultado de su ejecucin; es decir, en trminos de SQL, una nica fila. Destacan entre estas sentencias los siguientes valores: Parmetros: Un procedimiento puede recibir un conjunto de parmetros de entrada y devolver un conjunto de parmetros de salida como resultado de su ejecucin. Y tambin podemos tener parmetros tanto de entrada como de salida. Para cada parmetro de entrada habr que darle un nombre y asociarle un tipo de datos y para los parmetros de salida es suficiente con indicar su tipo de datos en la clusula RETURNING. Variables: Se definen con la clusula DEFINE y debe tener asociado un nombre y un tipo de datos; eso s, debe drsele un valor a las variables antes de poderlas utilizar. Tenemos por un lado variables locales (opcin por defecto) cuyo mbito de visibilidad queda restringido al procedimiento en el que se hayan definido; y variables globales (se utiliza para ello la clusula GLOBAL). La diferencia entre ambas es que los valores de las variables locales quedan descartadas una vez finalizada la ejecucin del procedimiento almacenado en el que se han definido, mientras que las globales se guardan y evolucionan mientras est activa la conexin a la BD; se suelen utilizar stas ltimas para permitir que un conjunto de procedimientos almacenados intercambien valores, pero hay que evitar su utilizacin pues no son una buena prctica de programacin.

c Bases de Datos 2 21

Sentencias condicionales: La sentencia IF sirve para establecer condiciones en el flujo de un procedimiento almacenado y se pueden establecer distintos niveles de anidamiento con la sentencia ELIF. Sentencias iterativas: Adems del FOR y el WHILE (el primero cuando se sabe a priori el nmero de iteraciones que deben ejecutarse) aadimos el FOREACH que se utiliza en bucles que pueden seleccionar y manipular ms de una fila. sta es la sentencia ms frecuente. Gestin de errores: Podemos distinguir dos tipos de errores: los errores predefinidos y los especficos del procedimiento. Podemos a su vez en cada uno de ellos actuar de dos formas: o no capturamos el error dentro del procedimiento almacenado y dejamos que el mismo procedimiento cancele su ejecucin de manera inmediata (el error se reporta al nivel superior) o capturamos el error y el mismo procedimiento se responsabiliza de gestionarlo. En este ltimo caso, adems el procedimiento puede no cancelar su ejecucin o cancelarlo. ON EXCEPTION: Esta sentencia permite especificar las acciones que hay que llevar a cabo en cado de que se produzcan errores y debe especificarse dentro del procedimiento almacenado. RAISE EXCEPTION: Permite generar nuestros propios errores, es decir, los especficos dentro del procedimiento almacenado.

2.2. Disparadores Los componentes vistos hasta ahora no son suficientes para modelar todo lo que puede ocurrir en el mundo real. Si imaginamos una tabla de stocks de productos y queremos aplicar una regla para que cuando un producto quede por debajo de 50 unidades se produzca una peticin de 100 unidades ms, podemos hacer dos cosas: Aadir esta regla a todos los programas que actualizan el stock de los productos. No es una solucin muy convincente pues todo el cdigo se encontrara desperdigado por todo el programa, replicada y por lo tanto es difcil de localizar y de cambiar. Realizar un programa adicional que haga un sondeo peridico de la tabla comprobando la regla. En este caso aunque la regla est concentrada en un nico punto, si el sondeo se hace ocasionalmente pierde su razn de ser y si se hace muy a menudo se pierde eficiencia. Para evitar esto la solucin correcta es poder incorporar a la BD una regla del tipo: Cuando se modifique el stock de un producto y pase a ser menor que 50, hay que pedir 100 unidades nuevas y esto es realmente un disparador. Un disparador debe utilizarse para: Implementar una regla de negocio como la que hemos visto antes. Mantenimiento automtico de una tabla de auditora de la actividad en la BD, como registro de los cambios que se hacen en la misma. Mantenimiento automtico de columnas derivadas, que se recalculan cuando se cambian las columnas a las que hacen referencia. Comprobacin de restricciones de integridad no expresables mediante CHECK

Eso s, los disparadores no deben utilizarse cuando se pueden resolver fcilmente mediante otros mecanismos, como restricciones de clave primaria ni de integridad referencial Para crear un disparador se utiliza la siguiente sintaxis: CREATE TRIGGER <nombreDisparador> <acontecimiento> ON <nombreTabla> [REFERENCING referencia] [BEFORE ListaAcciones] [FOR EACH ROW listaacciones] [AFTER ListaAcciones]

22 Bases de Datos 2

Para cada tabla solo se puede tener un solo disparador para INSERT, uno para DELETE y otro para UPDATE de cada una de las columnas. Las acciones especificadas como BEFORE se ejecutarn una sola vez antes que la sentencia que activa el disparador; las de AFTER despus de ejecutada la sentencia que la activa. Las acciones FOR EACH ROW se ejecutarn una vez por cada fila afectada por la sentencia que activa el disparador e inmediatamente despus de haberla modificado, borrado o insertado. Cuando se ejecuta una sentencia SQL contra una BD puede pasar que se activen disparadores y que se violen restricciones de seguridad a la vez. Frente a esto, el sistema debe decidir qu hay que hacer en primer lugar e Informix retrasa la comprobacin de las restricciones de seguridad hasta despus de la activacin de los disparadores asociados, lo que permite aadir disparadores que reparen restricciones de integridad 2.3. Privilegios En una base de datos hay muchos usuarios y tambin muchos componentes y objetos y por supuesto, no todos los usuarios debern acceder a todos los objetos, para ello existen las autorizaciones. Una autorizacin es un privilegio que se otorga a un usuario o grupo de usuarios para realizar una determinada operacin sobre un cierto objeto de la BD. Permite la BD efectuar tres tipos de privilegios: de bases de datos, tablas y de procedimientos almacenados. Privilegios de BD Cuando un usuario crea una BD tiene todos los privilegios sobre la misma y ser inaccesible a los dems usuarios hasta que lo autorice. Los privilegios que se pueden conceder son: CONNECT: Permite al usuario conectarse a la base de datos, ejecutar select, insert, update y delete (siempre que tenga los privilegios necesarios a posteriori), crear vistas, tablas temporales, otorgar privilegios sobre una tabla (siempre que sea propietario o haya recibido el privilegio adecuado) y ejecutar alter o drop de una tabla (siempre que tenga los privilegios adecuados sobre la misma). RESOURCE: Puede hacer todo lo que hace el usuario connect y adems crear tablas nuevas, ndices nuevos, procedimientos almacenados nuevos y crear disparadores. DBA: Permite todo lo anterior y otorgar cualquier privlegio de BD, borrar y acceder a cualquier objeto de la BD y ejecutar DROP DATABASE

Para la concesin de privilegios se utiliza la expresin: GRANT <privilegio> TO <ListaUsuarios>, como puede ser GRANT CONNECT TO Maria; y para revocar privilegios tenemos la sentencia REVOKE <privilegio> FROM <ListaUsuarios> Privilegios de Tabla Cuando un usuario crea una tabla ser inaccesible para los dems hasta que les conceda privilegios sobre ella. Existen 7 privilegios sobre las tablas: Insert Delete Select o bien Select de un conjunto de columnas Update o bien Update de un conjunto de columnas Referentes o bien Referentes de un conjunto de columnas, que permite realizar borrados en cascada. Alter: Da derecho a aadir columnas y eliminarlas, cambiar el tipo de una columna.

c Bases de Datos 2 23

Para conceder todos los privilegios se pude utilizar la palabra clave All; adems en la sintaxis de privilegios de una tabla: GRANT <listadeprivilegios> ON <nombreTabla> TO <usuarios [WITH GRANT OPTION La ltima sentencia WITH GRANT OPTION aadida a un privilegio determinado no solo la concede, sino que permite al receptor transferirlo. Igualmente cuando se revocan privilegios se utiliza la expresin: REVOKE <privilegios> ON <tabla> FROM <usuarios> [CASCADE|RESTRICT] Si se especifica CASCADE (por defecto) el SGBD eliminar en cascada todos los privilegios que el usuario revocado haya concedido usando el privilegio revocado. Privilegios de Procedimientos Almacenados Cuando se crea un procedimiento hay que especificar de entre los dos siguientes, que tipo de privilegios tendr: DBA-privileged: pueden crearse si el usuario tiene privilegio DBA y para ejecutarlos slo es necesario disponer del privilegio EXECUTE. Owner-privileged: Pueden ser creados por usuarios RESOURCE y para ejecutarlos hayq ue tener el privilegio EXECUTE. La sintaxis para conceder estos privilegios y para revocarlos es igual a la conocida hasta ahora: GRANT EXECUTE ON <procedimiento> TO <usuarios [WITH GRANT OPTION] REVOKE EXECUTE ON <procedimiento> FROM <usuarios> Para crearlo: CREATE PROCEDURE <nombre> Si queremos que un usuario no pueda acceder a todas las columnas de una tabla sino solo a algunas de ellas (por ejemplo a los nombres telfonos y direcciones de los empleados, pero no al sueldo), lo mejor es crear una vista y darle al usuario slo privilegios sobre la vista Con todo lo visto anteriormente es muy complejo darle a todos los usuarios los privilegios adecuados para cada uno de los objetos que componen la BD; para facilitar este trabajo se crean roles, un rol es una agrupacin de privilegios sobre algunos de los componentes de una BD, de forma que se crea el rol y luego se asignan usuarios a esos roles: CREATE ROLE lector; GRANT SELECT ON Tabla1 TO lector; GRANT lector TO JUAN WITH GRAND OPTION; Creamos el rol lector para poder leer en la tabla 1 y luego le asignamos ese rol a Juan, adems pudiendo l tambin conceder este privilegio al resto de usuarios si lo desea.
Catlogo de una BD

3. CATLOGO El catlogo de una BD es una metabase de datos; una BD sobre una BD y tambin se suele denominar diccionario de datos. Hemos de tener en cuenta que una BD contiene no solo las tablas, son tambin los usuarios, procedimientos, privilegios, roles, etc. todo ello conforman tablas consultables que se pueden ver en informix con SELECT tabname FROM informix.systables;

24 Bases de Datos 2

pero a pesar de que son consultables desde aqu, no son actualizables directamente, para ello se requieren mecanismos de ms alto nivel para acceder a las tablas del catlogo.

c Bases de Datos 2 25

TEMA 5 COMPONENTES DE ALMACENAJE DE UNA BASE DE DATOS

Tema 5 Componentes de almacenaje de una base de datos 1. La arquitectura de los componentes de almacenaje 2. El nivel lgico 3. El nivel fsico 4. El nivel virtual 5. Otros componentes de almacenaje

1. LA ARQUITECTURA DE LOS COMPONENTES DE ALMACENAJE Como las BD son un conjunto de datos persistentes y esta persistencia se manifiesta porque los datos no han de desaparecer entre ejecuciones sucesivas del programa, necesitamos almacenar todos estos datos en algn lugar no voltil, que es habitualmente un disco magntico. La arquitectura de los componentes de almacenaje se divide en tres niveles que estudiaremos a continuacin: Nivel lgico: Se corresponde a los componentes conocidos y manipulados por el programador, tal como vemos en la figura lateral. Nivel Fsico: Las tablas persistentes que se almacenan en un soporte no voltil. Nivel Virtual: Se encuentra entre los dos niveles anteriores.

Niveles de los componentes de almacenaje

2. EL NIVEL LGICO Encontramos dos tipos de componentes el lgico y la Bd. Los componentes lgicos a su ve zpueden ser componentes de datos (tablas y vistas) y componentes de control (restricciones, disparadores, ndices). La BD, en cambio, es un concepto un poco ms complicado de definir, dado que es una herramienta especfica del SGBD que sirve como unidad administrativa para agrupar un conjunto de otros componentes: Podemos tener una BD comercial, otra financiera, otra de datos personales, dentro del mismo conjunto del SGBD.

3. EL NIVEL FSICO Los sistemas operativos gestionan los datos en los discos magnticos a partir de unas unidades globales denominadas ficheros. Normalmente la cantidad de espacio de este fichero va creciendo a medida que lo necesita (extensin); pero esta extensin no toma cualquier valor, sino que es un mltiplo de una unidad mnima que es la pgina; con ella comenzaremos, de menor a mayor, el estudio del nivel fsico.
Estructura de una pgina

Una pgina es la unidad mnima de acceso y de transporte del sistema de entrada/salida de un SGBD, lo cual la hace ideal para ser a la vez la unidad de organizacin ms importante de los datos almacenados. Bien es verdad que cuando se trae una pgina de la memoria externa a la principal, no se transporta una nica pgina, pero s se transporta siempre un mltiplo del valor de una pgina. Eso s, la pgina internamente como podemos ver en la figura lateral tambin tiene su estructura propia.: Encabezamiento: Con informacin de control.

26 Bases de Datos 2

Filas: Corresponde a las filas de las tablas de nivel lgico, puede variar su nmero con el paso del tiempo e incluso ser 0 (inicialmente). Tiene un encabezamiento y luego los campos de los que se compone cada fila. En el encabezamiento se pueden guardar datos de control y cuando una fila es ms larga que una pgina, se puede partir en trozos. Campos: Son las unidades que conforman las filas, se componen tambin de un encabezado que suele contener informacin sobre si el campo admite el valor nulo o no y tambin la longitud del campo, y del contenido que es el valor del campo en s. Espacio libre: Siempre en el centro de la pgina. Vector de direcciones de fila: que tiene tantos elementos como filas hay en la pgina, adems se disponen en orden decreciente. El ltimo elemento apunta a la primera fila y as sucesivamente, de forma que el espacio libre de la pgina siempre queda en el centro.

Existen otros tipos de pginas como son la pgina de ndice, que aunque lo hemos incluido en los elementos de control, realmente son componentes de rendimiento para acelerar la bsqueda de filas determinadas dentro de la BD; eso s esta pgina de ndice sigue la misma estructura que la estudiada hasta ahora. Otro tpo de pgina es la de objeto grande muy en boga ltimamente por la irrupcin de los elementos multimedia en la informtica de consumo y se suelen almacenar en otro tipo de estructuras diferentes dado su tamao. Gestin de pginas Las principales operaciones que se utilizan son las siguientes: Formateado de una pgina: Cuando el SGBD necesita ms espacio se adquiere una nueva extensin y se formatea la pgina, es decir, se prepara para recibir datos, escribiendo el encabezamiento y dejando el resto del espacio libre. Carga inicial de filas: Se coloca la primera fila justo detrs del encabezado y se crea un elemento del VDF al final justo de la pgina que apunta al inicio de esta primera fila; a partir de aqu se repite el proceso, quedando el espacio libre en el centro de la pgina y reservndose un porcentaje determinado segn el SGBD para las operaciones que veremos a continuacin. Alta posterior de una nueva fila: Una vez seleccionada la pgina candidata donde hay que aadir la fila, se utiliza el espacio libre existente para introducirla, si no quedase espacio suficiente, la fila es colocada en otra pgina. Baja de una fila: Consiste bsicamente en liberar el espacio ocupado por la fila y el elemento del VDF; ya en ese mismo momento o ms adelante se producir un desplazamiento de filas y elementos VDF para que la estructura de la pgina contine siendo la de siempre. Cambios de longitud de una fila: Puede ser por liberar espacio con lo que el mecanismo es igual a la operacin anterior; puede ser porque la fila aumente, mientras que haya espacio en la misma pgina no hay problema; o si el aumento de espacio no se puede servir en la misma pgina, se hace en otra y en la original se crea una direccin que apunte a la nueva posicin de la fila.

La extensin Es un nmero entero de pginas, en principio consecutivas, que el sistema operativo adquiere a peticin del SGBD cuando detecta que necesita ms espacio para almacenar datos. As el fichero aumenta de tamao porque aumenta el nmero de extensiones que lo forman. Las pginas de una extensin tienen que ser fsicamente consecutivas, pues as mejora el rendimiento general de la BD. El fichero El fichero es la unidad que utiliza el sistema operativo para gestionar el espacio e los dispositivos perifricos (tambin es un conjunto de extensiones). El sistema de gestin de los ficheros viene a ser parecido al sistema de entrada/salida tradicional que se realiza por medio de bloques, pero tiene algunas diferencias. As

c Bases de Datos 2 27

cuando el SGBD necesita encuentran en una pgina operativo, que toma esa necesita, y este nmero de
Funcionamiento del sistema operativo y del SGBD en la entrada/salida de una pgina

cargar en su memoria principal unos datos que se que est en la memoria externa, se lo pide al sistema pgina, y generalmente las circundantes por si las pginas es pasado a la memoria intermedia. Adems para optimizar el rendimiento como hemos dicho se lleva a la memoria ms de una pgina a la vez en el mismo proceso de entrada/salida, e incluso se avanza en el tiempo leyendo una pgina cuando se prev que se necesitar prximamente a la par que se realizan otras operaciones, para que as ya est la pgina cargada en memoria.

4. EL NIVEL VIRTUAL El nivel virtual requiere su existencia porque cada tabla como la hemos estudiado no se almacena en un fichero. Por ejemplo: hay tablas grandes que hay que fragmentar y almacenar cada fragmento en ms de un fichero; hay tablas muy pequeas que pueden compartir un mismo fichero; hay tablas cuyos campos multimedia son tan grandes que cada uno de ello se almacena en un fichero independiente, etc. Por todo ello el nivel virtual proporciona un grado elevado de independencia entre los niveles lgico y fsico; llamaremos espacio virtual al componente que implemente esta funcionalidad.
Correspondencia entre pginas virtuales y reales

El espacio virtual es una visin diferente de las pginas del nivel fsico. Es otra forma de ver los datos pero sin duplicarlos realmente; as el espacio virtual es una secuencia de pginas virtuales que se corresponden una a una con las pginas reales del nivel fsico pero ordenadas secuencialmente y sin saltos en medio. As en las pginas virtuales todos los datos referentes a un mismo registro se encuentra de forma contiga pudiendo no ser as en el nivel fsico. Cuando el SGBD necesita una fila determinada (unidad mnima de informacin a la que accede), lo que hace realmente es encontrar las filas en el espacio virtual, el direccionamiento del SGBD es pues del nivel lgico al virtual. Posteriormente el sistema operativo hace una relectura de ese espacio virtual al espacio fsico donde se hallan los datos. Es necesario hacer una serie de acotaciones ahora: Una fila dada de alta y mientras permanezca viva, no puede cambiar de pgina. Si otra fila se da de baja, puede reorganizar el espacio libre y cambiar el apuntador de dentro de la pgina, pero sin cambiar de pgina. Si aumenta de tamao y hay que trasladarla a otra pgina, se mantiene un apuntador en la pgina que seala la nueva direccin; de esta forma la BD seguir teniendo un buen rendimiento. Los tipos de espacios virtuales que podemos encontrar son: Espacio de tablas: Las tablas que no son tan grandes que las queramos controlar por partes, ni tan pequeas que puedan compartir un espacio comn, suelen tener un nico espacio virtual de tablas; eso s puede perfectamente estar repartido en varios ficheros. Espacio fragmentado: Cuando una tabla es tan grande que debemos partir su espacio virtual se establecer un criterio por el cual las diferentes filas de la

28 Bases de Datos 2

tabla irn a parar unvocamente a uno y otro fragmento, lo cual mejorar el tiempo de acceso a los datos pues se espera donde poder encontrarlos. Espacio de agrupacin: Cuando una tabla se relaciona tanto con otra u otras que normalmente el acceso a la primera viene unido del acceso al resto, nos interesar que se encuentren fsicamente tan cerca como sea posible para minimizar el tiempo de acceso global y aumentar el rendimiento de la misma. Espacio de objetos grandes: Ya hemos hablado de elementos multimedia, entre otros, que ocupan un excesivo espacio. Estos objetos por ejemplo cuando sus ledos por la entrada/salida del sistema operativo desplazaran todo el resto de las pginas que se tienen cargadas en memoria y no interesa evidentemente. As el espacio que apuntan si por ejemplo es un fichero MP3 se guarda en una pgina objeto, mientras que en la original solo se guarda un apuntador a este objeto aparte. Espacio de ndices: Los ndices son estructuras de datos de longitud muy pequea y muy referenciada, por lo que interesa gestionarlo por separado de las filas de las tablas. Estructuralmente los espacios de ndices son muy similares a los espacios de tablas aunque contienen pginas de ndices en vez de pginas de filas de tablas.

5. OTROS COMPONENTES DE ALMACENAJE Una de las tareas del administrador de BD es calcular las necesidades de espacio del disco de una determinada BD. Los clculos sencillos no suelen servir; es decir, si pretendemos calcular el espacio multiplicando el nmero de registros mximo que esperamos tener por la ocupacin de cada uno de esos registros, el resultado ser claramente insuficiente y distante de la realidad. Debemos tener en cuenta otro tipo de espacios: El catlogo es el espacio ocupado por los metadatos: definicin de los componentes lgicos como tablas vistas, ndices, restricciones Tablas temporales: Que se crean generalmente invocadas indirectamente por clusulas tipo order by, select o distinct y que viven hasta que han servido el dato final, pero que ocupan un espacio real. El dietario con los cambios efectuados en la base de datos para poder recuperarlos como consecuencia de un desastre.

Hay que calcular el espacio necesario teniendo en cuenta el espacio ocupado por los datos y por todos los aspectos vistos en este apartado.

c Bases de Datos 2 29

TEMA 6 IMPLEMENTACIN DE MTODOS DE ACCESO

Tema 6 Implementacin de mtodos de acceso 1. Los mtodos de acceso a una Base de Datos 2. Implementacin de los accesos por posicin 3. Implementacin de los accesos por valor 4. Implementacin de los accesos por diversos valores 5. ndices del sistema Informix

1. LOS MTODOS DE ACCESO A UNA BASE DE DATOS En este mdulo cuando hablemos de pginas, nos referiremos a las pginas virtuales que ya habamos nombrado en el mdulo anterior; cuando se haga referencia a pginas reales se explicitar directamente. Dicho esto, los mtodos de acceso los vamos a dividir en 3 grupos, que estudiaremos detenidamente:

Accesos por posicin: Puede ser acceso directo o secuencial por posicin. El acceso directo pro posicin consiste en obtener una pgina que tiene un nmero de pgina determinado dentro de un espacio. Por ejemplo INSERT INTO empleados VALUES (25, Juan, 150, 2000), en Accesos por posicin: Directo y secuencial este caso accedemos directamente a la pgina que contiene el valor 25. El acceso secuencial por posicin implica obtener las pginas de un espacio siguiendo el orden definido por el SGBD, por ejemplo SELECT * FROM empleados. Donde accedemos desde el primer al ltimo empleado sin un orden predefinido, sino directamente en el que estn almacenados los datos. Accesos por valor: Tambin puede ser directo o secuencial. El acceso directo por valor consiste en obtener todas las filas que cumplen un criterio determinado (SELECT * FROM empleados WHERE num_despacho = 150). Los accesos secuenciales por valor consiste en obtener diversas dilas por el orden de los valores de un atributo (SELECT * FROM empleados ORDER BY num_despacho o SELECT * FROM empleados WHERE num_despacho>=100 and num_despacho<300 quiz este segundo ejemplo sea ms difcil de ver pero el SGBD debe devolver los empleados organizados por el nmero de despacho). Accesos por diversos valores: Podemos querer acceder poniendo condiciones a varios atributos y no solo a uno de ellos. En este caso tambin tenemos acceso directo (SELECT * FROM empleados WHERE num_despacho=150 and SUELDO=2000), y acceso secuencial (SELECT * FROM empleados ORDER BY num_despacho, sueldo); e incluso contamos con accesos mixtos por diversos valores, es decir, se combina el acceso directo por los valores de algunos atributos y el acceso secuencial por los valores de otros atributos ( SELECT * FROM empleados WHERE sueldo=2000 ORDER BY num_despacho)

2. IMPLEMENTACIN DE LOS ACCESOS POR POSICIN Los SGBD se basan para estos accesos casi completamente en el sistema operativo, las rutinas de gestin de entrada/salida permiten obtener una pgina real dada su direccin y por ello podemos decir que el sistema operativo implementa el acceso por posicin a las pginas reales.

3. IMPLEMENTACIN DE LOS ACCESOS POR VALOR Si el SGBD se basara como en el caso anterior en el sistema operativo para implementar los accesos por valor, no se obtendra un buen rendimiento, por ello el SGBD dispone de mecanismos especializados que los implementan de manera eficiente y esos mecanismos son los ndices. Si nosotros quisiramos ejecutar la clusula SELECT * FROM empleados WHERE num_despacho = 150, deberamos leer todas las pginas de la tabla empleado, leer el

30 Bases de Datos 2

valor del atributo num_despacho y seleccionar los que fuera igual a 150. Lgicamente esto supondra un esfuerzo brutal si tuvisemos un elevado nmero de empleados, quiz para luego extraer 2 3 nada ms; o ms complicado todava, ejecutar la clusula SELECT * FROM empleados ORDER BY num_despacho; es este caso nos interesara que la tabla estuviese guardada en el espacio virtual ordenada por el nmero de despacho, pero cuando quisisemos obtener los empleados ordenados por sueldo, lo anterior no nos servira. Para evitar toda esta problemtica tenemos los ndices, que son como el ndice de un libro: son estructuras de datos auxiliares que facilitan la bsqueda debido adems por su reducido tamao. Un ndice contienen parejas de datos llamadas entradas, formadas por un valor y un RID (nmero de pgina y nmero del elemento del VDF). Cuando se busca mediante un ndice primero se localizan los valores en el ndice con el fin de conocer su RID, y disponiendo ya de ste, se utiliza un acceso directo por posicin para conseguir la pgina que contiene la fila de los datos que se busca. Lgicamente, un ndice debe estar organizado de modo que facilite la bsqueda de los valores que contiene. Hay muchas formas de organizar un ndice, pero solo estudiaremos dos: los rboles B+ y la dispersin. La estimacin del coste de ejecucin de estos mtodos los calcularemos considerando solo el coste de las entrada/salida pues suponen el componente dominante en el coste de la operacin total. rboles B+ Los rboles B+ son un tipo particular de rbol de bsqueda cuyo objetivo primordial es el de intentar conseguir que stas se efecten con un nmero pequeo de entrada/salida. Todo rbol B+ tiene un nmero de orden d, que indica la capacidad de sus nodos, as si un rbol tiene orden d, entonces sus nodos contienen como mximo 2d valores. Los nodos internos tienen como objetivo dirigir la bsqueda de la hoja que tiene la entrada correspondiente a un valor determinado, por ello el acceso directo por valor consistir en trazar un recorrido del rbol que empezar en la raz y que ir bajando por los nodos del rbol hasta llegar a la hoja adecuada. Todo nodo interno contiene valores y apuntadores hacia sus nodos hijo. Los nodos hoja estn conectados por apuntadores, sirviendo as para facilitar el acceso secuencial por valor, pero adems contienen todas las entradas del ndice, es decir, las parejas de valor y RID. Adems todos los valores de un nodo hoja son ms pequeos que los valores del nodo hoja siguiente y todos los valores de algn nodo interno del rbol estn repetidos en algunas de sus hojas, as que las hojas contienen todos los valores del rbol. Cuando se quiere Estructura de un rbol B+ llevar a cabo un acceso directo por valor, primero hay que localizar la hoja que contiene la entrada del valor buscado y despus utilizar el RID de la entrada para encontrar los datos a los que se quiere acceder. Para localizar la hoja en cuestin, se comienza desde el nodo raz (por ejemplo buscamos el valor 8), como el nodo raz es 20 nos desplazamos por la hoja de la izquierda pues contiene los valores menores. En esta hoja como 8>6, seguimos el segundo apuntador y ya hemos localizado el nodo hoja que contiene el valor de entrada que buscamos. Si la bsqueda fuese un acceso secuencial por valor, el mecanismo es el mismo, lo nico que debemos hallar el valor ms bajo, y una vez encontrado nos desplazamos por los nodos hoja (que recordemos estn todos conectados), yendo

c Bases de Datos 2 31

hacia la derecha buscando los valores ms altos, hasta que se acabe la cadena de hojas. Existen una serie de propiedades destinadas a mejorar el rendimiento de los rboles B+, que bsicamente consisten en que todos los nodos del rbol (excepto la ra) deben estar llenos al menos hasta un 50% de su capacidad (esto es as para reducir el nmero de nodos y evitar dar saltos entre nodos que estn vacos) y adems los rboles B+ deben ser equilibrados (todas las hojas estn al mismo nivel). Para el clculo del coste de localizacin de una entrada, es importante haber sabido elegir correctamente el tamao adecuado para los nodos. Nos interesa que el rbol tenga una altura pequea, as que los nodos sern grandes pero sin sobrepasar el tamao de una pgina, dado que de lo contrario no se podran consultar con una nica operacin de entrada/salida. En consecuencia, el tamao habitual de los nodos de un rbol B+ coincide con el de las pginas y as cada nodo se almacena en una pgina virtual diferente. As en un rbol de altura h son necesarias h operaciones de entrada/salida para localizar una entrada del rbol. Al insertar un nodo debemos reorganizar el rbol B+ para que siga cumpliendo las propiedades destinadas a mejorar el rendimiento. Si al inserta el nodo hoja, esta hoja tiene espacio libre, no hay problema. Si en cambio no lo tiene, es necesario dividir ese nodo e incluso ayudarse del nodo hermano de la derecha para distribuir los nodos hoja y seguir cumpliendo los criterios del rbol B+. La divisin del nodo hoja, puede crear la obligacin de crear un nodo padre, si ste no tiene espacio suficiente para acogerlo. Al suprimir un nodo hoja puede ocurrir que la hoja quede con menos valores de los necesarios para cumplir los criterios de eficiencia, en este caso se echar mano del nodo hermano de la derecha, y si no lo hay de la izquierda, repartindose los valores y suprimiendo una entrada en el nodo padre; incluso puede ocurrir que esto acarre la necesidad de suprimir un nivel completo en el rbol, lo cual slo puede ayudar a ser ms eficientes en las bsquedas. Los ndices que permiten implementar los accesos secuenciales por valor (como los rboles B+) pueden ser ndices agrupados o no agrupados. Un ndice agrupado es aquel en el que los datos que indexa estn ordenados fsicamente segn el acceso secuencial por valor que proporciona el ndice. Para una misma tabla podemos tener varios ndices, pero solo uno de ellos puede ser agrupado. Por ejemplo en la tabla empleados podemos indexar por el apellido. De forma que cuando hagamos una bsqueda ordenada por apellidos, los RID que se obtendrn apuntarn consecutivamente a filas contiguas, y as se podrn hacer muchos accesos seguidos a filas de una misma pgina con una nica entrada/salida. Dispersin Los ndices basados en la dispersin consiguen un rendimiento ligeramente superior al de los ndices basados en rboles B+ siempre que se trate de accesos directos por valor; en cambio no implementan los accesos secuenciales, por ello muchos SGBD solo implementan rboles B+. La dispersin bsicamente trata de colocar las entradas en las pginas segn una funcin de dispersin h determinada. As para hallar en qu pgina se encuentra el valor x, se aplica la funcin de dispersin h y directamente devuelve un valor h(x)=pgina. Hay muchas funciones de dispersin diferentes y aplicables; adems en cada pgina caben evidentemente ms de un valor. Aquellos valores que una vez aplicada una funcin de dispersin devuelven el mismo nmero de pgina, se denominan sinnimos y sus entradas lgicamente comparten la misma pgina. Los valores que caben en una pgina son N y los sinnimos L. El problema tendr lugar cuando L>N, es decir, hay ms sinnimos de los que caben en una

32 Bases de Datos 2

pgina. En este caso, se crea una pgina excedente donde se van guardando los sinnimos excedentes de esa pgina y se crea un apuntador en la pgina primaria que apunta a la pgina excedente. Si por cualquier causa o porque la funcin de dispersin no es muy buena se llena la pgina excedente, se crea una segunda pgina excedente que es apuntada desde la primera pgina excedente. As, en el ejemplo lateralr, se ha creado una funcin de dispersin h(x9=(x mod 5)+1, quiz no muy bien elegida, dado que N=3 y tenemos varias pginas excedentes.

Pginas excedentes

Es fcil darse cuenta que el coste de localizar una entrada depende directamente de si la entrada es un excedente o se encuentra en la pgina primaria. Si se encuentra en este ltimo caso el coste es una sola entrada/salida, en cambio si es excedente habr 2 ms entrada/salida. Por tanto para conseguir un buen rendimiento, interesa que haya pocas pginas excedentes y esto se consigue modificando el factor de carga. Este factor es igual al nmero de entradas que se espera tener dividido por el nmero de entradas que caben en las pginas primarias: C = M / (N*L) Cuanto ms bajo sea el factor de carga (C), menos excedentes habr y menos entrada/salida sern necesarias; en contrapartida si el factor de carga es muy bajo, habr desaprovechamiento de espacio. Si el factor de carga es por ejemplo C=0,5, se malgastar la mitad del espacio.

4. IMPLEMENTACIN DE LOS ACCESOS POR DIVERSOS VALORES Implementacin de los accesos directos Si por ejemplo quisisemos ejecutar la clusula SQL:
SELECT * FROM empleados WHERE num_despacho = 150 AND sueldo=1200;

Podramos utilizar el ndice del atributo num_despacho, para localizar aquellos empleados cuyo num despacho es igual a 150; despus localizar a travs del ndice de atributo sueldo los que cumplen el criterio de sueldo igual a 1200 y despus hacer una interseccin de los dos conjuntos. Con esta estrategia aprovechamos los ndices que ya tenemos, pero tiene un mal rendimiento en el caso de que haya muchos empleados que cumplan el primer y segundo criterios, pero pocos que cumplan los dos a la vez. Para solventar este problema existen los ndices de valores compuestos, son ndices que contienen valores de dos atributos; as por ejemplo si creamos el ndice de valores compuestos [num_despacho, sueldo], se organizaran en nodos de rbol B+ ordenados primero por num_despacho y despus por sueldo, as [150, 1000] < [150, 1500]. Implementacin de los accesos secuenciales y mixtos En este caso se sigue el mismo mtodo visto anteriormente, con la problemtica de que si la bsqueda fuese primero por sueldo y despus por nmero de despacho, no nos servira el ndice creado en el apartado anterior.

c Bases de Datos 2 33

5. NDICES DEL SISTEMA INFORMIX El sistema informix pone al alcance del diseador los ndices estudiados en este tema; as para crear un ndice con el valor del nmero de despacho:
CREATE INDEX indice_num_despacho ON empleados (num_despacho);

Para crear un ndice agrupado:


CREATE INDEX CLUSTER indice_num_despacho ON empleados (num_despacho);

Para crear un ndice por diversos valores:


CREATE INDEX indice_num_despacho ON empleados (num_despacho, sueldo);

Finalmente recordar que estos ndices tienen por defecto un orden ascendente, si por el contrario se prefiere o necesita un orden descendente:
CREATE INDEX indice_num_despacho ON empleados (num_despacho DESC);

34 Bases de Datos 2

TEMA 7 BASES DE DATOS DISTRIBUIDAS Y CLIENTE/SERVIDOR

1. VISIN GENERAL DEL ACCESO A BASES DE DATOS POR RED Una aplicacin de acceso a bases de datos debe distribuir las funciones que han de ejecutar los diferentes ordenadores que estn conectados: Almacenamiento de datos: Puede haber uno o ms ordenadores con acceso a los dispositivos fsicos de almacenamiento. Ejecucin del cdigo: Tanto el cdigo de la aplicacin con el de los SGBD, una parte debe ejecutarse en el ordenador del cliente y otra en los servidores de datos. Almacenamiento del cdigo: Normalmente se almacena el cdigo necesario en cada parte donde se ejecuta, sea el cliente o sea el servidor. El procesamiento se distribuye de la siguiente manera: Entrada/salida bsica: Controla la pantalla, teclado, ratn a nivel muy elemental. Gestin interfaz usuario: Presenta y captura los datos de la aplicacin Lgica de la aplicacin: Efecta las actualizaciones y consultas necesarias de acuerdo a las peticiones de los usuarios. Gestin de acceso a datos: Servicios de alto nivel para hacer consultas y actualizaciones. Acceso bsico a los datos: Leer y escribir los datos en la memoria externa.
Descomposicin en capas de una aplicacin de acceso a una base de datos Tema 7 Bases de datos distribuidas y cliente/servidor 1. Visin general del acceso a bases de datos por red 2. Bases de datos cliente/servidor 3. Bases de datos distribuidas 4. Ejemplo de aplicacin cliente/servidor y distribuida

Hablaremos por tanto de aplicaciones de BD cliente/servidor siempre que una parte de la aplicacin se ejecute en un ordenador cliente, y el acceso a los datos almacenados tenga lugar en uno o ms ordenadores servidores, con los cuales se comunica el cliente. Ahora bien, las posibilidades de que el procesamiento anterior se realice en mayor medida en el cliente o en el servidor son las siguientes (la barra marca la posicin de la red): a/bcde: El cliente solo accede a los dispositivos de interaccin bsicos con el usuario, en el servidor se ejecuta todo el resto de la aplicacin (un ejemplo son las aplicaciones basadas en X-windows). ab/cde: Todos los aspectos de interaccin con el usuario se realizan en el cliente mientras que en el servidor toda la lgica de la aplicacin y acceso a datos (monitores transaccionales por ejemplo). abc/de: La lgica de la aplicacin tambin se hace en el cliente y el servidor atiende peticiones del cliente para realizar consultas y actualizaciones de alto nivel. abcd/e: El cliente controla casi todos los aspectos de la aplicacin, a excepcin del acceso fsico a los datos almacenados (no se puede ir ms lejos).

Se denominan bases de datos distribuidas a aquellas en que los datos almacenados se encuentran en ms de un ordenador; si todos los datos que requiere la aplicacin se hallan en el mismo ordenador, entonces hablamos de BD centralizadas. Diferenciar esto de una aplicacin cliente/servidor. Una aplicacin cliente/servidor puede ser centralizada si los datos se hallan todos en el mismo

c Bases de Datos 2 35

Niveles de distribucin

ordenador o distribuida si se hallan en almacenamientos distintos. Encontramos dos grandes tipos de bases de datos distribuidas: Los SGBD puros o fuertemente acoplados: suelen ser el resultado de un desarrollo descendente, mediante el cual se disea una aplicacin por decisin expresa de los desarrolladores desde cero y segn eso se desarrolla el modelo de datos. Esto mejora el rendimiento, la fiabilidad y la posibilidad de compartir datos, aunque la aplicacin se vuelve compleja. Los SGBD federados o levemente acoplados: No suelen ofrecer un acceso totalmente integrado de los datos y es que su origen suele estar en un desarrollo ascendente, mediante el que se desarrolla una aplicacin que intenta gestionar un conjunto preexistente de bases de datos. Los niveles de distribucin que podemos encontrar en estas BD son: Nivel de peticin remota: Cada peticin efectuada en el servidor es una nica transaccin. Nivel de unidad de trabajo remota: Se pueden enviar al servidor varias sentencias desde un mismo ordenador que son tratadas como una nica transaccin. Nivel de unidad distribuida de trabajo: Permite acceder a ms de un servidor distinto en la misma transaccin, aunque cada peticin se tiene que ejecutar exclusivamente en un nico servidor. Nivel de peticin distribuida: Una misma sentencia puede ser ejecutada al mismo tiempo por varios servidores, que han de colaborar para obtener el resultado final.

Entre los aspectos crticos que se pueden encontrar en la construccin de aplicaciones encontramos: Impacto del trfico de red en el rendimiento: Tanto en las LAN (Redes de rea local, utilizadas en todo un edifico o en edificios adyacentes) como en las WAN (Wide Area Network, utilizada en zonas ms amplias pero menos rpida y flexible que las LAN) el acceso datos por red puede convertirse en un cuello de botella para el rendimiento general. Gestin de transacciones: La concurrencia y la recuperacin son imprescindibles por tanto hay que evitar fallos en las comunicaciones que puedan violar la atomicidad y definitividad de las transacciones. Acceso integrado a los datos: Debemos poder acceder a tablas, vistas y procedimientos igual que si de un proceso centralizado se tratase. Seguridad e integridad de los datos: Deben existir herramientas que sin imponer excesivas limitaciones a los usuarios puedan controlar la integridad de los datos. Tanto con disparadores, restricciones de integridad y roles podemos conseguirlo.

2. BASES DE DATOS CLIENTE/SERVIDOR En una aplicacin BD cliente servidor, hay una parte cliente que recibe las peticiones de la aplicacin y una parte servidor que lleva a cabo el acceso a los datos; ambas partes se comunican por medio de la red como vemos en la figura lateral. Hay dos tipos bsicos de arquitectura:
Comunicacin entre cliente y servidor

Cliente ligero/servidor pesado: La mayor parte de la funcionalidad del SGBD est en el servidor. El cliente hace poco ms que enviar al sevidor peticiones de la aplicacin y devolver las respuestas. Se suele utilizar en

36 Bases de Datos 2

arquitecturas del tipo ab/cde y abc/de. La utilizacin de un servidor pesado permite disminuir el trfico de la red consiguiendo que solo se enve informacin til al cliente. Cliente pesado/servidor ligero: Todo el procesamiento se hace en el cliente. La parte servidor atiende nicamente peticiones de lectura y actualizacin de pginas de disco. Este enfoque encaja con el esquema abad/e y lo siguen SGBD pensados para uso personal (Ms. Access) y pocos usuarios. Cuando el acceso a datos es pequeo, hay poco trfico de red, este tipo de esquema puede ser interesante.

Los SGBD con servidor pesado, permiten dos tipos de arquitecturas de aplicacin: arquitectura de dos capas: la aplicacin del cliente trabaja directamente con las estructuras de almacenamiento de la BD; y la ms interesante la arquitectura de tres capas: El cliente hace peticiones de ejecucin de procedimientos almacenados en el servidor y son slo estos procedimientos los que acceden a las estructuras de datos. Esto tiene varias ventajas: Los procedimientos almacenados se pueden optimizar estticamente y no durante la ejecucin. No todas las consultas y actualizaciones tienen que pasar por la red, con lo que se reduce el trfico. Se mejora la seguridad pues los usuarios solo pueden utilizar los procedimientos, evitndose as operaciones no previstas. Los cambios en la aplicacin se pueden llevar a cabo cambiando el comportanmiento de los procedimientos sin tener que modificar los clientes.

3. BASES DE DATOS DISTRIBUIDAS Hay 12 reglas fundamentales que debe cumplir todo SGBD que trabaje con datos distribuidos: Mxima autonoma local. Igualdad entre servidores Operacin continuada Transparencia de localizacin Transparencia de fragmentacin Transparencia de replicacin Procesamiento distribuido de consultas Gestin distribuida de transacciones Independencia del hardware Independencia del sistema operativo Independencia de los protocolos de red Independencia del SGBD En general estas doce reglas se pueden resumir en dos ideas bsicas: El conjunto de BD distribuidas debe verse como una sola BD centralizada. nicamente para los diseadores o administradores del sistema debe ser visible el modo distribuido. Hay que evitar limitaciones en el trabajo a causa de caidas de los servidores o fallos en las comunicaciones. Arquitecturas Las arquitecturas que encontramos son de 4 tipos y se pueden ver en la tabla lateral: Conexiones independientes: Se establecen conexiones separadas para cada uno de los
Comunicacin entre cliente y servidor

c Bases de Datos 2 37

servidores que se quieren utilizar. La aplicacin es la que debe gestionar todas las relaciones entre los datos con lo cual el rendimiento y la integridad de los datos es deficiente. Capa intermedia de gestin de datos: Esta capa proporciona un acceso ms o menos integrado a la gestin de datos. Esta forma de trabajar suele ser viable para aplicaciones de consulta con pocas exigencias de rendimiento e integridad de los datos. Distribucin en el cliente: Es un acceso ms integrado que los anteriores y ofrece un rendimiento aceptable aunque si el cliente es ligero normalmente hay que acceder a cada uno de los servidores por separado. Distribucin en el servidor: Es la solucin ms comn y as se alcanza el mximo grado de acoplamiento.

Para acceder a los elementos de una base de datos que se encuentran en otro servidor, se suelen referenciar con un link: CREATE DATABASE LIND deptpers USING <Info.Conexion>, si adems se crea un sinnomo: CREATE PUBLIC SYNONIM empleados FOR empleados@deptpers; ya se podr acceder a la tabla empleados desde cualquier servidor. Las transacciones distribuidas una vez iniciadas en un servidor, deben propagarse al resto de los que intervienen y mantener las opciones de seguridad tal si se tratasen de transacciones centralizadas. Para ello contamos con el protocolo de confirmacin en dos fases y la prevencin de abrazos mortales. El protocolo de confirmacin en dos fases es el mecanismo que siguen los servidores implicados en una transaccin para garantizar que si una transaccin se confirma en un o de los servidores implicados, suceda lo mismo en todos los dems. Tiene dos fases como su nombre indica: En la primera fase el servidor coordinador (que puede ser el que inicia la transaccin o se elige el ms estable) pregunta a los otros servidores si estn dispuestos a confirmar la transaccin. Los servidores que responden afirmativamente son anotados y si todos responden que s, el coordinador decidir confirmar la transaccin. En la segunda fase se hace efectiva la decisin anterior y el coordinador enva un mensaje a todos los participantes para comunicarles si tienen que confirmar o cancelar la transaccin. Este protocolo es muy sensible a cadas de la red, pues si la red cae y el coordinador no puede comunicarse con los dems, stos dejarn las transacciones bloqueadas. La deteccin distribuida de abrazos mortales se complica ms que en las aplicaciones centralizadas, es posible un abrazo mortal global a causa de un ciclo de espera entre diversos servidores, sin que exista o se detecte un abrazo mortal local. Para evitar los abrazos globales, los servidores tienen que enviarse peridicamente informacin sobre las relaciones de espera entre las transacciones, lo cual supone un coste alto en red, u otra solucin ms sencilla que consiste en permitir slo un tiempo mximo de espera, lo cual puede dar al traste con transacciones correctas aunque lentas. Existen mecanismos de distribucin de datos cuya finalidad es mejorar el rendimiento del SGBD distribuida a travs de un decremento del uso de la red, para ello cuenta con 3 mecanismos: fragmentacin, replicacin y cachs persistentes. Fragmentacin horizontal: Consiste en repartir el almacenamiento de filas de una tabla entre diversos servidores. As si una entidad de una gran empresa utiliza ms los datos relativos a la poblacin a la que da cobertura, es normal que en la base de datos local de la empresa se encuentren los datos asociados a esos clientes, a los que desde otras sedes se puede acceder pero se hace menos veces.

38 Bases de Datos 2

Fragmentacin vertical: Consiste en repartir el almacenamiento de columnas de una tabla en distintos servidores. Por ejemplo si en el departamento de contabilidad trabajan mucho con los sueldos de los empleados, se pueden cambiar estas columnas a este departamento. Eso s, la fragmentacin vertical obliga a pasar tambin las claves primarias de esa tabla. Replicacin: Consiste en el almacenamiento de copias idnticas de tablas o de fragmentos de tablas en distintos servidores. Como nos podemos imaginar el problema estriba en la coordinacin de los datos. Existe para ello la replicacin sncrona en las que las actualizaciones en un servidor se propagan inmediatamente al resto que tenta rplicas (lo cual requiere un entorno de red robusto) o replicacin asncrona en la que los datos se actualizan en todos los servidores cada perodo de tiempo; este ltimo modelo tiene menos requerimientos pero debemos saber que podemos estar usando durante un lapso de tiempo ciertos datos ya obsoletos. Cachs persistentes: Consiste en almacenar en un servidor una copia de una parte de los datos almacenados en otro; la parte que se guarda es la que tiene ms posibilidades de que se vuelva a acceder a ella; as si un cliente consulta uno de estos datos en la cach no ser necesario pedirlo de nuevo al servidor central.

4. EJEMPLO DE APLICACIN CLIENTE/SERVIDOR Y DISTRIBUIDA En la tabla lateral podemos observar un ejemplo de aplicacin cliente/servidor y a la vez distribuida. Se trata de una empresa de distribucin de aguas que tiene una sede central y diversas delegaciones. Cada sede internamente se comunica por una LAN y entre sedes por una WAN (es ms lento). Los datos se hallan todos en el servidor central y los cambios se propagan asncro y automticamente por la noche (las delegaciones van con retraso pero lo aceptan) Se utiliza un modelo de cliente pesado y servidor ligero, por lo tanto la mayor parte de las funciones se desarrollan en el cliente. Se utilizan cachs persistentes en los servidores locales, ello hace que los datos se actualicen poco pero se consulten bastante.
Aplicacin cliente/servidor y distribuida

Dado que los datos se hallan en el servidor central, todas las noches tras propagar los cambios a las delegaciones, se hace copia de seguridad de los datos. Esta arquitectura soporta la cada del servidor local de una delegacin sin que las dems se afecten (porque no usa replicacin sncrona ni protocolo de confirmacin en dos fases), pero no as el servidor central que provocar una parada general, por lo cual ste es ms robusto y fiable que los de las delegaciones.

c Bases de Datos 2 39

TEMA 8 OTROS TEMAS DE BASES DE DATOS

Tema 8 Otros temas de bases de datos 1. Optimizacin de consultas 2. Herramientas de administracin

1. OPTIMIZACIN DE CONSULTAS Dada una consulta en SQL es posible encontrar diversas consultas equivalentes expresadas en lgebra relacional. Cada una de estas consultas se puede representar grficamente y adems tendr un coste asociado distinto segn el orden en que se hayan realizado sus clusulas; la misin por tanto del SGBD es determinar cmo tiene que ejecutarse la consulta para que el coste asociado sea mnimo. Este coste asociado que busca un gasto de recursos mnimos se va a basar sobre todo en el nmero de accesos a disco que debe realizar. El objetivo de la optimizacin de consultas es encontrar el plan de acceso a la consulta que tiene asociado un coste mnimo (intervalo de tiempo necesario para encontrar la respuesta a la consulta formulada por el usuario). Para verlo con facilidad, pondremos un ejemplo: Tenemos una tabla de empleados, otra de proyectos y otra de asignaciones de proyectos debidamente cumplimentadas, y queremos llevar a cabo la consulta siguiente, teniendo en cuenta que la cantidad de empleados (CARD) es 100, proyectos 20 y asignaciones 400 y que un 30% de los empleados dedican ms de 200 horas al proyecto:
SELECT empleados.nombre_empl, empleados.num_empl, asignaciones.num_proy FROM empleados, asignaciones WHERE empleados.num_empl=asignaciones.num_empl AND asignaciones.dedic > 200

Representacin grfica de las operaciones de lgebra relacional Unin Proyeccin Diferencia Seleccin Interseccin Combinacin Nat. Producto Cartesiano

En este caso encontram os las tres estrategias diferentes implementadas en el rbol sintctico de la consulta:
Representacin grfica de las operaciones de lgebra relacional

40 Bases de Datos 2

Podemos observar que cada estrategia tiene un coste diferente, por lo que el orden de ejecucin de las operaciones formuladas dentro de una consulta, repercute directamente en el coste de ejecucin de la consulta. La optimizacin sintctica de una consulta es el proceso que determina un orden de ejecucin razonablemente adecuado de las operaciones que incluye una consulta. Comienza con la traduccin de la consulta original en un rbol sintctico equivalente y finaliza cuando se ha encontrado el rbol ptimo. Generalmente el SGBD intenta ejecutar las operaciones de lgebra relacional que decrementen la cardinalidad de los resultados intermedios lo antes posible, a la par que intenta retrasar al mximo las que lo incrementan. La optimizacin fsica de una consulta evala el coste total de ejecucin del rbol sinttico ptimo asociado a una consulta, para ello el SGBD debe conocer las estadsticas de la BD para considerar el tamao de los resultados intermedios y las estructuras de almacenaje del esquema interno que pueden acelerar las bsquedas como dnde se encuentran los ficheros, si se han definido ndices de agrupacin, etc. La optimizacin semntica de la consulta intenta simplificar las consultas realizadas por los usuarios teniendo en cuenta las reglas de integridad y la lgica que se han definido sobre la BD. As por ejemplo si en el ejemplo anterior intentsemos hacer una bsqueda de los empleados cuyo salario es mayor que el de su jefe, de existir optimizacin semntica (que no est implementado en los SGBD actuales) ni se llegara a realizar la operacin, pues es una regla de integridad que los empleados no pueden ganar ms que sus jefes.

2. HERRAMIENTAS DE ADMINISTRACIN Consisten en software que incorporan los SGBD para facilitar las tareas de gestin y administracin de la base de datos. Actualmente estas herramientas han mejorado mucho, permitiendo una interfaz de usuarios y ventanas y paneles desplegables que facilitan mucho la tarea del administrador de bases de datos. Vamos a encontrar dos grandes tipos de herramientas de administracin: las herramientas de administracin central y las herramientas de edicin y manipulacin de BD. Las herramientas de administracin central son capaces de ejecutar las siguientes operaciones: Operaciones relacionadas con el servidor de la BD: Puesta en marcha y desconexin del servidor. Llamada a otras herramientas de administracin: Herramientas de gestin de espacios de almacenaje, gestin de esquemas, recuperacin y copias de seguridad frente a casi todo tipo de desastres. Supervisin del funcionamiento del servidor: Proporciona informacin sobre las sesiones de trabajo activas de los distintos usuarios, el estado de las actividades destinadas a garantizar la recuperabilidad de los datos, posibilidad de controlar las situaciones de emergencia y dispositivos para generar informes de incidencias varias.

Las herramientas de edicin y manipulacin de las BD en el informix personal edition se encuentran centralizadas en el SQL editor, y desde l es posible: Crear, recuperar y modificar documentos de SQL, que en realidad no son ms que ficheros de texto con la extensin SQL. Introducir nuevas sentencias SQL, hacer comprobaciones sintcticas de las mismas e incluso guardarse en documentos independientes.

c Bases de Datos 2 41

Ejecutar pedidos SQL, cuyos resultados salen en ventanas adicionales.

Las herramientas que se encuentran por tanto en Informix y que nos ayudan a realizar todas estas tareas son: Command Center, Schema Knowledge, Informix Server Administrador, Control Center, SQL Enterprise Manager.

Texto elaborado a partir de:

Jaume Sistac Planas, Rafael Camps Par, M. Elena Rodrguez Gonzlez, Toni Urp Tubella, Ramn Segret i Sala, Dolors Costal Costa, Pablo Costa Valls Febrero 2006

Bases de datos II

Sistemas de gestin de bases de datos


TEMA 1 EVOLUCIN DE LAS BASES DE DATOS
Tema 1 Evolucin de las bases de datos 1. Evolucin de los modelos de bases de datos 2. Arquitectura funcional de un SGBD

1. EVOLUCIN DE LOS MODELOS DE BASES DE DATOS Le evolucin que han seguido los modelos de bases de datos, y que se ajusta perfectamente a la figura del margen, es la siguiente: Los ficheros clsicos Un fichero es un contenedor que almacena datos estructurados siguiendo unas reglas sencillas: el fichero almacena los datos que corresponden a todas las instancias de una determinada entidad, adems es una coleccin de registros, siendo cada registro una coleccin de campos. Estos ficheros clsicos no proporcionan ningn software especializado de acceso, sino que toda esta programacin necesaria para manipular los datos que residen en un fichero tiene que estar contenida en cada uno de los programas que acceden a l. Este requisito introduce complejidad al sistema por tener que conocer con exactitud la implementacin fsica concreta de cada fichero para poder ser entendido y utilizado.

Evolucin de los modelos de bases de datos

El modelo jerrquico Siguiendo con los modelos prerrelacionales, cuando la complejidad de los datos iba creciendo, se requera nuevo software que los ficheros clsicos no soportaban. Aparecieron productos como el IDS construido para General Electric o el ms moderno IMS de IBM (1966) que se considera el primer SGBD contruido para la aeronutica. El contenedor que almacena los datos se llama base de datos que contiene los datos de todas las instancias de un conjunto de entidades relacionadas. Estas entidades se estructuran entre s de manera jerrquica o en rbol, siendo la base de datos total una coleccin de rboles, uno por cada instancia de la entidad principal; cada instancia de rbol contiene una instancia de entidad principal y todas las instancias de entidades dependientes relacionadas con la principal, y cada nodo del rbol es una coleccin de campos, uno por cada atributo de la entidad que este nodo almacena. Aparece la figura del administrador de bases de datos, para gestionar la implementacin fsica de las bases de datos jerrquicas y decidir entre diferentes opciones cuando esto es posible. Este modelo supuso un avance, dado que lo soportaba un verdadero SGBD, porque hay una separacin de niveles (nivel exterior jerrquico para programadores y nivel interior, el de la implementacin para el administrador).

Los modelos en red An as, el modelo anterior no modeliza todas las posibilidades, en especial cuando existe una relacin entre entidades de muchos a muchos (muy frecuente) solo poda representarse introduciendo redundancia de datos. El modelo de tados BOM (bill of materials pues relacionaba materiales y estructuras ya fabricadas) si cumpla este requisito de relacin.

2 Sistemas de gestin de bases de datos

El modelo en red o modelo CODASYL, determina el set como pieza fundamental para construir un diseo de bases de datos. El set est constituido por dos entidades, el propietario y el miembro, ligadas por una relacin de uno a muchos. El set permite al usuario desplazarse de una instancia de propietario a todas las instancias de sus miembros, as como de una instancia de miembro a la instancia de su propietario. La entidad propietario de un set puede ser propietaria de otros sets y/o miembro de otros sets, y la entidad miembro puede ser propietaria de otros sets y/o miembro de otros sets. As tenemos una verdadera red de entidades. El modelo relacional En el modelo relacional los elementos estructurales son las relaciones, las tuplas y los atributos, popularizados enseguida como tablas, filas y campos. Sobre dichos elementos se definen un conjunto de operaciones (lgebra relacional) y se define un lenguaje declarativo (SQL) para su manipulacin. Caractersticas como la clave primaria, la clave fornea y el hecho de que el orden de las tuplas dentro de una relacin y el orden de los atributos son irrelevantes, caracterizan tambin a este modelo. As que los elementos son identificados por apuntares simblicos (nombres y variables) sin ningn apuntador fsico u orden establecido. El uso coloquial mediante tablas, filas y campos prevea que los SGBD se encontraran tambin al alcance de usuarios no informticos, que podran acceder ms fcilmente a los datos almacenados. Aun as, tardaron 10 aos en aparecer los primeros SGBD comerciales (1981) de la mano de Oracle y, posteriormente de IBM. Modelos semnticos Los modelos semnticos incorporan el concepto de dominio, bueno de hecho, el modelo relacional tambin lo hace, pero soporta un nmero reducido de ellos (enteros, decimales, caracteres, bolanos); en el modelo semntico se potencia ms y se definen las operaciones posibles con cada uno de ellos (as un campo nmero de telfono no se permitir que se use como operacin matemtica a pesar de ser un entero como puede ser el campo dinero pero que s tiene sentido que se pueda operar con este ltimo). Ofrece tambin conceptos de instanciacinclasificacin, de generalizacin-especializacin, de agregacin-descomposicin, etc. Bases de datos orientadas a objetos El concepto objeto es la asuncin de la representacin de la complejidad en el largo comino de modelizar la realidad de los datos. As y al igual que en lenguaje orientado a objetos, aparecen los conceptos de objeto y clase de objeto y existen varias posibilidades de interrelacionar clases de objetos, como la herencia. Eso s, existi una dicotoma al principio de la dcada de los 90. La discusin se centraba en si dotar a los lenguajes relacionales existentes de soporte a objetos o, por el contrario, iniciar unos nuevos sistemas de bases de datos orientadas a objetos partiendo de los lenguajes orientado a objetos y olvidando todo el trabajo realizado hasta ahora. Siguiendo esta ltima tendencia apareceran las bases de datos orientadas a objetos denominadas puras, pero la tendencia actual es el de dotar a los sistemas actuales de soporte a objetos, dado que durante muchos aos han demostrado su buen hacer y porque desde luego, es ms rentable para las empresas de software que cuentan mucho en la industria informtica: es lo que ha dado en llamarse modelo relacional extendido.

Sistemas de gestin de bases de datos 3

2. ARQUITECTURA FUNCIONAL DE UN SGBD El procesamiento de una sentencia SQL es la siguiente:


Arquitectura funcional de un SGBD

Seguridad: se verifica en primer lugar que el usuario que ha pedido la ejecucin de una sentencia, est autorizado para realizar dicho tipo de sentencia. Procesamiento de vistas: las referencias a vistas son sustituidas por las referencias equivalentes a tablas, con lo que la sentencia queda ms homognea. Integridad: Claves primarias y forneas, as como las restricciones que pudiera haber solo columnas y tablas son estudiadas para la sentencia a realizar, en busca de que no rompa la integridad de datos del sistema. Optimizacin: Como las operaciones a ejecutar una vez descompuestas pueden realizarse en distinto orden, el proceso de optimizacin se encarga de escoger, en cada una de las transformaciones, la mejor combinacin posible de operaciones procedimentales. Control de concurrencia: Hay que evitar que la operacin que se va a realizar no entre en conflicto con otra operacin que tambin se est ejecutando. Recuperacin: Hay que tomar nota antes de cualquier lectura o escritura de un dato, ya que en fallos posteriores del sistema, tendremos un diario de operaciones y con ste, la posibilidad de recuperarlas. Memoria intermedia: En ella se guardan los datos a los cuales se ha accedido recientemente, pues la probabilidad de volver a acceder inmediatamente es alta y se ahorrar as muchas operaciones fsicas de entrada y salida, ya que el gestor de memoria intermedia va fsicamente a los datos slo cuando es necesario.

4 Sistemas de gestin de bases de datos

TEMA 2 DISEO CONCEPTUAL Y LGICO DE BASES DE DATOS

1. DISEO DE BASES DE DATOS Las etapas del diseo de bases de datos son: 1. Captura y abstraccin de los requerimientos de los usuarios: Mediante entrevistas con todos los miembros de la empresa hay que conseguir una instantnea o fotografa de la misma, para concretas las especificaciones y requerimientos. 2. Esquema conceptual: Con la ayuda de un modelo semntico conveniente elaboramos un esquema conceptual, nosotros elegiremos el modelo UML, pero hay que reconocer que este esquema puede variar con el estado de la tecnologa. Ya existen actualmente modelos ms potentes, pero como despus tenemos que elaborar un modelo lgico partiendo de este conceptual y actualmente los modelos lgicos van muy por detrs de los primeros, no es conveniente realizar el modelo conceptual ms potente y detallado que podamos y luego esperar que los modelos lgicos y fsicos implementen lo que puedan. EN el futuro a medida que las implementaciones de SGBD sean ms finas o completas, quizs tendremos que cambiar nuestra eleccin de UML por otros modelos semnticos ms elaborados. 3. Transformacin a modelo lgico: Transformamos el modelo conceptual obtenido en el apartado anterior en UML por el modelo lgico que en nuestro caso consistir en sentencias estndar AQL. 4. Aplicar la teora de la normalizacin: Si procede, normalizaremos (lo veremos en el siguiente captulo) y en nuestro, por el tipo de modelo elegido, s procede. 5. Acomodacin al SGBD del que disponemos: Construiremos el modelo fsico adaptndolo al SGBD del que disponemos. 6. Cuantificacin de volmenes de datos y frecuencias de procesos: Aqu finaliza la parte pesada y esencial del diseo de bases de datos, pero queda el afinamiento, un ajuste que no es en absoluto poco importante. Tenemos que detectar si hay grandes volmenes de datos a los que aplicar entonces tcnicas de fragmentacin; tambin debemos detectar posibles procesos crticos. 7. Desnormalizacin, tiempo de respuesta, integridad, seguridad, concurrencia, recuperaciones: Todos estos conceptos debemos tratarlos a fondo. Los dos primeros estn muy relacionados, pero adems debemos dar integridad a la base de datos (buenas restricciones), seguridad, concurrencia (adecuado nivel de aislamiento), etc. 8. Ajuste de las estructuras fsicas de almacenamiento y parmetros del sistema: Cada SGBD tiene unos ajustes internos y admite diferentes formas de almacenamiento de estructuras fsicas, por lo que debemos introducir los parmetros ms adecuados a cada caso; y esto solo se puede realizar con una lectura atenta de los manuales del administrador de base de datos, con mucha experiencia y con pruebas repetidas y experimentacin. 9. Control de rendimientos: Ya hay muchas herramientas visuales que monitorizan y nos dan todo tipo de histogramas del rendimiento de la base de datos. 10. Informe final del diseador: Hay que escribir un informe contando todo lo que se ha hecho: esquemas conceptual y lgico y fsico, redundancias deseadas, agrupaciones, etc. Hay que tener en cuenta que estas 10 etapas no son lineales; por frecuentes cambios es fcil tener que volver por ejemplo de la etapa 3 a la 1 para aplicar ciertos cambios, es la retroaccin y es una caracterstica muy importante en el comportamiento de los diseadores.

Tema 2 Diseo conceptual y lgico de bases de datos 1. Diseo de bases de datos 2. Normalizacin en bases de datos relacionales

Sistemas de gestin de bases de datos 5

Sobre los modelos lgico y fsico hay que decir que los modelos de bases de datos, en abstracto, definirn lo que hemos llamado modelo lgico, representado generalmente por un estndar. Estos modelos ms representativos del mercado son 3: Implementaciones del modelo relacional clsico: que suponen el 80% de cuota del mercado actual. Implementaciones de las bases de datos puras orientadas a objetos, que representan una cuota del 3 al 5% y parece que no aumenta. Implementaciones de las bases de datos relacional con objetos: actualmente un 10 a 15% de cuota pero en constante aumento, como Oracle 8, Informix 9, etc. Esto implica que en el futuro podemos decantarnos por escoger como modelo lgico el relacional con objetos y, en consecuencia, como modelo fsico el correspondiente a sus implementaciones fsicas (Oracle, Informix). Por ltimo, decir que las alternativas de diseo que hemos elegido, puesto que algunas decisiones debemos tomar, son las siguientes: Hemos elegido como modelo conceptual el UML, y como modelo lgico el relacional clsico, y por tanto como modelos fsico el estndar SQL:1999. No es lo mismo disear un sistema de informacin nuevo partiendo desde cero, que disear un sistema para una empresa que resulta de la absorcin o fusin de varias.

2. NORMALIZACIN EN BASES DE DATOS RELACIONALES


Tabla Suministros

Antes de conocer los 6 grados y formas de normalizacin, debemos conocer el concepto de dependencia funcional que si no es bien entendido, provoca anomalas de diseo. Bsicamente una dependencia funcional en una tupla de una base de datos es cuando uno o ms campos de la base de datos, determinan unvocamente otro u otros campos de la tupla, provocndose en este caso redundancias. As en la tabla/tupla lateral denominada Suministros, encontramos las siguientes dependencias funcionales:
{CodigoProv, CodigoArticulo} {Cantidad} {CodigoProv, CodigoArticulo} {CiudadProv} {CodigoProv} {CiudadProv}

Estas relaciones de dependencias, tambin podemos anotarlas as:

Las dos primeras relaciones de dependencia se explican porque las claves que la provocan son las claves primarias de la tabla, por ello es lgico que as sean, pero no as la ltima; es obvio que siempre que aparezca 1 en el cdigo de la provincia, sta va a ser Jerez. Ojo, que hemos llegado a este anlisis al ver los descriptores de la tupla (los nombres de los campos) y analizando los datos que lo contienen, hay que tener cuidado para no tomar tampoco decisiones a la ligera. Como decamos, la ltima dependencia nos provoca anomalas de diseo: Anomalas de modificacin: Cada vez que un proveedor cambie de provincia (por ejemplo el de Jerez cambia a Ceuta) debo en la tabla hacer tantas modificaciones como veces aparezca, en este caso 2, y tener cuidado de no dejarme ninguna, pues dejara la tabla inconsistente. Anomalas de borrado: Si un proveedor que slo suministra un producto deja de hacerlo y lo borramos de la tupla, se perdern sus datos (cdigo de proveedor y ciudad), con lo que perdemos datos elementales sin querer. Anomalas de insercin: No podemos almacenar los datos bsicos de un proveedor como el cdigo de provincia y su ciudad si no sabemos los artculos

6 Sistemas de gestin de bases de datos

que suministra, son datos independientes que como se hayan juntos en la misma tupla, debemos respetar. Este problema se debe a que la tupla suministros describe dos hechos elementales del mundo real distintos y adems independientes: por un lado los artculos que suministra cada proveedor y, por otro, los datos del proveedor en s mismos. Esto lo pretende resolver la teora de la normalizacin: toda relacin tiene que describir un concepto semntico nico. Cada forma normal del crculo lateral es ms restrictiva que la anterior, es decir la 3FN cumple todas las restricciones de la 2FN ms algunas nuevas. Cuando una relacin no est ni siquiera en 1FN se dice que est en NF2 (non first normal form). Primera formal normal (1FN) Todo atributo de la relacin es atmico, no descomponible y no es un grupo repetitivo. As en la relacin suministros lateral, los atributos cdigo articulo y cantidad no son atmicos. Para que as lo fueran deberan ser como la imagen que tenamos en la pgina anterior. Cualquier modelo relacional siempre garantiza que las relaciones estn en 1FN dado que slo hay una estructura para representar los dados, y cada uno de ellos se representa uniformemente mediante valores atmicos. Por tanto, esta relacin lateral estara en NF 2.
Grados de las formas normales

Tabla Suministros en NF2

Segunda forma normal (2FN) La relacin se encuentra en 1FN y todo atributo no clave depende funcionalmente en forma completa de la clave primaria (hay una excepcin y es que un atributo puede depender funcionalmente de parte de la clave primaria si dicho atributo es parte de una clave alternativa). Es obvio que aquellas relaciones con clave primaria simple siempre estarn en 2FN, slo se puede violar esta 2FN cuando la clave primaria es compuesta, como en el ejemplo de suministros:

La idea es clara, si un subconjunto no clave depende funcionalmente de un subconjunto propio de la clave, es porque representa un hecho de este subconjunto propio y, por lo tanto, la solucin est en separarlos en dos relaciones diferentes de la siguiente forma:

Tercera forma normal (3FN) Similar a la 2FN pero involucrando atributos no claves, es decir, una relacin est en 3FN si se encuentra en 2FN y adems ningn atributo no clave depende funcionalmente de ningn otro conjunto de atributos no clave. Por cierto, la excepcin aplicada en la 2FN tambin se aplica a la 3FN.

As en esta relacin, encontramos que hay una dependencia funcional entre ciudad y provincia de las que ninguna son clave. De nuevo, la solucin es proyectar dos relaciones diferentes:

Forma normal de Boyce-Codd (FNBC)

Sistemas de gestin de bases de datos 7

Tabla Notas

La relacin anterior se encuentra en 3FN; a pesar de que parece incumplir la 2FN por la relacin de dependencia entre DNIAlumno y CdigoMatricula, pero al ser sta ltima parte de una clave alternativa (CodigoAsignatura, CodigoMatricula) se aplica la excepcin y lo mismo con la excepcin a 3FN por la relacin de dependencia entre CodigoMatricula y DNIAlumno pues forma parte de una clave alternativa. No obstante, si analizamos la tabla notas lateral, vemos que puede estar plagada de errores. Hay redundancias (por cada asignatura en que se matricule cada alumno, se repite su cdigo de matricula) y anomalas de modificacin (como en el ejemplo al modificar el cdigo de matrcula de un alumno). El origen del problema es histrico, pues cuando Codd enunci la 2FN y 3FN en 1970, no consider la posibilidad de que en una relacin pudiera haber varias claves candidatas que fueran compuestas, ni tampoco que entre estas pudieran haber solapamientos. Pues bien, una relacin est en FNBC si est en 1FN y todos los determinantes son clave candidata de la relacin. Un determinante son los orgenes de la flecha, y en el ejemplo que nos ocupa, si analizamos todas las relaciones posibles:

4 soluciones para normalizar en FNBC

encontramos como determinantes: DNIAlumno, DNIAlumnoCodigoAsignatura, CodigoMatricula, CodigoAsignatura-CodigoMatricula y como claves candidatas tenemos: DNIAlumno-CodigoAsignatura y CodigoAsignatura-CodigoMatricula. Como no se cumple que todos los determinantes son clave candidata debemos solucionar las relaciones DNIAlumnoCodigoMatricula y CodigoMatriculaDNIAlumno. Cualquiera de las 4 soluciones con 2 relaciones cada una de ellas de la figura lateral seran vlidas para este ejemplo. Las ms lgicas desde el punto de vista del centro acadmico seran la primera o la segunda, y de entre estas dos, nos quedaramos con la segunda, pues pueden existir alumnos extranjeros que no dispongan de DNI o, lo que es peor, que se repita con alguno de los que ya tenemos matriculados. Hemos de pensar que toda relacin se puede normalizar hasta este nivel, aunque el proceso de normalizacin no es nico, aunque eso s, la solucin siempre es satisfactoria. Como consecuencia del proceso de normalizacin evitamos redundancias y anomalas ya que separamos hechos semnticamente diferentes. Cuarta forma normal (4FN) Hasta ahora las relaciones que hemos visto eran de hechos monovaluados, la 4FN y la 5FN estn relacionadas con hechos multivaluados. En el ejemplo que encontramos en la pgina siguiente se establece la relacin ConoceProgr, cuando un empleado codificado mediante su DNI (clave primaria) conoce determinados lenguajes de programacin y determinados idiomas hablados y escritos. Si normalizamos la primera tabla que encontramos en la segunda relacin nos podemos llegar a preguntar si existen redundancias, a pesar de que cumplen la FNBC y por supuesto, todas las anteriores. Cualquier inclusin de otro lenguaje de programacin nuevo que aprendiera un empleado o lengua hablada, nos hara tener que repetir varias inclusiones en la relacin para que quedara completamente registrado. El origen de estas anomalas radica en que esta relacin recoge dos hechos multivaluados: por un lado los lenguajes de programacin que el usuario conoce, y por otro los idiomas que domina, y como

8 Sistemas de gestin de bases de datos

estos dos hechos son independientes entre s (un lenguaje de programacin no determina conocer un idioma y viceversa). As que una relacin se encontrar en 4FN si se encuentra en FNBC y adems no tiene dependencias multivaluadas independientes. As, el estado inicial yla solucin propuesta son las siguientes:

Relacin ConoceProg

Quinta forma normal (5FN) Hay relaciones en las que a pesar de que presentan redundancias en sus contenidos, no se puede aplicar el proceso de reduccin a dos relaciones que hemos visto anteriormente, y esto se debe a que no existen todas las posibles combinaciones. Un ejemplo, para la siguiente tabla:

Si descomponemos en cualquiera de las tres posibilidades existentes: (Profesor, Asignatura) (Asignatura, Centro) (Profesor, Asignatura) (Profesor, Centro) (Asignatura, Centro) (Profesor, Centro) Acabamos perdiendo informacin, en primer lugar no sabemos que profesores estn asignados a cada centro; en el segundo caso desconocemos qu asignaturas se imparten en cada centro y en el ltimo no podemos saber qu asignaturas imparte cada profesor. Este problema tiene lugar porque la relacin ProfesorAsignaturaCentro aunque representa hechos multivaluados, estos son dependientes entre s (y no como el caso anterior, dado un programador, los idiomas y lenguajes de programacin que conoca quedaban perfectamente determinados por sus posibles combinaciones, ahora no). Ahora bien, podemos encontrar una ley de simetra, que en nuestro caso es la siguiente:
Si un profesor imparte una asignatura y La asignatura se imparte en un centro y En este centro trabaja el profesor Entonces El profesor imparte la asignatura en el centro.

A esta dependencia se le denomina dependencia de proyeccincombinacin, dado que la relacin original se puede reconstruir a partir de la combinacin de las nuevas relaciones en las que la relacin se ha descompuesto:
ProfAsigCentro = (ProfAsig * AsigCentro) * ProfCentro

Sistemas de gestin de bases de datos 9

Pero hay que tener mucho cuidado, dado que puede haber dos tipos de estas dependencias: Dependencias de proyeccin-combinacin sin variacin: Es el caso que hemos tratado hasta ahora porque cumpla la ley de simetra que habamos establecido. En estos casos si existe este tipo de dependencia, la relacin slo estar en 5FN si la hemos descompuesto en las relaciones que la componen. Dependencias de proyeccin-combinacin con variacin: En este caso no es posible la descomposicin porque ya no se puede volver a reconstruir y darnos el mismo resultado. Si por ejemplo, a la relacin de profesores de ejemplo le eliminamos el valor <Garcia, Algebra, FIB>, y descomponemos en sus 3 relaciones y volvemos a componerlas, nos aparecer ese valor que hemos eliminado. Esto sucede as porque la ley de simetra de la que partamos no se cumple para la relacin original, es decir, ya no es cierto que cuando un profesor imparte una asignatura (Algebra) y sta se imparte en un centro (FIB y FME), y ese profesor pertenece a ese centro (FIB y FME) ese profesor imparta la asignatura en ese centro (s en el caso de FME pero no para Algebra en FIB). Queda claro entonces que el proceso para determinar cuando un hecho multivaluado est en 4FN o en 5FN no es directo, aunque estas relaciones se pueden considerar como casos patolgicos que raramente aparecen en la prctica. Lo que s queda claro es que una relacin solo puede violar las formas normales 4FN 5FN si su clave primaria est formada como mnimo por 3 atributos (relacin ternaria como mnimo) y que una relacin que est en forma 5FN puede presentar repeticiones en su contenido, pero stas son inevitables y no debemos considerarlas redundantes. En definitiva, la normalizacin es til para comprobar aspectos semnticos difciles, pero pocas veces es necesaria, dado que habitualmente podemos distinguir los hechos independientes. Hay veces que conviene aplicar justo lo contrario, la desnormalizacin, dado que hay que tener en cuenta que la normalizacin penaliza la recuperacin o consulta de los datos porque exige operaciones de combinacin en distintas tuplas para recuperar datos que originalmente estaban juntos en la misma; cuando los atributos de una relacin que representan otro concepto semntico no se actualizan frecuentemente, quizs resulte conveniente utilizar la desnormalizacin. Las bases de datos relacionales con objetos incorporan relaciones que estn en NF2, para la teora actual, dado que hay que desarrollar otra teora de la normalizacin especfica para ellas.

10 Sistemas de gestin de bases de datos

TEMA 3 RECONSIDERECIN DE LOS MODELOS CONCEPTUAL Y LGICO

1. TRAMPAS DE DISEO Cinco trampas de diseo son las que con ms facilidad de cometes, con distintos ejemplos vamos a tratar de desenmaraarlas: Abanico Para esta primera trampa de diseo (y para la segunda) tendremos el mismo ejemplo que vemos en la figura lateral: la organizacin de profesores en una Universidad, en la que existen divisiones, a stas pertenecen departamentos y a ella profesores, con asociaciones 1 a N como se pueden ver. El diseo correcto es el primero de la imagen de 3, pero la segunda imagen es el error en abanico, que se da cuando tenemos dos asociaciones con cardinalidad 1 a N; puesto que se han seleccionado las asociaciones incorrectas y aunque a priori parece que no perdamos informacin no es cierto, dado que no sabemos como quedan asociadas. As para un profesor determinado podemos desconocer a que departamento pertenece, pues una consulta a la base de datos para el Organizacin correcta profesor 1, nos devolver los departamentos 1 y 2. Este error Error de abanico se debe a no haber modelado correctamente las asociaciones y Error de corte habernos alejado de la realidad. Corte Es una trampa parecida a la anterior pero un poco ms sutil. Podemos verla en la tercera figura de la imagen lateral, aunque a priori no hay prdida de informacin y podemos realizar todas las consultas pertinentes, puede ocurrir que si un departamento se quedase temporalmente sin profesores, perderamos la asociacin divisiones/departamentos. Es decir, al borrar instancias de la clase central, las asociaciones entre instancias de las clases que hay en los extremos pueden quedar cortadas. Prdida de afiliacin Se podra definir como una equivocacin en doble abanico. Una instancia de la clase central puede estar relacionada con todo un abanico de instancias en cada una de las otras dos clases, as slo podemos decir que una instancia de la clase central puede estar relacionada con algunas de las instancias en abanico, pero no podemos concretar cuales.

Tema 3 Reconsideracin de los modelos conceptual y lgico 1. Trampas de diseo 2. Consideraciones en el paso a modelo lgico 3. Representacin en el modelo lgico de la generalizacin/especializacin 4. Representacin de atributos instanciados en diferentes valores 5. Abrazos mortales de definicin y de carga 6. Sustituos de la clave primaria 7. Frecuencia de procesos y volmenes de datos 8. Redundancia de datos: duplicados y derivador 9. Histricos

Lo vemos con el ejemplo de la imagen lateral, Al realizar el diseo de la base de datos entre proveedores, piezas y clientes, no podemos decidir de que proveedor son las piezas que ha comprado determinado cliente, Error prdida de afiliacin y viceversa. La solucin a esta prdida de afiliacin la vemos Solucin: asociacin ternaria desarrollada en la misma figura, en la parte inferior, se trata de una asociacin ternaria denominada suministros. Aridad de las asociaciones En general, hay que prestar mucha atencin a las asociaciones que involucran ms de dos clases, y alguna de ellas tiene multiplicidad igual a 1. En tales casos, puede que esta clase realmente est relacionada slo con una de las otras clases y no deba participar en la asociacin, nos tenemos que fijar muy especialmente en la razn por la cual est el 1.

Sistemas de gestin de bases de datos 11

Error de aridad en las asociaciones Una de las posibles soluciones

As, por ejemplo tenemos un diseo errneo en el que para empezar no sabemos que nombre darle, eso ya es un mal sntoma. Si estudiamos la relacin ternaria nos damos cuenta que no est ni en 2FN y es que el diseo es completamente incorrecto, siendo el adecuado el que vemos justo bajo l; otra solucin a otros casos es tratar la clase con aridad 1 como atributo de la asociacin y no como una clase que participa en la asociacin. Semntica de las clases Es importante modelizar en las asociaciones el significado real de los elementos de nuestro diseo; as hay que prestar especial atencin al significado real que tiene lo que se quiere representar y no dejarnos llevar por lo que pueda parecer a primera vista. Por ejemplo en una base de datos con departamentos que tienen sedes distintas, y en las que cada departamento puede tener varias sedes, el tributo superficie no puede situarse en el departamento, sino en cada una de las sedes

2. CONSIDERACIONES EN EL PASO A MODELO LGICO Desaparicin de tablas correspondientes a clases: Si una clase aparece en nuestro modelo conceptual es porque realmente nos interesa que est y, por lo tanto, ya esta bien que est, pero nos tenemos que plantear si tiene suficiente importancia para dar lugar a una tabla de la base de datos, especialmente si no tiene ningn atributo que forme parte de la clave primaria. Un ejemplo: En una empresa con 4 almacenes tenemos una tabla almacenes con su AlmacId y otra tabla Piezas con PiezaId; esto nos sirve para relacionar el stock existente en cada moemnte Stock (almacId, piezaId, stock). Solo es posible suprimir una tabla si no guarda ningn atributo y las posibles comprobaciones de integridad se hacen de alguna otra manera. Las claves forneas por tanto, son muy importantes para la integridad de nuestra base de datos. Comprobacin de instancias: Una vez acabado el diseo debemos cerciorarnos de que funciona como realmente queremos que lo haga y modeliza correctamente la realidad. As en los ejemplos laterales observamos como las instancias que encontramos en la base de datos no se corresponden al esquema que hemos diseado. Las instancias, eso s, pueden ayudarnos a encontrar errores, pero nunca nos han de conducir al diseo, esto lo tiene que hacer la semntica de los datos. Atributos de asociaciones: En general, las asociaciones binarias N:M suelen tener atributos, mientras que las de multiplicidad 1:1 1:N no. Si la asociacin es 1:N es posible que el atributo pertenezca a clase del lado N, mientras que si la asociacin es 1:1 podra pertenecer a cualquiera de las dos. Restricciones de integridad: Tener datos errneos puede ser incluso peor que no tenerlos, y las restricciones de integridad ayudan a controlar la existencia de errores. En el diseo, no se tiene que descuidar su importancia, y sobre todo, no las tenemos que olvidar en el momento en que este diseo se implemente sobre un SGBD. Para implementar estas restricciones los sistemas actuales nos ofrecen distintas sentencias restrictivas en la creacin de tablas (unique, not null, check); el SQL/PSM permite definir disparadores, procedimientos, funciones y paquetes; SQL Host permite incluir sentencias SQL incluso en Java para hacer llamadas; y SQL/CLI tiene libreras de funciones para lo mismo. Sustitucin: Si las restricciones de integridad ralentizan el sistema, a veces se hace necesario liberar al SGBD de este trabajo para poder ofrecer un rendimiento adecuado; en este caso debemos tener algn tipo de control externo o, mejor an, un control diferido por ejemplo que pueda hacer todas las comprobaciones en horas de menos actividad (noches, fines de semana).

Comprobacin de instancias

12 Sistemas de gestin de bases de datos

3. REPRESENTACIN DE GENERALIZACIN/ESPECIALIZACIN Existe una especializacin disjunta si ninguna instancia de la superclase (A) est en ms de una subclase (B, C D); y una especializacin completa si toda instancia de la superclase est, al menos, en una de las subclases. Estos dos parmetros son fundamentales a la hora de decidirnos por cualquiera de las 3 alternativas que encontramos. La primera alternativa consiste en una tabla para cada una de las clases, donde la superclase contiene los atributos comunes y las tablas de las subclases los especficos a cada uno. sta suele ser normalmente la mejor opcin, porque es la ms flexible y la que se encuentra ms cercana al diseo conceptual. La segunda alternativa nos propone una tabla con Generalizacin/Especializacin todos los atributos de todas las clases; interesa si hay pocos atributos y no vamos a tener muchos valores nulos, es decir, interesa cuando la especializacin no es disjunta y es completa. La tercera opcin consiste en diferentes tablas para cada subclase que guarden tambin las columnas correspondientes a los atributos de la superclase. Slo interesa esta alternativa cuando la especializacin es disjunta y completa.

4. REPRESENTACIN DE ATRIBUTOS INSTANCIADOS EN DIFERENTES VALORES Es relativamente habitual encontrar atributos instanciados en varios valores al mismo tiempo, pero como sabemos la 1FN obliga a que estos atributos sean atmicos. Si por ejemplo queremos guardar en una base de datos distintas medidas para un aparato distinto aplicado a elementos diferentes, tenemos slo dos opciones: Guardar cada valor en una columna distinta de la tabla: Medida (clave, valor1, valor2, , valorn), Si escogemos esta opcin el nmero de valores (n) no debera ser muy grande y corremos el riesgo de tener muchos valores vacios. Tener una fila diferente para cada valor: Medida (clave, aparato, valor). As si el valor no est no es necesario guardar ninguna fila. La clave cambia y es menos natural. Con la primera opcin accedemos a los valores de un solo golpe, con esta ltima slo accedemos de manera sencilla a algunos valores seleccionados. El tratamiento de los atributos tambin es importante, porque funciones de agregacin como SUM, AVG se aplican al agrupar filas, pero no columnas.

5. ABRAZOS MORTALES DE DEFINICIN Y CARGA Tenemos dos tipos de abrazos mortales, al intentar crear tablas (de definicin) y al insertar datos (de carga). Los abrazos mortales de definicin tienen lugar cuando queremos crear dos tablas con claves forneas la una a la otra, lgicamente como la primera no est creada, la segunda no puede referenciarla y viceversa. Por ejemplo queremos crear la tabla departamento y la tabla empleados, y uno de los empleados tiene que ser el jefe del departamento; si creamos primero la tabla departamento no podemos referenciar al jefe dentro de los empleados porque no est creada, si creamos primero la de empleados no podemos referenciar a qu departamento pertenecen por la misma razn, la tabla a referenciar todava no existe. Hay dos soluciones: O bien creamos una tercera tabla independiente, que nos sirva para referenciarlas. Por ejemplo, creamos la tabla departamentos con su DeptId,

Sistemas de gestin de bases de datos 13

Solucin creando una tercera tabla

seguidamente la tabla empleados con clave fornea a esa tabla departamentos y en tercer lugar la tabla Jefe que hace referencia a las dos primeras. Esta otra solucin la proponen algunos SGBD en sus manuales, y consiste en crear una de las dos tablas sin clave fornea, luego la segunda, y luego volvemos a la primera y la modificamos incluyendo la clave fornea que habamos omitido. Desde luego es una solucin, pero nos encontraremos al insertar datos posteriormente con el abrazo mortal de carga.

El abrazo mortal de carga sucede al intentar cargar datos en el caso de que optemos por la segunda solucin anterior; si insertamos primero en una tabla violamos la restriccin de integridad, pero lo mismo ocurre si lo hacemos en la segunda, al referenciar un objeto que todava no existe en la otra tabla. Tambin hay dos soluciones posibles, por un lado desactivar las restricciones de integridad de alguna de las tablas, lo cual engendra un grave peligro pues cualquier proceso de otro usuario puede modificar la base de datos y dejarla inconsistente. Una solucin mucho mejor consiste en aplazar o diferir la comprobacin de las restricciones hasta el final de la transaccin, momento en el cual ya tendremos todas las instancias creadas en las dos tablas y cumpliremos las restricciones de integridad. No obstante es mejor evitar todas estas desactivaciones o aplazamientos en las restricciones diseando la solucin con la tercera tabla, pero si tenemos una base de datos ya creada no quedar ms remedio que poner en prctica estas soluciones.

6. SUSTITUTOS DE LA CLAVE PRIMARIA La clave primaria de una tabla siempre es motivo de problemas, hasta claves como el DNI que parecen nicos no lo son o no los posee toda la poblacin, as que en muchas ocasiones tampoco sirven. Para crear claves consistentes y, por supuesto, nicas hay dos sistemas: Clave artificial de sistema: Son claves que se generan automticamente y evitan que dos objetos en una misma tabla puedan tener la misma clave, lo cual las hace nicas pero ojo, dentro de una nica tabla, no dentro de toda la base de datos. Con el tiempo han evolucionado a identificadores de objeto que no se repiten nunca para ningn otro objeto nuevo est en esta tabla o en otra cualquiera. Clave artificial de usuario: Es el usuario el que define esta nueva clave.

Ambos tipos de claves suelen ser contadores que se incrementan y no estn concebidos para ser consultados, sino nicamente comparados con el objetivo de determinar la identidad de las instancias; las solemos utilizar cuando no hay una clave nica consistente, o cuando la clave primaria requiere demasiados atributos para su creacin.

7. FRECUENCIA DE PROCESOS Y VOLMENES DE DATOS Frecuencia de procesos Un punto esencial para un buen diseo de base de datos es considerar para qu se utilizarn y de qu forma, as podemos intentar favorecer los procesos que se realicen ms frecuentemente. Encontramos dos tipos de procesos crticos: los que se ejecutan con gran frecuencia y los que tienen como requerimientos un tiempo de respuesta mximo determinado (como podra ser un sistema de tiempo real). Las soluciones para reducir el tiempo de respuesta de los procesos pasan por implementar algoritmos de bsqueda determinados que favorezcan ese tipo de bsqueda frecuente, y en

14 Sistemas de gestin de bases de datos

general, realizar planes de ejecucin de consultas para encontrar qu paso consume ms tiempo y como lo podemos acortar. Volmenes de datos Cuando los datos crecen y los volmenes de las tablas son excesivos podemos fragmentarlas: Fragmentacin horizontal: Dividirla por filas, las tablas que se crean tienen el mismo nmero de columnas pero menos filas. El criterio para esta divisin pueden ser por rangos de valores, un algoritmo de distribucin aleatoria, una divisin por uso. Por ejemplo, este tipo de fragmentacin se utiliza geogrficamente cuando una gran empresa tiene distintas sedes y los clientes de cada sede se guardan en la tabla fragmentada de cada sede; as para consultar todos los clientes hay que hacer una join completa de las tablas fragmentadas que se encuentran incluso en pases distintos. En cualquier caso lo que interesa habitualmente es que las tablas fragmentadas tengan aproximadamente el mismo nmero de filas. Fragmentacin vertical: Ahora las nuevas tablas que se crean tienen menos columnas pero el mismo nmero de filas. Eso s, las columnas que constituyen la clave primaria deben replicarse en todas las tablas.

8. REDUNDANCIA DE DATOS: DUPLICADOS Y DERIVADOS La duplicacin de datos utiliza ms espacio del necesario para almacenar la informacin y puede crear problemas de inconsistencias en la BD, al tener datos repetidos que debemos actualizar tantas veces como se encuentren duplicados. No obstante, puede evitar operaciones de combinacin al no tener que buscar en distintas tablas datos dispersos (recordemos que la normalizacin obliga a crear nuevas tablas para evitar precisamente la redundancia de datos) y facilita al usuario la consulta del contenido de la base de datos; dado sus ventajas es un sistema que se utiliza, pero dado sus inconvenientes, de hacerlo, debemos documentarlo siempre para que todos los usuarios estn informados. Los datos derivados son otro tipo de datos que se pueden calcular fuera de tiempo, es decir, si un dato que es muy costoso de calcular y nos va a bloquear el SGBD durante un tiempo, se puede calcular en otros momentos previos y almacenarlos a la espera de la peticin del usuario. Eso s, si el dato cambio muy a menudo y slo se consulta de vez en cuando, no es candidato a ser almacenado.

9. HISTRICOS Si queremos reflejar en la base de datos el paso del tiempo, no basta con guardar un nico valor para cada dato, sino que tenemos que almacenar todos los valores que toma a lo largo del tiempo, junto con el tiempo de validez y transaccin de cada valor. EN este caso, una modificacin no sobrescribe los datos, sino que aade otros nuevos. Fsicamente no borramos nada y las tablas crecen en cada operacin; incluso el hecho de borrar una informacin aade datos, ya que realmente no borra, sino que registra el momento en que la informacin ha dejado de ser vlida. Estos histricos ocupan muchsimo espacio en la base de datos y no queda ms remedio que prever mecanismos de vaciado peridico, como pasar datos a cinta e incluso a papel. Aparte de problemas de espacio tenemos problemas con las restricciones de integridad. Con el paso del tiempo, el cambio de las leyes o incluso nuestros mismos criterios, algo que antes no era vlido ahora s lo va a ser y viceversa; lo cual cambia las reglas segn el momento en que nos encontremos.

Sistemas de gestin de bases de datos 15

TEMA 4 EL COMPONENTE DE PROCESAMIENTO DE CONSULTAS Y SQL

Tema 4 El componente de procesamiento de consultas y peticiones SQL 1. La seguridad 2. El procesamiento de vistas 3. El procesamiento de consultas 4. El control de concurrencia

1. LA SEGURIDAD El concepto seguridad integra distintos aspectos: Confidencialidad: Solo puede leerse la informacin por parte de los usuarios autorizados a ellos. Integridad: Debe protegerse la informacin de modificaciones no autorizadas. Disponibilidad.

Las violaciones de las bases de datos consisten en la liberacin incorrecta de la informacin, modificacin impropia de los datos o denegacin de servicios. A su vez las amenazas se pueden clasificar en: Amenazas no fraudulentas: Son accidentes casuales, como desastres naturales, errores en el hardware o software o errores humanos. Amenazas fraudulentas: Son violaciones intencionadas causadas por usuarios autorizados que abusan de sus privilegios o agentes hostiles.

Los mecanismos bsicos que vamos a estudiar de seguridad son la identificacin y autenticacin, el control de acceso, la integridad y consistencia y la auditora. La identificacin implica la mera en que un usuario proporciona su identidad al sistema, mientras que la autenticacin es el proceso de asociar a un individuo con su identidad nica. Los recursos de identificacin suelen ser cosas que una persona conoce (contrasea), cosas que una persona posee (tarjeta o clave) o cosas que caracterizan a una persona (huella dactilar, pupila). Para validar o autenticar a un usuario podemos hacerlo mediante el propio SGBD, mediante el sistema operativo, por un servicio de red o por una capa intermedia. Se denomina control de acceso a la parte del SGBD que tiene la funcin de asegurar que los accesos al sistema estn de acuerdo con los modelos y las reglas fijados por la poltica de proteccin. Este control est formado por dos componentes: las polticas de acceso (principios segn los cuales se autoriza, deniega o filtra el acceso a un usuario) y los mecanismos de seguridad (procedimientos para cumplir las polticas anteriores). Las distintas polticas se pueden clasificar en discrecionales o de acceso obligatorio. Se denominan polticas discrecionales a las basadas en el conocimiento de los derechos de cada usuario sobre cada objeto; as en una tabla usuario/objeto podemos definir roles a los que pertenece cada usuario y que le dan derecho o no a leer/escribir/borrar determinados objetos o vistas. Las polticas de acceso obligatorio se basan en la idea de que cada dato tiene un nivel de clasificacin determinado y cada usuario un nivel de acreditacin, para que un usuario pueda acceder a un dato debe tener un nivel de acreditacin igual o superior al nivel de clasificacin del dato en cuestin. El control de acceso discrecional en SQL se permite con las clusulas GRANT<privilegios> TO <autorizados> a las que se aade WHIT GRANT OPTION (que permite pasarle los mismos privilegios a otros usuarios). Para revocar estos permisos usamos REVOKE <privilegios> TO <autorizados> seguido de RESTRICT o CASCADE, si queremos que los usuarios a los que el que vamos a quitar el permiso mantengan los permisos o no. La auditora se utiliza normalmente para la investigacin de una actividad sospechosa o para la monitorizacin y recogida de actividades especficas de la base de datos. El sistema debe ser capaz de auditar sentencias concretas, objetos

16 Sistemas de gestin de bases de datos

concretos, sentencias sobre objetos (mezcla de las dos primeras) y a usuarios o grupos determinados. Algunos SGBD incorporan sentencias SQL que permiten generar una auditora de manera declarativa. De no ser as, deberemos crear disparadores (triggers) para que realicen esta funcin y vayan llenando las tablas de auditora conforme se producen acontecimientos registrables. La Ley Orgnica de Proteccin de Datos de Carcter Personal de 1999 establece 3 niveles de seguridad segn el tipo de datos que se contengan: Nivel bsico: Requiere medidas de autenticacin y control de acceso a estos ficheros personales. Nivel medio: El administrador debe elaborar un catlogo sobre las medidas de seguridad genricas y se deben implantar mecanismos seguros de autenticacin remota. Nivel alto: Es necesario usar mtodos criptogrficos para evitar que los datos sensibles sean inteligibles, y los datos relativos a ideologa, creencias, origen racial, salud, vida sexual, etc, son susceptibles de ser protegidos en este nivel.

2. EL PROCESAMIENTO DE VISTAS Las vistas son relaciones virtuales que slo estn representadas por su nombre y su definicin; no existen fsicamente en la base de datos sino que se crean en el momento que un usuario la utiliza. Por ejemplo se pueden crear la siguiente vista sobre una tabla departamento y una tabla empleado:
CREATE VIEW Vista1 AS SELECT nombre, FechaAlta, salario, categorio FROM empleado WHERE categora NOT IN (Presidente, Directivo)

Hay dos estrategias fundamentales para implementar las vistas: reescribir la consulta o materializarse la vista. La ms utilizada es la primera la reescritura, segn la cual la consulta se repone de manera que haga referencia a las tablas de la base de datos. Con la materializacin cuando se hace la consulta se crea una tabla temporal con el contenido fsico de la vista. En el primer caso cuando se hacen varias consultas seguidas o una sola pero compleja sobre la vista, la consulta se vuelve muy ineficiente; con la materializacin podemos hacer varias consultas sobre una misma tabla seguidas no teniendo as que crearla cada vez, pero su desventaja es que la actualizacin de la tabla temporal puede ser bastante costosa si cambian muchos datos en las tablas de las que se origina. Otro detalle importante de las vistas es la actualizacin. Una vista siempre puede consultarse, pero no siempre puede actualizarse, concretamente slo es posible esta ltima accin si la vista est construida sobre una nica tabla y los atributos de la vista contienen una clave candidata de la original; las vistas definidas sobre ms de una tabla no suelen ser actualizables, y las vistas que incluyen clusulas GROUP BY o funciones no agregadas nunca son actualizables. Para romper esta dificultad en la actualizacin de vistas, existen los llamados disparadores de sustitucin, que se activan en lugar del mandato que ha provocado el disparo y siempre tienen que estar definidos a nivel de fila; estos disparadores permiten efectuar modificaciones sobre vistas que no son actualizables. Una ventaja ms de las vistas es utilizarlas como elemento de diseo externo. SI tenemos varias aplicaciones que tienen que acceder a determinados datos de las tablas, en lugar de presentarles directamente las tablas, podemos crearles vistas particulares (si ya incluimos disparadores de sustitucin mejor que mejor) y cada aplicacin creer tener una base de datos diseada a medida.

Sistemas de gestin de bases de datos 17

Las tablas derivadas son tablas que tienen existencia fsica, ocupan por tanto lugar en la base de datos, pero se calculan a partir de las tablas bsicas. Por ejemplo, en un supermercado podramos crear la tabla derivada con las ventas por cada seccin, esta tabla se creara a partir de los cdigos de los productos, el precio, las secciones, etc y no sera necesario crearla cada vez que hiciramos una consulta; se supone que creamos esta tabla derivada porque la utilizamos mucho y no queremos calcularla cada vez que la necesitamos. Ahora bien, debemos decidir cuando se produce la actualizacin de esta tabla y de que forma: Tiempo de actualizacin: Puede ser ON COMMIT, es decir cada vez que se confirme una transaccin que modifique alguna de las tablas maestras que dan lugar a la tabla derivada, u ON DEMAND, slo cuando el usuario lo solicite. Forma de actualizacin: COMPLETE (completa), FAST (rpido, refresco incremental), FORCE (aplica el refresco rpido si es posible, y si no un refresco completo) o NEVER (nunca).

Las tablas temporales son aquellas en las que el contenido tiene vigencia dentro de una sesin (o una transaccin) y desaparece en el momento en que sta finaliza. Son muy tiles para almacenar resultados intermedios de una transaccin. En definitiva, las ventajas y desventajas de la utilizacin de vistas son las siguientes: Independencia de datos y de aplicaciones: al utilizar las vistas como interfaz de la aplicacin, se llega a la independencia completa respecto a las tablas originales. Simplificacin de uso para el usuario: Bien combinadas, las vistas nos permiten realizar consultas complejas de forma sencilla y transparente. Mejora de la seguridad: El usuario desconoce las tablas originales por lo que no puede tan siquiera intentar acceder a ellas. Integridad de los datos: con la clusula WITH CHECK OPTION el usuario no puede llevar datos fuera de los lmites que tiene marcados y los cambios que realice dejarn siempre la vista y, por tanto, las tablas, en estado consistente. Rendimiento: Podemos realizar caminos de acceso rpido a las consultas ms frecuentemente realizadas.

Como desventajas tenemos: Restricciones de actualizacin: No todas las vistas son actualizables y a menos que usemos disparadores de sustitucin, no podemos hacer un diseo externo solo con vistas. Restricciones de estructura: Algunos SGBD siguiendo normas ISO no permiten construir vistas a partir de cualquier consulta.

3. EL PROCESAMIENTO DE CONSULTAS El procesamiento de consultas est formado por una serie de subprocesos (ver imagen en la pgina siguiente) de anlisis, traduccin y optimizacin que se ejecutarn de manera secuencial. Primero se comprueba la validez lxica (faltas de ortografa), despus la validez semntica (si los objetos de los que se habla en la consulta son vlidos o no), ya se hace entonces la primera optimizacin semntica; el resultado se transforma en la expresin relacional correspondiente, llamada plan de ejecucin o rbol de consulta lgico. A partir del primer rbol empieza la optimizacin sintctica, que consiste en transformar de modo heurstico la expresin relacional original en otra equivalente que sea mucho ms eficiente; podemos entonces utilizar optimizadotes fsicos basados en costes o heursticos, y por fin se genera el cdigo para la consulta.

18 Sistemas de gestin de bases de datos

Por tanto, los pasos a seguir son los siguientes:

Procesamiento de consultas

Optimizacin semntica: Se accede al diccionario de datos y se comprueba que todas las columnas y tablas que aparecen en la consulta existen, y que el usuario tiene derecho sobre ellas. Se tienen por tanto en cuenta las leyes de la lgica y las restricciones de integridad propia de las tablas. As por ejemplo si pedimos una consulta en la que los empleados tienen un salario > 400; y por restricciones de integridad en nuestra tabla todos los empleados tienen un salario por encima de 500, la consulta se convertir en buscar todos los empleados; o por ejemplo buscar los empleados con sueldo >500 y a la vez sueldo <300 no llegara a ejecutarse. Optimizacin sintctica: Se tiene ahora que traducir la consulta a algn lenguaje interno lo bastante rico para representar cualquier tipo de consulta y lo bastante neutral para no predisponer a ninguna estrategia de implementacin. Se transforma la consulta en SQL (no procedimental) a una consulta en lgebra relacional (procedimental). Normalmente el traductor genera un plan lgico correcto pero sin ningn tipo de mejora, normalmente o tenemos una serie de bloques conectados por conectores AND o por la disyuntiva OR. Por tanto interviene un nuevo factor: Planes de consulta lgicos equivalentes y mtodos heursticos: Hay muchas reglas para transformar una consulta relacional en otra equivalente, y en general hay una serie de reglas heursticos (basado en aquello que suele pasar, aunque a veces, si nos salimos de la normalidad, da resultados impredecibles): o Primero hacer las operaciones de seleccin, pues reducen la cardinalidad del resultado intermedio. Si sobre una relacin hay que aplicar ms de una seleccin, se utilizarn propiedades conmutativas para conseguir llevarlas a cabo todas a la vez. As estas operaciones de seleccin tienen que estar lo ms abajo posible en el rbol del plan de consulta lgico. o Despus realizar las operaciones de proyeccin. o Utilizar la asociatividad de operaciones binarias (combinacin, unin, interseccin) para elegir la operacin que d el resultado de cardinalidad ms pequeo y realizarlo primero, de manera que la operacin siguiente sea menos costosa de realizar. o Si hay una expresin comn en distintas partes del rbol, realizar la operacin una nica vez. Implementacin fsica de los operadores relacionales: Se tiene que transformar un plan lgico de consultas en un plan de consultas fsico; y para estimar el coste de los algoritmos, es necesario que el SGBD guarde una informacin estadstica de cada tabla (el nmero de filas, el nmero de filas que caben en una pgina, el nmero de pginas requeridas para guardar, y la medida en bytes de una fila de la tabla) y de cada atributo (nmero de valores distintos de cada atributo, valor ms pequeo y valor ms grande de cada atributo y cardinalidad de la seleccin del atributo es el nmero medio de filas que cumplen una condicin de igualdad-). A cada operacin fsica se le asigna un coste, y dado el abaratamiento del hardware hoy da, el coste principal ser el tiempo. As tenemos: o Operaciones de ordenacin: Si toda la tabla cabe en la memoria principal, el coste es mnimo, solo es necesario leerla y la ordenacin se hace por cualquier mtodo clsico. Cuando la tabla no cabe toda en la memoria principal, se acostumbra a utilizar un algoritmo de ordenacin externa utilizando la memoria de forma temporal. o Operaciones de seleccin: Se puede realizar una bsqueda lineal o una bsqueda binaria (se examina primero la posicin central de la tabla en ficheros ordenados y a partir de ah buscamos la posicin central de la

Sistemas de gestin de bases de datos 19

mitad de la tabla en la que estar el dato, y as sucesivamente). ste ltimo caso permite an en el pero de los entornos, una bsqueda 25 veces ms rpida que la lineal. Ahora, si el atributo por el que buscamos es una clave candidata, todo ser ms rpido, o le podemos poner tambin un ndice secundario si no es una clave candidata. o Operaciones de proyeccin: Involucra dos operaciones eliminar los atributos no deseados y eliminar las filas repetidas que se han generado, en caso de que existan claro. o Operaciones de combinacin: Son las que ms tiempo consumen durante el procesamiento de consultas y por lo tanto, marcarn la eficiencia global del SGBD. Hay varias opciones: combinacin de ciclo anidado (para cada fila de una tabla exterior se obtienen todas las filas de la tabla interior y se comprueba cules cumplen la condicin; en este caso es mejor que la tabla exterior se haga sobre la tabla ms pequea, da mejor resultado; combinacin de ciclo anidado indexado (vara de la anterior en que en la tabla interior se va directamente a la pgina adecuada mediante un ndice de acceso);combinacin por ordenacin por fusin (si las 2 tablas estn ordenadas es la ms eficiente, puesto que solo hay que leer de forma secuencial cada una de las tablas y aadir a los resultados aquellos valores que coincidan) y combinacin por dispersin (se utiliza una funcin de asociacin hash, para dividir las dilas de las dos tablas en conjuntos que tengan el mismo valor de la funcin de asociacin, con lo que vemos que de la funcin depende el buen hacer de este mtodo). Optimizacin fsica: Se dedica a hacer que los planes de consulta lgicos se lleven a cabo de la mejor manera posible. Existen dos grandes tipos de algoritmos de optimizacin que se pueden usar: optimizacin heurstica y basada en costes. o Optimizacin fsica heurstica: Se aplican una serie de recetas que normalmente dan buenos resultados y que en la mayora de ellos permiten conseguir resultados satisfactorios. Su principal defecto es que a veces el plan propuesto difiere bastante del ms ptimo. Como sabemos que hay operaciones ms costosas y menos costosas, el SGBD tiene un orden de prioridades para la realizacin de cada una de ellas y, como decimos, en los casos ms frecuentes, da buen resultado. o Optimizacin basada en costes: Slo hay que construir un conjunto con todos los posibles planes de ejecucin fsicos, calcular el coste de cada uno de ellos y escoger el de menor coste. Como vemos siempre tendremos el plan ms ptimo, pero hay un problema: para calcular los costes de los distintos planes, hay que tener suficiente informacin sobre tablas, atributos, cardinalidades, que varan constantemente en la base de datos, y el tener esta informacin actualizada es fundamental. o El encarrilamiento consiste en aprovechar la salida de una operacin como entrada de otra, de forma que nos ahorramos la creacin de resultados intermedios en disco (materializacin) y se suele utilizar para ahorrar un tiempo precioso de escritura/lectura. Tambin con el actual abaratamiento de las memorias, muchos optimizadores materializan las tablas intermedias directamente en la memoria, con lo que se consigue una eficacia parecida a la del encarrilamiento.

4. EL CONTROL DE CONCURRENCIA Recordemos los problemas de concurrencia que tenamos en una base de datos: Actualizacin perdida: Cuando una operacin posterior cambia un dato que una operacin anterior acababa de actualizar, pero ya se ha perdido porque estaban editando al mismo tiempo.

20 Sistemas de gestin de bases de datos

Lectura no confirmada: Antes de que se confirme un dato, otra transaccin ya ha ledo esos datos que despus han sido cancelados. Lectura no repetible: En la lectura del mismo dato, en dos ocasiones da diferentes resultados.

Estos problemas lo solucionbamos con la seriabilidad: las diferentes transacciones se han de poder ejecutar de forma concurrente, pero su efecto final sobre los datos tendr que ser el mismo que si se ejecutasen en serie. Los mtodos que explicamos a continuacin son optimistas, es decir, presuponen que hay muchos datos para leer y por tanto es difcil (aunque no imposible) que exista alguna incompatibilidad, en ese caso slo en el momento de escribir se aseguran de que no hay tal incompatibilidad. Control de concurrencia basado en marcas temporales Consiste en asignar una marca temporal (MT(T)) antes de que se empiece a ejecutar una transaccin T. Estas marcas son nicas y se asignan en orden ascendente, de manera que cualquier transaccin posterior deber cumplir que MT(T)>MT(T). As por ejemplo, si una transaccin T1 con M=21.623 quiere leer el elemento X pero otra transaccin T2 con M=25000 lo ha escrito, debe deshacer su operacin de lectura. En general, para que no se produzcan los problemas descritos anteriormente, el planificador podr tomar cualquier peticin de lectura o escritura por parte de una transaccin y autorizar la peticin, abortarla y recomenzarla con una nueva marca temporal o detenerla y, ms tarde, decidir si la aborta o autoriza. Control de concurrencia por validaciones Es una implementacin especial del caso anterior, en la que el planificador mantiene informacin sobre las transacciones. Para cada una guarda un conjunto de transacciones, un conjunto de lectura de transacciones con todos los datos de la BBDD que tendr que leer y otro conjunto de escritura de transacciones con todos los que tendr que escribir. Las transacciones tendrn 3 fases: Lectura: Se lee de la base de datos toda la informacin que falta, se hacen todos los clculos y se guardan los resultados en la memoria. Validacin: El planificador comprueba si puede escribir en la base de datos los resultados que tiene en la memoria sin producir problemas de incompatibilidades; compara los conjuntos de lectura y escritura con los de las transacciones actuales; si no hay problema pasamos a la siguiente fase, sino, reiniciamos la transaccin. Escritura: Los resultados que se guardan en memoria se escriben en la base de datos.

Control de concurrencia multiversin Las estrategias se basan en detener o deshacer la ejecucin de la transaccin iniciada que provoca problemas, ahora vamos a mantener varias versiones de los datos; cuando se vaya a escribir, el planificador debe saber cual es la versin adecuada. Existen a su vez dos sistemas: Control por marcas temporales: Este mecanismo es muy eficiente para sistemas con muchas ms lecturas que escrituras. Se asignan adems de las marcas temporales habituales, a cada elemento una secuencia de versiones formadas por el valor de la versin j del grnulo determinado, la marca temporal de la transaccin que haya creado la versin y la mayor de las marcas temporales de todas las transacciones que han ledo con xito la versin j. Dependiendo de si tiene que leerse o escribirse hay un algoritmo: o Si la marca temporal de la transaccin T es menor que la marca temporal de la transaccin que ha creado esa versin, entonces se deshace la transaccin T. o Si la marca de tiempo es igual, entonces se puede escribir el contenido de la versin.

Sistemas de gestin de bases de datos 21

Compatibilidad de la reserva de certificacin Lec. Escr. Cert. Lec. S S No Escr. S No No Cert. No No No

Si la marca de tiempo de la transaccin T es mayor que la marca de tiempo de la transaccin que ha creado esa versin, entonces se crea una nueva versin. Luego obviamente hay que eliminar las versiones innecesarias, solo debe mantenerse la ltima de las versiones que sea ms antigua que la ms antigua de las transacciones del sistema. Todo este Control por reserva de doble fase: Cada grnulo de informacin puede tener adems de las reservas de lectura y escritura clsicas, una reserva de certificacin que es incompatible con cualquier otro tipo de reservas. Para aplicar este mtodo adems hay que tener dos versiones de cada grnulo. Una nica versin puede tener una reserva de lectura sobre un grnulo X; mientras que muchas otras lo pueden leer. Para que no haya problemas de concurrencia, ha de haber dos versiones de X, una que tendr que haber sido escrita por una transaccin confirmada, y otra por la transaccin que haya hecho la reserva de escritura; cualquiera de las transacciones que quiera hacer una lectura, con reserva previa, leer la versin confirmada; la transaccin que ha hecho la reserva de escritura podr efectuar todos los cambios que desee sobre su versin de la informacin sin que eso provoque ningn tipo de problema a las otras transacciones. Cuando la transaccin con reserva de escritura quiera confirmar (COMMIT), antes tendr que obtener una reserva de certificacin, que no es compatible con la de lectura, y por lo tanto, esperar que todas las transacciones que hacen lecturas liberen el recurso. Con esta reserva varias transacciones pueden leer un dato que ya ha sido reservado para ser modificado, pero que ste transaccin de modificacin debe esperarse, es el nico pago por este sistema. o

22 Sistemas de gestin de bases de datos

TEMA 5 EL COMPONENTE DE GESTIN DE LOS DATOS

1. PRDIDA DE DATOS POR ERRORES O FALLOS Tanto por un error de hardware (corte de corriente elctrica) como por error de software (mal proceso en la ejecucin de transacciones), se pueden producir prdidas de informacin en una BD. Recordemos que la propiedad de atomicidad (todos los cambios de la transaccin se efectan, o no se lleva a cabo ninguno) y durabilidad (todos los cambios producidos por una transaccin confirmada son permanentes) obligan a llevar a cabo una serie de acciones para garantizar que efectivamente la base de datos contiene informacin correcta. Existen dos tcnicas de recuperacin de datos: Tcnicas de reconstruccin: debemos ejecutarlas cuando existen errores en los dispositivos de almacenamiento. Tcnicas de restauracin: tcnicas de hacer y deshacer que debemos ejecutar cuando el error se ha derivado por un problema de software.

Tema 5 El componente de gestin de los datos 1. Prdida de datos por errores o fallos 2. Arquitectura del componente de gestin de los datos 3. Restauracin 4. Reconstruccin

El componente de gestin de los datos que tienen todos los SGBD, ha de servir cualquier peticin de lectura y/o escritura; adems debe encargarse de ejecutar las acciones que aseguran que la BD sea correcta (restauraciones y reconstrucciones) de la manera ms simple, rpida y automtica y evitando la intervencin humana en la medida de lo posible. Para que estas recuperaciones puedan efectuarse, debemos contar con elementos como el diario y las copias de seguridad.

2. ARQUITECTURA DEL COMPONENTE DE GESTIN DE LOS DATOS Recordemos que no todos los cambios que se producen en la base de datos, pasan directamente a los ficheros de la misma, sino que en muchas ocasiones se utiliza la memoria intermedia por la rpida velocidad de actuacin y luego, ms adelante, estos cambios se harn consistentes escribindolos en los ficheros de la base de datos. La unidad mnima de lectura/escritura en la memoria intermedia es una pgina de disco de la base de datos. Para saber qu pginas hay en la memoria intermedia se dispone de un directorio, pero adems contamos con 3 bits muy importantes: Bit de cambiado: indica si la pgina que hay en la memoria intermedia se ha cambiado con una operacin que todava no se ha actualizado en los ficheros de la base de datos. Si el bit est a 1 significa que hay cambios. Bit de clavar/desclavar: permite fijar una pgina en la memoria intermedia. SI est a 1 la pgina permanecer en la memoria intermedia, si est a 0 implica que puede ser sustituida por otra si la memoria est llena. Bit de identificador de pgina: Est a 0 si la pgina de la memoria intermedia est vaca. Si contiene una pgina est a 1 (independientemente de si est clavada, desclavada, cambiada o no).

El gestor de la memoria intermedia recoge o lleva la pgina a la memoria intermedia, o la descarga en la base de datos. Cuando se descarga una pgina de la memoria a la base de datos, lo primero que se hace es asegurarse que se ha llevado correctamente al fichero de la base de datos; si la pgina tiene el bit de cambiado a 0 no se escribe en la base de datos, escribindose si el bit de cambiado est a 1; una vez descargada se cambia este bit a 0, se actualiza la entrada con el bit de identificador de pgina a 0 para indicar que queda espacio vaco en la memoria intermedia. En la operacin de recoger o llevar una pgina a la memoria intermedia primero se tiene que buscar un espacio libre en la memoria, si todos los bits de identificador de pgina estn a 1, se escoge de entre las que no estn clavadas una

Sistemas de gestin de bases de datos 23

unidad que se pueda descargar (mediante la tcnica del menos usado recientemente o FIFO first in, first out); con un espacio libre en la memoria, se lee fsicamente la pgina correspondiente actualizndose el directorio y se escribe el contenido en la memoria. Tambin hay que tener en cuenta que cuando se descarga una pgina se puede descargar una nica versin por cada pgina o tener distintas versiones en la memoria intermedia de la misma pgina. Si guardamos una nica versin tenemos lo que se llama actualizacin en el lugar; en cambio si tenemos varias, contamos con una tcnica de sombreado. El diario de operaciones almacena la informacin de los cambios de manera conveniente para que el gestor de recuperacin pueda recuperar un estado consistente de la base de datos. Conceptualmente se trata de una representacin de la historia de ejecucin de las transacciones. Es imprescindible que se almacene, como mnimo, una anotacin en el diario siempre que una transaccin confirme, aborte o modifique algn dato. Cada anotacin debe contener el identificador de la transaccin a que pertenece la operacin, el tipo de operacin, un puntero a la anotacin guardada correspondiente a la operacin anterior de la misma transaccin e informacin adicional para la operacin de modificacin. Se pueden llevar dos tipos de diarios: el fsico y el lgico. ste ltimo guarda la descripcin de las operaciones de alto nivel que se han llevado a cabo sobre los datos, requiere menos anotaciones que el diario fsico pero es ms complejo llevar a cabo una recuperacin con l; por ello la mayora de SGBD utilizan el diario fsico. ste tipo de diario hace constar el valor que se ha escrito en la base de datos en cada anotacin correspondiente a una modificacin. Este diario fsico dispone de la informacin necesaria para deshacer cambios provocados por transacciones que no se han confirmado (el valor que tena el dato antes del cambio) y la informacin necesaria pare rehacer cambios de transacciones confirmadas que no han llegado a guardarse en la base de datos. Por supuesto, para que el diario resulte funcional, antes de escribir un cambio en la base de datos, se anota primeramente en el diario, de no ser as, no se deja escribir en la base de datos. Un diario no tiene un espacio ilimitado de escritura; es un fichero con principio y fin, pero con un apuntador en el fin que seala al inicio de manera que se sobrescribe. Entonces podemos pensar qu pasa con las operaciones sobrescritas? si se escriben los cambios desde el inicio de la base de datos, cuantos cambios hay que hacer si se produce algn error para volverla a dejar consistente? Para resolver las dudas anteriores, existen los puntos de control, que hacen lo siguiente: Suspenden temporalmente la ejecucin de las transacciones aunque dejan terminar las que estn iniciadas. Vuelcan todas las unidades de memoria intermedia con bit de cambiado a 1 a la base de datos. Escriben una anotacin en el diario de que se ha realizado un guardado consistente de la base de datos. Se vuelve a permitir la ejecucin de transacciones.

Estos puntos de control vienen realizndose cada 15 minutos y es a partir de ellos, desde los que podemos sobrescribir de nuevo los datos del control del diario, pues ya no son necesarios. Otros SGBD realizan puntos de control no con transacciones acabadas, sino con operaciones acabadas (dentro de transacciones mayores), en este caso hay que guardar en la anotacin de diario las operaciones que conforman toda la transaccin y desestimar ya todo el resto que no ser necesario si hay que llevar a cabo una recuperacin de datos.

24 Sistemas de gestin de bases de datos

3. RESTAURACIN El gestor de restauracin ofrece 5 operaciones: leer, escribir, confirmar, abortar y reiniciar (esta ltima se ejecuta de manera automtica siempre que se reinicia el sistema). Segn la manera en que las unidades de la memoria intermedia se asignan a las transacciones y del momento en que las pginas almacenadas se descargan en las unidades de la memoria intermedia, hay 4 modalidades de trabajo en el gestor de restauracin, que debemos tomar dos a dos: Tomar: Cualquier transaccin se deja tomar prestada cualquiera de las unidades de la memoria intermedia que tiene asignadas cuando otra transaccin las necesita, aunque la transaccin est todava activa. Obviamente antes de que se tome una nueva pgina, la que se est usando debe ser descargada, aunque los cambios no se hayan confirmado por lo que hay que tener prevista que sea necesario deshacer los cambios provocados por este efecto (si fuese necesario). No tomar: Ninguna transaccin puede disponer de las unidades de memoria intermedia ocupadas por otra transaccin activa, lo cual asegura que nunca ser necesario deshacer cambios. Eso s, requiere un nmero de unidades de memoria intermedia superior que en la modalidad tomar. Obligar: Obligamos a que se descarguen las unidades de memoria intermedia cuando una transaccin se ha confirmado, quedando ms espacio libre en la memoria intermedia y asegurndonos que nunca ser necesario rehacer ningn cambio. No obligar: No obligamos a que se descarguen las unidades de memoria intermedia cuando ha finalizado una transaccin, nicamente marcamos a 0 el bit de cambio. Hace falta por tanto prever la necesidad de tener que rehacer cambios que se hayan perdido. Eso s, se eliminan las descargas innecesarias de pginas dado que slo se eliminan cuando hay necesidades de pginas nuevas, minimizando as el nmero de entradas/salidas.

Modalidad tomar/no obligar Aunque esta modalidad requiere tanto de los mecanismos de deshacer como los de rehacer, son los que se utilizan con ms frecuencia en los SGBD, porque aunque son ms complejos de restaurar, es la modalidad que mejor minimiza los recursos, tanto con respecto a la cantidad de memoria destinada a memoria intermedia, como al nmero de entradas/salidas que general al recoger y descargar las pginas fsicas. Contamos con que la memoria intermedia descarga las pginas con la estrategia de actualizar en el lugar, utilizamos un diario fsico y los cambios se realizan con acciones acabadas (no transacciones). Para leer solo hay que obtener el contenido de la pgina despus de asegurarnos de que est recogida en una unidad de memoria intermedia. Para escribir despus de asegurarnos de que la pgina est recogida en la unidad de memoria intermedia y antes de que se modifique, en el diario se escribe la anotacin correspondiente; y tras modificar el contenido en la memoria intermedia, se actualiza el bit de cambiado a 1, para conseguir almacenar fsicamente la pgina en el momento en que sta se descargue. Al abortar se tienen que deshacer los cambios que hubiera generado, dado que la modalidad tomar podra reflejar algunos cambios fsicos sin haber confirmado la transaccin; as se tiene que recorrer el diario en sentido contrario hasta la ltima anotacin de la transaccin (que es lo primero que se anot), de manera que se puedan restaurar todos los estados de antes del cambio de las pginas modificadas por la transaccin abortada. Como antes, es indispensable actualizar el bit de cambiado a 1 para que en el momento que se descargue la pgina su valor se almacene fsicamente. La operacin de reiniciar se encarga de restaurar un estado consistente (correcto). Es preciso que deshaga los cambios producidos por transacciones que no han confirmado y se haban almacenado ya en la BD (tomar) y que rehaga (no

Sistemas de gestin de bases de datos 25

obligar) los cambios producidos por transacciones que se han perdido a pesar de haberse confirmado. Esta reiniciacin tiene 5 acciones: Inicializar MI y listas de transacciones: Se inicializa la memoria intermedia para que de informacin de antes del fallo, se inician a vaco las listas de transacciones que han confirmado y las que han abortado, dado que son esenciales para el procedimiento reiniciar. Deshacer hasta el ltimo punto de control: Hay que deshacer todos los cambios producidos por transacciones que todava no haban confirmado en el momento en que se ha producido el fallo, o bien por transacciones que se han abortado voluntariamente. Se tratan las anotaciones desde el final del diario hasta el ltimo punto de control. Deshacer complementaria: Al leer la anotacin correspondiente al punto de control, se obtiene la lista de transacciones que estaban activas en el momento de la aplicacin de dicho punto de control. Con esta lista y la lista de transacciones abortadas que se han ido construyendo, se deduce el conjunto de transacciones que no se haban acabado de ejecutar. Rehacer: Se rehace desde el ltimo punto de control, todos los cambios producidos por las transacciones que haban confirmado antes de que se produjera el fallo. Anotar Punto de control: Se registra una anotacin de punto de control en el diario, de manera que quede constancia de que la BD es consistente en aquel punto. Modalidad no tomar/no obligar Slo se tiene que prever la necesidad de rehacer los cambios de transacciones confirmadas que se hayan perdido, dado que utiliza el modelo no tomar en ninguna circunstancia habr que hacer modificaciones. Para leer es igual que el modelo anterior, pero despus de recoger la pgina hay que clavarla (se pone el bit a 1) dado que trabajamos ahora con la modalidad no tomar. Para escribir en caso de que la pgina se tenga que recoger, se clavar igual que en la operacin leer; en la anotacin del diario no habr falta registrar el estado de antes del cambio de la pgina modificada, pues no ser necesario modificarla. Para confirmar tampoco hay que descargar las unidades de memoria intermedia, pero s que hay que desclavarlas, anotando el registro en el diario. Para abortar no hay que deshacer nada, como ya dijimos. Para reiniciar como solo hay que rehacer, pero no deshacer, de las 5 operaciones de la modalidad anterior, la accin inicializar memoria intermedia y listas de transacciones ser igual, de la accin deshacer hasta el ltimo punto de control slo se leer el diario hacia atrs para localizar el ltimo punto de control y a partir de ah identificar las transacciones que haban confirmado antes del fallo. La accin deshacer complementaria es innecesaria y las otras dos ltimas sern iguales que en la modalidad anterior. Modalidad tomar/obligar Slo deben prever la necesidad de deshacer cambios, pero no rehacer, dado que utilizan la modalidad obligar. Por tanto la operacin de leer coincide con el mismo procedimiento que en tomar/no obligar; la operacin escribir coincide con la modalidad tomar/no obligar; la operacin confirmar obliga a descargar las unidades de la memoria interna asignadas a la operacin que confirma. Para abortar es lo mismo que en tomar/no obligar. Para reiniciar como slo hay que deshacer, todo ser idntico a la modalidad tomar/no obligar, excepto la fase rehacer que no resulta necesaria. Modalidad no tomar/obligar No tienen que deshacer ni rehacer ninguna modificacin. Para leer es lo mismo que en no tomar/no obligar; para escribir hace falta clavar la pgina igual que en leer, y en la anotacin del diario no habr que registrar el cambio de estado, pues no

26 Sistemas de gestin de bases de datos

habr que deshacer ni que rehacer. Para confirmar hay que descargar las unidades de memoria intermedia asignadas a la transaccin que confirma y despus registrar la anotacin correspondiente al diario, igual que en tomar/obligar. Debemos aplicar la tcnica de sombreado para garantizar que la descarga sea atmica, por lo que esta modalidad de gestin es inviable si la descarga de memoria intermedia se hace segn la tcnica de actualizar en el lugar. Como esta tcnica de sombreado proporciona un espacio fsico diferente para cada cambio (directorios de pginas) y el valor que la pgina tena antes de modificarla se mantiene, utilizaremos diversos directorios para cada una de las versiones que mantengamos; desestimar los cambios producidos por una transaccin que no ha podido confirmar, consiste simplemente en desestimar el directorio nuevo y volver al anterior directorio y pginas sombra.

4. RECONSTRUCCIN El gestor de reconstruccin incluido en el gestor de recuperacin es el encargado de aplicar las tcnicas de reconstruccin siempre que se produzca una prdida parcial o total de la base de datos por errores en alguno de los componentes de hardware. En el momento que esto ocurre se debe: Reparar o sustituir el componente hardware que ha fallado. Localizar la copia de seguridad justo anterior a la fecha en que se ha producido el error. Copiar el contenido de la copia de seguridad para reconstruir la BD. Rehacer desde el diario todos los cambios que se han producido desde la fecha de la prdida hasta la actualidad.

Sistemas de gestin de bases de datos 27

TEMA 6 DISEO FSICO DE BASES DE DATOS

Tema 6 Diseo fsico de bases de datos 1. Adaptacin a un SGBD concreto 2. Ajuste y mejora 3. Gestin del rendimiento 4. Informe del diseador de la base de datos

1. ADAPTACIN A UN SGBD CONCRETO A partir del diseo lgico de una BD tendremos que pasar a su diseo fsico; esto depender de las caractersticas propias de cada base de datos, de las caractersticas del hardware, sistema operativo y software bsico y, por supuesto del diseo del SGBD. El estndar SQL incorpora la definicin de todos los componentes del diseo lgico de la BBDD. En cambio, no incorpora ningn elemento del diseo fsico. Para adaptar el diseo de la base de datos a un SGBD concreto, partimos de los elementos siguientes: Definiciones de tablas. Relacin de cada tabla con un espacio para tablas y cada ndice con un espacio para ndices. Relacionamos cada espacio virtual con un fichero fsico y definimos sus caractersticas.

Tabla
Tablas con Oracle
CREATE TABLE Table_name (column definition) <unique_constraint> <referential_constraint> <extent_space> TABLESPACE tablespace_name

Es un componente del diseo lgico de bases de datos y est perfectamente definido en el estndar SQL, podemos ver en la imagen lateral como crear una tabla con Oracle. El espacio para tablas es un componente del nivel virtual, no pertenece al diseo lgico de la base de datos y por lo tanto no se incluye en el estndar SQL; la sentencia de creacin de un espacio para tablas es diferente para cada SGBD, pero podemos ver el ejemplo que nos ofrece Oracle. Name es el nombre del espacio para tablas, cada espacio se asocia a uno o ms ficheros fsicos (filespec). La definicin del fichero fsico viene determinada por su nombre externo file_name, la ubicacin en disco y su medida (size). La clusula storage_clause define las caractersticas de almacenamiento, medida inicial, medida incremental, extensiones mnimas y mximas, etc. Base de datos La base de datos en s no pertenece al diseo lgico de la base de datos, y por lo tanto, no se incluye en el estndar SQL. La sentencia CREATE DATABASE es diferente en cada SGBD e incorpora clusulas de definicin de elementos fsicos propios de cada uno de stos: diario, catlogo, ficheros pasemos a ver un ejemplo con Oracle. Database_name es el nombre de la base de datos que se asocia a un conjunto de ficheros fsicos que contienen los espacios para tablas, que se relacionan en la clusula DATAFILE <filespec>. La clusula LOGFILE especifica el nombre de los diarios que se definen para que el gestor registre todas las actualizaciones de las tablas de esta base de datos y poder hacer recuperaciones en caso necesario. ndice Son elementos del diseo fsico de la base de datos que tienen como finalidad mejorar el rendimiento de las aplicaciones cuando acceden a las tablas; no forman parte del diseo lgico de la base de datos y, por lo tanto, tampoco se incluyen en el estndar SQL. La definicin de la clave primaria y claves forneas forman parte del diseo lgico y as constan en el estndar SQL, pero los ndices que se definen para mejorar el acceso a las tablas, responden a requerimientos de las aplicaciones. La sentencia CREATE INDEX es la que crea estos ndices.

Espacios Oracle

de

tablas

con

CREATE TABLESPACE name DATAFILE <filespec> DEFAULT STORAGE <storage> <filespec>;:= file_name [SIZE nn] <storage_clause> INITIAL nn [NEXT nn] [MINEXTENTS nn] [MAXEXTENTS nn] [PCTINCREASE nn] [OPTIMAL nn] []

Bases de datos con Oracle


CREATE DATABASE database_name [CONTROLFILE REUSE] [LOGFILE <filexpec>] [MAXLOGFILES nn] [MAXLOGMEMBERS nn] [MAXLOGHISTORY nn] [DATAFILE <filespec>] [MAXDATAFILES nn] [MAXINSTANCES nn] [CHARACTER SET nn] []

28 Sistemas de gestin de bases de datos

2. AJUSTE Y MEJORA Un sistema de bases de datos se ha diseado para ser explotado y sacarle un buen rendimiento; por tanto, debemos ajustar el hardware, sistema operativo, aplicaciones y la base de datos para obtener un mnimo consumo de recursos, favorecer la concurrencia (diferentes procesos actan sobre los mismos datos), mejorar la contencin (evitar que se llegue a situaciones de bloqueo de timeout entre distintos procesos por intentar obtener los mismos datos) y dar una buen tiempo de respuesta (detrs de cada peticin en lnea hay un usuario esperando una respuesta por parte del ordenador). Para que todo esto ocurra, debemos tener en cuenta el diseo fsico de la base de datos y el diseo de las aplicaciones que deben acceder a ellos. As distinguiremos 3 tipos de aplicaciones: Aplicaciones en lnea: Son accesos de alta prioridad que no se pueden hacer en otro momento, tienen gran concurrencia de datos (muchas transacciones compiten entre s para acceder a los mismos datos), los tiempos de respuesta deben ser relativamente cortos, el tiempo de entrada/salida determina en gran medida este tiempo de respuesta, la complejidad de las instrucciones SQL a resolver no es muy grande, cada transaccin accede a un nmero reducido de datos y generalmente mediante ndices. Aplicaciones por lotes: Son procesos de baja prioridad que se acostumbran a planificar en horas de poca actividad (tarde-noche) sin un usuario delante esperando una salida de datos; no suele haber concurrencia de acceso, pero s la hay si a la vez existen accesos en lnea; se trata de procesos de larga duracin que afectan a un gran nmero de datos; es muy importante solapar los tiempos de entrada/salida con los de uso de CPU. Consultas de usuario: Son procesos en lnea, mayoritariamente de lectura, a veces tienen consultas en SQL complejas (lo que determina el tiempo de respuesta), el acceso es tanto secuencial como por medio de ndices, y cada transaccin accede a un nmero relativamente grande de datos.

Con todas estas aplicaciones accediendo a la base de datos, debemos ajustar 3 tipos de componentes de manera muy fiable; los ndices, los componentes fcios y los parmetros del sistema. ndices En cada uno de los accesos a las tablas que una aplicacin tiene programada, el optimizador del SGBD analiza cul es el mejor camino de acceso a la base de datos, si existe un ndice lo utilizar. La razn casi fundamental para crear un ndice en una tabla es la de reducir el nmero de acceso que el SGBD tendr que hacer para localizar los datos; y ello nos determina un entorno en el que es necesario crear ndices y otro en el que no es recomendable. Debemos utilizar ndices cuando: Queramos garantizar la unicidad de los atributos, definiendo un ndice nico, el SGBD garantiza que no habr duplicados. Queramos garantizar la ordenacin de las filas dentro de una tabla, implantaremos un ndice agrupado. Tengamos relaciones de integridad referencial entre 2 o ms tablas. No es conveniente definir ndices cuando: La tabla tiene pocas filas, en ese caso ser ms rpida una lectura secuencial directamente de la tabla, que una lectura del ndice, para despus hacer una lectura en la tabla. El ndice discrimina muy poco. Establecer un ndice por el campo sexo tendr poca utilidad porque su nivel de discriminacin como mucho es del 50%.

Sistemas de gestin de bases de datos 29

La aplicacin pretende utilizar el atributo con predicados no indizables, por ejemplo, buscar en una tabla con ndice en la ciudad los clientes que no son de una ciudad determinada, no tiene ninguna utilidad. Las aplicaciones hacen tratamientos masivos de la tabla: por ejemplo si el ndice es muy frecuentemente actualizable ser poco til porque cada vez que se modifique ese atributo hay que modificar el ndice con el consecuente trabajo para el SGBD (por ejemplo, definir como ndice el saldo de las cuentas corrientes). Tampoco es prctico para ndices descendentes, pues la mayora de los ndices son ascendentes.

Componentes fsicos Ficheros de datos: Son los ficheros fsicos que contienen los datos, es decir, las filas de las tablas y las claves de los ndices. La ubicacin fsica de los distintos ficheros depende de lo crticos que sean. Los ms utilizados en unidades de disco ms rpidas y que slo se utilizan para el SGBD; procurar colocar los ficheros de ndice en unidades de disco distintas a los datos para que los cabezales de los discos no estn ocupados en las dos operaciones a la vez en distintas transacciones. El porcentaje de espacio libre por pgina tambin es un parmetro a vigilar. Un porcentaje alto facilita la insercin de filas de datos en una pgina, pero genera enlentecimiento en los procesos secuenciales al tener que leer ms pginas. Los bloqueos son fundamentales: bloqueamos por pgina lo ms habitual- o por fila? La compresin de datos es fundamental: al comprimir ocupan menos espacio, se hacen menos entrada/salida lo que genera aumento de velocidad, la pega es el trabajo extra del procesador para compactar/descompactar las filas segn se van pidiendo. Ficheros de control: tenemos dos: el catlogo y los ficheros de trabajo. El catlogo consiste en un conjunto de tablas que gestiona el propio SGBD para registrar todas las descripciones de los componentes de nuestro sistema. Como suele ser un diseo propio de cada SGBD y no se puede tocar, no podemos hacer ninguna apreciacin para su parametrizacin. En cambio los ficheros de trabajo son conjuntos de ficheros que el SGBD gestiona y utiliza en diferentes operaciones en las que necesita un rea de trabajo para resolver determinadas peticiones, como pueden ser combinaciones de dos o ms tablas, contener la tabla resultante de una clasificacin o de una definicin de una vista, etc. Si tenemos varias unidades de disco debemos repartir las unidades de trabajo entre ellos. Ficheros de auditoria: verifican el funcionamiento correcto del plan de seguridad y registran quien accede a determinados datos o bien quin intenta accesos no autorizados. Seleccionar los datos y acciones que se auditarn es complejo. Por un lado si auditamos muchas tablas y muchas acciones provocaremos una disminucin palpable de la velocidad del SGBD porque para cada accin, adems de realizar la consulta adecuada, debemos escribir en el fichero de auditora la operacin que se realiza, cuando y quin. Si auditamos pocas tablas, quiz cuando nos exijan determinada informacin no podamos ofrecerla. En resumidas cuentas, el control de auditoria implica incrementar el coste de los procesos, por ejemplo en los procesos en lnea, el coste es considerable en relacin con el coste total de la transaccin. Diarios: En el diario se registra una imagen de la pgina de la base de datos, antes y despus de cada actualizacin. Por tanto, el diario es un fichero muy crtico y si disponemos de varias unidades de disco es conveniente definir un diario dual (dos diarios diferentes). Cuando el diario se llena, suele archivarse en el archivo diario, copiando todos los datos y abrindose un nuevo archivo. Esta operacin tiene cierto coste y adems debe realizarse aunque el SGBD est a pleno rendimiento, por lo que es conveniente definir un tamao de archivo diario lo suficiente para intentar que coincida este cambio con horas de menos trabajo.

30 Sistemas de gestin de bases de datos

Parmetros del sistema La parametrizacin del sistema consiste en asignar valor a cada una de las variables o parmetros de definicin de los componentes fsicos anteriores. Contamos con: Medida de las pginas que contienen las filas de la tabla. Nmero de pginas asignadas a la base de datos. Reserva de espacio libre en cada pgina. Medida de las extensiones de los archivos fsicos. Nmero mximo de extensiones del fichero. Memoria intermedia asignada para las operaciones de lectura, escritura. Nmero mximo de procesos concurrentes. Nmero mximo de bloqueos concurrentes. Ubicacin en disco de los ficheros de datos, de control, de auditoria y diarios. Nmero de diarios, medidas y caractersticas.

La lista de los parmetros es muy extensa, propia de cada SGBD por eso se recomienda consultar los manuales del fabricante, extraer de la base de datos los valores por defecto y posteriormente ajustarlos con el fin de mejorar el rendimiento de nuestra base de datos propia teniendo en cuenta la experiencia anterior y el anlisis de los resultados del rendimiento.

3. GESTIN DEL RENDIMIENTO Hay distintos elementos que hay que tener en cuenta para una buena gestin del rendimiento: Plan de consultas: es el conjunto de operaciones elementales que ha escogido el SGBD para resolver la consulta (instruccin SQL). La mayora de los SGBD modernos disponen de sentencias o herramientas grficas que permiten visualizar cul es el plan de acceso de la consulta; esto permite al diseador de la base de datos comprobar que el optimizados ha escogido el camino ms adecuado para la consulta. En general hay que separar la consulta en condiciones simples, intentar que las selecciones se hagan lo antes posible y tambin bajar despus las proyecciones para que tambin se realicen lo antes posible. Monitores: Son los componentes del SGBD que tienen como misin informar del funcionamiento del gestor, desde el punto de vista de consumo de recursos, trabajo realizado por las aplicaciones, tiempo de respuesta, acceso a disco. Los monitores suelen suministrar informacin en lnea (en el mismo momento en que se est produciendo la informacin) y por lotes (recogida durante un perodo de tiempo y que se explota en procesos por lotes para obtener estadsticos). As podemos explorar qu procesos, usuarios y consultas consumen ms tiempo de la base de datos, que operaciones de entrada/salida son las ms lentas, cuantos accesos a memoria intermedia y en qu cantidad vienen realizndose, etc. Benchmarks: Son un conjunto de pruebas que se establecen para ver el comportamiento de diferentes sistemas, su funcionalidad, tomar medidas de rendimiento y poder comparar los resultados obtenidos. En BBDD el problema es complejo ya que el SGBD depende tambin del sistema operativo y adems, cada instruccin SQL no tiene porque llevarse a cabo exactamente igual en cada SGBD. Para que el conjunto de pruebas sea adecuado tiene que ser lo ms homogneo posible, seleccionar programas que sean representativos de la actividad que realizar la base de datos, cargar los mismos datos en todos los SGBD y probar con los mismos programas y consultas

Sistemas de gestin de bases de datos 31

4. INFORME DEL DISEADOR DE LA BASE DE DATOS No se puede considerar acabado el diseo de una base de datos si no se ha documentado convenientemente todas y cada una de sus etapas: el diseo conceptual, el lgico y el diseo fsico. Diseo de las tablas: definicin de columnas, clave primaria y alternativas, claves forneas, restricciones de integridad. ndices para mejorar los accesos a las tablas. Espacio para ndice: crecimiento previsible, nmero de claves, grado de volatilidad de las claves Espacios para tablas: igualmente crecimiento previsible, tipo de espacio para tablas, necesidad de reorganizacin del espacio para tablas.

Jaume Sistac i Planas, Ramon Segret i Sala, Santiago Ortego Carazo, Marta Oliva Sol, M. Elena Rodrguez Gonzlez, Alberto Abell Gamazo, Blai Cabr i Segarra Junio 2006

Sistemas de gestin de bases de datos

Texto elaborado a partir de:

Preguntas 1. 2. 3. 4. 5. Qu es una particin? Qu tres tipos de particiones existen? Cuntas particiones de cada tipo puede haber en un disco duro? Para qu se usan las particiones extendidas? Cules son los 2 formatos de particin usados por Windows? Qu limitacin tiene el primero de ellos? 6. Qu formatos de particiones en linux conoces? Es posible ver esas particiones en windows? 7. Para qu sirve una particin de tipo swap? 8. Qu ventajas tiene hacer particiones a un disco? 9. Cmo podemos hacer particiones en un disco duro? 10. Qu limitacin podramos encontrar al modificar las particiones en un disco duro que ya estamos usando? 11. Qu pasos sigue el programa al modificar las parciciones de un disco con datos? 12. Qu pasar al reiniciar el sistema si hemos creado una nueva particin accesible desde windows? 13. Qu es un gestor de arranque? 14. Qu es la secuencia de buteo? Dnde se configura? 15. Qu es el Master Boot Record? Qu informacin se almacena en l? 16. Cmo se llama el gestor de arranque que utiliza lliurex? 17. Qu opciones podemos modificar en un gestor de arranque? 18. Qu problema podemos encontrar en un ordenador dual (windows/linux) si tenemos que reinstalar windows? Cmo lo solucionaramos? 19. Qu es un archivo? 20. Qu dos partes tiene un identificador de archivo? Para qu se usa la segunda en windows? 21. Qu es un directorio? 22. Qu es una unidad? Cmo se identifica en windows? 23. Qu dispositivo tendremos probablemente en unidades con las siguientes letras: A, C, D, G, Y? 24. Qu es la ruta de un fichero o directorio? Qu separador se usa en windows? Pon un ejemplo de ruta de una imagen en Mis imgenes 25. Qu informacin se guarda en el directorio Windows? 26. Qu informacin se guarda en el directorio Documents and settings? 27. Qu informacin se guarda en el directorio Archivos de programa? 28. Entre los directorios Windows, Documents and Settings y Archivos de programa, indica en cul encontraramos los siguientes ficheros: programa paint, programa GIMP, fichero de configuracin personal de firefox, solitario spider, documento guardado en el escritorio. 29. Qu diferencia hay entre los identificadores de archivo de windows y de linux? 30. Qu significa si decimos que los nombres de archivo en linux son case sensitive? 31. Cmo se identifican las unidades en linux? En qu directorio suelen estar los dispositivos extraibles? 32. Qu separador usa linux en los directorios de una ruta? 33. Cul es la raiz u origen de todos los sistemas de archivos en linux? 34. Qu es un inodo? Qu informacin se guarda en ellos? 35. En qu directorio se guarda la informacin de los usuarios en linux? 36. En qu directorio se guardan la mayor parte de programas en linux? 37. En qu directorio se guarda la configuracin del sistema en linux? 38. Indica lo que almacena un archivo con las siguientes extensiones: odt, xls, pdf, xcf, bmp, wma, aup, avi, flv, mkv, exe, ini, lnk, zip, asp, css.

39. 40. 41. 42. 43. 44.

Para qu sirve un visor de archivos? Dnde se almacena la informacin ms importante de un fichero? Cmo podemos cambiar la resolucin de un monitor en windows? Dnde cambiamos la velocidad de un ratn en windows? Qu es un acceso directo? cmo puedo crear uno? Cmo puedo ordenar las carpetas que aparecen un el apartado programas del men de inicio para mi usuario? Y para todos los usuarios? 45. Para qu sirve una cuenta de usuario? 46. Qu tres tipos de cuenta hay en windows? 47. Escribe el comando que usaramos para crear el usuario Manolo con contrasea pepe en windows. 48. Escribe el comando que usaramos para cambiar la contrasea del usuario Manolo a nueva en windows. 49. Escribe el comando que usaramos para borrar el usuario Manolo en windows. 50. Para qu sirven los grupos de usuario? 51. Como crearamos un grupo de usuarios en windows? 52. Escribe el comando que usaramos para crear el grupo Gente y para aadir el usuario Pepe a ese grupo en windows. 53. Qu dos tipos de cuenta hay en linux? 54. Escribe el comando que usaramos para crear el usuario Manolo con contrasea pepe en lliurex. 55. Escribe el comando que usaramos para cambiar la contrasea del usuario Manolo a nueva en lliurex. 56. Escribe el comando que usaramos para borrar el usuario Manolo en lliurex. 57. Escribe el comando que usaramos para crear el grupo Gente y para aadir el usuario Pepe a ese grupo en lliurex. 58. Qu 3 tipos de permisos soporta lliurex? 59. A qu 3 bloques de usuarios se asignan los permisos de un archivo en lliurex? 60. Explica qu significa que un fichero tiene los siguientes permisos: 764 o r-xrw-r--. 61. Cmo podemos compartir una carpeta en windows? 62. Cmo podemos identificar una carpeta compartida en windwos? 63. Qu tenemos que instalar para poder acceder desde linux a carpetas compartidas en windows? 64. Para qu se usa NFS? 65. Qu es una red de ordenadores? 66. Qu es una LAN? Pon un ejemplo 67. Clasifica las redes LAN y WAN segn su tamao y su velocidad. 68. Qu diferencia hay entre un cliente y un servidor? 69. Cul es la caracterstica principal de una red de pares? 70. Dibuja una red en estrella, en rbol y en anillo 71. Qu es una direccin IP? Qu forma tiene? 72. Para qu se utiliza la mscara de subred? Qu indicara una mscara de subred formada por 16 unos y 16 ceros? 73. Qu es la direccin MAC? Qu forma tiene? 74. Utiliza el comando ipconfig /all e indica cul es tu direccin IP, mscara de subred y direccin MAC o fsica. Busca en la siguiente direccin http://standards.ieee.org/develop/regauth/oui/oui.txt cul es el fabricante de tu tarjeta de red. 75. Qu diferencia un hub de un switch? Cul es mejor? 76. Para qu se usa un router? 77. Cuntos hilos tiene un cable de pares trenzados usado en redes locales? Busca en Internet los colores usados y cmo se emparejan. 78. Qu ventajas tiene la fibra ptica frente al cable de pares? Y qu desventajas?

79. Para qu se usa el protocolo DHCP? 80. Qu datos debemos configurar en una tarjeta de red si hacemos una configuracin manual? 81. Cmo se llama el cable que usamos para conectar 2 ordenadores directamente entre si? Busca en internet cmo se conectan los extremos de ese cable. 82. Qu 3 estndares 802.11 son compatibles entre s? Qu velocidad mxima soporta cada uno de ellos? 83. Qu protocolo inalmbrico no se puede utilizar en Espaa? Qu frecuencia utiliza? 84. Qu diferencia hay entre un punto de acceso y un repetidor inalmbrico? 85. Qu es el SSID? 86. Qu 2 modos existen en las conexiones inalmbricas y cundo usaremos cada uno de ellos? 87. Para qu sirve ocultar el SSID? 88. Para qu sirve el filtrado MAC? Qu inconvenientes tiene su uso? 89. Qu 2 mtodos se pueden usar para cifrar una conexin inalmbrica? Cul es mejor? 90. Qu es internet? 91. Para qu se utilizan los protocolos de enrutamiento? 92. Qu es un ISP? 93. Indica el medio fsico (tipo de cable) utilizado y las velocidades de las siguientes tecnologas de conexin a internet: mdem telefnico, ADSL, cable-modem, fibra ptica e internet mvil. 94. Para qu sirve el DNS? 95. Qu es un URL y para qu sirve? Qu partes tiene? (pon un ejemplo para explicarlo) 96. Cmo se abre una ventana de interfaz de comandos en Windows? 97. Escribe el comando que usaramos para crear y para eliminar un directorio llamado fotos en windows. 98. Escribe el comando que usaramos para copiar el fichero fich1 a otro con nombre fich2 en windows. 99. Escribe el comando que usaramos para cambiar el nombre al fichero fich1 a fich2 en windows. 100. Escribe el comando que usaramos para eliminar el fichero archivo.txt en windows. 101. Escribe el comando que usaramos para acceder al CD (unidad D) en windows. 102. Para qu sirve el comando attrib? 103. Cmo se abre una ventana de interfaz de comandos en lliurex? 104. Escribe el comando que usaramos para crear y para eliminar un directorio llamado fotos en lliurex. 105. Escribe el comando que usaramos para copiar el fichero fich1 a otro con nombre fich2 en lliurex. 106. Escribe el comando que usaramos para cambiar el nombre al fichero fich1 a fich2 en lliurex. 107. Escribe el comando que usaramos para eliminar el fichero archivo.txt en lliurex. 108. Escribe el comando que usaramos para ver la ayuda del programa gcalc en lliurex. 109. Con qu comando podemos saber nuestra direccin IP? Qu direccin IP y mscara de subred tiene tu ordenador? 110. Cuntos saltos hay de tu ordenador a www.tuenti.com? Qu comando usas para saberlo? 111. Qu comando usamos para saber qu puertos tenemos abiertos en nuestro ordenador? Cuntos puertos tienes t? Cmo lo has sabido? 112. Escribe la direccin IP que se corresponde con los siguientes dominios: www.upv.es, www.edu.gva.es, pop.mail.yahoo.es 113. Para qu se usa la herramienta Restaurar Sistema? 114. Para qu se usa el desfragmentador de disco? 115. Usa Informacin del Sistema y escribe qu versin de windows y qu procesador tienes

en tu ordenador. 116. Para qu sirve el panel de control? 117. Entra al panel del control de tu ordenador e indica qu iconos de la captura del documento de teora no aparecen en el tuyo, y cules tienes que no aparezcan en esa captura. 118. Por qu es recomendable actualizar el sistema operativo? 119. Explica las 4 opciones que permite windows en Actualizaciones automticas 120. Cmo actualizaramos el sistema operativo windows de forma manual? 121. Qu aplicacin se usa para actualizar lliurex? 122. Qu ventaja tiene la actualizacin de lliurex frente a la de windows? 123. Qu ventaja tiene utilizar un servidor en el aula de cara a las actualizaciones de lliurex?

Comunicaciones inalmbricas
TEMA 1 INTRODUCCIN A LOS SISTEMAS DE COMUNICACIN INALMBRICOS

Tema 1 Introduccin a los sistemas de comunicacin inalmbricos 1. Redes de ordenadores 2. Comunicaciones inalmbricas

1. REDES DE ORDENADORES En la definicin de una red de ordenadores podemos distinguir cuatro elementos: El protocolo de comunicacin, define el lenguaje y el conjunto de reglas que facilitan la comunicacin entre emisor y receptor. La topologa define la manera en que los nodos de comunicacin estn conectados entre s. La seguridad es lo que permite garantizar la confidencialidad, autenticacin e integridad de los datos. El medio de transmisin es el aire, por donde viaja la seal que lleva los datos.

El espectro electromagntico es el rango de frecuencia de todas las ondas electromagnticas que se pueden propagar a travs del espacio libre, ordenadas segn su longitud de onda y su frecuencia. Los rangos de frecuencia ms utilizados son: Infrarrojos (IR): Se utilizan en comunicaciones punto a punto de mbito local, son muy direccionables y no pueden atravesar obstculos. Microondas: Es adecuado para las transmisiones de largo recorrido. Radiofrecuencia: Se emplea en las transmisiones de radio y televisin.

2. COMUNICACIONES INALMBRICAS Clasificaremos las distintas comunicaciones inalmbricas atendiendo a su alcance en: Redes de rea personal inalmbricas (WPAN): Presentan una importante limitacin de alcance y por ello los dispositivos tienen que estar poco separados, hay varias tecnologas: DECT, Bluetooth, HomeRF e IrDA. Redes de rea local inalmbricas (WLAN): Es una red de cobertura geogrfica limitada, velocidad de transmisin alta, bajo nivel de errores y administrada de manera privada. Contamos con dos: IEEE802.11 e Hiperlan. Redes de gran alcance inalmbricas (WWAN): Permiten la conexin de zonas geogrficas distantes.

Las comunicaciones inalmbricas tienen ventajas y desventajas. En el aspecto positivo destacan: Accesibilidad y flexibilidad. Coste. Movilidad. Comodidad Escalabilidad: Se adaptan fcilmente a los cambios de topologa de red.

2 Comunicaciones inalmbricas

Como limitaciones tenemos: Consumo: Las bateras de los terminales mviles limitan la potencia de transmisin de datos. Capacidad de transferencia limitada: el espectro electromagntico es un recurso limitado. Calidad: Interferencias y ruidos. Seguridad: Cualquiera puede acceder a la informacin transmitida por el espectro electromagntico sin ningn tipo de limitacin.

Comunicaciones inalmbricas 3

TEMA 2 ARQUITECTURAS Y PROTOCOLOS DE LAS COMUNICACIONES INALMBRICAS

Tema 2 Arquitecturas y protocolos de las comunicaciones inalmbricas 1. Tecnologas de la interfaz de radio 2. Redes personales inalmbricas 3. Redes locales inalmbricas 4. Redes de gran alcance inalmbricas 5. WAP

1. TECNOLOGAS DE LA INTERFAZ DE RADIO En la interfaz de radio tenemos dos clasificaciones generales: las comunicaciones que utilizan banda estrecha y las que emplean difusin de espectro. En la banda estrecha a medida que aumenta el nmero de usuarios que transmiten informacin, hay que asignar una frecuencia de comunicacin para cada uno de ellos, por lo que sus limitaciones son evidentes en sistemas con muchos accesos simultneos (figura superior de la imagen lateral). Para solucionar este problema se utilizan dos tcnicas: Acceso mltiple por divisin de frecuencia: Consiste en dividir el ancho de banda en portadores (canales) de banda estrecha: cuanto ms dividimos el ancho de banda en canales, ms accesos simultneos podemos obtener (figura central de la imagen lateral). Acceso mltiple por divisin de tiempo: Se comparte una misma frecuencia que asigna intervalos de tiempo a los usuarios, as se permite combinar una elevada cantidad de seales en una misma portadora, pero hay que ajustar constantemente los intervalos de tiempo para sincronizar las seales en los receptores y los emisores (figura inferior de la imagen lateral). En las comunicaciones que se utiliza difusin de espectro, se utiliza un ancho de banda mayor de lo que se necesita para transmitir la informacin, y se puede utilizar: Salto de frecuencia: Utiliza una portadora de banda estrecha que cambia de frecuencia con un patrn conocido por el transmisor y el receptor, para quin no conozca este patrn la seal aparece como un impulso de ruido de corta duracin. Secuenciacin directa: Se enva un bit de informacin como una secuencia de bits codificados, el cdigo que se utiliza para codificar la seal es una secuencia de bits denominada chips.

2. REDES PERSONALES INALMBRICAS DECT (Digital enhanced cordless telecommunications) es una transmisin digital inalmbrica que ofrece varias ventajas frente a la tradicional analgica: menos interferencias, ms capacidad de dispositivos en una misma zona, ms seguridad (cifrado de la informacin) y ms movilidad (se pueden establecer mecanismos para saltar de una red a otra roaming-). El sistema DECT est formado por dos elementos bsicos: la estacin fija y el terminal mvil. Bluetooth es un estndar para conectar sin cables diferentes dispositivos electrnicos, como PDAs, mviles, ordenadores porttiles. Bluetooth define un alcance corto de aproximadamente 10 metros y opcionalmente un alcance medio en torno a los 100 metros. Admite la transferencia de datos y voz y puede soportar diferentes combinaciones de conexiones sncronas (voz) y asncronas (datos) en funcin de las necesidades del servicio. En una red Bluetooth cualquier dispositivo puede actuar como mster o como esclavo: el mster se encarga de definir cmo se establece la comunicacin fsicamente mientras que el esclavo coordina sus transmisiones segn las especificaciones del mster. Normalmente el primero que pide el servicio acta como mster, excepto cuando la red ya ha sido establecida. HomeRF permite la transferencia inalmbrica de datos y voz y facilita la integracin de dispositivos, como el ordenador y la telefona, la implementacin de

4 Comunicaciones inalmbricas

sistemas de control del hogar (domtica) activados por voz y la conexin inalmbrica del ordenador con sus perifricos. Para transmitir la voz, se utiliza un sistema de comunicacin muy similar al que emplea el DECT y para los datos una tecnologa basada en el estndar 802.11. IrDA ha sido una tecnologa que por su bajo coste tanto de implementacin como de consumo de potencia se ha ido extendiendo ampliamente. A estas ventajas se aaden que es muy flexible y se adapta fcilmente a una gran cantidad de aplicaciones y dispositivos como PDAs, telfonos, impresoras Los dispositivos que utilizan la IrDA se comunican a travs del uso del diodo LED que deben estar alineados unos con otros con una desviacin mxima permitida de 30.

3. REDES LOCALES INALMBRICAS Las WLAN son una extensin y/o una alternativa a las LAN con cables. Los usuarios de una WLAN pueden acceder a los recursos que les ofrece la LAN sin tener que depender de infraestructuras de red (cableado, conectores, etc.). Como ventajas tiene la movilidad, instalacin simple, flexibilidad, bajo coste y escalabilidad. Pero sus desventajas de centran en la baja velocidad respecto a una red cableada, retrasos, accesos difciles (hay edificios que atenan las seales), consumo de los dispositivos, seguridad e interferencias. Hay dos estndares principales, el IEEE 802.11 y la HiperLAN. El primero de ellos garantiza la funcionalidad de las aplicaciones sin tener que pensar si la comunicacin se hace con o sin cables. Hay dos estndares, el IEEE 802.11a que soporta velocidades de hasta 54 Mbps, y el IEEE 802.11b que soporta velocidades de hasta 11 Mbps, tambin denominado Wi-Fi. Por otro lado, el hiperLAN es un estndar de redes locales inalmbricas desarrollado por el ETSI. Ofrece una capa PHY capaz de trabajar a velocidad comparables o superiores incluso a las LAN fijas, tiene un esquema de acceso mltiple con calidad de servicio y adems ofrece mecanismos para diferenciar redes que se solapen y que utilizan la misma frecuencia sin perder trfico. La flexibilidad de la arquitectura de la tecnologa HiperLAN2 hace que se pueda emplear en muchas de las redes existentes: ATM, UMTS, etc.

4. REDES DE GRAN ALCANCE INALMBRICAS Podemos distinguir dos tipos de WWAN: FWWAN (fijas): puede funcionar por radioenlaces o por satlite. La mayor parte de redes de satlites se utilizan para la difusin de la televisin. El uso de estas redes para la transmisin inalmbrica de datos empieza a ser una realidad, pero hay que tener en cuenta los grandes gastos que comportan en equipamiento, los problemas de retraso que se producen la propagarse la seal y el elevado coste por minuto de transmisin. MWWAN (mvil): El terminal que enva y recibe la informacin est en movimiento. Normalmente hay muchos usuarios conectaos simultneamente que utilizan los servicios en este tipo de redes; por tanto hay que optimizar el uso del espectro radioelctrico y minimizar la potencia transmitida (para minimizar las interferencias entre canales). En estas redes se tiene un conjunto de estaciones base desplegadas por territorio a las que se quiere dar cobertura conectndolas entre s o con un centro de conmutacin. La estacin base de asigna al terminal mvil que recibe con un nivel de potencia mayor, si por la movilidad del terminal otra estacin base detecta que recibe una seal de mayor potencia, se produce un cambio de canal y de estacin base (handover de potencia). Existe tambin un handover de calidad.

Comunicaciones inalmbricas 5

Encontramos dentro de las redes mviles tres principalmente: El GSM arranca en 1982, cuando se cre un equipo con el nombre groupe special mobile para desarrollar un conjunto de estndares para una red de comunicaciones mviles y se promovi la reserva para este sistema de dos bandas de frecuencias prximas a 900 MHz. GSM ofrece servicios de telefona, transmisin de datos, fax y envo de SMS. Cuenta con canales de trfico (voz y datos) a 9,6 Kbps reales, y con canales de control (para sincronizacin). Normalmente la voz se codifica para reducir los bits que ocupa. GPRS: Es una tecnologa de comunicaciones inalmbrica estandarizada por el ETSI, que corresponde a la generacin 2,5G. Es una evolucin de la tecnologa GSM que utiliza la misma infraestructura que la anterior (bajo coste de implantacin) y se basa en la conmutacin de paquetes: los usuarios siempre estn conectados y los modelos de tarificacin se basan en la cantidad de informacin transmitida y no en el tiempo de conexin. UMTS: Define una tecnologa de comunicaciones inalmbrica optimizada para permitir servicios multimedia de alta velocidad como vdeo, audio y acceso a internet. Cuenta con el apoyo de la mayora de los operadores de telecomunicaciones y fabricantes, ya que representa una oportunidad nica de crear una masa de mercado para servicios multimedia, personalizados y de fcil uso que permitan el acceso mvil a la sociedad de la informacin. Lo malo es que para hacer la transicin de GPRS a UMTS s es necesario invertir en una nueva infraestructura. Puede operar en modo conmutacin de circuitos con conexiones permanentes a la red para servicios de audio y vdeo, y en modo conmutacin de paquetes para transferencias de datos y acceso a Internet.

5. WAP El protocolo WAP fue creado para proporcionar contenidos de Internet y aplicaciones de telefona avanzadas a los terminales y telfonos mviles, un mercado que se encuentra en continua expansin. Los terminales WAP presentan una serie de caractersticas que condicionan la especificacin del protocolo WAP: pantalla reducida, ancho de banda de conexin bajo, conexiones no demasiado estables, dispositivos de entrada reducidos al igual que su memoria, bateras de no muy larga duracin Con todos estos condicionantes se ha tenido que crear un nuevo lenguaje (WML wireless markup language), se ha tenido que implementar un nivel de seguridad y definir un modelo de programacin en WAP. El protocolo WAP tiene una estructura en niveles donde encontramos las siguientes capas: Capa de aplicacin: Debe establecer las reglas que permitan a los proveedores de servicios la creacin de aplicaciones, el funcionamiento de los agentes que hay en los terminales mviles y la interaccin con estos servicios o aplicaciones. Capa de sesin: Es la interfaz que establece las funciones necesarias para el control de la sesin: establecimiento de la transmisin, control del proceso y finalizacin de la sesin. Para ello cuenta con capacidad de negociacin. Capa de transaccin: Contiene las especificaciones que aseguran la transmisin de los datagramas del servicio WAP. Funciona de manera similar al tradicional TCP, pero con las modificaciones necesarias para adaptarse a una red inalmbrica: ancho de banda limitado y disponibilidad de recepcin no permanente.

6 Comunicaciones inalmbricas

Capa de seguridad: Es opcional y cuando est presente establece las funciones de seguridad en la transmisin, por ejemplo en aplicaciones de comercio electrnico, acceso a datos bancarios, etc. Capa de transporte: Conecta la capa de red con las capas superiores y permite que el modelo WAP sea independiente del tipo de operador o tecnologa de red empleada para acceder al servicio a aplicacin.

Comunicaciones inalmbricas 7

TEMA 3 SERVICIOS Y APLICACIONES

Tema 3 Servicios y aplicaciones 1. Diseo de aplicaciones y servicios inalmbricos 2. Servicios caractersticos de los entornos mviles

1. DISEO DE APLICACIONES Y SERVICIOS INALMBRICOS Para conseguir una buena comunicacin, el emisor tendra que poder adaptar la informacin que pretende transmitir a la capacidad de comprensin del receptor. Si pensamos en trminos de dispositivos que acceden a una informacin (mviles accediendo al proveedor de contenidos, por ejemplo), este proveedor ha de disear los contenidos teniendo en cuenta el dispositivo mediante el cual el cliente accede a l. Un primer problema a resolver es conseguir que una misma aplicacin sea accesible para distintos dispositivos, aprovechando las ventajas y a la vez salvando las limitaciones de cada uno. La solucin a este problema es XML. XML permite separar la informacin de su presentacin, de manera que un mismo contenido se puede presentar con distintos formatos. Un documento XML est bien definido o es vlido, cuando cumple una DTD determinada, es decir cuando la informacin se ha etiquetado siguiendo los tipos definidos en este estndar. XSL es un lenguaje de hojas de estilo que, en combinacin con XML, permite representar la informacin sin reescribir cdigo y con diferentes formatos de salida. Todos los terminales de comunicacin inalmbricos presentan la mayor parte de las restricciones siguientes: Mecanismos de entrada de datos poco cmodos y especialmente lentos para la escritura de texto libre. Capacidad de procesamiento limitada, lo que implica eliminar grficos y otros recursos multimedia complejos. Las aplicaciones deben disearse de manera que el procesamiento ms pesado se realice en el servidor y no en el terminal cliente. Capacidad de almacenamiento limitada. Hay que procurar guardar los datos estrictamente necesarios. Dificultad para gestionar la memoria, un bien muy escaso. La capacidad de memoria es tan diminuta en comparacin con la de un ordenador de sobremesa, que hay que utilizarla eficazmente sin acumular demasiados datos. Volatilidad de la informacin porque las bateras se han descargado, con posible prdida de datos. Hay que disear polticas muy firmes de copias de seguridad o asegurarse de que el usuario no descargue la batera.

Respecto a la prdida de conectividad, hay que decir que las aplicaciones deberan ser lo suficientemente robustas como para recuperarse de un corte de la conexin debido a la prdida de cobertura. Una primera solucin es la creacin de aplicaciones clientes muy completas que incorporen la lgica del servidor necesaria para seguir trabajando fuera de lnea mientras dure la prdida de cobertura y que una vez recuperada, automticamente se conecten y enven los datos locales al servidor remoto, sin tener que empezar de nuevo y sin tener que reenviar la informacin. Otra solucin consiste en la implementacin de colas de mensajes que se instalan en el servidor y recogen peticiones cuando el dispositivo inalmbrico no est conectado.

2. SERVICIOS CARACTERSTICOS DE LOS ENTORNOS MVILES El middleware o software intermediario de comunicaciones inalmbricas es una denominacin ambigua que abarca todo tipo de entornos, herramientas y servicios inalmbricos. Concretamente, comprende toda la tecnologa situada por encima del sistema operativo y por debajo de las aplicaciones.

8 Comunicaciones inalmbricas

La arquitectura de una aplicacin de un entorno de comunicacin inalmbrica se puede describir segn un modelo de cuatro capas, aunque la cantidad y el tipo de capas empleadas dependern de la complejidad del problema. La capa 1 o capa de acceso, describe el dispositivo inalmbrico desde el que el usuario accede a la aplicacin. Las capas 2 y 3 engloban el middleware y los servicios que permiten que los datos y las aplicaciones de la capa 4 sean accesibles por medio de dispositivos inalmbricos. Finalmente la capa 4 o capa de aplicacin, recoge todos los datos y aplicaciones corporativas accesibles desde la capa de acceso, como por ejemplo la mensajera electrnica, los datos de los clientes o las aplicaciones para el procesamiento de datos. Las funcionalidades ms crticas del middleware se reparten entre las capas 2 y 3 del modelo; en concreto la capa 2 o de seguridad, es la responsable de ofrecer una conectividad inalmbrica segura, optimizada y fiable. Los componentes principales de esta capa son las pasarelas inalmbricas. Estas pasarelas proporcionan las funcionalidades de conectividad por medio de las redes de comunicacin inalmbrica, con independencia del modelo del terminal empleado o del operador contratado. En concreto, una pasarela de comunicaciones inalmbricas es la responsable de gestionar la conexin y la sesin de usuario por medio de dispositivos y de redes mviles. Otra responsabilidad fundamental de las pasarelas es la gestin de la seguridad en las comunicaciones mediante tecnologas de cifrado y autenticacin. Los servidores de aplicaciones de comunicaciones inalmbricas son una extensin natural de los servidores de aplicaciones para dar apoyo a los dispositivos inalmbricos. Deben ser independientes de los dispositivos y de las redes de acceso. Los transcoders son una pieza de la capa 3 que procesa contenidos y los presenta con un nuevo formato ms adecuado a las caractersticas del dispositivo y la red desde los que acceder. Esta transformacin suele ser dinmica y parte tanto de contenidos estticos como de contenidos generados dinmicamente. El portal multimedia inalmbrico se orienta al usuario final con el objetivo de reflejar sus necesidades de acceso seguro y robusto en ubicaciones y circunstancias cambiantes. Un portal de estas caractersticas ha de garantizar una serie de servicios mnimos: Agregacin e integracin de informacin relevante teniendo en cuenta el perfil del usuario. Formateo dinmico de la informacin segn las caractersticas de los terminales y redes soportados. Presentacin de la informacin teniendo en cuenta posibles cambios en el terminal o en la red. Actualizacin dinmica: con informacin como bolsa de valores, noticias, etc.

Los servicios mviles de localizacin proporcionan un servicio personalizado y contextualizado segn quin, cundo y desde dnde se soliciten. La diferencia entre localizacin y posicin consiste en el nivel de detalle empleado: localizacin es un trmino genrico que puede tener en cuenta grandes extensiones geogrficas, mientras que posicin es la informacin exacta sobre la localizacin de alguien. Esta informacin sobre localizacin/posicin de un individuo no tiene valor por s misma. Requiere aplicaciones y servicios que la exploten en un momento determinado en funcin del perfil del usuario. Los servicios y las aplicaciones basados en la localizacin son visibles para el usuario, pudiendo obtener o deducir, interpretar y utilizar la informacin sobre su posicin: pginas amarillas, prediccin del tiempo, informacin del trfico Los servicios y aplicaciones sensibles a la localizacin, los activa directamente el usuario cuando entra en un rea determinada, previo consentimiento o

Comunicaciones inalmbricas 9

subscripcin. Aqu se incluyen los servicios de marketing directo, como los cupones instantneos definidos como ofertas emitidas por establecimientos cercanos a la localizacin del usuario en un momento dado. Se pueden distinguir cuatro tipos de tcnicas bsicas para la determinacin de la posicin: Tcnicas basadas en el terminal, por ejemplo el GPS, en el que el terminal de manera autnoma calcula su posicin. SU exactitud es de 5-10 metros para objetos estticos y de 10-100 metros para objetos en movimiento. Tcnicas basadas en la red, en las que la red de comunicaciones calcula la posicin de manera tambin autnoma. Por ejemplo la identificacin de celda (Cell-ID) funciona sobre redes GSM, GPRS y WCDMA; es el mecanismo ms sencillo para describir la localizacin de un individuo: simplemente proporciona la localizacin de la antena o estacin base que en un momento dado provee el telfono mvil en cuestin del servicio de conectividad. El rea geogrfica cubierta por una determinada estacin se denomina celda; as pues la exactitud de la tcnica depende del tamao de las celdas, cuyo dimetro puede varias desde los 500 metros hasta los 20 kms. La estrategia tpica para mejorar la exactitud consiste en reducir el tamao de las celdas. En las ciudades, las redes de estaciones son ms densas y tienen celdas ms pequeas. En cambio, en las zonas rurales hay menos antenas, por tanto la exactitud de este servicio ser poco precisa. Tcnicas asistidas por el terminal (por ejemplo E-OTD) en las que ste da asistencia a la red de comunicaciones que finalmente calcula la posicin. Se basa en la deteccin, por parte del terminal mvil de la diferencia de tiempo de llegada de las seales procedentes de las diversas estaciones base que le dan servicio (GSM y GPRS). La posicin del terminal mvil se determina a partir de los componentes geomtricos correspondientes a los retrasos temporales entre el terminal mvil y las estaciones base. Su exactitud oscila entre 100 y 500 metros. Tcnicas asistidas por la red: (A-GPS) en las que la red de comunicaciones da asistencia al terminal, que finalmente calcula la posicin.

Avisos y tecnologa push En un modelo cliente-servidor clsico, los clientes solicitan un servicio o una informacin al servidor que responde a la peticin. Esto se denomina tecnologa pull: el cliente extrae informacin del servidor. La tecnologa push tambin se basa en un modelo cliente-servidor, pero no hay una peticin explcita por parte del cliente antes de que el servidor transmita la informacin o el servicio. Otra manera de expresarlo es que mientras que en las transacciones de tipo pull el cliente siempre inicia el flujo de informacin, en las transacciones push es el servidor el que inicia el flujo de informacin. El SMS (Short Message Service) es un ejemplo de tecnologa push e identifica el servicio de mensajera que posibilita el envo de mensajes de texto corto entre terminales mviles y que se basa en el protocolo SMPP (Short message peer to peer), un protocolo de mensajera abierto y diseado para simplificar la integracin de aplicaciones de datos con redes de dispositivos mviles inalmbricos como el GSM. Es importante tener en cuenta que el xito de cualquier tecnologa o servicio ha de medirse no slo en trminos de velocidad, capacidad de transmisin y seguridad, sino tambin en trminos de utilizacin. En el caso del SMS, el xito ha superado las expectativas de cualquier operador de telefona: se ha convertido en el sistema de comunicacin de toda una generacin. La posibilidad de que el terminal destinatario del mensaje est inactivo o sin cobertura hace necesaria la existencia de entidades destinadas al almacenamiento de los mensajes que no pueden ser entregados a sus destinatarios. El BSC (Base station center) se encarga de transmitir el mensaje que procede de un terminal mvil dentro del rea de cobertura de una antena hacia la entidad que almacena los mensajes, el SMSC (Short messaging service center). Si

10 Comunicaciones inalmbricas

el terminal mvil receptor no est disponible o est desconectado en ese momento, el mensaje se almacenar en el SMSC y se volver a enviar posteriormente. El mensaje quedar en el SMSC hasta que se consiga el envo o se llegue al mximo de tiempo de validez, el periodo mximo que un mensaje se puede almacenar en un SMSC. El EMS (enhanced messaging service) es una evolucin del SMS basada en un diseo inicial de Ericsson aceptado por el 3GPP, que permite el envo a otro usuario de una combinacin de imgenes, texto con formato, melodas, sonidos y animaciones. Este servicio no comporta ningn cambio para los centros SMS de mensajera, ya que el envo es transparente para estos centros y el nico requerimiento para la correcta visualizacin del mensaje es que el terminal mvil soporte las especificaciones de este tipo de mensajera. Para los envos de gran tamao el mensaje resultante puede utilizar la prctica totalidad del tamao mximo de un mensaje SMS; en estos casos y para permitir el envo de ms informacin, se puede utilizar el mecanismo de concatenacin de mensajes que incorpora el protocolo SMPP. El estndar SMS permite la concatenacin de un total de 255 mensajes de 140 bytes cada uno, para obtener un nico mensaje de aproximadamente 38 Kbs. Pero los terminales mviles actuales slo soportan la concatenacin de entre 3 y 6 mensajes, pues las concatenaciones de tamao superior se considerarn mensajes separados. El MMS (Multimedia messaging service) permite el envo de mensajes con una combinacin de uno o ms de los siguientes componentes: texto alfanumrico, imgenes, sonidos, animaciones y video. Este sistema comporta unos cambios fundamentales en la mensajera, no slo en lo tocante al tipo de mensajes que se pueden enviar y a los mecanismos utilizados para enviarlos y recibirlos, sino tambin en lo que respecta a la infraestructura de red necesaria para poder enviarlos. El SMS utiliza para la emisin y la recepcin de mensajes el canal de sealizacin de las redes GSM, lo cual permite la recepcin de mensajes mientras se hace, por ejemplo, una llamada de voz. Sin embargo, este hecho limita el formato de los mensajes que pueden ser enviados por SMS, ya que el canal de sealizacin tiene un ancho de banda pequeo. El MMS difiere del SMS porque aprovecha la gran capacidad de las redes de tercera generacin para enviar los mensajes por el canal de transmisin de datos. De este modo, no tiene limitacin de ancho de banda y, al mismo tiempo, utiliza protocolos estndar de internet para enviar y recibir esa informacin. Para prever el xito de penetracin en el mercado de todas estas nuevas tecnologas de comunicacin, hay que tener en cuenta factores muy importantes, como la evolucin de las redes actualmente existentes en las fechas previstas y la presencia en el mercado de una elevada cantidad de terminales compatibles con estas tecnologas. Adems, cuando la aplicacin de una tecnologa conlleva un cambio de terminal, el xito de implantacin tambin depender de la decisin del usuario de invertir o no en ese nuevo terminal mvil. Portales de voz Estos portales son webs que permiten el acceso y la navegacin por su informacin desde un terminal telefnico mediante la voz. De manera anloga a los portales de internet, los portales de voz permiten una interaccin entre los usuarios y el servidor de contenidos. Existen dos tecnologas del habla claves en la interaccin persona mquina: el reconocimiento de voz y la conversin de texto a habla. El primero (traduce palabras habladas en palabras escritas) puede tener dos utilidades principales: el dictado (puede crearse con la voz una pieza de texto) y la navegacin (cuando se utiliza la voz para controlar el sistema).La conversin de texto a voz aumenta la creacin de sonidos a partir de palabras escritas. El voiceXML es un lenguaje basado en XML y definido por el W3C que permite disear dilogos orales para acceder a la web mediante la voz con telfonos mviles.

Comunicaciones inalmbricas 11

TEMA 4 ENTORNOS DE DESARROLLO


Tema 4 Entornos de desarrollo 1. Entornos dependientes del dispositivo 2. Entornos independientes del dispositivo

La gran variedad de dispositivos mviles provoca la continua aparicin de nuevos estndares y lenguajes de programacin. A medida que los navegadores de estos dispositivos son capaces de procesar diferentes formatos de contenido, la oferta crece ms y ms, dificultando el desarrollo de software en entornos de comunicacin inalmbrica. Podemos distinguir y clasificar los entornos de desarrollo segn los dispositivos a los que van dirigidos: Entornos independientes de los dispositivos: Son los que permiten desarrollar software apto para cualquier tipo de dispositivo, sin basarse en las funcionalidades y caractersticas especficas del sistema operativo y del hardware. Entornos dependientes de los dispositivos: Son los que permiten explotar a fondo las posibilidades del sistema operativo y del hardware empleados, siempre que la tipologa de los dispositivos clientes sea reducida y previsible. La lista de posibilidades es realmente extensa y creciente.

Los entornos de desarrollo contienen emuladores que simulan la ejecucin de cdigo en dispositivos concretos. Hay infinidad de emuladores, pero es preciso tener en cuenta que el comportamiento del software en el emulador no necesariamente ha de coincidir exactamente con el que tendr en el dispositivo real. Los emuladores facilitan un primer nivel de depuracin del cdigo; se requiere una segunda depuracin con los dispositivos fsicos.

1. ENTORNOS DEPENDIENTES DEL DISPOSITIVO Web Clipping de Palm OS Una aplicacin web clipping es un conjunto de pginas HTML comprimidas con un formato denominado PQA (Palm query apllication), diseado para reducir los requerimientos de ancho de banda y de pantalla necesarios para ser mostrados al usuario. El PQA es un subconjunto del HTML. La navegacin web clipping no se basa en un modelo de hiperenlaces, sino en preguntas-respuesta entre el usuario y el servidor intermediario. Entornos visuales de Pocket PC y Windows CE Estos entornos visuales permiten desarrollar, depurar y emular rpidamente aplicaciones mviles para plataformas Pocket PC y Windows CE. Todo ello empleando dos lenguajes de programacin bastante maduros en el mercado: Visual Basic y Visual C++. Pese a esa madurez, para cada tipo de dispositivo se requiere un SDK diferente para compilar y ejecutar la aplicacin. Con el eMbedded Visual Basic y el eMbedded Visual C++ se pueden crear componentes y aplicaciones con interfaz grfica que se ejecutarn por encima de las funcionalidades nativas de los dispositivos, pero no implementarn drivers ni servicios de bajo nivel.

2. ENTORNOS INDEPENDIENTES DEL DISPOSITIVO WML La estructura del WML se define mediante el XML y el correspondiente DTD. Si se genera un documento WML, siguiendo las especificaciones del XML, decimos que se est formateando correctamente y cuando el documento cumple con las especificaciones de su DTD, decimos que es vlido. Los documentos creados con el WML se componen de unas unidades mnimas de informacin,

12 Comunicaciones inalmbricas

cartas, que se estructuran en barajas, de manera similar a como los documentos HTML se componen de diferentes marcos de informacin. Las aplicaciones diseadas con el WML permiten al micronavegador que incorporan los terminales mviles navegar de manera sencilla hacia la carta anterior o posterior de uno o ms documentos. Cuando se navega por un contenido, el navegador guarda en su memoria toda la baraja, pero slo muestra una carta al usuario: as, la navegacin hacia otra carta no comporta un nuevo acceso a la red, lo cual disminuye el tiempo de respuesta y reduce el consumo de batera y procesador. Personal Java y JavaPhone Combinado con la plataforma Personal Java, el API JavaPhone proporciona el entorno ideal para una entrega de informacin fiable y dinmica a dispositivos de telefona. Esta nueva API se dise para proveer de acceso a las funcionalidades ms caractersticas de los telfonos mviles ms sofisticados y de pantallas de telfono con acceso a internet. El secreto para poder ejecutar el Java en dispositivos limitados es la reduccin del tamao de las clases que se instalan en el entorno de ejecucin. La versin Micro Edition elimina todas las clases innecesarias quedndose solamente con las que forman el ncleo bsico para la ejecucin de aplicaciones sobre dispositivos mviles y reduce estas clases eliminando todas sus funciones y procedimientos redundantes y duplicados.

Comunicaciones inalmbricas 13

TEMA 5 SEGURIDAD EN COMUNICACIONES INALMBRICAS

Tema 5 Seguridad en comunicaciones inalmbricas 1. La problemtica de la seguridad 2. Tecnologas de corto alcance: Bluetooth 3. El estndar IEE 802.11 4. Las tecnologas de gran alcance: GPRS

1. LA PROBLEMTICA DE LA SEGURIDAD Los cuatro conceptos clave de seguridad de la informacin son: Confidencialidad: Propiedad que asegura que slo tienen acceso a la informacin los que estn autorizados (privacidad). Integridad: Asegura la no alternacin de la informacin (insercin, borrado o sustitucin de la misma). Autenticacin: Hace referencia a la identificacin, es el nexo de unin entra la informacin y su emisor. No repudio: Asegura que ninguna parte pueda negar ningn compromiso o accin tomados anteriormente

La preocupacin por la seguridad en los entornos inalmbricos es creciente, ya que su uso para aplicaciones de comercio electrnico requiere un alto grado de seguridad. Cuando hablamos de tcnicas para prevenir la seguridad podemos hacer una distincin clara entre las que trabajan en el nivel fsico de la comunicacin y las que trabajan en el resto de niveles, tanto en el de enlace como el de aplicacin. Entre las tcnicas habituales en el nivel fsico hallamos las de difusin de espectro, que basan su funcionamiento en fraccionar la seal de radio y transmitirla de manera imperceptible por diferentes frecuencias: al no conocerse la manera en que se ha distribuido la seal por las diferentes frecuencias, no se puede reconstruir, ya que las distintas seales que se reciben en cada frecuencia, aisladamente son percibidas como ruido.

2. TECNOLOGAS DE CORTO ALCANCE: BLUETOOTH A la hora de estudiar la seguridad de las tecnologas de corto alcance, nos centraremos en la tecnologa de Bluetooth, ya que las tecnologas DECT y HomeRF son propietarias y un porcentaje mnimo de su informacin es pblica. Los dispositivos Bluetooth operan en tres modos de seguridad: Modo de seguridad 1, modo 2 y 3. El modo de seguridad 1 no incorpora ningn mecanismo de seguridad, permitiendo la conexin entre cualquier dispositivo y/o aplicacin. De hecho, no tendra que considerarse de seguridad, pero las especificaciones de la arquitectura as nos lo indican. El modo de seguridad 2 ofrece una seguridad dbil, es el llamado nivel de servicio, porque las restricciones se aplican cuando la comunicacin entre los dispositivos ya se ha efectuado. Pese a ello, se utiliza mucho porque si se restringen las conexiones a nivel de enlace no es posible disear aplicaciones ms abiertas, como el intercambio de tarjetas de negocio o la consulta de los servicios ofrecidos por un dispositivo. La poltica de seguridad en estos casos se basa en la informacin almacenada en dos bases de datos: la de dispositivos y la de servicios. La base de datos de dispositivos mantiene informacin de los requisitos de seguridad de los dispositivos de acuerdo con la confianza que se tiene en ellos. Se especifican dos niveles de confianza: Dispositivos de confianza: Han sido autenticados previamente, tienen una clave de enlace almacenada y en la base de datos estn marcados como dispositivos de confianza. Dispositivos untrusted: Autenticados tambin previamente, tienen una clave de enlace almacenada pero se aplican como de no confianza normalmente porque no se tiene con ellos una relacin permanente.

14 Comunicaciones inalmbricas

Por otro lado, la base de datos de servicios especifica las necesidades de seguridad de los distintos servicios: abiertos, con autorizacin o con autenticacin y autorizacin. El modo de seguridad 3 en el nivel de enlace es el sistema ms seguro especificado en la arquitectura Bluetooth, ya que las restricciones de seguridad se aplican antes de la conexin entre los dispositivos, as se minimiza el riesgo de ataques de dispositivos ya conectados. El proceso de autenticacin es de tipo reto-respuesta y requiere que los dos interlocutores conozcan un valor con anterioridad al proceso, que en este caso es la llamada clave de enlace. Aunque la arquitectura Bluetooth incorpora ciertos niveles de seguridad, existen puntos del diseo poco robustos: En el caso de no haberse dado una conexin previa entre los dispositivos, la clave de enlace se obtiene por medio de la clave de inicializacin. Esta clave se genera, bsicamente, a partir del PIN, ya que el valor aleatorio se transmite en claro de un dispositivo a otro. Teniendo en cuenta que los PIN estn formados por 4 dgitos, el nmero de posibilidades es bastante bajo. An es peor si se utiliza la clave de dispositivo como clave de enlace. La clave de dispositivo se general al inicializarse el dispositivo y raramente se cambia. Eso hace que cuando un dispositivo A ha usado su clave de dispositivo como clave de enlace para autenticarse ante B, el siguiente proceso de autenticacin de A ante un tercer dispositivo con su clave de dispositivo como clave de enlace no sea fiable: el dispositivo B podra hacerse pasar por A dado que conoce su clave de dispositivo.

Para finalizar, cabe destacar que los esquemas de seguridad que incorpora la arquitectura Bluetooth autentican dispositivos, pero no usuarios. Eso, junto con la poca longitud del PIN, hace que no sea adecuado para ciertas aplicaciones.

3. EL ESTNDAR IEEE 802.11 En el estndar IEEE 802.11 se especifican dos servicios de seguridad: uno para obtener la propiedad de autenticacin y el otro para la propiedad de confidencialidad e integridad. El servicio de confidencialidad del estndar IEEE 802.11 se basa en el algoritmo WEP. Este algoritmo proporciona las propiedades de confidencialidad e integridad. La confidencialidad se logra utilizando criptografa de clave simtrica, en particular el cifrador en flujo RC4. La integridad se obtiene mediante un ckecksum CRC32. Tal como dice el estndar, el algoritmo WEP pretende dotar a las redes inalmbricas de las mismas propiedades de seguridad que las redes con cables. Este argumento ha sido utilizado a menudo para rebatir los problemas de debilidad del algoritmo, ya que muchos de esos problemas tambin estn en las redes con cables. El proceso de descifrado de la informacin que lleva a cabo el receptor es exactamente el inverso al de cifrado que reproducimos en la imagen lateral. Como el RC4 es un criptosistema de clave compartida, la estacin y el punto de acceso necesitan intercambiar tanto el vector inicial VI como la clave K para poder comunicarse utilizando el WEP. Como el VI se enva en claro, la seguridad del algoritmo depende solamente de la clave. An as, hay que asegurar la integridad de la transmisin del VI, ya que si el VI utilizado por el emisor no es exactamente igual que el del receptor, los procesos de cifrado y descifrado no sern inversos. Este intercambio de informacin se realiza durante el proceso de autenticacin.

Comunicaciones inalmbricas 15

Sobre el proceso de autenticacin diremos que el estndar IEEE 802.11 tiene dos variantes: el OSA y el SKA. OSA es la implementacin obligada en el estndar y lo incluyen por defecto la mayora de los productos que se pueden encontrar en el mercado. Como su nombre indica (Open System Autenthication), es un sistema de autenticacin abierto y que, por lo tanto, no limita el acceso, cosa que implica que, desde el punto de vista de la seguridad, este sistema por s mismo no tiene inters. El mtodo SKA (Shared Key Autenthication) permite la autenticacin de las estaciones y los puntos de acceso por medio del algoritmo WEP, junto con un sistema de reto-respuesta. Este proceso de autenticacin consiste en el intercambio de 4 mensajes entre la estacin que se autentica y el punto de acceso. El sistema de intercambio de claves no implica el envo de claves en claro, pero requiere que la clave secreta compartida haya sido proporcionada por un canal seguro con anterioridad al proceso de autenticacin. El punto de acceso enva continuamente una seal de baliza para anunciar su presencia. Una estacin que quiera acceder a la red, al encontrar la seal de baliza, inicia el proceso de autenticacin con el punto de acceso cuya direccin figura en la seal de baliza. El proceso de intercambio de mensajes es el siguiente: La estacin enva un mensaje al punto de acceso para solicitar la autenticacin. El punto de acceso genera un reto de 128 bytes utilizando el algoritmo WEP a partir de un valor pseudoaleatorio, una clave K y un vector inicial VI. La estacin genera la respuesta utilizando el algoritmo WEP con el valor reto, la calve K y un VI diferente del que se ha usado en el paso anterior. El punto de acceso calcula la respuesta utilizando el algoritmo WEP con la clave compartida, el valor reto y el valor VI recibido de la estacin. Si ambas respuestas coinciden, la estacin ha sido autenticada correctamente. El diseo y el funcionamiento de las redes de rea local hacen que la captura del trfico de red sea simple, utilizando una tarjeta de red en modo promiscuo (que acepta todos los mensajes que le llegan). Si a esto le aadimos el hecho de que en las comunicaciones inalmbricas no se necesita estar conectado a la red para recibir la seal, tenemos que es relativamente fcil realizar un ataque sobre las mismas. Uno de los problemas aadidos que encontramos en el proceso de autenticacin es que el estndar slo obliga a implementar el modelo OSA, as que en muchos productos slo viene este modelo y cualquier estacin que sea capaz de generar tramas correctas se puede autenticar. Pero el proceso de autenticacin SKA tampoco est libre de problemas, uno de los principales es la longitud de la clave: el estndar fija en 40 bits esta longitud, y esto hace que sea lo suficientemente pequea como para poder intentarse un ataque de fuerza bruta, es decir, probando todas las combinaciones posibles. Este hecho deriva de un problema legal en EEUU. Cuando se fij este estndar una ley prohiba la exportacin de EEUU de criptografa fuerte (con claves de longitud grande), ya que consideraban esto como armamento. Por ello, muchos estndares que incorporan esquemas criptogrficos utilizan, como mximo, claves de 40 bits. En la actualidad esta ley ya no est en vigor, pero se siguen sufriendo sus consecuencias, como en este caso. Las recomendaciones de seguridad para el estndar actual son: Situar la red inalmbrica fuera del permetro de accin del firewall de la empresa y nunca en la red de la organizacin. Utilizar redes privadas virtuales para el acceso entre estaciones mviles de red inalmbrica y estaciones en el firewall de la empresa. Eliminar las rutas que permiten el acceso a internet por la red inalmbrica.

16 Comunicaciones inalmbricas

Tener una buena poltica de gestin de claves para que cada estacin tenga una clave de cifrado diferente y que estas claves se actualicen con frecuencia.

4. LAS TECNOLOGAS DE GRAN ALCANCE: GPRS Nos vamos a centrar en el GPRS dado que esta tecnologa se puede considerar como un servicio sobre GSM, y muchos de los procedimientos y algoritmos de seguridad se basan en los mismos principios. El proceso de autenticacin de un terminal en una red GPRS, al igual que sucede en las redes GSM, utiliza un modelo reto-respuesta. Los mayores problemas en la seguridad del sistema GPRS y tambin del GSM, recaen en el hecho de que utilizan sistemas propietarios, lo que dificulta su evaluacin por parte de la comunidad cientfica internacional. As, no se puede asegurar que los algoritmos sean lo suficientemente robustos para seguir siendo seguros en el caso de que la descripcin del algoritmo se hiciera pblica. Por otro lado, el proceso de autenticacin se basa en la clave que comparten el terminal y la operadora. Esta clave figura en la tarjeta SIM del usuario. Eso comporta que la clonacin de esta tarjeta implica la duplicacin de la identidad del usuario y, por tanto, todo el gasto que se realice con la tarjeta clonada se facturar al usuario legtimo.

Josep Prieto Blzquez, Gens Berbel Navarro, Jos Manuel Santos Villa, Silvia Gonzlez Gonzlez, Jordi Herrera Joancomart Febrero 2008

Comunicaciones inalmbricas

Texto elaborado a partir de:

Вам также может понравиться