programación de sistemas - servidor rigel | servidor...

43
Introducción Programación de Sistemas Informática VI. Programación e Implementación de Sistemas

Upload: donhu

Post on 08-Jun-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Introducción Programación de

Sistemas

Informática VI. Programación e Implementación de Sistemas

Page 2: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Ciclo de Vida de los Sistemas de Información

Análisis

Diseño

Implementación

Mantenimiento

Page 3: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Modelos

Page 4: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Programación de Sistemas

1. Definición de programación de sistemas.

2. Lenguajes de programación.

3. Intérpretes.

4. Compiladores.

5. Sistemas operativos.

Page 5: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Definición de programación de sistemas

Programa

• Conjunto de instrucciones que ejecuta una computadora para realizar una actividad.

Sistema

• Conjunto de elementos autónomos que trabajan en armonía para alcanzar un objetivo en común.

Page 6: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Definición de programación de sistemas

Programa

• Algoritmo

• Codificación

• Compilación

• Prueba

Sistema

• Análisis

• Diseño

• Implementación

• Prueba

Page 7: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Tipos de sistemas

• Sistemas físicos:

• equipo,

• maquinaria,

• objetos reales,

• Hardware

• Sistemas abstractos:

• ideas,

• hipótesis,

• conceptos,

• planes,

• procesos,

• Software

Page 8: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Características de un sistema

• Están bien delimitados, por lo tanto se conocen sus fronteras.

• Un sistema puede interactuar con su medio ambiente a través de una interfaz de entradas y salidas que recibe el nombre de parámetros del sistema.

• Un sistema puede ser componente de otro sistema

Page 9: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Características del software

• Software de sistemas: software que ayuda (sirve de base) a otro software.

• Procesan estructuras de datos complejas

• Tienen una fuerte dependencia con el hardware

• Utilizan una fuerte gestión de procesos (concurrencia, planificación, etc.)

Page 10: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Clasificación del software

• Software de aplicación (gestión)

• Software de tiempo real

• Software empotrado (embedded)

• Software de ingeniería y científico

• Software basado en Web

• Software de inteligencia artificial

• Software móvil

Page 11: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Clasificación de Sistemas de Información

Page 12: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Definición de programación de sistemas

• Acción de resolver eficientemente una necesidad mediante un código hecho programa que se comunican para satisfacer dicha necesidad en un ambiente amigable y fácil de manejar para el usuario final.

• Es un área especializada dentro de las ciencias de la computación.

Page 13: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Herramientas desarrolladas con la teoría de programación de sistemas

• El caso más sencillo de programación de sistemas es la construcción de compiladores para ejecutar lenguajes de programación.

• Pero no sólo se aplica en lenguajes de programación, sino también se aplica en cualquier programa que se tenga que hacer un análisis o extracción de información.

Page 14: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Lenguajes de programación 1/2

• Un lenguaje de programación es un conjunto de instrucciones, operadores y reglas de sintaxis para poder comunicarse con los dispositivos hardware y software existentes.

Page 15: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Lenguajes de programación 2/2

• Lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina, especialmente una computadora. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas.

Page 16: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Paradigmas

Procedimental

ImperativaEstructu-

radaOrientada a

Objetos

Declarativa

Funcional Lógica

Page 17: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Intérpretes

• Un intérprete es un programa de computadora que ejecuta o lleva a cabo instrucciones escritas en un lenguaje de programación.

• La interpretación es una de las formas de ejecución de los programas de computadoras.

• El término "intérprete" puede hacer referencia al programa que ejecuta el código fuente que acaba de ser traducido a una forma intermedia, o puede hacer referencia al programa que lleva a cabo tanto la traducción como la ejecución.

Page 18: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Compiladores

• Los compiladores son programas o herramientas encargadas de compilar.

• Un compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (código objeto).

Page 19: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 20: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 21: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Análisis lexicográfico

• Descompone el programa fuente en sus elementos constituyentes: sus símbolos, que son caracteres o secuencias de caracteres con significado especial.

• Identifica las palabras del lenguaje.

• Aísla los símbolos, identifica su tipo y almacena en las tablas de símbolos la información del símbolo que pueda ser necesaria durante el proceso de traducción.

Page 22: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 23: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Análisis sintáctico

• La sintaxis de los lenguajes de programación se especifica mediante un conjunto de reglas (la gramática del lenguaje).

• Esta fase deberá comprobar si un programa es sintácticamente correcto:

• Sus estructuras (expresiones, sentencias o asignaciones) están construidas de acuerdo con las reglas del lenguaje.

Page 24: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 25: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Análisis semántico

• La semántica de un lenguaje de programación define el significado dado a las distintas construcciones sintácticas.

