Prof. Ing. Miguel Angel Aguilar Ulloa 2009-2010



Documentos relacionados
FP BÁSICA Ofimática y archivo de Documentos

Nociones Fundamentales sobre Derechos de Autor y Licenciamiento de Software Libre. Andrés Gazsó Abogado Gazsó Dolányi & Fernández Abogados

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M.

Introducción a la Computación

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Acceso al Disco Compartido y Dispositivos USB y DVD

Software libre. Descripción

Concepto de sistema operativo

Conceptos Básicos de Software. Clase III

IES Abyla. Departamento de Informática. Sistemas Operativos

Introducción al Mundo GNU/Linux

Trabajo TICO Unidad 2: Sistemas Operativos. Guillermo Jarne Bueno.

El Computador. Software

Es el conjunto de programas y procedimientos ejecutados en un computador, necesarios para hacer posible la realización de una tarea específica.

Funcionamiento de los Computadores:

Actividad N 1. Primer procesador creado por Intel

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

Se encarga de realizar las funciones básicas de manejo y configuración del ordenador. La BIOS tiene más tareas fundamentales: Chequearse a sí misma.

GESTIÓN DE LA DOCUMENTACIÓN

TALLER No. 1 Capitulo 1: Conceptos Básicos de Bases de datos

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

GESTIÓN ACADÉMICA GUÍA DIDÁCTICA HACIA LA EXCELENCIA COMPROMISO DE TODOS! Nombres y Apellidos del Estudiante:

Asuntos legales y profesionales INTRODUCCIÓN A LA INGENIERÍA DE SISTEMAS

Unidad 5. Software libre: un poco de historia Ejercicios de autoevaluación

Capitulo V Administración de memoria

MANUAL DE USUARIO DE SKYDRIVE

Para utilizar esta nueva funcionalidad usted debe hacer lo siguiente: Figura 1. Ventana buscar usuarios para modificar.

Unidad 4: Software Libre. Aspectos Profesionales UNPA-UARG

CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES, BILIB RECETA TECNOLÓGICA REALIZACIÓN DE COPIAS DE SEGURIDAD CON GSYNC

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Guía para realizar trabajos universitarios

IAP ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS

T2.- Software libre. TEMA 2 SOFTWARE LIBRE. T2.- Software libre. 1.- Concepto de software libre. 1.- Concepto de software libre.

SIGAN 1.0 SISTEMA DE INFORMACIÓN DE GESTIÓN ADMINISTRATIVA DE NÓMINA

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Qué es una máquina virtual?

Fundamentos de Desarrollo de Software

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

DEPARTAMENTO ADMINISTRATIVO NACIONAL DE ESTADÍSTICA. Oficina de Sistemas

Utilización del sistema operativo GNU/ Linux en las netbooks

Clase 5. Software. Profesora: Karina Viegas

CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS

Introducción a las redes de computadores

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 3: sistemas operativos

CAPÍTULO 17: ASPECTOS BÁSICOS DEL SISTEMA OPERATIVO WINDOWS

Capítulo 5. Cliente-Servidor.

Universidad Autónoma del Estado de México ADMINISTRACIÓN Y SEGURIDAD EN SISTEMAS OPERATIVOS ADMINISTRACIÓN SOBRE WINDOWS POR: J. JAIR VÁZQUEZ PALMA

