Welcome!
What you see below is a wiki, which is a special kind of website YOU can edit!
Take a tour to see what you can do, or get a wiki yourself!

Kernel Comparison for Linux (2.6.18) verses Windows (2003 R2)

Kernel Burning Edge

This aims to be the most comprehensive kernel comparison of the latest most popular Unix style kernel verses the latest most popular current kernel. A kind of kernel comparison FAQ.
In Q4 2006, this means Linux 2.6.18, 2.6.19 kernel verses Windows Server 2003 R2 kernel.
In Q1 2007, this means Linux 2.6.20 kernel verses Windows Vista kernel. Johnathon Weare

Top Kernel Comparisons

Windows Linux Solaris FreeBSD OS X
New features2003SP2 vs. Vista vs.2.6.19
This page2003 R2 vs.2.6.18
Overview2003 R2 vs.2.6.18 vs.10 vs.6.1
Linux OSX2.6 vs.10.4
Linux OSX2.6.8 vs.10.3.7
Solaris Linux FreeBSD 2.6 vs.10 vs.5.3
Solaris Linux2.6 vs.10
Linux2.6.4 vs. 2.4.25
2000 Linux FreeBSD2000 vs.2.2 vs.4
Linux FreeBSD2.2 vs.4.1

Also see

Kernel New Features Comparison 2.6.19 2.6.20 2003SP2 Vista
History
Better in other Kernels / OS
Security Hardened Systems
General OS Flexibility
Filesystems


Current Kernel

Current Kernel Linux Windows
OS2.6.18Server 2003 R2
VersionLinux 2.6.18.xNT 5.2.3790
Release DateQ3 2006Q4 2005

Architecture

