Sistemas Operativos, Bases de Datos, Servidor Web

Anuncio
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ña</I>
pá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
Descargar