Gestion de procesos: iOS

Procesos en iOS

Para poder entender la gestión de procesos del sistema operativo, se tiene que conocer que es un proceso, el cual es el momento en que se ejecuta un programa (es una colección de datos e instrucciones que puede ser ejecutada), en iOS un hilo representa un proceso. Cuando ocurre un proceso se crea un espacio de pila y un ambiente especial que tiene todo lo necesario para que el sistema ejecute el programa como si solo se estuviera ejecutando este, para minimizar la sobrecarga, este no emplea protección de memoria virtual entre procesos.
La forma del sistema operativo de dar seguimiento a los proceso es mediante el identificador Pid el cual es  un número de identificación único para cada proceso.
Cuando se inicia un proceso, el sistema operativo tiene dos formas de ejecutarlo, en primer plano esto ocurre por defecto, ya que es el modo de ejecución normal y se da cuando el  intérprete de órdenes o de comandos (el que se encarga  de traducir las órdenes que introducen los usuarios), no permite que se ejecute otro proceso hasta que se haya terminado el proceso que está en curso. En segundo plano, ocurre cuando el intérprete permite la ejecución de varios procesos o comandos, mientras se ejecuta un proceso.
Un componente en particular encargado de crear muchos procesos en iOS, este tiene el nombre de analizador, este es un conjunto de funciones y comandos que se encarga de interpretar la configuración de iOS  y los comandos de EXEC.
El kernel es el encargado de invocar a él analizador durante la inicialización de iOS y EXEC procesos, el cual lo que hace es proporcionar una interfaz de líneas de comandos  llamada CLI de consola. Cuando un comando es ingresado por un usuario o una línea de configuración es leída desde un archivo, el analizador interpreta el texto y toma acción inmediata sobre dicho proceso.   

Hilos

Son procesos o tareas que se realizan durante la ejecucion de otra tarea, estos son implementados para mejorar la interfaz y no ralentizarla realizando tareas pequeñas que se ejecutan en el background como por ejemplo descarga de aplicaciones o la reproduccion de musica de fondo, para controlar la ejecucion de estos procesos se implementan los semaforos.

Semaforos 

Son metodos implementados para controlar los procesos en ejecucion que requieran compartir un componente del hardware, (procesador, memoria, etc) estos funcionan de manera para darle un tiempo de ejecucion a un programa y cuando se cumple ese tiempo lo que sucede es concederle tiempo a otro programa.

Gestion de procesos

Cola de prioridades:
La forma de iOS de ejecutar sus procesos es mediante una cola de prioridades (el cual es un modelo no preventivo), a cada proceso se le asigna una prioridad y aunque estos tienen su propio espacio en memoria, otros procesos pueden libremente acceder a este, si hay varios procesos con la misma prioridad se van ejecutando por su orden de llegada.
 iOS denomina las prioridades  de la siguiente manera que va desde los procesos de alta prioridad, los normales, modo kernel,  hasta los de más baja prioridad.

  • Los procesos en modo kernel o crítico son los que forman parte del sistema operativo y son los que van a ser ejecutados primero.
  • Los procesos de alta prioridad estos requieren un tiempo de respuesta rápido.
  • Los procesos normales tienen la misma la prioridad predeterminada utilizada por la mayoría de los procesos IOS.
  • Los procesos de baja prioridad los procesos que tienen una asignación baja en la cola de prioridades son los que involucran tareas de fondo periódicas (como el registro de mensajes).

Estas prioridades proporcionan al proceso un acceso preferencial para ejecutarse en la CPU, pero  como iOS no emplea prioridades ya en ejecución, una prioridad más alta no podrá interrumpir  al proceso con más baja prioridad. Un proceso al tener mayor prioridad tendrá más oportunidades de acceder a la CPU.

Ciclo de vida de los proceso en iOS

Los procesos pueden ser creados y terminados en cualquier momento, cada proceso tiene un ciclo de vida, que se puede dividir en etapas y diferentes estados, en  iOS existen las siguientes:

Etapa de creación:
En primer lugar se tiene la etapa de creación, en este punto al nuevo proceso creado se le asigna un espacio de pila, ya está preparado para  el evento de transición al estado de modificación, si es necesario, ya que hay procesos que no necesitan ser modificados, en este caso iría directo a la etapa de ejecución.       

