Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

That doesn't answer my question.

Both Android and OSX are listed under https://en.wikipedia.org/wiki/POSIX#Mostly_POSIX-compliant

What I would like to know is, is there any fundamental difference in how the two have derived from their predecessors, ie. Android kernel from the Linux kernel and OSX's XNU kernel from the NexTSTEP/BSD kernels, specifically in terms of compatibility concerns.

(Edit reply to below: Yes but my understanding is that the Android kernel changed fundamental system calls, such as those used for memory allocation, forcing everything userland to be rewritten. Is the 'two systems' of XNU you describe not, therefore, similar in its effect on compatibility?)



The Linux kernel has only one set of system calls. Everything you can do with Linux, you can do through it's syscall interface. Android doesn't change this, although it ships a different, more minimal libc.

The OSX kernel has two, due to it's bolt-on nature. Mach message passing and BSD system calls. As far as I am aware, the BSD system calls is an emulation layer, and is not entirely complete.

As a user, you don't care; the quirks of both systems are papered over by libc, which does the appropriate syscall dance to create a posix compliant system. (For an example of a Linux quirk, 'exit()' on Linux doesn't actually exit the process, it only exits the current thread).


For a bit of history regarding OS-X which may answer some of your questions, Amit Singh wrote about the history of NEXTSTEP[1] and also about XNU[2].

BTW, Singh's writings regarding OS-X are exceptionally well researched, detailed, and thorough. I highly recommend them for anyone interested in OS-X/XNU internals.

HTH

1 - http://www.kernelthread.com/publications/appleoshistory/7.ht...

2 - http://www.osxbook.com/book/bonus/ancient/whatismacosx/arch_...


I don't know anyone involved, however, one would have to guess that it's a simple matter of people. Apple had people from NeXT. NeXT had people from CMU who worked on Mach. People work with what they are familiar with. Therefore, Apple has Mach.

They could have started from some other kernel. They didn't happen to do that. I don't think it means much.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: