difference between Linux kernel and UNIX kernel(such as FreeBSD) from programmer's point of view difference between Linux kernel and UNIX kernel(such as FreeBSD) from programmer's point of view unix unix

difference between Linux kernel and UNIX kernel(such as FreeBSD) from programmer's point of view


From a standards point of view there really isn't any difference. Linux is a "POSIX" compliant OS, FreeBSD, Mac OS X and Solaris are also all "POSIX" compliant. In theory at least.

Once you move past the standards there are quite a few differences. Linux as inotify, udev and a bunch of other systems that are unique to it. FreeBSD has kqueue. There are differences in their exact implementations of things like ptrace. For example Mac OS X's ptrace has almost no functionality that you will find in the other Unix systems.

Beyond custom libraries there are differences in development tools. Solaris and FreeBSD have dtrace. Linux has valgrind. Mac OSX has instruments.

What level you are looking at will affect what differences you see or don't see.


For a userland programmer, there is no difference. The userland programming will be coding to a language VM like C and it will be up to the C library routines to translate that into lower level system calls.

Those using other tools such as Perl, Python, Java and so on, are even more removed from the kernel so it will not directly affect them either.

In terms of the kernel programmer, the differences are likely to be significant since the kernels themselves are different. I haven't seen the FreeBSD internals although I've done a fair bit of work inside Linux, so I can't comment intelligently on the low-level differences but (and this final bit is informed opinion, not gospel), since they run independent development streams, the chances of having exactly the same view is small.