Sie sind auf Seite 1von 24

13/11/2016 ASO02_Contenidos

Administración de procesos del sistema.

Caso práctico
 
Ya  se  instauró  el  sistema  en  la  empresa  y  ahora  llega  el  momento  de  exprimir  al  máximo  todas  las  prestaciones  que  nos
ofrece.

También  hay  que  controlar  que  el  uso  que  se  haga  de  los  equipos  sea  el  correcto  y  que  funcionen  de  la  forma  más  eficaz
posible así que nos planteamos qué podemos hacer para que el sistema vaya bien.

Como primera medida vamos a proponer una administración de cada sistema desde el punto de vista de la gestión de sus
procesos.  Atenderemos  tanto  a  los  sistemas  Windows  como  a  los  Linux,  ya  que  en  nuestra  empresa  existen  equipos  con
ambas opciones.

La gestión de los procesos es uno de los roles asignados al sistema operativo. De todos los que desempeña, éste será quizás el más importante ya que los procesos se
encargan realmente de dar vida al sistema operativo.

Tras  averiguar  qué  es  un  proceso  y  qué  función  desempeña  en  un  sistema  operativo  hablaremos  sobre  los  diferentes  estados  en  los  que  podemos  encontrarlo  y  qué
fases puede alcanzar.

Por  otro  lado,  hablaremos  de  una  de  las  claves  en  la  eficiencia  de  un  sistema  operativo  como  es  la  planificación  de  los  procesos  y  los  principales  mecanismos  que
pueden adoptarse.

Como  punto  fuerte  de  la  unidad  trataremos  aspectos  interesantes  sobre  la  gestión  de  procesos  en  el  sistema  operativo,  desde  el  interfaz  gráfico  y  desde  la  línea  de
comandos, para sistemas Windows y para sistemas Linux.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 1/24
13/11/2016 ASO02_Contenidos

Procesos.

Caso práctico
 
La administración de los procesos no es simplemente iniciar programas o detenerlos, sino que hay que tener una buena base
de  cómo  funciona  el  sistema  operativo  al  nivel  de  los  procesos,  qué  información  se  recoge  en  un  proceso,  qué  estados
puede adoptar y cómo cambia entre ellos. Carlos, que no es ajeno a todo esto, identificará todo lo anterior y lo interpretará
adecuadamente para llevar a cabo una buena administración.

Un proceso es un programa o un fragmento de programa en ejecución.
Cada  proceso  necesita  una  serie  de  recursos,  siendo  el  sistema  operativo  el  encargado  de  proporcionárselos.  En  función  del  tipo  de
proceso,  los  recursos  necesarios  pueden  ser  diferentes  pero,  por  regla  general,  todos  necesitan  un  espacio  en  memoria  y  un  tiempo  de
uso del microprocesador (CPU).

Cuando se crea un proceso, se le asocia un paquete de información sobre el denominado Bloque de Control de Proceso (BCP), que le
acompaña durante toda su vida. En este BCP se recogen datos del proceso como son:

Su estado actual.
Su PID (número identificador de proceso).
Valores de registros asociados a él, como el contador de programa, los punteros, acumuladores, etc.
Valores de los recursos asignados: espacio en memoria, archivos, E/S, etc.

Todos  los  procesos,  desde  su  creación,  tendrán  la  capacidad  de  comunicarse  y  sincronizarse  con  otros  procesos  y  con  recursos  del
sistema. Este hecho da lugar a diferentes tipos de procesos:

Independientes: no se comunican con otros procesos. Estos tipos de procesos apenas existen.
Cooperativos: se comunican y sincronizan para realizar una actividad común.
Competitivos: necesitan hacer uso del mismo recurso y, por consiguiente, competirán por él.

En  cualquier  caso,  la  ejecución  de  los  procesos  exigirá  concurrencia,  cualidad  que  deberá  gestionar  el  sistema  operativo  gracias  a  técnica  denominada
multiprogramación, que permite que dos o más procesos puedan ejecutarse "a la vez".

De todos los procesos que se están ejecutando a la vez sólo uno tiene la "atención del usuario"; Este proceso se dice que está en primer plano y del resto se dice que
están en segundo plano. Es posible pasar un proceso de primer plano a segundo plano y viceversa.

Autoevaluación
 
¿Cuál de las siguientes afirmaciones es CORRECTA?
  
No todos los procesos que se crean en el sistema deben comunicarse entre sí.
Todos los procesos del sistema se recogen en el BCP.
Los procesos pueden estar en varios planos: primero, segundo, tercero, …

Todos los procesos del sistema son competitivos.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 2/24
13/11/2016 ASO02_Contenidos

Estados de un proceso.
Un proceso, a lo largo de su vida, cambia de estado. En concreto, un proceso puede estar en uno de los siguientes estados:

Nuevo (new): Momento en el que se está creando el proceso.
Preparado (ready): Está esperando a que se le asigne la CPU (un procesador).
En ejecución (running): Se está ejecutando en la CPU.
Bloqueado o en espera (waiting): Está a la espera de que suceda un evento.
Terminado (terminated): Finaliza su ejecución. Muere.

Además  de  estos  estados,  en  algunos  sistemas  también  existe  un  estado  denominado  suspendido  (suspend),  que  se  produce
cuando un proceso se suspende y es desplazado a memoria secundaria. En esta situación, el proceso puede quedar a la espera de
un evento (waiting suspend) o suspendido temporalmente pero listo para ejecutarse (ready suspend).

El proceso puede cambiar de estado cuantas veces sea necesario, pero nunca puede estar en más de un estado a la vez.
El  objetivo  final  de  un  proceso  es  procesarse,  es  decir,  estar  en  ejecución  durante  el  tiempo  que  sea  necesario  para  ser  procesado.  Sin  embargo,  un  procesador  sólo
puede ejecutar un proceso a la vez. Este hecho es el que marca el  paradigma de la gestión de procesos en el sistema operativo, mediante el cual se establecen los
mecanismos necesarios para que los diferentes procesos que compiten por la CPU puedan hacerlo de la forma más eficiente y beneficiosa para el sistema.

Autoevaluación
 
Señala la afirmación CORRECTA.
  
Un mismo proceso no puede encontrarse en más de un estado a la vez.
Un proceso no puede cambiar de estado tantas veces como necesite.
El proceso que está utilizando la CPU se dice que está en estado preparado.

El estado suspendido siempre deja al proceso a la espera de que suceda un evento.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 3/24
13/11/2016 ASO02_Contenidos

Creación de procesos.
La creación de un proceso se hace a través de la llamada al sistema "crear proceso" desde otro proceso denominado proceso padre.
El proceso resultante se denomina proceso hijo y es prácticamente una réplica de su padre.

Como se puede deducir, debe existir un proceso inicial con la capacidad de pedir al sistema que se cree un proceso. Este proceso
creador es de vital importancia en los sistemas operativos y constituye la raíz del árbol de procesos.

Los procesos se marcan en su creación con un número único llamado identificador de proceso (PID). Salvo el proceso raíz, todos los
procesos llevan dos números:

El PID que lo identifica a él.
El PPID que identifica a su padre.

Después de que un proceso genera un hijo, ambos continúan ejecutándose desde el punto en el que se hizo la creación.

Autoevaluación
 
¿Cuántos números identificadores lleva un proceso?
  
Todos llevan uno: el PID.
Todos llevan uno: el PPID.
Todos llevan dos: el PID y el PPID.

El proceso padre lleva uno y el resto dos.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 4/24
13/11/2016 ASO02_Contenidos

Terminación de procesos.
Generalmente  un  proceso  finaliza  su  ejecución  cuando  pasa  al  estado  terminado  y  le  pide  al  sistema  que  lo  elimine  utilizando  la
llamada al sistema "exit".

Los procesos hijo pueden ser eliminados cuando el proceso padre quiera. Esto se denomina matar un proceso y es habitual cuando:

El hijo se excede en el uso de los recursos asignados.
La tarea que se asignó al hijo ya no se necesita.
El proceso padre quiere terminar y el sistema operativo no permite que los hijos continúen sin el padre.

Hay que prestar especial atención al hecho de que un proceso no debería terminar hasta que todos sus hijos lo hagan. Sin embargo,
las operaciones sobre procesos no son fiables al 100% y se pueden dar anomalías en la gestión de los procesos:

Procesos huérfanos.
Se  denominan  así  a  los  procesos  que  quedan  en  el  sistema  cuando  su  padre  ha  finalizado.  Cuando  esto  sucede,  el  PPID  del  proceso  (para  sistemas  UNIX)
pasa a ser el PID del proceso inicial.

Procesos zombies.
Son  procesos  que  han  finalizado  pero  su  padre  los  mantiene  como  vivos.  Este  tipo  de  procesos  suelen  ser  fruto  de  errores  de  programación  o  de  fallos  del
sistema.  Al  contrario  que  los  procesos  huérfanos,  los  zombies  no  son  adoptados  por  el  proceso  inicial  sino  que  tienden  a  eliminarse  para  evitar  el  consumo  de
recursos.

Autoevaluación
 
Señala la afirmación CORRECTA.
  
Un proceso no puede matarse si está en estado de ejecución.
Si un proceso tiene hijos no puede matarse sin que mueran también sus hijos.
Al contrario que un proceso huérfano, un proceso zombie no es adoptado por el proceso padre.
El proceso zombie no suele ser fruto de errores de programación o fallos del sistema.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 5/24
13/11/2016 ASO02_Contenidos

Modelos de proceso.
La  forma  en  que  un  sistema  se  organiza  para  gestionar  sus  procesos  da  lugar  al  modelo  de  proceso.  Los  sistemas  operativos  actuales  pueden  seguir  los  siguientes
modelos:

Modelo de 2 estados.
Es el modelo más simple. El proceso, tras crearse pasa al estado no­ejecutado, a la espera de entrar en ejecución. Cuando entra en ejecución, puede ejecutarse
por completo (y morir) o hacerlo por partes.

Modelo de 3 estados.
El  modelo  anterior  es  ideal  para  procesos  sin  prioridades  y  que  siempre  estén  listos  para  ejecutarse.  Sin  embargo,  esto  no  siempre  sucede  y  algunos  pueden
necesitar esperar por un suceso (que esté listo un archivo, que esté disponible un dispositivo de E/S,..). Para ello, en este nuevo modelo se divide el estado no­
ejecutado en dos: preparado y bloqueado, cada uno con su propia cola de procesos.

Modelo de 5 estados.
Para  mejorar  la  gestión  de  los  procesos,  al  modelo  anterior  se  le  añaden  dos  estados  extremos:  nuevo  y  terminado,  encargados  de  controlar  los  procesos
existentes en el sistema (en nuevo se dan de alta y en terminado se dan de baja).

Modelo de 7 estados.
Los procesos a la espera de ser ejecutados residen en memoria principal (en las colas de preparado y bloqueado). Para evitar que la RAM se colapse se hace una
variación en el modelo anterior, creando unas colas similares a las ya existentes pero en memoria secundaria. Esto da lugar a los estados suspendido­bloqueado y
suspendido­preparado. Entre las correspondientes colas se produce una operación de intercambio cada vez que se pasa un proceso de una a otra. Hay que tener
en cuenta que esta operación consume recursos y tiempo de CPU.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 6/24
13/11/2016 ASO02_Contenidos

Cambio de contexto.
Como hemos visto, un proceso, a lo largo de su vida, puede pasar por diferentes estados. El cambio de un estado a otro no es trivial y tanto la forma como el tiempo para
hacerlo marcarán la eficiencia del sistema.

El  proceso  pasa  gran  parte  de  su  vida  esperando  ser  ejecutado.  Cuando  sale  de  ese  estado  sin  haber  finalizado  su  ejecución  (porque  es  expropiado  a  otro  estado,
suspendido o bloqueado) se espera que la próxima vez que alcance el estado de ejecución continúe donde lo había dejado.

Para que esto sea posible se aplica una operación conocida como cambio de contexto.

El cambio de contexto consiste en interrumpir la ejecución de un proceso para comenzar o seguir con otro.
De forma un poco esquemática, en el cambio de contexto:

El proceso saliente guarda todos sus valores asociados en el BCP.
Se guardan los valores de los registros y direcciones de memoria implicados en el proceso en ese momento.
Se cambia de estado el proceso.
Se cambia de estado al proceso entrante.
Se cargan los valores de los registros y direcciones de memoria asociados al proceso.

Todas  estas  operaciones  son  gestionadas  y  supervisadas  por  el  procesador,  lo  cual  quiere  decir  que  en  el  tiempo  que  dura  el
cambio de contexto no se puede ejecutar ningún otro proceso.

Cuando  el  cambio  de  contexto  se  hace  sin  salir  de  memoria  principal,  el  tiempo  y  los  recursos  empleados  no  son  excesivos;  pero  en  los  cambios  de  contexto  entre
memoria principal y secundaria la situación cambia, siendo más lenta y costosa.

La  técnica  de  cambiar  de  contexto  es  útil  cuando  se  quiere  dar  tiempo  de  ejecución  a  todos  los  procesos,  pero  un  uso  excesivo  del  cambio  de  contexto  puede  ser
contraproducente ya que el procesador estaría más tiempo ocupándose de las acciones asociadas a los cambios de contexto que a la ejecución de los procesos que se
intercambian.

Autoevaluación
 
Señala la afirmación que sea CORRECTA referente al cambio de contexto.
  
No se basa en el concepto de concurrencia.
Puede llevarse a cabo con un único proceso, aunque no es recomendable.
Se puede hacer sólo en memoria principal.
Se puede hacer sólo en memoria secundaria, aunque es muy costoso.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 7/24
13/11/2016 ASO02_Contenidos

Planificación de procesos.

Caso práctico
 
Trabajar con procesos no es una tarea fácil porque, entre otras cosas, no son objetos que puedan visualizarse simplemente.
La  forma  en  que  trabajan  no  es  trivial  y  Carlos  se  pregunta  qué  mecanismos  seguirán  para  coordinarse  de  forma  tan
armoniosa. Investigando descubre que el sistema tiene una especie de plan para organizarlos y que todos participen.

Los procesos no se ejecutan en cualquier orden, sino que siguen un orden establecido por el sistema operativo. La forma en la que el
sistema operativo gestiona los procesos es lo que se conoce como planificación y la herramienta que lo hace recibe el nombre de
planificador (en inglés, scheduler).

La misión del planificador es:

Garantizar que cada proceso tiene acceso al recurso en su justa medida.
Explotar el recurso, manteniéndolo ocupado el máximo tiempo posible.
Reducir todo lo posible los tiempos de espera de los diferentes procesos.

La  dificultad  de  la  planificación  radica  en  que  no  se  puede  saber,  a  priori,  qué  procesos  estarán  compitiendo  por  un  recurso  ni
tampoco el contexto que se generaría en caso de concedérselo. Por ello, para controlar el acceso de los procesos a los recursos, el planificador puede seguir dos tipos
de política:

Política no expropiativa: Una vez que el proceso accede al recurso, se permite que haga uso de él hasta que ya no lo necesite.
Política expropiativa: Se proporciona acceso al recurso para un proceso pero, en un determinado momento, se puede ceder el recurso a otro proceso diferente,
para lo cual se le retirará el acceso al primero (pasando a estado suspendido, bloqueado o preparado, según corresponda).

La política expropiativa es mucho más justa cuando existen procesos muy diferentes, ya que permite, por regla general, que ningún proceso acapare el recurso. Por otro
lado, es más compleja y consume más recursos (en las expropiaciones), por lo que habrá que sopesar cuál es más adecuada en cada situación concreta.

Autoevaluación
 
Señala la afirmación que sea CORRECTA.
  
La política expropiativa es más eficiente que la no expropiativa.
La expropiación de un proceso conllevará obligatoriamente un cambio de contexto.
El planificador no se encarga de que la CPU esté ocupada el mayor tiempo posible.
El planificador de procesos se instala como un complemento del sistema operativo.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 8/24
13/11/2016 ASO02_Contenidos

Niveles de planificación.
La planificación es demasiado compleja como para realizarse en una única fase. Los sistemas operativos, en general, disponen
de tres niveles de planificación, cada uno con su planificador:

Planificación a largo plazo (nivel alto): Llamada también "planificación de admisión", ya que es la que determina qué
trabajos se admiten para su procesamiento y, por consiguiente, se cargan en memoria.
Planificación a medio plazo (nivel medio): Gestiona el estado de suspensión de los procesos. Esta operación recibe
el nombre de intercambio (o swapping). Es muy típica en sistemas Linux, donde incluso existe una partición específica para este fin.
Planificación a corto plazo (nivel bajo): También llamada despachador (dispatcher). Estipula qué procesos en estado preparado pasarán a ejecución. Debe ser
una planificación sencilla y breve, ya que se ejecutará muchas veces.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 9/24
13/11/2016 ASO02_Contenidos

Algoritmos de planificación.
Los planificadores funcionan aplicando algoritmos de gestión. De entre todos los existentes, destacamos estos:

Algoritmo por prioridades.
A cada proceso se le asigna una prioridad según la cual se ejecutan.

Este algoritmo tiene el inconveniente de que los procesos con prioridad baja pueden relegarse en el tiempo.

Algoritmo FCFS (Fisrt Come First Served).
Utiliza una estructura de cola en la que los procesos se ejecutan según entran en ella.

Aquí, los procesos demasiado largos harían esperar al resto de procesos hasta que termine de ejecutarse.

Algoritmo SJF (Shortest Job First).
Intenta reparar el problema de FCFS pero, en este caso, los procesos largos se ven desfavorecidos y pueden retrasarse en su ejecución continuamente.

