23 de febrero de 2006

Por si alguno todavía piensa que Mac OS X es un microkernel

Ya se ha dicho a lo largo y ancho de internet mil veces y va a parecer que estoy emperrado con el tema, pero puesto que sigo viendo a gente por ahí que no se entera

"xnu is not a traditional microkernel as its Mach heritage might imply. Over the years various people have tried methods of speeding up microkernels, including collocation (MkLinux), and optimized messaging mechanisms (L4)[microperf]. Since Mac OS X was not intended to work as a multi-server, and a crash of a BSD server was equivalent to a system crash from a user perspective the advantages of protecting Mach from BSD were negligible. Rather than simple collocation, message passing was short circuited by having BSD directly call Mach functions. While the abstractions are maintained within the kernel at source level, the kernel is in fact monolithic. xnu exports both Mach 3.0 and BSD interfaces for userland applications to use. Use of the Mach interface is discouraged except for IPC, and if it is necessary to use a Mach API it should most likely be used indirectly through a system provided wrapper API."

Louis G. Gerbarg, Apple Computer, Inc, "Advanced Synchronization in Mac OS X: Extending Unix to SMP and Real-Time"

3 comentarios:

  1. Anónimo4:43 p. m.

    Hola Diego, creo que debo contestarte con esto:

    En concreto esta parte:
    Early versions of Mach had monolithic kernels, with much of BSD's code in the kernel. Mach 3.0 was the first microkernel implementation."

    Luego esto:
    Donde puedes leer esto:
    "Darwin is the open source UNIX-based foundation of Mac OS X. Darwin integrates a number of technologies. Among the most important are the Mach 3.0 microkernel operating-system services, based on 4.4BSD (Berkeley Software Distribution)"

    Venga, nos leemos.

  2. Creo que el que deberías leerlo eres tú, sinceramente..... ;)

    XNU se empezó basándose en un microkernel, y luego se cambió ese microkernel para que se comportara como un kernel monolítico (espacio de direcciones único, posibilidad de pasar referencias a los datos en lugar de sus valores).

    Repito, Mac OS X *NO* es un microkernel. Si alguien quiere intentar probar que un kernel con un
    o sistema de archivos
    o pila tcp/ip

    (por decir dos) dentro de un kernel es un microkernel...que lo intente, allá él 8)

  3. liso, XNU no es un microkenrel, y el enlace que pones lo dice claramente...

    --> XNU's Mach component is based on Mach 3.0, although ___it's not used as a microkernel___

    ---> The BSD subsyst is part of the kernel and so are various other subsystems that are typically implemented as user-space servers in microkernel systems