Tuesday, June 17, 2008

Processor Management

The heart of managing the processor comes down to two related issues:
  • Ensuring that each process and application receives enough of the processor's time to function properly.
  • Using as many processor cycles for real work as is possible.
The basic unit of software that the operating system deals with in scheduling the work done by the processor is either a process or a thread, depending on the operating system.

It's tempting to think of a process as an application, but that gives an incomplete picture of how processes relate to the operating system and hardware. The application you see (word processor or spreadsheet or game) is, indeed, a process, but that application may cause several other processes to begin, for tasks like communications with other devices or other computers. There are also numerous processes that run without giving you direct evidence that they ever exist. For example, Windows XP and UNIX can have dozens of background processes running to handle the network, memory management, disk management, virus checking and so on.

A process, then, is software that performs some action and can be controlled -- by a user, by other applications or by the operating system.

It is processes, rather than applications, that the operating system controls and schedules for execution by the CPU. In a single-tasking system, the schedule is straightforward. The operating system allows the application to begin running, suspending the execution only long enough to deal with interrupts and user input.

Interrupts are special signals sent by hardware or software to the CPU. It's as if some part of the computer suddenly raised its hand to ask for the CPU's attention in a lively meeting. Sometimes the operating system will schedule the priority of processes so that interrupts are masked -- that is, the operating system will ignore the interrupts from some sources so that a particular job can be finished as quickly as possible. There are some interrupts (such as those from error conditions or problems with memory) that are so important that they can't be ignored. These non-maskable interrupts (NMIs) must be dealt with immediately, regardless of the other tasks at hand.

While interrupts add some complication to the execution of processes in a single-tasking system, the job of the operating system becomes much more complicated in a multi-tasking system. Now, the operating system must arrange the execution of applications so that you believe that there are several things happening at once. This is complicated because the CPU can only do one thing at a time. In order to give the appearance of lots of things happening at the same time, the operating system has to switch between different processes thousands of times a second. Here's how it happens:

  • A process occupies a certain amount of RAM. It also makes use of registers, stacks and queues within the CPU and operating-system memory space.
  • When two processes are multi-tasking, the operating system allots a certain number of CPU execution cycles to one program.
  • After that number of cycles, the operating system makes copies of all the registers, stacks and queues used by the processes, and notes the point at which the process paused in its execution.
  • It then loads all the registers, stacks and queues used by the second process and allows it a certain number of CPU cycles.
  • When those are complete, it makes copies of all the registers, stacks and queues used by the second program, and loads the first program.

All of the information needed to keep track of a process when switching is kept in a data package called a process control block. The process control block typically contains:

  • An ID number that identifies the process
  • Pointers to the locations in the program and its data where processing last occurred
  • Register contents
  • States of various flags and switches
  • Pointers to the upper and lower bounds of the memory required for the process
  • A list of files opened by the process
  • The priority of the process
  • The status of all I/O devices needed by the process
Each process has a status associated with it. Many processes consume no CPU time until they get some sort of input. For example, a process might be waiting on a keystroke from the user. While it is waiting for the keystroke, it uses no CPU time. While it is waiting, it is "suspended". When the keystroke arrives, the OS changes its status. When the status of the process changes, from pending to active, for example, or from suspended to running, the information in the process control block must be used like the data in any other program to direct execution of the task-switching portion of the operating system.

This process swapping happens without direct user interference, and each process gets enough CPU cycles to accomplish its task in a reasonable amount of time. Trouble can come, though, if the user tries to have too many processes functioning at the same time. The operating system itself requires some CPU cycles to perform the saving and swapping of all the registers, queues and stacks of the application processes. If enough processes are started, and if the operating system hasn't been carefully designed, the system can begin to use the vast majority of its available CPU cycles to swap between processes rather than run processes. When this happens, it's called thrashing, and it usually requires some sort of direct user intervention to stop processes and bring order back to the system.

One way that operating-system designers reduce the chance of thrashing is by reducing the need for new processes to perform various tasks. Some operating systems allow for a "process-lite," called a thread, that can deal with all the CPU-intensive work of a normal process, but generally does not deal with the various types of I/O and does not establish structures requiring the extensive process control block of a regular process. A process may start many threads or other processes, but a thread cannot start a process.