Architecture (kernel) Linux Windows
monolithic (#1, #2)YY
i.e. kernel protection from drivers (#1, #2)NN
Architecture (OS API)
OS APIs - in user space (built-in) (#1, #2)NY
OS APIs - POSIX API (built-in)YY
OS APIs - Linux API (POSIX superset) (built-in)YN
OS APIs - Win32 API (built-in)NY
OS APIs - Win32 API - Wine (add-on)Y-
OS APIs - OS/2 API (built-in)NY
Architecture (graphics)
layered graphics systemYN
modular graphics systemYN
network transparent windowing systemYN
graphics system user mode (drivers)YN
graphics system user mode (system)YN
windowing system user mode (interface)YN (Y some)
graphics system only user privileges (drivers)NN
windowing system only user privileges (system)NN
windowing system only user privileges (interface)YN
Architecture (drivers)
i.e. drivers user space (exceptions below) (#1, #2)NN
exceptions - user space drivers - USB (#157, -)YN
exceptions - user space drivers - printingYN
exceptions - user space drivers - FUSEYN
exceptions - user space drivers - Graphics - see below (#159, #160)YN

Development Model

Development Model (kernel) Linux Windows
development modelopen sourceclosed source
development cycle time (#89, #90)3 months12 months (6-48 months)
Development Model (drivers)
development modelopen sourceclosed source
development model - exceptionsfew binary drivers-
constant kernel ABINY
drivers in kernel source treeYN
drivers in kernel source tree - exceptionsfew binary drivers-
binary driver testing (as part of release)N (few)Y

Source Code

Source Code (no drivers) Linux Windows
language - C (#411, #412)YY
language - Assembly (#411, #412)YY
language - SEH (#411, #412)NY
language - VEH (#411, #412)NY
language - no C++ (#411, #412)YN
language - C proportion (#57, #58)94% +-3%60% +-25%
compiler (#41, -)gccclosed
compiler - additional (#41, -)-closed SEH/VEH compiler
compiler version (#41, -)3.2-4.x (latest best)closed
compiler - alternative (not recommended)Intel icc-
kernel - size Source_lines_of_code (SLOC) (no drivers) (#7, #8)3.5M +-0.5M7.5M +-2.5M
Source Code (drivers)
language - C (#411, #412)YY
language - Assembly (#411, #412)YY
language - SEH (#411, #412)NY
language - VEH (#411, #412)NY
language - no C++ (#411, #412)YN
drivers proportion of total (#51, #52)50%40% +-20%
drivers proportion of total bugs (#51, #52)85%75% +-20%
Source Code (kernel + drivers)
language - C proportion (#57, #58)94% +-3%70% +-25%
kernel space Source_lines_of_code (SLOC) (with drivers) (#3, #4)6M +-2M25M (+15M -5M)
kernel + user space Source_lines_of_code (SLOC) (with drivers) (#3, #4)6M +-2M30M +-10M
average bug error rate per line (#5, #6)0.02%1.2% (0.21%-2.5%)
i.e. estimated kernel space bugs total (#3 * #5, #4 * #6)1200300000 (53000-630000)
i.e. estimated kernel + user space bugs total (#3 * #5, #4 * #6)1200360000 (63000-750000)

Boot Image

Boot Image Linux Windows
boot switching between uniprocessor/multiprocessor optimised images (#67, #68)YY
boot self patching between uniprocessor/multiprocessor optimised images (#?, #?)YN
runtime loadable modulesYY
boot image file - uniprocessor (#19, #20)vmlinuzNTOSKRNL.EXE
boot image file - multiprocessor(same file as above)NTKRNLMP.EXE
boot image file - uniprocessor, PAEanother fileNTKRNLPA.EXE
boot image file - multiprocessor, PAE(same file as above)NTKRPAMP.EXE
Kernel mode (size)
boot image filesize - uniprocessor (#19, #20)2.3MB2.4MB
boot image - kernel mode additional files HAL.DLL (#21, #22)-0.5MB
boot image - kernel mode additional files GDIPLUS.DLL-1.7MB
boot image - kernel mode additional files-?
boot image total file sizes (no drivers, GDI+, uniprocessor) (#17, #18)2.3MB>4.6MB
Kernel + user mode (size)
boot image - user mode additional files NTDLL.DLL (#23, #24)-0.7MB
boot image - user mode additional files WIN32K.SYS (#25, #26)-1.7MB
boot image - user mode additional files KERNEL32.DLL (#29, #30)-1.0MB
boot image - user mode additional files CSRSS.EXE (#27, #28)-0.7MB (not counted)
boot image total file sizes (no drivers, GDI+, uniprocessor) (#17, #18)2.3MB>8.0MB

Hardware Architectures

Hardware Architectures (PC) Linux Windows
PC x86YY
PC AMD64YY
PC IA-64YY
Hardware Architectures (other)
AlphaYN
PPCYN
PPC64YN
SPARC32YN
SPARC64YN
ARMYN
HP PA-RISCYN
Motorola 680x0YN
MIPSYN
MIPS (DEC)YN
PowerPCYN
IBM S/390YN
othersYN

Graphics

Graphics (performance) Linux Windows
direct graphicsYY
driver speed (subjective, in general)okgood
driver features (subjective, in general)okgood

Process Management

Process Management (general) Linux Windows
process - nomenclaturetaskcontainer
process - holds address spaceYY
process - holds handle tableYY
process - holds statisticsYY
process - holds at least one threadNY
parent-child relationshipYN
Process Management (thread)
thread model (#171, -)1×1m×n
i.e. preemptive thread scheduling (-, #174)NY
threads are basic scheduling unitsYY
fibersYY
fibers - better than just by sharing handle table, PID, address spaceNY
POSIX Threads (built-in) (#101, #102)YN
POSIX Threads (add-on) (#101, #102)-Y
Process Management (performance)
process cheap (#131, #132)YN
thread cheap (#131, #132)YY
fiber cheap (#131, #132)YY

Scheduling

Scheduling (general) Linux Windows
O(1) schedulerYY
pre-sorted queuesYY
queue per processorYY
reentrantYY
preemptible user modeYY
preemptible kernel modeYY
Scheduling (classes)
scheduling classes42
1. Normal (dynamic) priorities39 "100-139"15 "1-15"
2. Real Time FIFO (fixed) priorities100 "0-99"16 "16-31"
3. Real Time Round Robin (fixed) priorities100 "0-99"0
4. Batch (IDLEPRIO) (fixed)39 "100-139"0
scheduling priorities ranked most favoured->leastLow->HighHigh->Low
Scheduling (dynamism)
priority dynamism - use timeslicego up (decay)-
priority dynamism - do not use timeslicego down-
priority dynamism - on wakeups-get boosted
priority dynamism - general-never lowered
Scheduling (timeslice)
timeslice runtime configurable (default) (-, #332)NY (Server or Client)
timeslice - uniprocessor Client (default) (#331, #332)100ms20ms, 40ms, 60ms
timeslice - uniprocessor Server (default) (#331, #332)100ms120ms
timeslice - multiprocessor Client (default) (#331, #332)100ms30ms, 60ms, 90ms
timeslice - multiprocessor Server (default) (#331, #332)100ms180ms
timeslice - uniprocessor Client (range) (#331, #332)10ms-200ms10ms-120ms
timeslice - uniprocessor Server (range) (#331, #332)10ms-200ms120ms
timeslice - multiprocessor Client (range) (#331, #332)10ms-200ms15ms-180ms
timeslice - multiprocessor Server (range) (#331, #332)10ms-200ms180ms
timeslice vary - entire range - priority, interactivity (#, #)YN
timeslice vary - user setting, window boost (#, #)NY
Scheduling (performance)
i.e. process minimum CPU (1 maximum vs 1 minimum)4.8%7.7%
scheduling latency (average) (#201, #202)0.009mS2mS (old data)
scheduling latency (worse) (#203, #204)0.3mS16mS (old data)
Scheduler (prioritising tweaks)
priority interactive boost/CPU bound cut-5 to +5 (batch = +5)?
focused window process boost (-, #342)NY
focused window process boost - timeslice change (-, #342)-3x
i.e. Interactive Process boostYY

Power Management

Power Management Linux Windows
idle processYY
CPU frequency throttling (ACPI)YY
CPU voltage throttling (ACPI)YY
peripheral sleep (ACPI)YY
system sleep - software suspend to RAM (ACPI)YY
system sleep - software suspend to diskYY

Multiprocessor Support

Multiprocessor Support (architecture) Linux Windows
SMPYY
scheduler SMP processor affinityYY
NUMAYY
scheduler NUMA node affinityYY
NUMA Memory Manager Support (#421, -)YY
Hyperthreading (SMT)YY
scheduler Hyperthread affinityYY
scheduler favours physical CPU over HyperthreadYY
MulticoreYY
scheduler Core affinityYY
scheduler favours physical CPU over MulticoreYY
Multiprocessor Support (limits)
CPUs 32bit (#47, -)unlimited32
CPUs 64bit (#47, -)unlimited64
Multiprocessor Support (load balancing)
scheduler load balancing - initialYY
scheduler load balancing - rebalanceYN
scheduler load balancing - smpniceYN
scheduler load balancing period (#151, -)200msN

Virtual Memory Management

Virtual Memory Management (general) Linux Windows
per-CPU kernel memory buffersYY
lock pages in memoryYY
copy-on-write executables (COW) (#81, #82)YY
demand paging (#311, #312)YY
Virtual Memory Management (limits)
split user-mode/kernel-mode 32bit 1GB/3GBYN
split user-mode/kernel-mode 32bit 2GB/2GBYY
split user-mode/kernel-mode 32bit 3GB/1GBYY
split user-mode/kernel-mode 32bit - option 4GB/4GBYN
i.e. maximum memory per process 32bit3GB 4GB split option3GB
maximum memory per process 32bit (PAE) (#113, #114)N (Y non-standard 64GB)N (Y other editions 64GB)
split user-mode/kernel-mode 64bit (#301, -)8192 PB/8192 PB8192 PB?/8192 PB?
i.e. maximum memory per process 64bit (#301, #302)8192 PB8192 PB?
Virtual Memory Management (performance)
swap usage (subjective)lessmore
Virtual Memory Management (working sets)
working setsglobalper process
working set management uses "clock" algorithmYY
i.e. working set management - no set capYN
i.e. working set management - LRU memory pageused on the entire systemremoved for that process
i.e. working set management - tuner adjusts sets according to memory needs-Y
swapper (#45, -) NN

Physical Memory Management

Physical Memory Management Linux Windows
RAM maximum 32bit64GB4GB
RAM maximum 32bit - option (, other editions) -64GB
i.e. PAE (#111, #112)YN
i.e. PAE - option (, other editions) (#111, #112)-Y
RAM maximum 64bit64GB32GB
RAM maximum - option 64bit (, other editions)?1024GB

Interrupts

Interrupts (hardware clock) Linux Windows
timer interrupt frequency default - uniprocessor Hz (#321, #322)250100
timer interrupt frequency build time configurable - uniprocessor Hz (#321, #322)unlimitedN
timer interrupt frequency - multiprocessor Hz (#321, #322)25067
timer interrupt frequency build time configurable - multiprocessor Hz (#321, #322)unlimitedN
Interrupts (handling)
interrupt handling (top half) (#9,#10)YY
interrupt handling (bottom half) (#11, #12)Y "IRQ/tasklet"Y "DPC"
interrupt classes - "softirq types" (bottom half) (#163, #164)32 (4 used)-
Interrupts (prioritisation)
preemptive interrupt handling (top half) (-, #122)NY
preemptive interrupt handling (bottom half) (-, #122)NY?
interrupt priority levels (IPL) (top half) (#13, #14)132
interrupt priority levels (IPL) (bottom half) (#161, #162)13
Interrupts (performance)
interrupt latency (average) (#155, #156)11uS36uS
interrupt latency (maximum) (#191, #192)1000uS45000uS
Interrupts (scaling)
Adaptive Interrupt Coalescing (#167, #168)YY
Interrupts (multiprocessor)
all CPUs - can take interrupts (#501, #501)YY
all CPUs - interrupt handling (top half) (#501, #501)Y?Y?
all CPUs - interrupt handling (bottom half) (#501, #501)Y?Y?

I/O Management

I/O Management (general) Linux Windows
centred aroundinodefile object
layered I/O modelNY
generic file descriptors (pipes and network connections that act like files)YN
wake-one socket semantics (#501, #501)YY
I/O Management (performance)
zero-copy file sendingYY
I/O Management (vectored)
Scatter/Gather DMAYY
vectored I/O support (#511, #512)YY
asynchronous vectored I/O support (#511, #512)YY
I/O Management (asynchronous)
asynchronous I/O support (#501, #501)YY
asynchronous I/O support - in general (#501, #501)NY
asynchronous I/O support - general technology (#501, #501)AIO (or epoll)completion ports
I/O Management (prioritisation)
I/O timeslices (read) (#43, #44)YN?
I/O timeslices (write) (#43, #44)YN?
I/O bandwidth reservation (read) (#43, #44)NN
I/O bandwidth reservation (write) (#43, #44)NN
I/O priority (read) (#43, #44)YN
I/O priority (write) (#43, #44)NN
I/O priority - scheduling class levels (read) - realtime (IOPRIO_CLASS_RT) (#43, #44)80
I/O priority - scheduling class levels (write) - realtime (IOPRIO_CLASS_RT) (#43, #44)80
I/O priority - scheduling class levels (read) - best effort (IOPRIO_CLASS_BE) (#43, #44)80
I/O priority - scheduling class levels (write) - best effort (IOPRIO_CLASS_BE) (#43, #44)80
I/O priority - scheduling class levels (read) - idle (IOPRIO_CLASS_IDLE) (#43, #44)10
I/O priority - scheduling class levels (write) - idle (IOPRIO_CLASS_IDLE) (#43, #44)10
I/O priority - user control (ionice) (read, write) (#43, #44)YN

Configuration

Configuration Linux Windows
supports PnPYY

Light-Weight Synchronization

Light-Weight Synchronization Linux Windows
critical sections (#501, #501)YY
futexes (prioritise waits) (#501, #501)YN
interprocess (prioritise waits) (#501, #501)YN

Filesystem

Filesystems (all) Linux Windows
Filesystem (caching)
single global common cacheNY
i.e. Virtual File Cache - globalYY
i.e. Virtual File Cache - no user cache used (can cause inconsistencies)NY
directory lookup caching (good caching) (#501, #501)YN
Filesystem (mechanisms)
FUSEYN
LoopbackYN
automounterY (autofs 4)N (Y only network shares)
automounter (obsolete)N (autofs 3)N
Filesystem (best in class only)
general - XFS (#351, #352)Y (native)N (Y with add-on)
general (new) - ZFS (#355, #356)NN
network - NFS 4 (#353, #354)Y (native)N
cross-platform file exchange - FAT32YY (native)
cross-platform network - SMBYY (native)

Networking

Networking (general) Linux Windows
protocols (#55, -)moreless
tcp buffer auto sizingYY
IPv4YY
IPv6YY
Networking (prioritisation)
QoS general (#?, #?)Y?Y?
QoS wifi (#?, #?)Y?Y?

Sound

Sound (performance) Linux Windows
standard audio systemALSADirectSound
handles multiple audio streamsYY
full-duplexYY
SMP, thread-safeYY?
user space software mixingYY?
user space "loopback/snoop" capabilitiesY?
driver features (subjective, in general)okgood
audio latency low (#?, #?)Y?N? (Y with Steinberg's ASIO)
audio video sync accurate (#?, #?)Y?N?

Hardware Support

Hardware Support (PC) Linux Windows
hardware support (new hardware)none-goodok-good
hardware support (old hardware)none-goodnone-good
supported listLDP Suse RHMS
InfiniBandYN (Y other editions)
CPU HotplugYY
RAM HotplugYY
PCI HotplugYY
I/O host bridges Hotplug?N
wireless USBYY
ExpressCardYY
ACPI 3N?N?
ACPI 2Y (only some?)Y (only some?)
ACPI 1YY

Peripheral Support

Peripheral Support (PC) Linux Windows
USB 2.0YY
USB 2.0 benchmark - hardware speed (#423, #424)YN?

Standards Support

Standards Support Linux Windows
standards supporthighlow
POSIXYY
network transparent windowing systemYN

Security

Security Linux Windows
security model - Standard Unix ModelYN
i.e. immunity from viruses (given common usage)YN
security model - ACL (built-in)N (Y some distros)Y
security model - ACL (add-on)Y - SELinux-
security model - Security Modules (#401, #402)Y - LSMY - CAS
user definition - privileges, member groupsYY
security is implemented - any object manager object (files, processes...)NY
security is implemented - free from object-by-object assignmentNY
auditing support (built-in)N (Y option)Y
auditing support (add-on)Y-
NX YY
ASLR YN

OS Security

OS Security (open bugs) Linux Windows
OS bugs Debian 3.1Info

References

#1 monolithic kernel
#2 monolithic kernel aka "hybrid" kernel
#3 estimate based on total SLOC + dependent on driver selection, X not included
#4 estimate based on total SLOC i.e. dependent on driver selection, GDI/GDI+ included
#5 0.016% defect density 2005 survey, 2004 survey, + guess 0.004% increase 2006 update Linux bugs increasing = 0.02%
#6 estimate, based on average of range Software Quality: Why Windows 2000 has 63,000 \"bugs\" and Linux* doesn't - survey 2004 general estimate for commercial software
#7 roughly - depends on options kernel, Microkernel
#8 estimate, based on newsgroup discussions Microkernel
#9 interrupts|interrupts
#10 ISR
#11 interrupts|interrupts
#12 DPC
#13 Interrupt_handler
#14 IRQL
#15 Open source
#16 Closed source
#17 2.3MB vmlinuz from 2.6.14 kernel on Kanotix
#18 >4.6MB=(2.4+0.5+1.7+?)MB , 8.0MB=4.6+(0.7+1.7+1.0)MB Windows 2003 SP1 fix Note - it is not clear which files correspond to kernel mode and user mode.
#19 or bzImage, zImage, vmlinux. 2.6.14 kernel on Kanotix
#20 NTOSKrnl.exe
#21 no known other files
#22 Windows_NT_Startup_Process, Server info
#23 no other known files
#24 Internet Explorer bug,
#25 no other known files
#26 Native API, bugfix
#27 no other known files
#28 csrss.exe
#41 Documentation/Changes kernel change
#43 default=(cpu_nice + 20) / 5 ioprio.txt
#44 Windows Vista: Kernel Changes - I/O, I/O, It's off to work I go...
#45 "swap daemon" is working set trimmer
#47 kernel build option
#51 user space device drivers
#52 estimate, based on #51 but reduced 10% due to larger size of Windows kernel
#55 networking
#57 see #3 - from 2.4.x study
#58 see #4
#67 Linux_2_6_17
#68 boot time flag NT kernel, but always SMP kernel?
#81 Linux
#82 Binding an Executable
#89 kernel changes
#90 Microsoft Windows
#99 IPL
#101 Native POSIX Thread Library (NPTL)
#102 with freeware Open Source POSIX Threads for Win32
#111 PAE
#112 PAE
#113 non-standard extension
#114 Address Windowing Extensions (AWE)
#122 NT RT
#131 Thread
#132 Thread
#151 Linux scheduler
#155 evaluationengineering
#156 36uS 1998 NT Real-Time, older, non-independent result 1995 23uS (mid of 17-30uS) NT RT , and NT latency
#157 user space device drivers
#161 Kernel Analysis HOWTO
#162 Advanced DPCs
#163 Linux Networking
#164 levels used
#167 Linux Networking
#168 [http://www.microsoft.com/technet/interopmigration/unix/sfu/perfnfs.mspx|]
#171 NPTL
#174 W2K thread scheduling
#191 997uS Montevista
#192 45027uS NT RTX realtime performance
#201 Montevista, similar to kerneltrap RT benchmark
#202 outdated benchmark - "few mS" taken as 2mS Michael B. Jones and John Regehr. "The Problems You're Having May Not Be the Problems You Think You're Having: Results from a Latency Study of Windows NT". In Proceedings of the 7th Workshop on Hot Topics in Operating Systems, pages 96-101, March 1999.
#203 Montevista
#204 outdated benchmark - as #202 16ms from "software delays up to 16ms", ignored "hardware delays up to 30ms"
#301 Linux maximum memory per process, Virtual Memory in the IA-64 Linux Kernel
#311 Demand paging
#312 Wake up...
#321 Linux: Changing The Default Hertz (2.6.13 Kernel Release change)
#322 Thread Scheduling (set by HAL not kernel)
#331 Linux Optimization
#332 Thread Scheduling
#342 Thread Scheduling
#351 filesystem comparison
#352 crossmeta ext2, XFS, Reiser add-on
#401 Linux Security Modules (LSM)
#402 CAS
#411 check of the Linux source!
#412 VEH, GDI
#421 What's what in Linux 2.6.16
#423 need better ref than this - linux kernel monkey log
#424 need better ref than this - linux kernel monkey log
#501 Windows vs Linux: A tale of two kernels The original source of information for this page.
#511 Asynchronous I/O and vectored operations, API changes: interrupt handlers and vectored I/O
#512 Inside I/O Completion Ports

Note

  • Note that some of these values apply only for PC x86 systems.
  • A pragmatic approach is used to compare the two kernels. Sometimes one kernel has a parallel outside of the kernel domain, or due to the fact that direct comparison is sometimes impossible or practically infeasible. The best example of this is:
  • Also note that the SLOC calculations are based on data from incompatibly mixed sources - kernel, total OS, drivers, also with a lack of hard data on the Windows side. Also, there are two viewpoints 1. the kernel as a whole (covering all ports, and drivers) 2. a typical kernel (x86 port, typical hardware). Currently, 1. is followed (due to lack of data on 2.) but I think 2. could give more meaningful results for a comparison for real kernel usage, as opposed to theoretical kernel comparison.

More Info

1 TechEd 2004 - Session: Mark Russinovich \"Linux and Windows Kernel Comparison\"
kernel 2.6.18
Windows_2003
Linux_2_6_16
kernel 2.6
Linux 2.6.16
kernel bugs
future Windows graphics kernel
Win source code
OpenBSD
Solaris
Vista
Linux Distributions
Kernel HZ
Splice
threads
filesystem info
Linux RT latency
MontaVista RT
Linux_2_6_18
michaelhorowitz.com
wikipedia
2.6 kernel quality
Con Kolivas
Comparison of Solaris Linux and freeBSD kernels
What's not going into 2.6.18
Linux Interrupts: The Basic Concepts
Microsoft Vista kernel enhancements
RT enhancements to Linux 2.6.18
general OS info
XNU
Comparison of Solaris OS and Linux for Application Developers
AMD Designing for N cores

There have been 37488 pageviews until now.

Vertical Tab Firefox 2.0 Widefox 2.0

Johnathon Weare © Johnny Weare 2006


Page Information

  • 1 hour ago [history]
  • View page source
  • You're not logged in
  • Tags: linux windows kernel new comparison 2.6.18 Server 2003 2003 R2 Windows Vista 2.6.19 2.6.20

Wiki Information

Make your own wiki!

This page is part of a public wiki.

You can make your own free private or public wiki in just a few seconds. Click here, it's as easy as making a peanut butter sandwich!