Etapa de modificación:
En el momento en que un proceso necesita un recurso (como pasar automáticamente los parámetros de inicio o asignar una consola a un nuevo proceso cuando se crea), el hilo de procesos se puede modificar para arreglar este.   

Etapa de ejecución
Después de que el proceso se crea y es modificado (solucionado cualquier problema con el proceso), este transciende al estado listo, durante esta  etapa el proceso puede tener acceso a la CPU y ejecutarse.
En esta etapa el proceso puede estar en varios estados, listo, en ejecución o inactivo.

  • Estado listo en este momento el proceso se encuentra esperando su turno según su prioridad para poder acceder a la CPU y ejecutar sus instrucciones, el proceso está listo para ser ejecutado, y está a la espera de la orden del scheduler (parte del núcleo del sistema operativo, administra el procesador), en este estado pueden estar simultáneamente varios procesos.

  • Estado en ejecución sucede cuando el proceso ya está en la CPU y se está ejecutando.

  • Estado detenido es cuando el proceso se encuentra en la memoria principal durmiendo cargado, no se puede ejecutar porque está a la espera  de la operación de entrada/salida o el evento que le va a permitir ejecutarse.

Ciclo de vida de un proceso
Como IOS utiliza multitarea no preventiva, el proceso puede continuar ejecutándose en la CPU, hasta que otro proceso suspenda o termine  la ejecución.
Hay dos formas de suspender una ejecución de un proceso, la primera es que  el proceso explícitamente acuda al kernel y renuncie a la CPU, en este caso el proceso vuelve a la lista de espera para ejecución. Y la otra manera en que un proceso este a la espera de un evento, en este momento el kernel suspende implícitamente al proceso y ocurre la transición al estado inactivo, donde permanece hasta que ocurre el evento.   

Etapa de finalización
 Esta es la etapa final del ciclo de vida de todo proceso,  un proceso llega a esta etapa cuando cumple su función y se apaga, o cuando otro proceso lo mata (forma forzada de terminar un proceso), cuando un proceso termina por sí mismo este trasciende al estado muerto y allí permanece inactivo hasta que el kernel recupere sus recursos. Después de reclamar sus recursos el proceso, finalizado las transiciones salen del estado muerto y se eliminan por completo del sistema.

- Jurlanys Campos




Comentarios

  1. GRUPO LINUX: ¿El modelo no preventivo es una mala eleccion para un sistema operativo? ¿Por que?

    ResponderBorrar
    Respuestas
    1. Se puede pensar que es una mala elección porque los sistemas operativos necesitan procesar rápidamente los paquetes entrantes, ya que las necesidades de conmutación superaron rápidamente las limitaciones de respuesta en tiempo real de su modelo de proceso, esto presento un problema, el cual fue solucionado en las "Arquitecturas de conmutación de paquetes" en iOS. Y además este modelo tiene dos ventajas principales. Una de ellas es que tienen una baja sobrecarga gracias a la multitarea cooperativa la cual genera menos contextos alternos entre subprocesos y de esta forma es que reducen la sobrecarga en la CPU. Y la otra es que tiene menor complejidad para el programador. Ya que el programador tiene el control de donde se suspende un proceso y esto conlleva a que es más fácil limitar los cambios de contexto de los procesos a lugares donde los datos compartidos no se cambian, reduciendo la posibilidad de efectos secundarios y puntos muertos (se da cuando dos hilos de procesos necesitan un mismo recurso y este está ocupado).

      Borrar
  2. ¿Qué ocurre cuando un proceso está a la espera de un evento para ejecutarse y este aún no llega?

    ResponderBorrar
    Respuestas
    1. Cuando un proceso está en la etapa de ejecución y no llega el evento que hará que este se ejecute, el proceso transciende al estado dormir, porque está esperando a que se complete una operación de entrada/salida. El proceso estará en el estado durmiendo, hasta que reciba el evento que está esperando, cuando este evento llega, en ese momento el proceso despierta y pasa al estado listo para ejecutarse en memoria principal.

      Borrar
  3. Thank you very much for all the information related to scarlet ios. I was really looking for some content on it and I think I'm going to download it right now.

    ResponderBorrar

Publicar un comentario

Entradas populares