Una vez que el proceso entra en ejecución, se ejecuta por completo, aunque haya en cola procesos más cortos.

Algoritmo SRT (Shortest Remaining Time).
Es una versión expropiativa de SJF, donde se tiene en cuenta también los procesos de la cola.

En el caso de que existan procesos en cola más cortos, se expropia el proceso en ejecución y se ejecutaría el de la cola.

Algoritmo RR (Round Robin).
Utiliza  una  organización  en  cola  circular:  Los  procesos  se  ejecutan  en  cola  y  cuando  acaba  el  último  se  sigue  con  el  primero.  A  cada  proceso  se  le  asigna  un
tiempo de uso de CPU denominado cuanto.

El  problema  de  este  algoritmo  está  en  la  fijación  del  cuanto,  ya  que  cuantos  demasiado  largos  degeneran  en  FCFS  y  cuantos  demasiado  cortos  disminuirían  el
rendimiento por los continuos cambios de contexto de los procesos.

Como  se  puede  observar,  cada  algoritmo  tiene  sus  ventajas  y  sus  inconvenientes.  En  la  práctica  se  utiliza  un  sistema  híbrido  de  varias  colas  en  las  que  se  aplican
diferentes algoritmos según las necesidades y el momento concreto con la finalidad de optimizar los recursos y los tiempos de respuesta del sistema.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 10/24
13/11/2016 ASO02_Contenidos

Hilos de ejecución.

Caso práctico
 
La  realidad  es  que  ahora,  con  equipos  tan  modernos  y  con  procesadores  potentes  y  de  varios  núcleos  eso  de  trabajar  con
procesos  queda  un  poco  obsoleto  y  se  impone  el  uso  de  unos  mecanismos  llamados  hilos.  Carlos  había  oído  en  alguna
ocasión hablar de los hilos pero no había trabajado con ellos, así que va a investigar cómo los hilos pueden ayudarle en la
administración de los procesos del sistema.

El manejo de los procesos, como se ha podido ver, es bastante complejo. Como alternativa a la visión general del proceso como ente básico surgió hace relativamente
poco tiempo el concepto de hilo (thread).
Un hilo es la parte de un proceso que puede ser ejecutada de forma independiente.
De esta manera, un proceso estará constituido por al menos, un hilo, existiendo la posibilidad de que tenga varios.

La capacidad (del sistema operativo) de mantener varios hilos de ejecución dentro del mismo proceso se conoce con el nombre
de multihilo. Si no existe, entonces se habla de monohilo.

En general, todos los sistemas operativos modernos son multihilo.

Trabajar a nivel de hilos tiene grandes ventajas sobre hacerlo a nivel de procesos:

Al tratarse de entidades mucho más ligeras, los tiempos empleados para su manejo (creación, terminación, cambio de estado y de contexto) son mucho menores
respecto a los procesos.
El tiempo para crear un hilo es mucho menor que para crear un proceso.

Autoevaluación
 
¿Cuál de las siguientes afirmaciones sobre sistemas operativos modernos es CORRECTA?
  
Un proceso no puede tener más de un hilo de ejecución.

Un mismo hilo puede abarcar más de un proceso.
Dos hilos de un mismo proceso no pueden estar en diferente estado.

Un proceso puede estar constituido por un único hilo de ejecución aunque el sistema sea multihilo.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 11/24
13/11/2016 ASO02_Contenidos

Estructura de un hilo.
De forma muy simple podemos decir que un hilo sigue la siguiente estructura:

Bloque de control del hilo: Similar al BCP pero específico para el hilo.
Pila de ejecución: Estructura que contiene la información de estado del hilo (punteros, registros, etc.).

Teniendo esto en cuenta y aplicándolo a los diferentes tipos de procesos:

Procesos monohilo.
En este tipo de procesos no existe el concepto de hilo como tal y la representación del proceso es similar a la explicada al comienzo de la unidad.

Procesos multihilo.
Sólo existe un BCP y un espacio de direcciones asociadas al proceso pero, para cada hilo, hay un bloque de control y una pila de ejecución separados.

Dentro de un mismo proceso los hilos comparten código, datos y recursos del sistema.
Los  hilos  están  pensados  para  que  no  sean  independientes  entre  sí.  De  este  modo,  es  posible  que  un  hilo  pueda  acceder  a  la  pila  de  otro  hilo  y  modificarla.  En  esta
interacción y en el tiempo que se emplea en ella (mucho menor que la comunicación entre procesos) reside, fundamentalmente, su potencialidad.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 12/24
13/11/2016 ASO02_Contenidos

Estados de un hilo.
Los hilos siguen el diagrama de 3 estados que se explicó para los procesos.

Sobre los hilos se pueden realizar las siguientes operaciones:

Crear:  en  general,  al  crear  un  proceso  se  crea  también  un  hilo  para  ese  proceso  que  se  colocará  en  la  cola  de
preparados. De ese hilo pueden salir nuevos hilos (hilos hijos).
Terminar: cuando se termina un hilo, se libera todo lo asociado a él (el bloque y su pila).
Bloquear:  sucede  cuando  un  hilo  necesita  esperar  a  que  suceda  un  evento.  Se  comporta  como  si  fuera  un  proceso,
pasando  al  estado  bloqueado  y  cediendo  el  procesador  a  otro  hilo.  Puede  darse  el  caso  de  que  el  bloqueo  de  un  hilo  conlleve  el  bloqueo  de  todo  el  proceso,  es
decir, de todos los hilos que componen el proceso.
Desbloquear:  ocurre  cuando  el  evento  por  el  que  se  esperaba  sucede  y  el  hilo  pasa  a  la  cola  de  preparados.  Al  igual  que  antes,  si  un  hilo  bloqueaba  todo  su
proceso, el desbloqueo de un hilo puede conllevar el desbloqueo de todo el proceso, es decir, de todos los hilos que componen el proceso.

