Si buscas hosting web, dominios web, correos empresariales o crear páginas web gratis, ingresa a PaginaMX
Por otro lado, si buscas crear códigos qr online ingresa al Creador de Códigos QR más potente que existe


¿Qué es Darwin?

Darwin es la parte open source de Mac OS X que han desarrollado los ingenieros de Apple. Darwin consta de multitud de paquetes (Compiler Tools, Kerberos, Open Directory, X11, CUPS, XNU...).

 Recordemos que OS X se basa en el núcleo Mach . Ciertas partes de FreeBSD 's y NetBSD 's aplicación de Unix fueron incorporados en NeXTSTEP.
 

¿Qué es XNU?
 

Un paquete importante de Darwin es el núcleo de Mac OS X, el cual se llama XNU y es Híbrido (XNU no UNIX). Dentro de Darwin encontramos el paquete XNU con el código fuente tanto para x86 como para PowerPC  y  ARM.

Las principales partes que componen XNU son básicamente dos: Mach 3.0, un microkernel desarrollado en la Universidad de Carnegie Mellon, y el núcleo BSD 4.4 (Berkeley Software Distribution) de FreeBSD.

XNU es el kernel que Apple Inc. ha adquirido y desarrollado para su uso en el OS X e iOS sistemas operativos y fue publicado como software libre y de código abierto como parte del sistema operativo Darwin . XNU es un acrónimo de X No es Unix .

Originalmente desarrollado por NeXT para el sistema operativo NeXTSTEP, XNU era un núcleo híbrido que combinaba la versión 2.5 del kernel Mach desarrollado en la Universidad Carnegie Mellon con componentes de BSD 4.3 y una API orientada a objetos para la escritura de drivers llamados Kit de controladores.

Después de que Apple adquirió NeXT, el componente de Mach fue actualizado a 3.0, los componentes de BSD se mejoraron con el código del proyecto FreeBSD y el Kit de controladores proyecto fue reemplazado con un C++ API para escribir drivers llamado Kit I/O.
 

Descripción

Al igual que otros núcleos modernos, XNU es un híbrido, que contiene las características de ambos núcleos monolítico y microkernel, tratando de hacer el mejor uso de las tecnologías.

Actualmente, XNU se ejecuta en ARM, IA-32 y procesadores basados en x86-64 y en modelos SMP.

 

XNU consta de seis componentes principales:

Mach El "núcleo del núcleo" XNU. Realiza las operaciones críticas de un microkernel, como son la gestión de procesador, la gestión de memoria, la gestión de procesos e hilos (protección de memoria, scheduling), soporte para el reloj real-time (p.e. usado por las aplicaciones multimedia) y el soporte para depuración del kernel.

Mach es un núcleo de sistema operativo desarrollado en la Carnegie MellonUniversity (CMU) para soportar la investigación de sistemas operativos, principalmente computación distribuida y paralela. El proyecto en CMU se ejecutó desde 1985 hasta 1994.

Mach se desarrolló con la premisa de que todos los sistemas operativos modernos comparten una serie de características en común, o son deseadas si es que no las tienen aún. Éstas incluyen:

Soporte para múltiples aplicaciones usando multitarea.

Hilos, los cuales pueden ser pensados como las partes de una aplicación, o mini-aplicaciones cuando hay multitarea.

Soporte multi-procesadores, en una máquina única o sobre una red.

Comunicaciones interprocesos, enviando mensajes directamente entre aplicaciones.

 

Protección y seguridad de memoria

Aunque el microkernel Mach 3.0 fue el núcleo en el que se basaron los ingenieros de Apple, XNU no es en sí un microkernel puro, ya que su espacio de memoria está compartido con una parte de BSD y con las KernelExtensions.

BSD usa una capa por encima de Mach que permite a los programadores usar las conocidas llamadas al sistema POSIX de los sistemas UNIX. Estas funciones nos permiten entre otras cosas la gestión de procesos por ID, dar permisos a estos procesos, gestión de señales, o el uso de sockets BSD. La principal ventaja que aporta BSD es que permite migrar fácilmente aplicaciones UNIX a Mac OS X.

KernelExtensions (también llamados kexts) Son bundles que extienden la funcionalidad del núcleo de Mac OS X y que se pueden cargar y descargar dinámicamente. Dentro del bundle encontramos el kernelmódule (también llamado kmod) que es una imagen binaria Mach que se instala en el kernel. Los kext se programan en C. Para aprender a desarrollar KernelExtensions, puede consultar:

KernelExtensionsProgrammingTopics

I/O Kit Proporciona un framework C++ para el desarrollo de drivers de dispositivos mediante kexts. En concreto, usa un subconjunto del lenguaje C++ llamado Embedded C++. Un I/O Kit driver es una kext que, en vez de estar programada en C, está programada en Embeded C++. El I/O Kit está formado por tres componentes principales:

Families. Define una colección de abstracciones software comunes a todos los dispositivos de una categoría. Apple proporciona familias para protocolos como USB, SCSI y FireWire, así como para dispositivos de almacenamiento y frame buffers. Nosotros debemos en general basarnos en las familias ya hechas, y no crear nuevas familias.

Nubs. Es un objeto que representa un dispositivo o servicio lógico (p.e. un bus, un disco, una partición de disco o el teclado).

Drivers. Es un objeto que se encarga de gestionar una determinada pieza hardware, implementando las operaciones de E/S para ese dispositivo. Mac OS X ya proporciona una colección de drivers que gestionan los dispositivos más comunes, como puedan ser discos duros o teclados. Si un nuevo dispositivo cumple con un estándar industrial, pero tiene más funcionalidad, entonces simplemente tendremos que crear una subclase que maneje esas características adicionales.

© 2024

22420