Experto en eLearning Tecnologías y Métodos de Formación en Red Sistemas operativos, bases de datos y servidores Web Susana Álvarez Rosado Sergio Bravo Martín Iván Álvarez Navia Departamento de Informática y Automática Universidad de Salamanca [email protected] [email protected] [email protected] Febrero 2007 1 Experto en eLearning Tecnologías y Métodos de Formación en Red Índice Introducción .......................................................................................................... 1 Algunas conceptos iniciales ................................................................................. 2 El Sistema Operativo ........................................................................................... 4 Definición de Sistema operativo ................................................................................ 4 El sistema operativo como interfaz usuario/computador ................................... 5 El sistema operativo como administrador de recursos ....................................... 6 Historia ......................................................................................................................... 7 Prehistoria ............................................................................................................... 7 Primera etapa .......................................................................................................... 7 Segunda etapa ......................................................................................................... 8 Tercera etapa ........................................................................................................... 9 Cuarta etapa .......................................................................................................... 11 Sistemas operativos de mayor difusión ..................................................................... 12 MS Windows ......................................................................................................... 12 UNIX .................................................................................................................... 14 Funciones de un Sistema Operativo ..........................................................................17 Módulos de un Sistema Operativo ........................................................................... 18 El Núcleo ............................................................................................................... 18 Gestor de Memoria .............................................................................................. 19 Gestor de E/S ....................................................................................................... 20 Gestor de Ficheros .............................................................................................. 20 Asignación de Recursos y Planificación ............................................................. 20 Protección ..............................................................................................................21 Interfaz Usuario/Sistema Operativo ....................................................................21 El gestor de Bases de Datos ............................................................................... 22 Introducción ............................................................................................................... 22 Componentes ............................................................................................................. 22 Datos ..................................................................................................................... 22 Hardware ............................................................................................................... 22 Software ................................................................................................................ 23 Usuarios ................................................................................................................. 23 Definición ................................................................................................................... 25 Características ............................................................................................................ 25 Funcionalidades .......................................................................................................... 25 Independencia de los datos ....................................................................................... 27 Arquitectura de los sistemas de bases de datos ....................................................... 27 Niveles ................................................................................................................... 27 Transformaciones ................................................................................................. 28 Servidores Web ................................................................................................... 30 Introducción ............................................................................................................... 30 2 Experto en eLearning Tecnologías y Métodos de Formación en Red Arquitectura de la Web .............................................................................................. 31 Clientes Web ..........................................................................................................31 Servidores Web ......................................................................................................31 Protocolo de comunicación HTTP .................................................................... 32 Direccionamiento ................................................................................................. 32 Servidores Web ........................................................................................................... 33 Funcionamiento de un Servidor Web .................................................................. 33 Estructura del Servidor Web ............................................................................... 34 Información del Servidor Web ............................................................................ 35 Ejemplos ................................................................................................................ 37 Apache Web Server .............................................................................................. 37 Internet Information Server ................................................................................ 39 3 Experto en eLearning Tecnologías y Métodos de Formación en Red Introducción En este capítulo se presenta una visión general de los aspectos tecnológicos involucrados en un sistema e-learning. Si bien es cierto que el e-learning no se limita únicamente a un conjunto de herramientas informáticas, si resulta evidente que constituyen el esqueleto básico sobre el que se construye. Por ello resulta necesario comprender el funcionamiento de las herramientas que más habitualmente se encuentran en este tipo de sistemas. La Fig. 1 muestra el esquema simplificado de funcionamiento de un sistema e-learning típico. Navegador WWW (MS Internet Explorer, Firefox, ...) Internet Código SQL Gestor Base de Datos (MySQL, PosgresSQL, ...) Generación dinámica páginas HTML Envío páginas HTML Solicitud páginas HTML Solicitud páginas HTML Aplicación (PHP, Perl, Java,...) Páginas Datos HTML generadas Servidor Web (Apache, ...) Sistema Operativo (MS Windows, GNU/Linux, Solaris, Mac OS X, ...) Fig. 1: Esquema básico de funcionamiento sistemas e-Learning Un usuario, el estudiante, utiliza un navegador Web para conectar con el sistema. Básicamente lo que hace el navegador es solicitar a un servidor Web una página HTML (HyperText Markup Language, lenguaje de marcas hipertextuales), y éste responde enviando la página solicitada. Entonces el navegador se encarga de mostrarla correctamente al usuario. Sin embargo, el aspecto más relevante de este tipo de sistemas es que la página enviada no es estática, es decir, no existía tal cual se envía, sino que se genera dinámicamente en función de la solicitud realizada y los contenidos a enviar, dicha respuesta está adaptada a la petición realizada y al contexto de navegación. El elemento encargado de generar la página es una aplicación Web, generalmente escrita algún lenguaje como PHP, Java, ..., y que siguiendo unas pautas claramente establecidas, plantillas y tomando información necesaria construye la página solicitada y se la envía al Servidor Web. Generalmente, esta aplicación precisa información almacenada en un gestor de base de datos, para ello realiza una petición de dicha información mediante código SQL (Structured Query Language, lenguaje de consulta estructurado) al citado gestor y éste responde enviando los datos solicitados a la aplicación. 1 Experto en eLearning Tecnologías y Métodos de Formación en Red Como se puede apreciar las herramientas informáticas que se encuentran involucradas en la construcción de un sistema e-learning, según la Fig 1, son cuatro: el servidor Web, la aplicación Web (realmente es el sistema e-learning propiamente dicho al ser la responsable de implementar la lógica de funcionamiento), el gestor de base de datos y, por último, el sistema operativo que proporciona el contexto adecuado para que las anteriores puedan realizar adecuadamente sus tareas. Por lo tanto, en este capítulo se realiza una descripción de estas herramientas. Se comenzará con una definición de conceptos básicos, como informática, hardware y software. Y a continuación se centrará en aquellas que están más directamente relacionadas con un sistema e-Learning según la descripción anterior: sistema operativo, gestor de base de datos y servidor Web. Este software constituye el núcleo fundamental sobre el que se puede construir un sistema de este tipo, aunque no único. Otro tipo de tecnologías como lenguajes de programación, scripting, lenguajes de marcado, etc. constituyen herramientas poderosas también involucradas en esta tarea. Algunas conceptos iniciales El término informática es un vocablo que se deriva de la palabra francesa “informatique”, formada por la contracción de otras dos palabras información y automática. Se puede definir informática como “el conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores”. Otra definición de informática puede ser “el campo de conocimiento que abarca todos los aspectos del diseño y uso de los computadores” [Prieto et al., 2002]. Existen otros términos para referirse a la informática, entre los cuales cabe destacar ciencia de la computación o ciencia de los computadores ya que es la traducción del término inglés Computer Science, el cual se utiliza con asiduidad en la bibliografía anglosajona para referirse a la informática. Si el objetivo final de la informática es el procesamiento automático de la información, se necesita la máquina capaz de realizar dicho tratamiento, esto es el ordenador o computador. Definiciones de ordenador que pueden encontrarse en la bibliografía son: • “Todo aparato o máquina destinada a procesar información, entendiéndose por proceso las sucesivas fases, manipulaciones o transformaciones que su%e la información para resolver un problema determinado” . • “Máquina capaz de aceptar unos datos de entrada, efectuar con e)os operaciones lógicas y aritméticas, y proporcionar la información resultante a través de un medio de salida; todo e)o sin intervención de un operador humano y bajo el control de un programa de instrucciones previamente almacenado en el propio ordenador” . • “Máquina electrónica digital para el tratamiento de la información”. Respecto a esta última definición, aunque escueta, conviene hacer un repaso por el significado de cada uno de los términos que la componen. Así, la palabra electrónica implica que un ordenador se construye usando componentes electrónicos de estado sólido, conocidos por circuitos integrados, o más comúnmente por chips. La palabra digital hace referencia a que los ordenadores trabajan con datos en formato 2 Experto en eLearning Tecnologías y Métodos de Formación en Red digital; es decir, en códigos que representan las letras o los dígitos de los números. Cualquier otro tipo de datos, como puedan ser gráficos o sonido, se almacena también en formato digital. El formato digital significa que se emplea el sistema binario, esto es, los datos se almacenan en el ordenador por secuencias de ceros y unos. Esto es así porque el ordenador es un conjunto de sistemas físicos que sólo pueden entender dos estados. El término tratamiento de la información es un concepto general que da cabida a un enorme rango de actividades y trabajos que un ordenador puede llegar a realizar. Por último, la palabra máquina hace referencia a que los ordenadores están en la misma línea de sucesión que otras máquinas menos sofisticadas y, como una máquina que es, puede funcionar bien o mal, pero no es infalible Cualquier ordenador se apoya en dos pilares básicos que lo definen en sí mismo y le dan sentido a su existencia. Estos dos pilares son el soporte físico y el soporte lógico. El soporte físico, más conocido por hardware, es la máquina en sí, la parte física y tangible de un ordenador. Así pues, puede definirse el hardware como “el conjunto de dispositivos físicos (cables, armarios...) y circuitos electrónicos (tarjetas de red, controladoras, circuitos integrados...) que constituyen un ordenador”. El soporte lógico, que usualmente es conocido con el término software, es la parte que permite la explotación del hardware. El software se puede definir como “el conjunto de programas que dirigen el funcionamiento del ordenador”. El software y el hardware se encuentran íntimamente relacionados entre sí. El hardware establece la plataforma donde el software puede ejecutarse, y el software le da sentido a unos elementos físicos al ponerlos en explotación. Los programas que constituyen el software de un ordenador se pueden agrupar en: • Software de control o sistema de explotación Es el software encargado de controlar el funcionamiento de los programas en ejecución, administrando los recursos hardware y facilitando la utilización del ordenador de la forma más eficiente posible. Dentro de esta categoría se encuentran: • El sistema operativo • El interprete de órdenes • El software de diagnóstico y mantenimiento • Utilidades Conjunto de programas de servicio que, en cierta medida, se pueden considerar como una extensión del sistema operativo. Incluye programas como editores de texto, traductores (compiladores, interpretes) y cargadores útiles en la creación de programas software por parte de los programadores y desarrolladores. Otro tipo de programas son: utilidades para la compresión de datos, compactadores de discos, copias de seguridad, recuperación de datos, antivirus, ... • Software de aplicación Son todos aquellos programas relacionados con alguna aplicación específica como pueden ser: 3 Experto en eLearning Tecnologías y Métodos de Formación en Red • procesadores de texto (MS Word, OpenOffice, ...), • programas para resolver problemas estadísticos (SPSS), • cálculo matemático (MATEMÁTICA, MATLAB), • gestores de bases de datos (MySQL, PostgresSQL, MS ACCESS, ORACLE, ...), • hojas de cálculo (MS Excel, OpenOffice), • agendas electrónicas y gestores de correo electrónico (MS Outlook, Evolution), • navegadores Web (MS Ineternet Explorer, Firefox, Safari, Opera, ...), • mensajería (MSN, YAHOO, GTALK, ...) A la vista de las definiciones de software y hardware puede parecer que son dos conceptos claramente delimitados, pero esta frontera se diluye con el concepto de firmware, que se puede definir como “el conjunto de microprogramas empotrados en memorias de sólo lectura y destinados a resolver un proceso o problema particular y frecuente”. Por lo tanto el firmware es un soporte para programas que no se pueden alterar, siendo un estadio intermedio entre hardware y software. El Sistema Operativo Un Sistema Operativo es un programa o conjunto de programas que actúa como interfaz entre el usuario de un computador y el hardware del mismo, ofreciendo el entorno necesario para que el usuario pueda ejecutar programas de aplicación. Los dos objetivos fundamentales son: • Eficiencia: Un sistema permite que se utilicen los recursos de forma eficiente • Comodidad o facilidad de uso: Un sistema operativo hace que un computador sea más fácil y cómodo de usar Estos objetivos no son fácilmente compatibles, si se consiguen, se logra un buen sistema operativo. En los sistemas operativos modernos el objetivo fundamental es gestionar y administrar eficientemente los recursos hardware, permitiendo que se ejecuten concurrentemente varios programas, sin que haya conflictos en el acceso de cada uno de ellos a cada uno de los recursos que necesite, y sin que ningún programa monopolice alguno de ellos. Definición de Sistema operativo Se puede definir un sistema operativo como un programa (o conjunto de programas) de control que tiene por objeto facilitar el uso del ordenador y conseguir que ésta se utilice eficientemente. El sistema operativo es un programa de control, ya que se encarga de gestionar y asignar los recursos hardware que requieren los programas. Los recursos son: el procesador (UCP), la memoria, los dispositivos o periféricos de entrada/salida. Por ejemplo, si varios usuarios están utilizando la misma computadora, han de asignarse los recursos y evitar los conflictos que puedan surgir cuando dos programas requieran los mismos elementos (la misma unidad de disco o la impresora, por ejemplo). Esta es una de las funciones del sistema operativo. Además de esta función de asignar los recursos a cada programa, el sistema operativo se encarga de 4 Experto en eLearning Tecnologías y Métodos de Formación en Red contabilizarlos y de la seguridad (de que un usuario no pueda acceder sin autorización a la información de otro, por ejemplo). Si consideramos el segundo objetivo, el sistema operativo facilita el uso del ordenador. Por ejemplo, cada dispositivo de E/S, para ser utilizado, requiere varias instrucciones máquina que establezcan un diálogo entre las unidades centrales y el periférico, enviando o captando el dato de salida o de entrada, respectivamente. Estas instrucciones dependen considerablemente de las características concretas del periférico. Si se trata, por ejemplo, de una unidad de disco, hay que considerar el ancho de los buses, el tamaño de su memoria intermedia, el arranque (y parada) de los motores de la unidad, el código identificador de la posición a donde hay que acceder, etc. Por otra parte, estas instrucciones u operaciones son comunes para grabar o leer cual tipo de información (programas o datos), sea cual sea su naturaleza. El sistema operativo, con objetivo de facilitar el trabajo de los programadores, contiene módulos de gestión de entradas/salidas que evitan a los usuarios tener que incluir esas instrucciones cada vez que hacen una operación de entrada o salida. Se puede decir que estos programas del sistema operativo hacen transparente al usuario las características hardware concretas de los dispositivos. Y por último, El sistema operativo también hace que el ordenador se utilice de forma eficiente. Para poner de manifiesto cómo el sistema operativo puede incrementar la eficiencia considérese un ejemplo sencillo. Los programas tradicionalmente se ejecutan secuencialmente, es decir, hasta que no concluye la ejecución de una instrucción no se ejecuta la siguiente. Supongamos que dentro de un programa hay una instrucción que implica la escritura de una página en una impresora láser. Hasta que no acabe de imprimirse dicha página el programa no puede continuar ejecutándose. Para mejorar la eficiencia del sistema en estas situaciones el sistema operativo se encargará de gestionar y asignar recursos a los diferentes procesos que se tengan ejecutando para optimizar el rendimiento. Así pues un Sistema Operativo es el soporte lógico (software) que controla el funcionamiento del equipo físico (hardware); eficiencia, fiabilidad, facilidad de mantenimiento, y un pequeño tamaño serían las características deseables de este software. Un sistema operativo es un conjunto de programas que supervisan y controlan los programas de usuario para evitar errores y el uso inadecuado del computador. El sistema operativo controla, así mismo, las operaciones de E/S; podemos pues, entender por sistema operativo, una colección de programas cuya principal misión es gestionar los recursos del computador, y en consecuencia será el soporte lógico que controla el funcionamiento del equipo físico (hardware). El sistema operativo como interfaz usuario/computador El sistema operativo oculta los detalles del hardware a los usuarios y programadores y proporciona una interfaz adecuada para utilizar el sistema. Actúa como mediador (ver Fig. 2), facilitando al usuario y a los programas de aplicación el acceso y el uso de los medios y servicios del sistema. Un sistema informático engloba los cinco puntos siguientes: • el hardware (UCP o Unidad Central de Proceso o simplemente procesador, memoria, dispositivos de E/S) 5 Experto en eLearning Tecnologías y Métodos de Formación en Red • el sistema operativo • software de utilidad • los programas de aplicación (compiladores, sistemas de bases de datos, utilidades, videojuegos, programas de gestión... etc..) • los usuarios (personas, Máquinas u otros computadores) Los recursos básicos de un sistema informático, son el hardware, el software y los datos. El sistema operativo facilita los medios para la utilización adecuada de estos recursos durante las operaciones en el sistema informático. Usuario final Programador Programas de aplicación Utilidades Diseñador del sistema operativo Sistema operativo Hardware Fig. 2: El sistema operativo como interfaz de servicios Proporciona servicios en las siguientes áreas: • Creación de programas: Conjunto de utilidades que ayudan al programador en sus tareas de elaboración de programas (editores, compiladores, etc...). • Ejecución de programas: Para ejecutar un programa es preciso realizar una serie de tareas. Las instrucción y los datos deben cargarse en memoria principal, se deben iniciar los dispositivos de E/S y los ficheros , y deben prepararse otros recursos. • Acceso a los dispositivos de E/S: Cada dispositivo de E/S necesita su propio conjunto de instrucción y señales para poder operar. El S.O. aísla al usuario de estas particularidades, convirtiéndolas en simples operaciones de lectura/escritura. • Acceso controlado a los ficheros: Además de las particularidades del dispositivo que se trate (disco, cinta) se debe controlar el formato del fichero y el medio de almacenamiento. Además, en el caso de sistemas multiusuario deben existir mecanismos de seguridad. • Acceso al sistema: En el caso de sistema compartido o público, el sistema operativo controla el acceso al sistema como un todo y a los recursos específicos del sistema. El sistema operativo como administrador de recursos El ordenador es un conjunto de recursos para transferir, almacenar, y procesar datos y para controlar esas funciones. El sistema operativo es el responsable de administrar esos recursos. Sin embargo, el control lo realiza de una forma muy particular: 6 Experto en eLearning Tecnologías y Métodos de Formación en Red • El sistema operativo funciona de la misma forma que el software ordinario del computador, es decir, se trata de un programa ejecutado por la UCP • El sistema operativo frecuentemente cede el control y depende de la UCP para recuperarlo Por lo tanto, el sistema operativo es un programa más, pero con la diferencia de su objetivo: dirigir a la UCP en el uso de otros recursos del sistema y en la temporización de la ejecución de otros programas. Historia En este apartado se va a presentar la evolución histórica de los sistemas operativos, haciendo especial hincapié en los avances tecnológicos más relevantes y agrupando dichos avances en las etapas tiempo más significativas. Se terminará haciendo un repaso a los sistemas operativos más populares. En la bibliografía se suele agrupar la evolución en el tiempo de los avances de los sistemas operativos en cuatro etapas o generaciones. Prehistoria Durante esta etapa, que cubre los años cuarenta, se construyen los primeros ordenadores. Como ejemplo se puede citar el ENIAC (Electronic Numerical Integrator Analyzer and Computer), financiado por el Laboratorio de Investigación Balística de los EEUU. La principal característica de estos primeros ordenadores era que no existían los sistemas operativos. La UCP sólo podía ejecutar un programa de cada vez (es lo que se conoce como monoprogramación), que se introducía mediante tarjetas perforadas. Todos los trabajos se realizaban en serie; se introducía un programa en el ordenador (manualmente), se ejecutaba y se imprimían los resultados, y se volvía repetir el mismo proceso con el siguiente trabajo. Una de las mejoras que se introdujo fue el manejo de la máquina por un especialista en operación (operador), cuya misión era: • controlar el sistema • cargar el programa que creaba el programador • obtener resultados Estas operaciones no utilizaban toda la capacidad de proceso de la UCP, pues dejaban tiempos de UCP sin ocupar, aun cuando se agrupaban los trabajos con una necesidad común de recursos (físicos y lógicos), y se ejecutaban como si fueran un bloque. Primera etapa En los años cincuenta se observa que gran parte del trabajo que realizaba un operador era bastante mecánico y podía ser automatizado, ganando tiempo. Se desarrolló un pequeño programa que permanecía constantemente en memoria (residente), y que transfería automáticamente el control de un trabajo a otro. A este programa se le denominó monitor y es considerado como el primer sistema operativo. La forma de trabajar del monitor era la siguiente: • En el momento de encender la computadora se daba el control al monitor • El monitor preparaba la carga y ejecución del primer trabajo o tarea a ejecutar • El monitor cedía el control al trabajo cargado 7 Experto en eLearning Tecnologías y Métodos de Formación en Red • Cuando el trabajo en ejecución terminaba, el monitor tomaba de nuevo el control, dando paso al segundo de los trabajos, y así sucesivamente El programa monitor contenía las siguientes partes: • El secuenciador automático de trabajos • El intérprete de tarjetas de control • Controladores software de entrada/salida (drivers) Tanto la introducción de las instrucciones de los programas, como los datos con lo que debían trabajar y como las secuencias de control del monitor se realizaba mediante tarjetas perforadas. Existían tres tipos de tarjetas: • Programa: introducción de instrucciones del programa a ejecutar. • Datos: introducción de datos del programa. • Control (JCL, Job Control Language): sirven para controlar e instruir al programa monitor. Segunda etapa Durante los años 60 se comienza a estudiar mejoras de rendimiento atendiendo a los periodos de tiempo en que el procesador está inactivo. Cuando un procesador está trabajando, los dispositivos de E/S están inactivos, y cuando un dispositivo de E/S está actuando el resto de las unidades, incluido el procesador, permanecían inactivos. Esta circunstancia suponía un importante desaprovechamiento de prestaciones. Se plantearon entonces las siguientes mejoras: Operaciones OFF-LINE Para realizar la comunicación con los periféricos se desarrollaron los procesadores satélites, que descargaban el trabajo del procesador central, optimizando el tiempo de UCP. Los procesadores satélites se encargaban de grabar una imagen de las tarjetas perforadas en cintas magnéticas (de acceso secuencial, pero mucho más rápidas que las lectoras de tarjetas), de donde las cargaba la UCP. Memorias intermedias o buffers El Buffering trata de mantener permanentemente ocupados tanto la UCP, como los dispositivos de E/S, para ello se utiliza una zona de memoria intermedia, denominada buffer, en la propia memoria principal del computador. Los datos que se transmiten de memoria al periférico, y viceversa, son volcados en el buffer donde están disponibles para ser utilizados. Por ejemplo, para la salida de datos a un dispositivo de salida: • La UCP vuelca los datos al buffer (memoria intermedia) hasta que el dispositivo de salida pueda aceptarlos. • Cuando el dispositivo de salida vacíe el buffer, reclamará tiempo de UCP mediante un línea de interrupción habilitada para tal efecto, la UCP dejará la tarea que esté haciendo para atender la interrupción, que en este caso consistirá en volver a llenar el buffer e instruir al dispositivo para que inicie la lectura de los datos. Dependiendo de lo rápido que sea el dispositivo periférico existen dos tipos de dispositivos: • los que transfieren información carácter a carácter (la pantalla y el teclado) 8 Experto en eLearning Tecnologías y Métodos de Formación en Red • los que lo hacen por bloques de caracteres (los discos, tanto fijos como los extraibles Por último, hay dispositivos de E/S que realizan acceso directo a memoria, sin necesidad de ocupar tiempo de UCP, son los dispositivos con DMA (Direct Access Memory, Acceso Directo a Memoria). Son dispositivos de E/S de velocidad con transferencia de datos próxima a la de memoria, y que no necesitan de la UCP para realizar la transferencia de información con la memoria. Spooling La idea es la misma que en los sistemas off-line pero se sustituye la cinta (acceso secuencial, una vez escrita hay que rebobinarla antes de poder leerla) por el disco (acceso directo, más rápido). El funcionamiento es el siguiente: • Las tarjetas perforadas se leen directamente sobre el disco desde la lectora de tarjetas. • La posición de las imágenes de las tarjetas se registra en una tabla mantenida por el sistema operativo. En la tabla se anota cada trabajo una vez leído. • Cuando se ejecuta un trabajo sus peticiones de entrada desde la lectora de tarjetas se satisfacen leyendo el disco. Análogamente, cuando el trabajo solicita la salida de una línea por la impresora, esta línea se copia en el buffer del sistema y se escribe en el disco. Cuando la tarea se ha completado, la salida se imprime realmente buscando los datos en el disco. Las diferencias entre buffering y spooling son que el buffering solapa la E/S de un trabajo con su propio tratamiento (procesamiento), y el spooling solapa la E/S de un trabajo con el procesamiento de otro. Se trabajaba con sistemas de colas simples o sistemas en batch, es decir, los trabajos se colocan en una cola y se van ejecutando uno tras otro, de forma secuencial. Comenzaron a aparecer distintas aproximaciones para conseguir un mayor rendimiento del sistema, evitando la situación en que la UCP se quedaba sin trabajo. Tercera etapa Finales de los 60 y década de los 70. Se comienza a utilizar el concepto de multiprogramación como remedio para incrementar el rendimiento. Un programa en ejecución en un ordenador se denomina proceso. Desde el punto de vista de ocupación de tiempo de procesador y de los dispositivos periféricos, se puede diferenciar dos tipos básicos: • Procesos limitados por procesamiento. Son aquellos que consumen la mayor parte de su tiempo en el tratamiento de la información y muy poco en operaciones de entrada/salida. • Procesos limitados por operaciones de E/S. Son aquellos que dedican la mayor parte del tiempo a operaciones de E/S, haciendo poco uso de el procesador, que se mantiene inactivo durante grandes períodos de tiempo. Obviamente un proceso particular puede estar decantado hacia un lado u otro, o bien situado en una situación intermedia. 9 Experto en eLearning Tecnologías y Métodos de Formación en Red El segundo tipo de proceso dio lugar a una nueva técnica denominada multiprogramación, que consiste en aprovechar la inactividad del procesador durante la ejecución de una operación de E/S de un proceso, atendiendo a otro proceso. En estas condiciones nos encontraremos con varios problemas: • Se deben realizar una serie de tareas que permitan la concurrencia de procesos: cambio de contexto • Se hace necesario algún tipo de administración de la memoria, ya que ésta tiene que ser compartida por los distintos procesos • Es necesaria una política de asignación de recursos, para evitar situaciones de “abrazo mortal 1” cuando dos procesos intentan acceder simultáneamente a dos recursos bajo determinadas condiciones. Con el uso de la multiprogramación, el procesamiento en colas puede ser bastante eficiente. Sin embargo, en alguno casos es necesario un modo interactivo. Igual que la multiprogramación permite que el procesador ejecute varios procesos de la cola en un intervalo de tiempo. Sin embargo, en este caso el cambio entre procesos ocurre tan frecuentemente que el usuario puede interactuar con cada programa mientras se está ejecutando. Un sistema operativo de tiempo compartido utiliza una planificación de la UCP y multiprogramación para proporcionar a cada usuario una pequeña porción de tiempo de procesamiento, denominado cuantum (habitualmente 100 ms). El proceso se ejecuta realmente durante un corto periodo de tiempo antes de que, o bien se termine su cuantum, o bien necesite realizar una operación de E/S. La operación de E/S puede ser interactiva (suele ser habitual), es decir, se llevará a cabo a “velocidad humana”, lo que implica que puede llevar un tiempo largo su finalización. La responsable de interrumpir la ejecución de un proceso cuando termina su cuantum es la UCP, dándole el control al S.O. que se encargará de realizar el correspondiente cambio de contexto. Si consideramos dos dimensiones podemos establecer la clasificación de la tabla 1: • La primera dimensión especifica si se trata de un sistema de colas (batch) o interactivo: • Sistema de colas: El programa de usuario se introduce en una cola junto con programas de otros usuario, enviados todos por el operador del computador. • Sistema interactivo: El usuario/programador interactúa directamente con el computador para solicitar la ejecución de un trabajo o incluso, dependiendo de la aplicación, comunicarse con la misma. • La segunda dimensión especifica si un sistema es multiprogramado o no: • Sistema multiprogramado: Varios programas está cargados en memoria principal del computador. • Sistema monoprogramado: Sólo un programa en memoria principal, sólo se ejecuta un programa en cada momento. 1 Del inglés deadlock 10 Experto en eLearning Tecnologías y Métodos de Formación en Red Atendiendo a estas dos dimensiones se pueden clasificar los sistemas operativos según esta tabla: Sistema de colas Monoprogramado Multiprogramado Interactivo Simple Sistema dedicado Sofisticado Tiempo compartido Tabla 1: Clasificación de sistemas operativos. También aparecen otras aproximaciones de sistemas operativos multiprogramados como los sistemas de tiempo real. En este tipo de sistemas se necesita un tiempo de respuesta pequeño ante cualquier petición. Suele emplearse en aplicaciones dedicadas a sistemas de control con sensores como elementos de entrada, donde es necesaria una respuesta rápida sobre el sistema a controlar. Podemos decir que un sistema trabaja en tiempo real si el tiempo de respuesta permite controlar y regular el medio sobre el que opera. Cuarta etapa Aproximadamente desde los años 80 hasta la actualidad, se caracteriza por el desarrollo de sistemas operativos para ordenadores personales (CP/M, MacOS, MSDOS, OS/2,...) y para estaciones de trabajo (UNIX, MS Windows NT,...) y, en los últimos años, un avance muy significativo en las interfaces gráficas de usuario, IGU2 así como otros paradigmas de interacción con el usuario como la realidad virtual o la computación ubicua. Los avances tecnológicos, el crecimiento de las redes (Internet) y la aparición de ordenadores con varios procesadores provocan una evolución de los sistemas operativos para aprovechar al máximo dichos avances. Sistemas Distribuidos Una tendencia actual en sistemas informáticos es la creación de redes locales de ordenadores, lo que permite: • Compartir recursos • Incrementar la velocidad de procesamiento. Procesamiento paralelo con memoria distribuida, mediante paso de mensajes • Fiabilidad • Comunicaciones. Correo electrónico, videoconferencia, etc. Sistemas Multiprocesador Uno de los problemas actuales en el proceso de datos ha sido la aparición de aplicaciones que manejan gran cantidad de datos, que un único procesador no es capaz de procesar en el tiempo requerido. Aunque puede ser resuelto por un sistema distribuido, hoy en día aparecen sistemas multiprocesadores con varios microprocesadores compartiendo memoria, buses y reloj. Más fáciles de programar y más rápidos, no hay una sobrecarga en tiempo por el paso de mensajes, pero tecnológicamente más complejos. 2 En inglés GUI, Graphical User Interface 11 Experto en eLearning Tecnologías y Métodos de Formación en Red Sistemas operativos de mayor difusión MS Windows Nació simplemente como una aplicación que necesitaba del DOS (MS Windows 3.1) pero el tiempo y los usuarios demandaron que se convirtiera en un sistema operativo completo (MS Windows 95 y MS Windows 98). Es el más utilizado hoy en día en todo el mundo, lo que no significa que sea o no el mejor. Fue diseñado para facilitar la comunicación entre el usuario y el ordenador. Para ello convierte la pantalla del ordenador en una especie de escritorio (un conjunto de carpetas y una papelera). Es lo que se denomina habitualmente como “metáfora del escritorio” y fue popularizada inicialmente por Apple con su Mac OS. Pone al alcance del usuario la tecnología plug and play que simplifica la tarea de configurar los dispositivos periféricos que se conecten al ordenador, permite al usuario etiquetar sus archivos como desee, facilita la tarea del intercambio de datos entre programas diferentes y está especialmente diseñado para que el usuario pueda trabajar con las tecnologías multimedia. Entre sus características caben destacar las siguientes: multitarea, una interfaz de usuario muy intuitiva y una estabilidad y seguridad sólo relativas. También surgió entre los usuarios una demanda que obligó a Microsoft al desarrollo de un sistema operativo que aprovechara la interfaz Windows, pero orientado al mundo empresarial. Ese embrión fue denominado y posteriormente bautizado como Windows NT. Windows NT es un sistema operativo multiusuario y proyectado para actuar en servidores de archivos, impresoras y otros sistemas, a los que se accede a través de redes de área local (LAN) o Internet. Incluye funciones de seguridad para grupos de usuario, autentificación de usuarios y control de acceso a los recursos compartidos de la red. Admite unidades RAID de discos. Entre otras características, aparece la multiprogramación, la alta estabilidad y seguridad. Sus inconvenientes principales son los excesivos recursos que necesita para poder ser utilizado en una red medianamente grande. Las siguientes versiones basadas en la tecnología NT de Microsoft fueron Windows 2000, orientado a estaciones de trabajo en red, y Windows Server 2003. El primero está disponible en cuatro versiones: Professional, Server, Advanced Server y Detacenter Server y está orientado a usuarios finales. El segundo está más orientado a entornos de servidores. La penúltima versión, Windows XP esta enfocado a los usuarios, tanto domésticos como profesionales. Se distribuye en cuatro versiones diferentes: XP Home Edition (enfocada a los usuarios domésticos), XP Profesional (enfocada a usuarios más avanzados) y dos versiones especiales: XP Media Center Edition (especializada en tecnologías multimedia) y XP Tablet PC Edition (versión exclusiva para la nueva generación de dispositivos Tablet PC). Windows CE es una versión simplificada ideada para equipos informáticos miniaturizados como PDA’s o televisiones conectables a Internet, etc. Recientemente (febrero 2007) Microsoft ha publicado la última versión de sus sistemas operativos: MS Windows Vista, orientado tanto al mercado empresarial 12 Experto en eLearning Tecnologías y Métodos de Formación en Red como al doméstico, con amplias capacidades multimedia, de comunicación y una atención especial a las cuestiones de seguridad, faceta muy criticada en sistemas anteriores de la compañía. Otro aspecto muy cuidado de Vista es la interacción con el usuario, se mejora notablemente con atractivos efectos gráficos en 3D. Fig. 3: Captura MS Windows Vista. ALT-TAB cambio de aplicación. Fig. 4: Captura de MS Windows Vista. Barra lateral de gadgets activada. 13 Experto en eLearning Tecnologías y Métodos de Formación en Red UNIX En la década de los 60 se lleva a cabo el proyecto Multics (GE-645), con el objetivo de crear un sistema operativo multiusuario. Desarrollado por el MIT3, Bell Laboratories y GE. Al final fracasó, la tecnología no estaba suficientemente madura. En la década de los 70 Ken Tompson, Dennis Ritchie y otros investigadores de Bell Laboratories desarrollan UNIX 4 partiendo de ideas simplificadas de MULTICS en una PDP-7 y finalmente en una PDP-11. La principal característica era que un único usuario puede crear fácilmente un proceso. En el año 1973 se rescribe en un lenguaje de alto nivel: lenguaje C en vez de ensamblador, con lo se gana en portabilidad a otras arquitecturas. Bell Laboratories controla las versiones de UNIX para investigación, que se numeran de 1 a 6. Entre las características más relevantes se pueden citar: • Escrito en C, sólo una pequeña parte se mantiene en ensamblador y es específica del HW. • Distribución de licencias y código fuente a investigadores (Universidades). Clave para su desarrollo y éxito entre los usuarios. De hecho una de ellas, la Universidad de California en Berkeley, inicia su propio desarrollo dando lugar a una de las familias UNIX de más éxito: BSD (Berkeley Software Distributions). • Diseño que permite a un usuario ejecutar varios procesos simultáneamente y conectarlos mediante flujos de datos (streams). En la década de los 80 Bell Laboratories/AT&T cambia la política de distribución de UNIX. Bajo esta nueva política se distribuyen, a partir de 1983, las ediciones: System III, System IV y System V. Surgen también los grupos de desarrolladores y usuarios5, protagonistas fundamentales del rápido desarrollo de UNIX. En la década de los 90 se produce la edición de SYSTEM V, Release 4, junto con un nuevo cambio en la política de licencia y distribución. Surgen problemas y litigios legales con otras líneas de desarrollo (BSD, Universidad de California, Berkeley). Se produce la adquisición por parte de Novell de todos los derechos sobre el código fuente original UNIX de Bell Laboratories/AT&T, incluida la demanda por licencias con la Universidad de California. A partir de entonces se produce un cambio de nombre y la evolución sobre la línea UNIXware. Posteriormente Santa Cruz Operation (SCO) adquiere la licencia y lo comienza a comercializar bajo el nombre de SCO UNIX. ¿Y qué pasa con la rama BSD? En la década de los 80 la Universidad de California en Berkeley inicia y mantiene el desarrollo UNIX, partiendo de la rama principal. Bell Laboratories/AT&T establece unos acuerdos contractuales que permiten la 3 MIT acrónimo de Massachusetts Institute of Technology, Instituto Tecnológico de Massachusetts 4 El nombre surge como resultado de un juego de palabras con el nombre de su antecesor, MULTICS, siendo inicialmente UNICS 5 USG: UNIX Support Group; USDL: UNIX System Development Laboratory; USL: UNIX System Laboratory, división comercial de AT&T; PWB: Programmer’s Work Bench, a través del USG 14 Experto en eLearning Tecnologías y Métodos de Formación en Red distribución entre Universidades, lo que resulta fundamental en el éxito de popularidad de UNIX. Esta nueva familia pasa a denominarse Berkeley Software Distributions, BSD. Actualmente esta denominación se ha vuelto a dividir, siendo las dos ramas más extendidas FreeBSD y NetBSD. Debido a problemas sobre la propiedad intelectual del código UNIX se produce un litigio con el USL. Ya en la década de los 90, BSD gana el litigio a Novell, de hecho llegan a un acuerdo extrajudicial por el que la Universidad de California, Berkeley, puede seguir con sus distribuciones. USG, USDL y USL 1969 Bell Labs BSD Primera edición Sexta edición PWD 1 BSD 1980 Xenix System III Sun OS System V 1990 4 BSD UNIXware Solaris Linux 4.4 BSD SCO UNIX Solaris 2 FreeBSD 2000 Fig. 5: Familias UNIX. Un aspecto que suele sorprender al usuario no familiarizado con UNIX es la variedad familias existentes. Las primeras ediciones de Bell Laboratories se distribuían en código fuente, que además podía ser modificado e, incluso, distribuido con dichas modificaciones, por los usuarios. Así, a lo largo de los años, distribuciones varias, litigios y acuerdos, se van produciendo varias escisiones y fusiones de diferentes líneas o familias (Fig. 5) según disposiciones legales de las licencias de uso y distribución activas en cada momento. Durante los años 70-80 la familia más relevante, y la que marca el estándar UNIX es la familia de AT&T. Actualmente existen mezclas de propiedad intelectual entre las diferentes familias. Entre las familias UNIX más conocidas se encuentran: • AT&T, la original de los Bell Laboratories. Considerada como la familia pura de UNIX. Principales sistemas: SYSTEM III y SYSTEM V. 15 Experto en eLearning Tecnologías y Métodos de Formación en Red • BSD, Universidad de California, Berkeley. Originada por el licenciamiento de UNIX a Berkely. Incorporación de su propia propiedad intelectual: protocolos TCP/IP. Ampliamente difundida con licencias de código abierto. • AIX, IBM. Licenciamiento de UNIX System III a IBM • Xenix, Santa Cruz Operation, SCO. Adquisición de derechos originales de AT&T por parte de SCO (primero por Novell) • GNU/Linux, software libre. Se trata del conjunto de herramientas GNU, más el kernel (núcleo) Linux. Cumple con el estándar POSIX. No deriva de una rama oficial UNIX (Fig 6 y 7). Las implementaciones son sistemas operativos UNIX distribuidos, bajo algún tipo de licencia concreto, bien propietario por parte de alguna empresa, bien abierto, bien libre distribución. Entre los más relevantes tenemos: • Solaris, SUN MicroSystems. Rama BSD, actualmente parcialmente liberado. • HP-UX, Hewlett Packard. • AIX, IBM. System III y System V. • MacOS X, Apple Computer. Mach Microkernel, BSD (OpenDarwin) abierto. • Distribuciones GNU/Linux: Debian, Fedora (RedHat), Suse y OpenSuse (Novell), Ubuntu, .... La definición de estándares entorno a UNIX suponen un esfuerzo por conseguir una uniformidad entre todas las familias e implementaciones. Actualmente, debido a la gran variedad de familias existen muchas divergencias a diferentes niveles (llamadas al sistema, órdenes UNIX, etc.). Los más conocidos: • IEEE, POSIX y POSIX.2 (Portable Operating System Interface). • AT&T, SVID (System V Interface Definition). • Europa, X-OPEN, sigue el POSIX. Fig. 6: Captura de OpenSuse, una de las distribuciones GNU/Linus más populares. 16 Experto en eLearning Tecnologías y Métodos de Formación en Red Fig. 7: Captura de OpenSuse, mostrando unos de los efectos 3D de su escritorio. Funciones de un Sistema Operativo Las funciones de un sistema operativo pueden clasificarse de forma general en: • Asignación de tiempos de UCP: La asignación de tiempos de UCP, consiste en planificar las distintas actividades que tienen o van a tener lugar en el computador, y a las cuales habrá que dedicar tiempo de UCP. • Control de recursos: El control de recursos consiste en asignar los recursos del computador de una forma racional. Entre las tareas más importantes a la hora de asignar recursos se encuentran: • la división de la memoria del computador entre los programas • la asignación de espacio en las unidades de almacenamiento masivo para programas y datos • controlar las colas para los dispositivos de salida • Control de Entrada/Salida: El control de entrada/salida consiste en gestionar los canales de datos hacia y desde los periféricos. • Control de Errores y Protección : El control de errores, y la protección frente a éstos, supone informar de cualquier condición anómala al tiempo que se intenta minimizar su efecto sobre el resto del sistema informático. • Interfaz con el operador: La interfaz con el operador proporciona a la persona que utiliza el computador, facilidad para el uso del computador. • Facilidades contables: Las facilidades contables permiten facturar a los usuarios el importe que supone su uso de los recursos del computador de acuerdo a una tabla de costes previamente establecida. 17 Experto en eLearning Tecnologías y Métodos de Formación en Red Módulos de un Sistema Operativo Para poder cumplir con las funciones anteriormente expuestas, un sistema operativo contaría, típicamente, con los siguientes módulos (Fig. 8): • Núcleo • Gestor de memoria • Gestor de Entrada/Salida • Planificador de procesos y asignación de recursos • Administrador de almacenamiento masivo o de ficheros Otros elementos importantes en cualquier sistema operativo son: • Protección • Interfaz de usuario • Memoria virtual Un esquema podría ser el siguiente: El sistema operativo Interfaz de usuario Gestor de Memoria Gestor de E/S Gestor de Ficheros Administrador de recursos Planificador Kernel o núcleo del SO Hardware Fig. 8: Módulos de un sistema operativo. El Núcleo Es el módulo de nivel más bajo y descansa directamente sobre el hardware del computador. Su función es proporcionar una serie de servicios de bajo nivel a las capas superiores del sistema operativo. Entre las tareas que desempeña el núcleo están: • El manejo de interrupciones: Cuando el hardware del ordenador detecta una interrupción, el control se transfiere al módulo de control de interrupciones del núcleo, que analiza el carácter de la interrupción y toma las acciones apropiadas. Estas acciones suelen consistir en transferir el control a otro módulo del sistema operativo, iniciar otro programa o continuar la ejecución del programa interrumpido. Dado que muchas interrupciones tienen lugar por motivos de entrada/salida, el módulo de gestión de E/S, es uno de los módulos a los que el control se transfiere con más frecuencia. 18 Experto en eLearning Tecnologías y Métodos de Formación en Red • La asignación de trabajo al procesador: Para asignar trabajo al procesador, el núcleo transfiere el control al programa que el planificador ha determinado que sea el próximo en ejecutarse. • El proporcionar una vía de comunicación entre los distintos programas: La comunicación entre programas se logra manteniendo una cola de mensajes en espera, para cada uno de los programas activos. El núcleo, recibe los mensaje y los va almacenado en la cola apropiada al destino en cuestión, para distribuirlos cuando el programa destino se active. La mayoría de los procesadores disponen de instrucciones en lenguaje máquina cuyo uso está restringido al núcleo del sistema operativo, es lo que se suele denominar modo dual de trabajo. Estas instrucciones restringidas suelen incluir órdenes que transfieren el control de un programa a otro, y así mismo, instrucciones que acceden a determinados registros. Restringir las instrucciones es una forma de controlar el funcionamiento global del computador y limitar los efectos de los errores. Gestor de Memoria El sistema operativo debe satisfacer una serie de requisitos, tanto de usuario como del administrador del mismo. Para ello, el módulo de gestión de memoria debe cumplir con cuatro responsabilidades: • Aislamiento de procesos. • Asignación dinámica de memoria a los procesos, transparente al usuario. • Soporte para la programación modular. • Control de acceso y protección. Se debe dar soporte a la compartición de áreas de memoria, sin que esto interfiera con el primer punto. El espacio de direccionamiento lógico de un proceso tiene que encontrarse en memoria física, antes de que el proceso pueda ser ejecutado. Esto es, la parte del programa que se esté ejecutando, debe estar cargada en memoria física. La memoria virtual es una técnica de gestión de memoria, que permite la ejecución de programas que no pueden hallarse en su totalidad en la memoria principal, ya que ocupan más memoria de la disponible. Se combinan hardware y software, permitiendo la ejecución de programas cargados parcialmente en memoria principal. Con lo que se tienen las siguientes ventajas: • Si los programas se pueden ejecutar por partes, la memoria lógica puede ser mayor que la real disponible. • Cuando los programas ocupan menos memoria que la memoria principal disponible, se puede elevar el índice de multiprogramación, y por tanto, la eficiencia del sistema. La memoria virtual está basada en el uso de las siguientes técnicas: • segmentación • paginación • una combinación de segmentación y paginación 19 Experto en eLearning Tecnologías y Métodos de Formación en Red Gestor de E/S Los problemas asociados con la E/S de datos tienen como origen el que los dispositivos de E/S tiene distintas características y diferentes velocidades. El módulo de control de E/S trata estos problemas presentando al programador la E/S como una cuestión independiente del dispositivo. Estas funciones que proporciona este módulo del sistema operativo se activan mediante lo que se denominan llamadas al sistema. Normalmente estas llamadas son del tipo: abrir y cerrar el dispositivo, escribir y leer. Una técnica muy habitual es el uso de spoolers. Los datos se almacenan de forma temporal en una cola hasta que el dispositivo esté libre para recibir dichos datos. Gestor de Ficheros Los dispositivos de almacenamiento masivo de un computador constituyen el sistema físico, donde se depositan de una forma permanente los datos y los programas de los usuarios. El módulo encargado de la gestión de estos dispositivos tiene la misión de mantener la estructura de esta información y asegurar el uso eficiente de estos medios. Los datos y programas de un dispositivo de almacenamiento masivo, se mantienen en archivos. El módulo de gestión supervisa la creación, actualización y eliminación de los archivos. Lógicamente este módulo debe cooperar con el módulo de gestión de memoria durante la transferencia de datos desde y hacia la memoria principal. Algunos archivos contienen información que puede ser compartida, otros son de carácter privado e incluso secreto. Por tanto, cada archivo está dotado de un conjunto de privilegios de acceso, que indican la extensión con la que se puede compartir la información contenida en el archivo. Asignación de Recursos y Planificación La mayor parte del tiempo que un computador está funcionando, existe una demanda mayor de recursos que los que realmente existen, esta situación implica la necesidad de una política de asignación de recursos. La solución sería sencilla si fuera posible utilizar una política directa del tipo “se atenderá primero al que antes lo solicite”, sin embargo esta política puede llevar a situaciones denominadas de abrazo mortal bajo determinadas condiciones: • Exclusión mutua. • Mantener y esperar. • Planificador no apropiativo. • Espera circular. El planificador se ocupa fundamentalmente de asignar tiempo de procesador a los programas, de acuerdo a una cierta política de planificación, que varía notablemente de un sistema operativo a otro. Normalmente, se hace uso de una cierta jerarquía de prioridades, que determina la colocación en la cola de espera de tiempos de UCP, y en consecuencia, como se asignará el tiempo de UCP a cada programa. 20 Experto en eLearning Tecnologías y Métodos de Formación en Red Las políticas de planificación no deben ser muy complicadas, ya que sino el procesador empleará mucho tiempo en decidir que es lo que se debe de hacer a continuación. Protección Cuando en un ordenador existen diferentes programas ejecutándose simultáneamente resulta imprescindible protegerlos entre sí. Obviamente, el primer programa a proteger será el propio sistema operativo. La protección tiene lugar mayoritariamente contra dos procesos: • errores • abusos deliberados de los recursos del sistema Aunque es imposible el sistema operativo pueda prever los errores de los programas de aplicación, es esencial detectarlos y diagnosticarlos lo antes posible, para limitar sus efectos. Especial interés tiene la seguridad de la memoria principal y de los medios de almacenamiento masivo. Algunos sistemas operativos asignan diversos niveles de privilegio a los programas que se están ejecutando en el sistema. El núcleo del sistema operativo tiene el grado más alto, mientras que los programas de aplicación se encuentran en el nivel más bajo. Interfaz Usuario/Sistema Operativo Es necesario facilitar el uso de los ordenadores, e independizar los recursos del sistema, en cuanto a sus características de funcionamiento físico, y su utilización. En un sistema multiacceso la comunicación, entre el usuario y el sistema operativo, es interactiva. El usuario puede ir dando órdenes al sistema operativo desde un terminal y recibir, en el mismo terminal, los mensajes con los que responde el sistema. La interfaz entre el sistema y la persona responsable del sistema esta constituida por órdenes y mensajes. El usuario puede dirigir gran parte de la funciones del sistema operativo. Esto se aplica particularmente a la planificación y asignación de recursos. En todo momento el usuario tiene el control global del computador. Actualmente han ganado gran importancia las interfaces gráficas de usuario. Hacen uso de símbolos de la vida cotidiana6, fáciles de relacionar con las tareas que realizan, lo que ayuda al usuario en sus tareas cotidianas. 6 La metáfora del escritorio, presente en todos los sistemas operativos actuales, se representa la información y la interacción con el usuario mediante la representación gráfica de objetos cotidianos y reconocibles, presentes en una oficina real (carpeta, documento, papelera, etc.) 21 Experto en eLearning Tecnologías y Métodos de Formación en Red El gestor de Bases de Datos Introducción Un sistema de base de datos es básicamente un sistema computerizado cuya finalidad general es almacenar información y permitir a los usuarios recuperar y actualizar esa información por medio de consultas o peticiones perfectamente definidas. La información en cuestión puede ser cualquier cosa que sea de importancia para el individuo u organización; en otras palabras, todo lo que sea necesario para auxiliarle en el proceso de su administración. Componentes Desde un punto de vista muy general, un sistema de base de datos comprende cuatro componentes principalmente: datos, hardware, software y usuarios. A continuación consideramos brevemente estos cuatro componentes. Datos Los sistemas de bases de datos están disponibles en máquinas que van desde las computadoras personales más pequeñas hasta los grandes servidores o main%ames. Por norma general, los sistemas que se encuentran en máquinas grandes tienden a ser sistemas multiusuario, mientras que los que se ejecutan en máquinas pequeñas tienden a ser sistemas de un solo usuario. Un sistema de un solo usuario es aquel en el que sólo un usuario puede tener acceso a la base de datos en un momento dado; un sistema multiusuario es aquel en el cual múltiples usuarios pueden tener acceso simultáneo a la base de datos 7. En general, el objetivo principal en los sistemas multiusuario es precisamente permitir que cada usuario se comporte como si estuviera trabajando en un sistema de un solo usuario. La mayor parte de los problemas de un sistema multiusuario son internos y no visibles por tanto al usuario final. En general, los datos de la base de datos – al menos en un sistema grande – serán tanto integrados como compartidos. Gracias al concepto de datos integrados, podemos imaginar la base de datos como una unificación de varios archivos que de otro modo serían distintos, con una redundancia entre ellos eliminada parcialmente. Por otro lado, al ser los datos compartidos, las piezas individuales de datos pueden ser compartidas entre diferentes usuarios y cada uno de ellos puede tener acceso a la misma pieza de datos incluso con fines distintos. Una determinada base de datos será percibida de muchas formas diferentes por los distintos usuarios. De hecho, aun cuando dos usuarios tengan la misma porción de la base de datos, su visión de dicha parte podría diferir considerablemente. Hardware Los componentes de hardware del sistema son básicamente: • Los volúmenes de almacenamiento secundario – principalmente discos magnéticos – que se emplean para contener los datos almacenados, junto con los dispositivos asociados de E/S (unidades de disco, etc.), los controladores de dispositivos, los canales de E/S, entre otros, y, 7 Toda aplicación web que utilice un sistema de base de datos para el almacenamiento y recuperación de la información, obliga a que este último sea un sistema multiusuario, ya que múltiples usuarios podrán interactuar simultáneamente dada la naturaleza distribuida de Internet. 22 Experto en eLearning Tecnologías y Métodos de Formación en Red • los procesadores de hardware y la memoria principal asociada usados para apoyar la ejecución del software del sistema de base de datos. Software Entre la base de datos física – es decir, los datos como están almacenados físicamente – y los usuarios del sistema, hay una capa de software conocida como servidor de base de datos o más comúnmente como sistema gestor de base de datos 8 (SGBD). Todas las solicitudes de acceso a la base de datos son procesadas por el SGBD; las operaciones de inserción, modificación y eliminación de datos en la base de datos (junto con otras muchas funcionalidades) son características que proporciona el SGBD. Por lo tanto, una de las funciones principales que ofrece el SGBD consiste en ocultar a los usuarios de la base de datos los deta)es a nivel de hardware, proporcionando así, una independencia total de la implementación de los datos y de la plataforma hardware sobre la que éstos se asientan. En otras palabras, el SGBD ofrece a los usuarios una percepción de la base de datos que está, en cierto modo, por encina del nivel del hardware y que maneja las operaciones del usuario expresadas en términos de un nivel de percepción más alto. Todo SGBD dispone de algún mecanismo para manipular la información de la base de datos normalmente basado en algún lenguaje de consulta de alto nivel. El Lenguaje de Consulta Estructurado (Structured Query Language, SQL) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Aúna características del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de datos, de una forma sencilla9. El SGBD es el componente software más importante del sistema en general, aunque no es el único. Existen también otros componentes como bibliotecas de funciones adicionales, utilerías, herramientas de desarrollo de aplicaciones, generadores de informes y (el más importante) el administrador de transacciones. En muchas ocasiones, utilizamos el término SGBD (ó DBMS en inglés), para referirnos en forma genérica a un producto determinado de algún fabricante; por ejemplo, el producto “Oracle” fabricado por Oracle Corporation, o también, el sistema gestor de bases de datos basado en software libre “MySQL” fabricado por MySQL AB. Usuarios Consideramos tres grandes clases de usuarios: • En primer lugar hay programadores de aplicaciones. Son los responsables de escribir los programa de aplicación de base de datos en algún lenguaje de programación como COBOL, C/C++, Java o algún lenguaje de alto nivel de 8 En inglés Data Base Management System, DBMS. 9 El término “lenguaje de consulta”, a pesar de ser común, no es muy preciso, ya que el verbo “consultar” en lenguaje natural sugiere sólo una recuperación, mientras que los lenguajes de consulta por lo regular (aunque no siempre) ofrecen también actualización y otras muchas operaciones. 23 Experto en eLearning Tecnologías y Métodos de Formación en Red 4GL10 . Estos programas acceden a la base de datos emitiendo la solicitud apropiada al SGBD (por lo regular una instrucción SQL). Los programas en sí pueden ser aplicaciones convencionales por lotes o pueden ser aplicaciones en línea, cuyo propósito es permitir al usuario final el acceso a la base de datos desde una estación de trabajo o terminal en línea. Las aplicaciones más modernas pertenecen a esta variedad11 . • En consecuencia, la segunda clase de usuarios son los usuarios finales, quienes interactúan con el sistema de estaciones de trabajo o terminales en línea. Un usuario final puede acceder a la base de datos a través de las aplicaciones en línea mencionadas en el apartado anterior, o bien puede usar una interfaz proporcionada como parte integral del software del sistema gestor de base de datos. La mayoría de los SGBD incluyen por lo menos una de estas aplicaciones integradas, digamos un procesador de lenguaje de consulta, mediante el cual el usuario puede emitir solicitudes a la base de datos (también conocidas como instrucciones o comandos), como SELECT e INSERT, en forma interactiva con el SGBD. El lenguaje SQL mencionado anteriormente es un ejemplo típico de un lenguaje de consulta de bases de datos. • El tercer tipo de usuario, es el administrador de base de datos o DBA12. Es la persona que toma las decisiones de estrategia y política respecto a los datos de la empresa y proporciona el apoyo técnico necesario para implementar dichas decisiones. Por lo tanto, el DBA es el responsable del control general del sistema al nivel técnico. Entre las tareas del administrador de base de datos podemos destacar las siguientes: • Definir el esquema conceptual: decidir exactamente qué información contendrá la base de datos 13; en otras palabras, identificar las entidades de interés para la empresa e identificar la información que hay que registrar acerca de dichas entidades. Por lo regular a este proceso se le conoce como diseño lógico – en ocasiones conceptual – de la base de datos. • Definir el esquema interno: decidir la forma en que van a ser representados los datos en la base de datos almacenada. A este proceso se le conoce comúnmente como diseño físico de la base de datos. El diseño físico deberá realizar posteriormente al diseño lógico y nunca al contrario. • Establecer un enlace con los usuarios asegurando que los datos necesarios estén disponibles. • Definir las restricciones de seguridad y de integridad de los datos. 10 Lenguaje de cuarta generación (4GL), el usuario no debe definir los pasos a seguir en un programa para realizar una determinada tarea, tan sólo debe definir una serie de parámetros que estas herramientas (4GL) utilizarán para generar un programa de aplicación. 11 Las herramientas de e-learning actuales (como por ejemplo, moodle) son un tipo de aplicación en línea para la gestión de cursos en un entorno distribuido y de colaboración como es Internet. Normalmente disponen de una interfaz web programada para que el usuario realice todas las tareas afines a la herramienta de forma transparente al sistema gestor de base de datos en el que se guardan los datos. 12 DBA, del inglés Data Base Administrator. 13 Una herramienta de e-learning, destinada a la gestión de cursos, tendrá en su base de datos información sobre los alumnos, cursos, lecciones, cuestionarios de evaluación, documentos de interés, foros, mensajes, etc. 24 Experto en eLearning Tecnologías y Métodos de Formación en Red • Definir las políticas salvaguarda y recuperación de la información. • Supervisar el rendimiento y responder a los requerimientos cambiantes como consecuencia del aumento de la información o deterioro del sistema. Definición Es común referirse a los datos de la base de datos como “persistentes”. En forma más precisa, decimos que los datos de la base de datos “persisten” debido en primer lugar a que una vez aceptados por el SGBD para entrar en la base de datos, en lo sucesivo sólo pueden ser removidos de la base de datos por alguna solicitud explícita al SGBD, no como un mero efecto lateral de (por ejemplo) algún programa que termina su ejecución. Esta noción de persistencia nos permite dar una definición más precisa del término “base de datos”: una base de datos es un conjunto de datos persistente que es utilizado por los sistemas de aplicación de alguna organización o empresa dada. Algunos ejemplos de datos persistentes son: datos de producción, datos contables, datos de pacientes, datos de planeación, datos de estudiantes, datos de cursos, datos de lecciones, datos de cuestionarios, datos de exámenes, etcétera. Características Desde el punto de vista de un sistema monousuario y en comparación los sistemas de archivo manual, las bases de datos son ventajosas en muchos aspectos: • Compactan mucho la información sin necesidad de archivos en papel voluminosos. • Las máquinas recuperan y almacenan la información más rápidamente que un humano. En particular, las consultas específicas pueden ser respondidas con rapidez, sin necesidad de búsquedas manuales o visuales que llevan tiempo. • El trabajo es menos laborioso además de que las máquinas siempre realizan mejor las tareas mecánicas. • En el momento que lo necesitemos, tendremos a nuestra disposición información precisa y actualizada. Si el entorno es multiusuario y la base de datos es más grande y compleja los beneficios son mucho mayores. Es en este entorno, en el que se ofrece un valor añadido, ya que la empresa ofrece a sus usuarios un sistema centralizado para el control de sus datos. Funcionalidades Puede decirse, que la funcionalidad principal de un sistema de base de datos es la de compartir la información entre usuarios y entre las aplicaciones existentes. Además de que sea posible desarrollar nuevas aplicaciones para operar sobre los mismos datos. También pueden mencionarse las siguientes funcionalidades: • Reducir la redundancia: En sistemas que no son de bases de datos, cada aplicación tiene sus propios archivos exclusivos. A menudo este hecho puede conducir a una redundancia considerable de los datos almacenado, con el consecuente desperdicio de espacio de almacenamiento. Los sistemas de base de 25 Experto en eLearning Tecnologías y Métodos de Formación en Red datos permiten integrar y eliminar así la redundancia, en tanto en cuanto el administrador sea consciente de los requerimientos de datos de ambas aplicaciones. • Evitar la inconsistencia: En ciertas ocasiones y desde el punto de vista semántico del sistema de información, la actualización de ciertos datos de la base de datos implican más modificaciones. Si alguna de estas modificaciones no se llevara a cabo, decimos que la base de datos es inconsistente. Resulta claro que una base de datos en un estado inconsistente es capaz de proporcionar a sus usuarios información incorrecta. Los sistemas de bases de datos disponen de mecanismos para evitar la inconsistencia, entre ellos por ejemplo: la propagación de actualizaciones. • Manejo adecuado de transacciones: Una transacción es una unidad de trabajo lógica, que por lo regular comprende varias operaciones. El ejemplo más común es el de una transferencia bancaria. Es claro que aquí se necesitan dos actualizaciones, una para retirar dinero de una cuenta A y la otra para depositarlos en otra cuenta B. Si el usuario declara que las dos actualizaciones son parte de la misma transacción, entonces el sistema puede garantizar que se hagan ambas o ninguna de ellas, aún cuando el sistema fallara a la mitad del proceso. A esta característica de las transacciones se la conoce por el nombre de atomicidad14 . Para facilitar esta funcionalidad, los sistemas de bases de datos se apoyan en dos operaciones básicas: • COMMIT: para comprometer una transacción que ha finalizado correctamente. • ROLLBACK: para deshacer completamente una transacción que ha fallado. • Mantener la integridad: El problema de la integridad es el de asegurar que los datos de la base de datos estén correctos. La inconsistencia entre dos entradas que pretender representar el mismo “hecho” es un ejemplo de la falta de integridad. No obstante, aún cuando no exista redundancia, la base de datos podría seguir conteniendo información incorrecta. El control centralizado de la base de datos puede ayudar a evitar estos problemas (en la medida de lo posible) permitiendo que el administrador de datos defina y el DBA implemente las restricciones de integridad (o reglas de negocio) que serán verificadas siempre que se realice una operación de actualización. • Mantener la seguridad: Al tener completa jurisdicción sobre la base de datos puede asegurar que el único medio de acceso a la base de datos sea a través de los canales adecuados y por lo tanto puede definir las reglas o restricciones de seguridad que serán verificadas siempre que se intente acceder a datos sensibles. Es posible definir diferentes restricciones para cada tipo de acceso (recuperación, inserción, eliminación, etcétera) para cada parte de la información de la base de datos. • Equilibrar los requerimientos: Al conocer los requerimientos generales de la empresa, el DBA puede estructurar los sistemas de manera que ofrezcan un servicio general que sea “el mejor para la empresa”. Por ejemplo elegir una re- 14 La transacción se hace en su totalidad o nada. 26 Experto en eLearning Tecnologías y Métodos de Formación en Red presentación física de los datos almacenados que proporcione un acceso rápido para las aplicaciones más importantes. • Cumplir los estándares: Es conveniente estandarizar la representación de datos, en particular como un mecanismo auxiliar para el intercambio de datos o para el movimiento de datos entre sistemas. En forma similar, los estándares en la asignación de nombres y en la documentación de los datos también son muy convenientes. Todas estas funcionalidades se convierten en ventajas. La mayoría de ellas resultan bastante obvias. Sin embargo, es necesario agregar a la lista un punto que podría no ser tan obvio, aunque de hecho está implícito en otro; se trata de proporcionar la independencia a los datos. Independencia de los datos Existen dos clases de independencia de los datos, física y lógica. Las aplicaciones implementadas en sistemas más antiguos (los sistemas anteriores a los relacionales o incluso anteriores a las bases de datos) tienden a ser dependientes de los datos. Esto significa que la forma en que físicamente son representados los datos en el almacenamiento secundario y la técnica empleada para su acceso, son dictadas por los requerimientos de la aplicación en consideración y más aún, significa que el conocimiento de esa representación física y esa técnica de acceso están integrados dentro del código de la aplicación. Con este planteamiento, resulta imposible modificar la representación física (la forma en que los datos están físicamente representados en el almacenamiento) o la técnica de acceso (la forma en que son accedidos físicamente) sin afectar a la aplicación de manera drástica. Sin embargo, en un sistema de base de datos, sería un inconveniente permitir que las aplicaciones fuesen dependientes de los datos en el sentido descrito; por lo menos por las dos razones siguientes: • Las aplicaciones requerirán visiones diferentes de los mismos datos. • El DBA debe tener la libertad de cambiar las representaciones físicas o la técnica de acceso en respuesta a los requerimientos cambiantes, sin tener que modificar las aplicaciones existentes. De aquí que dar independencia a los datos sea un objetivo principal de los sistemas de bases de datos. Arquitectura de los sistemas de bases de datos Niveles La arquitectura ANSI/SPARC propone una división en tres niveles, conocidos como interno, conceptual y externo respectivamente. Hablando en términos generales: • El nivel interno (también conocido como nivel físico) es el que está más cerca del almacenamiento físico; es decir, es el que tiene que ver con la forma en que los datos están almacenados físicamente. La vista interna es una representación de bajo nivel de toda la base de datos y consiste en muchas ocurrencias de cada uno de los diversos tipos de registros internos. 27 Experto en eLearning Tecnologías y Métodos de Formación en Red • El nivel externo (también conocido como nivel lógico de usuario) es el más próximo a los usuarios; es decir, el que tiene que ver con la forma en que los usuarios individuales ven los datos. Recordemos que un usuario puede ser un programador de aplicaciones o bien un usuario final con cualquier grado de sofisticación. La vista externa es el contenido de una base de datos como lo ve un usuario en particular. • El nivel conceptual (también conocido como el nivel lógico de la comunidad, o en ocasiones sólo como el nivel lógico, sin calificar) es un nivel intermedio entre los otros dos. La vista conceptual es una representación de todo el contenido de la información de la base de datos en una forma un poco abstracta comparada con la forma en la que por lo regular se almacenan los datos físicamente. Observe que el nivel externo tiene que ver con las percepciones de usuarios individuales, mientras que el nivel conceptual tiene que ver con la percepción de una comunidad de usuarios. En otras palabras, habrá muchas “vistas externas” distintas, cada una consistente en una representación más o menos abstracta de alguna parte de la base de datos total, y habrá precisamente una “vista conceptual” que del mismo modo consiste en una representación abstracta de la base de datos en su totalidad. Nivel externo (vista de usuarios individuales) Nivel conceptual (vista de la comunidad de usuarios) Nivel interno (vista de almacenamiento) Fig. 9: Los tres niveles de la arquitectura. Transformaciones Además de los tres niveles como tales, la arquitectura comprende ciertas transformaciones; en general, una transformación conceptual/interna y varias transformaciones externas/conceptual: • La transformación conceptual/interna define la correspondencia entre la vista conceptual y la base de datos almacenada, y especifica cómo están representados los registros y campos conceptuales en el nivel interno. Si se modifica la estructura de la base de datos, es decir, si se hace un cambio a la definición de la estructura de almacenamiento, entonces por consiguiente será necesario modificar la transformación conceptual/interna, de manera que el esquema conceptual pueda permanecer invariable. 28 Experto en eLearning Tecnologías y Métodos de Formación en Red • La transformación externa/conceptual define la correspondencia entre una vista externa en particular y la vista conceptual. En general, las diferencias que puedan existir entre estos dos niveles son análogas a aquellas que puedan existir entre la vista conceptual y la base de datos almacenada. Así como la transformación conceptual/interna es la clave para la independencia física de los datos, también las transformaciones externas/conceptual son la clave para la independencia lógica de los datos. Un sistema proporciona la independencia física de los datos si los usuarios y los programas de usuario son inmunes a los cambios en la estructura física de la base de datos almacenada. De igual manera un sistema proporciona la independencia lógica de los datos si los usuarios y los programas de usuario también son inmunes a los cambios en la estructura lógica de la base de datos (lo que significa cambios al nivel conceptual o “lógico de la comunidad”). 29 Experto en eLearning Tecnologías y Métodos de Formación en Red Servidores Web Introducción La World Wide Web es el servicio multimedia más extendido de Internet. Fue desarrollado en el CERN (Centre Européen de la Recherche Nucléaire, Suiza) en 1992 y desde entonces se ha extendido hasta ser uno de los servicios más populares de Internet. Cuando hablamos de Internet, en la mayoría de las ocasiones nos referimos al servicio Web, pero Internet está compuesto por más servicios: correo electrónico, noticias, transferencia de ficheros, terminal remoto, etc. La Web es uno de los métodos más importantes de comunicación que existe en Internet. Consiste en un sistema de información basado en hipertexto (texto que contiene enlaces a otras secciones del documento o a otros documentos). La información reside en forma de Páginas Web en computadores que se denominan Servidores Web. Estas máquinas están distribuidas por todo el mundo. Un Servidor Web es un programa que implementa el protocolo de comunicación HTTP (HyperText Transfer Protocol). Este protocolo está diseñado para transferir lo que llamamos hipertextos, Páginas Web o páginas HTML (HyperText Markup Language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de sonidos. Una de las capacidades más interesantes de las Páginas Web es la creación de hipervínculos, enlaces a otras Páginas Web. Hay que destacar el hecho de que la palabra Servidor Web identifica tanto al programa como a la máquina en la que dicho programa se ejecuta. Existe, por tanto, cierta ambigüedad en el término, aunque no será difícil diferenciar a cuál de los dos nos referimos en cada caso. Un Servidor Web se encarga de mantenerse a la espera de peticiones HTTP. Las peticiones son solicitadas por un cliente HTTP, denominado tradicionalmente Navegador. El Navegador, por tanto, realiza una petición al servidor y éste le responde con el contenido que el cliente solicita. Para ofrecer el servicio Web clásico se suele disponer de aplicaciones web. Estas aplicaciones son fragmentos de código que se ejecutan cuando se realizan ciertas peticiones o respuestas HTTP. Podemos distinguir dos tipos: • Aplicaciones en el lado del cliente: Estas aplicaciones se ejecutan en el cliente a través del propio Navegador. Por norma general, el código de estas aplicaciones viene dado en algún lenguaje de script, por lo que el Navegador deberá tener la capacidad para ejecutar dichos programas. • Aplicaciones en el lado del servidor: el Servidor Web ejecuta la aplicación; ésta, una vez ejecutada, genera cierto código HTML; el servidor toma este código recién creado y lo envía al cliente por medio del protocolo HTTP. Las aplicaciones de servidor suelen ser la opción más utilizada para realizar aplicaciones Web, debido a que al ejecutarse en el servidor y no en la máquina del cliente, éste no necesita ninguna capacidad adicional. Así pues, cualquier cliente con un Navegador Web básico puede utilizar este tipo de aplicaciones. 30 Experto en eLearning Tecnologías y Métodos de Formación en Red Arquitectura de la Web La Web presenta una arquitectura cliente-servidor de forma que los proveedores de información (Servidores Web) atienden las peticiones de los programas cliente (normalmente Navegadores), que son manejados por el usuario final. La comunicación cliente-servidor se hace mediante un lenguaje común o protocolo15 denominado HTTP (HiperText Transfer Protocol). Los archivos que se transfieren son documentos de hipertexto codificados en lenguaje HTML (HyperText Marked Language). Clientes Web El Cliente Web (Navegador o Browser ), es un programa con el que interacciona el usuario para solicitar a un servidor Web el envío de elementos de información. Este programa se encarga de acceder al servidor y solicitar las páginas siguiendo el protocolo HTTP. El Cliente Web debe interpretar los documentos recibidos para poder mostrárselos al usuario con el formato adecuado. Además, cuando lo que se recibe no es un documento de texto, sino un objeto multimedia no reconocido por el Cliente Web, éste deberá encargarse de activar una aplicación externa capaz de gestionarlo. Este software del cliente, es de muy fácil manejo y suele integrar programas que acceden a otros servicios de Internet como, por ejemplo, el correo electrónico. El Navegador puede considerarse como una interfaz de usuario universal. Dentro de sus funciones están: la petición de las Páginas Web, la representación adecuada de sus contenidos y la gestión de los posibles errores que puedan producirse. Algunos de los Navegadores más conocidos son: Netscape, Internet Explorer, Mozi)a, Mosaic, Opera y Lynx (Navegador en modo texto). A modo de ejemplo, al teclear una dirección Web en nuestro Navegador, éste realiza una petición HTTP al servidor de dicha dirección. El servidor responde al cliente enviando el código HTML de la página solicitada; el cliente, una vez recibido el código, lo interpreta y lo muestra en pantalla. Como vemos con este ejemplo, el cliente es el encargado de interpretar el código HTML, es decir, de mostrar las fuentes, los colores y la disposición de los textos y objetos de la página; el servidor tan sólo se limita a transferir el código de la página al cliente. Servidores Web El software servidor consiste en una aplicación que permanentemente está a la espera de peticiones de clientes, recoge dichas peticiones y proporciona la información deseada a los clientes. El diálogo con los clientes se hace mediante el protocolo HTTP. En cada Servidor Web existe un conjunto de directorios en los cuales se deposita toda la información que se desea hacer pública y donde se depositan los documentos Web disponibles para los clientes. Las Páginas Web disponibles en el servidor se estructuran en lo que llamamos Sitios Web o WebSites (denominados por algunos servidores también como Con15 Protocolo: conjunto de reglas que gobiernan el intercambio de datos entre entidades dentro de una red. Es el lenguaje común “que utilizan” los ordenadores para “hablar” y entenderse entre sí. Existen muchos tipos de protocolos cada uno con sus reglas bien definidas, como por ejemplo: FTP, POP3, SMTP, ICMP, etc. 31 Experto en eLearning Tecnologías y Métodos de Formación en Red textos). Un Sitio Web puede ser el trabajo de una persona, una empresa u otra organización y está típicamente dedicada a algún tema particular o propósito. Un Servidor Web puede dar servicio a varios Sitios Web (o a varios Contextos). A las páginas de un Sitio Web se accede desde una página raíz, llamada portada o página de inicio, que normalmente reside en el mismo servidor físico. Dependiendo de la configuración y del tipo de servidor ésta página de inicio tendrá un nombre y extensión específico (normalmente index con extensión htm, html, jsp, …, dependiendo del lenguaje con el que esté codificada). Protocolo de comunicación HTTP El protocolo HTTP es el protocolo utilizado para la transferencia de Páginas Web. Éste es el protocolo con el que dialogan cliente y servidor y por medio del cual puede transmitirse información de todo tipo: texto, gráficos, vídeo, etc. Una de las características del protocolo HTTP es que no es permanente, es decir, cada operación HTTP implica una conexión con el servidor, que es liberada al término de la misma. Además, carece de estado. Cada petición de un cliente a un servidor no es influida por las transacciones anteriores. El servidor trata cada petición como una operación totalmente independiente del resto. Direccionamiento Cuando un Cliente Web quiere acceder a un documento es necesario conocer: ¿cuál es su nombre?, ¿dónde está? y ¿cómo se puede acceder a él?. A cada página se le asigna una URL (Uniform Resource Locator), mecanismo con el cual la Web asigna una dirección única a cada uno de los recursos de información localizado en cualquier lugar de Internet. Consiste en un código que contiene la identificación del servicio, la dirección del servidor (se puede especificar hasta el número de puerto), y, si es necesario, el directorio donde se encuentran los ficheros dentro del servidor. De esta forma se direccionan los recursos accesibles a través de un Navegador Web. El formato general de una URL es el siguiente: protocolo o servicio://dirección_de_la_máquina:puerto/directorio/fichero • protocolo o servicio: especifica el protocolo a utilizar para acceder al objeto (en la web http). • dirección de la máquina y puerto16: identifican la máquina y el puerto. La dirección de la máquina se puede especificar tanto en formato numérico o mediante su nombre de dominio. El campo que hace referencia al puerto puede eliminarse si el servicio está en su puerto estándar (80). • el directorio o camino (path): Aquí se especifica la localización del recurso dentro del Servidor Web. 16 Un puerto es una forma genérica de denominar a una interfaz por la cual diferentes tipos de datos pueden ser enviados y recibidos ( comunicación cliente– servidor) 32 Experto en eLearning Tecnologías y Métodos de Formación en Red Servidores Web Funcionamiento de un Servidor Web El proceso completo, desde que el usuario solicita una página hasta que el Cliente Web se la muestra con el formato adecuado, es el siguiente: 1. El usuario anota en el Cliente Web la dirección de la página que desea consultar. 2. El cliente establece la conexión con el Servidor Web. 3. El cliente solicita la página deseada. 4. El servidor busca la página que ha sido solicitada en su sistema de ficheros, Si la encuentra, la envía al cliente; en caso contrario, devuelve un código de error. 5. El cliente interpreta los códigos HTML y muestra la página al usuario. 6. Se cierra y libera la conexión. Navegador Red SERVIDOR WEB Sistema Operativo Recursos Programas CGI Servlets Ficheros Bases de Datos Fig. 10: Interacción entre un servidor Web y el resto del entorno. La figura superior muestra la interacción entre un Servidor Web y el resto del entorno. El servidor es el responsable de proporcionar el acceso a los recursos solicitados que están bajo el control del sistema operativo. Estos recursos pueden ser: 33 Experto en eLearning Tecnologías y Métodos de Formación en Red • Estáticos, como páginas HTML o texto. • Dinámicos, cuando la página solicitada no existe físicamente, sino que se crea en el momento de su petición (p. Ej., combinando una plantilla de documento con los resultados de la consulta a una base de datos). En estos casos el Servidor Web cede el control al denominado Servidor de Aplicaciones, encargado de construir la página. Posteriormente se pasa al Servidor Web, quien a su vez la envía al cliente. Volviendo sobre el modelo de las aplicaciones cliente-servidor, se puede decir que se sigue el denominado modelo de transacciones: el cliente realiza una petición, el servidor la atiende e inmediatamente se cierra la comunicación. Las transacciones son, por tanto, independientes, y no se mantiene una memoria entre las sucesivas peticiones. Esto es un grave inconveniente para muchas aplicaciones en las cuales esta memoria es fundamental, como por ejemplo las operaciones de compra a través de la Web. No obstante, existen mecanismos para resolver el problema, como el uso de cookies 17 o de bases de datos o variables de sesión. Otro aspecto importante es el hecho de que se establece una conexión independiente para cada documento u objeto que se transfiere. Por tanto, si una página contiene, por ejemplo, cuatro imágenes, se establecen cinco conexiones individuales: una para la página propiamente dicha y otras cuatro para las imágenes respectivas. Estructura del Servidor Web La arquitectura habitual de un Servidor Web es la que divide al servidor en dos capas: • Capa servidor. Esta capa contiene cinco subsistemas, que son los responsables de implementar la funcionalidad de un Servidor Web. • Subsistema de recepción: representa la primera “línea de ataque” y su labor consiste en esperar las peticiones HTTP de los clientes que llegan por la red. También, analiza las peticiones y determina las capacidades de los navegadores (tipo, compatibilidad, etc.). Este subsistema contiene la lógica necesaria para manejar múltiples peticiones. • Analizador de peticiones: encargado de traducir la localización del recurso de la red al nombre del archivo local. Por ejemplo, la solicitud del recurso http://www.usal.es se traduce al fichero local /var/www/webfiles/index.html. • Control de acceso: sirve para autentificar y permitir el acceso a un recurso de información. • Manejador de recursos: este subsistema es el responsable de determinar el tipo de recurso solicitado; lo ejecuta y genera la respuesta. • Registro de transacción: se encarga de registrar todas las peticiones y su resultado. 17 Una cookie es un fragmento de información que se almacena en el disco duro del visitante de una página web a través de su navegador, a petición del servidor de la página 34 Experto en eLearning Tecnologías y Métodos de Formación en Red Navegador Recepción Analizador de Peticiones Registro de Transacciones Control de Acceso Manejador de Recursos Util Capa Abstracta del SO Sistema Operativo Subsistema Conexión de red Control deFlujo Dependencia Fig. 11: Arquitectura de un servidor Web. • Capa soporte. Esta capa actúa como una interfaz entre el sistema operativo y el Servidor Web y, entre los propios subsistemas de la capa superior. Tiene los subsistemas siguientes: • Util: contiene funciones que son utilizadas por el resto de subsistemas. • Capa abstracta del Sistema Operativo (OSAL):este subsistema encapsula el funcionamiento específico del sistema operativo para facilitar la portabilidad del Servidor Web a diferentes plataformas. Información del Servidor Web Las Páginas Web pueden consistir en archivos de texto estático, Página Web Estática, o en una serie de archivos con código que instruya al servidor cómo construir el HTML para cada página que es solicitada, a esto se le conoce como Página Web Dinámica. Páginas Web estáticas Las páginas estáticas generalmente usan la extensión de archivo “htm” o “html”. HTML es un lenguaje de definición de páginas sencillo y potente además de portable a cualquier tipo de plataforma gráfica que permite combinar imágenes, textos, enlaces y otros elementos. Las páginas HTML son archivos de texto plano que contienen etiquetas para definir el aspecto de las páginas. 35 Experto en eLearning Tecnologías y Métodos de Formación en Red <HTML> <HEAD><TITLE>Bienvenido</TITLE></ HEAD> <BODY> <CENTER> <IMG SRC="home.gif" ALIGN=middle> <P>Esta es mi <I>peque&ntilde;a</I> p&aacute;gina personal. </P> </CENTER> </BODY> </HTML> Fig. 12: Página Web estática. Páginas Web dinámicas Las páginas dinámicas usan extensiones que generalmente reflejan el lenguaje o tecnología que se utilizó para crear el código, como “php”18 (Hypertext Preprocesor), “jsp” (Java Server Pages), etc. En estos casos, el servidor debe estar configurado para esperar y entender estas tecnologías. Es necesario utilizar, aparte del HTML, otros lenguajes de programación para ofrecer ese dinamismo, pero aún así, el HTML sigue siendo la base del desarrollo de las Páginas Web. Existen dos tipos de páginas dinámicas teniendo en cuenta donde se ejecutan: Páginas dinámicas de Cliente Se ejecutan en el cliente, por lo que toda la carga de procesamiento, de los efectos y funcionalidades la soporta el Navegador. Su principal desventaja es que dependen de las características del Navegador (versiones). Como ventajas las páginas descargan al servidor de tareas, ofrecen respuestas inmediatas a las acciones del usuario y permiten el uso recursos de la máquina local. El código necesario para crear los efectos y funcionalidades se incluye dentro del mismo archivo HTML y es llamado Script. El navegador interpreta los scripts de cliente y los ejecuta para realizar los efectos y funcionalidades. Los lenguajes de programación utilizados son VBScript, JScript (ambos de Microsoft) y JavaScript (de Netscape), permiten realizar validaciones de datos recogidos en las páginas antes de enviarlos al servidor y proporcionan un alto grado de interacción con el usuario dentro del documento. Otras de las posibilidades de los navegadores es la gestión del llamado HTML dinámico (Dinamic HTML, DHTML). Éste está compuesto de HTML, hojas de estilo en cascada, (Cascade Style Sheets, CSS), modelo de objetos y scripts de programación que permiten formatear y posicionar correctamente los distintos elementos HTML de las Páginas Web, permitiendo un mayor control sobre la visualización de las páginas. 18 PHP es uno de los lenguajes de programación más utilizado por la comunidad de desarrolladores. Un ejemplo de ello es la herramienta para la gestión de cursos en línea Moodle. 36 Experto en eLearning Tecnologías y Métodos de Formación en Red En esta línea, los navegadores han ido un poco más allá y permiten la visualización de documentos XML (eXtensible Markup Language) después de haber sido transformados adecuadamente a HTML por las hojas de estilo extensibles (eXtensible Style Sheets, XSL). De esta manera se puede elegir visualizar ciertos elementos y otros no, dependiendo de las circunstancias. Además, los navegadores permiten la ejecución de aplicaciones dentro de los documentos mostrados. Las dos posibilidades más populares son la tecnología ActiveX y los applets Java. Páginas dinámicas de Servidor Se ejecutan en los servidores. Con ellas se puede hacer todo tipo de Aplicaciones Web. Son útiles para procesar información situada en bases de datos localizadas en el servidor Las páginas dinámicas del servidor se suelen escribir en el mismo archivo HTML, mezclado con el código HTML. Las ventajas de este tipo de programación son que el cliente no puede ver los scripts, ya que se ejecutan y transforman en HTML antes de enviárselos. Además son independientes del Navegador utilizado, ya que el código que reciben es HTML. Como desventajas se puede señalar que será necesario un servidor más potente ya que toda la carga de procesamiento reside en él. Para escribir páginas dinámicas de servidor existen diversos lenguajes. Entre otros: • Common Gateway Interface (CGI) comúnmente escritos en Lenguaje Perl • Active Server Pages (ASP) • Hipertext Preprocesor (PHP) • Java Server Pages (JSP). Ejemplos Básicamente existen dos sistemas operativos dominantes en el mercado de los Servidores Web: Unix y Windows. Los Servidores Web más utilizados son Apache Web Server e Internet Information Server (IIS, fabricado por Microsoft) respectivamente. Otros servidores algo menos conocidos son los siguientes: 4D WebSTAR, AOLserver, BadBlue, Baikonur Web App Server, Covalent Enterprise Ready Server, ESAWEB, GoAhead WebServer, Hawkeye, iTools, Java Server, Jigsaw, RapidSite, RomPager Embedded Web Server, Roxen WebServer, Sambar Server, Savant, Servertec, Shadow Web Server, SimpleServer:WWW, Sun Java System Web Server, Tcl Web Server, URL Live!, Viking, vqServer, WN, WebBase, Xitami y Zeus Web Server. Existen otros servidores, más simples pero más rápidos, son lighttpd y thttpd. Apache Web Server El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. Tiene amplia aceptación en la red siendo el servidor HTTP del 70% de los Sitios Web en el mundo y creciendo aún su cuota de mercado. Es software libre cuya licencia te permite hacer lo que quieras con el código 37 Experto en eLearning Tecnologías y Métodos de Formación en Red fuente siempre que les reconozcas su trabajo. La popularidad de este software libre, grandemente reconocido en muchos ámbitos empresariales y tecnológicos, viene dada por sus características : • Apache es un Servidor Web potente y flexible. • Es independiente de la plataforma, corre en una multitud de Sistemas Operativos, lo que lo hace prácticamente universal. • Apache es una tecnología gratuita de código fuente abierto. El hecho de ser gratuita es importante pero no tanto como que se trate de código fuente abierto. Esto le da una transparencia a este software de manera que si queremos ver que es lo que estamos instalando como servidor , lo podemos saber, sin ningún secreto, sin ninguna puerta trasera ;). • Permite Autenticación de diferentes tipos, por ejemplo, permite el uso de bases de datos para la autenticación de usuarios. De esta forma se puede restringir el acceso a determinadas páginas de un sitio web de una forma sencilla y de fácil mantenimiento. • Apache es un servidor altamente configurable de diseño modular. Es muy sencillo ampliar las capacidades del Servidor Web Apache. Actualmente existen muchos módulos para Apache que son adaptables a este, y están ahí para que los instalemos cuando los necesitemos. Otra cosa importante es que cualquiera que posea una experiencia en la programación del lenguaje C o Perl puede escribir un modulo para realizar una función determinada. Este diseño permite a los administradores de Sitios Web elegir que características van a ser incluidas en el servidor seleccionando que módulos se van a cargar, ya sea al compilar o al ejecutar el servidor (por ejemplo el módulo PHP en la versión 2 y posteriores de Apache). • Apache permite la creación de Sitios Web Dinámicos mediante: • El uso de CGI’s. • El uso de Server Side Includes (SSI). • El uso de lenguajes de Scripting como PHP, javascript, Python. • El uso de Java y páginas jsp. • Apache te permite personalizar la respuesta ante los posibles errores que se puedan dar en el servidor. Es posible configurar Apache para que ejecute un determinado script cuando ocurra un error en concreto. • Tiene una alta configurabilidad en la creación y gestión de logs. Apache permite la creación de ficheros de log a medida del administrador, de este modo puedes tener un mayor control sobre lo que sucede en tu servidor . Apache utiliza el formato Common Log Format (CLF) para la generación de los logs de error. Este formato es usado por varios Servidores Web y existen herramientas para el análisis de ficheros con este formato • Tiene gran escalabilidad porque se pueden extender las características de Apache hasta donde nuestra imaginación y conocimientos lleguen debido a que Apache soporta Dinamic Shared Object (DSO). Gracias a ello se pueden construir módulos que le den nuevas funcionalidades que son cargadas en tiempos de ejecución. 38 Experto en eLearning Tecnologías y Métodos de Formación en Red Apache únicamente fue criticado por la falta de una interfaz gráfica que ayude en su configuración. Internet Information Server IIS sólo funciona bajo servidores Microsoft. Debe ser usado bajo licencia, esto es, hay que pagar por él, con esto te ofrecen un servicio técnico y cierto tipo de garantías, como soporte ante fallos de seguridad y funcionamiento, disponiendo de parches con cierta tranquilidad. Originalmente era parte de un paquete de opciones de Windows NT. Posteriormente se fue integrando en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o 2003 Server. El Servidor Web IIS se basa en varios módulos que le dan capacidad para procesar distintos tipos de páginas, por ejemplo Microsoft incluye los de Active Server Pages (ASP) y ASP.NET. También pueden ser incluidos los de otros fabricantes, como PHP o Perl. IIS es ligeramente más intuitivo que Apache, por el hecho de disponer de una interfaz gráfica para su configuración, pero su integración total con el sistema hace difícil distinguir qué opciones afectan al servidor y cuáles al sistema operativo. Por otro lado, requiere de una gran cantidad de espacio de almacenamiento y es necesario tener la licencia adecuada para su uso. 39