Como se ve, los hilos tienen un comportamiento estacional similar a los procesos. Este hecho unido a que los hilos son mucho más ligeros que los procesos, hace que
los tiempos de creación, terminación y cambios de estado (y de contexto) sean mucho más reducidos, con lo que se gana en eficiencia.

Autoevaluación
 
¿Cuál de los siguientes cambios de estado de un hilo es CORRECTO?
  
De preparado a ejecución.
De preparado a bloqueado.

De bloqueado a ejecución.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 13/24
13/11/2016 ASO02_Contenidos

Interrupciones y excepciones.

Caso práctico
 
Todo  va  bien  hasta  que  llegan  los  problemas,  y  resulta  que  ahora  aparecen  tareas  que  se  paran  a  medias  y  errores  en
ejecuciones  de  procesos.  Para  tratarlos  habrá  que  conocerlos  antes,  así  que  Carlos  va  a  identificar  estas  incidencias  y  a
adoptar los mecanismos que sean necesarios para cada caso.

Durante el transcurso ordinario de la ejecución de procesos pueden darse dos situaciones especiales:

Interrupción.
Se produce cuando se quiere que la CPU deje de ejecutar el proceso en curso y pase a realizar otra función de quien hace la
interrupción. Cuando la CPU realiza esa función se dice que está atendiendo la interrupción.

Las interrupciones pueden darse a dos niveles:

Nivel de software: El usuario realiza una llamada al sistema (para hacer uso de un recurso del núcleo).
Nivel de hardware: Un dispositivo (hardware) requiere la atención de la CPU para ejecutar su driver.
Cuando se produce una interrupción se pasa el control al sistema operativo, quien salva el contexto del proceso que se estaba
ejecutando  y  se  analiza  la  interrupción.  Las  interrupciones  están  catalogadas  y  el  sistema  operativo  dispone  de  rutinas  especiales  para  manipular  cada  tipo  de
interrupción. Una vez se ha atendido la interrupción la CPU continúa con su anterior tarea.

Excepción.
La excepción es un tipo de interrupción provocada por la propia CPU a causa de un error en la ejecución del proceso en activo como puede ser la realización de
operaciones no permitidas, códigos de operación mal expresados, direcciones de memoria fuera de rango, etc.

El tratamiento de una excepción es similar al de la interrupción, con la salvedad de que las excepciones, a menudo, no continúan el proceso con fallo sino que lo
abortan.

Autoevaluación
 
¿Cuál de las situaciones puede generar más fácilmente pérdida de datos?
  
Interrupción.

Excepción.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 14/24
13/11/2016 ASO02_Contenidos

Demonios.

Caso práctico
 
La  primera  vez  que  Carlos  oyó  hablar  de  demonios  haciendo  referencia  a  sistemas  operativos,  pensó  en  cualquier  cosa
menos en su relación con los procesos. Ahora resulta que un sistema operativo tiene demonios y que son importantes para
su funcionamiento. Consciente de esto, Carlos inicia la búsqueda de los demonios del sistema para su administración.

Existe un tipo muy particular de proceso que recibe el nombre de demonio.
Un demonio es un proceso que se ejecuta en segundo plano sin necesidad alguna de interacción con el usuario para llevar a cabo su tarea.
En  sistemas  Windows  los  demonios  se  les  conocen  más  comúnmente  como  servicios,  pues  su  finalidad  es  ofrecer  un  servicio  al
usuario.

Los demonios no disponen de interfaz, ni gráfica ni textual, ya que no necesitan comunicarse con el usuario. Tampoco hacen uso de
los dispositivos de E/S comunes para notificar resultados o errores. En su lugar, vuelcan toda esta información en un archivo  LOG
o la comunican a otros demonios encargados de recopilar este tipo de datos.

Los demonios pueden iniciarse, detenerse y reiniciarse:

Iniciar un demonio: # <ruta del demonio> start
Parar un demonio: # <ruta del demonio> stop
Reiniciar un demonio: # <ruta del demonio> restart

Los servicios (demonios Windows) permiten, además, ser pausados y reanudados.

Debes conocer
 
En el siguiente documento se explica cómo realizar las diferentes operaciones sobre los servicios tanto desde interfaz como desde línea de comandos.

Operaciones básicas sobre servicios Windows.

Autoevaluación
 
¿Qué orden utilizarías en Windows para iniciar el servicio "remoteregistry" que habilita el registro remoto?
  
# remoteregistry start

sudo remoteregistry start
net start remoteregistry

Service remoteregistry start

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 15/24
13/11/2016 ASO02_Contenidos

Gestión de procesos en Windows.

Caso práctico
 
La  tarea  diaria  del  administrador  de  sistemas  no  es  otra  cosa  que  eso,  administrar  sistemas.  Carlos  debe  hacerlo  a  diario
con todos los equipos que tiene a su cargo. Ahora toca trabajar con los equipos que tienen un sistema operativo Windows,
así que los reconocerá y hará una gestión eficiente de los procesos.

La gran parte de las operaciones de gestión de procesos en Windows se hace desde el Administrador de tareas. Recordemos que esta
herramienta es accesible desde la combinación de teclas [Ctrl]+[Alt]+[Esc].

Para nuestro propósito, nos vamos a centrar en las pestañas Procesos y Servicios.

Procesos.
A través de esta pestaña podemos gestionar los procesos que están activos en el sistema. Por defecto sólo se muestran los
procesos  iniciados  por  el  usuario  pero  podemos  visualizar  todos  activando  la  opción  "Mostrar  procesos  de  todos  los
usuarios".

También  es  interesante  señalar  que  la  información  que  se  ofrece  sobre  los  procesos  es  mucho  más  de  la  que  aparece  en  la
pestaña por defecto. Para incluir o modificar las columnas de datos de cada proceso iremos a Ver > Seleccionar columnas y
escogeremos los campos que nos convengan.

Para cada proceso podemos realizar, entre otras, las siguientes acciones (haciendo clic derecho sobre él):

