INFORMATICA III Cap. I: Plataformas
Plataformas Código nativo y portable Máquinas virtuales Servidores Estaciones de trabajo Clientes delgados Dispositivos embebidos Dispositivos móviles
Plataformas Hardware Sistemas operativos Herramientas de desarrollo
Plataformas Hardware Sistemas operativos Herramientas de desarrollo
Hardware El hardware está presente en inumerables dispositivos con los que interactuamos cotidianamente Mas reconocible: una PC, un PDA, un cajero automático Menos reconocible: un electrodoméstico, un ascensor, un teléfono, un vehículo
Hardware (II) Según la naturaleza de la aplicación se utilizan distintas plataformas de hardware, con diferentes objetivos de diseño, prestaciones, capacidades y limitaciones La evolución de la electrónica y de los microprocesadores permite contar con capacidades de programación antes impensadas
Microprocesadores Gran variedad de capacidades PC: 32/64 bits, 1 ~ 2.5 GHz, CISC/RISC Servidores: 64 + bits, ídem PDA: 16/32 bits, 200 ~ 400 MHz Celular: 8/16 bits, ~ 200 MHz Microcontroladores: 8/16 bits, 120 ~ 200 MHz
Software Programabilidad software La naturaleza del software, su diseño y las herramientas utilizables dependen directamente de la plataforma sobre la cual deberá ejecutarse el producto final Programabilidad implica: > flexibilidad > complejidad
Plataformas Hardware Sistemas operativos Herramientas de desarrollo
Monitores Todo dispositivo basado en microprocesadores requiere programas de control que administren (al menos) las funcionalidades básicas: Interrupciones Entrada/salida Procesos
Sistemas Operativos Máquina ampliada El S.O. presenta una abstracción distinta al hardware subyacente, proveyendo de interfaces de programación de mayor nivel y, en algunos casos, de portabilidad, por ejemplo, UNIX. Su tarea principal es la administración de recursos.
Multiprogramación Un sistema operativo puede brindar distintas abstracciones conceptuales: Monoprogramación: cada tarea se ejecuta ininterrumpida hasta completarse Multiprogramación: pueden ejecutarse 2 o mas tareas simultáneamente
Multiprogramación La capacidad de ejecución de tareas concurrentes depende del diseño del S.O. y del hardware. Los S.O. multiprogramables implementan técnicas de 'timesharing', compartiendo la(s) cpu(s) entre todas la tareas a ejecutar.
Multiprogramación Todos los S.O. multiprogramables (multitasking) incorporan un gestor de tareas llamado 'scheduler' El scheduler es responsable de aplicar políticas de planificación de procesos, prioridades de ejecución y control de estado de los procesos.
Multiprogramación Dependiendo del hardware, la simultaneidad de ejecución puede ser 'virtual' o real Si hay mas de un CPU, o si el CPU único tiene capacidades de paralelismo, el S.O. puede aprovechar estas capacidades planificando distintos procesos por CPU o unidad de ejecución
Multiprogramación Los microprocesadores superescalares son capaces de ejecutar varias instrucciones simultáneamente, brindando paralelismo a nivel de proceso. Los procesadores paralelos soprortan dos o mas flujos de instrucciones paralelismo de procesos
Microprocesadores Superescalares: IBM PowerRISC, Sun UltraSparc, HP PA-RISC,... Paralelos: Intel Xeon, Itanium 2,...
Máquinas Virtuales Un sistema operativo puede proporcionar un entorno de emulación de otras plataformas de hardware: Aplicación Aplicación Aplicación Aplicación Aplicación Aplicación MAQ. VIRTUAL MAQ. VIRTUAL MAQ. VIRTUAL SISTEMA OPERATIVO HARDWARE
Máquinas Virtuales El primer sistema operativo con soporte de máquinas virtuales fue VM/370 de IBM, en 1979 Los s.o. actuales proporcionan múltiples VM s: Windows (DOS), OS/390 (Linux), etc.
Máquina Virtual Java Es un procesador abstracto, que se implementa en software, sobre la plataforma local, o directamente en hardware, capaz de ejecutar aplicaciones escritas en lenguaje Java Los ejecutables de la MVJ se llaman bytecodes
Máquina Virtual Java La mayor parte de los sistemas operativos actuales implementan una o mas variantes de la MVJ: Linux MS Windows UNIX: Solaris, AIX, HP-UX, etc. IBM OS/400 y OS/390...
Máquina Virtual Java Numerosos dispositivos embebidos implementan también MVJ: PDA s Celulares Microcontroladores
Máquina Virtual Java
Máquina Virtual Java Una especificación completa de la MVJ asegura la portabilidad de las aplicaciones Java entre diversas plataformas
Plataformas Hardware Sistemas operativos Herramientas de desarrollo
Herramientas: Evolución La necesidad de desarrollar software implicó la creación de múltiples herramientas de programación de aplicaciones En este terreno encontramos desde simples ensambladores hasta lenguajes de alto nivel
Lenguajes de Programación Podemos ver al lenguaje como otra capa de abstracción, que permite ver a las aplicaciones en el contexto del programador, traduciendo este modelo al código ejecutable por la máquina destino De acuerdo al nivel de esta abstracción, se califica el lenguaje
Lenguajes de Programación En orden decreciente de nivel de abstracción, por ejemplo: Herramienta de modelado (UML, etc.) Framework (Plat. Java, MFC,.NET) Lenguaje orientado a objetos (Java, etc.) Lenguaje procedural (C, Pascal, FORTRAN) Ensamblador (assembler) Código de máquina
Entidades Herramienta Modelador UML Framework Lenguaje orientado a objetos Lenguaje procedural Ensamblador Código de máquina Entidades Diagramas Componentes Objetos, clases, mensajes Rutinas, módulos Mnemónicos Opcodes, hex
Niveles Cuando usamos una herramienta de mayor nivel, estamos interponiendo mas capas de abstracción entre nuestra aplicación y el hardware Generalmente (no siempre), mayor nivel implica mas posibilidades de diseño y menor perfomance
Capas de Abstracción Aplicación A Entorno Runtime Máquina Virtual Aplicación B Aplicación C Aplicación D Sistema Operativo/Monitor Hardware
Dispositivos Servidores Clientes Dispositivos embebidos Dispositivos móviles
Servidores Son dispositivos que brindan uno o mas servicios a un conjunto de clientes Un ejemplo: correo electrónico, referencia temporal, procesamiento numérico o gráfico, comunicaciones,etc. Usualmente concentran capacidad de procesamiento, memoria y almacenamiento
Arquitectura Red Servidor Clientes
Servidores Basados en arquitecturas RISC o CISC, frecuentemente SMP (Symmetric Multi Processing) Pueden estar agrupados en conjuntos de varios equipos, por ejemplo en clusters o computational grids Ejecutan S.O. multiprogramables, como Unix, Windows o Linux
Clientes Dispositivos que toman servicios de uno o mas servidores Una PC conectada a una red es el caso mas frecuente, pero también un microcontrolador o una terminal móvil son ejemplos de clientes La variedad de hardware y software es muy grande
Clientes Delgados En los últimos años se vio una tendencia en la industria a simplificar la arquitectura de los clientes Puede ser una limitación real, por ejemplo de un microcontrolador o un celular, o conceptual, como una pc accediendo a aplicaciones a través de la web
Dispositivos Embebidos Cuentan con capacidad de procesamiento, memoria y almacenamiento limitados Desde la evolución del control digital, las rtu s o PDA s hasta los sensores inteligentes
Dispositivos Embebidos Limitado espacio de memoria CPU s restringidas en clock y longitud de palabra Bajo consumo de energía Conectividad
Dispositivos Móviles Las mismas restricciones de los embebidos mas: Conectividad no permanente Trabajo off-line Mayores restricciones de consumo de energía Tecnología inalámbrica