Máquinas virtuales (VMWare, Virtual PC, Sandbox. Qué son y para qué sirven. (DV00402A)

Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015.

INTRODUCCIÓN A LAS REDES INFORMÁTICAS

2.1. Los sistemas operativos. UNIDAD 2

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Impresión de datos variables

SISTEMA DE GESTIÓN DOCUMENTAL QUIPUX MÓDULO DE TAREAS. Manual de Usuario. Septiembre Sistema de Gestión Documental Quipux

Software, qué es? Clasificación. Tipos de software Freeware Firmware Shareware Release. Software por área. Propiedades y versiones

Conceptos Generales. sobre Software Libre. Grupo de Estudio en Software Libre [GLUC-GEC] Copyright Ulises Hernandez. FDL

Guía rápida. Nero BackItUp. Ahead Software AG

Manual del Usuario. Programa para el cálculo de los ángulos asociados a la geometría de iluminación y observación de la escena SAC-C MMRS. Versión 1.

EL COMPUTADOR. Las computadoras son actualmente

EJERCICIOS PROPUESTOS

Tema 1 Fundamentos de Computación

DataMAX pa r a PS3. Manual del Usuario V1.0

Fundamentos de Computación para Científicos

Act 1: Revisión de Presaberes. Lectura No. 1. Título de la Lectura: El Computador

PALESTRA PORTAL DE ASUNTOS PÚBLICOS DE LA PUCP

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

Descripción. Este Software cumple los siguientes hitos:

Introducción al Software Libre y GNU/Linux. Por. Daniel Vazart P.

SISTEMA CABILDO MANUAL DE INSTALACIÓN CLIENTE ERP CABILDO LA SOLUCIÓN TECNOLÓGICA MÁS COMPLETA E INTEGRAL PARA GOBIERNOS LOCALES

Atrápame si puedes...

Novell Vibe 4.0. Marzo de Inicio rápido. Inicio de Novell Vibe. Introducción a la interfaz de Novell Vibe y sus funciones

REQUERIMIENTOS NO FUNCIONALES


Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Partes de la Computadora

Instalación y Configuración de Terminal Server en Windows 2000 Server

Guía de estudio para examen de recuperación tecnología I

Introducción a Visual Studio.Net

Software libre. El software libre provee la libertad de: Documentación (guías, wikis, faqs, etc.). Programa ejecutable. Código fuente del programa.

Acronis License Server. Guía del usuario

Elementos requeridos para crearlos (ejemplo: el compilador)

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

Sistemas Operativos de Red

Pimeef Software Libre en la empresa

MANUAL DE USUARIO DE OFICINA CONECTADA

La publicación. Pere Barnola Augé P08/93133/01510

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

Manual de uso básico de la aplicación

pymegnu v2.0 PRESENTACIÓN DE PRODUCTOS

Curso de Administración de Servidores GNU/Linux

Software de Captura y Validación de Información Cambiaria

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

1. La nueva interfaz del programa

ESPECIALIZACIÓN EN ARQUITECTURA DEL SOFTWARE SENA - SOCORRO MSL. Hebert Augusto Orjuela Cuadros.

Es un software instalado en los equipos asignados a los Centros de Consulta con el objetivo de:

Software Computacional y su clasificación

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE

Servicio de hospedaje de servidores

Este Anexo IV forma parte del Contrato Marco Multiservicios ( Contrato") suscrito entre I-MED S.A. y el Prestador.

Transcripción:

LECCIÓN 3 ARQUITECTURA DE SOFTWARE DE SISTEMAS EMPOTRADOS Prof. Ing. Miguel Angel Aguilar Ulloa 2009-2010

Copyright 2009. Ing. Miguel Angel Aguilar Ulloa. Última actualización: 15/02/2010. Usted es libre de: Copiar, distribuir y comunicar públicamente la obra. LICENCIA Hacer obras derivadas. Bajo las siguientes condiciones: Reconocimiento Debe reconocer los créditos de la obra de la manera especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra). No comercial No puede utilizar esta obra para fines comerciales. Compartir bajo la misma licencia Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode. 2

1. Código Abierto (Open Source). 2. Software libre (Free Software). 3. Software propietario. CONTENIDO 4. Licencias de software. 5. Arquitecturas de software de los sistemas empotrados. 6. Arquitectura de software de los sistemas empotrados. 1. Firmware. 2. Sistema operativo. 3. Sistemas de archivos 4. Aplicación. 3

1. CÓDIGO ABIERTO (OPEN SOURCE).

La idea detrás del open source es sencilla: cuando los programadores en internet pueden leer, modificar y redistribuir el código fuente de un programa, éste evoluciona, se desarrolla y mejora. Los usuarios lo adaptan a sus necesidades, corrigen sus errores a una velocidad impresionante, mayor a la aplicada en el desarrollo de software convencional o cerrado, dando como resultado la producción de un mejor software. CÓDIGO ABIERTO (OPEN SOURCE) 5

Premisas del Código Abierto 1. Libre redistribución: el software debe poder ser regalado o vendido libremente. 1. Código fuente: el código fuente debe estar incluido u obtenerse libremente. 2. Trabajos derivados: la redistribución de modificaciones debe estar permitida. 3. Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches. CÓDIGO ABIERTO (OPEN SOURCE) 4. Sin discriminación de personas o grupos: nadie puede dejarse fuera. 5. Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos. 6

Premisas del Código Abierto 7. Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa. 8. La licencia no debe ser específica de un producto: el programa no puede licenciarse solo como parte de una distribución mayor. 9. La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto. CÓDIGO ABIERTO (OPEN SOURCE) 10. La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software. 7

2. SOFTWARE LIBRE

El Software Libre funciona bajo un ideal: el software propietario, al no poder compartirse, es antiético dado que prohibir compartir entre seres humanos va en contra de las leyes naturales. Richard Stallman es el creador de los conceptos de software libre. SOFTWARE LIBRE (FREE SOFTWARE) Richard Stallman en FOSDEM 2005 en Bruselas por chrys 9

Mapa conceptual de software libre SOFTWARE LIBRE (FREE SOFTWARE) 10

El movimiento del software libre hace especial énfasis en los aspectos morales o éticos del software, viendo la excelencia técnica como un producto secundario deseable de su estándar ético. El movimiento Open Source ve la excelencia técnica como el objetivo prioritario, siendo la compartición del código fuente un medio para dicho fin. El Open Source o Código Abierto, es hablar de Software Libre pero de forma amigable a las empresas. El término Open Source no plantea cuestiones éticas, como lo hace el término Software Libre. DIFERENCIAS ENTRE CÓDIGO ABIERTO Y SOFTWARE LIBRE 11

Ambos movimientos reconocen el mismo conjunto de licencias y mantienen principios equivalentes. Un término que pretende resolver posibles ambigüedades o confusiones que ambos términos generan es FOSS (Free Open Source Software). SIMILITUDES ENTRE CÓDIGO ABIERTO Y SOFTWARE LIBRE 12

El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre: el sistema GNU. PROYECTO GNU 13

El nombre Linux viene del núcleo Linux, inicialmente escrito por Linus Torvalds en 1991. El software de sistema viene, normalmente, del sistema operativo GNU, iniciado por Richard Stallman. La contribución de GNU es la razón por la que algunos prefieren llamar GNU/Linux al sistema operativo formado por las herramientas de GNU y el núcleo Linux en su conjunto. LINUX/GNU 14

3. SOFTWARE PROPIETARIO

El software no libre también llamado software propietario se refiere a cualquier programa en el que los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones), o cuyo código fuente no está disponible o el acceso a éste se encuentra restringido. SOFTWARE PROPIETARIO 16

