Comparison of operating system kernels
A kernel is the core component of every computer operating system. While kernels are highly technical in nature, and may be hidden from the user under many layers of software and applications, they do have distinguishing or characteristic features, such as computer architecture, design goals, as well as the more practical features that they provide. A direct comparison of operating system kernels can highlight these design choices, and provide insight into different niches and the evolving technology of kernels.
Comparison criterion
The following tables compare general and technical information for a number of widely used and currently available operating system kernels. Please see the individual products' articles for further information.
Even though there is a large number and variety of available Linux distributions, all of these kernels are grouped under a single entry in these tables, due to differences being of the patch level. See comparison of Linux distributions for a detailed comparison. For Linux distributions that have highly modified kernels, for example Real-time computing kernels, they should be listed separately. There are also a wide variety of minor BSD operating systems, many of which can be found at Comparison of BSD operating systems.
The tables specifically do not include subjective viewpoints on the merits of each kernel or operating system. For this kind of information, please see operating system advocacy.
Feature overview
The major contemporary general-purpose kernels are shown in comparison. Only an overview of the technical features is detailed.
Transport protocol support
Kernel Name | TCP | UDP | SCTP | DCCP |
---|---|---|---|---|
FreeBSD kernel | Yes | Yes | Yes | No |
Linux kernel | Yes | Yes | Yes | Yes |
Windows NT kernel | Yes | Yes | No | ? |
In-kernel server support
Kernel Name | HTTP | FTP | NFS | CIFS |
---|---|---|---|---|
Linux kernel | (TUX web server patch) | (TUX web server patch) | knfsd | No |
Windows NT kernel | HTTP.sys | ? | ? | ? |
Solaris kernel | ? | ? | ? | Yes[3] |
Binary format support
A comparison of OS support for different binary formats (executables):
Kernel Name | a.out | ECOFF | ELF | FDPIC ELF binaries (mmu less) |
flat binaries (superH) |
HUNK | Mach-O | Misc (wrapper based, like interpreters) |
PE | SOM (PA-RISC, HP-UX) |
NLM |
---|---|---|---|---|---|---|---|---|---|---|---|
Amiga Exec | No | No | Yes[4] | No | No | Yes | No | No | No | No | ? |
Linux kernel | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Some[5] | Yes | ? |
MINIX 3 | Yes | No | No | No | No | No | No | No | No | No | No |
ReactOS kernel | ? | ? | ? | ? | ? | ? | ? | ? | Yes | ? | ? |
Solaris kernel | Yes[6] | No | Yes[7] | No | No | No | No | No | Some[8] | No | ? |
Windows NT kernel | No | No | No | No | No | No | No | No | Yes | No | No |
XNU | No | No | No | No | No | No | Yes | No | No | No | ? |
File system support
Physical file systems:
Kernel | Acorn ADFS | Amiga FFS | BeFS | BFS | cramfs | EFS | ext2 | ext3 | ext4 | FAT | FreeVxFS | HFS | HFS+ | HPFS | ISO 9660 | JFFS | JFFS2 | JFS | Minix fs | NSS | NTFS | OCFS | QNX4 FS | System V FS | UDF | UFS | XFS | ZFS | ReiserFS | Reiser4 | Btrfs | HAMMER | Tux3 | exFAT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FreeBSD kernel | No | No | No | No | No | No | Yes | Yes | ? | Yes | No | No | No | No | Yes | No | No | No | No | No | Template:Yes (yellow) | No | No | No | Yes | Yes | Template:Yes (yellow) | Yes | Template:Yes (yellow) | No | No | No | No | ? |
Linux kernel | Template:Yes (yellow) [9] |
Yes | Template:Yes (yellow) | Yes | Yes | Template:Yes (yellow) | Yes | Yes | Yes | Yes | Template:Yes (yellow) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Template:Yes (yellow) | Yes | Template:Yes (yellow) [9] [10] |
Template:Yes (yellow) | Yes | Template:Yes (yellow) [9] |
Yes | Yes | Yes | Yes | Yes | No | No | ? |
MINIX 3 | No | No | No | No | No | No | No | No | No | Tools available, cannot mount | No | No | No | No | Tools available, cannot mount | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
NetWare kernel | No | No | No | No | No | No | No | No | No | Yes | No | No | No | No | Yes | No | No | No | No | Yes | No | No | No | No | Yes | No | No | No | No | No | No | No | No | ? |
ReactOS kernel | No | No | No | No | No | No | No | No | No | Yes[11] | No | No | No | No | Yes[11] | No | No | No | No | No | No | No | No | No | Yes[11] | No | No | No | No | No | No | No | No | No |
Solaris kernel | ? | ? | ? | ? | ? | ? | Yes | ? | ? | Yes | ? | ? | ? | ? | Yes | ? | ? | ? | ? | No | No | ? | ? | ? | Yes | Yes | ? | Yes | No | No | No | No | No | ? |
Windows NT kernel | ? | ? | ? | ? | ? | ? | Template:Yes (yellow) [12] |
Template:Yes (yellow) [13] |
? | Yes | ? | Template:Yes (yellow) [13] |
Template:Yes (yellow) [13] |
? | Yes | ? | ? | ? | ? | No | Yes | ? | ? | ? | Yes | ? | ? | No | No | No | No | No | No | Yes |
XNU | No | No | No | No | No | No | Template:Yes (yellow) [14] |
Template:Yes (yellow) [14] |
No | Yes | No | Yes | Yes | No | Yes | No | No | No | No | No | Template:Yes (yellow) | No | No | No | Yes | Yes | No | Template:Yes (yellow) | No | No | No | No | No | ? |
Supported CPU architectures
kernel | 68k | DEC Alpha |
ARM | ARM (nommu) | HP PA-RISC |
IA-64 | MIPS | MIPS (nommu) | PowerPC | PowerPC 970 |
System/ 390 |
SuperH | SuperH (nommu) | SPARC 32-bit | SPARC 64-bit | SPARC (nommu) | x86 | x86-64 | m68k | m68k (nommu) | Blackfin (nommu) | i960 | MicroBlaze | H8300 | V850 | Xtensa | Xtensa (nommu) | ETRAX CRIS | FR-V | AVR32 | M32R | MN10300 | E1 (nommu) | Nios (nommu) | Nios II | Nios II (nommu) | Intel 8086 (used in pc98) | Intel 80286 | PDP-11 | WDC 65C816 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linux kernel | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | No (dropped in 2.6.x) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No (dropped in 2.6.x) | No | No | No |
DragonFly BSD kernel | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
FreeBSD kernel | No | Yes | Yes | ? | No | Yes | No | No | Yes | No | No | No | No | No | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Yes | ? | ? | ? |
MINIX 3 | No | No | In progress | ? | No | No | In progress | ? | No | No | No | No | No | No | No | No | Yes | In progress | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | ? | ? | No | No |
NetBSD kernel | Yes | Yes | Yes | No[15] | Yes | Yes | Yes | No[15] | Yes | No | No | Yes | No[15] | Yes | Yes | No[15] | Yes | Yes | Yes | No[15] | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Yes | ? |
NetWare kernel | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
OpenBSD kernel | Yes | Yes | Yes | ? | Yes | No | Yes | ? | Yes | No | No | Yes | ? | Yes | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Solaris kernel | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Windows NT kernel | No | NT 5.0 RC1 and below only | No | ? | No | Yes | NT 4.0 and below only | ? | NT 3.51 and NT 4.0 only | No | No | No | No | No | No | No | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Windows CE kernel | No | No | Yes | ? | No | No | Yes | ? | No | No | No | Yes | ? | No | No | No | Yes | ? | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
XNU | No | No | Yes | ? | No | No | No | No | Yes | Yes[16] | No | No | No | No | No | No | Yes | Yes[16] | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
SPARTAN kernel | No | No | Yes | ? | No | Yes | Yes | ? | Yes | In Progress | No | No | No | No | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Supported kernel execution environment
Kernel name | Linux | Darwin | Windows NT kernel | FreeBSD | NetBSD | Solaris | OSF/1 | Amiga Unix | SunOS | BSDI | IBCS2 systems | IRIX | Ultrix | NDIS | SVR4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linux | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
NetBSD | Yes[17] | No? [12]? | No? [13]? | Yes[17] | Yes | Yes[17] | Yes[17] | Yes[17] | Yes[17] | Yes[17] | Yes[17] | Yes[17] | Yes[17] | Yes [14] | Yes |
FreeBSD | Yes[18] | No | No | Yes | No | No | No | No | No | No | No | No | No | Yes[18] | Yes[18] |
Windows NT kernel | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
ReactOS kernel | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Kernel name | Linux | Darwin | Windows NT kernel | FreeBSD | NetBSD | Solaris | OSF/1 | Amiga Unix | SunOS | BSDI | IBCS2 systems | IRIX | Ultrix | NDIS | SVR4 |
Supported cipher algorithms
This may be usable on some situations like file system encrypting.
Kernel name | DES | AES | Blowfish | Triple DES | Serpent | Twofish | CAST-128 | DES-X | IDEA | RC2 | RC5 | SEED | Skipjack | TEA | XTEA | CAST-256 | RC4 | Camellia | Anubis | KHAZAD | Salsa20 | FCrypt |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linux | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | ? | ? | Yes | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Kernel name | DES | AES | Blowfish | Triple DES | Serpent | Twofish | CAST-128 | DES-X | IDEA | RC2 | RC5 | SEED | Skipjack | TEA | XTEA | CAST-256 | RC4 | Camellia | Anubis | KHAZAD | Salsa20 | FCrypt |
Supported compression algorithms
This may be usable on some situations like compression file system.
Kernel name | Deflate | zlib | LZO |
---|---|---|---|
Linux | Yes | Yes | Yes |
Kernel name | Deflate | zlib | LZO |
Supported hash algorithms
Kernel name | CRC32c | MD4 | MD5 | SHA-1 | SHA-256 | SHA-512 | SHA-1 | Michael MIC | RIPEMD-128 | RIPEMD-160 | RIPEMD-256 | RIPEMD-320 | Tiger | Whirlpool | MD2 | GOST | LASH-160 | LASH-256 | LASH-384 | LASH-512 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linux | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | ? | ? | ? | ? |
Kernel name | CRC32c | MD4 | MD5 | SHA-1 | SHA-256 | SHA-512 | SHA-1 | Michael MIC | RIPEMD-128 | RIPEMD-160 | RIPEMD-256 | RIPEMD-320 | Tiger | Whirlpool | MD2 | GOST | LASH-160 | LASH-256 | LASH-384 | LASH-512 |
Supported Bluetooth protocols
Kernel name | ACL | SCO | LMP | HCI | L2CAP | BNEP | RFComm. | SDP | TCP | AVTCP | AVDTP | OBEX | CMTP | HIDP | HCRP | CAPI | PPP |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Linux | ? | Yes | ? | Yes | Yes | Yes | Yes | ? | ? | ? | ? | ? | Yes | Yes | ? | ? | ? |
FreeBSD kernel | ? | ? | ? | Yes | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Kernel name | ACL | SCO | LMP | HCI | L2CAP | BNEP | RFComm. | SDP | TCP | AVTCP | AVDTP | OBEX | CMTP | HIDP | HCRP | CAPI | PPP |
See also
- Comparison of open source operating systems
- Comparison of Linux distributions
- Comparison of BSD operating systems
- Comparison of Windows versions
- List of operating systems
- Comparison of file systems
- Comparison of operating systems
- Operating system advocacy
- Comparison of Windows and Linux
- XvsXP
Footnotes
- ^ The Amiga hardware lacked support for memory protection, so the strong isolation goals of the microkernel design could not be achieved.[citation needed]
- ^ http://www.freebsd.org/doc/en/books/handbook/fs-acl.html
- ^ OpenSolaris Project Weaves CIFS Server Into the Solaris Kernel
- ^ AmigaOS up to version 3.9 could use the ELF format for PowerPC executables and libraries through ppc.library, also known as PowerUP. AmigaOS 4, uses ELF as its native executable format.
- ^ The Linux kernel can recognize PE binaries through binfmt_misc and run them using Wine
- ^ to support SunOS 4.x binaries
- ^ including a Linux compatibility option
- ^ The Solaris kernel can PE using Wine
- ^ a b c experimental and dangerous write support
- ^ write support currently broken
- ^ a b c Version Status - ReactOS
- ^ additional driver needed - see http://www.fs-driver.org/
- ^ a b c additional driver needed
- ^ a b Third party module required. Mac OS X Kernel Module available here
- ^ a b c d e NetBSD Projects - Support for MMU-less systems
- ^ a b kernel is 32-bit code; 64-bit user-mode code is supported
- ^ a b c d e f g h i j NetBSD Binary Emulation
- ^ a b c Linux emulation in FreeBSD - 2 A look inside...