So far, all the scheduling we've discussed has concerned a single CPU. In a system with two or more CPUs, the operating system must divide the workload among the CPUs, trying to balance the demands of the required processes with the available cycles on the different CPUs. Asymmetric operating systems use one CPU for their own needs and divide application processes among the remaining CPUs. Symmetric operating systems divide themselves among the various CPUs, balancing demand versus CPU availability even when the operating system itself is all that's running.

Even if the operating system is the only software with execution needs, the CPU is not the only resource to be scheduled. Memory management is the next crucial step in making sure that all processes run smoothly.

Wake-Up Call

When you turn on the power to a computer, the first program that runs is usually a set of instructions kept in the computer's read-only memory (ROM). This code examines the system hardware to make sure everything is functioning properly. This power-on self test (POST) checks the CPU, memory, and basic input-output systems (BIOS) for errors and stores the result in a special memory location. Once the POST has successfully completed, the software loaded in ROM (sometimes called the BIOS or firmware) will begin to activate the computer's disk drives. In most modern computers, when the computer activates the hard disk drive, it finds the first piece of the operating system: the bootstrap loader.

The bootstrap loader is a small program that has a single function: It loads the operating system into memory and allows it to begin operation. In the most basic form, the bootstrap loader sets up the small driver programs that interface with and control the various hardware subsystems of the computer. It sets up the divisions of memory that hold the operating system, user information and applications. It establishes the data structures that will hold the myriad signals, flags and semaphores that are used to communicate within and between the subsystems and applications of the computer. Then it turns control of the computer over to the operating system.

The operating system's tasks, in the most general sense, fall into six categories:

  • Processor management
  • Memory management
  • Device management
  • Storage management
  • Application interface
  • User interface
While there are some who argue that an operating system should do more than these six tasks, and some operating-system vendors do build many more utility programs and auxiliary functions into their operating systems, these six tasks define the core of nearly all operating systems. Let's look at the tools the operating system uses to perform each of these functions.

What Kinds Are There?

What Kinds Are There?

Within the broad family of operating systems, there are generally four types, categorized based on the types of computers they control and the sort of applications they support. The broad categories are:
  • Real-time operating system (RTOS) - Real-time operating systems are used to control machinery, scientific instruments and industrial systems. An RTOS typically has very little user-interface capability, and no end-user utilities, since the system will be a "sealed box" when delivered for use. A very important part of an RTOS is managing the resources of the computer so that a particular operation executes in precisely the same amount of time every time it occurs. In a complex machine, having a part move more quickly just because system resources are available may be just as catastrophic as having it not move at all because the system is busy.
  • Single-user, single task - As the name implies, this operating system is designed to manage the computer so that one user can effectively do one thing at a time. The Palm OS for Palm handheld computers is a good example of a modern single-user, single-task operating system.
  • Single-user, multi-tasking - This is the type of operating system most people use on their desktop and laptop computers today. Microsoft's Windows and Apple's MacOS platforms are both examples of operating systems that will let a single user have several programs in operation at the same time. For example, it's entirely possible for a Windows user to be writing a note in a word processor while downloading a file from the Internet while printing the text of an e-mail message.
  • Multi-user - A multi-user operating system allows many different users to take advantage of the computer's resources simultaneously. The operating system must make sure that the requirements of the various users are balanced, and that each of the programs they are using has sufficient and separate resources so that a problem with one user doesn't affect the entire community of users. Unix, VMS and mainframe operating systems, such as MVS, are examples of multi-user operating systems.
  • It's important to differentiate here between multi-user operating systems and single-user operating systems that support networking. Windows 2000 and Novell Netware can each support hundreds or thousands of networked users, but the operating systems themselves aren't true multi-user operating systems. The system administrator is the only "user" for Windows 2000 or Netware. The network support and all of the remote user logins the network enables are, in the overall plan of the operating system, a program being run by the administrative user.

    With the different types of operating systems in mind, it's time to look at the basic functions provided by an operating system.

What Does It Do?

