Servicios y Llamadas Mac OS X

Llamadas al Sistema El núcleo de Mac OS X (xnu) está basado en los núcleos de los sistemas operativos Mach y FreeBSD, pe

Views 101 Downloads 1 File size 573KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Llamadas al Sistema El núcleo de Mac OS X (xnu) está basado en los núcleos de los sistemas operativos Mach y FreeBSD, pero también incluye parte de MkLinux, NetBSD, OpenBSD y otras tecnologías de Mach. Mac OS X Admite las llamadas del sistema de Mach y BSD Como el núcleo de OS X está basado tanto en Mach cómo en FreeBSD, xnu contiene dos tablas de llamadas del sistema, de Mach y BSD y admite los API de los sistemas BSD y Mach. Esquema de procedimientos del núcleo de Mac OS X.

El kernel de Mac OS X por parte de Mach 3.0, un sistema originalmente basado en una estructura de microkernel. Sin embargo, el uso que se hace de este sistema en Mac OS X no es como microkernel, sino que ha sido adaptado a las necesidades de Mac OS X. En este caso concreto, Mach esta enlazado con el resto de componentes del sistema, de forma que todo ello pertenece a un único espacio de direcciones. Este diseño está motivado por razones de eficiencia, ya que una llamada directa entre módulo directamente enlazados es más rápida que una llamada a procedimiento remoto (RPC) o el envío de un mensaje. En cualquier caso, el kernel de Mac OS X sigue manteniendo un alto grado de modularidad ofreciendo más flexibilidad y sencillez que un kernel puramente monolítico. Dentro del kernel, por tanto, lo que aporta Mach es:  Una API que ofrece canales de comunicación para aplicaciones de usuario.  Soporte para paralelismo, hilos y multiprocesamiento simétrico.  Una plataforma flexible de planificación de procesos, incluyendo su uso para tiempo real.  Un juego completo de primitivas de comunicación entre procesos, como mensajes, llamadas a procedimientos remotos, sincronización y notificación. Estructura general del sistema basado en el sistema operativo Mac OS X.  Un sistema de gestión de memoria.  Gran posibilidad de extensión y portabilidad.  Seguridad y gestión de recursos basada en la abstracción de recursos.

POSIX/BSD  

Provee al Sistema Operativo de la personalidad propia del sistema Macintosh. Manejo de las API encargadas del sistema de ficheros:

Diseño mejorado del VFS  Soporta múltiples formatos de ficheros (HFS, USF, HFS Plus).  Permite compartir ficheros NFS, y da servicio a los serviciosde Telnet, FTP, esto es

algo común en todos los sistemas UNIX. Manejo de las API encargadas del sistema de redes.  Darwin incorpora la pila (stack) de protocolos para redes de BSD, la que es usada

por gran cantidad de equipos que trabajan con el protocolo TCP/IP.  Todo convenientemente actualizado para la nueva versión de protocolo IP,

conocida por Ipv6.  Soporte de AppleTalk.

Qué son los servicios Mac OS Los Servicios del sistema son “pequeños programas” que interactúan con un elemento previamente seleccionado. Gracias a ellos podemos realizar acciones rápidamente y de forma sencilla con sólo hacer clic sobre el archivo con el segundo botón del ratón, seleccionar Servicios y lanzar la acción deseada. Los servicios del menú de sistema de las aplicaciones permiten a los usuarios acceder a la funcionalidad de una aplicación desde otra aplicación cliente. Las aplicaciones anuncian los servicios que proporcionan sobre uno o más tipos de datos. Las aplicaciones cliente (las que usan los servicios) no necesitan conocer por adelantado qué servicios existen en el sistema. La aplicación cliente simplemente necesita indicar los tipos de datos que usa. El menú de servicios se encarga de indicar qué servicios se pueden realizar sobre el tipo de dato que se está usando. Ejemplos de servicios serían la encriptación de un texto, el reconocimiento de caracteres en un bitmap, o generar un mensaje del día. Cuando el usuario está manipulando un tipo de dato (p.e., escribiendo en una caja de texto), el usuario puede ejecutar los servicios que manipulan ese tipo de dato.

Ejemplo de servicios Existen dos tipos de servicios: procesadores y proveedores. Procesadores. Este tipo de servicios reciben datos y realizan una operación sobre ellos. Por ejemplo, si en una aplicación cliente seleccionamos un texto podemos enviárselo a alguien usando Mail como procesador. Si en la aplicación cliente seleccionamos una palabra podemos usar Dictionary para buscar la palabra, tal como muestra la siguiente figura:

Proveedores. Estos servicios devuelven datos a la aplicación cliente que les llama. Por ejemplo, podemos ejecutar desde TextEdit el servicio que captura parte de la pantalla:

Al terminar de ejecutarse el servicio obtenemos la captura de pantalla incrustada en la posición del cursor en TextEdit:

Cómo funcionan los servicios La aplicación cliente y el servicio se ejecutan en procesos independientes. La forma de compartir datos es que las aplicaciones transportan datos a los servicios a través de un portapapeles privado. En caso de tratarse de un servicio proveedor, éste devuelve los datos usando el mismo portapapeles. En concreto el proceso es el siguiente: 1. Al seleccionar el menú del servicio en la aplicación cliente, ésta copia el texto o imagen seleccionado al portapapeles privado y se ejecuta la aplicación que proporciona e servicio (si ésta ya no está ejecutando). 2. La aplicación que presta el servicio lee los datos del portapapeles privado y procesa los datos recibido. Si el servicio es un proveedor: 3. El servicio vuelve a copiar los datos procesados al portapapeles privado 4. La aplicación cliente recoge los datos del portapapeles

Servicios standalone Un servicio se puede ofrecer de dos formas: 

Como parte de una aplicación (p.e., Mail). En este caso la aplicación suele tener la extensión .app y se suele guardar en la carpeta /Applications.



Como un servicio standalone. En este caso la aplicación no tiene interfaz de usuario y se limita a proporcionar el servicio. Las aplicaciones standalone suelen tener la extensión .service y se guardan en la carpeta /Library/Services (puede ser que tengamos que crear esta carpeta). Un ejemplo de servicio standalone es SymbolycLinker, una aplicación que extiende Finder para crear enlaces simbólicos blandos UNIX.

Habilitar/deshabilitar servicios No todos los servicios existentes están habilitados. Algunos se habilitan por defecto y otros tenemos que habilitarlos en System Preferences | Keyboard Shortcuts | Services. Como muestra la siguiente figura, estos servicios se agrupan por tipo.

Cómo se declara un servicio Las aplicaciones que proporcionan un servicio pueden estar instaladas en cualquier lugar del disco duro. Launch Services se encarga de identificar que una aplicación proporciona servicios consultando su fichero Info.plist. En base a esta información Mac OS X rellena el menú de servicios de las aplicaciones clientes. La siguiente figura muestra la entrada NSServices de la aplicación Dictionary. Esta es la entrada que usan las aplicaciones para indicar los servicios que prestan a otras aplicaciones clientes. Básicamente la entradaNSServices es un array de objetos NSDictionary. Cada servicio se describe en un objeto NSDictionary mediante una serie de claves y valores.