Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 1. Introducción a la informática Contenido Introducción Arquitectura de ordenadores Compiladores e intérpretes Redes de comunicaciones Introducción a la informática 2 Introducción Conceptos básicos Informática es el conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores (Diccionario RAE) Un ordenador es una máquina electrónica dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas aritméticos y lógicos gracias a la utilización automática de programas registrados en ella (Diccionario RAE) Introducción a la informática 3 Introducción Conceptos básicos En un ordenador la información se representa mediante un sistema digital de tipo binario Un dígito binario (cero o uno) se representa por valores de tensión eléctrica almacenados en los circuitos electrónicos integrados: tensión alta o tensión baja La tensión baja oscila entre 0 y 0,8 voltios, la tensión alta oscila entre 2,4 y 5 voltios Introducción a la informática 4 Introducción Sistema binario Un dígito binario (BIT - Binary digiT) almacena el valor cero o uno Un Byte está formado por 8 bits. Puede almacenar valores entre 0 y 255 (28 – 1) Introducción a la informática 5 Introducción Sistema binario Byte Valor decimal Byte 00000000 0 00001000 8 00000001 1 00001010 10 00000010 2 00001111 15 00000011 3 00010000 16 00000100 4 00100000 32 00000101 5 01000000 64 00000110 6 10000000 128 00000111 7 11111111 255 Introducción a la informática Valor decimal 6 Introducción Sistemas numéricos Binario Octal Hexadecimal Decimal 0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 A 10 1011 13 B 11 1100 14 C 12 1101 15 D 13 1110 16 E 14 1111 17 E 15 Introducción a la informática 7 Introducción Sistemas numéricos El sistema binario se basa en un alfabeto de dos símbolos (bits), el 0 y el 1 Una cadena de bits de tamaño n permite representar hasta 2n valores Si consideramos un sistema numérico basado en un alfabeto de k símbolos, una cadena de números de tamaño n permite representar hasta kn valores Introducción a la informática 8 Introducción Sistemas numéricos El valor numérico decimal de un número de base b se obtiene de calcular: N = an-1bn-1 + an-2bn-2 + … + a0b0 + a-1b-1 + a-2b-2 + ... Donde ai es un dígito y el índice i su posición en la cadena de caracteres que representa el número Introducción a la informática 9 Introducción Sistemas numéricos El número binario 100101010,1011 equivale al número decimal 298,6875 N = (1) 28 + (0) 27 + (0) 26 + (1) 25 + (0) 24 + (1) 23 + (0) 22 + + (1) 21 + (0) 20+ (1) 2-1 + (0) 2-2 + (1) 2-3 + (1) 2-4 8 7 6 5 4 3 2 1 0 1 0 0 1 0 1 0 1 0 28 27 26 25 24 23 22 21 256 128 64 32 16 8 4 2 Introducción a la informática -1 , -2 1 0 20 2-1 2-2 1 1/2 1/4 -3 1 2-3 1/8 -4 1 2-4 1/16 10 Introducción Sistemas numéricos Para convertir un número decimal a binario se divide sucesivamente entre 2 hasta que el cociente es cero. El residuo de cada división es un dígito binario Por ejemplo, el número decimal 22 es equivalente al número binario 10110 22/2 11/2 5/2 2/2 1/2 cociente 11, residuo 0 cociente 5, residuo 1 cociente 2, residuo 1 cociente 1, residuo 0 cociente 0, residuo 1 Introducción a la informática 11 Arquitectura de ordenadores Software y hardware Hardware Componentes electrónicos de un ordenador, teléfono, agenda, etc. dispositivo físico: Sistema operativo Gestiona los recursos del dispositivo físico: Windows Vista, Leopard, Ubuntu, Solaris, etc. Software de aplicación Programas que utiliza el usuario Introducción a la informática 12 Arquitectura de ordenadores Software y hardware Un ordenador recibe información a través de dispositivos de entrada y, después de procesar la información, muestra los resultados utilizando dispositivos de salida El sistema operativo gestiona los recursos del hardware, planifica y controla la ejecución del software de aplicación Introducción a la informática 13 Arquitectura de ordenadores Software y hardware Usuario Software de aplicación Software Shell Kernel Microprogramas Interfaz entre el usuario y el hardware Sistema Operativo Programas que controlan el funcionamiento del hardware Programas que gestionan los recursos de la máquina Hardware Introducción a la informática 14 Arquitectura de ordenadores Software y hardware Software de aplicación Sistema operativo y software del sistema Programa Java public class HolaMundo { public static void main(string[] args) { System.out.println("Hola mundo !!!"); } } Compilador de Java Traduce a Bytecode Código Java (Bytecode) Interpreta Bytecode Hardware Máquina Virtual de Java (JVM) Sistema operativo Lenguaje máquina 000000001010010010010101001010100100 100010101001010100101010001010101010 110000010100100100100100001010000101 Introducción a la informática 15 Arquitectura de ordenadores Sistema operativo Proporciona una interfaz de usuario para comunicarse con el ordenador Ejecuta el software de aplicación y gestiona los errores de ejecución Gestiona el acceso a ficheros y dispositivos periféricos Gestiona las interrupciones Protege y gestiona el acceso a la memoria Prioriza las tareas y reparte el tiempo de uso de la CPU entre los procesos. Reduce los “periodos muertos” del procesador Introducción a la informática 16 Arquitectura de ordenadores Sistema operativo Run Proceso A Run A A Wait Wait tiempo Run Proceso B Wait Run B B Wait Wait tiempo Run Proceso C Run C Wait C Wait Wait tiempo Procesos A, B, C Run Run Run A B C Wait Run Run Run A B C Wait tiempo Introducción a la informática 17 Arquitectura de ordenadores Arquitectura Von Neumann Buses de comunicación Dispositivos de entrada y salida Memoria principal y memoria secundaria Programas CPU (Unidad central de proceso) Código Registros de memoria Datos ALU Unidad de control En esta arquitectura los programas y sus datos se almacenan juntos en la memoria Introducción a la informática 18 Arquitectura de ordenadores Elementos de un ordenador La CPU (Unidad central de proceso) contiene la unidad de control, la unidad aritmético-lógica (ALU) y los registros de memoria La unidad de control de la CPU almacena la siguiente instrucción (IR) a ejecutar y el Program Counter (PC) La memoria principal se compone de memoria RAM (Random Access Memory) y ROM (Read Only Memory) Introducción a la informática 19 Arquitectura de ordenadores Elementos de un ordenador La memoria RAM es volátil, es de tipo lectura-escritura y su tiempo de acceso es muy rápido. Almacena el sistema operativo y los programas en ejecución La memoria ROM es de tipo sólo lectura. Es permanente y almacena la BIOS (Basic Input-Output System). La BIOS guarda los programas que se ejecutan al iniciar un ordenador, comprueban el sistema y cargan el sistema operativo en memoria La memoria secundaria no es volátil, su capacidad de almacenamiento es muy elevada y el tiempo de acceso es lento Introducción a la informática 20 Arquitectura de ordenadores Elementos de un ordenador La unidad de control es el cerebro de un ordenador. dirige y controla el funcionamiento del resto de componentes, coordina las actividades necesarias para el correcto desarrollo del programa en ejecución La unidad de control tiene un reloj que controla la velocidad a la que se realizan las operaciones. La frecuencia del reloj se mide en Megahercios (MHz) y determina la velocidad del ordenador Introducción a la informática 21 Arquitectura de ordenadores Elementos de un ordenador La unidad aritmético-lógica (ALU) realiza todas las operaciones aritméticas y lógicas que requieren los programas. Los operandos de las operaciones se almacenan en los registros de la CPU y en el acumulador Los registros de la CPU son un almacén temporal y el tiempo de acceso es extremadamente rápido Los dispositivos de entrada y salida permiten comunicación entre el usuario y el ordenador la Introducción a la informática 22 Arquitectura de ordenadores Elementos de un ordenador La comunicación entre los dispositivos periféricos y el procesador central se realiza a través de un controlador hardware que gestiona el comportamiento del dispositivo. Los controladores software (drivers) facilitan la comunicación entre los programas Los buses de comunicación pueden ser de tres tipos: bus de datos, bus de direcciones y bus de control. El bus de datos comunica la CPU con la memoria principal y los dispositivos periféricos. El bus de direcciones identifica el dispositivo que recibirá la información que lleva el bus de datos. El bus de control transmite las señales que envía la CPU Introducción a la informática 23 Compiladores e intérpretes Un compilador es un programa que traduce un lenguaje (lenguaje fuente) a otro lenguaje (lenguaje objeto). El compilador identifica si existen errores léxicos, sintácticos o semánticos El lenguaje fuente normalmente es de alto nivel y el lenguaje destino es lenguaje máquina Lenguaje fuente Compilador Lenguaje destino Mensajes de error Un intérprete es un programa que analiza y ejecuta un programa en lenguaje fuente Introducción a la informática 24 Compiladores e intérpretes Lenguaje fuente Lenguaje objeto Ensamblador Código máquina C Lenguaje ensamblador Java Bytecode XML HTML Introducción a la informática 25 Compiladores e intérpretes 1950-1960 El término compilador fue introducido en 1950 por G.M. Hooper. Aparecen los primeros trabajos sobre traducción de fórmulas aritméticas a código máquina John Backus lidera un grupo de trabajo en IBM para realizar un traductor de fórmulas matemáticas a código máquina. El resultado es el lenguaje FORTRAN (FORmule TRANslator) y se realiza un traductor para un ordenador IBM 704. El trabajo fue equivalente a 18 personas durante un año Introducción a la informática 26 Compiladores e intérpretes 1950-1960 Chomsky realiza estudios sobre la estructura del lenguaje natural, clasificación de lenguajes y algoritmos de reconocimiento de lenguaje En Europa, Bauer define un lenguaje para usos múltiples. La sintaxis de ALGOL (ALGOritmic Languaje) se especifica con la notación BNF (Backus-Naur Form) Introducción a la informática 27 Compiladores e intérpretes 1960-1970 Diseño de LISP y un intérprete ejecutable de LISP 1970-1980 Niklaus Wirth diseña Pascal, un lenguaje que dará lugar a Modula-2 y ADA. El compilador de Pascal utiliza una representación intermedia de código (P-Code). El proceso de traducción se separa en dos fases: front-end (análisis del lenguaje fuente) y back-end (generación del código máquina) Introducción a la informática 28 Compiladores e intérpretes 1980-1990 Desarrollo de entornos de ejecución dinámicos. Los compiladores gestionan la asignación de memoria en tiempo de ejecución, recolección de basura, etc. Optimización de código basado en el análisis de control de flujo y datos Introducción a la informática 29 Compiladores e intérpretes 1990 a la fecha Java compila código intermedio (Byte-Code) para que los programas sean independientes de la plataforma. Utiliza una máquina virtual (Java Virtual Machine) Entornos de desarrollo integrado (IDE) que ofrecen: editor, compilador, depurador, enlazador, analizador de rendimiento, etc. Lenguajes interpretados de alto nivel: Perl, PHP, etc. Introducción a la informática 30 Compiladores e intérpretes Código fuente Análisis léxico Componentes léxicos (tokens) Tabla de símbolos Fase de análisis Análisis sintáctico Gestor de errores Árbol sintáctico Análisis semántico Árbol sintáctico anotado Generación de código intermedio Fase de síntesis Código intermedio Generación y optimización de código objeto Código objeto Introducción a la informática 31 Compiladores e intérpretes Para facilitar la portabilidad del código compilado, el proceso se divide en las siguientes fases: Front-end. Se realizan las operaciones que sólo dependen del lenguaje fuente. Incluye análisis léxico, sintáctico y semántico, la creación de la tabla de símbolos y la generación de código intermedio Back-end. Operaciones que sólo dependen de la máquina objeto, es decir, la generación y optimización del código máquina Introducción a la informática 32 Compiladores e intérpretes Código intermedio y portabilidad El código intermedio es independiente de la máquina. Permite que se modifique el back-end para “reescribir” el código objeto cuando se cambia la máquina objeto. Lenguaje fuente Front-end Back-end Código objeto Código intermedio Introducción a la informática 33 Compiladores e intérpretes Código fuente Análisis léxico Componentes léxicos (tokens) Tabla de símbolos Front-end Análisis sintáctico Gestor de errores Árbol sintáctico Análisis semántico Árbol sintáctico anotado Generación de código intermedio Código intermedio Generación y optimización de código objeto Back-end Código objeto Introducción a la informática 34 Compiladores e intérpretes Lenguaje fuente1 Front-end1 Back-end1 Código objeto1 Lenguaje fuente2 Front-end2 Back-end2 Código objeto2 Back-endn Código objeton Código intermedio Lenguaje fuenten Front-endn Introducción a la informática 35 Compiladores e intérpretes Analizador léxico Lee la secuencia de caracteres del fichero de código fuente e identifica los componentes léxicos del lenguaje (vocabulario) Los componentes léxicos incluyen palabras reservadas, identificadores, operadores, constantes numéricas, signos de puntuación, paréntesis, etc. Introducción a la informática 36 Compiladores e intérpretes Analizador sintáctico Verifica si la secuencia de componentes léxicos cumple la sintaxis del lenguaje La estructura sintáctica se define mediante una gramática Introducción a la informática 37 Compiladores e intérpretes Analizador semántico Verifica el “significado” del código fuente. Comprueba que se cumplen las reglas semánticas del lenguaje: verificación de los tipos de datos, uso de los operadores, ámbito de las variables, etc. Utiliza una tabla de símbolos para almacenar los componentes léxicos y la información asociada a ellos Introducción a la informática 38 Compiladores e intérpretes Generación de código intermedio Generación de código no estructurado que puede traducirse fácilmente a ensamblador o código máquina Utiliza código de tres direcciones: operador, direcciones de los operandos y la dirección donde se debe almacenar el resultado. Durante la optimización se eliminan subexpresiones comunes, código muerto, cálculo de constantes, etc. Introducción a la informática 39 Compiladores e intérpretes Generación de código objeto Utiliza como entrada el código intermedio y genera el código ensamblador o máquina La optimización del código depende de la máquina. Es necesario conocer el conjunto de instrucciones del procesador, la representación de datos, el modo de direccionamiento de la memoria, los registros del microprocesador, etc. Introducción a la informática 40 Compiladores e intérpretes Tabla de símbolos Tabla de tipo diccionario que dispone de operaciones para insertar, eliminar y buscar símbolos en la tabla La tabla de símbolos es utilizada por el analizador léxico, sintáctico y semántico. También se utiliza durante la fase de generación de código intermedio Introducción a la informática 41 Compiladores e intérpretes Gestor de errores Informa de los errores que se producen durante el proceso: léxicos (ortográficos), sintácticos (construcciones gramaticales) y semánticos (asignación de tipos incorrecta) Detecta errores en tiempo de ejecución como direccionamiento fuera de rango, divisiones por cero, etc. Introducción a la informática 42 Redes de comunicaciones Redes telemáticas Una red telemática transmite información digital distancia y está controladas por sistemas informáticos a Un protocolo de red es el conjunto de normas que especifican el modo de intercambio de datos entre los elementos que forman una red. Normalmente se utilizan diferentes redes de telecomunicaciones, que finalmente resultan transparentes al usuario final que intercambia datos Introducción a la informática 43 Redes de comunicaciones El modelo OSI Open System Interconnection (OSI). El modelo OSI es utilizado por las redes de ordenadores del mundo. Este modelo fue creado por el International Standard Organization ISO Consiste en siete niveles o capas, donde cada una de ellas define las funciones que deben proporcionar los protocolos con el propósito de intercambiar información entre varios sistemas. Esta clasificación permite que cada protocolo se desarrolle con una finalidad determinada, lo cual simplifica el proceso de desarrollo e implementación. Cada nivel depende de los que están por debajo de él, y a su vez proporciona alguna funcionalidad a los niveles superiores Introducción a la informática 44 Redes de comunicaciones Nivel OSI 7 Aplicación 6 Presentación 5 Sesión 4 Transporte 3 Red 2 Enlace de datos Protocolos Internet http ftp smtp pop3 nfs ping ... TCP UDP ICMP IP Interfaz de red 1 Físico Introducción a la informática 45 Redes de comunicaciones El modelo OSI Aplicación. El nivel de aplicación es el destino final de los datos donde se proporcionan los servicios al usuario Presentación. Convierte los datos que serán utilizados en el nivel de aplicación Sesión. Encargado de ciertos aspectos de la comunicación como el control de los tiempos de transmisión Introducción a la informática 46 Redes de comunicaciones El modelo OSI Transporte. Transporta la información de una manera fiable para que llegue correctamente a su destino Red. Nivel encargado de encaminar los datos hacia su destino eligiendo la ruta más efectiva Enlace de datos. Controla el flujo de datos, sincronización y los errores que puedan producirse la Físico. Se encarga de los aspectos físicos de la conexión, tales como el medio de transmisión o el hardware Introducción a la informática 47 Redes de comunicaciones Internet Aplicación HTTP, SMTP, FTP, … Aplicación Transporte TCP, UDP, … Transporte Red IP Red Enlace Ethernet, Frame Relay, … Enlace Físico Cableado, tarjeta, … Físico Introducción a la informática 48 Redes de comunicaciones Nivel físico Cable de par trenzado. Se compone de pares de hilos, normalmente de cobre, trenzados entre sí. Hay cables de 2, 4, 25 o 100 pares de hilos e incluso de más. El trenzado mantiene estable las propiedades eléctricas a lo largo de toda la longitud del cable y reduce las interferencias. Se usa en telefonía y redes locales Cable coaxial. Formado por un conductor central (hilo sólido o trenzado de cobre) y un conductor exterior (malla trenzada de cobre o aluminio), que tiene un efecto protector y sirve como retorno de las corrientes. Entre los dos conductores hay una capa aislante. Se utiliza en transmisión de televisión y datos Introducción a la informática 49 Redes de comunicaciones Nivel físico Fibra óptica. Filamento de vidrio o plástico. La fibra óptica es capaz de transportar ondas de luz a grandes distancias. La luz se emite por un láser o un diodo. Se utiliza para transmisión a grandes distancias y de gran cantidad de datos Introducción a la informática 50 Redes de comunicaciones Nivel físico Las redes de ordenadores transfieren datos que han sido codificados de forma digital (ceros y unos) Cuando el canal es analógico se requiere la modulación y demodulación por un Modem Modulación: los datos se convierten de formato digital a analógico Demodulación: la inversa Introducción a la informática 51 Redes de comunicaciones Nivel de enlace El cableado no es suficiente, hacen falta dispositivos para interconectar los elementos de una red. Estos dispositivos obedecen a normas (protocolos) de nivel de enlace Un protocolo de nivel de enlace esta implementado en una tarjeta de red: Ethernet, Token Ring, ATM (Asynchronous Transfer Mode), Frame Relay Ordena los datos recibidos en el nivel físico y los estructura en bloques o tramas Inicia y finaliza la conexión Identifica al remitente y al destinatario Gestiona los errores Introducción a la informática 52 Redes de comunicaciones Nivel de red Recibe tramas del nivel de enlace y estructura los datos en paquetes Identifica de forma única las redes y los elementos de la red, ya sean estaciones de trabajo o elementos de interconexión como enrutadores Encamina los datos, es decir, establece la ruta de conexión, tratando de encontrar el mejor camino Introducción a la informática 53 Redes de comunicaciones Nivel de red Ofrece servicios orientados a la conexión. Antes de iniciarse la comunicación se determina el camino entre emisor y receptor. Las partes del mensaje llegan por el mismo camino y en el orden en que fueron emitidas El modo de interacción es semejante a una llamada telefónica: marcado, espera de conexión, comunicación y cierre. El primer paquete de cada mensaje indica la dirección destino. El primer paquete establece la ruta que van a seguir todos los paquetes de la conexión. Todos los paquetes siguen la misma ruta llegarán en secuencia al destino, aunque, por supuesto el retardo de cada uno puede ser variable, en función del tráfico de la red Introducción a la informática 54 Redes de comunicaciones Nivel de transporte El protocolo de nivel de red enlaza nodos de una red y el protocolo de nivel de transporte enlaza procesos Conectar nodos de la red es importante, pero lo que en realidad se hace en el mundo de las redes es conectar procesos o hilos de ejecución de aplicaciones El protocolo de nivel de trasporte recibe los paquetes del nivel de red y los envía a la aplicación correspondiente: el puerto 8080 puede conectarse al servicio web o el puerto 3306 a una base de datos Introducción a la informática 55 Redes de comunicaciones Nivel de transporte Transmission Control Protocol. Protocolo de comunicación que permite el enlace entre aplicaciones a través de Internet. Este protocolo pertenece al nivel de transporte y es el encargado de dividir el mensaje original en datagramas de menor tamaño. Los datagramas serán dirigidos a través del protocolo IP de forma individual El protocolo TCP se encarga además de añadir información necesaria en la cabecera de cada datagrama Introducción a la informática 56 Redes de comunicaciones Nivel de transporte Cuando la información se divide en datagramas para ser enviados, el orden en que éstos lleguen a su destino no tiene que ser el correcto. Cada uno de ellos puede llegar en cualquier momento y con cualquier orden, e incluso puede que algunos no lleguen a su destino o lleguen con información errónea TCP numera los datagramas antes de enviarlos, de manera que sea posible volver a unirlos en el orden adecuado. Esto permite también solicitar el envío de los datagramas individuales que no se hayan recibido o que contengan errores, sin que sea necesario volver a enviar el mensaje completo Introducción a la informática 57 Redes de comunicaciones Nivel de aplicación HTTP (Hypertext Transfer Protocol) HTTPS: versión segura de HTTP con encriptación y autentificación SMTP (Simple Mail Transfer Protocol) FTP (File Transfer Protocol) Telnet (conexión de terminal remoto) Introducción a la informática 58 Redes de comunicaciones Internet Internet Protocol (IP). Protocolo que pertenece al nivel de red. Es utilizado por los protocolos de nivel de transporte como TCP para encaminar los datos hacia su destino. IP tiene la misión de encaminar el datagrama, sin comprobar la integridad de la información que contiene Internet Protocol Address (IP Address). Esta dirección se utiliza para identificar tanto a cada ordenador y a la red a la que pertenece, de manera que sea posible distinguir a todos los ordenadores conectados a una misma red. Considerando que en Internet se conectan diversas redes, existen tres clases diferentes de direcciones, las cuales se representan mediante tres rangos de valores: Clase A, Clase B, Clase C Introducción a la informática 59 Redes de comunicaciones Internet Protocol Address (IP Address) Clase A. El primer byte tiene un valor comprendido entre 1 y 126. Estas direcciones utilizan únicamente este primer byte para identificar la red, quedando los otros tres bytes disponibles para cada uno de los hosts que pertenezcan a esta misma red. Esto significa que podrán existir más de dieciséis millones de ordenadores en cada una de las redes de esta clase. Este tipo de direcciones es usado por redes muy extensas, pero hay que tener en cuenta que sólo puede haber 126 redes de este tamaño Introducción a la informática 60 Redes de comunicaciones Internet Protocol Address (IP Address) Clase B. Estas direcciones utilizan en su primer byte un valor comprendido entre 128 y 191, incluyendo ambos. En este caso el identificador de la red se obtiene de los dos primeros bytes de la dirección, teniendo que ser un valor entre 128.1 y 191.254 (los valores 0 y 255 tienenun significado especial). Los dos últimos bytes de la dirección constituyen el identificador del host, permitiendo un número máximo de 64.516 ordenadores en la misma red. Si el número de ordenadores que se necesita conectar es mayor, se puede obtener más de una dirección de "clase B", evitando el uso de una de "clase A" Introducción a la informática 61 Redes de comunicaciones Internet Protocol Address (IP Address) Clase Clase C. En este caso el valor del primer byte tendrá que estar comprendido entre 192 y 223, incluyendo ambos valores. Este tercer tipo de direcciones utiliza los tres primeros bytes para el número de la red, con un rango desde 192.1.1 hasta 223.254.254. De esta manera queda libre un byte para el host, lo que permite que se conecten un máximo de 254 ordenadores en cada red. Estas direcciones permiten un menor número de host que las anteriores, aunque son las más numerosas pudiendo existir un gran número redes de este tipo (más de dos millones). Introducción a la informática 62