4. LICENCIAS DE SOFTWARE

Una licencia es aquella autorización formal con carácter contractual que un autor de un software da a un interesado para ejercer "actos de explotación legales". Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias. Cuando se desarrolla un proyecto basado en tecnologías de código abierto o software libre se debe tener claras las implicaciones legales del uso de dicho software, debido a que las licencias que se emplean tienen particularidades con respecto a las licencias de software comunes. LICENCIAS DE SOFTWARE 18

Licencias GPL y LGPL Cuando se desarrolla sistemas basados en Linux hay dos tipos de licencias que entran en juego: La Licencia Pública General (GPL) y La Licencia Pública General Reducida (LGPL). Ambas están disponibles en el sitio del proyecto GNU: http://www.gnu.org/licenses/licenses.es.html. La licencia GPL se emplea principalmente en las aplicaciones, mientras que la LGPL se usa para bibliotecas. LICENCIAS DE SOFTWARE El kernel de Linux y el toolchain de GNU poseen la licencia GPL y la biblioteca estándar de C posee la licencia LGPL. 19

Licencias GPL Una de las más utilizadas es la Licencia Pública General de GNU (GNU GPL). El autor conserva los derechos de autor (copyright), y permite la redistribución y modificación bajo términos diseñados para asegurarse de que todas las versiones modificadas del software permanecen bajo los términos más restrictivos de la propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL. LICENCIAS DE SOFTWARE Es decir, la licencia GNU GPL posibilita la modificación y redistribución del software, pero únicamente bajo esa misma licencia. 20