Terminar el proceso: pasa el proceso a estado terminado.
Finalizar el árbol de procesos: pasa a estado terminado el proceso y todos los procesos relacionados con él.
Establecer su prioridad: permite cambiar la prioridad del proceso, existiendo varios niveles a elegir.
Establecer afinidad: da la opción de asociar el proceso a una CPU (en el caso de equipos con varias CPUs).
Ir al servicio: nos lleva a la pestaña Servicios y resalta aquellos que están asociados a este proceso.
Servicios.
Mediante esta pestaña podemos administrar los servicios del sistema. En el listado aparecen todos los servicios, tanto si están
en activo como si no. No es posible cambiar la información que se muestra sobre el servicio, como sucedía con los procesos.
Sobre cada servicio se pueden realizar estas acciones (clic derecho sobre él):

Iniciar el servicio: pasa el servicio a estado "En ejecución".
Detener el servicio: pasa el servicio a estado "Detenido".
Ir al proceso: nos lleva a la pestaña Procesos y resalta aquel al que está asociado.

Windows también permite terminar procesos a través del comando taskkill (ver la sintaxis con la orden taskkill /?).  Un  usuario


estándar  puede  eliminar  procesos  asociados  a  él.  Para  eliminar  procesos  del  sistema  o  de  otros  usuarios  es  necesario  tener
privilegios de administrador.

Para saber más
 
En el siguiente vídeo se resume lo más importante de lo explicado en este apartado.

Gestión de procesos en Windows 7.

ASO02_01_Gestión de ...

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 16/24
13/11/2016 ASO02_Contenidos

Gestión de procesos en Linux.

Caso práctico
 
La  empresa  tiene  equipos  Windows  y  también  equipos  Linux,  así  que  ahora  toca  administrar  los  procesos  de  los  equipos
Linux. Carlos sabe que dispondrá de herramientas gráficas pero también debe ser consciente de que existe un buen número
de comandos para utilizar desde la consola que le ayudarán en muchas de las tareas típicas de gestión de procesos.

Linux no hace una distinción tan clara como Windows entre  procesos  y  demonios.  De  hecho,  la  gestión  de  procesos  y  la  de  demonios
sigue las mismas directrices.

Los sistemas Linux siempre se han destacado por la permisividad de manipulación de los objetos del sistema, por lo que disponemos de
un gran abanico de herramientas (sobre todo a nivel de consola) para gestionar los procesos.

Antes de abordar la gestión de los procesos en sistemas Linux conviene tratar un concepto bastante interesante: El plano de un proceso.
Cuando el usuario está interactuando con un proceso, se dice que este proceso está en primer plano. Cuando el proceso se ejecuta "en
silencio",  sin  necesidad  de  que  el  usuario  interactúe  con  él  se  dice  que  el  proceso  está  en  segundo  plano.  Un  ejemplo  típico  de
procesos en segundo plano son los demonios.

Sólo un proceso puede estar en primer plano en un momento dado. Por el contrario, en segundo plano pueden existir varios procesos a la vez.
Por otro lado, un proceso puede pasarse de primer plano a segundo plano, y viceversa, cuantas veces se desee.

A continuación hablaremos de los mecanismos que podemos aplicar para gestionar procesos en Linux utilizando su interfaz gráfico y posteriormente profundizaremos un
poco más hablando de las operaciones disponibles por línea de comandos.

Autoevaluación
 
Señala la afirmación CORRECTA.
  
Un proceso puede estar a la vez en primer y en segundo plano.
En primer plano puede haber más de un proceso.

En segundo plano puede haber más de un proceso.
Un proceso puede pasar de primer a segundo plano, pero no al revés.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 17/24
13/11/2016 ASO02_Contenidos

Gestión de procesos por interfaz gráfico.
Recordamos  que  Linux  proporciona  una  herramienta  similar  al  Administrador  del  sistema  de  Windows  llamada  Monitor  del
sistema. De esta herramienta nos detendremos en la pestaña Procesos.

Esta pestaña muestra, por defecto, todos los procesos (incluidos los demonios) que están asociados al usuario. A través de la
opción Ver del Monitor del sistema podemos seleccionar otro criterio de visualización, pudiendo mostrar todos los procesos del
sistema o solamente aquellos que están en estado activo.

Para cada proceso, como sucedía en Windows, se pueden aplicar una serie de operaciones (con clic derecho sobre el proceso
en cuestión), de entre las que destacamos estas:

Detener el proceso: pasa el proceso a estado suspendido.
Continuar el proceso: reanuda un proceso que estaba detenido.
Finalizar el proceso: pasa el proceso a estado terminado.
Matar el proceso: pasa el proceso a estado terminado de forma inmediata.
Cambiar la prioridad: permite variar la prioridad del proceso siendo 0 la prioridad normal y pudiendo oscilar entre los valores ­20 (máxima prioridad) y 20 (mínima
prioridad).

En la opción Ver también podemos activar la funcionalidad Dependencias. Al hacerlo, en el listado también se muestran los procesos hijo. Aquellos procesos que tienen
procesos hijo asociados aparecen con un triángulo a su izquierda sobre el que se puede pinchar para mostrarlos/ocultarlos. Sobre los procesos hijo se pueden realizar las
mismas operaciones que sobre los procesos padre.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 18/24
13/11/2016 ASO02_Contenidos

Gestión de procesos por línea de comandos.
Las principales acciones que pueden realizarse sobre procesos desde la línea de comandos son estas:

Mostrar información sobre los procesos.
El comando ps (abreviatura de Process Status) muestra un listado con el estado de los procesos.

El comando pstree es una variante de ps en la que los procesos se muestran en forma de árbol.

El comando jobs se utiliza para mostrar los procesos que se están ejecutando en primer y en segundo plano.

Debes conocer
 

En este documento se explica el uso de los comandos para mostrar información de los procesos:

Comandos Linux para información de procesos. (0.68 MB)

Cambiar el estado de los procesos.
El comando kill permite enviar señales a los procesos para cambiar su estado. La señal por defecto de este comando es terminar (matar) el proceso, de ahí su
nombre.

