20.04.2013 Views

Descarga este documento en formato PDF - Ucontrol

Descarga este documento en formato PDF - Ucontrol

Descarga este documento en formato PDF - Ucontrol

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

4 de 22<br />

Según Tan<strong>en</strong>baum, una de las personalidades más reconocidas <strong>en</strong> el mundo académico de los SO, no es fácil<br />

dar una definición definitiva de lo que es un SO. El problema consiste <strong>en</strong> que los SO ti<strong>en</strong><strong>en</strong> la característica de<br />

comportarse para el usuario (que puede ser una persona cualquiera, un programador, o un programa de<br />

computadora), como un tipo con "doble personalidad".<br />

Veamos esto con más det<strong>en</strong>imi<strong>en</strong>to:<br />

1) El SO como máquina ext<strong>en</strong>dida:<br />

En esta faceta de la personalidad del SO, la característica destacable es simplificar al programador los detalles<br />

del funcionami<strong>en</strong>to de los dispositivos conectados al sistema.<br />

Esta característica se pone también de manifiesto <strong>en</strong> aplicaciones donde no se usan los SO, un ejemplo típico<br />

son las funciones output_x() e input_x() del compilador CCS. Un programador puede utilizar estas funciones<br />

sin conocer que para que los datos se pongan <strong>en</strong> los pines o se lean, hay que cambiar varios registros <strong>en</strong> el<br />

uC. Se dice que estas funciones son una abstracción del proceso de E/S <strong>en</strong> puerto. Esto es bu<strong>en</strong>o porque<br />

ayuda a los programadores a desarrollar soluciones más rápidam<strong>en</strong>te y con m<strong>en</strong>or probabilidad de errores ya<br />

que si la función está bi<strong>en</strong> escrita es poco probable que falle.<br />

La función de la máquina ext<strong>en</strong>dida es ofrecer al programador una "interfaz" gracias a la cual se utilizan los<br />

recursos del sistema, sin t<strong>en</strong>er que profundizar demasiado <strong>en</strong> los detalles del funcionami<strong>en</strong>to de sus difer<strong>en</strong>tes<br />

compon<strong>en</strong>tes. Esta interfaz que el SO ofrece al programador o el usuario, se conoce comúnm<strong>en</strong>te como<br />

Llamadas al Sistema o API (Aplication Programmer Interface).<br />

Sin embargo esta visión de los sistemas operativos es poco aplicable a nuestro <strong>en</strong>torno, <strong>en</strong> el s<strong>en</strong>tido <strong>en</strong> que<br />

hoy se clasifican a las llamadas al sistema, ya que <strong>en</strong> nuestro mundo todo es pequeño <strong>en</strong> cuanto a capacidad y<br />

el crear una máquina ext<strong>en</strong>dida poderosa consume recursos que usualm<strong>en</strong>te no t<strong>en</strong>dremos. Entonces <strong>en</strong> <strong>este</strong><br />

caso la máquina ext<strong>en</strong>dida queda limitada a algunas llamadas a funciones del SO y al uso de las librerías que<br />

hasta el mom<strong>en</strong>to hemos utilizado habitualm<strong>en</strong>te.<br />

2) El SO como administrador de recursos:<br />

En <strong>este</strong> caso el SO, se comporta como un administrador de nuestros recursos. La v<strong>en</strong>taja de t<strong>en</strong>er algui<strong>en</strong> que<br />

administre efici<strong>en</strong>tem<strong>en</strong>te los recursos consiste <strong>en</strong> que el SO ofrezca al usuario un conjunto de reglas para<br />

compartir y hacer uso de los recursos disponibles con eficacia y efici<strong>en</strong>cia.<br />

Un ejemplo de administración de los recursos es el uso de la CPU, <strong>en</strong> un sistema sin SO, el programador ti<strong>en</strong>e<br />

que estar muy p<strong>en</strong>di<strong>en</strong>te de la implem<strong>en</strong>tación de su sistema, porque puede que determinados requisitos<br />

temporales <strong>en</strong> la ejecución de algunas funciones t<strong>en</strong>gan que cumplirse.<br />

En nuestro caso lo usual es que nos rompamos el coco manipulando interrupciones, poni<strong>en</strong>do demoras,<br />

cambiando contadores y chequeando banderas… ¡Uf solo de p<strong>en</strong>sarlo me dan ganas de llorar! Sin embargo un<br />

SO puede hacerse cargo de todos esos temas de manera eficaz y efici<strong>en</strong>te, incluso ahorrando memoria y<br />

tiempo, y nosotros los programadores conc<strong>en</strong>trarnos <strong>en</strong> la implem<strong>en</strong>tación de la solución, más que <strong>en</strong> la<br />

gestión efici<strong>en</strong>te de nuestros recursos.<br />

Por supuesto que el SO no es mago ni adivino, para ello debe ofrecernos un conjunto de mecanismos,<br />

relativam<strong>en</strong>te s<strong>en</strong>cillos, que nos ayud<strong>en</strong> a "indicarle" o "pedirle" que es lo que queremos hacer.<br />

En el caso de los uC, las implem<strong>en</strong>taciones de los SO, se caracterizan por pot<strong>en</strong>ciar la administración de<br />

recursos del SO, por lo que es esta la faceta de personalidad que más a m<strong>en</strong>udo <strong>en</strong>contraremos <strong>en</strong> los RTOS.<br />

[Volver al Índice]<br />

> Clasificación de los SO.:<br />

A continuación veremos como se clasifican los SO <strong>en</strong> cuanto a dos características es<strong>en</strong>ciales: la administración<br />

del recurso fundam<strong>en</strong>tal (el procesador) y el destino del SO.<br />

Los SO se pued<strong>en</strong> clasificar de distintas maneras, pero para abreviar lo más posible, solam<strong>en</strong>te me voy a<br />

referir a las ya m<strong>en</strong>cionadas.<br />

En cuanto a la administración del procesador exist<strong>en</strong> dos clasificaciones:<br />

1) SO cooperativo (no preemptive):<br />

En <strong>este</strong> caso es el programador quién ti<strong>en</strong>e la responsabilidad de <strong>en</strong>tregarle el procesador al núcleo del SO,<br />

para que éste lo <strong>en</strong>tregue a la próxima tarea que esté solicitándolo o programada para ejecutarse. Es<br />

<strong>en</strong>tonces, muy importante, que las llamadas a funciones que ejecutemos nunca se qued<strong>en</strong> esperando mucho<br />

tiempo por determinados ev<strong>en</strong>tos, evitar los lazos infinitos y <strong>en</strong>tregar el procesador cuando no lo necesitemos,<br />

para que otra tarea o proceso pueda utilizarlo.<br />

2) SO de tiempo compartido (preemptive):<br />

En <strong>este</strong> caso el programador debe contar con los mismos mecanismos que <strong>en</strong> el anterior, pero el SO ti<strong>en</strong>e la<br />

facultad de quitarle el procesador y dárselo a otro si usted se ha excedido <strong>en</strong> su tiempo o hay algui<strong>en</strong> que ti<strong>en</strong>e

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!