Investigación – Análisis del sistema operativo iOS –2014
SISTEMA OPERATIVO iOS Edgar Segundo Quezada Patiño Email:
[email protected]
Jessica Nathaly Correa Tenesaca Email:
[email protected]
María Isabel Granda Aguilar Email:
[email protected]
Carolina Elizabeth Jaramillo Alverca Email:
[email protected]
I.
DESARROLLO
a. HISTORIA iOS iOS es un sistema operativo móvil desarrollado por Apple. A inicios del 2007 (9 de enero) se revela la existencia del SO, aunque no tuvo un nombre oficial hasta la primera versión beta (6 de marzo de 2008), desde entonces se llamaría iPhone OS. El mismo que tuvo lugar con su primer dispositivo iPhone el 29 de junio de 2007. [1] Poco más tarde, en septiembre de 2007, la plataforma fue incrementando el interés, llevando así a un nuevo lanzamiento de un dispositivo denominado iPod Touch, el cual tenía las capacidades multimedia del iPhone, pero se excluía la capacidad para hacer llamadas telefónicas. Es así como Apple desencadenó el desarrollo y avance de su sistema operativo. Para el 27 de enero de 2010, Apple ya anuncia un nuevo dispositivo (iPad), siendo este muy similar al iPod Touch. Y el 7 de junio del mismo año, Steve Jobs, durante la revelación del iPhone 4, informa que iPhone OS se llamaría oficialmente iOS. Durante el pasar de los años se han desarrollado distintas versiones del iOS, hasta lo que hoy tenemos (iOS 7.1) aportando nuevas funcionalidades y mejoras al sistema operativo, haciéndolo cada vez más completo, las mismas que se detallan en la tabla 1. La revelación de su existencia en 2007, revolucionó la industria de telefonía móvil, ocasionando que empresas como Nokia, Sony y Motorola, se adapten y sean innovadores ante la nueva competencia, y el mercado que continuamente cambia.
iPhone OS 3.0
Junio de 2009
iOS 4
Abril de 2010
iOS 5
Octubre de 2011
iOS 6
Septiembre de 2012
Tabla 1. Evolución de iOS – Características [2][3] Versión
iPhone OS 1.0
iPhone OS 2.0
Lanzamiento
Junio de 2007
Abril de 2009
Características Primera versión de iOS contando con una interfaz multitáctil y algunas apps como safari, reproductor de música, correo. Esta versión fue sucedida por iPhone OS 1.1 incluyendo la app iTunes Store, seguida de esta versión llego iPhone OS 1.1.1 contando con nuevas aplicaciones entre ellas servicios de localización. Siguiente generación de iOS expuesta en abril de 2008 y
liberada el 11 de julio de 2009 esta nueva versión incluyo características como tentpole además de incluir Microsoft Exchange ActiveSync para la sincronización de correo electrónico y aplicaciones como iCloud, MobilMe, App Store, entre otras. Luego vio la luz iOS 2.1 seguido de iOS 2.2 y su versión final iPhone iOS 2.2.1 Tercera generación de iOS expuesto en abril de 2009 y liberada el 17 de junio de 2009 esta versión conto con nuevas características como compras en el App Store, notificaciones push, grabación de video, entre múltiples características más. Le siguió la versión iPhone OS 3, iPhone OS 3.2, la versiones finales de esta generación fue la 3.1.3 para iPhone e iPod y iPhone OS 3.2.2 para iPad. Esta cuarta generación de iOS conto con más de 100 nuevas características y 1500 nuevas APIs para desarrolladores, estas características incluyó multitarea para las aplicaciones, nuevas apps como iBooks, Game Center, iAd, entre otras. Su siguiente versión iOS 4.1 con nuevas apps, le siguió iOS 4.2 seguida de iOS 4.3 que contaría con nuevas apps y finalmente vería la luz iOS 4.3.5 Quinta generación que nacieron nuevas características como el Centro de Notificaciones. Recordatorios, iMessage, Siri, entre otras características como el final de la dependencia de un ordenador para configurar el dispositivo. La siguiente version fue iOS 5.1 seguida de su versión final iOS 5.1.1 Sexta generación de iOS con esta le acompañaron nuevas características como el servicio de Mapas el cual fue contrario a lo que esperaban ya que mantuvo muchos errores en su lanzamiento, sin
Investigación – Análisis del sistema operativo iOS –2014
iOS 7
Junio de 2013
embargo ofreció otras características como la integración con Facebook, compartir fotos en Streaming por iCloud, fotos panorámicas entre otras funciones. Trajo nuevas actualizaciones como iOS 6.1, iOS 6.1.3, iOS 6.1.4 y su versión final 6.1.5 Esta séptima generación multiplataforma adaptada para iPhone, iPad y iPod touch, es la versión más reciente del Sistema Operativo orientada a ofrecer una mejor experiencia visual del dispositivo, está versión ofrece características mejoradas en el Centro de Notificaciones, la cámara, Safari y la capacidad multitarea de sus aplicaciones.
b. VENTAJAS Y DESVENTAJAS DEL iOS
exclusiva de la compañía, solo podremos disponer mediante la adquisición de uno de esos dispositivos, además de la duración de la batería, que es muy poca, en comparación a otros dispositivos, que posean un sistema operativo diferente. Posee comandos especiales requeridos por la interfaz de línea de comandos, a menudo hacen uso de esquemas de nombres crípticos y no dan mucha información para notificar a un usuario de lo que están haciendo. [5]
c. ARQUITECTURA iOS iOS es un sistema operativo basado en los conocimientos del sistema operativo MAC OS X, el mismo que a su vez se fundamenta en Darwin BSD, por lo que es un sistema operativo UNIX. Esta arquitectura posee cuatro capas de abstracción, en las cuales las capas superiores son aquellas que contienen los servicios y tecnologías para el desarrollo de aplicaciones, mientras que las capas más bajas intervienen en los servicios básicos.
i. Ventajas Aunque sea un sistema operativo privado y exclusivo para sus dispositivos, Apple libera su SDk, para poder ser implementado y mejorado por desarrolladores que así lo decían, de esta manera, la App Store es considerada la tienda de aplicaciones online con más aplicaciones disponibles. Es un sistema operativo que es fácilmente Hackeable, esto puede ser positivo y negativo a la ves, según con los ojos que lo analicen. Si lo meramos orientándolo hacia la seguridad, esto puede ser un grave problema, ya que al poder hacer Jailbreak fácilmente nuestro dispositivo, también de manera sencilla podremos instalar aplicaciones ajenas al App Store, pero si lo miramos desde una perspectiva de tomar el control de nuestro dispositivo, aumentar su rendimiento y poder hacer y deshacer a nuestro antojo, es una gran ventaja, con lo cual podremos instalar aplicaciones de terceros y tweaks, es decir, modificaciones al sistema. La multi-tarea de iOS está reservada tan solo para siete procesos fundamentales, los cuales son: Vos IP Audio en segundo plano Notificaciones push Notificaciones locales Localización en segundo plano Completado de tareas Cambio rápido de aplicaciones [4] Esto tiene una parte positiva también, en la cual Apple aventaja a su más directo competidor, y es que al alimentar la multi-tarea a estos procesos básicos y primarios, la duración de su batería no se resiente. La integración de las aplicaciones con el hardware es perfecta, debido a que solo los dispositivos de Apple pueden contar con este sistema operativo.
ii. Aspectos Negativos Uno de los grandes contras que tiene el sistema operativo de Apple, es que al ser de propiedad
Fig. 3.1.: Arquitectura de Capas iOS [6]
i. Capa Cocoa Touch Es la capa más significativa dentro del desarrollo de aplicaciones iOS. Ésta define la infraestructura de la aplicación básica y el soporte para las tecnologías tales como: Multitarea, entradas táctiles, notificaciones y otros servicios de sistemas de alto nivel. Dicha capa está formada por dos Frameworks esenciales: UIKit: proporciona las clases necesarias para el desarrollo de la interfaz de usuario. Foundation Framework: especifica las clases básicas, el acceso y manejo de objetos y servicios del sistema operativo.
ii. Capa Media Ésta capa provee de los servicios de gráficos, audio y video a la capa superior.
Investigación – Análisis del sistema operativo iOS –2014 iii. Capa Core Services Contiene los servicios fundamentales del sistema operativo para ser usados por todas las aplicaciones.
iv. Capa Core OS Es la capa más baja y es aquella que se encarga de las tareas de bajo nivel, como: gestión de memoria, gestión de procesos, drivers, seguridad, entre otros.
d. GESTIÓN DE PROCESOS Como se mencionó anteriormente iOS deriva del sistema operativo UNIX, por lo que nos centraremos en él. Al hablar de procesos, se lo puede definir como un trabajo en ejecución en un sistema de tiempo compartido. El mismo que necesita ciertos recursos tales como: tiempo de CPU, memoria, archivos y dispositivos E/S. Estos recursos se le proporcionan en el momento de crear el proceso o se le asignan mientras se está ejecutando. Cuando el proceso termina, el sistema operativo reclama todos los recursos utilizables.
Fig. 3.2.: Diagrama de estados de un proceso [8]
ii. Threads (Hilos) Un hilo es aquel que permite la ejecución de varias secuencias de instrucciones dentro de un mismo proceso compartiendo un mismo espacio de direcciones y las mismas estructuras de datos del núcleo. Las llamadas al sistema para la gestión básica de hilos son:
i. Estados de un proceso Tabla 3.1. Llamadas al sistema, gestión de hilos. [9]
Incluye nueve estados por los que recorre un proceso, tales como: Created (Creado): El proceso está recién creado y no está listo para ejecutar. Ready (Listo para ejecutar en memoria): El proceso no se está ejecutando, pero está listo para ejecutar tan pronto como el núcleo lo planifique. Ready Swapped (Listo para ejecutar en swap): El proceso está listo para ejecutar. Pero se debe cargar en memoria principal antes de que se planifique su ejecución. Sleep (Dormido en memoria): Incapaz de ejecutar hasta que se produzca un suceso; el proceso está en memoria principal. Sleep Swapped (Dormido en el área de swap): El proceso está esperando un evento y ha sido cambiado a un almacenamiento secundario (un estado de bloqueo). Kernel running (Ejecución en modo Kernel): Eventos que sólo el kernel puede controlar. User Runing (Ejecución en modo usuario): Ejecutándose en modo usuario. Zombie: El proceso ya no existe pero deja un registro para que lo recoja el proceso padre. Preempted (expulsado o apropiado): El proceso retorna del modo kernel al modo usuario, pero el kernel se apropia del proceso y hace un cambio de contexto, pasando otro proceso a ejecutarse en modo usuario. Cabe mencionar que existen dos niveles en los que se ejecuta un proceso: Modo kernel: en este modo no se pone ninguna restricción al kernel del sistema (modo privilegiado [7]). Modo usuario: modo de ejecución normal de un proceso, no posee ningún privilegio.
Descripción
Gestión de hilos
Llamadas al sistema pthread_create pthread_exit pthread_kill pthread_join pthread_self
iii. Planificación de procesos En UNIX, al ser un sistema de tiempo compartido y tiempo real, utiliza un planificador a corto plazo, por lo que su algoritmo de planificación tiene como prioridad el proporcionar un eficaz tiempo de respuesta a procesos interactivos, que lo convierte en un sistema de tiempo compartido. El algoritmo que usa este sistema es el de Round-Robin con colas múltiples en donde cada una de estas colas tiene asignado un nivel de prioridad, este nivel de prioridad es alto cuando su valor es más bajo y cuando el valor es alto el nivel de prioridad disminuye, una cola representa una lista enlazada de los procesos aptos para ejecutarse en donde estos comparten el mismo nivel de prioridad. A los procesos que se van a ejecutar se les asigna un tiempo de CPU denominado quantum. Un proceso se ejecuta hasta que consume su quantum de tiempo o se bloquea voluntariamente, a duración del quantum suele ser de 100 milisegundos. El algoritmo de planificación de procesos que usa este sistema es el siguiente: Las prioridades de los procesos que están listos para ser ejecutados y asignados entre las diferentes colas son calculadas constantemente en periodos de 1. Cada décima de segundo, el planificador selecciona el proceso de mayor prioridad y este es asignado a la CPU. Si un proceso consume su quantum de tiempo es colocado al final de su cola de prioridad.
Investigación – Análisis del sistema operativo iOS –2014
Si un proceso pasa al estado de dormido durante su quantum de tiempo, el planificador selecciona inmediatamente otro proceso y le asigna la CPU. Si un proceso acaba una llamada al sistema durante su quantum de tiempo y un proceso de mayor prioridad está listo para ser ejecutado, al proceso de menor prioridad sale de la CPU y se le asigna el espacio al de mayor prioridad. Cada vez que se produce una interrupción del reloj del sistema (tick de reloj), el contador del uso de CPU del proceso se incrementa
Fig 3.3. Esquema de prioridades en UNIX
iv. Comunicación entre procesos UNIX debe establecer ciertos mecanismos de comunicación entre procesos (IPC): Cola de mensajes: es una manera de comunicación que permite enviar mensajes de un proceso a otro. Cada proceso tiene asociada una cola de mensajes, que funciona como un buzón. Las operaciones básicas que realiza son: o Msgctl.- Control o msgget.- Crear / acceder o msgrcv.- Recibir mensajes o msgsnd.- Enviar mensajes Memoria compartida: es un modo de compartir datos en un fragmento de memoria al que varios procesos pueden acceder. Dentro de UNIX, el uso de memoria compartida, es la forma más rápida de comunicación, siendo un bloque de memoria virtual que es compartido por varios procesos; los mismos que pueden escribir o leer sobre la memoria compartida. Las operaciones fundamentales que UNIX define son: o Shmat.- Vincula la memoria al proceso o Shmctl.- Realiza el control o Shmdt.- Separa memoria al proceso o shmget.- Crear / iniciar / acceder Semáforos: es una herramienta de concurrencia que permite sincronizar varios procesos. Un semáforo debe contar de un valor de semáforo, un identificador del último proceso que realizó operaciones sobre el semáforo, un número de procesos que esperan que el semáforo sea mayor que su valor actual y un número de procesos que esperan que el valor del semáforo sea cero. Además UNIX define tres operaciones básicas: o semget.- Crea o toma control de un semáforo
o
semctl.- Realiza operaciones de lectura y escritura del estado del semáforo, así como también la destrucción del semáforo. o semop.- Realiza operaciones de incremente o decremento con bloqueos. Señales.- Es un mecanismo para comunicar a un proceso que cierto evento a ocurrido y por lo tanto debe ser atendido. Un manejador de la señal es una subrutina encargada de atender la recepción de una señal por parte de un proceso. Cuando un proceso define un manejador se indica que se ha capturado la señal. Las posibles señales son: o SIGHUP.Usualmente para releer configuración o SIGKILL.- El kernel destruye el proceso o SIGTERM.- Terminación "elegante", en general termina enviándose un KILLL a sí mismo o SIGSTOP.- El kernel pasa el proceso a stopped o SIGCONT o SIGUSR.- Definidas por el usuario o más bien por quien programó el proceso. Sockets.- Socket es punto por el cual se pueden comunicar dos procesos. Éstos se pueden crear y destruir de forma dinámica.
Fig 3.4. Comunicación mediante Sockets
e. INTERBLOQUEO En la mayoría de Sistemas Operativos, en nuestro caso UNIX, solo se ignora el problema justificando que la mayoría de los usuarios preferirían un bloqueo activo ocasional (o incluso un interbloqueo) en vez de una regla que restrinja a todos los usuarios a un solo proceso, un solo archivo abierto, y sólo una cosa de todo. El método que se utiliza para manejar el problema de bloqueos mutuos en UNIX es:
i. El algoritmo del avestruz Este método ignora el problema y pretender que los bloqueos mutuos nunca ocurren en el sistema.[11] El método del avestruz es muy sencillo, consiste en agachar la cabeza y no hacer nada por el problema. Para omitir el interbloqueo se deben tener en cuenta los siguientes factores: Número de veces que ocurre el interbloqueo. Gravedad de ocurrencia del interbloqueo. Coste de las consecuencias. Coste, en caso de hacer algo.
Investigación – Análisis del sistema operativo iOS –2014
f. GESTIÓN DE MEMORIA La gestión de memoria que se tenga en Unix es totalmente dependiente del hardware del dispositivo, en este sistema la gestión de memoria se lleva a través de la paginación por demanda junto con swapping de procesos. [12][13] La paginación hace uso de las tablas de páginas, un descriptor de bloque en donde se guarda la información que referencia a la página en memoria de tal manera que se pueda acceder a ella, los marcos de página que almacenan la información de cómo se encuentra la página es decir el estado que tiene esta y además de utilizar la cantidad de procesos que referencian al marco, esta cantidad es de gran utilidad para determinar el estado de una página.
g. GESTIÓN DE ARCHIVOS Todo elemento se representa en forma de archivo y esta ordenado en estructura jerárquica en la cual la base o raíz, se escribe así: “/”
i. Archivos y Directorios. Para escribir el nombre de un archivo se puede utilizar cualquier carácter a excepción de ‘’/’’, ya que tiene un significado especial. Además no está permitido usar caracteres especiales, acentos, espacios en blanco ni caracteres como: ¡ # & <> @ .
ii. Tipos de Archivos en UNIX: [16]
Fig 3.5. Transición de estados y envejecimiento de una página [14]
El sistema se encarga de definir aquellos marcos que se encuentras libres, estos marcos son los que no han sido asignados a ningún proceso lo cual permite que puedan albergar cualquier proceso. En el sistema pueden ocurrir ocasiones en donde, la demanda de procesos es alta, entonces el paginador no es capaz de asignar marcos libres a una velocidad eficiente, en estos casos interviene el swapping que es el encargado de transportar un proceso de la memoria principal a la memoria secundaria, cuando la memoria principal está disponible entonces los procesos pasan de la memoria secundaria a la principal para ser ejecutados. Para producir un intercambio se toman en cuenta diferentes aspectos sobre el estado del proceso, en donde se considera su prioridad, el tamaño que tiene el programa y la cantidad de tiempos que estos llevan albergados en memoria. [14]
Archivos Ordinarios: O regulares, contienen la información con la que trabaja cada usuario. Se pueden crear, modificar, borrar, etcétera. Enlaces: son archivos especiales que permiten que varios nombres o enlaces se asocien a un único archivo. Enlaces físicos (vínculos físicos). El vínculo es un segundo nombre que hace referencia a un archivo, pero no es en sí el archivo. Sirve para localizar el fichero en su ubicación actual, pero no es el archivo real puede ser utilizado por otros usuarios. Enlaces simbólicos (vínculos simbólicos): Se utilizan para asignar más de un nombre a un archivo. No sirven para directorios, sólo contiene el nombre de otro archivo. Un enlace simbólico hace referencia al nombre de otro archivo. Se utiliza el parámetro –s. Directorios: Archivos especiales que contienen referencias a otros archivos. Contienen información sobre: archivos ordinarios, subdirectorios, vínculos, etc. Archivos especiales (de dispositivo): utilizados para acceso a periféricos. Cada dispositivo de E/S está asociado a un archivo especial.
iii. GESTOR DE ARCHIVOS PARA IOS: FILES APP Files App es un gestor de archivos para que nos permite centralizar todos los archivos del dispositivo de Apple en un solo lugar, en donde se puede definir carpetas, abrir los archivos, agregar contenidos desde el ordenador y volverlos a transferir dela misma manera. Permite renombrar archivos, moverlos, copiarlos o crear carpetas para clasificarlos de una mejor forma. [17] Files App ha sido desarrollado por Sonico Mobile, es compatible con varios tipos de formatos tanto para imágenes, archivos multimedia, documentos e inclusive código de programación.
II.
Fig 3.6. Intercambio o Swapping de un proceso [15]
CONCLUSIONES
La industria móvil revolucionó gracias al origen y evolución del sistema operativo iOS, que nació de las manos de Steve Jobs, dando inicio a una generación nueva y completa de dispositivos que se siguen desarrollando hasta la actualidad.
Investigación – Análisis del sistema operativo iOS –2014 Este sistema operativo, que originalmente se llamó iPhone OS, fue avanzando con el pasar de los años, incluyendo en cada una nuevas características, así como también corrigiendo errores, que cada versión tenía, actualmente existe la versión iOS 7.1, la cual posee mejoras en su interfaz, correcciones de algunos errores, nuevas características, introduciendo así una nueva actualización del sistema operativo, y logrando en cada una, versiones más completas y aptas para el mercado cambiante en el que vivimos. iOS es un sistema operativo cuyo corazón se centra en UNIX, basado en ello, dentro de su gestión de procesos, éste posee nueve estados de un proceso, además de mencionar que dichos procesos se pueden ejecutar en dos niveles: modo kernel y modo usuario, en el cual se realiza una ejecución del proceso sin ninguna restricción (modo privilegiado) o una ejecución en modo normal, respectivamente. UNIX utiliza un planificador de procesos a corto plazo, manejando dicha planificación con un algoritmo Round-Robin con colas múltiples en donde cada una de estas colas tiene asignado un nivel de prioridad. Otra de las características importantes es la sincronización de procesos que este sistema operativo posee. Utiliza distintos mecanismos de comunicación entre procesos como: Semáforos, sockets, colas de mensajes, memoria compartida; en donde cada mecanismo posibilita la sincronización entre de varios procesos.
III.
REFERENCIAS
[1]. G. Fernández, iOS, Todo lo que siempre has querido saber sobre tu iPhone y iPad, 2013. [2]. M. Michán, «La evolución de iOS desde 2007 hasta la actualidad,» Applesfera, 2013. [En línea]. Available: http://goo.gl/tJ7AE8. [3]. R. Ritchie, «iOS,» iMore, 2014. [En línea]. Available: http://www.imore.com/ios. [4]. F. Ruiz, «iOS: El sistema operativo móvil de Apple.,» Culturación, 2012. [En línea]. Available: http://goo.gl/v4z52e. [5]. W. Bellisle-Pio, P. Technologies y W. Auburn, «Ventajas y desventajas del sistema operativo Unix,» 2012. [En línea]. Available: http://www.ehowenespanol.com/ventajasdesventajas-del-sistema-operativo-unixlista_104966/. [6]. José Arabia, Laura González, Lucia Huergo, «Tecnología iOS,» Google Sites, [En línea]. Available: http://goo.gl/Q4tq7E. [7]. U. d. Almeria, «Diseño de sistemas operativos. Gestión de memoria.,» Universidad de Almeria, [En línea]. Available: http://www.ual.es/~acorral/DSO/Tema_2.pdf. [8]. Universidad Politecnica deCatalunya, «Gestión de Procesos,» [En línea]. Available: http://studies.ac.upc.edu/FIB/ProSO/SO_91/soprocesos.pdf. [9]. N.N, «Concurrencia UNIX: hilos POSIX» [En línea]. Available: http://www.infor.uva.es/~benja/creacion- hilos.html. [10]. N.N, «Curso de Administración UNIX. Procesos,» [En línea]. Available: http://iie.fing.edu.uy/ense/asign/admunix/procesos. htm.
[11]. A. Tanenbaum y A. Woodhull, Sistemas Operativos Diseño e implementación., México: Prentice-Hall, 2006. [12]. F. Serrano, «Memoria, gestión de procesos en los sistemas operativos,» [En línea]. Available: http://openaccess.uoc.edu/webapps/o2/bitstream/1 0609/8179/1/fserranocaTFC0611.pdf. [13]. J. Morera y J. Perez, Conceptos de sistemas operativos, Madrid: Universidad Pontifica Comillas, 2002. [14]. A. Lafuente, «Gestion de memoria,» Universidad del País Vasco, 2009. [En línea]. Available: http://www.sc.ehu.es/acwlaroa/SO2/Apuntes/Cap4. pdf. [15]. W. I. UTFSM, «Swapping y esquemas de asignación,» [En línea]. Available: http://wiki.inf.utfsm.cl/index.php?title=Swapping_y_ esquemas_de_asignaci%C3%B3n. [16]. McGraw-Hill, «Sistema operativo multiusuario Unix/Linux. Gestión de archivos, directorios y usuarios» [En línea] Available: http://www.mcgrawhill.es/bcv/guide/capitulo/8448199626.pdf [17]. F. Doutel, «Files App, un gestor de archivos para iOS: A Fondo» [En línea] Available: http://www.applesfera.com/aplicaciones-ios-1/filesapp-un-gestor-de-archivos-para-ios-a-fondo