Descarga este documento en formato PDF - Ucontrol
Descarga este documento en formato PDF - Ucontrol
Descarga este documento en formato PDF - Ucontrol
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