Operating system: Difference between revisions
rm; out of context not discussed in body |
Golftheman (talk | contribs) Fixing missing information from the different OS architectures and typical errors from mistaking them to same thing. |
||
Line 1: | Line 1: | ||
{{OS}} |
{{OS}} |
||
An '''operating system''' ('''OS''') is [[software]] |
An '''operating system''' ('''OS''') is [[software]] that operates and manages the computer hardware and software and provides services for efficient execution of various [[application software]] by [[system call]]s<!-- There are three architectures for the operating systems, monolithic, server-client and layered and they all are build with different ideas.. |
||
For hardware functions such as input and output and [[dynamic memory allocation|memory allocation]], the operating system acts as an intermediary between |
For hardware functions such as input and output and [[dynamic memory allocation|memory allocation]], the operating system acts as an intermediary between programs and the computer hardware,<ref>Stallings, p. 6.</ref><ref>Dhotre, p. 1</ref> although the application code is usually executed directly by the hardware, but will frequently call the OS or be interupted by it. Operating systems are found on almost any device that contains a computer—from [[cellular phone]]s and [[video game console]]s to [[supercomputers]] and [[web servers]]<!--Embedded systems does not always have a OS. They can be controlled by microcontroller (chip) or have only a machine code. In rare cases a very simple OS-->. |
||
Examples of popular modern operating systems for personal computers are [[Microsoft Windows]], [[Mac OS X]], and [[ |
Examples of popular modern operating systems for personal computers are [[Microsoft Windows]], [[Mac OS X]], and [[Linux]].<ref name="netapplications">{{cite web| url=http://marketshare.hitslink.com/operating-system-market-share.aspx?qprid=10| title=Operating System Market Share| publisher=Net Applications}}</ref> |
||
==Summary== |
==Summary== |
||
Early computers were built to perform a series of single tasks, like a calculator. Operating systems did not exist in their modern and more complex forms until the early 1960s.<ref>Hansen, pp. 4-7</ref> Some operating system features were developed in the 1950s, such as programs that could automatically run different programs in succession to speed up processing. Hardware features were added that enabled use of [[Runtime library|runtime libraries]], [[Programmable Interrupt Controller|interrupts]], and [[parallel processing]]. When personal computers by companies such as [[Apple Inc.]], [[Atari]], [[IBM]] and [[Amiga]] became popular in the 1980s, vendors added operating system features that had previously become widely used on mainframe and mini computers. Later, many |
Early computers were built to perform a series of single tasks, like a calculator. Operating systems did not exist in their modern and more complex forms until the early 1960s.<ref>Hansen, pp. 4-7</ref> Some operating system features were developed in the 1950s, such as programs that could automatically run different programs in succession to speed up processing. Hardware features were added that enabled use of [[Runtime library|runtime libraries]], [[Programmable Interrupt Controller|interrupts]], and [[parallel processing]]. When personal computers by companies such as [[Apple Inc.]], [[Atari]], [[IBM]] and [[Amiga]] became popular in the 1980s, vendors added operating system features that had previously become widely used on mainframe and mini computers. Later, many softwares what offered [[graphical user interface]] were developed specifically for personal computer operating systems. |
||
An operating system consists |
An operating system can consists from many parts depending is the architecture monolithic or server-client. In server-client architecute one of the most important component is the [[kernel (computing)|kernel]], which controls low-level processes that the average user usually cannot see: it controls how memory is read and writte, the order in which processes are executed, how information is received and sent by devices like the monitor, keyboard and mouse, and deciding how to interpret information received by networks. The [[user interface]] is not usually the part of the operating system but separated software what allows user interaction with the computer easily<ref name="Modern">{{cite web| url=http://www.amazon.com/gp/reader/0130313580/ref=sib_dp_pt/103-7158569-1619062#reader-link| title=Modern Operating Systems, teachbook}}</ref>, allowing them to control and use programs using pointing devices instead typing commands. Another similar feature is an [[Application programming interface]] what is called as system call, that let programs interact with operating system. |
||
==History== |
==History== |
||
Line 49: | Line 49: | ||
===Microcomputers=== |
===Microcomputers=== |
||
[[Image:PC-DOS 1.10 screenshot.png|thumb|PC-DOS was an early OS for |
[[Image:PC-DOS 1.10 screenshot.png|thumb|PC-DOS was an early OS for IBM-PC that featured a command line interface.]] |
||
[[Image:Apple Macintosh Desktop.png|thumb|Mac OS by [[Apple Computers]] became the first |
[[Image:Apple Macintosh Desktop.png|thumb|Mac OS by [[Apple Computers]] became the first commercially successes OS to feature a graphical user interface- Before it there was [[Xerox Star]]. Many of Star features such as windows and icons would later become commonplace in GUIs.]] |
||
The first [[microcomputer]]s did not have the capacity or need for the elaborate operating systems that had been developed for mainframes and minis; minimalistic operating systems were developed, often loaded from [[Read-only memory|ROM]] and known as ''Monitors''. One notable early disk-based operating system was [[CP/M]], which was supported on many early microcomputers and was closely imitated in [[MS-DOS]], which became wildly popular as the operating system chosen for the [[IBM PC]] (IBM's version of it was called IBM DOS or [[PC-DOS|PC DOS]]), its successors making [[Microsoft]]. In the 80's Apple Computer Inc. (now [[Apple Inc.]]) abandoned its popular [[Apple II]] series of microcomputers to introduce the [[Apple Macintosh]] computer with an innovative [[Graphical User Interface]] (GUI) to the [[Mac OS]]. |
The first [[microcomputer]]s did not have the capacity or need for the elaborate operating systems that had been developed for mainframes and minis; minimalistic operating systems were developed, often loaded from [[Read-only memory|ROM]] and known as ''Monitors''. One notable early disk-based operating system was [[CP/M]], which was supported on many early microcomputers and was closely imitated in [[MS-DOS]], which became wildly popular as the operating system chosen for the [[IBM PC]] (IBM's version of it was called IBM DOS or [[PC-DOS|PC DOS]]), its successors making [[Microsoft]]. In the 80's Apple Computer Inc. (now [[Apple Inc.]]) abandoned its popular [[Apple II]] series of microcomputers to introduce the [[Apple Macintosh]] computer with an innovative [[Graphical User Interface]] (GUI) to the [[Mac OS]]. |
||
The introduction of the [[Intel 80386]] [[CPU]] chip with [[32-bit]] architecture and [[paging]] capabilities, provided personal computers with the ability to run [[Computer multitasking|multitasking]] operating systems like those of earlier [[minicomputers]] and [[mainframes]]. Microsoft responded to this progress by hiring [[Dave Cutler]], who had developed the [[OpenVMS|VMS]] operating system for [[Digital Equipment Corporation]]. He would lead the development of the [[Windows NT]] operating system, which continues to serve as the basis for Microsoft's operating systems line. [[Steve Jobs]], a co-founder of [[Apple Inc.]], started [[NeXT]] Computer Inc., which developed the [[Unix-like]] [[NEXTSTEP]] operating system. NEXTSTEP would later be acquired by [[Apple Inc.]] and used, along with code from [[FreeBSD]] as the core of Mac OS X. |
The introduction of the [[Intel 80386]] [[CPU]] chip with [[32-bit]] architecture and [[paging]] capabilities, provided personal computers with the ability to run [[Computer multitasking|multitasking]] operating systems like those of earlier [[minicomputers]] and [[mainframes]]. Microsoft responded to this progress by hiring [[Dave Cutler]], who had developed the [[OpenVMS|VMS]] operating system for [[Digital Equipment Corporation]]. He would lead the development of the [[Windows NT]] operating system, which continues to serve as the basis for Microsoft's operating systems line. [[Steve Jobs]], a co-founder of [[Apple Inc.]], started [[NeXT]] Computer Inc., which developed the [[Unix-like]] [[NEXTSTEP]] operating system. NEXTSTEP would later be acquired by [[Apple Inc.]] and used, along with code from [[FreeBSD]] as the core of Mac OS X. |
||
The [[GNU project]] was started by activist and programmer [[Richard Stallman]] with the goal of a complete [[free software]] replacement to the proprietary [[UNIX]] operating system. While the project was highly successful in duplicating the functionality of various parts of UNIX, development of the [[GNU Hurd]] |
The [[GNU project]] was started by activist and programmer [[Richard Stallman]] with the goal of a complete [[free software]] replacement to the proprietary [[UNIX]] operating system. While the project was highly successful in duplicating the functionality of various parts of UNIX system, development of the [[GNU Hurd]] operating system proved to be unproductive of missing microkernel, what place [[GNU Mach]] became to fill. In 1991 Finnish computer science student [[Linus Torvalds]], released the first version of the [[Linux kernel|Linux]] what was following the monolithic operating system architecture instead newer Server-Client<ref name="architectures">{{cite web| url=http://www.gridbus.org/~raj/microkernel/chap2.pdf| title=Operating System architectures}}</ref><ref name="modular">{{cite web| url=http://www.usenix.org/publications/login/2006-04/openpdfs/herder.pdf| title=Modular system programming in Minix 3}}</ref>. To it was soon ported the the GNU [[system software]] to form a complete development platform<ref name="Logic">{{cite web| url=http://www.topology.org/human/?a=/linux/lingl.html| title=GNU/Linux naming scientifical problems}}</ref>. Since then, the operating system name has been "Linux" instead first name [[History_of_Linux|Freax]] but with wrong reasons to it has been referred as GNU/Linux by the Stallman and the [[Free Software Foundation]]<ref name="Logic">{{cite web| url=http://www.topology.org/human/?a=/linux/lingl.html| title=GNU/Linux naming scientifical problems}}</ref>. The Berkeley Software Distribution, known as [[BSD (operating system)|BSD]], is the UNIX derivative distributed by the University of California, Berkeley, starting in the 1970s. Freely distributed and [[ported]] to many minicomputers, it eventually also gained a following for use on PCs, mainly as [[FreeBSD]], [[NetBSD]] and [[OpenBSD]]. |
||
==Examples of operating systems== |
==Examples of operating systems== |
||
Line 76: | Line 76: | ||
[[Ken Thompson]] wrote [[B (programming language)|B]], mainly based on [[BCPL]], which he used to write Unix, based on his experience in the [[MULTICS]] project. B was replaced by [[C (programming language)|C]], and Unix developed into a large, complex family of inter-related operating systems which have been influential in every modern operating system (see [[History of operating systems|History]]). |
[[Ken Thompson]] wrote [[B (programming language)|B]], mainly based on [[BCPL]], which he used to write Unix, based on his experience in the [[MULTICS]] project. B was replaced by [[C (programming language)|C]], and Unix developed into a large, complex family of inter-related operating systems which have been influential in every modern operating system (see [[History of operating systems|History]]). |
||
The ''[[Unix-like]]'' family is a diverse group of operating systems, with several major sub-categories including [[System V]], [[BSD (operating system)|BSD]], and [[ |
The ''[[Unix-like]]'' family is a diverse group of operating systems, with several major sub-categories including [[System V]], [[BSD (operating system)|BSD]], and [[Linux]]. The name "[[UNIX]]" is a trademark of [[The Open Group]] which licenses it for use with any operating system that has been shown to conform to their definitions. "Unix-like" or "Unix clone" is commonly used to refer to the large set of operating systems which resemble the original Unix. |
||
Unix-like systems run on a wide variety of machine architectures. They are used heavily for [[server (computing)|servers]] in business, as well as [[workstation]]s in academic and engineering environments. [[Free software|Free]] Unix variants, such as [[GNU/Linux]] and [[Berkeley Software Distribution|BSD]], are popular in these areas. |
Unix-like systems run on a wide variety of machine architectures. They are used heavily for [[server (computing)|servers]] in business, as well as [[workstation]]s in academic and engineering environments. [[Free software|Free]] Unix variants, such as [[GNU/Linux]] and [[Berkeley Software Distribution|BSD]], are popular in these areas. |
||
Some Unix variants like HP's [[HP-UX]] and IBM's [[AIX operating system|AIX]] are designed to run only on that vendor's hardware. Others, such as [[Solaris Operating System| |
Some Unix variants like HP's [[HP-UX]] and IBM's [[AIX operating system|AIX]] are designed to run only on that vendor's hardware. Others, such as [[Solaris Operating System|SunOS]], can run on multiple types of hardware, including [[x86]] servers and PCs. Apple's [[Mac OS X]], a so called "[[hybrid kernel]]" variant from derived from [[NeXTSTEP]], [[Mach (kernel)|Mach]], and [[FreeBSD]], has replaced Apple's earlier (non-Unix) Mac OS. |
||
Unix interoperability was sought by establishing the [[POSIX]] standard. The POSIX standard can be applied to any operating system, although it was originally created for various Unix variants. |
Unix interoperability was sought by establishing the [[POSIX]] standard. The POSIX standard can be applied to any operating system, although it was originally created for various Unix variants. |
||
Line 88: | Line 88: | ||
{{Main|Berkeley Software Distribution}} |
{{Main|Berkeley Software Distribution}} |
||
A subgroup of the Unix family is the [[Berkeley Software Distribution]] family, which includes [[FreeBSD]], [[NetBSD]], and [[ |
A subgroup of the Unix family is the [[Berkeley Software Distribution]] family, which includes [[FreeBSD]], [[NetBSD]], [[OpenBSD]] and [[Dragon Fly BSD]]. These operating systems are most commonly found on [[webserver]]s, although they can also function as a personal computer OS. The internet owes much of its existence to BSD, as many of the protocols now commonly used by computers to connect, send and receive data over a network were widely implemented and refined in BSD. The [[world wide web]] was also first demonstrated on a number of computers running an OS based on BSD called [[NextStep]]. |
||
BSD has its roots in Unix. In 1974, [[University of California, Berkeley]] installed its first Unix system. Over time, students and staff in the computer science department there began adding new programs to make things easier, such as text editors. When Berkely received new [[VAX]] computers in 1978 with Unix installed, the school's undergraduates modified Unix even more in order to take advantage of the computer's hardware possibilities. The [[Defense Advanced Research Projects Agency]] of the US [[United States Department of Defense|Department of Defense]] took interest, and decided to fund the project. Many schools, corporations, and government organizations took notice and started to use Berkeley's version of Unix instead of the official one distributed by AT&T. [[Steve Jobs]], upon leaving Apple Inc. in 1985, formed [[NeXT|NeXT Inc.]], a company that manufactured high-end computers running on a variation of BSD called [[NeXTSTEP]]. One of these computers was used by [[Tim Berners-Lee]] as the first webserver to create the World Wide Web. |
BSD has its roots in Unix. In 1974, [[University of California, Berkeley]] installed its first Unix system. Over time, students and staff in the computer science department there began adding new programs to make things easier, such as text editors. When Berkely received new [[VAX]] computers in 1978 with Unix installed, the school's undergraduates modified Unix even more in order to take advantage of the computer's hardware possibilities. The [[Defense Advanced Research Projects Agency]] of the US [[United States Department of Defense|Department of Defense]] took interest, and decided to fund the project. Many schools, corporations, and government organizations took notice and started to use Berkeley's version of Unix instead of the official one distributed by AT&T. [[Steve Jobs]], upon leaving Apple Inc. in 1985, formed [[NeXT|NeXT Inc.]], a company that manufactured high-end computers running on a variation of BSD called [[NeXTSTEP]]. One of these computers was used by [[Tim Berners-Lee]] as the first webserver to create the World Wide Web. |
||
Line 110: | Line 110: | ||
{{Main|GNU|Linux}} |
{{Main|GNU|Linux}} |
||
[[File:Ubuntu 10.04 LTS.png|300px|thumb|[[Ubuntu (operating system)|Ubuntu]], a common desktop distribution of Linux]] |
[[File:Ubuntu 10.04 LTS.png|300px|thumb|[[Ubuntu (operating system)|Ubuntu]], a common desktop distribution of Linux]] |
||
Linux is the |
Linux is the name for a UNIX like operating system that can be used on a wide range of devices from supercomputers to wristwatches. The Linux is released under an GNU GPL, so anyone can read and modify its code. It has been modified to run on a large variety of electronics. Although estimates suggest it is used on only 0.5-2% of all personal computers{{Citation needed|date=July 2010}}, it has been widely adopted for use in servers and embedded systems{{Citation needed|date=July 2010}} (such as cell phones). Linux has superseded Unix in most places{{Which?|date=July 2010}}, and is used on the 10 most powerful supercomputers in the world{{Citation needed|date=July 2010}}. |
||
The GNU project is a mass collaboration of programmers who seek to create a completely free and open operating system that was similar to Unix but with completely original code. It was started in 1983 by [[Richard Stallman]] |
The GNU project is a mass collaboration of programmers who seek to create a completely free and open operating system that was similar to Unix but with completely original code. It was started in 1983 by [[Richard Stallman]]. For this reason, Linux is often called [[GNU/Linux]]. Thousands of pieces of software for virtually every system are licensed under the [[GNU General Public License]]. Meanwhile, the Linux began as a hobby of [[Linus Torvalds]], a university student from Finland. In 1991, Torvalds began work on it, and posted information about his project on a newsgroup for computer students and programmers. He received a wave of support and volunteers who ended up creating a full-fledged monolithic operating system<ref name="Modern">{{cite web| url=http://www.amazon.com/gp/reader/0130313580/ref=sib_dp_pt/103-7158569-1619062#reader-link| title=Modern Operating Systems, teachbook}}</ref>. Programmers from GNU took notice, and members of both projects worked to integrate the finished GNU parts on the Linux operating system in order to create a full-fledged software system. |
||
====Google Chrome OS==== |
====Google Chrome OS==== |
||
Line 118: | Line 118: | ||
{{Main|Google Chrome OS}} |
{{Main|Google Chrome OS}} |
||
Chrome is an |
Chrome is an distribution of the Linux operating system and designed by [[Google]]. Chrome targets computer users that spend most of their time on the internet—it is technically only a web browser with no other applications, and relies on [[internet application]]s used in the web browser to accomplish tasks such as word processing and media viewing. |
||
===Other=== |
===Other=== |
||
Line 124: | Line 124: | ||
==Components== |
==Components== |
||
The |
The functions of an operating system all exist in order to make the different parts of a computer work together. All software—from financial databases to film editors—needs to go through the operating system in order to use any of the hardware, whether it be as simple as a mouse or keyboard or complex as an internet connection. The process how the data is processed depends from the operating system architecture. |
||
===The user interface=== |
===The user interface=== |
||
Line 130: | Line 130: | ||
[[File:KDE 4.png|thumb|An example of a graphical user interface. Programs take the form of images on the screen, and the files, folders, and applications take the form of icons and symbols. A mouse is used to navigate the computer.]] |
[[File:KDE 4.png|thumb|An example of a graphical user interface. Programs take the form of images on the screen, and the files, folders, and applications take the form of icons and symbols. A mouse is used to navigate the computer.]] |
||
{{Main|User Interface}} |
{{Main|User Interface}} |
||
Every computer that receives some sort of human input needs a user interface, which allows a person to interact with the computer. While devices like keyboards, mice and touchscreens make up the |
Every computer that receives some sort of human input needs a user interface, which allows a person to interact with the computer. While devices like keyboards, mice and touchscreens make up the user interface with start of this task, the software makes up the graphical or text user interface for it. The two most common forms of a user interface have historically been the [[Command-line interface]], where computer commands are typed out line-by-line, and the [[Graphical user interface]], where a visual environment (most commonly with windows, buttons, and icons) is present. |
||
====Graphical user interfaces==== |
====Graphical user interfaces==== |
||
Most of the modern computer systems support [[graphical user interface]]s (GUI), and often include them. In some computer systems, such as the original implementations of [[Microsoft Windows]] and the [[Mac OS]], the GUI is integrated into the |
Most of the modern computer systems support [[graphical user interface]]s (GUI), and often include them. In some computer systems, such as the original implementations of [[Microsoft Windows]] and the [[Mac OS]], the GUI is integrated into the operating system <!-- Windows 1.x-3.x was not integrated to the OS. They were simply desktop environments on the OS. It all depends is the operating system monolithic, server-client or layered by its architecture --> . |
||
While technically a graphical user interface is not an operating system service, incorporating support for one into the operating system |
While technically a graphical user interface is not an operating system service, incorporating support for one into the operating system can allow the GUI to be more responsive by reducing the number of [[context switch]]es required for the GUI to perform its output functions. Other operating systems are [[modularity (programming)|modular]], separating the graphics subsystem from the microkernel or whole the Operating System. In the 1980s UNIX, VMS and many others had operating systems that were built this way. Linux and XNU are also built this way. Modern releases of Microsoft NT such as [[Windows Vista| NT 6.0]] implement a graphics subsystem that is mostly in user-space, however versions between [[Windows NT 4.0|NT 4.0]] and [[Windows Server 2003|NT 5.2]]'s graphics drawing routines exist mostly in kernel space. [[Windows 9x]] series had very little distinction between the interface and the operating system <!-- the windows 9x included many OS services itself what were not part of the kernel -->. |
||
Many computer operating systems allow the user to install or create any user interface they desire. The [[X Window System]] in conjunction with [[GNOME]] or [[KDE]] is a commonly found setup on most Unix and [[Unix-like]] (BSD, |
Many computer operating systems allow the user to install or create any user interface they desire. The [[X Window System]] in conjunction with [[GNOME]] or [[KDE SC]] is a commonly found setup on most Unix and [[Unix-like]] (BSD, Linux, Solaris) systems. A number of [[Windows shell replacement]]s have been released for Microsoft Windows, which offer alternatives to the included [[Windows shell]], but the window manager itself cannot be separated from Windows. |
||
Numerous Unix-based GUIs have existed over time, most derived from X11. Competition among the various vendors of Unix (HP, IBM, Sun) led to much fragmentation, though an effort to standardize in the 1990s to [[Common Open Software Environment|COSE]] and [[Common Desktop Environment|CDE]] failed for the most part due to various reasons, eventually eclipsed by the widespread adoption of GNOME and KDE. Prior to [[free software]]-based toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon which CDE was developed). |
Numerous Unix-based GUIs have existed over time, most derived from X11. Competition among the various vendors of Unix (HP, IBM, Sun) led to much fragmentation, though an effort to standardize in the 1990s to [[Common Open Software Environment|COSE]] and [[Common Desktop Environment|CDE]] failed for the most part due to various reasons, eventually eclipsed by the widespread adoption of GNOME and KDE. Prior to [[free software]]-based toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon which CDE was developed). |
||
Line 146: | Line 146: | ||
[[Image:Kernel Layout.svg|thumb|A kernel connects the application software to the hardware of a computer.]] |
[[Image:Kernel Layout.svg|thumb|A kernel connects the application software to the hardware of a computer.]] |
||
{{Main|Kernel (computing)}} |
{{Main|Kernel (computing)}} |
||
With the aid of the [[firmware]] and [[device drivers]], the operating system provides the most basic level of control over all of the computer's hardware devices. It manages memory access for programs in the [[RAM]], it determines which programs get access to which hardware resources, it sets up or resets the CPU's operating states for optimal operation at all times, and it organizes the data for long-term [[non-volatile storage]] with [[file systems]] on such media as disks, tapes, flash memory, etc. |
With the aid of the [[firmware]] and [[device drivers]], the operating system provides the most basic level of control over all of the computer's hardware devices. It manages memory access for programs in the [[RAM]], it determines which programs get access to which hardware resources, it sets up or resets the CPU's operating states for optimal operation at all times, and it organizes the data for long-term [[non-volatile storage]] with [[file systems]] on such media as disks, tapes, flash memory, etc. There are three different architectures for the operating system and the OS structure is different all of them. The monolithic kernel is operating system alone. Server-Client architecture has small microkernel and modules what are called servers, what compiles a operating system. And a layered architecture develops a OS where every layere use services under it and offers own services other parts top of it<ref name="architectures">{{cite web| url=http://www.gridbus.org/~raj/microkernel/chap2.pdf| title=Operating System architectures}}</ref><ref name="Modern">{{cite web| url=http://www.amazon.com/gp/reader/0130313580/ref=sib_dp_pt/103-7158569-1619062#reader-link| title=Modern Operating Systems, teachbook}}</ref>. |
||
====Program execution==== |
====Program execution==== |
Revision as of 23:11, 31 August 2010
Operating systems |
---|
![]() |
Common features |
An operating system (OS) is software that operates and manages the computer hardware and software and provides services for efficient execution of various application software by system calls.
Examples of popular modern operating systems for personal computers are Microsoft Windows, Mac OS X, and Linux.[1]
Summary
Early computers were built to perform a series of single tasks, like a calculator. Operating systems did not exist in their modern and more complex forms until the early 1960s.[2] Some operating system features were developed in the 1950s, such as programs that could automatically run different programs in succession to speed up processing. Hardware features were added that enabled use of runtime libraries, interrupts, and parallel processing. When personal computers by companies such as Apple Inc., Atari, IBM and Amiga became popular in the 1980s, vendors added operating system features that had previously become widely used on mainframe and mini computers. Later, many softwares what offered graphical user interface were developed specifically for personal computer operating systems.
An operating system can consists from many parts depending is the architecture monolithic or server-client. In server-client architecute one of the most important component is the kernel, which controls low-level processes that the average user usually cannot see: it controls how memory is read and writte, the order in which processes are executed, how information is received and sent by devices like the monitor, keyboard and mouse, and deciding how to interpret information received by networks. The user interface is not usually the part of the operating system but separated software what allows user interaction with the computer easily[3], allowing them to control and use programs using pointing devices instead typing commands. Another similar feature is an Application programming interface what is called as system call, that let programs interact with operating system.
History
![](http://upload.wikimedia.org/wikipedia/en/thumb/d/d8/Manchester_Mark2.jpg/220px-Manchester_Mark2.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/IBM360-65-1.corestore.jpg/220px-IBM360-65-1.corestore.jpg)
In the early 1950s, a computer could execute only one program at a time. Each user had sole use of the computer and would arrive at a scheduled time with program and data on punched paper cards and tape. The program would be loaded into the machine, and the machine would be set to work until the program completed or crashed. Programs could generally be debugged via a front panel using toggle switches and panel lights. It is said that Alan Turing was a master of this on the early Manchester Mark 1 machine, and he was already deriving the primitive conception of an operating system from the principles of the Universal Turing machine.[citation needed]
Later machines came with libraries of software, which would be linked to a user's program to assist in operations such as input and output and generating computer code from human-readable symbolic code. This was the genesis of the modern-day operating system. However, machines still ran a single job at a time. At Cambridge University in England the job queue was at one time a washing line from which tapes were hung with different colored clothes-pegs to indicate job-priority.
Mainframes
Through the 1950s, many major features were pioneered in the field of operating systems, including batch processing, input/output interrupt, buffering, multitasking, spooling, runtime libraries, and programs for sorting records in files. These features were included or not included in application software at the option of application programmers, rather than in a separate operating system used by all applications. In 1959 the SHARE Operating System was released as an integrated utility for the IBM 704, 709, and 7090 mainframes.
During the 1960s, IBM's OS/360 introduced the concept of a single OS spanning an entire product line was crucial for the success of System/360. IBM's current mainframe operating systems are distant descendants of this original system and applications written for OS/360 can still be run on modern machines.[citation needed] In the mid-'70s, MVS, a descendant of OS/360, offered the first[citation needed] implementation of using RAM as a transparent cache for data.
OS/360 also pioneered the concept that the operating system keeps track of all of the system resources that are used, including program and data space allocation in main memory and file space in secondary storage, and file locking during update. When the process is terminated for any reason, all of these resources are re-claimed by the operating system.
The alternative CP-67 system for the S/360-67 started a whole line of IBM operating systems focused on the concept of virtual machines. Other operating systems used on IBM S/360 series mainframes included systems developed by IBM: DOS/360 (Disk Operating System), TSS/360 (Tape Operating System), TOS/360, BOS/360 (Basic Operating System), and ACP (Airline Control Program), as well as a few non-IBM systems: MTS (Michigan Terminal System) and MUSIC (Multi-User System for Interactive Computing).
Control Data Corporation developed the SCOPE operating system in the 1960s, for batch processing. In cooperation with the University of Minnesota, the KRONOS and later the NOS operating systems were developed during the 1970s, which supported simultaneous batch and timesharing use. Like many commercial timesharing systems, its interface was an extension of the Dartmouth BASIC operating systems, one of the pioneering efforts in timesharing and programming languages. In the late 1970s, Control Data and the University of Illinois developed the PLATO operating system, which used plasma panel displays and long-distance time sharing networks. Plato was remarkably innovative for its time, featuring real-time chat, and multi-user graphical games. Burroughs Corporation introduced the B5000 in 1961 with the MCP, (Master Control Program) operating system. The B5000 was a stack machine designed to exclusively support high-level languages with no machine language or assembler, and indeed the MCP was the first OS to be written exclusively in a high-level language – ESPOL, a dialect of ALGOL. MCP also introduced many other ground-breaking innovations, such as being the first commercial implementation of virtual memory. During development of the AS400, IBM made an approach to Burroughs to licence MCP to run on the AS400 hardware. This proposal was declined by Burroughs management to protect its existing hardware production. MCP is still in use today in the Unisys ClearPath/MCP line of computers.
UNIVAC, the first commercial computer manufacturer, produced a series of EXEC operating systems. Like all early main-frame systems, this was a batch-oriented system that managed magnetic drums, disks, card readers and line printers. In the 1970s, UNIVAC produced the Real-Time Basic (RTB) system to support large-scale time sharing, also patterned after the Dartmouth BC system.
General Electric and MIT developed General Electric Comprehensive Operating Supervisor (GECOS), which introduced the concept of ringed security privilege levels. After acquisition by Honeywell it was renamed to General Comprehensive Operating System (GCOS).
Digital Equipment Corporation developed many operating systems for its various computer lines, including TOPS-10 and TOPS-20 time sharing systems for the 36-bit PDP-10 class systems. Prior to the widespread use of UNIX, TOPS-10 was a particularly popular system in universities, and in the early ARPANET community.
In the late 1960s through the late 1970s, several hardware capabilities evolved that allowed similar or ported software to run on more than one system. Early systems had utilized microprogramming to implement features on their systems in order to permit different underlying architecture to appear to be the same as others in a series. In fact most 360's after the 360/40 (except the 360/165 and 360/168) were microprogrammed implementations. But soon other means of achieving application compatibility were proven to be more significant.
The enormous investment in software for these systems made since 1960s caused most of the original computer manufacturers to continue to develop compatible operating systems along with the hardware. The notable supported mainframe operating systems include:
- Burroughs MCP – B5000,1961 to Unisys Clearpath/MCP, present.
- IBM OS/360 – IBM System/360, 1966 to IBM z/OS, present.
- IBM CP-67 – IBM System/360, 1967 to IBM z/VM, present.
- UNIVAC EXEC 8 – UNIVAC 1108, 1967, to OS 2200 Unisys Clearpath Dorado, present.
Microcomputers
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/PC_DOS_1.10_screenshot.png/220px-PC_DOS_1.10_screenshot.png)
![](http://upload.wikimedia.org/wikipedia/en/thumb/5/50/Apple_Macintosh_Desktop.png/220px-Apple_Macintosh_Desktop.png)
The first microcomputers did not have the capacity or need for the elaborate operating systems that had been developed for mainframes and minis; minimalistic operating systems were developed, often loaded from ROM and known as Monitors. One notable early disk-based operating system was CP/M, which was supported on many early microcomputers and was closely imitated in MS-DOS, which became wildly popular as the operating system chosen for the IBM PC (IBM's version of it was called IBM DOS or PC DOS), its successors making Microsoft. In the 80's Apple Computer Inc. (now Apple Inc.) abandoned its popular Apple II series of microcomputers to introduce the Apple Macintosh computer with an innovative Graphical User Interface (GUI) to the Mac OS.
The introduction of the Intel 80386 CPU chip with 32-bit architecture and paging capabilities, provided personal computers with the ability to run multitasking operating systems like those of earlier minicomputers and mainframes. Microsoft responded to this progress by hiring Dave Cutler, who had developed the VMS operating system for Digital Equipment Corporation. He would lead the development of the Windows NT operating system, which continues to serve as the basis for Microsoft's operating systems line. Steve Jobs, a co-founder of Apple Inc., started NeXT Computer Inc., which developed the Unix-like NEXTSTEP operating system. NEXTSTEP would later be acquired by Apple Inc. and used, along with code from FreeBSD as the core of Mac OS X.
The GNU project was started by activist and programmer Richard Stallman with the goal of a complete free software replacement to the proprietary UNIX operating system. While the project was highly successful in duplicating the functionality of various parts of UNIX system, development of the GNU Hurd operating system proved to be unproductive of missing microkernel, what place GNU Mach became to fill. In 1991 Finnish computer science student Linus Torvalds, released the first version of the Linux what was following the monolithic operating system architecture instead newer Server-Client[4][5]. To it was soon ported the the GNU system software to form a complete development platform[6]. Since then, the operating system name has been "Linux" instead first name Freax but with wrong reasons to it has been referred as GNU/Linux by the Stallman and the Free Software Foundation[6]. The Berkeley Software Distribution, known as BSD, is the UNIX derivative distributed by the University of California, Berkeley, starting in the 1970s. Freely distributed and ported to many minicomputers, it eventually also gained a following for use on PCs, mainly as FreeBSD, NetBSD and OpenBSD.
Examples of operating systems
Microsoft Windows
Microsoft Windows is a family of proprietary operating systems most commonly used on personal computers. It is the most common family of operating systems for the personal computer, with about 90% of the market share.[7][8][9] Currently, the most widely used version of the Windows family is Windows XP[citation needed], released on October 25, 2001. The newest version is Windows 7 for personal computers and Windows Server 2008 R2 for servers.
It originated in 1981 as an add-on to the older MS-DOS operating system for the IBM PC. Released in 1985, Microsoft came to dominate the business world of personal computers, and went on to set a number of industry standards and commonplace applications[neutrality is disputed]. Beginning with Windows XP, all modern versions are based on the Windows NT kernel. Current versions of Windows run on IA-32 and x86-64 processors, although older versions sometimes supported other architectures.
Windows is also used on servers, supporting applications such as web servers and database servers. In recent years, Microsoft has spent significant marketing and research & development money to demonstrate that Windows is capable of running any enterprise application, which has resulted in consistent price/performance records (see the TPC) and significant acceptance in the enterprise market. However, its usage in servers is not as widespread as personal computers, and here Windows actively competes against Linux and BSD for market share, while still capturing a steady majority by some accounts.[10][11]
Unix and Unix-like operating systems
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Unix_history-simple.png/300px-Unix_history-simple.png)
Ken Thompson wrote B, mainly based on BCPL, which he used to write Unix, based on his experience in the MULTICS project. B was replaced by C, and Unix developed into a large, complex family of inter-related operating systems which have been influential in every modern operating system (see History). The Unix-like family is a diverse group of operating systems, with several major sub-categories including System V, BSD, and Linux. The name "UNIX" is a trademark of The Open Group which licenses it for use with any operating system that has been shown to conform to their definitions. "Unix-like" or "Unix clone" is commonly used to refer to the large set of operating systems which resemble the original Unix.
Unix-like systems run on a wide variety of machine architectures. They are used heavily for servers in business, as well as workstations in academic and engineering environments. Free Unix variants, such as GNU/Linux and BSD, are popular in these areas.
Some Unix variants like HP's HP-UX and IBM's AIX are designed to run only on that vendor's hardware. Others, such as SunOS, can run on multiple types of hardware, including x86 servers and PCs. Apple's Mac OS X, a so called "hybrid kernel" variant from derived from NeXTSTEP, Mach, and FreeBSD, has replaced Apple's earlier (non-Unix) Mac OS.
Unix interoperability was sought by establishing the POSIX standard. The POSIX standard can be applied to any operating system, although it was originally created for various Unix variants.
BSD and its descendants
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/First_Web_Server.jpg/300px-First_Web_Server.jpg)
A subgroup of the Unix family is the Berkeley Software Distribution family, which includes FreeBSD, NetBSD, OpenBSD and Dragon Fly BSD. These operating systems are most commonly found on webservers, although they can also function as a personal computer OS. The internet owes much of its existence to BSD, as many of the protocols now commonly used by computers to connect, send and receive data over a network were widely implemented and refined in BSD. The world wide web was also first demonstrated on a number of computers running an OS based on BSD called NextStep.
BSD has its roots in Unix. In 1974, University of California, Berkeley installed its first Unix system. Over time, students and staff in the computer science department there began adding new programs to make things easier, such as text editors. When Berkely received new VAX computers in 1978 with Unix installed, the school's undergraduates modified Unix even more in order to take advantage of the computer's hardware possibilities. The Defense Advanced Research Projects Agency of the US Department of Defense took interest, and decided to fund the project. Many schools, corporations, and government organizations took notice and started to use Berkeley's version of Unix instead of the official one distributed by AT&T. Steve Jobs, upon leaving Apple Inc. in 1985, formed NeXT Inc., a company that manufactured high-end computers running on a variation of BSD called NeXTSTEP. One of these computers was used by Tim Berners-Lee as the first webserver to create the World Wide Web.
Developers like Keith Bostic encouraged the project to replace any non-free code that originated with Bell Labs. Once this was done, however, AT&T sued. Eventually, after two years of legal disputes, the BSD project came out ahead and spawned a number of free derivatives, such as FreeBSD and NetBSD. However, the two year wait had set the stage for two projects that would ultimately eclipse[citation needed] both BSD and Unix: GNU and Linux.
Mac OS X
![](http://upload.wikimedia.org/wikipedia/en/thumb/8/82/Snow_Leopard_Desktop.png/300px-Snow_Leopard_Desktop.png)
Mac OS X is a line of partially proprietary graphical operating systems developed, marketed, and sold by Apple Inc., the latest of which is pre-loaded on all currently shipping Macintosh computers. Mac OS X is the successor to the original Mac OS, which had been Apple's primary operating system since 1984. Unlike its predecessor, Mac OS X is a UNIX operating system built on technology that had been developed at NeXT through the second half of the 1980s and up until Apple purchased the company in early 1997.
The operating system was first released in 1999 as Mac OS X Server 1.0, with a desktop-oriented version (Mac OS X v10.0) following in March 2001. Since then, six more distinct "client" and "server" editions of Mac OS X have been released, the most recent being Mac OS X v10.6, which was first made available on August 28, 2009. Releases of Mac OS X are named after big cats; the current version of Mac OS X is "Snow Leopard".
The server edition, Mac OS X Server, is architecturally identical to its desktop counterpart but usually runs on Apple's line of Macintosh server hardware. Mac OS X Server includes work group management and administration software tools that provide simplified access to key network services, including a mail transfer agent, a Samba server, an LDAP server, a domain name server, and others.
Plan 9
Ken Thompson, Dennis Ritchie and Douglas McIlroy at Bell Labs designed and developed the C programming language to build the operating system Unix. Programmers at Bell Labs went on to develop Plan 9 and Inferno, which were engineered for modern distributed environments. Plan 9 was designed from the start to be a networked operating system, and had graphics built-in, unlike Unix, which added these features to the design later. It is currently released under the Lucent Public License. Inferno was sold to Vita Nuova Holdings and has been released under a GPL/MIT license.
Linux and GNU
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Ubuntu_10.04_LTS.png/300px-Ubuntu_10.04_LTS.png)
Linux is the name for a UNIX like operating system that can be used on a wide range of devices from supercomputers to wristwatches. The Linux is released under an GNU GPL, so anyone can read and modify its code. It has been modified to run on a large variety of electronics. Although estimates suggest it is used on only 0.5-2% of all personal computers[citation needed], it has been widely adopted for use in servers and embedded systems[citation needed] (such as cell phones). Linux has superseded Unix in most places[which?], and is used on the 10 most powerful supercomputers in the world[citation needed].
The GNU project is a mass collaboration of programmers who seek to create a completely free and open operating system that was similar to Unix but with completely original code. It was started in 1983 by Richard Stallman. For this reason, Linux is often called GNU/Linux. Thousands of pieces of software for virtually every system are licensed under the GNU General Public License. Meanwhile, the Linux began as a hobby of Linus Torvalds, a university student from Finland. In 1991, Torvalds began work on it, and posted information about his project on a newsgroup for computer students and programmers. He received a wave of support and volunteers who ended up creating a full-fledged monolithic operating system[3]. Programmers from GNU took notice, and members of both projects worked to integrate the finished GNU parts on the Linux operating system in order to create a full-fledged software system.
Google Chrome OS
Chrome is an distribution of the Linux operating system and designed by Google. Chrome targets computer users that spend most of their time on the internet—it is technically only a web browser with no other applications, and relies on internet applications used in the web browser to accomplish tasks such as word processing and media viewing.
Other
Older operating systems which are still used in niche markets include OS/2 from IBM and Microsoft; Mac OS, the non-Unix precursor to Apple's Mac OS X; BeOS; XTS-300. Some, most notably Haiku, RISC OS, MorphOS and AmigaOS 4 continue to be developed as minority platforms for enthusiast communities and specialist applications. OpenVMS formerly from DEC, is still under active development by Hewlett-Packard. Yet other operating systems are used almost exclusively in academia, for operating systems education or to do research on operating system concepts. A typical example of a system that fulfills both roles is MINIX, while for example Singularity is used purely for research.
Components
The functions of an operating system all exist in order to make the different parts of a computer work together. All software—from financial databases to film editors—needs to go through the operating system in order to use any of the hardware, whether it be as simple as a mouse or keyboard or complex as an internet connection. The process how the data is processed depends from the operating system architecture.
The user interface
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Command_line.png/220px-Command_line.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/54/KDE_4.png/220px-KDE_4.png)
Every computer that receives some sort of human input needs a user interface, which allows a person to interact with the computer. While devices like keyboards, mice and touchscreens make up the user interface with start of this task, the software makes up the graphical or text user interface for it. The two most common forms of a user interface have historically been the Command-line interface, where computer commands are typed out line-by-line, and the Graphical user interface, where a visual environment (most commonly with windows, buttons, and icons) is present.
Graphical user interfaces
Most of the modern computer systems support graphical user interfaces (GUI), and often include them. In some computer systems, such as the original implementations of Microsoft Windows and the Mac OS, the GUI is integrated into the operating system .
While technically a graphical user interface is not an operating system service, incorporating support for one into the operating system can allow the GUI to be more responsive by reducing the number of context switches required for the GUI to perform its output functions. Other operating systems are modular, separating the graphics subsystem from the microkernel or whole the Operating System. In the 1980s UNIX, VMS and many others had operating systems that were built this way. Linux and XNU are also built this way. Modern releases of Microsoft NT such as NT 6.0 implement a graphics subsystem that is mostly in user-space, however versions between NT 4.0 and NT 5.2's graphics drawing routines exist mostly in kernel space. Windows 9x series had very little distinction between the interface and the operating system .
Many computer operating systems allow the user to install or create any user interface they desire. The X Window System in conjunction with GNOME or KDE SC is a commonly found setup on most Unix and Unix-like (BSD, Linux, Solaris) systems. A number of Windows shell replacements have been released for Microsoft Windows, which offer alternatives to the included Windows shell, but the window manager itself cannot be separated from Windows.
Numerous Unix-based GUIs have existed over time, most derived from X11. Competition among the various vendors of Unix (HP, IBM, Sun) led to much fragmentation, though an effort to standardize in the 1990s to COSE and CDE failed for the most part due to various reasons, eventually eclipsed by the widespread adoption of GNOME and KDE. Prior to free software-based toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon which CDE was developed).
Graphical user interfaces evolve over time. For example, Windows has modified its user interface almost every time a new major version of Windows is released, and the Mac OS GUI changed dramatically with the introduction of Mac OS X in 1999.[12]
The kernel
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Kernel_Layout.svg/220px-Kernel_Layout.svg.png)
With the aid of the firmware and device drivers, the operating system provides the most basic level of control over all of the computer's hardware devices. It manages memory access for programs in the RAM, it determines which programs get access to which hardware resources, it sets up or resets the CPU's operating states for optimal operation at all times, and it organizes the data for long-term non-volatile storage with file systems on such media as disks, tapes, flash memory, etc. There are three different architectures for the operating system and the OS structure is different all of them. The monolithic kernel is operating system alone. Server-Client architecture has small microkernel and modules what are called servers, what compiles a operating system. And a layered architecture develops a OS where every layere use services under it and offers own services other parts top of it[4][3].
Program execution
The operating system acts as an interface between an application and the hardware. The user interacts with the hardware from "the other side". The operating system is a set of services which simplifies development of applications. Executing a program involves the creation of a process by the operating system. The kernel creates a process by assigning memory and other resources, establishing a priority for the process (in multi-tasking systems), loading program code into memory, and executing the program. The program then interacts with the user and/or other devices and performs its intended function.
Interrupts
Interrupts are central to operating systems, as they provide an efficient way for the operating system to interact with and react to its environment. The alternative—having the operating system "watch" the various sources of input for events (polling) that require action—can be found in older systems with very small stacks (50 or 60 bytes) but fairly unusual in modern systems with fairly large stacks. Interrupt-based programming is directly supported by most modern CPUs. Interrupts provide a computer with a way of automatically saving local register contexts, and running specific code in response to events. Even very basic computers support hardware interrupts, and allow the programmer to specify code which may be run when that event takes place.
When an interrupt is received, the computer's hardware automatically suspends whatever program is currently running, saves its status, and runs computer code previously associated with the interrupt; this is analogous to placing a bookmark in a book in response to a phone call. In modern operating systems, interrupts are handled by the operating system's kernel. Interrupts may come from either the computer's hardware or from the running program.
When a hardware device triggers an interrupt, the operating system's kernel decides how to deal with this event, generally by running some processing code. The amount of code being run depends on the priority of the interrupt (for example: a person usually responds to a smoke detector alarm before answering the phone). The processing of hardware interrupts is a task that is usually delegated to software called device driver, which may be either part of the operating system's kernel, part of another program, or both. Device drivers may then relay information to a running program by various means.
A program may also trigger an interrupt to the operating system. If a program wishes to access hardware for example, it may interrupt the operating system's kernel, which causes control to be passed back to the kernel. The kernel will then process the request. If a program wishes additional resources (or wishes to shed resources) such as memory, it will trigger an interrupt to get the kernel's attention.
Modes
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Priv_rings.svg/300px-Priv_rings.svg.png)
Modern CPUs support multiple modes of operation. CPUs with this capability use at least two modes: protected mode and supervisor mode. The supervisor mode is used by the operating system's kernel for low level tasks that need unrestricted access to hardware, such as controlling how memory is written and erased, and communication with devices like graphics cards. Protected mode, in contrast, is used for almost everything else. Applications operate within protected mode, and can only use hardware by communicating with the kernel, which controls everything in supervisor mode. CPUs might have other modes similar to protected mode as well, such as the virtual modes in order to emulate older processor types, such as 16-bit processors on a 32-bit one, or 32-bit processors on a 64-bit one.
When a computer first starts up, it is automatically running in supervisor mode. The first few programs to run on the computer, being the BIOS, bootloader and the operating system have unlimited access to hardware - and this is required because, by definition, initializing a protected environment can only be done outside of one. However, when the operating system passes control to another program, it can place the CPU into protected mode.
In protected mode, programs may have access to a more limited set of the CPU's instructions. A user program may leave protected mode only by triggering an interrupt, causing control to be passed back to the kernel. In this way the operating system can maintain exclusive control over things like access to hardware and memory.
The term "protected mode resource" generally refers to one or more CPU registers, which contain information that the running program isn't allowed to alter. Attempts to alter these resources generally causes a switch to supervisor mode, where the operating system can deal with the illegal operation the program was attempting (for example, by killing the program).
Memory management
Among other things, a multiprogramming operating system kernel must be responsible for managing all system memory which is currently in use by programs. This ensures that a program does not interfere with memory already used by another program. Since programs time share, each program must have independent access to memory.
Cooperative memory management, used by many early operating systems assumes that all programs make voluntary use of the kernel's memory manager, and do not exceed their allocated memory. This system of memory management is almost never seen anymore, since programs often contain bugs which can cause them to exceed their allocated memory. If a program fails it may cause memory used by one or more other programs to be affected or overwritten. Malicious programs, or viruses may purposefully alter another program's memory or may affect the operation of the operating system itself. With cooperative memory management it takes only one misbehaved program to crash the system.
Memory protection enables the kernel to limit a process' access to the computer's memory. Various methods of memory protection exist, including memory segmentation and paging. All methods require some level of hardware support (such as the 80286 MMU) which doesn't exist in all computers.
In both segmentation and paging, certain protected mode registers specify to the CPU what memory address it should allow a running program to access. Attempts to access other addresses will trigger an interrupt which will cause the CPU to re-enter supervisor mode, placing the kernel in charge. This is called a segmentation violation or Seg-V for short, and since it is both difficult to assign a meaningful result to such an operation, and because it is usually a sign of a misbehaving program, the kernel will generally resort to terminating the offending program, and will report the error.
Windows 3.1-Me had some level of memory protection, but programs could easily circumvent the need to use it. A general protection fault would be produced indicating a segmentation violation had occurred, however the system would often crash anyway.
Virtual memory
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Virtual_memory.svg/250px-Virtual_memory.svg.png)
The use of virtual memory addressing (such as paging or segmentation) means that the kernel can choose what memory each program may use at any given time, allowing the operating system to use the same memory locations for multiple tasks.
If a program tries to access memory that isn't in its current range of accessible memory, but nonetheless has been allocated to it, the kernel will be interrupted in the same way as it would if the program were to exceed its allocated memory. (See section on memory management.) Under UNIX this kind of interrupt is referred to as a page fault.
When the kernel detects a page fault it will generally adjust the virtual memory range of the program which triggered it, granting it access to the memory requested. This gives the kernel discretionary power over where a particular application's memory is stored, or even whether or not it has actually been allocated yet.
In modern operating systems, memory which is accessed less frequently can be temporarily stored on disk or other media to make that space available for use by other programs. This is called swapping, as an area of memory can be used by multiple programs, and what that memory area contains can be swapped or exchanged on demand.
Multitasking
Multitasking refers to the running of multiple independent computer programs on the same computer; giving the appearance that it is performing the tasks at the same time. Since most computers can do at most one or two things at one time, this is generally done via time-sharing, which means that each program uses a share of the computer's time to execute.
An operating system kernel contains a piece of software called a scheduler which determines how much time each program will spend executing, and in which order execution control should be passed to programs. Control is passed to a process by the kernel, which allows the program access to the CPU and memory. Later, control is returned to the kernel through some mechanism, so that another program may be allowed to use the CPU. This so-called passing of control between the kernel and applications is called a context switch.
An early model which governed the allocation of time to programs was called cooperative multitasking. In this model, when control is passed to a program by the kernel, it may execute for as long as it wants before explicitly returning control to the kernel. This means that a malicious or malfunctioning program may not only prevent any other programs from using the CPU, but it can hang the entire system if it enters an infinite loop.
Modern operating systems extend the concepts of application preemption to device drivers and kernel code, so that the operating system has preemptive control over internal run-times as well.
The philosophy governing preemptive multitasking is that of ensuring that all programs are given regular time on the CPU. This implies that all programs must be limited in how much time they are allowed to spend on the CPU without being interrupted. To accomplish this, modern operating system kernels make use of a timed interrupt. A protected mode timer is set by the kernel which triggers a return to supervisor mode after the specified time has elapsed. (See above sections on Interrupts and Dual Mode Operation.)
On many single user operating systems cooperative multitasking is perfectly adequate, as home computers generally run a small number of well tested programs. Windows NT was the first version of Microsoft Windows which enforced preemptive multitasking, but it didn't reach the home user market until Windows XP, (since Windows NT was targeted at professionals.)
Disk access and file systems
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Fsystem.png/220px-Fsystem.png)
Access to data stored on disks is a central feature of all operating systems. Computers store data on disks using files, which are structured in specific ways in order to allow for faster access, higher reliability, and to make better use out of the drive's available space. The specific way in which files are stored on a disk is called a file system, and enables files to have names and attributes. It also allows them to be stored in a hierarchy of directories or folders arranged in a directory tree.
Early operating systems generally supported a single type of disk drive and only one kind of file system. Early file systems were limited in their capacity, speed, and in the kinds of file names and directory structures they could use. These limitations often reflected limitations in the operating systems they were designed for, making it very difficult for an operating system to support more than one file system.
While many simpler operating systems support a limited range of options for accessing storage systems, operating systems like UNIX and GNU/Linux support a technology known as a virtual file system or VFS. An operating system like UNIX supports a wide array of storage devices, regardless of their design or file systems to be accessed through a common application programming interface (API). This makes it unnecessary for programs to have any knowledge about the device they are accessing. A VFS allows the operating system to provide programs with access to an unlimited number of devices with an infinite variety of file systems installed on them through the use of specific device drivers and file system drivers.
A connected storage device such as a hard drive is accessed through a device driver. The device driver understands the specific language of the drive and is able to translate that language into a standard language used by the operating system to access all disk drives. On UNIX, this is the language of block devices.
When the kernel has an appropriate device driver in place, it can then access the contents of the disk drive in raw format, which may contain one or more file systems. A file system driver is used to translate the commands used to access each specific file system into a standard set of commands that the operating system can use to talk to all file systems. Programs can then deal with these file systems on the basis of filenames, and directories/folders, contained within a hierarchical structure. They can create, delete, open, and close files, as well as gather various information about them, including access permissions, size, free space, and creation and modification dates.
Various differences between file systems make supporting all file systems difficult. Allowed characters in file names, case sensitivity, and the presence of various kinds of file attributes makes the implementation of a single interface for every file system a daunting task. Operating systems tend to recommend using (and so support natively) file systems specifically designed for them; for example, NTFS in Windows and ext3 and ReiserFS in GNU/Linux. However, in practice, third party drives are usually available to give support for the most widely used file systems in most general-purpose operating systems (for example, NTFS is available in GNU/Linux through NTFS-3g, and ext2/3 and ReiserFS are available in Windows through FS-driver and rfstool).
Support for file systems is highly varied among modern operating systems although there are several common file systems which almost all operating systems include support and drivers for. Operating systems vary on file system support and on the disk formats they may be installed on. Under Windows each file system is usually limited in application to certain media, for example CDs must use ISO 9660 or UDF, and as of Windows Vista, NTFS is the only file system which the operating system can be installed on. It is possible to install GNU/Linux onto many types of file systems. Unlike other operating systems, GNU/Linux and UNIX allow any file system to be used regardless of the media it is stored in, whether it is a hard drive, a disc (CD,DVD...), an USB key, or even contained within a file located on another file system.
Device drivers
A device driver is a specific type of computer software developed to allow interaction with hardware devices. Typically this constitutes an interface for communicating with the device, through the specific computer bus or communications subsystem that the hardware is connected to, providing commands to and/or receiving data from the device, and on the other end, the requisite interfaces to the operating system and software applications. It is a specialized hardware-dependent computer program which is also operating system specific that enables another program, typically an operating system or applications software package or computer program running under the operating system kernel, to interact transparently with a hardware device, and usually provides the requisite interrupt handling necessary for any necessary asynchronous time-dependent hardware interfacing needs.
The key design goal of device drivers is abstraction. Every model of hardware (even within the same class of device) is different. Newer models also are released by manufacturers that provide more reliable or better performance and these newer models are often controlled differently. Computers and their operating systems cannot be expected to know how to control every device, both now and in the future. To solve this problem, operative systems essentially dictate how every type of device should be controlled. The function of the device driver is then to translate these operative system mandated function calls into device specific calls. In theory a new device, which is controlled in a new manner, should function correctly if a suitable driver is available. This new driver will ensure that the device appears to operate as usual from the operating system's point of view.
Under versions of Windows before Vista and versions of Linux before 2.6, all driver execution was co-operative, meaning that if a driver entered an infinite loop it would freeze the system. More recent revisions of these operating systems incorporate kernel preemption, where the kernel interrupts the driver to give it tasks, and then separates itself from the process until it receives a response from the device driver, or gives it more tasks to do.
Networking
Currently most operating systems support a variety of networking protocols, hardware, and applications for using them. This means that computers running dissimilar operating systems can participate in a common network for sharing resources such as computing, files, printers, and scanners using either wired or wireless connections. Networks can essentially allow a computer's operating system to access the resources of a remote computer to support the same functions as it could if those resources were connected directly to the local computer. This includes everything from simple communication, to using networked file systems or even sharing another computer's graphics or sound hardware. Some network services allow the resources of a computer to be accessed transparently, such as SSH which allows networked users direct access to a computer's command line interface.
Client/server networking involves a program on a computer somewhere which connects via a network to another computer, called a server. Servers offer (or host) various services to other network computers and users. These services are usually provided through ports or numbered access points beyond the server's network address[disambiguation needed]. Each port number is usually associated with a maximum of one running program, which is responsible for handling requests to that port. A daemon, being a user program, can in turn access the local hardware resources of that computer by passing requests to the operating system kernel.
Many operating systems support one or more vendor-specific or open networking protocols as well, for example, SNA on IBM systems, DECnet on systems from Digital Equipment Corporation, and Microsoft-specific protocols (SMB) on Windows. Specific protocols for specific tasks may also be supported such as NFS for file access. Protocols like ESound, or esd can be easily extended over the network to provide sound from local applications, on a remote system's sound hardware.
Security
A computer being secure depends on a number of technologies working properly. A modern operating system provides access to a number of resources, which are available to software running on the system, and to external devices like networks via the kernel.
The operating system must be capable of distinguishing between requests which should be allowed to be processed, and others which should not be processed. While some systems may simply distinguish between "privileged" and "non-privileged", systems commonly have a form of requester identity, such as a user name. To establish identity there may be a process of authentication. Often a username must be quoted, and each username may have a password. Other methods of authentication, such as magnetic cards or biometric data, might be used instead. In some cases, especially connections from the network, resources may be accessed with no authentication at all (such as reading files over a network share). Also covered by the concept of requester identity is authorization; the particular services and resources accessible by the requester once logged into a system are tied to either the requester's user account or to the variously configured groups of users to which the requester belongs.
In addition to the allow/disallow model of security, a system with a high level of security will also offer auditing options. These would allow tracking of requests for access to resources (such as, "who has been reading this file?"). Internal security, or security from an already running program is only possible if all possibly harmful requests must be carried out through interrupts to the operating system kernel. If programs can directly access hardware and resources, they cannot be secured.
External security involves a request from outside the computer, such as a login at a connected console or some kind of network connection. External requests are often passed through device drivers to the operating system's kernel, where they can be passed onto applications, or carried out directly. Security of operating systems has long been a concern because of highly sensitive data held on computers, both of a commercial and military nature. The United States Government Department of Defense (DoD) created the Trusted Computer System Evaluation Criteria (TCSEC) which is a standard that sets basic requirements for assessing the effectiveness of security. This became of vital importance to operating system makers, because the TCSEC was used to evaluate, classify and select computer systems being considered for the processing, storage and retrieval of sensitive or classified information.
Network services include offerings such as file sharing, print services, email, web sites, and file transfer protocols (FTP), most of which can have compromised security. At the front line of security are hardware devices known as firewalls or intrusion detection/prevention systems. At the operating system level, there are a number of software firewalls available, as well as intrusion detection/prevention systems. Most modern operating systems include a software firewall, which is enabled by default. A software firewall can be configured to allow or deny network traffic to or from a service or application running on the operating system. Therefore, one can install and be running an insecure service, such as Telnet or FTP, and not have to be threatened by a security breach because the firewall would deny all traffic trying to connect to the service on that port.
An alternative strategy, and the only sandbox strategy available in systems that do not meet the Popek and Goldberg virtualization requirements, is the operating system not running user programs as native code, but instead either emulates a processor or provides a host for a p-code based system such as Java.
Internal security is especially relevant for multi-user systems; it allows each user of the system to have private files that the other users cannot tamper with or read. Internal security is also vital if auditing is to be of any use, since a program can potentially bypass the operating system, inclusive of bypassing auditing.
Real-time operating systems
A real-time operating system (RTOS) is a multitasking operating system intended for applications with fixed deadlines (real-time computing). Such applications include some small embedded systems, automobile engine controllers, industrial robots, spacecraft, industrial control, and some large-scale computing systems.
An early example of a large-scale real-time operating system was Transaction Processing Facility developed by American Airlines and IBM for the Sabre Airline Reservations System.
Embedded systems that have fixed deadlines use a real-time operating system such as VxWorks, PikeOS, eCos, QNX, MontaVista Linux and RTLinux. Windows CE is a real-time operating system that shares similar APIs to desktop Windows but shares none of desktop Windows' codebase[citation needed]. Symbian OS also has a RTOS kernel (EKA2) starting with version 8.0b.
Some embedded systems use operating systems such as Palm OS, BSD, and GNU/Linux, although such operating systems do not support real-time computing.
Hobby development
Operating system development is one of the more involved and technical options for the computing hobbyist. A hobby operating system is classified as one that has been written from scratch (not based on another system) and has few developers who work in their spare time. [13] Development usually begins with an existing operating system. The hobbyist is their own developer, or they interact in a relatively small and unstructured group of individuals who are all similarly situated with the same code base. Examples of a hobby operating system include Syllable and ReactOS.
Diversity of operating systems and portability
Application software is generally written for use on a specific operating system, and sometimes even for specific hardware. When porting the application to run on another OS, the functionality required by that application may be implemented differently by that OS (the names of functions, meaning of arguments, etc.) requiring the application to be adapted, changed, or otherwise maintained.
This cost in supporting operating systems diversity can be avoided by instead writing applications against software platforms like Java, or Qt for web browsers. These abstractions have already borne the cost of adaptation to specific operating systems and their system libraries.
Another approach is for operating system vendors to adopt standards. For example, POSIX and OS abstraction layers provide commonalities that reduce porting costs.
See also
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/40px-Wikiversity_logo_2017.svg.png)
- Comparison of operating systems
- Computer systems architecture
- Disk operating system
- Electronic medical record
- Handheld computers
- History of IBM mainframe operating systems
- Kernel (computer science)
- List of operating systems
- Microcontroller
- Network operating system
- Operating System Projects
- Operating systems
- Object-oriented operating system
- Orthogonal persistence
- Process management (computing)
- System call
- System image
- Timeline of operating systems
- Trusted operating system
References
- ^ "Operating System Market Share". Net Applications.
- ^ Hansen, pp. 4-7
- ^ a b c "Modern Operating Systems, teachbook".
- ^ a b "Operating System architectures" (PDF).
- ^ "Modular system programming in Minix 3" (PDF).
- ^ a b "GNU/Linux naming scientifical problems".
- ^ "Global Web Stats". W3Counter, Awio Web Services. September 2009. Retrieved 2009-10-24.
- ^ "Operating System Market Share". Net Applications. October 2009. Retrieved November 5, 2009.
- ^ "Top 5 Operating Systems on October 09". StatCounter. October 2009. Retrieved November 5, 2009.
- ^ "Operating System Share by Groups for Sites in All Locations January 2009".
- ^ "Behind the IDC data: Windows still No. 1 in server operating systems". ZDNet. 2010-02-26.
- ^ Poisson, Ken. "Chronology of Personal Computer Software". Retrieved on 2008-05-07. Last checked on 2009-03-30.
- ^ "My OS is less hobby than yours". Osnews. December 21, 2009. Retrieved December 21, 2009.
- Auslander, Marc A. (1981). "The evolution of the MVS Operating System" (PDF). IBM J. Research & Development.
{{cite journal}}
: Cite journal requires|journal=
(help); Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Deitel, Harvey M. Operating Systems. Pearson/Prentice Hall. ISBN 978-0-13-092641-8.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Bic, Lubomur F. (2003). Operating Systems. Pearson: Prentice Hall.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Dhotre, I.A. (2009). Operating Systems. Technical Publications.
- Stallings (2005). Operating Systems, Internals and Design Principles. Pearson: Prentice Hall.
- Silberschatz, Avi (2008). Operating Systems Concepts. John Wiley & Sons. ISBN 0-470-12872-0.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Hansen, Per Birch, ed. (2001). Classic Operating Systems. Springer. p. 597. ISBN 038795113X.
External links
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Wiktionary-logo-en-v2.svg/40px-Wiktionary-logo-en-v2.svg.png)
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)
- Operating Systems at Curlie
- Multics History and the history of operating systems
- How Stuff Works - Operating Systems
- Help finding your Operating System type and version
- The World’s First Computer Operating System in millosh's blog talks about the General Motors OS and GM-NAA I/O developed in 1955 at General Motors Research and North American Airlines