At the simplest level, an operating system does two things:
  1. It manages the hardware and software resources of the system. In a desktop computer, these resources include such things as the processor, memory, disk space, etc. (On a cell phone, they include the keypad, the screen, the address book, the phone dialer, the battery and the network connection.)
  2. It provides a stable, consistent way for applications to deal with the hardware without having to know all the details of the hardware.
The first task, managing the hardware and software resources, is very important, as various programs and input methods compete for the attention of the central processing unit (CPU) and demand memory, storage and input/output (I/O) bandwidth for their own purposes. In this capacity, the operating system plays the role of the good parent, making sure that each application gets the necessary resources while playing nicely with all the other applications, as well as husbanding the limited capacity of the system to the greatest good of all the users and applications.

The second task, providing a consistent application interface, is especially important if there is to be more than one of a particular type of computer using the operating system, or if the hardware making up the computer is ever open to change. A consistent application program interface (API) allows a software developer to write an application on one computer and have a high level of confidence that it will run on another computer of the same type, even if the amount of memory or the quantity of storage is different on the two machines.

Even if a particular computer is unique, an operating system can ensure that applications continue to run when hardware upgrades and updates occur. This is because the operating system and not the application is charged with managing the hardware and the distribution of its resources. One of the challenges facing developers is keeping their operating systems flexible enough to run hardware from the thousands of vendors manufacturing computer equipment. Today's systems can accommodate thousands of different printers, disk drives and special peripherals in any possible combination.

The Bare Bones

Not all computers have operating systems. The computer that controls the microwave oven in your kitchen, for example, doesn't need an operating system. It has one set of tasks to perform, very straightforward input to expect (a numbered keypad and a few pre-set buttons) and simple, never-changing hardware to control. For a computer like this, an operating system would be unnecessary baggage, driving up the development and manufacturing costs significantly and adding complexity where none is required. Instead, the computer in a microwave oven simply runs a single hard-wired program all the time.

For other devices, an operating system creates the ability to:

  • serve a variety of purposes
  • interact with users in more complicated ways
  • keep up with needs that change over time
All desktop computers have operating systems. The most common are the Windows family of operating systems developed by Microsoft, the Macintosh operating systems developed by Apple and the UNIX family of operating systems (which have been developed by a whole history of individuals, corporations and collaborators). There are hundreds of other operating systems available for special-purpose applications, including specializations for mainframes, robotics, manufacturing, real-time control systems and so on.

How Operating Systems Work

If you have a computer, then you have heard about operating systems. Any desktop or laptop PC that you buy normally comes pre-loaded with Windows XP. Macintosh computers come pre-loaded with OS X. Many corporate servers use the Linux or UNIX operating systems. The operating system (OS) is the first thing loaded onto the computer -- without the operating system, a computer is useless.

More recently, operating systems have started to pop up in smaller computers as well. If you like to tinker with electronic devices, you are probably pleased that operating systems can now be found on many of the devices we use every day, from cell phones to wireless access points. The computers used in these little devices have gotten so powerful that they can now actually run an operating system and applications. The computer in a typical modern cell phone is now more powerful than a desktop computer from 20 years ago, so this progression makes sense and is a natural development. In any device that has an operating system, there's usually a way to make changes to how the device works. This is far from a happy accident; one of the reasons operating systems are made out of portable code rather than permanent physical circuits is so that they can be changed or modified without having to scrap the whole device

For a desktop computer user, this means you can add a new security update, system patch, new application or often even a new operating system entirely rather than junk your computer and start again with a new one when you need to make a change. As long as you understand how an operating system works and know how to get at it, you can in many cases change some of the ways it behaves. And, it's as true of your cell phone as it is of your computer.

The purpose of an operating system is to organize and control hardware and software so that the device it lives in behaves in a flexible but predictable way. In this article, we'll tell you what a piece of software must do to be called an operating system, show you how the operating system in your desktop computer works and give you some examples of how to take control of the other operating systems around you.

Operating systems


Operating systems

Quick links

Operating System ABCs
Operating System types
Operating System overviews
Troubleshooting
Operating System Q&A
Operating System definitions
Apple news
Linux / Unix news

