• No se han encontrado resultados

Componentes del Sistema Operativo.

In document 208006 Sistemas Embebidos I-2010 (página 149-153)

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.

Figura 48: Diagrama de abstracción del Kernel.

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, 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.

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 ejempo 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.

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.

5. Funciones de un Sistema Operativo.

El objetivo fundamental de un SO es gestionar los recursos Hardware del sistema computacional permitiendo que se ejecuten concurrentemente diferentes programas evitando los conflictos que puedan existir en el acceso de cada uno de estos programas a los recursos que requieran para ejecutarse, el objeto final no es mas que el de facilitar el manejo de sistema y permitir que el uso de los recursos sea lo más eficiente posible. Un SO desempeña las siguientes funciones básicas: 5.1. Suministro de una interfaz al usuario.

La interfaz es la parte del SO que permite la comunicación del usuario con éste, creando la posibilidad de cargar los programas, acceder a los archivos y muchas otras tareas, entre las interfaces existentes están las que se basan en comandos, las que emplean menús y las interfaces gráficas de usuario GUI (sigla en inglés). 5.2. Administración de recursos.

Mediante los procesos de administración de recursos se gestiona por parte del SO los recursos de Hardware y redes existentes en un sistema dado haciendo esta labor transparente para el usuario, la finalidad es distribuir todas las tareas para el uso eficiente de los recursos manteniendo así todos los componentes físicos lo más ocupados que sea posible, evitando cuellos de botella que afecten el rendimiento del sistema. Entre las tareas a realizar se encuentran:

5.2.1. Administración del procesador.

El SO administra la distribución del procesador entre los distintos programas por medio de un algoritmo cuya implementación depende completamente del tipo de SO, según el objetivo específico de la aplicación.

5.2.2. Gestión de la memoria de acceso aleatorio.

El SO se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el SO puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, el acceso a esta información es mucho más lento.

5.2.3. Gestión de entradas/salidas.

El SO permite unificar y controlar el acceso de los programas a los recursos físicos y periféricos en general a través de los drivers (también conocidos como administradores periféricos o de entrada/salida).

5.3. Administración de archivos.

El SO gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios. Se trata de programas que se encargan de la administración de los archivos de forma estructurada, controlando la creación, borrado y acceso de archivos de datos y de otros programas, esto implica que debe mantener el registro de la ubicación física de la información que pueda encontrarse en cualquier dispositivo de almacenamiento que pertenezca al sistema.

El sistema de archivos responde a las necesidades de almacenar volúmenes de información por largos periodos, esta información debe sobrevivir a un corte abrupto de cualquier proceso que la pueda utilizar en un momento dado, además debe existir la posibilidad de que distintos procesos puedan accederla simultáneamente.

Mediante esta funcionalidad el SO administra las tareas informáticas de los usuarios finales, estos programas se encargan de controlar las áreas de la CPU a la que pueden accesar las tareas de usuario y definen el tiempo en que pueden usarlas; esto se hace con la finalidad de distribuir la capacidad de procesamiento de la CPU interrumpiendo el tiempo y recursos de ésta dependiendo la prioridad de la tarea a realizar. La administración de tareas requiere entre otras:

 Crear y/o terminar tareas.  Suspender y/o reanudar tareas.

 Proveer mecanismos para la sincronización de tareas.  Proveer mecanismos para la comunicación entre tareas.

En resumen, el SO se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesiten para funcionar correctamente. 5.5. Servicios de soporte:

Estos servicios dependen de la implementación específica del SO (Mac, Unix, Windows, Software libre, o en el caso del curso, sistemas embebidos). Estos servicios de soporte suelen consistir en:

 Actualización de versiones.

 Mejoras de seguridad.

 Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función, etc.).

 Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del Hardware).

Corrección de errores de Software.

No todas las utilidades de administración o servicios forman parte del SO, además de éste, hay otros tipos importantes de Software de administración de sistemas, como los sistemas de administración de base de datos o los programas de administración de redes. El soporte de estos productos deberá proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo fabricante del SO). 5.6. Administración de autorizaciones:

El SO se encarga de la seguridad relacionada con la ejecución de programas y acceso de archivos garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes.

In document 208006 Sistemas Embebidos I-2010 (página 149-153)