This article presents a comparative study of the performance of three operating systems that run on the personal computer architecture derived form the IBM-PC. The operating systems, Windows for Workgroups, Windows NT, and NetBSD (a freely available variant of the UNIX operating system), cover a broad range of system functionality and user requirements, from a single-address-space model to full protection with preemptive multitasking. Our measurements are enable by hardware counters in Intel's Pentium processor that permit measurement of a broad range of processor events including instruction counts and on-chip cache miss counts. We use both microbenchmarks, which expose specific difference between the systems, and application workloads, which provide an indication of expected end-to-end performance. Our microbenchmark results show that accessing system functionality is often more expensive in Windows for Workgroups than in the other two systems due to frequent changes in machine mode and the use of system call hooks. When running native applications, Windows NT is more efficient than Windows, but it incurs overhead similar to that of a microkernel, since its application interface (the Win32 API) is implemented as a user-level server. Overall, system functionality can be accessed most efficiently in NetBSD; we attribute this to its monolithic structure and to the absence of the complications created by hardware backward-compatibility requirements in the other systems. Measurements of application performance show that although the impact of these differences is significant in terms of instruction counts and other hardware events (often a factor of 2 to 7 difference between the systems), overall performance is sometimes determined by the functionality provided by specific subsystems, such as the graphics subsystem or the file system buffer cache.
[1]
Andrew Schulman,et al.
Undocumented Windows : a programmer's guide to reserved Microsoft Windows API functions/ by Andrew Schulman, David Maxey, Matt Pietrek
,
1992
.
[2]
Richard E. Kessler,et al.
Page placement algorithms for large real-indexed caches
,
1992,
TOCS.
[3]
John K. Ousterhout,et al.
Tcl and the Tk Toolkit
,
1994
.
[4]
Brian N. Bershad,et al.
Avoiding conflict misses dynamically in large direct-mapped caches
,
1994,
ASPLOS VI.
[5]
Helen Custer,et al.
Inside the Windows NT File System
,
1994
.
[6]
Sara McMains,et al.
File System Logging versus Clustering: A Performance Comparison
,
1995,
USENIX.
[7]
Trevor N. Mudge,et al.
Instruction fetching: Coping with code bloat
,
1995,
Proceedings 22nd Annual International Symposium on Computer Architecture.
[8]
Dawson R. Engler,et al.
Exokernel: an operating system architecture for application-level resource management
,
1995,
SOSP.
[9]
Sailesh Chutani,et al.
The Episode File System
,
1992
.
[10]
Maurice J. Bach.
The Design of the UNIX Operating System
,
1986
.
[11]
Robert S. Fabry,et al.
A fast file system for UNIX
,
1984,
TOCS.
[12]
Brian N. Bershad,et al.
The impact of operating system structure on memory system performance
,
1994,
SOSP '93.