Debes conocer
 
En este documento se explica el uso de los comandos para cambiar el estado de los procesos:

Comandos Linux para cambiar el estado de procesos. (0.36 MB)

Cambiar la prioridad de los procesos.
El  comando  nice  se  emplea  para  cambiar  la  prioridad  de  un  proceso  cuando  se  inicia  su  ejecución.  Por  defecto  el  valor  de  la  prioridad  es  0.  Sólo  los  usuarios
root tienen privilegios para asignar prioridades negativas.

El comando renice permite cambiar la prioridad de un proceso sin necesidad de detenerlo.

Debes conocer
 

En este documento se explica el uso de los comandos para cambiar la prioridad de los procesos:

Comandos Linux para cambiar la prioridad de procesos. (0.38 MB)

Cambios de plano de los procesos.
El operador & se utiliza para pasar un proceso a segundo plano.

El comando nohup se usa para pasar un proceso a segundo plano haciéndolo inmune a los hangup (cuelgues).

Cuando un proceso está detenido, se puede utilizar los comandos fg y bg para lanzarlo en primer plano o en segundo plano, respectivamente.

Debes conocer
 
En este documento se explica el uso de los comandos para cambiar el plano de los procesos.

Comandos Linux para cambiar el plano de procesos. (0.33 MB)

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 19/24
13/11/2016 ASO02_Contenidos

Inicio del sistema. Niveles de ejecución.

Caso práctico
 
Cuando  se  está  trabajando  con  sistemas  operativos  a  un  nivel  como  este,  es  conveniente  conocer  ciertos  mecanismos
como  pueden  ser  aquellos  que  adopta  el  propio  sistema  para  iniciarse.  Carlos  mantiene  que  es  un  tema  importante  porque
conocer  cómo  funciona  una  herramienta  te  ayuda  a  identificar  dónde  falla,  cuando  falla.  A  nivel  de  procesos  el  sistema
operativo sigue una secuencia de inicio que debería ser conocida de cara a poder gestionarse o incluso modificarse.

La puesta en marcha del sistema operativo es una secuencia de operaciones que se varía de unos sistemas operativos a otros. Todos tienen
en común la ejecución de una serie de procesos que constituirán la base del sistema. Estos procesos posteriormente residirán en memoria y
generarán nuevos subprocesos para ofrecer otras funcionalidades.

De entre todos los sistemas operativos disponibles, vamos a estudiar cómo es el proceso de inicio para sistemas Windows y para sistemas
Linux.

Es conveniente resaltar que el proceso de inicio del sistema operativo, incluso tratándose del mismo tipo de sistema operativo, puede variar
de unas versiones a otras e incluso es dependiente del tipo de procesador para el que se instala (x86 o x64).

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 20/24
13/11/2016 ASO02_Contenidos

Inicio del sistema en Windows.
La secuencia de inicio se produce primordialmente en segundo plano, constando de cinco fases:

Secuencia previa al inicio.
Comienza cuando se enciende el equipo, antes de que se inicie el sistema operativo, y en ella tiene lugar el POST  y  el
paso a la carga y ejecución del MBR.

Secuencia de inicio.
Se ejecuta el gestor de arranque (BOOTMGR) y se seleccionará el sistema operativo para iniciar. Posteriormente se hará
una detección del hardware instalado.

Secuencia de carga del núcleo.
Se invoca al archivo WINLOAD.EXE para que cargue el archivo NTOSKRNL.EXE, que está considerado como el núcleo del sistema operativo. También se carga
el archivo HAL.DLL, capa intermedia entre el núcleo de Windows y el hardware.

Tras  la  carga  de  HAL  se  realiza  la  carga  de  la  clave  del  registro  HKEY_LOCAL_MACHIME\SYSTEM.  El  contenedor  SELECT  determina  qué  controlador  debe
cargar y el contenedor CONTROLSET proporciona los datos de configuración utilizados para controlar el sistema (controladores, servicios,…).

Secuencia de inicio del núcleo.
Coincide con la aparición del logotipo de Windows. Realmente, durante este tiempo se llevan a cabo varias tareas entre las que destacamos la creación de la clave
HARDWARE en el registro con los datos recogidos en la fase de detección de hardware y la inicialización de los servicios y de los controladores de dispositivos.

Esta secuencia finaliza con la inicialización del subsistemas y servicios de orden superior y el lanzamiento del subsistema Win32 (en sistemas x64 el subsistema
es WoW), encargado de habilitar, entre otros, el interfaz de usuario, que comienza con el proceso WINLOGON.

Secuencia de inicio de sesión.
WINLOGON inicia la autoridad de seguridad local (LSASS.EXE), momento en el que aparece la pantalla de identificación de usuario (según esté configurada).

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 21/24
13/11/2016 ASO02_Contenidos

Inicio del sistema en Linux. Niveles de ejecución.
La secuencia de inicio en sistemas Linux sigue un esquema muy similar al explicado para Windows:

Secuencia previa al inicio.
Comienza cuando se enciende el equipo, antes de que se inicie el sistema operativo, y en ella tiene lugar el POST y el
paso a la carga y ejecución del MBR.

Secuencia de inicio.
Se ejecuta el gestor de arranque (GRUB, LILO,…) y se seleccionará el sistema operativo para iniciar. Posteriormente se
hará una detección del hardware instalado.

Secuencia de carga del núcleo.
El gestor de arranque se encargará, al final de su ejecución, de cargar el kernel en memoria.

Secuencia de inicio del núcleo.
Se  comienza  la  ejecución  del  kernel  descomprimiéndose  a  sí  mismo.  Tras  esta  operación  se  realizan  operaciones  básicas  como  pueden  ser  la  detección  de  la
CPU y otros dispositivos, la inicialización del sistema gestor de memoria, el montaje del sistema de archivos,… Como última operación de esta fase se  llama  al
proceso padre init (con UID 0).

