Sistemas Operativos - Arquitectura de Computadores (2269)
Transcripción
Sistemas Operativos - Arquitectura de Computadores (2269)
Sistemas Operativos Introducción UMH ARCO 2015 ¿Qué es un computador? [Hamacher96]: “máquina de cálculo electrónica de alta velocidad que acepta información digitalizada, la procesa atendiendo a una lista de instrucciones que almacena internamente, y produce la correspondiente información de salida”. [RAE]: “Máquina electrónica, analógica o digital, dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la utilización automática de programas informáticos”. Esquema de funcionamiento de la computadora Datos Computadora Instrucciones de máquina Resultados Arquitectura del computador ¿Que es? Arquitectura del Computador (ISA) Juego de Instrucciones: Diseño del conjunto de instrucciones. Interface del computador. Relación con los compiladores. Organización de la máquina: Unidades funcionales y su interconexión. Transparente al software. Componentes Hardware Introducción Funciones de un computador: ¤ ¤ ¤ ¤ Procesamiento de datos. Almacenamiento de datos. Transferencias de datos entre el computador y el exterior. Control de las anteriores operaciones. La excesiva generalidad de estas funciones se debe a que la especialización funcional de un computador ocurre cuando se programa y no cuando se diseña. ¨ Sus principales componentes estructurales son: ¤ ¤ ¤ ¤ Procesador: controla el funcionamiento del computador y procesa los datos. Subsistema de memoria: almacena datos. Subsistema de entrada/salida: transfiere datos entre el computador y el entorno externo. Ruta de datos: interconexión entre las diferentes partes. Estructura del computador Código UNIDAD ARITMÉTICA ROM UNIDAD DE CONTROL Estado Contador de programa Registro de instrucción Puntero de pila ¨ ¨ Monoprocesador Multiprocesador Multicomputador UNIDAD de ENTRADA/SALIDA Datos ¨ PERIFÉRICOS MEMORIA PRINCIPAL Registros ¿Qué es un SO? Necesidad SO Necesidad: ¤ ¤ ¤ El manejo del hardware es una tarea muy complicada. Es necesario dar al usuario del ordenador un software que realice y coordine las operaciones de los elementos del sistema eficientemente. Además debe presentar una interfaz de fácil manejo y entendimiento. n Surge el Sistema Operativo. Cada circuito necesita un lenguaje para su programación. VIDEO Calculadora Programable Que pasa con los computadores? Modelo de programación del computador • Modelo de programación • Juego de instrucciones (usuario y núcleo) D0 D1 D2 D3 D4 D5 D6 D7 31 16 15 87 0 Registro de estado Registros de datos Modo Traza Sistema/Usuario Máscara de Interrupciones A0 A1 A2 A3 A4 A5 A6 A7 A7' Registros de dirección Puntero de pila de usuario Puntero de pila de sistema Contador de programa Extensión Negativo Cero Desbordamiento Acarreo T 15 14 S 13 12 11 I2 10 I1 9 I0 8 7 6 5 X 4 N 3 Z 2 V 1 C 0 0 Mapa de memoria 0 216 -1 32 2 -1 Mapa de E/S Juego de Instrucciones Octeto de Sistema Octeto de Usuario Modelo de programación de usuario y de núcleo Niveles de ejecución X N Z V C 7 6 5 4 3 2 1 0 Octeto de Usuario Registro de estado A0 A1 A2 A3 A4 A5 A6 A7 D0 D1 D2 D3 D4 D5 D6 D7 Registro de estado T 15 14 S 13 12 11 I2 10 I1 9 I0 8 7 6 5 X 4 N 3 Z 2 V 1 C 0 A0 A1 A2 A3 A4 A5 A6 A7 A7' 0 Octeto de Octeto de Usuario Sistema D0 D1 D2 D3 D4 D5 D6 D7 0 0 31 2 -1 216-1 32 2 -1 Mapa de memoria Juego de Instrucciones Modelo de programación de usuario Mapa de memoria Mapa de E/S Juego de Instrucciones Modelo de programación de núcleo Componentes de un computador CPU Memoria Bus PROGRAMAS Controlador HD Cada unidad de un computador (CPU, memoria, disco Todas estas partes deben cooperar transparentemente y eficazmente y duro, monitor,de ratón, necesita un programa de formaetc…) conveniente a los usuarios COMO? control. SISTEMA OPERATIVO El SO como guía The OS coordinates the sharing and use of all the components in the computer Operating Systems: A Modern Perspective, Chapter 1 Evolución de los SO Evolución de los SO. Evolución 1 Procesamiento en serie (1940-50): nEl usuario escribía los programas en código máquina ⇒ controlaba el HW directamente nEl operador era el encargado de insertar los trabajos de cada usuario de forma manual nTableros n enchufables o tarjetas perforadas Problemas: planificación y tiempo de preparación Evolución de los SO. Evolución 1 ¤ No había sistema operativo. ¤ Las operación con estas máquinas era desde una consola consistente en unos indicadores luminosos, unos conmutadores, un dispositivo de entrada y una impresora. ¤ Planificación por parte del programador. ¤ La preparación incluía cargar un compilador, un programa fuente, salvar el programa compilado y, por último, cargar y montar. Evolución – 2. Por lotes (batch) Procesos por lotes (batch, 50’s): ¤ Usuario ¤ Cintas ≠ Operador magnéticas o tarjetas perforadas ¤ Programas escritos en ensamblador o un lenguaje de alto nivel (FORTRAN) ¤ Se basa en el uso de un “monitor” no residente totalmente, que gestionaba el problema de la planificación ¤ El tiempo de inicio se reducía para trabajos similares Evolución – 2. Por lotes (batch) Ejemplo de trabajo por lotes Evolución – 2. Por lotes (batch) Monitores: ¤Software que controla los programas que están en funcionamiento. ¤Los trabajos se agrupaban por lotes. ¤El programa volvía al monitor al terminar su procesamiento. ¤El monitor residente está en la memoria principal y disponible para su ejecución. Evolución – 2. Por lotes (batch) Mapa de memoria: l Monitor Area de programa Protección de memoria: No permite modificar la zona de memoria en la que está el monitor. Evolución – 2. Por lotes (batch) ¨ El monitor se encarga de: Leer e interpretar las tarjetas perforadas n Cargar programas de sistema (compiladores) y de usuario en la memoria n Comunicarse con los dispositivos E/S (drivers) n ¤ Problema: bajo rendimiento, ya que no se pueden solapar las operaciones E/S con CPU. Había largas esperas entre lotes de trabajo n La 2ª Generación de ordenadores introduce hardware separado para gestionar la E/S y por tanto aparece la concurrencia , como se gestiona la concurrencia?, aparece la multiprogramacion. Evolución – 3. Multiprogramados l Procesos por lotes con multiprogramación: l l l Idea básica: tener varios procesos en marcha para que el S.O. cambie a otro proceso cuando el que está en ejecución espere una op. E/S. Todos los procesos están en memoria principal, en diferentes estado de ejecución. Grado o factor de multiprogramación l Se utiliza para: § § § ¡ Incremento de la utilización de la CPU y recursos ! Soportar múltiples usuarios activos (servidor de red) Permitir programas interactivos Evolución – 3. Multiprogramados Objetivo: aprovechar los tiempos de espera de un trabajo en la CPU para ejecutar instrucciones de otro trabajo ¨ Método: mantener los trabajos simultáneamente en memoria y elegir el trabajo a conmutar ¨ Consecuencias: ¨ n n n n n Gestión de memoria Planificación de dispositivos Gestión de interbloqueos Control de la concurrencia Protección Evolución – 3. Multiprogramados ¨ Se requiere: ¤ Gestión de recursos (memoria,dispositivos E/S) ¤ Planificación de procesos ¨ Mapa de memoria: Sistema Operativo Proceso 1 Proceso 2 Proceso 3 Multiprogramación La E/S es muy lenta en comparación con la CPU. ¨ Cuando un proceso espera por la E/S (se bloquea), ejecutamos en la CPU instrucciones de otro proceso. ¨ Los procesos entrelazan su ejecución: concurrencia. ¨ La CPU y la E/S trabajan en paralelo, se terminan más trabajos en menos tiempo ¨ Evolución – 3. Multiprogramados Multiprogramación: P1 P2 P3 P4 1 2 3 4 Proceso utilizando la CPU tiempo Evolución de los SO l Primera l l generación (1943-1955): No existe S.O. El programador realiza todo el trabajo l Segunda l Programa Monitor, § § l generación (1956-1963): Identifica e interpreta las tarjetas de control Realiza el control de trabajos Procesamiento de trabajos en lotes. Evolución de los SO l Tercera l l l Perfeccionamiento del sistema de trabajos por lotes Permiten la multiprogramación Memoria virtual. l Cuarta l l l generación (1963-1979): generación (1980- .. ): Aumento de la seguridad, velocidad de proceso y prestaciones. S.O. de red. S.O. distribuidos. Estructura de los SO Introducción Objetivo de la estructuración: Buscar una organización interna que facilite la comprensión, incremente la portabilidad, la ejecucion de las tareas, su mejora y favorezca el mantenimiento Enfoques en la estructura A grandes rasgos cabe considerar tres enfoques de diseño: I. II. III. Enfoque monitor monolítico Enfoque micronúcleo Enfoque por capas 1- SO Monoliticos ¨ ¨ ¨ Toda la funcionalidad del SO se incluye en el núcleo o procedimiento principal. El SO es un gran programa compuesto por procedimientos. Cualquier procedimiento puede llamar a otro à desde cualquier parte del so se puede llamar a otra directamente. El so trabaja en modo supervisor (acceso al hw no restringido) y los programas de aplicación en modo usuario. 1- SO Monoliticos 1- SO monolítico Procesos de usuario Proceso de usuario Proceso de usuario Proceso de usuario SVC Despertar Intérprete de la SVC Desbloquear Petición de E/S Proceso de la interrupción Nucleo Dispositivos Comienzo de la E/S Interrupción 1 - SO Monoliticos ¨ Ventaja ¤ Eficiencia procesos) ¨ (se producen pocos cambios de contexto de Desventajas: ¤ Acceso a todas las estructuras de datos del so ¤ El fallo de un proceso en modo núcleo puede bloquear el so completo ¤ Depuración compleja de los problemas ¤ Extensión del SO compleja n Ejemplos: MS-DOS y Linux 2- SO micronucleo El so consta de: ¤ ¤ Un cjto de subsistemas, cada uno de los cuales implementa un tipo de servicio Un micro núcleo que proporciona la mínima funcionalidad necesaria: n n Cada subsistema (servidor) ejecuta un bucle en el que testea si alguien (cliente) ha solicitado el servicio La petición de servicios, la finalización y el envio de resultados se realiza mediante mensajes a través del micro núcleo. 2- SO Micronucleo Desventajas: ¤ Poco eficiencia debido a la sobrecarga de las comunicaciones Ventajas ¤ Fácil implementación ¤ Si falla un servidor no se bloquea todo el so 2- Micronúcleo Proceso Proceso Procesode usuario de usuario Proceso de usuario de usuario Lectura de disco Devolver los datos Inicio de la E/S Proceso gestionador de dispositivo Dispositivo Interrupción Despertar Determinación del proceso que solicitó la E/S Micronúcleo Proceso de la interrupción 3- Diseño por capas ¨ ¨ El diseño por capas lleva asociada una jerarquización que permite disminuir la complejidad observable de un sistema Concepto de capa: conjunto de funciones claramente definidas hacia un objetivo común Entidad N Capa N Servicios Capa N-1 Entidad N-1 Entidad N-1 Estructura de UNIX Programas de usuario Bibliotecas Trap Nivel de usuario Nivel kernel Interfaz de llamadas al sistema Subsistema de Subsistema control de procesos de archivos Subsistema de E/S Manejo de memoria Buffer cache IPC Bloque Carácter Planificador Drivers Nivel kernel Nivel hardware Control hardware HARDWARE Estructura de Linux Interfaz de llamadas de alto nivel Modo usuario Validación de argumentos de las llamadas al sistema Alto nivel del núcleo Conmutador de sistemas de archivo Manejador de archivos Manejador de procesos Interfaz de sockets y streams Manejador de callouts Manejador de terminales Manejador de memoria Estructuras del núcleo (alto nivel) Pila de red Manejador del buffer cache Estructuras de datos compartidas entre el alto y el bajo nivel Manejadores de dispositivo Manejador de interrupciones Manejador de traps de llamadas al sistema Manejador de excepciones Tabla de dispatch Manejador de procesos de bajo nivel HARDWARE Callout de bajo nivel Cambio de contexto Bajo nivel del núcleo Estructura de W2K Procesos de sistema Servicios Controlador de servicios Aplicaciones Subsistemas POSIX Replicador Alertador WinLogon OS2 RPC Manejador de sesiones Aplicaciones DLLs de usuario DLLs DLLs Registrador de eventos Hilos del sistema Win32 NTDLL.DLL API del núcleo Manejador de E/S NtosKrnl.exe Manejador de cache PnP Control de alimentación Seguridad Memoria virtual Procesos e hilos Sistema de archivos Manejador de objetos Manejadores de dispositivo Kernel HAL HARDWARE Win32 GDI Ventajas del empleo de capas ¤ ¤ ¤ ¤ ¤ Las estructuras internas y algoritmos de una capa no son visibles a las demás El sistema puede evolucionar fácilmente Pueden existir realizaciones alternativas Algunas capas pueden ser transparentes si sus servicios no son necesarios Cada capa se codifica y prueba de modo independiente. No se bloquea todo el SO Introducción a los SO Introducción Elementos de un sistema informático ¤ Hardware ¤ Software software del sistema (Sistema Operativo) n aplicaciones n ¤ Personas (usuarios del sistema) usuarios n programadores n El Hardware El hardware contiene elementos: ¤ Procesamiento, CPU ¤ Memoria:RAM, disco, cintas,.. ¤ Dispositivos E/S ¤ Dispositivos Comunicaciones Perspectives of the Computer print cut save send open() malloc() fork() read-disk start-printer track-mouse Application Software System Software Application Software System Software System Software Hardware Hardware Hardware (b) Programador de aplicaciones © Programador de SO (a) Usuario Final Application Software Operating Systems: A Modern Perspective, Chapter 1 Niveles del Sistema Aplicaciones de Usuario Interface con el SO Sistema Operativo Interface con el Hardware Hardware Esta conceptualización es importante Abstracciones El SO simplifica el uso del hardware construyendo una serie de abstracciones: ¤ Proceso: es una CPU dedicada a un programa ¤ Memoria Virtual: simula una RAM infinita ¤ Archivos: memoria permanente de datos ¤ Shell: interfaz de usuario programado El SO ha evolucionado en conjunto con la tecnología ¿Que es un SO? Es un conjunto de programas cuyas misiones son: ¤ 1. Gestionar los recursos del sistema informático (procesadores, memoria, E/S, etc), entre los diferentes procesos que compiten por ellos. ¤ 2. Ofrecer al usuario una especie de "máquina virtual" o "máquina extendida", más fácil de usar que el hardware subyacente Definiciones de Sistema Operativo (Stallings) Un SO es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre el usuario del computador y el hardware del mismo. (Silberschatz, 1): Un SO es todo aquello que te entrega el vendedor cuando le pides un Sistema Operativo. (Silberschatz, 2): el SO es el único programa que se está ejecutando en todo momento en el computador (denominado núcleo o kernel), siendo el resto programas de aplicación. (Milenkovic): un SO puede ser contemplado como una colección organizada de extensiones software del hardware, consistente en rutinas de control que hacen funcionar un computador y proporcionan un entorno para la ejecución de los programas. Definiciones importantes Sistema operativo: “Conjunto de programas que controla la ejecución de los programas de aplicación y actúa como interfaz entre el usuario y el hardware (controla y asigna recursos)” Programas de usuario: Utilizan los servicios proporcionados por el S.O. para tener acceso a los recursos (ficheros, dispositivos E/S, procesador, memoria, etc.) Objetivo básico de un SO “Crear una máquina virtual con la que sea sencillo trabajar” SO Funciones HW Otros objetivos Ejecutar las aplicaciones de los usuarios ¨ Facilitar la interacción con el computador ¨ Administrar eficientemente los recursos de la máquina ¨ Controlar el funcionamiento del hardware y ofrecer un modo sencillo de acceso al ordenador. ¨ Funciones básicas de los SO Abstracciones ¤ Proceso: es una CPU dedicada a un programa ¤ Memoria Virtual: simula una RAM infinita ¤ Archivos: memoria permanente de datos ¤ Shell: interfaz de usuario programado ¿Cómo implementa el SO estas abstracciones? ¤ Mediante una serie de módulos repartidos en niveles Parte Principal Módulo principal: Núcleo o Kernel El más cercano al hardware l Se carga en memoria al iniciar la computadora y se mantiene siempre. l Coordina los demás módulos l Funciones: l l l l Manejo de interrupciones Asignación de trabajos al procesador Intercomunicador entre programas. Nucleo o Kernel Básicamente ,el sistema operativo se compone de un núcleo o Kernel y un intérprete de comandos denominado Shell. u su a r io p rogram a s sh e ll kernel H ard w are Núcleo ¨ ¨ ¨ Se suele llamar núcleo (kernel) al software del sistema operativo que reside permanentemente en memoria y que atiende las llamadas al sistema. El núcleo ofrece una serie de servicios a los procesos de usuario para que estos puedan llevar a cabo su misión. Inicia el SO Proceso Proceso N U C L E O Proceso Proceso H ardw are N U C L E O Estructura de UNIX Programas de usuario Bibliotecas Trap Nivel de usuario Nivel kernel Interfaz de llamadas al sistema Subsistema de Subsistema control de procesos de archivos Subsistema de E/S Manejo de memoria Buffer cache IPC Bloque Carácter Planificador Drivers Nivel kernel Nivel hardware Control hardware HARDWARE Estructura de Linux Interfaz de llamadas de alto nivel Modo usuario Validación de argumentos de las llamadas al sistema Alto nivel del núcleo Conmutador de sistemas de archivo Manejador de archivos Manejador de procesos Interfaz de sockets y streams Manejador de callouts Manejador de terminales Manejador de memoria Estructuras del núcleo (alto nivel) Pila de red Manejador del buffer cache Estructuras de datos compartidas entre el alto y el bajo nivel Manejadores de dispositivo Manejador de interrupciones Manejador de traps de llamadas al sistema Manejador de excepciones Tabla de dispatch Manejador de procesos de bajo nivel HARDWARE Callout de bajo nivel Cambio de contexto Bajo nivel del núcleo Estructura de W2K Procesos de sistema Servicios Controlador de servicios Aplicaciones Subsistemas POSIX Replicador Alertador WinLogon OS2 RPC Manejador de sesiones Aplicaciones DLLs de usuario DLLs DLLs Registrador de eventos Hilos del sistema Win32 NTDLL.DLL API del núcleo Manejador de E/S NtosKrnl.exe Manejador de cache PnP Control de alimentación Seguridad Memoria virtual Procesos e hilos Sistema de archivos Manejador de objetos Manejadores de dispositivo Kernel HAL HARDWARE Win32 GDI Niveles clásicos de un SO NIVEL 1 Nivel inferior de gestión del procesador Objetivo: ¤ Compartir la CPU entre procesos (multiprogramacion) Funciones: ¤ ¤ ¤ Sincronización entre procesos Conmutación de la CPU Gestión de interrupciones Estados de un proceso A medida que un proceso se ejecuta, cambia de estado: n nuevo: recién creado por el S.O. n en ejecución: está en la CPU ejecutando instrucciones n bloqueado: esperando por algún evento (ej. una operación de E/S) n preparado: esperando a que le asignen un procesador (CPU) n terminado: no ejecutará más instrucciones Estados de un proceso F in o p e r a c ió n o o c u r r e e v e n to N u e v o A d m itid o B lo q u e a d o O p e r a c ió n E /S o e s p e r a e v e n to T e r m in a d o I n te r r u p c ió n P r e p a r a d o E j e c u c ió n P la n if ic a d o r L la m a d a s is te m a o e x c e p c ió n Niveles clásicos de un SO NIVEL 2 Nivel superior de gestión de procesos Objetivo: ¤ Gestión de procesos Funciones: ¤ ¤ ¤ Creación y destrucción de procesos Intercambio de mensajes entre procesos Detención y arranque de procesos Creacion de Procesos Creación de un proceso: ¤ Desde la línea de órdenes (shell) ¤ Creados por otros procesos ⇒ estructura árbol A B D E C F Niveles clásicos de un SO NIVEL 3 Gestión de memoria Objetivo: ¤ Repartir la memoria entre procesos Funciones: ¤ ¤ Asignación y liberación de memoria Control violación de acceso Gestión de memoria principal Memoria principal es escasa y cara Responsabilidades del SO: v ¤ ¤ ¤ ¤ ¤ conocer qué zonas de memoria están libres y cuáles están ocupadas decidir qué procesos hay que cargar cuando haya memoria libre reservar y liberar zonas de memoria según se solicite memoria virtual: utilizar el almacenamiento secundario como una extensión de la memoria principal. Proteger la zona de memoria asignada a los procesos Niveles clásicos de un SO NIVEL 4 Nivel de gestión de dispositivos ¨ Objetivo: ¤ ¨ Realizar la gestión de las E/S en función de los dispositivos existentes Funciones: ¤ ¤ ¤ Creación de procesos de E/S Asignación y liberación de dispositivos de E/S Planificación de la E/S Gestión Dispositivos La E/S es un conjunto de dispositivos muy variados. ¨ Objetivos del S.O con respecto a las E/S: ¨ l l l l l proporcionar una interfaz uniforme para el acceso a los dispositivos (independencia del dispositivo) proporcionar manejadores (drivers) para los dispositivos concretos tratar automáticamente los errores más típicos para los dispositivos de almacenamiento, utilizar cachés para los discos, planificar de forma óptima las peticiones El problema de la E/S La E/S era muy lenta en comparación con la CPU. ¨ Esto provocaba que la CPU quedara ociosa mucho tiempo esperando por la terminación de operaciones de E/S. ¨ Algunas técnicas para tratar el problema: ¨ ¤ Uso de búferes y spoolers ¤ DMA ¤ Multiproceso Controladores de E/S ¨ ¨ ¨ ¨ Los dispositivos se conectan al bus de datos a través de controladores de E/S. La CPU se comunica con los controladores a través de instrucciones especiales o de direcciones de memoria concretas. Cada controlador tiene un búfer local (en el controlador). La CPU envía y recoge datos del búfer. En general, el controlador notifica a la CPU la finalización de una operación o la llegada de nuevos datos mediante una interrupción. Niveles clásicos de un SO NIVEL 5 Nivel de gestión de la información Objetivo: ¤ Gestionar el espacio de nombres lógicos y la protección de la información. Funciones: ¤ ¤ ¤ ¤ Creación y destrucción de ficheros y directorios Apertura y cierre de ficheros Lectura y escritura de ficheros Protección de acceso Sistema de archivos ¿Cómo se almacena y cómo presenta la información el SO? Un archivo es un conjunto de datos identificado por un nombre. Los archivos se almacenan en dispositivos de E/S. Un archivo es un concepto de alto nivel que no existe en el hardware. ¨ ¤ ¤ ¤ ¤ Los archivos contienen datos. Una carpeta sirve para almacenar archivos y otras carpetas Construyéndose así un sistema de archivos en forma de árbol. La información de la estructura de carpetas se suele almacenar en una zona predeterminada. Sistema de archivos Funciones del S.O.: ¤ manipulación de archivos: crear, borrar, leer, escribir... ¤ manipulación de directorios ¤ ubicar los archivos y directorios en los dispositivos de almacenamiento secundario ¤ automatizar ciertos servicios: copia de seguridad, versiones, etc. Shell Interfaz de usuario (shell) SHELL USUARIO Otros modulos Kernel Interfaz Aplicación HARDWARE SHELL Shell Interfaz de usuario: El modulo que controla la manera de comunicarse el SO con el usuario se denomina interprete de ordenes, entorno o shell. ✔ Funciones: Traducir las ordenes del usuario en ordenes del SO. RESUMEN • Todo el SO se ejecuta en modo supervisor ● Sólo el µnúcleo se ejecuta en modo supervisor ● Menos robusto ● Más robusto ● El SO es ininterrumpible ● El SO es interrumpible ● Menor rendimiento debido a la sobrecarga de comunicaciones ● Mayor rendimiento ● Empleado en sistemas pequeños ● Empleado en sistemas grandes ● Difícil de modificar en tiempo de ejecución ● Fácil de modificar en tiempo de ejecución ● Menos adaptable Practicas ¨ Empiezan en Octubre n n n ¨ 1 grupo. Asistencia obligatoria guiadas y entrega de memoria Linux embebido n n n ¤ Trabajos Interprete de ordenes Llamadas al sistema Programación en Lenguaje C (make,gcc)