Licencia Pública General - GPL La licencia GPL lo que busca primordialmente un mayor grado de libertad a los desarrolladores y lo usuarios, permitiéndoles emplear, modificar y redistribuir software con algunas restricciones. La GPL estipula lo siguiente: Se puede hacer tantas copias de un software tanto como se quiera, siempre y cuando se mantenga la licencia y los derechos de autor intactos. El software distribuido bajo la licencia GPL viene sin garantía a menos que ofrecido por un distribuidor. Se puede cobrar por la distribución de copias y por ofrecer garantía. Se puede distribuir copias binarias de un software siempre y cuando sean acompañadas del código fuente empleado para crear los binarios. No se puede agregar restricciones adicionales a las establecidas por la GPL. Se puede modificar un software y redistribuir las modificaciones, siempre y cuando provea los mismo derechos que recibió de los autores originales. De tal manera que cualquier código que modifique o incluya código GPL no puede ser distribuido con una licencia diferente de GPL, a esto se le conoce con el virus GPL. LICENCIAS GPL Y LGPL 21

Correr y modificar software GPL Como se ha visto la GPL protege los derechos de autor mientras provee libertada de uso del software. Sin embargo, las clausulas de modificación y redistribución generan confusión, y para aclarar esto se deben definir dos contextos, ejecución y modificación de software. Ejecución: esta al fin y al cabo es la razón por la cual se escribe el software. Por ejemplo, el código compilado por GCC no está cubierto por GPL a pesar de que GCC tiene licencia GPL, es por esto que se puede compilar código propietario con GCC. LICENCIAS GPL Y LGPL Modificación: El hecho de modificar el software implica la creación de un trabajo derivado que está basado en el software original y por lo tanto está sujeto a la licencia del código original. Por ejemplo, si se programa un compilador basado en GCC, el nuevo compilador está sujeto a la GPL. 22

Licencia Pública General Reducida - LGPL En general la GPL no hace diferencia entre en el enlazado estático y dinámico de código. Si un código propietario es integrado con código GPL en tiempo de ejecución, eso no lo excluye de caer en la licencia GPL. Eso quiere decir que un software que está conformado por partes GPL y no-gpl no importando el tipo de enlazado es al fin y al cabo GPL. Es por lo anterior que surge la LGPL que es la licencia GPL pero con la diferencia que permite que el código propietario sea enlazado con código LGPL y aún así el código propietario no caiga en la licencia LGPL. LICENCIAS GPL Y LGPL Así por ejemplo una aplicación propietaria puede ser enlazada tanto dinámica como estáticamente con la librería estándar de C y aún así puede mantener su estado de aplicación propietaria sin caer en la LGPL. 23

Implicaciones de la GPL y LGPL en sistemas Linux y sistemas empotrados Hay algunos aspectos de las licencias que no suele quedar claros cuando se trata de Linux y sistemas empotrados. Qué pasa con las aplicaciones que se ejecutan en un sistema Linux?, No están siendo enlazadas en algún sentido con el kernel?. R/ Para evitar ésta confusión Linus Torvalds agregó un preámbulo a la licencia GPL del kernel donde estipula que las aplicaciones que se ejecutan en Linux no están sujetas a la GPL. LICENCIAS GPL Y LGPL Qué pasa con los módulos binarios que se integran con el Kernel como por ejemplo los controladores (drivers) propietarios? R/ Aunque no hay una repuesta clara en éste aspecto normalmente los módulos propietarios son integrados con el kernel sin que éstos estén sujetos a la GPL, lo cual es respaldado por Linus Torvalds. Qué pasa si se incluye software GPL en un sistema empotrado? R/ Al incluir software GPL es un forma de redistribución por lo cual se debe distribuir el código fuente de acuerdo con lo comentado anteriormente. 24

