Ir al contenido principal

Gestión de Procesos en macOS

El sistema operativo macOS está diseñado sobre el kernel Darwin, el cual es de código abierto y está basado en una integración entre las tecnologías de Mach y BSD, utilizando diferentes componentes de estos para realizar sus tareas. Para la gestión de procesos, macOS hace uso de su componente proveniente de Mach.

ABSTRACCIONES DE MACH

En macOS, a nivel de procesador se ejecutan las abstracciones propias de Mach, de forma que todas las demás abstracciones (entre estas las de BSD) se “traducen” a la tecnología de Mach. Los principales conceptos lógicos del kernel de Mach para gestión de procesos son:
  • Tarea (task): Una tarea es una “unidad de propiedad de recurso”; podría decirse que es una representación lógica del ambiente de ejecución de los procesos.
  • Hilo (thread): Un hilo es una “unidad de ejecución”; esto significa que representa el conjunto de operaciones que ejecuta el procesador.
  • Procesador (processor): Un procesador es una representación de un procesador físico del computador.
  • Conjunto de procesadores (processor set): Un conjunto de procesadores es una agrupación de procesadores (refiriéndose a la abstracción).
  • Puerto (port): Un puerto es una abstracción de la comunicación entre procesos y recursos.
La API de Mach brinda estas abstracciones en forma de estructuras (structs en inglés).

Tareas e Hilos

Como se expresó anteriormente, una tarea es el ambiente necesario para uno o más hilos; provee a los hilos que contiene los recursos que necesitan. Es una entidad bastante costosa que representa un conjunto de recursos del sistema. Cabe decir que una tarea no vive por sí sola, sino que necesita de algún hilo para ejecutar alguna instrucción. En palabras simples, es el hilo el que ejecuta instrucciones y no la tarea. Un hilo, en cambio, es una entidad barata de crear, sirve como un punto de control para una tarea, y solo puede estar contenido en una única tarea. Cada hilo tiene acceso a los elementos contenidos dentro de la tarea que lo contiene, y estos elementos los comparte con otros hilos dentro de la misma tarea. En un computador con múltiples procesadores se pueden ejecutar varios hilos de la misma tarea en paralelo.
Una tarea almacena los hilos que contiene, y brinda el ambiente de ejecución para sus hilos mediante puertos. Asimismo, cada procesador almacena la información de los hilos que le corresponden en una cola. Las tareas no son asignadas a un procesador, sino a un conjunto de procesadores, el cual tiene, además, su propia cola de hilos, así como la información de los procesadores que le pertenecen. A cada hilo le corresponde una instancia de la estructura machine_thread, la cual contiene información relevante para la ejecución de los procesos, incluido el bloque de control de procesos.
La comunicación entre hilos y recursos se basa en los puertos. El sistema de comunicación de los puertos se basa en un sistema de emisores y receptores, donde algunos puertos se encargan de enviar las señales mientras que otros las reciben. Además de sus propios puertos, cada tarea tiene ciertos permisos de acceso a los puertos de otros elementos del sistema, haciendo el adecuado manejo de los puertos una cuestión importante de seguridad.

GESTIÓN DE CONCURRENCIA

Programación de Procesos

Para realizar la programación de los procesos, macOS tiene definidos 4 tipos de prioridad para los hilos:
  • Normal: Correspondiente a las aplicaciones comunes de usuario.
  • Alta prioridad: Correspondiente a ciertos hilos de mayor prioridad a los normales.
  • Modo de kernel: Correspondiente a hilos esenciales del kernel del sistema operativo.
  • Tiempo real: Correspondiente a hilos cuya ejecución requiere un tiempo específico.
Los niveles de prioridad de cada hilo se clasifican en alguno de estos 4 tipos. macOS gestiona los procesos mediante un conjunto de colas de ejecución, donde se selecciona la cola para un hilo dependiendo de su nivel de prioridad.
Las diferentes API’s del sistema operativo permiten cambiar la prioridad de un hilo (dentro de ciertos límites), cambiar el espacio de memoria disponible para almacenar los resultados de un hilo, e incluso cambiar la metodología de programación misma del hilo, permitiendo elegir entre metodologías tales como FIFO (first in, first out) o RR (round-robin), entre otras.
 