Microsoft news

Operating system ABCs

An Operating System, or OS, is a software program that enables the computer hardware to communicate and operate with the computer software. Without a computer Operating System, a computer would be useless.

Operating system types

As computers have progressed and developed so have the types of operating systems. Below is a basic list of the different types of operating systems and a few examples of Operating Systems that fall into each of the categories. Many computer Operating Systems will fall into more than one of the below categories.

GUI - Short for Graphical User Interface, a GUI Operating System contains graphics and icons and is commonly navigated by using a computer mouse. See our GUI dictionary definition for a complete definition. Below are some examples of GUI Operating Systems.

System 7.x
Windows 98
Windows CE

Multi-user - A multi-user Operating System allows for multiple users to use the same computer at the same time and/or different times. See our multi-user dictionary definition for a complete definition for a complete definition. Below are some examples of multi-user Operating Systems.

Linux
Unix
Windows 2000

Multiprocessing - An Operating System capable of supporting and utilizing more than one computer processor. Below are some examples of multiprocessing Operating Systems.

Linux
Unix
Windows 2000

Multitasking - An Operating system that is capable of allowing multiple software processes to run at the same time. Below are some examples of multitasking Operating Systems.

Unix
Windows 2000

Multithreading - Operating systems that allow different parts of a software program to run concurrently. Operating systems that would fall into this category are:

Linux
Unix

Windows 2000



Troubleshooting

Common questions and answers to operating systems in general can be found on the below operating system question and answers. All other questions relating to an operating system in particular can be found through the operating system page.

Linux / Variants
MacOS
MS-DOS
IBM OS/2 Warp
Unix / Variants
Windows CE
Windows 3.x
Windows 95
Windows 98
Windows 98 SE
Windows ME
Windows NT
Windows 2000
Windows XP
Windows Vista


Index


Category:
Software

Companies:
See Page

Related Pages:

Resolved

Were you able to locate the answer to your questions?

Operating system listing

Below is a listing of many of the different types of operating systems available today, the dates they were released, the platforms they have been developed for and who developed them.