Licencias BSD Llamadas así porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. El autor, bajo tales licencias, mantiene la protección de copyright únicamente para la renuncia de garantía y para requerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación, incluso si dichos trabajos tienen propietario. Puede argumentarse que esta licencia asegura verdadero software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. LICENCIAS DE SOFTWARE 25

5. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO

Aplicaciones Sistema Operativo Firmware Hardware Computadora de Escritorio Aplicación(es) Sistema Operativo Firmware Hardware Sistema Empotrado Complejo Aplicación Firmware Hardware Sistema Empotrado Simple ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 27

Firmware Es el software que se ejecuta por el procesador cuando el sistema recién se ha iniciado. Éste es un software fijo de bajo nivel que inicializa el hardware a un estado conocido y configura el sistema para una correcta operación. Usualmente se encuentra grabado en una memoria ROM. Se le conoce como firmware debido a que es permanente almacenado en la memoria del sistema. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 28

Firmware El BIOS de una computadora de escritorio es un ejemplo de un firmware, cuyo objetivo es iniciar el hardware y preparar el entorno para la correcta operación del sistema operativo. Usualmente el término de firmware es ambiguo debido a que no está claramente definido el límite entre él y el software de la aplicación. Sin embargo, para efectos particularmente de sistemas empotrados el firmware es todo el software que se encuentre en un nivel menor que la aplicación. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 29

Bootloader El bootloader forma parte del firmware. Es un programa especial que se ejecuta por el procesador y el cual lee el sistema operativo desde el disco, una memoria no volátil o una interface de red y lo coloca en la memoria RAM así el procesador lo puede ejecutar. El bootloader se encuentra en las computadoras de escritorio y en la mayor parte de sistemas empotrados. El bootloader en sí mismo es un sistema operativo. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 30

Ejemplos de Bootloaders Licencia Reside en Arranca de Arquitectura Sistemas Operativos GRUB GPL MBR Disco Duro, CDROM, USB, red LILO GPL MBR Disco Duro, CDROM, USB, red NTLRD Propietaria MBR Disco Duro, USB UBOOT * GPL Flash, MMC SD. Flash, Disco Duro i386, PowerPC, Sparc i386 i386 PPC, ARM, AVR32, MIPS, x86, 68k, Nios, MicroBlaze, Blackfin Linux, Mac OS X, Windows Linux, Windows Windows NT y XP Linux ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 31

Sistema operativo Es un software encargado de administrar los recursos de un sistema digital, hardware y software. Organiza el uso de memoria y controla dispositivos tales como el teclado, mouse, pantalla, etc. Es también el software que provee una interfaz al usuario para ejecutar sus aplicaciones y acceder a los recursos de hardware. No todos los sistemas empotrados usan o requieren un sistema operativo, debido a que usualmente ejecutan simplemente una aplicación dedicada a su tarea. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 32

Sistema Operativo de Tiempo Real Cuando se utiliza un sistema operativo lo más probable es que se tenga que tratar de un sistema operativo de tiempo real (RTOS), que es un sistema operativo diseñado y optimizado para manejar fuertes restricciones de tiempo asociadas con eventos en aplicaciones de tiempo real. Los RTOS se usan más comúnmente en sistemas empotrados que en sistemas de propósito general como computadoras. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 33

Niveles de un sistema operativo Usuario Aplicaciones Shell Servicios (API) Núcleo Drivers Hardware *Los bloques en rojo corresponden al sistema operativo como tal ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 34

Núcleo de un sistema operativo (Kernel) Es el software responsable de facilitar a aplicaciones acceso al hardware de la computadora. Es así como es el encargado de gestionar recursos de hardware, a través de servicios de llamada al sistema. Las funciones más importantes del núcleo son : La comunicación entre los programas y el hardware. Gestión de los distintos programas (tareas) de una máquina. Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, entre otros). ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 35