• En los lenguajes de programación:

• El significado está ligado a la estructura sintáctica de las sentencias.

Page 26: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 27: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Generación de Código Intermedio

• Si no se han producido errores en algunas de las etapas anteriores, este módulo realiza la traducción a un código interno propio del compilador, denominado Código Intermedio, a fin de permitir la portabilidad del lenguaje a otras computadoras.

Page 28: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 29: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Optimizaciones

• Se mejora el código intermedio generado anteriormente, analizando el programa de forma global.

• Ejemplo:

• Encontrar en el código la inicialización de una constante dentro de un ciclo, con lo que esta inicialización se produciría tantas veces como se repitiese el ciclo. El optimizador sacaría esta inicialización de la constante fuera del ciclo para que sólo se realizase una vez.

Page 30: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilaciónAnálisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 31: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Generación de Código Objeto

• Se genera el código objeto final.

• En algunos casos, este código es directamente ejecutable, y en otros necesita algunos pasos previos a la ejecución (ensamblado, encuadernación y carga).

Page 32: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Análisis

Síntesis

Page 33: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases del proceso de compilación

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Generador de código intermedio

Optimizador de código

Generador de código objeto

Tabla de símbolos Tratamiento de errores

Análisis

Síntesis

Page 34: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Observaciones

• Para un lenguaje de alto nivel, es común todo el proceso de análisis y la generación de código intermedio.

• La generación del código objeto se particulariza para cada tipo de procesador.

Page 35: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Observaciones

• La compilación es un proceso complejo y que consume a veces un tiempo muy superior a la propia ejecución del programa.

• En cualquiera de las fases de análisis el compilador puede dar mensajes sobre los errores que detecta en el programa fuente, cancelando en ocasiones la compilación para que el usuario realice en el archivo las correcciones oportunas.

• Existen compiladores que permiten al usuario omitir o reducir las fases de optimización, disminuyéndose así el tiempo global de la compilación.

Page 36: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Fases de compilación en C

• Preprocesado: modifica el código fuente en C según una serie de instrucciones (denominadas directivas de preprocesador) simplificando de esta forma el trabajo del compilador. Por ejemplo: #include

• Compilación: genera el código objeto a partir del código ya preprocesado.

• Enlazado: une los códigos objeto de los distintos módulos y bibliotecas externas (como las bibliotecas del sistema) para generar el programa ejecutable final.

Page 37: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Compiladores

• Generalmente un compilador se divide en dos partes:

• Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará.

• Back End: parte en donde se genera el código máquina exclusivo para una plataforma a partir de lo analizado en el front end.

• Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).

Page 38: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Compiladores

•Existen varios tipos de compiladores:

• Compiladores cruzados,

• Compiladores optimizadores,

• Compiladores de una sola pasada,

• Compiladores de varias pasadas,

• Compiladores JIT (Just In Time).

Page 39: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Intérpretes vs. compiladores

• En general, la principal desventaja de los intérpretes, es que cuando un programa es interpretado, suele ejecutarse más lento que si el mismo programa estuviese compilado. Esto se debe a que el intérprete debe analizar cada sentencia en el programa en cada ejecución (un análisis en tiempo real). También el acceso a variables es más lento en un intérprete, porque mapear los identificadores para almacenar las localizaciones debe hacerse repetidas veces en tiempo real.

Page 40: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Sistemas operativos

• Software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicación y los diferentes usuarios.

• Es un administrador de los recursos de hardware del sistema.

• Es un sistema que consiste en ofrecer una distribución ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los diversos programas que compiten por ellos.

Page 41: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Sistemas operativos

• Funciones:

• Proveer una máquina virtual, es decir, un ambiente en el cual el usuario pueda ejecutar programas de manera conveniente, protegiéndolo de los detalles y complejidades del hardware.

• Administrar eficientemente los recursos de la computadora.

Page 42: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Sistemas operativos

• Realizar el interfaz sistema-usuario.

• Compartir los recursos de Hardware entre los usuarios.

• Permitir a los usuarios compartir sus datos entre ellos.

• Prevenir que las actividades de un usuario no interfieran en las de los demás usuarios.

• Calendarizar los recursos de los usuarios.

• Facilitar el acceso a los dispositivos de E/S.

• Recuperarse de fallas o errores.

• Llevar el control sobre el uso de los recursos.

Page 43: Programación de Sistemas - Servidor Rigel | Servidor ...rigel.fca.unam.mx/~memartinez/infovi/pdf/Introduccion.pdf · construcción de compiladores para ejecutar lenguajes de programación

Referencias

• https://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r65163.PDF

• http://www.scribd.com/doc/52944613/27/La-compilacion-y-sus-fases