Comparisons between the Microsoft Windows and Linux computer operating systems are a common topic of discussion among their users. Currently, Windows is the dominant proprietary operating system for personal desktop use (in terms of desktop installations), while Linux is the most prominent free software operating system. Both operating systems not only compete for user base in the personal computer market but are also rivals in the server and embedded systems markets.
The comparisons below reflect three families of Windows operating systems: Windows 9x (legacy), Windows NT, and Windows Embedded. Each family has its own code base and design. The focus of these comparisons is mainly on the NT family.
Linux is available for many types of CPUs: x86, x64, Itanium, MIPS, PowerPC, ARM, and others. Windows NT is available on x86, x64, and Itanium, although Itanium compatible versions of Windows are only sold as servers and x86 is being phased out. Because of the diversity of supported cpu types, Linux finds applications today in routers, set-top boxes, PDAs and mobile phones as well as in servers and desktops. Windows Embedded has a long history, starting with DOS on POS terminals. Microsoft has based many embedded platforms on the core Windows CE operating system, including AutoPC, Windows Mobile, Mediaroom, Portable Media Center, and many industrial devices and embedded systems.
Microsoft Windows dominates in the desktop and personal computer markets with about 90% of the desktop market share, and in 2007, accounted for about 66% of all servers sold (while not necessarily used). In server revenue market share, as of Q4 2007, Microsoft Windows had 36.3% and Linux had 12.7%. As of June 2009, Linux powered 88.6% of the world's most powerful supercomputers. In December 2008, Linux powered five of the ten most reliable internet hosting companies, compared to Windows' one.
Linux and Microsoft Windows differ in philosophy, cost, versatility and stability, with each seeking to improve in their perceived weaker areas. Comparisons of the two operating systems tend to reflect their origins, historic user bases and distribution models. Typical perceived weaknesses regularly cited have often included the poor “out-of-box” usability of the Linux desktop for the mass-marketpoor consumer familiarity with Linux, while Microsoft Windows' main drawback is perceived susceptibility to viruses and malware due to its enormous market share.
Proponents of free software argue that the key strength of Linux is the degree of freedom allowed to the users: "the freedom to run the program [such as Linux]...to study...and change it...the freedom to redistribute copies...[and] improve the program, and release your improvements." Windows embedded devices are often configured without disk storage, and may be configured as a “closed” system that does not allow for end-user extension.
In 2004, Microsoft launched a marketing campaign, "Get the Facts", to encourage users to switch from Linux to its Windows Server System. Microsoft claims that its products have an overall lower total cost of ownership (TCO) than open source programs because of their ease of use, resulting in less work and lower staff costs.
However, a variety of Linux supporters, companies, and organizations, notably Linux distributor Novell, who produces SUSE Enterprise Linux and tech news outlet The Register, dispute Microsoft's figures. One argument supporting the cost-effectiveness of Linux is that although Linux administrators are usually paid somewhat higher salaries than Windows administrators, a competent Linux administrator can take care of more computers than the latter. A study conducted by Chad Robinson, senior research analyst at tech/business researcher Robert Frances Group (RFG), supports this view.
In 2004, The UK's Advertising Standards Authority warned Microsoft that an advertisement using research that claimed "Linux was […] 10 times more expensive than Windows Server 2003", was "misleading", as the hardware chosen for the Linux server was needlessly expensive.
The German Foreign Office said that the cost of open source desktop maintenance is by far the lowest it experienced. The French Gendarmerie reported saving millions on license fees by switching to Linux desktops from Windows XP, following the success of OpenOffice.org roll-outs.
The market share of Linux or Microsoft Windows is difficult to determine as users of the former are usually not required to register with any organization to use their copies; additionally, a large number of unlicensed (illegal) copies of Windows exist. The above desktop usage share data is estimated from web browser user agent strings, rather than actual sales information or detailed surveys. This is highly unreliable for many reasons including, but not limited to, web browsers that do not always provide accurate information to web servers, and selection bias: Different websites attract different audiences that may be more prone to using one OS or another. Frequently web users are forced to lie about their user agent in order to access a site. Also, desktop computers used for other tasks will be given a lower weight than computers mostly used for web-surfing. Microsoft's own numbers for Linux share are higher. More estimates of the market shares are available at Usage share of desktop operating systems. According to a survey by the Eclipse Foundation (an open-source foundation) in 2009, Linux was the most popular deployment choice for developers. There is a shift from Microsoft Windows to Linux and Apple's Mac OS X for their desktop development operating system. 26.9% of the respondents cited Linux as their primary desktop operating system, representing a 7% increase from 2007. Though Windows was still the dominant development OS at 64%, it had decreased 10% from 2007. The most popular Linux variant of choice for development use was Ubuntu, which accounted for over half of Linux respondents. Mac OS X had increased to 6.9% from 3.5% in 2007. 
|Estimated Desktop Usage Share||92.00%||1.02%||January 2010|
|Pre-installation||Pre-installed by default on almost all new desktop PCs||Pre-installed by default on very few new desktop PCs. However, Ubuntu is now available on all System76 computers, some Dell computers, and SUSE Linux Enterprise Desktop on some Lenovo ThinkPads. Recently many more Linux-based low-end consumer laptops have been introduced.||Microsoft's agreement with vendors to sell only the Windows OS is being challenged in court by French consumer rights groups. Such agreements by Microsoft were found illegal in the case United States v. Microsoft.|
|Server revenue market share||7.3%||33.8%||First quarter, 2009|
|Top 500 supercomputer operating system family share||1.0% (absolute 5)||88.6% (absolute 443), the 14 fastest supercomputers run Linux||June 2009|
|Graphical user interface||
The Windows Shell. The window manager is the Desktop Window Manager on Windows Vista, and a Stacking window manager built on top of GDI in older versions. The desktop environment may be modified by a variety of third party products such as WindowBlinds; or completely replaced, for example by Blackbox for Windows, or LiteStep. With Windows Server 2008 and later server releases, there is also the option of running "Server Core" which lacks the standard window manager. . The graphics drivers, subsystem, and core widgets are included with all installations, including those used as servers.
A number of desktop environments are available, of which GNOME and KDE are the most widely used. By default, they use as their window managers Metacity and KWin respectively, though these can be replaced by other window managers such as Compiz Fusion.
Other desktop environments and window managers include Xfce, LXDE, Enlightenment, Xmonad, Openbox, Fluxbox, etc. The X Window system runs in user-space and is optional. Multiple X Window system instances can run at once, and it is a fully networked protocol. See Also: Comparison of X Window System desktop environments.
The Command Prompt exists to provide direct communication between the user and the operating system. A .NET-based command line environment called Windows PowerShell has been developed. It varies from Unix/Linux shells in that, rather than using byte streams, the PowerShell pipeline is an object pipeline; that is, the data passed between cmdlets are fully typed objects. When data is piped as objects, the elements they encapsulate retain their structure and types across cmdlets, without the need for any serialization or explicit parsing of the stream. Cygwin or MS's own Services for Unix provides a bash terminal for Windows. Posix subsystem is built in but not enabled by default. The Console can execute up to 4 kinds of environments, MSDOS scripts under NT or via Command.com runnung on NTVDM, NT shell scripts and OS/2 Console Scripts. Windows Script Host is included in Windows 98 and newer versions.
Linux is strongly integrated with the system console. The command line can be used to recover the system if the graphics subsystem fails. A large number of Unix shells exists; with the majority being "Bourne shell compatible" shells, of which the most widely used is GNU Bash. Alternatives include the feature-full Z shell; as well as shells based on the syntax of other programming languages, such as the C shell, and Perl Shell. Many applications can be scripted through the system console, there are a lot of small and specialized utilities meant to work together and to integrate with other programs. This is called the toolbox principle.
|A command-line interface, typically displayed in a system console or terminal emulator window, allows users to tell the computer to perform tasks ranging from the simple (for example, copying a file) to the complex (compiling and installing new software). Shells are powerful but can be confusing to new users. Some complex tasks are more easily accomplished through shells than through a GUI, such as piping, or scripting. See also: Comparison of computer shells.|
|Ease of Install||On Windows Server 2003 and prior, the installation is divided into two stages; the first, text-mode; the second, graphical. On Windows Vista and newer, the installation is single stage and graphical.
Some older versions require third party drivers (for example, by using driver floppies disks or slipstreaming the drivers and creating a new installation CD) if using a large number of SATA or SATA2 drives or RAID arrays.
|Varies greatly by distribution. Most distributions intended for new or intermediate users provide simple graphical installers.
General purpose oriented distributions offer a live CD or GUI installer (SuSE, Debian, Pardus, Pclinuxos, Mandriva, Ubuntu, Fedora etc.), others offer a menu-driven installer (Vector Linux, Slackware, Debian) while others, targeting more specialized groups, require source to be copied and compiled (Gentoo). The system can also be built completely from scratch, directly from source code (Linux from Scratch).
|Drivers||The Windows installation media usually contains enough drivers to make the OS functional. To this end, "generic" drivers may be used to provide basic functionality. Drivers can later be upgraded from the manufacturer. Windows Update contains many updated drivers that can be installed after the base OS is in place. Drivers are almost always closed-source, maintained and published by the manufacturer of their respective devices. Recent version of 64-bit Windows force all drivers to be signed, giving Microsoft the sole ability to authorize drivers; this feature cannot be easily overridden by system administrators.||Linux kernels in most distributions include the majority of drivers available as modules, hardware is detected and drivers loaded at boot with usually little or no user interaction required. These drivers are generally written by someone working for the hardware manufacturer or by someone in the user community skilled in doing so; usually the drivers are included in the kernel (open-source), and therefore do not require additional media or any user interaction. A few hardware manufactures (Broadcom, Nvidia) have proprietary drivers which require manual installation.
Prior to introduction of DKMS, third party kernel modules had to be manually updated when the kernel was upgraded.
|Installation via Live Environments||May be installed through the Windows Preinstallation Environment or BartPE. However, only the former is endorsed by Microsoft. Only Microsoft-certified System Builders (OEM companies) are allowed to use the WinPE disk for installation, by license. End-users are not allowed to use the WinPE installation environment.||Almost all Linux distributions now have a live CD that may be used for testing, install or recovery.|
|Pre-installed software||Some multimedia and home use software (IE, Media Player, Notepad, WordPad, Paint…) plus OEM bundled software. Windows Vista Includes IE7, Windows Mail, Windows Media Center, etc. depending on which edition is purchased. It does not include Office suites or advanced multimedia software. However, Microsoft has licensed decoders for a number of patented audio and video coding methods, including the mp3 audio format, and Windows is able to play a number of patented formats by default.||All main distributions contain numerous programs: multimedia, graphics, internet, office suites, games, system utilities and alternative desktop environments. Some distributions specialise in education, games, or security. Most distributions give users the choice of which bundled programs to install, if any.||Microsoft's methods of bundling software were deemed illegal in the case United States v. Microsoft.|
|Not pre-installed software||A massive pool of both proprietary software (including shareware and freeware) and free software. Programs usually come with the required libraries and are normally installed easily. Most programs must be individually installed.
Uninstallation can be of varying difficulty depending on which of many installer methods were used, components and registry entries may be left behind. Windows has a built-in installer program, and software that is to be installed has an installer "wrapper" that interfaces with the Windows Installer to accomplish installation. Not all Windows software uses the install manager.
|A massive pool of free software and some proprietary software covering a wide range of use. A Microsoft employee wrote in an internal report in 1998 that "Most of the primary apps that people require when they move to Linux are already available for free." Using free Windows-compatibility layers like Wine, some Windows software can also be run, often to a lesser degree, on Linux. Third-party software is usually listed/integrated into a packaging system, which is built into the OS. Less popular programs, which are not in the distributions repositories, are often provided in a form (such as the DEB format or the RPM (Red Hat Package Manager) format) which can be installed easily by the package manager. If no precompiled package exists, programs can be more or less automatically built from the source code. Most software is installed non-interactively to a default configuration.||Linux distributions can not lawfully include MP3 or MPEG-4 file decoders in a majority of countries, as it would violate the Patent Cooperation Treaty. There is nothing preventing a user from installing these decoders, however the user assumes all liability for installing said pieces of software. Media players (such as Rhythmbox)) for free alternative audio/video formats are available in Linux, but these players are unable to decode patented formats, such as MP3, without installing additional plugin(s). In particular with the MP3 file format, many companies claim patents relevant to the format. See Patent issues with MP3 for more information.|
|Partitioning||Expanding NTFS partitions is possible without problems, and on Vista it is possible to shrink partitions as well. Dynamic Disks provide dynamic partitioning. Third party tools are available that have more features than the built-in partitioning tools.||Most file systems support resizing partitions without losing data. LVM provide dynamic partitioning. All Linux distributions have bundled partitioning software such as fdisk or gparted|
|File systems||Natively supported: NTFS, FAT, ISO 9660, UDF, and others; 3rd-party drivers available for ext2, ext3, reiserfs, HFS, and others||Natively supported: ext2, ext3, ext4, ReiserFS, FAT, ISO 9660, UDF, NFS, NTFS (incomplete), JFS, XFS and others; many additional filesystems (most notably NTFS using NTFS-3g, and ZFS) are available using FUSE. Archives and FTP sites also can be mounted as filesystems.||Windows can read and write with Ext2 and Ext3 file systems with third-party drivers such as FS-driver or ext2fsd; and ReiserFS through rfstool and related programs.|
|Boot Loader||May boot to multiple versions of Windows through the Windows Boot Manager in Windows Vista and newer; or the earlier boot loader NTLDR in Windows Server 2003 and prior. Graphical configuration tools are available for both, such as EasyBCD for the Windows Boot Manager and MSConfig for NTLDR, which can chain load multiple non-NT environments, including Linux, by referring to volume boot records from those environments saved on the Windows partition.||May boot to multiple operating systems through numerous bootloaders such as LILO and GRUB. With these, it is possible to choose among multiple installed kernel images at boot time. Graphical configuration tools for GRUB are available including KGRUBEditor (KDE) and GrubConf  (GNOME). GRUB can also accept arbitrary, one-time configurations at boot time via the GRUB prompt. GRUB and LILO also support booting to non-Unix operating systems via chain loading; for a Windows and Linux dual-boot system, it is often easiest to install Windows first and then Linux because Linux installers such as Ubuntu's installer will automatically detect and set up other operating systems for dual/multiple boot with Linux.|
Linux distributions were said to be difficult for the average user to install. However, easy-to-use installers were becoming common on the major distributions already by the beginning of the twenty-first century. The main Linux distributions include graphical package managers which assist the user in searching for packages and installing them graphically (e.g., Fedora's PackageKit, and Debian and Ubuntu's Synaptic Package Manager). When package managers are used the user saves time as there is no need of surfing to web pages, downloading the appropriate packages, and installing them; the package manager handles all downloading, installing, resolving of dependencies, and conflict resolution.
Today, most distributions have simplified the installation and offer a “Live CD” system allowing users to boot fully functional Linux systems directly from a CD or DVD with the option of installing them on the hard drive. This enables a user to evaluate a distribution for either software or hardware compatibility with no permanent modification to their computer.
The Windows install process and most general-use Linux distributions use a wizard to guide users through the install process. Windows often comes pre-installed while a Linux distribution has to be chosen and installed, but one can argue that the installation of Linux nowadays is no more difficult than configuration of a pre-installed Windows.
A study released in 2003 by Relevantive AG indicates that “The usability of Linux as a desktop system was judged to be nearly equal to that of Windows XP”.
|User Focus||Mostly consistent. Inconsistencies appear primarily through backports—software ported from newer operating systems to older ones. For example, software ported from Vista to XP must follow the Vista guidelines, those of the newer system (IE7 and Windows Media Player 11 are examples of this). However, Microsoft continually pushes for consistency between releases with guidelines for interface design. The latest are Windows Vista User Experience guidelines. Their focus is on consistency and usability, but with increased concern for safety in new versions. Third-party applications may or may not follow these guidelines, may have their own guidelines, or may not follow any rules for interface design.||The quality of graphical design varies between desktop environments and distributions. The two biggest desktop environments (GNOME and KDE) have clearly defined interface guidelines, which tend to be followed consistently and clearly. These provide consistency and a high grade of customizability in order to adapt to the needs of the user. Distributions such as Ubuntu, SuSE, Fedora or Mandriva take this one step further, combining well-functioning usability and safety. However, inconsistencies may appear, since GNOME-based programs, following different guidelines, look notably different from KDE programs, although there are workarounds for making both look similarly, without inconsistences. There are other environments/window managers, usually targeting professionals or minimalist users, featuring some very powerful programs with rudimentary, minimalist graphical front-ends, focusing much more on performance, small size and safety. WindowMaker and the Fluxbox/Openbox/Blackbox environments are such examples. Some other environments fit between the two models, giving both power, eye candy and simplicity (Enlightenment/E17, Xfce). Some graphical environments are targeted to mouse users only (Fluxbox), others to keyboard users only (Ratpoison), others to either. Certain graphical environments are also designed to be as resource-conservative as possible, so as to run on older machines.|
|Consistency between versions||User interaction with software is usually consistent between versions, releases, and editions.||Consistency ranges from high to poor between distributions, versions, window managers/desktop environments, and programs. Software is generally highly user-customizable, and the user may keep the customizations between versions.|
|Consistency between applications||All Microsoft software follows the same guidelines for GUI, although not all software developed for Windows by third parties follows these GUI guidelines. As stated above, backports tend to follow the guidelines from the newer operating system.||Highly consistent within KDE and GNOME. However the vast amount of additional software that comes with a distribution is sourced from elsewhere; it may not follow the same GUI guidelines or it may cause inconsistencies (e.g. different look and feel between programs built with different widget toolkits). However, there are workarounds for giving the same look and feel for both KDE-based and GNOME-based applications.||Though Windows' GDI and most widget toolkits in Linux allow for applications to be created with a custom look and feel, most applications on both platforms simply use the default look and feel. However, there are exceptions like FL Studio for Windows, and LMMS for Linux.|
|Customization||By default, Windows only offers customization of size and color of the graphical elements, and it is typically not possible to change how the interface reacts to user input.
A few third-party programs allow more extensive customization, like WindowBlinds or LiteStep, but extreme changes are usually out of reach. It is not possible to customize applications that do not use the default look-and-feel beyond the options the specific application offers.
|Linux offers several user interfaces to choose from. Different environments and window managers offer various levels of customizability, ranging from colors and size to user input, actions, and display.|
|Accessibility||Both Windows and Linux offer accessibility options, such as high contrast displays and larger text/icon size, text to speech and magnifiers.|
|General stability||Windows operating systems based on the NT kernel (including all currently supported versions of desktop Windows) are technically much more stable than some older versions (including Windows 3.1 and 95/98). Installing unsigned or beta drivers can lead to decreased system stability (see below).||A Linux window manager, a key component of the X Window-based GUI system, can be highly stable or quite buggy, but the more common ones are stable. Mechanisms to terminate badly behaving applications exist at multiple levels, such as Ksysguard and the kill command. Because Linux can use a text based system if the graphics system fails, the graphics system can be easily restarted following a crash without a whole system reboot.||Instability can be caused by poorly written programs, aside from intrinsic OS stability, as Linux's graphics system is decoupled from the kernel and the system. Linux's graphics system can usually be restarted without affecting non-graphical programs and services running under other shells, and without restart.|
|Device driver stability||Device drivers are provided by Microsoft or written by the hardware manufacturer. Microsoft also runs a certification program, WHQL Testing, through which most drivers are digitally signed by Microsoft as compatible with the operating system, especially on 64-bit versions. This ensures a maximum level of stability.||Some vendors contribute to free drivers (Intel, HP, etc.) or provide proprietary drivers (Nvidia, ATI, etc.). Unlike Windows, however, kernel developers and hobbyists write many or most device drivers; in these drivers, any developer is potentially able to fix stability issues and other bugs. Kernel developers do not support the use of drivers that are not open-source, since only the manufacturer can fix stability issues in closed-source drivers.||Crashes can be caused by hardware problems or poorly written device drivers. Both operating systems, utilizing aspects of monolithic kernel architecture, run drivers in the same address space as the kernel, leading to crashes or hangs resulting from buggy device drivers.|
|Downtime||Reboots are usually required after system and driver updates. Microsoft has its hotpatching technology, designed to reduce downtimes.||Linux itself needs to restart only for kernel updates. However, a special utility can be used to load the new kernel and execute it without a hardware reset (kexec) and hence can stay up for years without a single hardware reboot, reducing downtime. For minor updates such as security fixes, Ksplice allows the linux kernel to be patched without a reboot. System libraries, services and applications can mostly be upgraded without restarting running software (old instances use the "replaced" versions)|
|Recovery||In modern, NT-based versions of Windows, programs that crash may be forcibly ended through the task manager by pressing CTRL+SHIFT+ESC or CTRL+ALT+DEL.
Should this fail, other third-party applications can also be used. However, if a badly behaving application hangs the entire GUI, it is difficult or impossible to recover without restarting the entire computer, since there is no text-based management console independent of the GUI to resort to.
|All processes except for init and processes in D or Z state may be terminated from the command line. If the GUI hangs, on most distributions, CTRL+ALT+F1 takes the user to the terminal, where the process can be killed, and the GUI restored. Applications can also be closed via the GUI. The optional SysRQ allows low-level system manipulation and crash recovery. The entire graphical subsystem can be restarted without the need for a whole system shutdown. Reboots are seldom required.
Additionally, Live CDs of Linux, if equipped with the correct tools, can work to repair a broken OS if the hard drive is mountable.
|Unrecoverable errors||If the kernel or a driver running in kernel mode encounters an error under circumstances whereby Windows cannot continue to operate safely, a "bug check" (colloquially known as a "stop error" or "Blue Screen of Death") is thrown. A memory dump is created and, depending on the configuration, the computer may then automatically restart. Additionally, automatic restart can be applied to services.||The Unix equivalent of the Windows blue screen is known as a kernel panic. The kernel routines that handle panics are usually designed to output an error message to the console, create a memory dump, and then either halt the system or restart automatically.|
For an operating system to be subjectively “stable”, numerous components must operate synchronously. Not all of these components are under the control of OS vendor; while Linux and Windows kernels may be stable, poorly written applications and drivers can hamstring both. Much of stability, then, is the extent to which the operating system is structured to thwart the consequences of bad behavior of third party installations.
Much of the reputation Windows has for instability can be traced to Windows 95, 98, and ME, which were notorious for displaying the blue screen of death (BSOD) upon crashing. Three weaknesses with these particular Windows versions increased the likelihood such a crash would occur:
These are not the exclusive causes of instability, but their correction in the Windows NT codebase has dramatically improved the stability of all subsequent Windows variants: Windows 2000, XP, Server 2003 and Vista.
|Process Scheduling||NT-based versions of Windows use a CPU scheduler based on a multilevel feedback queue, with 32 priority levels defined. The kernel may change the priority level of a thread depending on its I/O and CPU usage and whether it is interactive (i.e. accepts and responds to input from humans), raising the priority of interactive and I/O bounded processes and lowering that of CPU bound processes, to increase the responsiveness of interactive applications.
The scheduler was modified in Windows Vista to use the cycle counter register of modern processors to keep track of exactly how many CPU cycles a thread has executed, rather than just using an interval-timer interrupt routine.
|Linux kernel 2.6 once used a scheduling algorithm favoring interactive processes. Here "interactive" is defined as a process that has short bursts of CPU usage rather than long ones. It is said that a process without root privilege can take advantage of this to monopolize the CPU, when the CPU time accounting precision is low. However, Completely Fair Scheduler, now the standard scheduler, addresses this problem.|
|Memory Management/ Disk Paging||Windows NT family (including 2000, XP, Vista, Win7) most commonly employs a dynamically allocated pagefile for memory management. A pagefile is allocated on disk, for less frequently accessed objects in memory, leaving more RAM available to actively used objects. This scheme suffers from slow-downs due to disk fragmentation (if a variable size paging file is specified), which hampers the speed at which the objects can be brought back into memory when they are needed. Windows XP and later can defragment the pagefile, and on NTFS filesystems, intelligently allocate blocks to avoid this problem. Windows can be configured to place the pagefile on a separate disk or partition. However, this is not default behavior, because if the pagefile is on a separate partition, then Windows cannot create a memory dump in the event of a Stop Error. On the NT family, executed programs become part of the paging system (to improve performance). Programs cannot normally access each others address space. It is possible to configure the OS to have no additional paging file.
The Windows 3.1/95/98/ME family does not have true virtual memory and uses a simpler swapping scheme easily leading to needless swaps and disc fragmentation. Programs on this family can access each other's address space. 
|Most hard drive installations of Linux utilize a "swap partition", where the disk space allocated for paging is separate from general data, and is used strictly for paging operations. This reduces slowdown due to disk fragmentation from general use. As with Windows, for best performance the swap partition should be placed on a hard drive separate from the primary one. Linux also allows to adjust "swappiness" e.g. the amount of data it needs to buffer (this is not equivalent to adjusting the virtual memory size). Windows does not support such features.||The ideal solution performance-wise is to have the pagefile on its own hard drive, which eliminates both fragmentation and I/O issues.|
|Community support||Microsoft Developer Network (MSDN), Microsoft TechNet: Resources for IT Professionals, and multitudes of user driven support forums are available at no charge. Additional support is available by 3rd party services.||Most support is provided by advanced users and developers over online forums, and other free community based venues. Professional support is available, but most commonly only utilized by large-scale businesses, and server dependent organizations.||There are paid local Windows techs. Fewer for Linux.
Most OEM's offer support along with their products, which include both hardware and software technical support.
|Phone support||By Microsoft or OEM. Usually for a fee.||Red Hat, Canonical, Novell and other major distributors have support available as well for a fee.|
|Documentation||A wealth of information is available free online, or in books, as well as on Microsoft's own support page.||Most documentation is available online, either in FAQ form or Wiki pages on developers websites. Detailed documentation for specific commands, programs, functions, libraries, files, and file formats are available through the
|Training||Many IT courses are written for participants to learn how to use and manage Windows systems and networks. Most computer assistance experts have Windows training and qualifications.||Linux is taught in many computing university courses in programming and computer science. Linux diplomas and certificates are rarely offered. Courses for certifications are provided by Linux Professional Institute and some distributions, such as Red Hat and Ubuntu.|
|Third Party Documentation||As Windows has the majority of the market share, most producers of software and hardware will give Windows specific instructions for the installation and operation of their programs and drivers.||Most non-Linux-specific products give little to no instructions to install or use software on Linux. Indeed, some Linux laptops have shipped with superfluous Windows documentation.|
|Binary Emulation, Alternative API||There are many programs that will setup a Unix-like environments that run in Windows. Microsoft supports SUA. SUA may be used to compile raw Linux source code, which will run in a console. In order to run through Program Manager/Explorer, installation of other libraries and a suitable X server program are required. Microsoft does not support LINA, Cygwin, and MinGW, but these open source programs will run on Windows to set up a Unix-like environment. Windows is capable of running any enterprise application.||Cedega, CrossOver, and Wine can be used to run many Windows programs on Linux with varying degrees of reliability. While these programs technically do not emulate Windows, and instead provide an alternate Windows API, the practical effect is the same. Some windows software may not run correctly since API implementation provided by these software packages is not complete. Wine and similar approaches often require less cpu power than Hardware emulation or Virtualization where a whole Microsoft Windows operating system must be run.||With binary emulation (or alternative API implementation) user is able to run software designed to run on different operating system or hardware platform.|
|Hardware emulation and Virtualization||VMware, VirtualBox, Virtual PC, Virtual Server, Hyper-V (only available on 64-bit versions of Vista SP2, Windows 7, and Windows Server 2008), Parallels, QEMU on new hardware.||VMware, VirtualBox, Xen, Parallels, Linux-VServer, OpenVZ, Win4Lin. KVM, VirtualBox and QEMU can be used to run Microsoft Windows as guest operating system.||With virtualization you may run an operating system within another operating system.|
|Operating systems run as application||Several linux distributions can be run inside windows as userland application using Cooperative Linux as kernel and Xming as X server. There exist user-friendly easy to install software packages based on this approach (Andlinux , TopologiLinux, Portable Ubuntu). A Linux distribution installed in this way has binary compatibility with other x86 linux distributions, the only difference is a special kernel modification – allowing it to run on top of windows.||User-mode Linux allows users to run Linux kernel as userland application.||Andlinux and TopologiLinux are the simplest ways of running linux software on windows.|
|Package management system||Windows programs are not tied to specific library or kernel versions and the original developer of a program can therefore distribute a single package that can work on multiple versions of Windows. This obviates any problem comparable to what exists in the Linux ecosystem where it's necessary to maintain large repositories of packages compiled for exact versions of the operating system, and to manage complicated dependencies between different package versions and repository sources, however in some cases it raises the need to update large numbers of programs in case of a security or otherwise important update.
Modern versions of Windows rely on the Windows Installer to install and manage software. This registers what components are installed where on the user's system. Microsoft's guidelines strongly suggest that software vendors use the Windows Installer. However, many applications are still deployed with alternative installers. One example is NSIS. Applications are typically installed into the Program Files directory by an executable file.
|Linux programs are sometimes dependent on exact kernel and library version (or ranges of versions). Such programs will only function properly on a specific (or very similar) version of the distribution they were built for. In order to manage the complicated dependencies that arise, most distributions have a package manager, often based upon RPM, APT, or Gentoo Ebuild metapackages (source). Sometimes an installation can have a second package management system which is incompatible with the primary system. Numerous distribution-specific front-ends exist on top of the core formats allowing for GUI or command-line package installation e.g. aptitude, Synaptic, Portage, YaST and YUM. Though rare, some distributions create their own formats e.g. Pardus PiSi or Pacman.
Most package managers have a form of package signing usually based on PGP e.g. OpenPGP for Debian packages. It is also possible to create a GUI installation package not depending on the distributions by using Autopackage. Software can also be compiled from source code, which does not require any kind of package-management system. However, compiling software from its source code can be time-consuming and difficult. Source code is also typically tied to specific library versions, and in many cases, source code can not be compiled without updating system libraries, which can disable existing installed software that is dependent on exact builds of those libraries. In some cases, conflicts arise where the latest version of one program depends on having an older version of a specific library, and another program will depend on having a newer version of the same library.
|PM simplifies the process of installing new software, updating it, and managing dependencies (See Dependency hell). In Linux distributions the type of package manager is pre-determined by what the distribution was originally derived from though more modern distributions can import other package formats.|
|Adding New Programs||Thousands of programs are available for download from many websites and for purchase on CD/DVD in retail shops.
Programs must be downloaded (or purchased on CD/DVD) and installed individually. The user has to search for the package they need, and track dependencies (if any) by hand.
|In addition to website downloads, thousands of programs are available from repositories maintained by each distribution and are generally considered "trusted" and require review before new additions will be accepted. Access to the repositories is usually without cost. Installing new software typically needs only its name, and sophisticated tools help the user finding the name of the software they need.
The package manager automatically handles download and installation of selected packages, and automatically upgrades or patches software when a newer version appears in the repository. For some distributions, however, it's normal not to update the applications released together with the distribution to new versions. In these cases, only security updates are provided. Third-party software rarely (if ever) contains adware/spyware/viruses, and does not require as much discretion in that regard.
|Driver development||Windows provides extensive, well-documented programming interfaces that enable third parties to develop kernel software that extends and modifies system behavior. Microsoft provides its Windows Driver Kit at no cost, which includes thorough documentation, samples, and tools for building, testing, and deploying drivers. Windows driver programming interfaces are based on standards and specifications, often the product of a process involving leading players in the applicable industry.
While Windows drivers are compiled based on specifications, and are not tied to a specific version of Windows, source code for a specific version of Windows may, in theory, be purchased for modification in some circumstances (restrictive), or third-party tools may create modifications. In practice, the availability of Windows source code is generally heavily restricted or extremely expensive, if available at all. However, even where source is available, modification to the operating system can break the EULA, and in turn be prohibited or even illegal.
|Few working specifications exist for Linux driver programming interfaces, and no model for consistent binary driver support exists. In fact, a compiled Linux driver is tied to builds similar to the kernel running on the machine where the driver was compiled. This process is facilitated by the fact that the kernel source code is available. However, historically, kernel internals typically change over time, and source code for many modules must be periodically updated in order for it to continue to function. This also means that modifications that work on one machine will sometimes fail to work on another machine if their kernel versions are different. However, these difficulties are for the most part restricted to graphics drivers.
In cases where the drivers are Free Software, the driver is actually considered part of the kernel itself. The source code to most such drivers are included along with the source code of the Linux kernel, and developers of these drivers are considered to be part of the community of kernel developers.
||Gentoo goes further and allows different versions of software and libraries to be installed in separate “SLOTS” so a system can have different versions of the same software installed. GoboLinux uses a radically different approach where "the filesystem is the package manager" which allows even different versions of a program to be run concurrently.|
||Some companies, such as Id software, make versions of their products to work on both Windows and Linux. These programs are generally not dependent on either framework. Instead, the installation is such that there is an "interpreter" layer and the actual program binary files. The interpreter layer runs on-the-fly to deliver the appropriate program experience to whichever platform is running. Using this method, software can be created independent of the platform, and only the interpreter layer needs to be configured for the OS. OpenGL is cross-platform.|
||Software that is written in cross-platform languages and frameworks are usually easily ported.|
|Cross-platform (hardware)||Windows client and server OS come in x86 and x64 editions. The target platforms for Windows CE / Windows XP Embedded are ARM, MIPS, x86-64, SuperH. The target platforms for Windows Mobile are PDAs.||i386, x86-64, PowerPC 32/64, SPARC, DEC Alpha, ARM, MIPS, PA-RISC, S390, IA-64, SuperH and m68k, and many PDAs and embedded systems.|
|Software Compatibility||Windows programs are compiled against generalized, specification-based header files and are not tied to the local machine where they are compiled. That fact combined with a well-documented effort by Microsoft to maintain binary compatibility has resulted in Windows programs typically being usable on a variety of Windows versions.||Extensive compatibility issues exist in Linux software that tie specific versions of source code and binary packages to specific distributions, library versions, and kernel versions. For example, binary drivers are almost always tied to an exact kernel build, and binary driver distribution is therefore quite rare. Common practice in Linux and open source in general is to configure compiler and library packages so that compiled binaries will be tied to a specific version of the package. For example, the same source code may successfully compile with two different versions of glibc, but each resulting binary will be tied to the respective version of glibc. Therefore, a binary compiled on a given Linux machine will typically only be compatible with the specific version of the specific distribution that is running on that machine. As a result, distributions and third parties maintain extensive repositories with many compilations of the same source code in order to provide users of different distributions with access to binaries that will work on their machines.|
|Backwards Compatibility between releases||Programs that use Linux Standard Base functions will work for at least six years on any LSB-compliant distribution. Non-LSB frameworks and libraries have other compatibility policies||This refers to the backwards compatibility of the operating system between releases.|
|IDEs & Compilers||Several commercial IDEs for sale, such as Microsoft's Visual Studio. Multiple free or gratis IDEs and compilers, including the GNU Compiler Collection, Eclipse, NetBeans, Pelles C, lcc32, Borland C++, Visual Studio Express (Visual C++, C#, and VB.NET compilers), .NET compilers freely included in .NET Framework, Sharpdevelop, Free Pascal||Several commercial IDEs and compilers for sale such as PGI, Intel, and Absoft's Fortran compilers. Multiple free IDEs and compilers, the most common of which are often included in distributions; including the GNU Compiler Collection, Eclipse, NetBeans, Mono, MonoDevelop, Geany, Anjuta, KDevelop, Free Pascal, OpenLDev, Codeblocks|
Linux distributions come with a great deal of software which can be installed for free, with an especially large collection of computer programming software. Debian comes with more than 18,000 software packages.
Microsoft has had a longstanding emphasis on backwards compatibility. In general, the Windows API is consistent over time, with new features added; programs designed for earlier versions of Windows often run without issues on later versions. For the sake of progress, however, Microsoft sometimes draws a line precluding support of very old programs. That first happened with Windows 95, where some purely 16 bit Windows 3.1 applications would not work, and again with Windows XP, where certain mixed-bit applications would not work. 64-bit versions of Windows (XP-64 and Vista-64) drop 16-bit support completely. However, 16 bit emulation and the enormous array of application-specific tweaks (“shims”) within new Windows versions ensure that compatibility with old applications remains very high.
In the Linux world, the landscape differs. As most (if not all) parts of the operating system are open source and many Linux programs are open source, when a Linux distribution breaks backward compatibility, anyone willing might write a patch to the operating system or the program itself that would allow the older software to work. In reality though, since many popular Linux distributions uses software repository and all of the most popular programs exists in the repository, the programs provided in the repository is guaranteed to be compatible with (depends on the distros) the most recent version of the operating system.
A major attraction of Windows is the large library of video games available for purchase. The majority of current major games natively support Windows and are released first (and often only) for the Windows platform. Some of these games can be run on Linux with a compatibility layer like Wine or Cedega. Those that rely on copy protection or undocumented features require much more effort in order to work properly. Since Wine is not an emulator it can, and does, obtain native speed, sometimes surpassing that of Windows.
There are notable exceptions, such as id Software's Doom and Quake series. When a developer chooses to write graphics code in OpenGL instead of DirectX, Linux ports become much easier. In addition, games such as the Unreal Tournament series are written in 3 parts: The core 'engine' of the game, the graphical display system, and the actual game data itself. The first two, typically being compiled programs, require porting, however only the graphical display system will often require much work (Windows to X Window, DirectX to OpenGL, etc). The third part, the game data itself, is typically written in system-independent file formats and scripting languages. This allows the game developer to separate the actual game experience from platform compatibility. This also serves to reduce the cost of development in 2 ways.
There are Open Source games designed first for Linux. While most of these are small casual games like Kolf or Pingus, there are also larger "hardcore" games, such as Nexuiz, Freeciv, and The Battle for Wesnoth. Many have been ported to work on Windows as well.
|Malware||According to Kaspersky Lab, more than 11,000 malware programs for Windows were discovered just in the second half of 2005. However, it is common for anti-malware software to have more than 1,000 signatures against which potentially malicious components can be compared. Botnets – networks of infected computers controlled by malicious persons – with more than one million computers have been witnessed. Once malicious software is present on a Windows-based system, it can sometimes be incredibly difficult to locate and remove. As such, users are advised to install and run anti-malware programs.||As of 2006, more than 800 pieces of Linux malware have been discovered. Some malware has propagated through the Internet. However, in practice, reports of bonafide malware presence on Linux-based systems are extremely rare. Nonetheless, anti-malware tools such as ClamAV and Panda Security's DesktopSecure for Linux do exist. These programs are mainly intended to filter Windows malware from emails and network traffic traveling through Linux-based servers. The extreme rarity of this type of occurrence is such that it is not usually necessary to use anti-malware programs. The exception to this would be if the Linux-based system is connected to Windows-based systems, and only to mitigate the spread of Windows malware.||A true comparison between Windows and Linux on the values of the inherent security of each operating system is hard to obtain. Windows runs nearly 90% of desktop computers in the consumer market, and is the main operating system of the vast majority of commercial and institutional users. This makes Windows- equipped machines a larger target for malware, which is written by coders who desire to cause as much damage as possible. Furthermore, the ubiquity of Windows means that more sensitive information- credit card numbers, medical records, financial data- is likely to be found on a Windows network. Simply put, the number of malicious programs available for Windows is not always due to flaws in the security of the operating system, but can instead be attributed to the widespread use of Windows.|
|Open vs. Closed||Claims its platform is more secure because of a comprehensive approach to security using the Security Development Lifecycle.
However, because Windows is closed-source, only Microsoft-employed programmers (or licensed third-parties) can fix bugs. Because the software is closed-source, consumers have to trust that Microsoft is not doing anything against them. (See security through obscurity.)
|Claims its platform is more secure because all of its code is reviewed by so many people that bugs are detected (referred to as Linus's law).
Anyone with programming experience is free to fix bugs and submit them for inclusion in future releases and updates.
|Microsoft claims that Windows Vista is more secure than other operating systems. However, security vulnerabilities have been found in Windows Vista.
Security issues are also reported for Linux 
|Response speed||Claims closed source offers a faster and more effective response to security issues, though critical bug fixes are only released once a month after extensive programming and testing and certain bugs have been known to go unpatched for months or even years.||Bugs can be fixed and rolled out within a day of being reported (often within hours), though usually it takes a few weeks before the patch is available on all distributions.|
|User Accounts||In Windows Vista, all logged-in sessions (even for those of "administrator" users) run with standard user permissions, preventing malicious programs (and inexperienced users) from gaining total control of the system. Processes that require administrator privileges can be run using the User Account Control framework. For standard users, this presents a credentials dialogue (example) that requires the password of a member of the administrators group (who are listed). For users who are already logged in an administrator, only confirmation is necessary. The first user account created during the setup process is automatically a member of the administrators group. The majority of users did not change to an account type with fewer rights, meaning that, in Windows versions prior to the introduction of UAC, malicious programs would have full control over the system.||Users typically run as limited accounts, having created both administrator (commonly called "superuser" and named "root", has UID 0) and at least one user account during install, preventing malicious programs from gaining total control of the system. Note that the user "root" is not the same thing as the root level of the filesystem, indicated by "/" alone. In most Linux distributions, there are commands (su, sudo) that will temporarily grant root/administrator privileges to processes that need it. In practice, the sudo command is generally far less of an annoyance, leading to its use over su in distributions like Ubuntu, in spite of the additional security risk. In addition, a user can log into the PC as the "root" or temporarily become root with su (normal console logout returns the user to normal permissions). No elevated permissions are needed for anything when logged in as root. In practice, this can be very dangerous, as a simple typo error at the command line can wipe a hard drive clean or clear the contents of system RAM. Unlike Vista's UAC, a privileged process has complete, unrestricted access to the system. For graphical programs containing thousands of lines of code, this creates a larger opportunity for something to go wrong. New frameworks such as PolicyKit seek to rectify this problem by splitting the privileged program into two parts: A light daemon program with the privileges necessary to carry out the task and the GUI front-end that uses PolicyKit to communicate with the daemon. However, as of Feb. 2009, PolicyKit is not in widespread use. Other frameworks such as AppArmor and SELinux ensure that a program can only carry out specific tasks (for example, a web server is not allowed to change critical system files).||A malicious program executed under a limited account in both Linux and Windows is limited to that user's data. The use of sudo on some Linux configurations asks for the user's password only once for a set amount of time (in Ubuntu, 10 minutes). During this time, the user is able to do anything root could do without entering a password and actually becoming root (assuming sudo is configured this way; the stated intent of sudo is to allow users to run select commands as root). The su command requires the root password every time, and is therefore more secure; malware(which can enter a system in a variety of ways, such as browser exploits) cannot exploit a passwordless period to hijack the system. User Access Controls in Windows only grants administrator privileges to the user for each process as a one-time-shot. Each process that needs elevated privileges spawns a new prompt to the user (often more than one) for the user to accept.|
Both Windows NT-based systems and Linux-based systems support permissions on their default filesystems. DOS/Win3.x/Win9x original FAT filesystem, however, does not support permissions. This filesystem is available for use in both operating systems, although Microsoft has sued companies that try to use the FAT filesystem on a Linux-based appliance. The DOS based Windows ME, Windows 98, Windows 95, and previous versions of non-NT Windows only operated on the FAT filesystem, and therefore do not support permissions natively. NT since inception supported token based permissions and streams on NTFS and up until NT4.0 supported creation of the OS/2 HPFS at install time. The token based system on NTFS is more similar to VMS security and can be very much more powerful, flexible and complex than the default three level flag system on UNIX/Linux. However, few organisations have taken advantage of the richness of the Token based system of NTFS which can be applied to almost all NT OS objects.
Linux—and Unix-like systems in general—have a “user, group, other” approach to filesystem permissions at a minimum. Access Control Lists are available on some filesystems, which extends the traditional Unix-like permissions system. Security patches like SELinux and PaX add Role-Based Access Controls, which add even finer-grained controls over which users and programs can access certain resources or perform certain operations. Some distributions, such as Fedora, CentOS, and Red Hat use SELinux out of the box, although most do not.
Most Linux distributions provide different user accounts for the various daemons. In common practice, user applications are run on unprivileged accounts, to provide least user access. In most distributions, administrative tasks can only be performed through explicit switching from the user account to the root account, using tools such as su and sudo.
Windows NT and subsequent NT-based versions of Windows use NTFS-based Access Control Lists to administer permissions, using tokens. On Windows XP and prior versions, most home users still ran all of their software with Administrator accounts, as this is the default setup upon installation. The existence of software that would not run under limited accounts and the cumbersome "Run As..." mechanism forced many users to use administrative accounts. This gives users full read and write access to all files on the filesystem.
Windows Vista changes this by introducing a privilege elevation system called User Account Control that works on the principle of Least user access. When logging in as a standard user, a logon session is created and a token containing only the most basic privileges is assigned. In this way, the new logon session is incapable of making changes that would affect the entire system. When logging in as a user in the Administrators group, two separate tokens are assigned. The first token contains all privileges typically awarded to an administrator, and the second is a restricted token similar to what a standard user would receive. User applications, including the Windows Shell, are then started with the restricted token, resulting in a reduced privilege environment even under an Administrator account. When an application requests higher privileges or "Run as administrator" is clicked, UAC will prompt for confirmation and, if consent is given, starts the process using the unrestricted token.
The VLSI (Very Large Scale Integration, IC design & manufacturing technology) industry uses Linux. These companies usually have servers and Solaris/Linux installed. Most of the VLSI tools are designed for Linux and there are no ports available for Windows making Linux dominant in VLSI industry.
It is easy to have multiple languages installed in both operating systems and to switch between them while the user is logging in. In MS Windows, localization can be provided by a separate installation of the operating system, the Multilingual User Interface (MUI) can be used to provide multiple languages on one installation, in certain more expensive versions of Windows (such as Ultimate) it is possible to switch languages from the control panel.
In Linux the language can be chosen separately for any subsession and any instance of a program (by setting environment variables), separately for different aspects of the locale (date format, collation, message language etc.). Some programs exists, though, which do not honor this traditional approach.