Secuencia de inicio de sesión.
A  partir  de  ahora  todas  las  operaciones  dependerán  del  proceso  init.  Este  proceso  lanza  los  procesos  contenidos  en  el  fichero  /etc/inittab,  que  contiene  las
instrucciones para crear lo que se denominan las getty (entradas que especifican la forma en que un usuario debe loguearse). Al menos debe existir una getty que
se  encargue  de  preguntar  por  el  usuario  y  lance  el  proceso  /bin/login.  Posteriormente  se  ejecuta  el  comando  /etc/rc.sysinit  para  realizar  un  inicio  básico  del
sistema, ejecutando los procesos asociados al nivel de ejecución establecido.

El nivel de ejecución (runlevel), determina qué grupo de procesos se van a ejecutar cuando se inicie el sistema en ese nivel.

Existen varias convenciones en cuanto al número de runlevels, siendo lo más frecuente asumir que existen 7, de los que el 0, el 1 y el 6 están reservados. El resto de
niveles pueden personalizarse.

Todos los servicios del sistema tienen un script en /etc/init.d. Por otro lado, cada runlevel tiene recopilados enlaces simbólicos de los scripts que se ejecutarán cuando el
usuario inicie en ese nivel en el archivo /etc/rcX.d, donde X es el número del runlevel.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 22/24
13/11/2016 ASO02_Contenidos

Anexo.­ Licencias de recursos.
Licencias de recursos utilizados en la Unidad de Trabajo.
Recurso (1) Datos del recurso (1) Recurso (2) Datos del recurso (2)

Autoría: Phillie Casablanca.
Autoría: Rock in rolo Onlus.
Licencia: CC­BY.
Licencia: CC BY­SA.
Procedencia:
Procedencia: http://www.flickr.com/photos/rockinrolo/3546316154/
http://www.flickr.com/photos/philliecasablanca/
sizes/s/in/photostream/
2437181190/

Autoría: Sergio Scotta.
Autoría: José Carlos Gallego.
Licencia: CC BY­NC­SA.
Licencia: CC BY­NC­SA.
Procedencia: http://www.flickr.com/photos/sergeen/4909883654
Procedencia: Elaboración propia.
/sizes/m/in/photostream/

Autoría: jamonderana.
Autoría: mrjoro.
Licencia: CC BY­NC­SA.
Licencia: CC BY­NC­SA.
Procedencia:
Procedencia: http://www.flickr.com/photos/mrjoro/89187454/
http://www.flickr.com/photos/64380281@N03/
sizes/m/in/photostream/.
5861854646/

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: Rock in rolo Onlus.
Autoría: José Carlos Gallego.
Licencia: CC BY­SA.
Licencia: CC BY­NC­SA.
Procedencia: http://www.flickr.com/photos/rockinrolo/3545507967
Procedencia: Elaboración propia.
/sizes/s/in/photostream/

Autoría: The lebers.
Autoría: José Carlos Gallego.
Licencia: CC BY­SA.
Licencia: CC BY­NC­SA.
Procedencia:
http://www.flickr.com/photos/thelebers/4746433373/ Procedencia: Elaboración propia.
sizes/m/in/photostream/

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: Rock in rolo Onlus.
Autoría: José Carlos Gallego.
Licencia: CC BY­SA.
Licencia: CC BY­NC­SA.
Procedencia: http://www.flickr.com/photos/rockinrolo/3545508825/
Procedencia: Elaboración propia.
sizes/s/in/photostream/

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: UTPL VIA Comunicaciones. Autoría: Emeryjl.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Procedencia: http://www.flickr.com/photos/emeryjl/506966918/
http://www.flickr.com/photos/utpl/3197027769/ sizes/m/in/photostream/

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 23/24
13/11/2016 ASO02_Contenidos
sizes/s/in/photostream/

Autoría: Rock in rolo Onlus. Autoría: riptheskull.

Licencia: CC BY­SA. Licencia: CC BY­NC­SA.

Procedencia: Procedencia:
http://www.flickr.com/photos/rockinrolo/3546315696/ http://www.flickr.com/photos/vintagehalloweencollector/259425237/
sizes/s/in/photostream/ sizes/m/in/photostream/

Autoría: Rock in rolo Onlus.
Autoría: Microsoft.
Licencia: CC BY­SA.
Licencia: Copyright cita.
Procedencia: http://www.flickr.com/photos/rockinrolo/
Procedencia: Captura de pantalla Windows 7.
3545509907/sizes/s/in/photostream/

Autoría: Rock in rolo Onlus.
Autoría: Microsoft.
Licencia: CC BY­SA.
Licencia: Copyright cita.
Procedencia: http://www.flickr.com/photos/rockinrolo/3545509907/
Procedencia: Captura de pantalla Windows 7.
sizes/s/in/photostream/

Autoría: Martin Gommel.
Autoría: Debian.
Licencia: CC BY­NC­ND.
Licencia: GNU.
Procedencia:
http://www.flickr.com/photos/kwerfeldein/1934917078/ Procedencia: Captura de pantalla de Debian.
sizes/m/in/photostream/

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: José Carlos Gallego. Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA. Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia. Procedencia: Elaboración propia.

Autoría: Universidad de Navarra.
Autoría: José Carlos Gallego.
Licencia: CC BY­ND.
Licencia: CC BY­NC­SA.
Procedencia: http://www.flickr.com/photos/hexmar/
Procedencia: Elaboración propia.
2034486793/

Autoría: Juan Hernando.
Autoría: José Carlos Gallego.
Licencia: CC BY­NC­SA.
Licencia: CC BY­NC­SA.
Procedencia:
http://www.flickr.com/photos/fraccionirreducible/ Procedencia: Elaboración propia.
5198648290/

Autoría: José Carlos Gallego.

Licencia: CC BY­NC­SA.

Procedencia: Elaboración propia.

http://fpadistancia.caib.es/pluginfile.php/150092/mod_resource/content/2/ASO02/ASO02_Web/index.html 24/24

Das könnte Ihnen auch gefallen