ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 12: Lección Evalutiva 3 LECTURA 1 Componentes del Sistema Operativo El SO está compuesto por un conjunto de paquetes de Software que pueden utilizarse para gestionar las interacciones con el Hardware y con los programas de aplicación. Por lo general este conjunto de Software incluye los siguientes elementos: 1. El núcleo o Kernel. Es el componente Software central de la mayoría de los sistemas operativos se encarga de facilitarle a los distintos programas el acceso al Hardware del sistema, en otros términos es el encargado de gestionar los recursos a través de la comunicación entre procesos y/o llamadas de servicio del sistema. Esta capacidad de gestión de recursos del Kernel se basa en el diseño de sistemas computacionales como una serie de niveles de abstracción en los cuales cada nivel soporta su funcionamiento en los servicios que le brinda el nivel inmediatamente inferior, desde este punto de vista el Kernel es simplemente el nombre que se da al nivel de abstracción más bajo implementado en Software, es decir el más cercano al Hardware. Teniendo en cuenta que los recursos de un sistema son limitados, el Kernel se encarga de decidir qué programa puede hacer uso de un dispositivo Hardware y el tiempo en que lo puede hacer. El núcleo tiene como función básica garantizar la carga y ejecución de los procesos, el manejo de las entradas/salidas del sistema y de brindar una interfaz entre este y los programas de usuario. Entre otras el Kernel realiza las siguientes Funciones: ·Comunicación entre programas y Hardware. ·Gestión de los diferentes programas informáticos (Tareas o Procesos). ·Gestión del Hardware (memoria, procesador, periféricos y dispositivos de almacenamiento). 2. Tipos de Kernel. El Kernel puede clasificarse en función del tamaño y de las funcionalidades que posea. Realmente, y pese a seguidores incondicionales en un modelo u otro, 1 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 12: Lección Evalutiva 3 existe una tendencia básica a reducir el tamaño del núcleo proporcionando menos funcionalidades, que son desplazadas a módulos que se cargan en el momento de la ejecución. En función a esta idea existen tres tipos fundamentales de Kernel: ·Kernel monolítico: Todas las funcionalidades posibles están integradas en el sistema. Se trata de un programa de tamaño considerable que se debe recompilar por completo cada vez que se añade una nueva función. Esta es la estructura original de Linux. Por tratarse de una técnica clásica y desfasada el creador de Linux fue muy criticado. ·Kernel modular: Se trata de la tendencia actual de desarrollo. En el Kernel se centran las funcionalidades esenciales como la administración de memoria, la planificación de procesos, etc. Sin embargo no tiene sentido que el núcleo de un sistema operativo englobe todos los elementos requeridos para comunicarse con todas los posibles periféricos de un sistema teniendo en cuenta la gran variedad tanto de modelos como de fabricantes disponibles. En otros sistemas operativos esto se soluciona con unos archivos proporcionados por el fabricante de los dispositivos llamados Drivers. En Linux se creó una interfaz adecuada para posibilitar el desarrollo de módulos que cumplieran esas funcionalidades. Esos módulos pueden ser compilados por separado y añadidos al Kernel durante el tiempo de ejecución. ·Estructura de micro-Kernel: Esta técnica pretende reducir a su mínima expresión el Kernel, dejando a los niveles superiores el resto de las funcionalidades. Existen algunos Kernels que lo utilizan, por ejemplo el Hurd, Se trata del último Kernel GNU llamado a sustituir a Linux como núcleo del sistema operativo. Aunque esta estrategia de diseño es tan antigua como la modular, no ha sido tenida en cuenta hasta ahora debido a las limitaciones de rendimiento que presenta 3. Intérprete de comandos (Shell). Este posibilita la comunicación con el SO a través de un lenguaje de control basado en comandos que se introducen por el usuario a través de un teclado, p.e. printf, la respuesta del SO se presenta a través de algún periférico o display, estos comandos permiten al usuario controlar los periféricos sin conocer específicamente las características del Hardware utilizado, así como la gestión de las direcciones físicas, etc. Se interactúa con la información de la forma más sencilla posible sin gráficas, solo texto. 2 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 12: Lección Evalutiva 3 4. El sistema de archivos. Un sistema de archivos es una base de datos de propósito especial implementada para el almacenamiento, organización y recuperación de archivos de datos; en otras palabras, es un método de organización y almacenamiento de archivos de datos en las diferentes unidades de almacenamiento con las que pueda contar un sistema dado, la finalidad del sistema de archivos es la de hacer fácil la ubicación y acceso de los mismos, normalmente los archivos son registrados en una estructura arbórea. LECTURA 2 Tipos de Sistemas que Utilizan Linux Embebido. En esta sección en lugar de clasificar los sistemas embebidos en segmentos de mercado como el aeroespacial, telecomunicaciones, electrónica de consumo, etc. Serán clasificados por criterios que aporten alguna información sobre la estructura del sistema. A continuación se presenta esta clasificación: 1. Tamaño. Existen diferentes factores para clasificar un sistema embebido teniendo en cuenta el tamaño, uno de ellos es el tamaño físico que puede llegar a ser en un momento dado un determinante de las capacidades del sistema en cuestión, por otro lado se tiene en cuenta el tamaño o capacidades de los dispositivos que componen el sistema embebido, esto incluye la velocidad del procesador, tamaño de la memoria y de la capacidad de almacenamiento permanente (disco duro o memoria Flash). En lo referente al tamaño se manejan tres rangos o categorías de sistemas: ·Pequeños: Caracterizados por una CPU de baja potencia con un mínimo de 4MB de memoria ROM y entre 16 y 32 MB de RAM, esto no quiere decir que Linux no se pueda ejecutar en espacios de memoria inferiores aunque esto requiera un mayor esfuerzo a una mínima ganancia teniendo en cuenta los actuales precios de las memorias. ·Medios: Caracterizados por contener una CPU de mediana potencia con un mínimo de 32 MB de ROM o mas, y entre 64 y 128 MB de RAM. La mayoría de sistemas de electrónica de consumo como PDA’s, Reproductores de MP3, etc. 3 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 12: Lección Evalutiva 3 Caen en esta clasificación, muchos de estos pueden contar con unidades de almacenamiento secundarios, estos sistemas cuentan con el poder suficiente para ejecutar diferentes tareas simples o al menos una que requiera muchos recursos. ·Grandes: Son sistemas que cuentan con procesadores muy poderosos combinados con grandes cantidades de memoria RAM y unidades de almacenamiento permanente, se emplean usualmente en ambientes donde se requieren grandes cantidades de cálculos como por ejemplo Switches para telecomunicaciones, simuladores de vuelo y muchas otras aplicaciones. El diseño de estos sistemas depende básicamente de su funcionalidad más que en factores como costos, tamaño o recursos que quedan relegados a un segundo plano. La anterior clasificación excluye a los procesadores con una arquitectura de memoria menor a 32 bits a correr con Linux, aunque no obstante se encuentren en la red proyectos de investigación que pueden haber generado puertos de Linux que hayan funcionado en procesadores de 16 bits, se trata de casos muy puntuales y no existe el soporte suficiente, con mayor razón para procesadores de 8 bits que no existe soporte alguno para Linux, cualquier incursión sería mera investigación. 2. Limitantes de Tiempo. Existen dos tipos de limitantes de tiempo: ·Rigurosas: Estas requieren que la respuesta del sistema se limite a unas franjas predefinidas de otra forma eventos no deseables y hasta catastróficos pueden ocurrir. Se emplea el término catastrófico en el sentido de que existen sistemas en los cuales cualquier falla puede desembocar en accidentes o pérdidas humanas. Por ejemplo un sistema de seguridad de una guillotina mecánica en el que una cámara de video apunta a las hojas de corte, debe detectar la presencia del color de los guantes que utilicen los empleados y detener su función inmediatamente no puede esperar a que se ejecute otra rutina o que se termine alguna acción de lo contrario alguien puede perder una mano. Un sistema de este tipo se conoce como un sistema de “tiempo real duro”. También existen sistemas de “Tiempo Real Blandos” cuando las aplicaciones tienen requisitos de tiempo rigurosos pero la falla del sistema no desemboca en una catástrofe por ejemplo un sistema de telefonía celular puede soportar uno que otro fallo en la señal pero no es aceptable que esto ocurra constantemente. ·Suaves: estas pueden tener variados requerimientos pero generalmente aplican en sistemas en los que los tiempos de respuesta no son tan críticos por ejemplo 4 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 12: Lección Evalutiva 3 una PDA puede tardarse unos segundos mientras carga una aplicación y no afectar al usuario. 3. Adaptabilidad de Funciones de Red. Esta característica define si un sistema puede ser conectado a una red, en la actualidad gracias a las economías de escala y a la estandarización de los componentes de red, además las demostradas capacidades de red del Linux se podría esperar y de hecho hay la posibilidad de que cualquier sistema se pueda accesar a través de la red. Electrodomésticos simples como una nevera, una tostadora o una cafetera pueden ser manipulados por medio de la red. 4. Interacción con el Usuario. El grado de interacción con el usuario puede cambiar de sistema en sistema por ejemplo una PDA o teléfono celular pueden basar su funcionamiento en la interacción con el usuario por medio de una interfaz gráfica, por otro lado un sistema de control industrial puede constar solo de Led’s y botones, como también existen sistemas que no presentan medios de interacción de ningún tipo, por ejemplo el sistema de navegación automática de un avión. LECTURA 3 Diferencias entre Linux y µClinux µClinux proviene del sistema operativo Linux. En vista de que este sistema operativo soporta procesadores que no cuentan con MMU, varias son las diferencias que existen entre él y su padre. - No hay administración de memoria virtual: La diferencia definitiva y más prevaleciente entre µClinux y Linux es la falta de administración de memoria virtual (VM). Bajo Linux, la administración de memoria virtual es llevada a través de la unidad MMU que los procesadores tienen. µClinux ha sido creado para sistemas que no cuentan con tal unidad y por lo tanto no hace uso de memoria virtual. - Diferencias en el kernel: µClinux tiene algunas diferencias en su kernel muy relacionadas principalmente por el hecho de no haber una MMU en el procesador. Por ejemplo, no se podrá hacer uso del soporte de paginación que ofrece una unidad de MMU. El sistema de archivos TMPFS no funciona en µClinux debido a que él confía en las características que la VM le puede brindar. Similarmente, los 5 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 12: Lección Evalutiva 3 formatos estándar de ejecutables (elf, a.out, etc.) no funcionan ya que estos también hacen uso de la VM que no está disponible en µClinux. Para solventar este problema, los archivos ejecutables deben tener un formato plano, el cual es un formato ejecutable condensado que almacena solo código ejecutable y datos, además de las reubicaciones necesarias para cargar el ejecutable en memoria. - Asignación de memoria: µClinux ofrece una elección de dos asignadores memoria del núcleo. Al principio puede no parecer obvio por qué es necesario asignador alterno de memoria del núcleo, pero en los sistemas µClinux diferencia es clara. El asignador predeterminado del núcleo bajo Linux es método de asignación basado en potencias de dos. de un la un Esto le permite operar más rápido y encontrar velozmente áreas de memoria del tamaño correcto para satisfacer peticiones de asignación. Desafortunadamente, bajo µClinux, las aplicaciones deben ser cargadas dentro de la memoria que está fuera del alcance de este asignador. Para entender las consecuencias de esto, especialmente para asignaciones grandes, considérese una aplicación que requiera una asignación de 33KB para ser cargada; realmente se le asigna la siguiente potencia de dos, que es 64KB. Los 31KB de espacio adicional asignado no pueden ser utilizados eficazmente. Este orden de desperdicio de memoria es inaceptable en la mayoría de sistemas µClinux. Para remediar este problema, un asignador alternativo de memoria se le ha creado al kernel de µClinux. Este es comúnmente conocido como page alloc2() o kmalloc2(), dependiendo de la versión del núcleo. - Aplicaciones y procesos: Otra diferencia entre Linux y µClinux es la falta de la llamada de sistema fork(). Esto puede requerir bastante trabajo de parte del desarrollador cuando está portando aplicaciones que usan fork(). La única opción bajo µClinux es usar vfork(). 6