Operating system Date first released Platform Developer
AIX / AIXL Unix / Linux history can be found Various IBM
AmigaOS Currently no AmigaOS operating system history. Amiga Commodore
BSD Unix / Linux history can be found . Various BSD
Caldera Linux Unix / Linux history can be found Various SCO
Corel Linux Unix / Linux history can be found Various Corel
Debian Linux` Unix / Linux history can be found . Various GNU
DUnix Unix / Linux history can be found Various Digital
DYNIX/ptx Unix / Linux history can be found . Various IBM
HP-UX Unix / Linux history can be found . Various Hewlett Packard
IRIX Unix / Linux history can be found . Various SGI
Kondara Linux Unix / Linux history can be found. Various Kondara
Linux Unix / Linux history can be found
Various Linus Torvalds
MAC OS 8 Apple Operating System history can be found
Apple Macintosh Apple
MAC OS 9 Apple Operating System history can be found Apple Macintosh Apple
MAC OS 10 Apple Operating System history can be found
Apple Macintosh Apple
MAC OS X Apple Operating System history can be found Apple Macintosh Apple
Mandrake Linux Unix / Linux history can be found
Various Mandrake
MINIX Unix / Linux history can be found
Various MINIX
MS-DOS 1.x

MS-DOS history can be found

IBM / PC Microsoft
MS-DOS 2.x MS-DOS history can be found IBM / PC Microsoft
MS-DOS 3.x MS-DOS history can be found IBM / PC Microsoft
MS-DOS 4.x MS-DOS history can be found
IBM / PC Microsoft
MS-DOS 5.x MS-DOS history can be found IBM / PC Microsoft
MS-DOS 6.x MS-DOS history can be found IBM / PC Microsoft
NEXTSTEP Apple Operating System history can be found Various Apple
OSF/1 Unix / Linux history can be found . Various OSF
QNX Unix / Linux history can be found
Various QNX
Red Hat Linux Unix / Linux history can be found Various Red Hat
SCO Unix / Linux history can be found Various SCO
Slackware Linux Unix / Linux history can be found . Various Slackware
Sun Solaris Unix / Linux history can be found Various Sun
SuSE Linux Unix / Linux history can be found Various SuSE
System 1 Apple Operating System history can be found . Apple Macintosh Apple
System 2 Apple Operating System history can be found Apple Macintosh Apple
System 3 Apple Operating System history can be found here. Apple Macintosh Apple
System 4 Apple Operating System history can be found Apple Macintosh Apple
System 6 Apple Operating System history can be found Apple Macintosh Apple
System 7 Apple Operating System history can be found Apple Macintosh Apple
System V Unix / Linux history can be found Various System V
Tru64 Unix Unix / Linux history can be found Various Digital
Turbolinux Unix / Linux history can be found . Various Turbolinux
Ultrix Unix / Linux history can be found Various Ultrix
Unisys Unix / Linux history can be found Various Unisys
Unix Unix / Linux history can be found Various Bell labs
UnixWare Unix / Linux history can be found Various UnixWare
VectorLinux Unix / Linux history can be found Various VectorLinux
Windows 2000 Windows history can be found IBM / PC Microsoft
Windows 2003 Windows history can be found IBM / PC Microsoft
Windows 3.X Windows history can be found IBM / PC Microsoft
Windows 95 Windows history can be found . IBM / PC Microsoft
Windows 98 Windows history can be found IBM / PC Microsoft
Windows CE Windows history can be found . PDA Microsoft
Windows ME Windows history can be found . IBM / PC Microsoft
Windows NT Windows history can be found IBM / PC Microsoft
Windows Vista Windows history can be found . IBM / PC Microsoft
Windows XP Windows history can be found IBM / PC Microsoft
Xenix Unix / Linux history can be found Various Microsoft

Thursday, June 5, 2008

Emulation software

Emulation allows the use of some Windows applications without using Microsoft Windows. These include:

  • Wine - a free and open source software implementation of the Windows API, allowing one to run many Windows applications on x86-based platforms, including Linux. Wine is technically not an emulator but a "compatibility layer";[26] while an emulator effectively 'pretends' to be a different CPU, Wine instead makes use of Windows-style APIs to 'simulate' the Windows environment directly.
    • CrossOver - A Wine package with licensed fonts. Its developers are regular contributors to Wine, and focus on Wine running officially supported applications.
    • Cedega - TransGaming Technologies' proprietary fork of Wine, designed specifically for running games written for Microsoft Windows under Linux.
    • Darwine - This project intends to port and develop Wine as well as other supporting tools that will allow Darwin and Mac OS X users to run Microsoft Windows applications, and to provide Win32 API compatibility at application source code level.
  • ReactOS - An open-source OS that is intended to run the same software as Windows, originally designed to imitate Windows NT 4.0, now aiming at Windows XP compatibility. It has been in the development stage since 1996.

Windows Lifecycle Policy

Microsoft has stopped releasing updates and hotfixes for many old Windows operating systems, including all versions of Windows 9x and earlier versions of Windows NT. Windows versions prior to XP are no longer supported, with the exception of Windows 2000, which is currently in the Extended Support Period, that will end on July 13, 2010. Windows XP versions prior to SP2 are no longer supported either. Also, support for Windows XP 64-bit Edition ended after the release of the more recent Windows XP Professional x64 Edition.[citation needed] No new updates are created for unsupported versions of Windows.

Windows Defender


Windows Defender

On 6 January 2005, Microsoft released a beta version of Microsoft AntiSpyware, based upon the previously released Giant AntiSpyware. On 14 February 2006, Microsoft AntiSpyware became Windows Defender with the release of beta 2. Windows Defender is a freeware program designed to protect against spyware and other unwanted software. Windows XP and Windows Server 2003 users who have genuine copies of Microsoft Windows can freely download the program from Microsoft's web site, and Windows Defender ships as part of Windows Vista.[21]

Third-party analysis

In an article based on a report by Symantec,[22] internetnews.com has described Microsoft Windows as having the "fewest number of patches and the shortest average patch development time of the five operating systems it monitored in the last six months of 2006."[23] And the number of vulnerabilities found in Windows has significantly increased— Windows: 12+, Red Hat + Fedora: 2, Mac OS X: 1, HP-UX: 2, Solaris: 1.

A study conducted by Kevin Mitnick and marketing communications firm Avantgarde in 2004 found that an unprotected and unpatched Windows XP system with Service Pack 1 lasted only 4 minutes on the Internet before it was compromised, and an unprotected and also unpatched Windows Server 2003 system was compromised after being connected to the internet for 8 hours.[24] However, it is important to note that this study does not apply to Windows XP systems running the Service Pack 2 update (released in late 2004), which vastly improved the security of Windows XP. The computer that was running Windows XP Service Pack 2 was not compromised. The AOL National Cyber Security Alliance Online Safety Study of October 2004 determined that 80% of Windows users were infected by at least one spyware/adware product.[25] Much documentation is available describing how to increase the security of Microsoft Windows products. Typical suggestions include deploying Microsoft Windows behind a hardware or software firewall, running anti-virus and anti-spyware software, and installing patches as they become available through Windows Update.[citation needed]

Security


The Windows Security Center was introduced with Windows XP Service Pack 2.

Security has been a hot topic with Windows for many years, and even Microsoft itself has been the victim of security breaches. Consumer versions of Windows were originally designed for ease-of-use on a single-user PC without a network connection, and did not have security features built in from the outset. Windows NT and its successors are designed for security (including on a network) and multi-user PCs, but are not designed with Internet security in mind as much since, when it was first developed in the early 1990s, Internet use was less prevalent. These design issues combined with flawed code (such as buffer overflows) and the popularity of Windows means that it is a frequent target of worm and virus writers. In June 2005, Bruce Schneier's Counterpane Internet Security reported that it had seen over 1,000 new viruses and worms in the previous six months.[18]

Microsoft releases security patches through its Windows Update service approximately once a month (usually the second Tuesday of the month), although critical updates are made available at shorter intervals when necessary.[19] In Windows 2000 (SP3 and later), Windows XP and Windows Server 2003, updates can be automatically downloaded and installed if the user selects to do so. As a result, Service Pack 2 for Windows XP, as well as Service Pack 1 for Windows Server 2003, were installed by users more quickly than it otherwise might have been.[20]

History

Microsoft has taken two parallel routes in its operating systems. One route has been for the home user and the other has been for the professional IT user. The dual routes have generally led to home versions having greater multimedia support and less functionality in networking and security, and professional versions having inferior multimedia support and better networking and security.[citation needed]

The first version of Microsoft Windows, version 1.0, released in November 1985, lacked a degree of functionality and achieved little popularity, and was to compete with Apple's own operating system.[citation needed] Windows 1.0 is not a complete operating system; rather, it extends MS-DOS. Microsoft Windows version 2.0 was released in November, 1987 and was slightly more popular than its predecessor. Windows 2.03 (release date January 1988) had changed the OS from tiled windows to overlapping windows. The result of this change led to Apple Computer filing a suit against Microsoft alleging infringement on Apple's copyrights.[9][10]

A Windows for Workgroups 3.11 desktop.


A Windows for Workgroups 3.11 desktop.

Microsoft Windows version 3.0, released in 1990, was the first Microsoft Windows version to achieve broad commercial success, selling 2 million copies in the first six months.[1][2] It featured improvements to the user interface and to multitasking capabilities. It received a facelift in Windows 3.1, made generally available on March 1, 1992. Windows 3.1 support ended on December 31, 2001.[11]

In July 1993, Microsoft released Windows NT based on a new kernel. NT was considered to be the professional OS and was the first Windows version to utilize preemptive multitasking.[citation needed]. Windows NT would later be retooled to also function as a home operating system, with Windows XP.

On August 24th 1995, Microsoft released Windows 95, a new, and major, consumer version that made further changes to the user interface, and also used preemptive multitasking. Windows 95 was designed to replace not only Windows 3.1, but also Windows for Workgroups, and MS-DOS. It was also the first Windows operating system to use Plug and Play capabilities. The changes Windows 95 brought to the desktop were revolutionary, as opposed to evolutionary, such as those in Windows 98 and Windows Me. Mainstream support for Windows 95 ended on December 31, 2000 and extended support for Windows 95 ended on December 31, 2001.[12]

The next in the consumer line was Microsoft Windows 98 released on June 25th, 1998. It was substantially criticized for its slowness and for its unreliability compared with Windows 95, but many of its basic problems were later rectified with the release of Windows 98 Second Edition in 1999.[citation needed] Mainstream support for Windows 98 ended on June 30, 2002 and extended support for Windows 98 ended on July 11, 2006.[13]

As part of its "professional" line, Microsoft released Windows 2000 in February 2000. The consumer version following Windows 98 was Windows Me (Windows Millennium Edition). Released in September 2000, Windows Me implemented a number of new technologies for Microsoft: most notably publicized was "Universal Plug and Play."

In October 2001, Microsoft released Windows XP, a version built on the Windows NT kernel that also retained the consumer-oriented usability of Windows 95 and its successors. This new version was widely praised in computer magazines.[14] It shipped in two distinct editions, "Home" and "Professional", the former lacking many of the superior security and networking features of the Professional edition. Additionally, the first "Media Center" edition was released in 2002,[15] with an emphasis on support for DVD and TV functionality including program recording and a remote control. Mainstream support for Windows XP will continue until April 14, 2009 and extended support will continue until April 8, 2014.[16]

In April 2003, Windows Server 2003 was introduced, replacing the Windows 2000 line of server products with a number of new features and a strong focus on security; this was followed in December 2005 by Windows Server 2003 R2.

On January 30, 2007 Microsoft released Windows Vista. It contains a number of new features, from a redesigned shell and user interface to significant technical changes, with a particular focus on security features. It is available in a number of different editions, and has been subject to some criticism.

Timeline of releases

Release date

Product name

Version

Notes

Last IE

November 1985

Windows 1.01

1.01

Unsupported

-

November 1987

Windows 2.03

2.03

Unsupported

-

March 1989

Windows 2.11

2.11

Unsupported

-

May 1990

Windows 3.0

3.0

Unsupported

-

March 1992

Windows 3.1

3.1

Unsupported

5

October 1992

Windows For Workgroups 3.1

3.1

Unsupported

5

July 1993

Windows NT 3.1

NT 3.1

Unsupported

5

December 1993

Windows For Workgroups 3.11

3.11

Unsupported

5

January 1994

Windows 3.2 (released in Simplified Chinese only)

3.2

Unsupported

5

September 1994

Windows NT 3.5

NT 3.5

Unsupported

5

May 1995

Windows NT 3.51

NT 3.51

Unsupported

5

August 1995

Windows 95

4.0.950

Unsupported

5

July 1996

Windows NT 4.0

NT 4.0

Unsupported

6

June 1998

Windows 98

4.10.1998

Unsupported

6

May 1999

Windows 98 SE

4.10.2222

Unsupported

6

February 2000

Windows 2000

NT 5.0.3700.6690

Extended Support until July 13, 2010[17]

6

September 2000

Windows Me

4.90.3000

Unsupported

6

October 2001

Windows XP

NT 5.1.2600

Current for SP2 and SP3 (RTM and SP1 unsupported).

8

March 2003

Windows XP 64-bit Edition 2003

NT 5.2.3790

Unsupported

6

April 2003

Windows Server 2003

NT 5.2.3790

Current for SP1, R2, SP2 (RTM unsupported).

8

April 2005

Windows XP Professional x64 Edition

NT 5.2.3790

Current

8

July 2006

Windows Fundamentals for Legacy PCs

NT 5.1.2600

Current

-

November 2006 (volume licensing)/January 2007 (retail)

Windows Vista

NT 6.0.6000

Current. Version Changed to NT 6.0.6001 with SP1 (February 4th 08)

8

July 2007

Windows Home Server

NT 5.2.4500

Current

-

February 2008

Windows Server 2008

NT 6.0.6001

Current

8

2010 (planned)

Windows 7 (codenamed Blackcomb, then Vienna)

NT 7.0

Future release