Métodos de Sincronización 

macOS maneja dentro de su kernel dos mecanismos para la sincronización:
  • Semáforos (semaphores): macOS usa los tradicionales semáforos con contador. Cuando un hilo es activado aparece un semáforo disponible, aunque este no se vaya a usar en ese momento. Hay que tener en cuenta que varios hilos pueden acceder a un semáforo, por lo tanto no siempre que un semáforo cambie y esté disponible significa que el hilo se vaya a ejecutar de inmediato; este puede tener un tiempo de reacción.
  • Cerraduras (locks): Son semáforos binarios, donde solo un hilo puede estar haciendo operaciones en él mientras los otros hilos esperan para entrar en él. Existen 3 tipos de cerraduras, las cuales tienen mejor rendimiento que las otras dependiendo de la situación. Las 3 cerraduras son: spinlocks, mutex, read-write locks, spin/sleep locks (este último no está implentado en el kernel de macOS).
 

CIBERGRAFÍA

Comentarios

Entradas populares de este blog

Gestión de Memoria y Archivos en macOS

GESTIÓN DE MEMORIA Al igual que para la gestión de procesos, para la gestión de memoria macOS utiliza su componente proveniente de Mach. macOS se basa en un esquema de memoria virtual, usando un algoritmo tradicional de paginación y conjunto residente. La memoria virtual se compone de objetos de memoria y de objetos de memoria virtual, y la paginación es realizada por un paginador; todas estas son abstracciones de Mach. Un objeto de memoria virtual se compone de muchos objetos de memoria, y mediante estos el paginador almacena los objetos de memoria virtual en las denominadas páginas del sistema. Una página del sistema representa la dirección en memoria virtual (dirección lógica) del objeto. El mapeo de las páginas del sistema a las páginas reales (dirección física) es realizado por un sistema que gestiona las tablas de páginas, los marcos y el búfer de traducción adelantada (TLB) según el hardware específico de cada máquina. El manejo de los objetos de memoria virtual y objetos

Instalación y Características Generales de macOS

Si bien macOS en general se obtiene ya instalado en un ordenador Mac, se ha hecho posible, mediante software de virtualización, la creación de máquinas virtuales que funcionen con este sistema operativo. VIRTUALIZACIÓN E INSTALACIÓN Para esta entrada, se procedió a crear una máquina virtual de macOS High Sierra utilizando el software VirtualBox de Oracle (versión 5.x), y una imagen del sistema operativo preparada previamente. Se trabajó en el sistema operativo Windows 10. Previo al procedimiento de creación de la máquina virtual, es necesario, evidentemente, descargar la imagen e instalar VirtualBox. La versión más reciente de VirtualBox está disponible en el siguiente enlace: https://www.virtualbox.org/wiki/Downloads , mientras que la imagen puede descargarse desde: https://goo.gl/A2KEZg ; la imagen fue particionada en 6 partes utilizando WinRAR. Una vez se han hecho los preparativos, se crea y configura la máquina virtual. Hay ciertas configuraciones especiales que se deben tener

Internet en la Luna?

Gracias a Nokia y Vodafone la luna tendrá red 4G en 2019. Suena loco y extravagante pero es cierto, ya que en 2019 se realizará la misión con el nombre  Mission to the Moon,  a cargo de la ya muy reconocida SpaceX, por lo tanto será la primera misión a la Luna financiada de manera privada. Un desperdició? Pues no, uno de los objetivos de será transmitir toda la misión en directo, ahora no suena tan loco verdad, para la transmisión se van a utilizar dos rover de Audi los cuales tendrán las cámaras para la transmisión. El objetivo de estos rovers es llegar hasta en Apolo 17 de la Nasa, el último vehículo utilizado en la luna. La división encargada de esta loca misión es Nokia Bell Labs, escogida por el grupo alemán Vodafone, esta división será la encargada de crear una red espacial ultra compacta para permitir el tráfico de datos. Se que no soy el único ansioso por ver la luna en HD, si eres uno de ellos puedes ver la noticia con un poco más en información en el link debaj