Interacción del núcleo con el software y el hardware Debido a que usualmente hay varios programas o procesos ejecutándose simultáneamente el núcleo decide que programa hace uso del hardware y por cuánto tiempo. Núcleo Software Hardware ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 36

API en un sistema operativo Una interfaz de programación de aplicaciones es un conjunto de rutinas, estructuras de datos, protocolos y servicios del sistema operativo. Ésta interfaz permite que una aplicación pueda ser ejecutada en un determinado sistema operativo. Entre las funciones se encuentran: Depuración y manejo de errores. E/S de dispositivos. Manejo de la memoria. Interfaz de usuario. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 37

Shell El shell es una pieza del software del sistema operativo que le permite al usuario acceso a los servicios del kernel. En general existen dos categorías: 1. Shells de líneas de comandos que le proveen una interfaz de comandos al sistema operativo (Command Line Interface -CLI). 2. Shells gráficos que le proveen al sistema operativo una interfaz gráfica (Graphical User Interface - GUI). ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 38

Ejemplos de consola de comandos Línea de comandos de Windows Línea de comandos tipo UNIX ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 39

Ejemplos de GUIs de sistemas operativos Escritorio de Ubuntu Escritorio de Windows 7 ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 40

Sistemas de archivos Los sistemas de archivos son métodos de almacenamiento y organización de datos cuyo objetivo es facilitar el acceso a ellos. Los sistemas de archivos manejan también información acerca de los datos almacenados a esto se le conoce como meta información, como por ejemplo el nombre del archivo, fechas de creación, de modificación, así mismo como el tamaño y los permisos de uso del archivo en algunos casos. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 41

Sistemas de archivos Usualmente los sistemas de archivos emplean dispositivos de almacenamiento que permiten el acceso a los datos en bloques de tamaño fijo llamados sectores, cuyos tamaños típicos son 512 bytes, 1, 2 o 4Kb. El sistema de archivos agrupa estos sectores en bloques o clusters los cuales contienen de 1-64 sectores típicamente. Los bloques o sectores son la unidad más pequeña de memoria que puede ser asignada a un archivo. El sistema de archivos es el responsable de organizar estos bloques de memoria en archivos y directorios. Así mismo debe llevar el control de cuales bloques pertenecen a un archivo y cuales se encuentran libres. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 42

Tipos de sistemas de archivos Sistemas de archivos de disco: Está diseñado para almacenar datos es un dispositivo de almacenamiento de datos permanente como un disco duro. Éste es el más común en las computadoras de escritorio. Sistema de archivos de flash: Está diseñado para almacenar archivos en memoria flash. Es el más común en sistemas empotrados. Sistema de archivos de red: Éste actúa como cliente para en un protocolo de acceso remoto de archivos, permitiendo el acceso a archivos en un servidor. Sistemas de archivos de propósito especial: Es cualquier sistema de archivos que no pertenece a las categorías anteriores. Un ejemplo son los sistemas de archivos virtuales que se almacenan en memoria RAM. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 43

Sistemas de archivos jerárquicos Ruta en un sistema Windows C:\Documentos\archivos.mp3 Ruta en un sistema Unix /home/usuario/archivo.mp3 ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 44

Ejemplos de Sistemas de Archivos Sistema Operativo Mac 0SX Linux Linux (Memoria flash) Windows Sistemas de Archivos HFS Plus Familia ext* (ext2, ext3) XFS JFS ReiserFS JFFS2 YASSFS CRAMFS ROMFS Familia FAT NTFS ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 45

Aplicación En el nivel más alto de software se encuentra la aplicación que constituye el programa que la provee la funcionalidad específica al sistema. Todo el software debajo de la aplicación es considerado como el firmware. En los sistemas empotrados, el límite entre la aplicación y el firmware es a veces imperceptible. ARQUITECTURAS DE SOFTWARE DE UN SISTEMA EMPOTRADO 46

Wolf, W. Computers as components: Principles of embedded computing design. Morgan Kaufmann. 2007. Wolf, W. High-Performance Embedded Computing. Morgan Kaufmann. 2007. BIBLIOGRAFÍA 47