<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1603173738482823676</id><updated>2011-12-05T06:17:09.923-08:00</updated><title type='text'>Computer Software</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-5804524186085335190</id><published>2011-12-05T06:03:00.000-08:00</published><updated>2011-12-05T06:06:27.731-08:00</updated><title type='text'>Terbo C</title><content type='html'>&lt;span style="font-weight:bold;"&gt;How to install Turbo C in Window 7 &lt;br /&gt; Most of you guys are probably being exhausted from installing Turbo C program in Window 7 64 bit and 32 bit. Most have commented that in Window 7 Turbo C doesn't get supported. If in case supported full screen doesn't appear. Now don't feel so friends! because here is the solution. Simply you can install it. What you have to do is just click the following link and get&lt;br /&gt;Download Latest Version of Turbo C 3.0.7 Beta for Windows 7&lt;br /&gt;&lt;br /&gt; OR just follow the link below and download turbo c directly.&lt;br /&gt; http://www.mediafire.com/?j6xa8is36x58rp3&lt;br /&gt; After you download, the downloaded files get saved directly in C drive of your computer.&lt;/span&gt;&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-5804524186085335190?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/5804524186085335190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2011/12/terbo-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/5804524186085335190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/5804524186085335190'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2011/12/terbo-c.html' title='Terbo C'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-7820358684816334320</id><published>2010-01-11T00:45:00.000-08:00</published><updated>2010-01-11T00:49:57.659-08:00</updated><title type='text'>Technology</title><content type='html'>Technology&lt;br /&gt;&lt;br /&gt;The Bank believes that advancement in technology&lt;br /&gt;should be used towards enhancing the quality of&lt;br /&gt;customer service. In line with this approach we&lt;br /&gt;installed our own switching system that will enhance&lt;br /&gt;our service delivery quality especially in the area of&lt;br /&gt;plastic cards which in turn will provide us with new&lt;br /&gt;and increased source of revenue.&lt;br /&gt;The Bank also expects the Switching Platform to&lt;br /&gt;play an important role in terms of introducing other&lt;br /&gt;technologically driven services in the future.&lt;br /&gt;Remittances&lt;br /&gt;Continuing the trend of year-on-year increase, the&lt;br /&gt;country received total remittances of NPR 142.68&lt;br /&gt;billion during the year, an increase of 42.5% over&lt;br /&gt;the previous year. Given the strong opportunities&lt;br /&gt;presented by the sector the Bank continued to&lt;br /&gt;strengthen our presence in this business especially in&lt;br /&gt;the Gulf and Malaysian corridors. The Bank continues&lt;br /&gt;to maintain representatives in the UAE who are&lt;br /&gt;responsible for business development and client&lt;br /&gt;servicing. We have established ourselves as one of&lt;br /&gt;the leading Banks in this business supported by a&lt;br /&gt;growing network of Payout Agents reaching many&lt;br /&gt;rural areas of all major districts in the country.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-7820358684816334320?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/7820358684816334320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2010/01/technology.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/7820358684816334320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/7820358684816334320'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2010/01/technology.html' title='Technology'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-51306323739546416</id><published>2009-08-11T05:50:00.000-07:00</published><updated>2009-08-11T05:51:11.297-07:00</updated><title type='text'>The Computer History Museum</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;he Computer History Museum&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;Background&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;The Computer History Museum was formally established as a non-profit 501(c)(3) organization in 1999. The Museum is dedicated to the preservation and celebration of computing history. We are home to one of the largest international collections of computing artifacts in the world, encompassing physical objects, ephemera, photographs, moving images, documents and software. &lt;br /&gt;&lt;br /&gt;In 1979, the Museum's founders Gordon and Gwen Bell opened an exhibit of many computing devices from their personal collection in the lobby of Digital Equipment Corporation. It wasn't long afterward that the Museum's name became The Digital Computer Museum and subsequently The Computer Museum. &lt;br /&gt;&lt;br /&gt;In the fall of 1984, The Computer Museum opened to the public at Museum Wharf in Boston, sharing space with the Children's Museum. The Museum focused on computing history lectures, exhibiting highlights of the collection, and many children's educational activities including a two-story walk through computer, a virtual fish tank and a robot theatre. &lt;br /&gt;&lt;br /&gt;In 1996, a significant portion of the Museum's collection moved to Mountain View, California. California was seen as an ideal place for an emphasis on collecting and the preservation of the Museum's growing collection. In Boston, the focus continued on exhibits. By 2000 the remaining collection from Boston arrived in Silicon Valley. &lt;br /&gt;&lt;br /&gt;In 2001, the Museum shortened its name from The Computer Museum History Center to our current name. The next year, we moved into our permanent home with the purchase of a landmark building on Shoreline Boulevard in Mountain View. We currently have on-site three exhibits Visible Storage: Samples from the Collection, Mastering the Game: A History of Computer Chess and Innovation 101. &lt;br /&gt;&lt;br /&gt;Under construction is the Museum's signature exhibit entitled "Computer History: the First 2000 years" due to open in late 2010. &lt;br /&gt;Tours and Hours of Operation&lt;br /&gt;&lt;br /&gt;The Museum's "Visible Storage" exhibit area is open for docent-led tours every week. Self-guided tours are also available in "Visible Storage" and the Museum's other two exhibits, "Innovation in the Valley" and "Mastering the Game: A History of Computer Chess." Tours are free and hours of operation are located on the Museum's website. Groups of 10 or more should call in advance to 650-810-1038 or e-mail tours@computerhistory.org. &lt;br /&gt;Education&lt;br /&gt;&lt;br /&gt;The Computer History Museum offers lectures, seminars and workshops with scholarly historical perspectives about and by the pioneers of the computing industry. The Museum's emphasis on preservation and education make it a unique resource for media researchers, historians, scientists, industry professionals and students of all ages. Research services are available to scholars by staff researchers as well as through the Museum's comprehensive website. &lt;br /&gt;Lectures and Events&lt;br /&gt;&lt;br /&gt;The Museum is proud to host monthly lectures with leading innovators; industry giants and opinion leaders; experts; engineers and scientists who share their personal stories and insights about developments, events and discoveries that have shaped our world. The Museum also frequently hosts other significant events that highlight and honor the history of computing and celebrate major industry milestones as they occur. &lt;br /&gt;Fellow Awards&lt;br /&gt;&lt;br /&gt;Each year over the past twenty years, the Museum has honored computing pioneers at an annual Fellow Awards Celebration. Museum Fellows are individuals who have made revolutionary and lasting contributions to the development of computing and often present a lecture or conduct a workshop and oral histories in connection with the awards program. &lt;br /&gt;Publications&lt;br /&gt;&lt;br /&gt;Articles about industry leaders and computing breakthroughs appear in the Museum's annual spring publication, Core, and the Museum's staff also publishes articles with both technical and historical content in complementary journals and magazines. &lt;br /&gt;Future Plans&lt;br /&gt;&lt;br /&gt;The Computer History Museum's efforts are underway to further expand its home in Silicon Valley. Future plans include additional and changing exhibits as well as theme rooms. Next up for spring 2008 is the debut of the Babbage Difference Engine #2, an extraordinary Victorian era computing device that no Victorian ever saw! It was finally built 153 years after Charles Babbage's (1791-1871) original design, and is rich in history. And then there is the Museum's 14,000 square-foot major and signature exhibit, the "Timeline of Computing History" due to open in the fall of 2009.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-51306323739546416?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/51306323739546416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/computer-history-museum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/51306323739546416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/51306323739546416'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/computer-history-museum.html' title='The Computer History Museum'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-5894141474629832322</id><published>2009-08-05T04:21:00.000-07:00</published><updated>2009-08-05T04:31:52.556-07:00</updated><title type='text'>Keystroke logging</title><content type='html'>&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_5UJc09sb8uY/SnlshIK_wjI/AAAAAAAAADA/QldIpA3sE9U/s1600-h/110_F_6730568_wWt44qxOrp4kPxNPYe1taloab6D8MJP9.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366439747373744690" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 110px; CURSOR: hand; HEIGHT: 137px" alt="" src="http://3.bp.blogspot.com/_5UJc09sb8uY/SnlshIK_wjI/AAAAAAAAADA/QldIpA3sE9U/s320/110_F_6730568_wWt44qxOrp4kPxNPYe1taloab6D8MJP9.jpg" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Keystroke logging&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Keystroke logging (often called keylogging) is the practice of noting (or logging) the keys struck on a &lt;a title="Keyboard (computing)" href="http://en.wikipedia.org/wiki/Keyboard_(computing)"&gt;keyboard&lt;/a&gt;, typically in a covert manner so that the person using the keyboard is unaware that their actions are being monitored. There are numerous keylogging methods, ranging from hardware- and software-based to electromagnetic and acoustic analysis. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;[&lt;a title="Edit section: Application" href="http://en.wikipedia.org/w/index.php?title=Keystroke_logging&amp;amp;action=edit&amp;amp;section=1"&gt;edit&lt;/a&gt;] Application&lt;br /&gt;&lt;a id="Software-based_keyloggers" name="Software-based_keyloggers"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: Software-based keyloggers" href="http://en.wikipedia.org/w/index.php?title=Keystroke_logging&amp;amp;action=edit&amp;amp;section=2"&gt;edit&lt;/a&gt;] Software-based keyloggers&lt;br /&gt;These are software programs that are designed to work on the target computer’s &lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating system&lt;/a&gt;. From a technical perspective there are four categories:&lt;br /&gt;Hypervisor-based: The keylogger can theoretically reside in a malware &lt;a title="Hypervisor" href="http://en.wikipedia.org/wiki/Hypervisor"&gt;hypervisor&lt;/a&gt; running underneath the operating system, which remains untouched, except that it effectively becomes a &lt;a title="Virtual machine" href="http://en.wikipedia.org/wiki/Virtual_machine"&gt;virtual machine&lt;/a&gt;. See &lt;a title="Blue Pill (malware)" href="http://en.wikipedia.org/wiki/Blue_Pill_(malware)"&gt;Blue Pill&lt;/a&gt; for a conceptual example.&lt;br /&gt;Kernel based: This method is difficult both to write and to combat. Such keyloggers reside at the &lt;a title="Ring (computer security)" href="http://en.wikipedia.org/wiki/Ring_(computer_security)"&gt;kernel level&lt;/a&gt; and are thus difficult to detect, especially for user-mode applications. They are frequently implemented as &lt;a title="Rootkit" href="http://en.wikipedia.org/wiki/Rootkit"&gt;rootkits&lt;/a&gt; that subvert the operating system kernel and gain unauthorized access to the hardware which makes them very powerful. A keylogger using this method can act as a keyboard driver for example, and thus gain access to any information typed on the keyboard as it goes to the operating system.&lt;br /&gt;Hook based: Such keyloggers &lt;a title="Hooking" href="http://en.wikipedia.org/wiki/Hooking"&gt;hook&lt;/a&gt; the keyboard using functionality provided by the operating system for applications to subscribe to keyboard events legitimately. The operating system notifies the keylogger each time a key is pressed and the keylogger simply records it.&lt;br /&gt;Passive Methods: Here the coder uses operating system &lt;a class="mw-redirect" title="API" href="http://en.wikipedia.org/wiki/API"&gt;APIs&lt;/a&gt; like GetAsyncKeyState(), GetForegroundWindow(), etc. to poll the state of the keyboard or to subscribe to keyboard events. These are the easiest to write, but where constant &lt;a title="Polling (computer science)" href="http://en.wikipedia.org/wiki/Polling_(computer_science)"&gt;polling&lt;/a&gt; of each key is required, they can cause a noticeable increase in &lt;a class="mw-redirect" title="Central Processing Unit" href="http://en.wikipedia.org/wiki/Central_Processing_Unit"&gt;CPU&lt;/a&gt; usage and can miss the occasional key. A more recent example simply polls the &lt;a title="BIOS" href="http://en.wikipedia.org/wiki/BIOS"&gt;BIOS&lt;/a&gt; for preboot authentication &lt;a class="mw-redirect" title="Personal Identification Number" href="http://en.wikipedia.org/wiki/Personal_Identification_Number"&gt;PINs&lt;/a&gt; that have not been cleared from memory.&lt;br /&gt;&lt;a title="Form Grabber" href="http://en.wikipedia.org/wiki/Form_Grabber"&gt;Form Grabber&lt;/a&gt; based logs web form submissions by recording the web browsing .onsubmit event functions. This records form data before it is passed over the internet and bypasses https encryption.&lt;br /&gt;&lt;a id="Remote_access_software_keyloggers" name="Remote_access_software_keyloggers"&gt;&lt;/a&gt;&lt;br /&gt;Remote access software keyloggers&lt;br /&gt;These are local software keyloggers programmed with an added feature to transmit recorded data out of the target computer and make the data available to the monitor at a remote location. Remote communication is facilitated by one of four methods:&lt;br /&gt;Data is uploaded to a website or an ftp account.&lt;br /&gt;Data is periodically emailed to a pre-defined email address.&lt;br /&gt;Data is wirelessly transmitted by means of an attached hardware system.&lt;br /&gt;It allows the monitor to log into the local machine via the internet or ethernet and access the logs stored on the target machine.&lt;br /&gt;&lt;a id="Related_Features" name="Related_Features"&gt;&lt;/a&gt;&lt;br /&gt;Related Features&lt;br /&gt;Software Keyloggers may be augmented with features that capture user information without relying on keyboard key presses as the sole input. Some of these features include:&lt;br /&gt;Clipboard logging. Anything that has been copied to the clipboard can be captured by the program.&lt;br /&gt;Screen logging. &lt;a class="mw-redirect" title="Screenshots" href="http://en.wikipedia.org/wiki/Screenshots"&gt;Screenshots&lt;/a&gt; are taken in order to capture graphics-based information. Applications with screen logging abilities may take screenshots of the whole screen, just one application or even just around the mouse. They may take these screenshots periodically or in response to user behaviours (for example, when a user has clicked the mouse). A practical application used by some keyloggers with this screen logging ability is to take small screenshots around where a mouse has just clicked; these defeat web-based keyboards (for example, the web-based screen keyboards that are often used by banks) and any web-based on-screen keyboard without screenshot protection.&lt;br /&gt;Programmatically capturing the text in a control. The Microsoft Windows &lt;a class="mw-redirect" title="API" href="http://en.wikipedia.org/wiki/API"&gt;API&lt;/a&gt; allows programs to request the text 'value' in some controls. This means that some passwords may be captured, even if they are hidden behind password masks (usually asterisks).&lt;a href="http://en.wikipedia.org/wiki/Keystroke_logging#cite_note-1"&gt;[2]&lt;/a&gt;&lt;br /&gt;&lt;a id="Hardware-based_keyloggers" name="Hardware-based_keyloggers"&gt;&lt;/a&gt;&lt;br /&gt;Hardware-based keyloggers&lt;br /&gt;Main article: &lt;a title="Hardware keylogger" href="http://en.wikipedia.org/wiki/Hardware_keylogger"&gt;Hardware keylogger&lt;/a&gt;&lt;br /&gt;Hardware-based keyloggers do not depend upon any software being installed as they exist at a hardware level in a computer system.&lt;br /&gt;Firmware-based: BIOS-level &lt;a title="Firmware" href="http://en.wikipedia.org/wiki/Firmware"&gt;firmware&lt;/a&gt; that handles keyboard events can be modified to record these events as they are processed. Physical access or root-level access is required to machine, and the software loaded into the BIOS needs to be created for the specific hardware that it will be running on.&lt;br /&gt;Keyboard hardware: Hardware keyloggers are used for keystroke logging by means of a hardware circuit that is attached somewhere in between the computer &lt;a class="mw-redirect" title="Computer keyboard" href="http://en.wikipedia.org/wiki/Computer_keyboard"&gt;keyboards&lt;/a&gt; and the computer, typically inline with the keyboard's cable connector. More stealthy implementations can be installed or built into standard keyboards, so that there's no device visible on the external cable. Both types logs all keyboard activity to their internal memory, which can subsequently be accessed, for example, by typing in a secret key sequence.&lt;a href="http://en.wikipedia.org/wiki/Keystroke_logging#cite_note-2"&gt;[3]&lt;/a&gt; A hardware keylogger has an advantage over a software solution; because it is not dependent on installation on the target computer's operating system, it will not interfere with any program running on the target machine and also cannot be detected by any software. However its physical presence may be detected, for example if it's installed outside the case as an inline device between the computer and the keyboard. Some of these implementations have the ability to be controlled and monitored remotely by means of a wireless communication standard.[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;]&lt;br /&gt;&lt;a id="Wireless_keyboard_sniffers" name="Wireless_keyboard_sniffers"&gt;&lt;/a&gt;&lt;br /&gt;Wireless keyboard sniffers&lt;br /&gt;These are passive sniffers collect packets of data being transferred from a wireless keyboard and its receiver. As encryption may be used to secure the wireless communications between the two devices, this may need to be cracked before if the transmissions are to be read.&lt;br /&gt;&lt;a id="Keyboard_overlays" name="Keyboard_overlays"&gt;&lt;/a&gt;&lt;br /&gt; Keyboard overlays&lt;br /&gt;Criminals have been known to use keyboard overlays on &lt;a title="Automated teller machine" href="http://en.wikipedia.org/wiki/Automated_teller_machine"&gt;ATM&lt;/a&gt; machines to capture people's PINs. Each keypress is registered by the keyboard of the ATM as well as the criminal's keypad that is placed over it. The device is designed to look like an integrated part of the machine so that bank customers are unware of its presence.&lt;br /&gt;&lt;a id="Acoustic_keyloggers" name="Acoustic_keyloggers"&gt;&lt;/a&gt;&lt;br /&gt; Acoustic keyloggers&lt;br /&gt;&lt;a title="Acoustic cryptanalysis" href="http://en.wikipedia.org/wiki/Acoustic_cryptanalysis"&gt;Acoustic cryptanalysis&lt;/a&gt; can be used to monitor the sound created by someone typing on a computer. Each character on the keyboard makes a subtly different acoustic signature when stroked. It is then possible to identify which keystroke signature relates to which keyboard character via statistical methods such as &lt;a title="Frequency analysis" href="http://en.wikipedia.org/wiki/Frequency_analysis"&gt;frequency analysis&lt;/a&gt;. The repetition frequency of similar acoustic keystroke signatures, the timings between different keyboard strokes and other context information such as the probable language in which the user is writing are used in this analysis to map sounds to letters. A fairly long recording (1000 or more keystrokes) is required so that a big enough &lt;a title="Sample (statistics)" href="http://en.wikipedia.org/wiki/Sample_(statistics)"&gt;sample&lt;/a&gt; is collected.[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;]&lt;br /&gt;&lt;a id="Electromagnetic_emissions" name="Electromagnetic_emissions"&gt;&lt;/a&gt;&lt;br /&gt; Electromagnetic emissions&lt;br /&gt;It is possible to capture the &lt;a title="Electromagnetic radiation" href="http://en.wikipedia.org/wiki/Electromagnetic_radiation"&gt;electromagnetic emissions&lt;/a&gt; of a keyboard, without being physically wired to it.&lt;br /&gt;&lt;a id="Optical_surveillance" name="Optical_surveillance"&gt;&lt;/a&gt;&lt;br /&gt; Optical surveillance&lt;br /&gt;Not a keylogger in the classical sense, but an approach that can nonetheless be used to capture passwords or PINs. A strategically placed camera, such as a hidden &lt;a class="mw-redirect" title="Surveillance camera" href="http://en.wikipedia.org/wiki/Surveillance_camera"&gt;surveillance camera&lt;/a&gt; at an &lt;a title="Automated teller machine" href="http://en.wikipedia.org/wiki/Automated_teller_machine"&gt;ATM&lt;/a&gt;, can allow a criminal to watch a PIN or password being entered.&lt;br /&gt;&lt;a id="Cracking" name="Cracking"&gt;&lt;/a&gt;&lt;br /&gt; Cracking&lt;br /&gt;Writing software applications for keylogging is trivial,[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;] and like any nefarious computer program, can be distributed as a &lt;a title="Trojan horse (computing)" href="http://en.wikipedia.org/wiki/Trojan_horse_(computing)"&gt;trojan horse&lt;/a&gt; or as part of a &lt;a title="Computer virus" href="http://en.wikipedia.org/wiki/Computer_virus"&gt;virus&lt;/a&gt;. What is not trivial for an attacker however, is installing a covert keystroke logger without getting caught and downloading data that has been logged without being traced. An attacker that manually connects to a host machine to download logged keystrokes risks being traced. A trojan that sends keylogged data to a fixed e-mail address or &lt;a title="IP address" href="http://en.wikipedia.org/wiki/IP_address"&gt;IP address&lt;/a&gt; risks exposing the attacker.&lt;br /&gt;&lt;a id="Trojan" name="Trojan"&gt;&lt;/a&gt;&lt;br /&gt; Trojan&lt;br /&gt;&lt;a class="new" title="Young and Yung (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Young_and_Yung&amp;amp;action=edit&amp;amp;redlink=1"&gt;Young and Yung&lt;/a&gt; devised several methods for solving this problem and presented them in their 1997 &lt;a class="mw-redirect" title="IEEE" href="http://en.wikipedia.org/wiki/IEEE"&gt;IEEE&lt;/a&gt; Security &amp;amp; Privacy paper (their paper from '96 touches on it as well). They presented a deniable password snatching attack in which the keystroke logging trojan is installed using a virus (or worm). An attacker that is caught with the virus or worm can claim to be a victim. The cryptotrojan asymmetrically encrypts the pilfered login/password pairs using the &lt;a class="mw-redirect" title="Public key" href="http://en.wikipedia.org/wiki/Public_key"&gt;public key&lt;/a&gt; of the trojan author and covertly broadcasts the resulting ciphertext. They mentioned that the ciphertext can be &lt;a title="Steganography" href="http://en.wikipedia.org/wiki/Steganography"&gt;steganographically&lt;/a&gt; encoded and posted to a public bulletin board (e.g. &lt;a title="Usenet" href="http://en.wikipedia.org/wiki/Usenet"&gt;Usenet&lt;/a&gt;).&lt;br /&gt;&lt;a id="Ciphertext" name="Ciphertext"&gt;&lt;/a&gt;&lt;br /&gt; Ciphertext&lt;br /&gt;Young and Yung also mentioned having the cryptotrojan unconditionally write the asymmetric &lt;a title="Ciphertext" href="http://en.wikipedia.org/wiki/Ciphertext"&gt;ciphertexts&lt;/a&gt; to the last few unused sectors of every writable disk that is inserted into the machine. The sectors remain marked as unused. This can be done using a &lt;a title="Universal Serial Bus" href="http://en.wikipedia.org/wiki/Universal_Serial_Bus"&gt;USB&lt;/a&gt; token. So, the trojan author may be one of dozens or even thousands of people that are given the stolen information. Only the trojan author can decrypt the ciphertext because only the author knows the needed private decryption key. This attack is from the field known as &lt;a title="Cryptovirology" href="http://en.wikipedia.org/wiki/Cryptovirology"&gt;cryptovirology&lt;/a&gt;.&lt;br /&gt;&lt;a id="Federal_Bureau_of_Investigation" name="Federal_Bureau_of_Investigation"&gt;&lt;/a&gt;&lt;br /&gt; Federal Bureau of Investigation&lt;br /&gt;In 2000, the &lt;a title="Federal Bureau of Investigation" href="http://en.wikipedia.org/wiki/Federal_Bureau_of_Investigation"&gt;FBI&lt;/a&gt; used a keystroke logger to obtain the &lt;a title="Pretty Good Privacy" href="http://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;PGP&lt;/a&gt; &lt;a title="Passphrase" href="http://en.wikipedia.org/wiki/Passphrase"&gt;passphrase&lt;/a&gt; of &lt;a title="Nicodemo Scarfo, Jr." href="http://en.wikipedia.org/wiki/Nicodemo_Scarfo,_Jr."&gt;Nicodemo Scarfo, Jr.&lt;/a&gt;, son of mob boss &lt;a title="Nicodemo Scarfo" href="http://en.wikipedia.org/wiki/Nicodemo_Scarfo"&gt;Nicodemo Scarfo&lt;/a&gt;.&lt;br /&gt;&lt;a id="Use_in_surveillance_software" name="Use_in_surveillance_software"&gt;&lt;/a&gt;&lt;br /&gt; Use in surveillance software&lt;br /&gt;Some surveillance software has keystroke logging abilities and is advertised to monitor the internet use of minors. Such software has been criticized on privacy grounds, and because it can be used maliciously or to gain unauthorized access to users' computer systems.&lt;br /&gt;&lt;a id="Countermeasures" name="Countermeasures"&gt;&lt;/a&gt;&lt;br /&gt; Countermeasures&lt;br /&gt;Countermeasures against keyloggers will vary depending on the type of keylogger in use.&lt;br /&gt;&lt;a id="Code_signing" name="Code_signing"&gt;&lt;/a&gt;&lt;br /&gt; Code signing&lt;br /&gt;64-bit versions of &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt; and &lt;a class="mw-redirect" title="Server 2008" href="http://en.wikipedia.org/wiki/Server_2008"&gt;Server 2008&lt;/a&gt; implement mandatory &lt;a title="Digital signature" href="http://en.wikipedia.org/wiki/Digital_signature"&gt;digital signing&lt;/a&gt; of kernel-mode device drivers, thereby restricting the installation of key-logging &lt;a title="Rootkit" href="http://en.wikipedia.org/wiki/Rootkit"&gt;rootkits&lt;/a&gt;.&lt;br /&gt;&lt;a id="Anti-spyware" name="Anti-spyware"&gt;&lt;/a&gt;&lt;br /&gt; Anti-spyware&lt;br /&gt;Many &lt;a class="mw-redirect" title="Anti-spyware" href="http://en.wikipedia.org/wiki/Anti-spyware"&gt;anti-spyware&lt;/a&gt; applications are able to detect keyloggers and quarantine, disable or cleanse them. These applications are able to detect keyloggers based on patterns in &lt;a title="Subroutine" href="http://en.wikipedia.org/wiki/Subroutine"&gt;executable code&lt;/a&gt;, &lt;a class="mw-redirect" title="Heuristics" href="http://en.wikipedia.org/wiki/Heuristics"&gt;heuristics&lt;/a&gt; and keylogger behaviours (such as the use of hooks and certain &lt;a class="mw-redirect" title="API" href="http://en.wikipedia.org/wiki/API"&gt;APIs&lt;/a&gt;).&lt;br /&gt;No software-based anti-spyware application can be 100% effective against all keyloggers. Also, software-based anti-spyware cannot defeat non-software keyloggers (for example, hardware keyloggers attached to keyboards will always receive keystrokes before any software-based anti-spyware application, rendering the anti-spyware application useless).&lt;br /&gt;However, the particular technique that the anti-spyware application uses will influence its potential effectiveness against software keyloggers. As a general rule, anti-spyware applications with higher privileges (see &lt;a title="Ring (computer security)" href="http://en.wikipedia.org/wiki/Ring_(computer_security)"&gt;Ring (computer security)&lt;/a&gt;) will defeat keyloggers with lower privileges. For example, a hook-based anti-spyware application cannot defeat a kernel-based keylogger (as the keylogger will receive the keystroke messages before the anti-spyware application), but it could potentially defeat hook and API-based keyloggers.&lt;br /&gt;&lt;a id="Firewall" name="Firewall"&gt;&lt;/a&gt;&lt;br /&gt; Firewall&lt;br /&gt;Enabling a &lt;a class="mw-redirect" title="Firewall (networking)" href="http://en.wikipedia.org/wiki/Firewall_(networking)"&gt;firewall&lt;/a&gt; does not stop keyloggers per se, but can prevent the remote installation of key logging software, and possibly prevent transmission of the logged material over the internet if properly configured.&lt;br /&gt;&lt;a id="Network_monitors" name="Network_monitors"&gt;&lt;/a&gt;&lt;br /&gt; Network monitors&lt;br /&gt;&lt;a title="Network monitoring" href="http://en.wikipedia.org/wiki/Network_monitoring"&gt;Network monitors&lt;/a&gt; (also known as reverse-firewalls) can be used to alert the user whenever an application attempts to make a network connection. This gives the user the chance to prevent the keylogger from "&lt;a title="Phoning home" href="http://en.wikipedia.org/wiki/Phoning_home"&gt;phoning home&lt;/a&gt;" with his or her typed information.&lt;br /&gt;&lt;a id="Automatic_form_filler_programs" name="Automatic_form_filler_programs"&gt;&lt;/a&gt;&lt;br /&gt; Automatic form filler programs&lt;br /&gt;Automatic form-filling programs may prevent keylogging by removing the requirement for a user to type personal details and passwords using the keyboard. &lt;a title="Form filler" href="http://en.wikipedia.org/wiki/Form_filler"&gt;Form fillers&lt;/a&gt; are primarily designed for web browsers to fill in checkout pages and log users into their accounts. Once the user's account and credit card information has been entered into the program, it will be automatically entered into forms without ever using the keyboard or &lt;a title="Clipboard (software)" href="http://en.wikipedia.org/wiki/Clipboard_(software)"&gt;clipboard&lt;/a&gt;, thereby reducing the possibility that private data is being recorded. However someone with physical access to the machine may still be able to install software that is able to intercept this information elsewhere in the operating system or while in transit on the network. (&lt;a title="Transport Layer Security" href="http://en.wikipedia.org/wiki/Transport_Layer_Security"&gt;Transport Layer Security&lt;/a&gt; prevents the interception of data in transit by &lt;a title="Packet analyzer" href="http://en.wikipedia.org/wiki/Packet_analyzer"&gt;network sniffers&lt;/a&gt; and &lt;a title="Proxy server" href="http://en.wikipedia.org/wiki/Proxy_server"&gt;proxy tools&lt;/a&gt;.)&lt;br /&gt;&lt;a id="Alternative_keyboard_layouts" name="Alternative_keyboard_layouts"&gt;&lt;/a&gt;&lt;br /&gt; Alternative keyboard layouts&lt;br /&gt;Most keylogging hardware/software assumes that a person is using the standard &lt;a title="QWERTY" href="http://en.wikipedia.org/wiki/QWERTY"&gt;QWERTY&lt;/a&gt; keyboard layout, so by using a layout such as &lt;a title="Dvorak Simplified Keyboard" href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvorak&lt;/a&gt;, &lt;a title="Frequency analysis" href="http://en.wikipedia.org/wiki/Frequency_analysis"&gt;frequency analysis&lt;/a&gt; is required to determine the mapping of captured keystrokes. For additional security, custom keyboard layouts can be created using tools like the Microsoft Keyboard Layout Creator.&lt;br /&gt;&lt;a id="One-time_passwords_.28OTP.29" name="One-time_passwords_.28OTP.29"&gt;&lt;/a&gt;&lt;br /&gt; One-time passwords (OTP)&lt;br /&gt;Using &lt;a title="One-time password" href="http://en.wikipedia.org/wiki/One-time_password"&gt;one-time passwords&lt;/a&gt; is completely keylogger-safe because the recorded password is always invalidated as soon as it's used. This solution is useful if you are often using public computers where you can't verify what is running on them. One-time passwords also prevent &lt;a title="Replay attack" href="http://en.wikipedia.org/wiki/Replay_attack"&gt;replay attacks&lt;/a&gt; where an attacker uses the old information to impersonate. One example is online banking where one-time passwords are implemented to protect accounts from keylogging attacks as well as replay attacks.&lt;br /&gt;&lt;a id="Smart_cards" name="Smart_cards"&gt;&lt;/a&gt;&lt;br /&gt; Smart cards&lt;br /&gt;Because of the integrated circuit of &lt;a title="Smart card" href="http://en.wikipedia.org/wiki/Smart_card"&gt;smart cards&lt;/a&gt;, the cards themselves are not affected by keylogger and other logging attempts. A smart card can process the information and return back a unique challenge every time you login. The information cannot usually be used to login again. However smartcard readers and their associated keypads for PIN entry are still vulnerable to key logging.&lt;br /&gt;&lt;a id="On-screen_keyboards" name="On-screen_keyboards"&gt;&lt;/a&gt;&lt;br /&gt; On-screen keyboards&lt;br /&gt;&lt;a id="Program-to-program_.28non-web.29_keyboards" name="Program-to-program_.28non-web.29_keyboards"&gt;&lt;/a&gt;&lt;br /&gt; Program-to-program (non-web) keyboards&lt;br /&gt;It is sometimes said that a third-party (or first party) on-screen keyboard program is a good way to combat keyloggers, as it only requires clicks of the mouse. However, this is not always true.&lt;br /&gt;Most on screen keyboards (such as the onscreen keyboard that comes with Microsoft Windows XP) send keyboard event messages to the external target program to type text. Every software keylogger can log these typed characters sent from one program to another. Additionally, some programs also record or take snapshots of what is displayed on the screen (periodically, and/or upon each mouse click).&lt;br /&gt;However, there are some on-screen keyboard programs that do offer some protection, using other techniques described in this article (such as &lt;a title="Drag-and-drop" href="http://en.wikipedia.org/wiki/Drag-and-drop"&gt;dragging and dropping&lt;/a&gt; the password from the on-screen keyboard to the target program).&lt;br /&gt;&lt;a id="Web-based_keyboards" name="Web-based_keyboards"&gt;&lt;/a&gt;&lt;br /&gt; Web-based keyboards&lt;br /&gt;Web-based on-screen keyboards (written in JavaScript, etc.) may provide some degree of protection. At least some commercial keylogging programs do not record typing on a web-based &lt;a title="Virtual keyboard" href="http://en.wikipedia.org/wiki/Virtual_keyboard"&gt;virtual keyboard&lt;/a&gt;. (Screenshot recorders are a concern whenever entire passwords are displayed; fast recorders are generally required to capture a sequence of virtual key presses.)&lt;br /&gt;Notably, the game &lt;a title="MapleStory" href="http://en.wikipedia.org/wiki/MapleStory"&gt;MapleStory&lt;/a&gt; uses, in addition to a standard alphanumeric password, a 4-digit &lt;a title="Personal identification number" href="http://en.wikipedia.org/wiki/Personal_identification_number"&gt;PIN code&lt;/a&gt; secured by both on-screen keyboard entry and a randomly changing button pattern; there is no real way to get the latter information without logging the screen and mouse movements; another &lt;a class="mw-redirect" title="MMORPG" href="http://en.wikipedia.org/wiki/MMORPG"&gt;MMORPG&lt;/a&gt; called &lt;a title="RuneScape" href="http://en.wikipedia.org/wiki/RuneScape"&gt;RuneScape&lt;/a&gt; makes a similar system available for players to protect their in-game bank accounts.&lt;br /&gt;Many banks uses the web-based screen keyboard to prevent key logging. &lt;a title="HSBC" href="http://en.wikipedia.org/wiki/HSBC"&gt;HSBC&lt;/a&gt; is one of them.&lt;br /&gt;&lt;a id="Anti-keylogging_software" name="Anti-keylogging_software"&gt;&lt;/a&gt;&lt;br /&gt; Anti-keylogging software&lt;br /&gt;Keylogger detection software is also available. Some of this type of software use "signatures" from a list of all known keyloggers. The PC's legitimate users can then periodically run a scan from this list, and the software looks for the items from the list on the hard-drive. One drawback of this approach is that it only protects from keyloggers on the signature-based list, with the PC remaining vulnerable to other keyloggers.&lt;br /&gt;Other detection software doesn't use a signature list, but instead analyzes the working methods of many modules in the PC, allowing it to block the work of many different types of keylogger. One drawback of this approach is that it can also block legitimate, non-keylogging software. Some heuristics-based anti-keyloggers have the option to unblock known good software, but this can cause difficulties for inexperienced users.&lt;br /&gt;&lt;a id="Speech_recognition" name="Speech_recognition"&gt;&lt;/a&gt;&lt;br /&gt; Speech recognition&lt;br /&gt;Similar to on-screen keyboards, &lt;a title="Speech recognition" href="http://en.wikipedia.org/wiki/Speech_recognition"&gt;speech-to-text conversion&lt;/a&gt; software can also be used against keyloggers, since there are no typing or mouse movements involved. The weakest point of using voice-recognition software may be how the software sends the recognized text to target software after the recognition took place.&lt;br /&gt;&lt;a id="Handwriting_recognition_and_mouse_gestures" name="Handwriting_recognition_and_mouse_gestures"&gt;&lt;/a&gt;&lt;br /&gt; Handwriting recognition and mouse gestures&lt;br /&gt;Also, many &lt;a class="mw-redirect" title="PDA" href="http://en.wikipedia.org/wiki/PDA"&gt;PDAs&lt;/a&gt; and lately &lt;a title="Tablet PC" href="http://en.wikipedia.org/wiki/Tablet_PC"&gt;Tablet PCs&lt;/a&gt; can already convert pen (also called stylus) movements on their &lt;a title="Touchscreen" href="http://en.wikipedia.org/wiki/Touchscreen"&gt;touchscreens&lt;/a&gt; to computer understandable text successfully. &lt;a class="mw-redirect" title="Mouse gestures" href="http://en.wikipedia.org/wiki/Mouse_gestures"&gt;Mouse gestures&lt;/a&gt; utilize this principle by using mouse movements instead of a stylus. Mouse gesture programs convert these strokes to user-definable actions, among others typing text. Similarly, &lt;a title="Graphics tablet" href="http://en.wikipedia.org/wiki/Graphics_tablet"&gt;graphics tablets&lt;/a&gt; and &lt;a title="Light pen" href="http://en.wikipedia.org/wiki/Light_pen"&gt;light pens&lt;/a&gt; can be used to input these gestures, however, these are getting used less commonly everyday.&lt;br /&gt;The same potential weakness of speech recognition applies to this technique as well.&lt;br /&gt;&lt;a id="Macro_expanders.2Frecorders" name="Macro_expanders.2Frecorders"&gt;&lt;/a&gt;&lt;br /&gt; Macro expanders/recorders&lt;br /&gt;With the help of many &lt;a title="Freeware" href="http://en.wikipedia.org/wiki/Freeware"&gt;Freeware&lt;/a&gt;/&lt;a title="Shareware" href="http://en.wikipedia.org/wiki/Shareware"&gt;Shareware&lt;/a&gt; programs, a seemingly meaningless text can be expanded to a meaningful text and most of the time context-sensitively, e.g. "we" can be expanded "en.Wikipedia.org" when a browser window has the focus. The biggest weakness of this technique is that these programs send their keystrokes directly to the target program. However, this can be overcome by using &lt;a href="http://en.wikipedia.org/wiki/Keystroke_logging#Non_technological_methods"&gt;the 'alternating' technique described below&lt;/a&gt;, i.e. sending mouse clicks to non-responsive areas of the target program, sending meaningless keys, sending another mouse click to target area (e.g. password field) and switching back and forth.&lt;br /&gt;&lt;a id="Window_transparency" name="Window_transparency"&gt;&lt;/a&gt;&lt;br /&gt; Window transparency&lt;br /&gt;Using many readily available utilities, the target window could be made temporarily transparent, in order to hinder screen-capturing by advanced keyloggers.[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;] Although not a fool-proof technique against keyloggers on its own, this could be used in combination with other techniques.&lt;br /&gt;&lt;a id="Non-technological_methods" name="Non-technological_methods"&gt;&lt;/a&gt;&lt;br /&gt; Non-technological methods&lt;br /&gt;Some keyloggers can be fooled by alternating between typing the login credentials and typing characters somewhere else in the focus window. Similarly, a user can move their cursor using the mouse during typing, causing the logged keystrokes to be in the wrong order e.g. by typing a password beginning with the last letter and then using the mouse to move the cursor for each subsequent letter. Lastly, someone can also use &lt;a title="Context menu" href="http://en.wikipedia.org/wiki/Context_menu"&gt;context menus&lt;/a&gt; to remove, copy, cut and paste parts of the typed text without using the keyboard.&lt;br /&gt;Another very similar technique utilizes the fact that any selected text portion is replaced by the next key typed. E.g. if the password is "secret", one could type "s", then some dummy keys "asdfsd". Then these dummies could be selected with mouse, and next character from the password "e" is typed, which replaces the dummies "asdfsd".&lt;br /&gt;&lt;a id="References" name="References"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-5894141474629832322?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/5894141474629832322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/keystroke-logging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/5894141474629832322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/5894141474629832322'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/keystroke-logging.html' title='Keystroke logging'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5UJc09sb8uY/SnlshIK_wjI/AAAAAAAAADA/QldIpA3sE9U/s72-c/110_F_6730568_wWt44qxOrp4kPxNPYe1taloab6D8MJP9.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-2244001879443206585</id><published>2009-08-05T04:08:00.000-07:00</published><updated>2009-08-05T04:15:41.038-07:00</updated><title type='text'>Branching (software)</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_5UJc09sb8uY/SnlpHDT3bDI/AAAAAAAAACw/c8vcvj2TqHU/s1600-h/images1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366436000857287730" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 130px; CURSOR: hand; HEIGHT: 129px" alt="" src="http://3.bp.blogspot.com/_5UJc09sb8uY/SnlpHDT3bDI/AAAAAAAAACw/c8vcvj2TqHU/s320/images1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Branching (software)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Arial;font-size:130%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;Branching, in &lt;a title="Revision control" href="http://en.wikipedia.org/wiki/Revision_control"&gt;revision control&lt;/a&gt; and &lt;a title="Software configuration management" href="http://en.wikipedia.org/wiki/Software_configuration_management"&gt;software configuration management&lt;/a&gt;, is the duplication of an object under revision control (such as a source code file, or a directory tree) so that modifications can happen in parallel along both branches.&lt;br /&gt;Branches are also known as trees, streams or codelines. The originating branch is sometimes called the parent branch, the upstream branch (or simply upstream - especially if the branches are maintained by different organisations or individuals), or the backing stream. Child branches are branches that have a parent; a branch without a parent is referred to as the &lt;a title="Trunk (software)" href="http://en.wikipedia.org/wiki/Trunk_(software)"&gt;trunk&lt;/a&gt; or the mainline.&lt;br /&gt;In some &lt;a title="Revision control" href="http://en.wikipedia.org/wiki/Revision_control#Distributed_version_control"&gt;distributed revision control systems&lt;/a&gt;, such as &lt;a title="Darcs" href="http://en.wikipedia.org/wiki/Darcs"&gt;Darcs&lt;/a&gt;, there is no distinction made between repositories and branches - so in these systems, fetching a copy of a repository is equivalent to branching.&lt;br /&gt;Branching also generally implies the ability to later merge or integrate changes back onto the parent branch. Often the changes are merged back to the trunk, even if this is not the parent branch. A branch not intended to be merged (e.g. because it has been &lt;a class="new" title="Relicensed (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Relicensed&amp;amp;action=edit&amp;amp;redlink=1"&gt;relicensed&lt;/a&gt; under an incompatible license by a third party, or it attempts to serve a different purpose) is usually called a &lt;a title="Fork (software development)" href="http://en.wikipedia.org/wiki/Fork_(software_development)"&gt;fork&lt;/a&gt;.&lt;br /&gt;Branches are created for various reasons. These are covered in depth in the paper &lt;a class="external text" title="http://www.hillside.net/plop/plop98/final_submissions/P37.pdf" href="http://www.hillside.net/plop/plop98/final_submissions/P37.pdf" rel="nofollow"&gt;"Streamed Lines: Branching Patterns for Parallel Software Development"&lt;/a&gt; by Brad Appleton, Stephen Berczuk, Ralph Cabrera, and Robert Orenstein.&lt;br /&gt;&lt;a id="Development_branch" name="Development_branch"&gt;&lt;/a&gt;&lt;br /&gt; Development branch&lt;br /&gt;A development branch or development tree of a piece of software is a version that is under &lt;a title="Software development" href="http://en.wikipedia.org/wiki/Software_development"&gt;development&lt;/a&gt;, and has not yet been officially &lt;a class="mw-redirect" title="Software release" href="http://en.wikipedia.org/wiki/Software_release"&gt;released&lt;/a&gt;. In the &lt;a title="Open source" href="http://en.wikipedia.org/wiki/Open_source"&gt;open source&lt;/a&gt; community, the notion of release is typically metaphorical, since anyone can usually check out any desired version, whether it be in the development branch or not. Often, the version that will eventually become the next major version is called the development branch. However, there is often more than one subsequent version of the software under development at a given time.&lt;br /&gt;Some revision control systems have specific jargon for the main development branch - for example, in &lt;a class="mw-redirect" title="Concurrent Version System" href="http://en.wikipedia.org/wiki/Concurrent_Version_System"&gt;CVS&lt;/a&gt;, it is called the "MAIN". A more generic term is "mainline".&lt;br /&gt;&lt;a id="Shadow" name="Shadow"&gt;&lt;/a&gt;&lt;br /&gt; Shadow&lt;br /&gt;In cvc, an open source package building system (incorporating a simple revision control system for packages) produced by &lt;a title="RPath" href="http://en.wikipedia.org/wiki/RPath"&gt;rPath&lt;/a&gt;, a shadow is a type of branch which is designed to "shadow" changes made in the upstream branch, to make it easier to maintain small changes&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-2244001879443206585?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/2244001879443206585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/branching-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/2244001879443206585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/2244001879443206585'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/branching-software.html' title='Branching (software)'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5UJc09sb8uY/SnlpHDT3bDI/AAAAAAAAACw/c8vcvj2TqHU/s72-c/images1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-733792958276149859</id><published>2009-08-05T03:51:00.000-07:00</published><updated>2009-08-05T04:08:48.084-07:00</updated><title type='text'>Operating system</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_5UJc09sb8uY/Snlmeokj9JI/AAAAAAAAACo/bHm4u8aMBtQ/s1600-h/images.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366433107461534866" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 122px; CURSOR: hand; HEIGHT: 102px" alt="" src="http://1.bp.blogspot.com/_5UJc09sb8uY/Snlmeokj9JI/AAAAAAAAACo/bHm4u8aMBtQ/s320/images.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Operating system&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Arial;font-size:130%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;An Operating System (commonly abbreviated to either OS or O/S) is an interface between hardware and user; an OS is responsible for the management and coordination of activities and the sharing of the resources of the computer. The operating system acts as a host for &lt;a class="mw-redirect" title="Applications (computing)" href="http://en.wikipedia.org/wiki/Applications_(computing)"&gt;computing applications&lt;/a&gt; that are run on the machine. As a host, one of the purposes of an operating system is to handle the details of the operation of the &lt;a class="mw-redirect" title="Computer hardware" href="http://en.wikipedia.org/wiki/Computer_hardware"&gt;hardware&lt;/a&gt;. This relieves application programs from having to manage these details and makes it easier to write applications. Almost all computers (including &lt;a class="mw-redirect" title="Handheld computers" href="http://en.wikipedia.org/wiki/Handheld_computers"&gt;handheld computers&lt;/a&gt;, &lt;a class="mw-redirect" title="Desktop computers" href="http://en.wikipedia.org/wiki/Desktop_computers"&gt;desktop computers&lt;/a&gt;, &lt;a class="mw-redirect" title="Supercomputers" href="http://en.wikipedia.org/wiki/Supercomputers"&gt;supercomputers&lt;/a&gt;, &lt;a class="mw-redirect" title="Video game consoles" href="http://en.wikipedia.org/wiki/Video_game_consoles"&gt;video game consoles&lt;/a&gt;) as well as some &lt;a title="Robot" href="http://en.wikipedia.org/wiki/Robot"&gt;robots&lt;/a&gt;, domestic appliances (dishwashers, washing machines), and &lt;a title="Portable media player" href="http://en.wikipedia.org/wiki/Portable_media_player"&gt;portable media players&lt;/a&gt; use an operating system of some type. Some of the oldest models may however use an &lt;a title="Embedded operating system" href="http://en.wikipedia.org/wiki/Embedded_operating_system"&gt;embedded operating system&lt;/a&gt;, that may be contained on a &lt;a class="mw-redirect" title="Compact disk" href="http://en.wikipedia.org/wiki/Compact_disk"&gt;compact disk&lt;/a&gt; or other &lt;a title="Data storage device" href="http://en.wikipedia.org/wiki/Data_storage_device"&gt;data storage device&lt;/a&gt;.&lt;br /&gt;Operating systems offer a number of services to application programs and users. Applications access these services through &lt;a class="mw-redirect" title="Application programming interfaces" href="http://en.wikipedia.org/wiki/Application_programming_interfaces"&gt;application programming interfaces&lt;/a&gt; (APIs) or &lt;a class="mw-redirect" title="System calls" href="http://en.wikipedia.org/wiki/System_calls"&gt;system calls&lt;/a&gt;. By invoking these interfaces, the application can request a service from the operating system, pass parameters, and receive the results of the operation. Users may also interact with the operating system with some kind of software user interface (UI) like typing commands by using &lt;a class="mw-redirect" title="Command line interface" href="http://en.wikipedia.org/wiki/Command_line_interface"&gt;command line interface&lt;/a&gt; (CLI) or using a &lt;a title="Graphical user interface" href="http://en.wikipedia.org/wiki/Graphical_user_interface"&gt;graphical user interface&lt;/a&gt; (GUI, commonly pronounced “gooey”). For hand-held and desktop computers, the user interface is generally considered part of the operating system. On large multi-user systems like Unix and Unix-like systems, the user interface is generally implemented as an application program that runs outside the operating system. (Whether the user interface should be included as part of the operating system is a point of contention.)&lt;br /&gt;Common contemporary operating system families include &lt;a class="mw-redirect" title="BSD" href="http://en.wikipedia.org/wiki/BSD"&gt;BSD&lt;/a&gt;, &lt;a class="mw-redirect" title="Darwin operating system" href="http://en.wikipedia.org/wiki/Darwin_operating_system"&gt;Darwin (Mac OS X)&lt;/a&gt;, &lt;a class="mw-redirect" title="GNU/Linux" href="http://en.wikipedia.org/wiki/GNU/Linux"&gt;GNU/Linux&lt;/a&gt;, &lt;a title="SunOS" href="http://en.wikipedia.org/wiki/SunOS"&gt;SunOS (Solaris/OpenSolaris)&lt;/a&gt;, and &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT (XP/Vista/7)&lt;/a&gt;. While servers generally run &lt;a title="Unix" href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; or some &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; operating system, embedded system markets are split amongst several operating systems&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; History&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;[&lt;a title="Edit section: In the beginning" href="http://en.wikipedia.org/w/index.php?title=Operating_system&amp;amp;action=edit&amp;amp;section=2"&gt;edit&lt;/a&gt;] In the beginning&lt;br /&gt;Proprietary operating systems were made to sell the company's hardware. Without system software (compilers and operating systems), a budding hardware developer had great difficulty launching a computer; the availability of operating systems not tied to a single hardware supplier - such as &lt;a title="Digital Research" href="http://en.wikipedia.org/wiki/Digital_Research"&gt;Digital Research&lt;/a&gt;'s &lt;a title="CP/M" href="http://en.wikipedia.org/wiki/CP/M"&gt;CP/M&lt;/a&gt; for microcomputers, and Unix for larger computers - greatly transformed the computer industry; someone with an innovative idea could easily start producing hardware on which buyers could use standard software. In 1969-70, &lt;a class="mw-redirect" title="UNIX" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt; first appeared on the &lt;a title="PDP-7" href="http://en.wikipedia.org/wiki/PDP-7"&gt;PDP-7&lt;/a&gt; and later the &lt;a title="PDP-11" href="http://en.wikipedia.org/wiki/PDP-11"&gt;PDP-11&lt;/a&gt;. It soon became capable of providing cross-platform time sharing using preemptive multitasking, advanced memory management, memory protection, and a host of other advanced features. UNIX soon gained popularity as an operating system for mainframes and minicomputers alike. Unix was inspired by Multics, as were several other operating systems, such as &lt;a title="Data General" href="http://en.wikipedia.org/wiki/Data_General"&gt;Data General&lt;/a&gt;'s AOS-VS, and &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt;'s addition of such concepts as subdirectories to &lt;a class="mw-redirect" title="PC DOS" href="http://en.wikipedia.org/wiki/PC_DOS"&gt;PC DOS&lt;/a&gt; in version 2.0.&lt;br /&gt;&lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; bought &lt;a title="86-DOS" href="http://en.wikipedia.org/wiki/86-DOS"&gt;QDOS&lt;/a&gt; from &lt;a title="Seattle Computer Products" href="http://en.wikipedia.org/wiki/Seattle_Computer_Products"&gt;Seattle Computer Products&lt;/a&gt;, a very simple diskette operating system somewhat similar to &lt;a title="CP/M" href="http://en.wikipedia.org/wiki/CP/M"&gt;CP/M&lt;/a&gt;, to create an operating system, &lt;a class="mw-redirect" title="PC DOS" href="http://en.wikipedia.org/wiki/PC_DOS"&gt;PC DOS&lt;/a&gt;, for the launch of the &lt;a class="mw-redirect" title="IBM PC" href="http://en.wikipedia.org/wiki/IBM_PC"&gt;IBM PC&lt;/a&gt;, under a deal with &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt; where Microsoft could still sell the operating system as &lt;a class="mw-redirect" title="MS DOS" href="http://en.wikipedia.org/wiki/MS_DOS"&gt;MS DOS&lt;/a&gt; for non-IBM computers. Microsoft produced odd-numbered major version numbers while IBM was responsible for even revision numbers (2.0, 2.1, 4.0, etc) of the code base until version 6. There was very little difference between MS-DOS and PC-DOS, one example being the inclusion of &lt;a title="GW-BASIC" href="http://en.wikipedia.org/wiki/GW-BASIC"&gt;GW-BASIC&lt;/a&gt; with MS-DOS (because some BASIC code in IBM PC &lt;a class="mw-redirect" title="ROM" href="http://en.wikipedia.org/wiki/ROM"&gt;ROMs&lt;/a&gt; was not legally allowed to be put into non-IBM computers). MS-DOS and PC-DOS soon became known simply as "DOS" (the term is now usually taken to also include other "DOSes" such as &lt;a title="DR-DOS" href="http://en.wikipedia.org/wiki/DR-DOS"&gt;DR-DOS&lt;/a&gt; and &lt;a title="FreeDOS" href="http://en.wikipedia.org/wiki/FreeDOS"&gt;FreeDOS&lt;/a&gt;, but it should not be confused with the command prompt program within some operating systems, &lt;a title="COMMAND.COM" href="http://en.wikipedia.org/wiki/COMMAND.COM"&gt;COMMAND.COM&lt;/a&gt;). Although MS-DOS could be tailored to hardware significantly different to IBM's PC, it soon became common for hardware vendors to make their equipment as compatible as possible with the IBM PC and its immediate IBM successors (the &lt;a class="mw-redirect" title="PC-XT" href="http://en.wikipedia.org/wiki/PC-XT"&gt;PC-XT&lt;/a&gt; and later &lt;a class="mw-redirect" title="IBM PC-AT" href="http://en.wikipedia.org/wiki/IBM_PC-AT"&gt;IBM PC-AT&lt;/a&gt; models), since many popular DOS programs bypassed the operating system to access hardware directly for speed, requiring other manufactures to closely copy the IBM design, including its limitations. The availability of &lt;a title="MS-DOS" href="http://en.wikipedia.org/wiki/MS-DOS"&gt;MS-DOS&lt;/a&gt; had two major effects on the computer industry: the commercial acceptability of "sneaky tricks" (as documented, for example, in &lt;a title="Ralf Brown's Interrupt List" href="http://en.wikipedia.org/wiki/Ralf_Brown%27s_Interrupt_List"&gt;Ralf Brown's Interrupt List&lt;/a&gt;) to gain speed or functionality or copy-protection, and a market that demanded extreme compatibility (speed and cosmetic differences were the only acceptable innovations).&lt;br /&gt;&lt;a title="IBM PC compatible" href="http://en.wikipedia.org/wiki/IBM_PC_compatible"&gt;IBM PC compatibles&lt;/a&gt; could also run Microsoft &lt;a title="Xenix" href="http://en.wikipedia.org/wiki/Xenix"&gt;Xenix&lt;/a&gt;, a &lt;a class="mw-redirect" title="UNIX-like" href="http://en.wikipedia.org/wiki/UNIX-like"&gt;UNIX-like&lt;/a&gt; operating system from the early 1980s. Xenix was heavily marketed by Microsoft as a multi-user alternative to its single user &lt;a title="MS-DOS" href="http://en.wikipedia.org/wiki/MS-DOS"&gt;MS-DOS&lt;/a&gt; operating system. The &lt;a class="mw-redirect" title="CPU" href="http://en.wikipedia.org/wiki/CPU"&gt;CPUs&lt;/a&gt; of these personal computers could not facilitate kernel memory protection or provide dual mode operation, so Xenix relied on cooperative multitasking and had no protected memory.&lt;br /&gt;The &lt;a class="mw-redirect" title="80286" href="http://en.wikipedia.org/wiki/80286"&gt;80286&lt;/a&gt;-based &lt;a class="mw-redirect" title="IBM PC AT" href="http://en.wikipedia.org/wiki/IBM_PC_AT"&gt;IBM PC AT&lt;/a&gt; was the first IBM compatible personal computer capable of providing &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected memory mode&lt;/a&gt; operation. However, this mode was hampered by software bugs in its implementation on the 286, and not widely accepted until the release of the Intel &lt;a class="mw-redirect" title="80386" href="http://en.wikipedia.org/wiki/80386"&gt;80386&lt;/a&gt;. With the 386 porting BSD &lt;a title="Unix" href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; to a PC became feasible, and various &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; systems (tagged "*nix" at the time), including &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;, arose, but IBM (and, initially, Microsoft) opted for &lt;a title="OS/2" href="http://en.wikipedia.org/wiki/OS/2"&gt;OS/2&lt;/a&gt; from the inception of the &lt;a title="PS/2" href="http://en.wikipedia.org/wiki/PS/2"&gt;PS/2&lt;/a&gt;; Microsoft eventually going its own way with &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; firstly as a &lt;a class="mw-redirect" title="GUI" href="http://en.wikipedia.org/wiki/GUI"&gt;GUI&lt;/a&gt; on top of DOS, then as a complete operating system.&lt;br /&gt;Classic &lt;a title="Mac OS" href="http://en.wikipedia.org/wiki/Mac_OS"&gt;Mac OS&lt;/a&gt;, and &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; 1.0-3.11 supported only &lt;a class="mw-redirect" title="Cooperative multitasking" href="http://en.wikipedia.org/wiki/Cooperative_multitasking"&gt;cooperative multitasking&lt;/a&gt; (Windows 95, 98, &amp;amp; ME supported preemptive multitasking only when running 32-bit applications, but ran legacy 16-bit applications using cooperative multitasking), and were very limited in their abilities to take advantage of protected memory. Application programs running on these operating systems must yield CPU time to the scheduler when they are not using it, either by default, or by calling a function.&lt;br /&gt;&lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt;'s underlying operating system kernel which was designed by essentially the same team as &lt;a title="Digital Equipment Corporation" href="http://en.wikipedia.org/wiki/Digital_Equipment_Corporation"&gt;Digital Equipment Corporation&lt;/a&gt;'s &lt;a title="VMS" href="http://en.wikipedia.org/wiki/VMS"&gt;VMS&lt;/a&gt;, a &lt;a class="mw-redirect" title="UNIX-like" href="http://en.wikipedia.org/wiki/UNIX-like"&gt;UNIX-like&lt;/a&gt; operating system which provided protected mode operation for all user programs, kernel memory protection, preemptive multi-tasking, virtual file system support, and a host of other features.&lt;br /&gt;Classic &lt;a title="AmigaOS" href="http://en.wikipedia.org/wiki/AmigaOS"&gt;AmigaOS&lt;/a&gt; and versions of Microsoft Windows from &lt;a title="Windows 1.0" href="http://en.wikipedia.org/wiki/Windows_1.0"&gt;Windows 1.0&lt;/a&gt; through &lt;a title="Windows Me" href="http://en.wikipedia.org/wiki/Windows_Me"&gt;Windows Me&lt;/a&gt; did not properly track resources allocated by processes at runtime.[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;] If a process had to be terminated, the resources might not be freed up for new programs until the machine was restarted.&lt;br /&gt;The AmigaOS did have preemptive multitasking, as did operating systems for many larger ("&lt;a title="Superminicomputer" href="http://en.wikipedia.org/wiki/Superminicomputer"&gt;supermini&lt;/a&gt;") computers that, despite being technically better, were struggling in sales when faced with the mass production of increasingly-faster "Personal" Computers and customers locked into non-portable software (&lt;a class="mw-redirect" title="Legacy software" href="http://en.wikipedia.org/wiki/Legacy_software"&gt;legacy software&lt;/a&gt; and proprietary office documents).&lt;br /&gt;&lt;a id="Mainframes" name="Mainframes"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: Mainframes" href="http://en.wikipedia.org/w/index.php?title=Operating_system&amp;amp;action=edit&amp;amp;section=3"&gt;edit&lt;/a&gt;] Mainframes&lt;br /&gt;Through the 1950s, many major features were pioneered in the field of operating systems. The development of the &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt; &lt;a class="mw-redirect" title="System/360" href="http://en.wikipedia.org/wiki/System/360"&gt;System/360&lt;/a&gt; produced a family of &lt;a title="Mainframe computer" href="http://en.wikipedia.org/wiki/Mainframe_computer"&gt;mainframe computers&lt;/a&gt; available in widely differing capacities and price points, for which a single operating system &lt;a class="mw-redirect" title="OS/360" href="http://en.wikipedia.org/wiki/OS/360"&gt;OS/360&lt;/a&gt; was planned (rather than developing ad-hoc programs for every individual model). This concept of a single OS spanning an entire product line was crucial for the success of System/360 and, in fact, &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt;`s current mainframe operating systems are &lt;a title="History of IBM mainframe operating systems" href="http://en.wikipedia.org/wiki/History_of_IBM_mainframe_operating_systems"&gt;distant descendants&lt;/a&gt; of this original system; applications written for the &lt;a class="mw-redirect" title="OS/360" href="http://en.wikipedia.org/wiki/OS/360"&gt;OS/360&lt;/a&gt; can still be run on modern machines. In the mid-70's, the &lt;a title="MVS" href="http://en.wikipedia.org/wiki/MVS"&gt;MVS&lt;/a&gt;, the descendant of OS/360 offered the first[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;] implementation of using &lt;a class="mw-redirect" title="Random access memory" href="http://en.wikipedia.org/wiki/Random_access_memory"&gt;RAM&lt;/a&gt; as a transparent &lt;a title="Cache" href="http://en.wikipedia.org/wiki/Cache"&gt;cache&lt;/a&gt; for disk resident data.&lt;br /&gt;&lt;a class="mw-redirect" title="OS/360" href="http://en.wikipedia.org/wiki/OS/360"&gt;OS/360&lt;/a&gt; also pioneered a number of concepts that, in some cases, are still not seen outside of the mainframe arena. For instance, in &lt;a class="mw-redirect" title="OS/360" href="http://en.wikipedia.org/wiki/OS/360"&gt;OS/360&lt;/a&gt;, when a program is started, the operating system keeps track of all of the system resources that are used including storage, locks, data files, and so on. When the process is terminated for any reason, all of these resources are re-claimed by the operating system. An alternative &lt;a title="CP-67" href="http://en.wikipedia.org/wiki/CP-67"&gt;CP-67&lt;/a&gt; system started a whole line of operating systems focused on the concept of &lt;a title="Virtual machine" href="http://en.wikipedia.org/wiki/Virtual_machine"&gt;virtual machines&lt;/a&gt;.&lt;br /&gt;&lt;a title="Control Data Corporation" href="http://en.wikipedia.org/wiki/Control_Data_Corporation"&gt;Control Data Corporation&lt;/a&gt; developed the &lt;a class="mw-redirect" title="SCOPE (software)" href="http://en.wikipedia.org/wiki/SCOPE_(software)"&gt;SCOPE&lt;/a&gt; operating system in the 1960s, for batch processing. In cooperation with the University of Minnesota, the &lt;a title="CDC KRONOS" href="http://en.wikipedia.org/wiki/CDC_KRONOS"&gt;KRONOS&lt;/a&gt; and later the &lt;a title="NOS (software)" href="http://en.wikipedia.org/wiki/NOS_(software)"&gt;NOS&lt;/a&gt; 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 &lt;a class="mw-redirect" title="PLATO" href="http://en.wikipedia.org/wiki/PLATO"&gt;PLATO&lt;/a&gt; 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. &lt;a title="Burroughs Corporation" href="http://en.wikipedia.org/wiki/Burroughs_Corporation"&gt;Burroughs Corporation&lt;/a&gt; introduced the &lt;a class="mw-redirect" title="B5000" href="http://en.wikipedia.org/wiki/B5000"&gt;B5000&lt;/a&gt; in 1961 with the &lt;a class="mw-redirect" title="Master Control Program" href="http://en.wikipedia.org/wiki/Master_Control_Program"&gt;MCP&lt;/a&gt;, (&lt;a class="mw-redirect" title="MCP (Burroughs Large Systems)" href="http://en.wikipedia.org/wiki/MCP_(Burroughs_Large_Systems)"&gt;Master Control Program&lt;/a&gt;) operating system. The &lt;a class="mw-redirect" title="B5000" href="http://en.wikipedia.org/wiki/B5000"&gt;B5000&lt;/a&gt; was a &lt;a title="Stack machine" href="http://en.wikipedia.org/wiki/Stack_machine"&gt;stack machine&lt;/a&gt; designed to exclusively support high-level languages with no machine language or assembler, and indeed the &lt;a class="mw-redirect" title="Master Control Program" href="http://en.wikipedia.org/wiki/Master_Control_Program"&gt;MCP&lt;/a&gt; was the first OS to be written exclusively in a high-level language – &lt;a title="ESPOL" href="http://en.wikipedia.org/wiki/ESPOL"&gt;ESPOL&lt;/a&gt;, a dialect of &lt;a title="ALGOL" href="http://en.wikipedia.org/wiki/ALGOL"&gt;ALGOL&lt;/a&gt;. &lt;a class="mw-redirect" title="Master Control Program" href="http://en.wikipedia.org/wiki/Master_Control_Program"&gt;MCP&lt;/a&gt; also introduced many other ground-breaking innovations, such as being the first commercial implementation of &lt;a title="Virtual memory" href="http://en.wikipedia.org/wiki/Virtual_memory"&gt;virtual memory&lt;/a&gt;. During development of the &lt;a class="mw-redirect" title="AS400" href="http://en.wikipedia.org/wiki/AS400"&gt;AS400&lt;/a&gt;, &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt; 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. &lt;a class="mw-redirect" title="Master Control Program" href="http://en.wikipedia.org/wiki/Master_Control_Program"&gt;MCP&lt;/a&gt; is still in use today in the &lt;a title="Unisys" href="http://en.wikipedia.org/wiki/Unisys"&gt;Unisys&lt;/a&gt; &lt;a class="new" title="ClearPath/MCP (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=ClearPath/MCP&amp;amp;action=edit&amp;amp;redlink=1"&gt;ClearPath/MCP&lt;/a&gt; line of computers.&lt;br /&gt;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 BASIC system.&lt;br /&gt;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 &lt;a title="General Comprehensive Operating System" href="http://en.wikipedia.org/wiki/General_Comprehensive_Operating_System"&gt;General Comprehensive Operating System&lt;/a&gt; (GCOS).&lt;br /&gt;Digital Equipment Corporation developed many operating systems for its various computer lines, including &lt;a title="TOPS-10" href="http://en.wikipedia.org/wiki/TOPS-10"&gt;TOPS-10&lt;/a&gt; and &lt;a title="TOPS-20" href="http://en.wikipedia.org/wiki/TOPS-20"&gt;TOPS-20&lt;/a&gt; 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.&lt;br /&gt;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.&lt;br /&gt;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:&lt;br /&gt;&lt;a class="mw-redirect" title="MCP (Burroughs Large Systems)" href="http://en.wikipedia.org/wiki/MCP_(Burroughs_Large_Systems)"&gt;Burroughs MCP&lt;/a&gt; – &lt;a title="Burroughs large systems" href="http://en.wikipedia.org/wiki/Burroughs_large_systems"&gt;B5000&lt;/a&gt;,1961 to &lt;a title="Unisys" href="http://en.wikipedia.org/wiki/Unisys"&gt;Unisys&lt;/a&gt; Clearpath/MCP, present.&lt;br /&gt;IBM &lt;a class="mw-redirect" title="OS/360" href="http://en.wikipedia.org/wiki/OS/360"&gt;OS/360&lt;/a&gt; – &lt;a title="IBM System/360" href="http://en.wikipedia.org/wiki/IBM_System/360"&gt;IBM System/360&lt;/a&gt;, 1966 to IBM &lt;a title="Z/OS" href="http://en.wikipedia.org/wiki/Z/OS"&gt;z/OS&lt;/a&gt;, present.&lt;br /&gt;IBM &lt;a title="CP-67" href="http://en.wikipedia.org/wiki/CP-67"&gt;CP-67&lt;/a&gt; – &lt;a title="IBM System/360" href="http://en.wikipedia.org/wiki/IBM_System/360"&gt;IBM System/360&lt;/a&gt;, 1967 to IBM &lt;a title="Z/VM" href="http://en.wikipedia.org/wiki/Z/VM"&gt;z/VM&lt;/a&gt;, present.&lt;br /&gt;UNIVAC &lt;a class="mw-redirect" title="EXEC 8" href="http://en.wikipedia.org/wiki/EXEC_8"&gt;EXEC 8&lt;/a&gt; – &lt;a title="UNIVAC 1108" href="http://en.wikipedia.org/wiki/UNIVAC_1108"&gt;UNIVAC 1108&lt;/a&gt;, 1967, to &lt;a title="Unisys OS 2200 operating system" href="http://en.wikipedia.org/wiki/Unisys_OS_2200_operating_system"&gt;OS 2200&lt;/a&gt; &lt;a title="Unisys" href="http://en.wikipedia.org/wiki/Unisys"&gt;Unisys&lt;/a&gt; Clearpath Dorado, present.&lt;br /&gt;&lt;a id="Microcomputers" name="Microcomputers"&gt;&lt;/a&gt;&lt;br /&gt;Microcomputers&lt;br /&gt;The first &lt;a title="Microcomputer" href="http://en.wikipedia.org/wiki/Microcomputer"&gt;microcomputers&lt;/a&gt; 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 &lt;a title="Read-only memory" href="http://en.wikipedia.org/wiki/Read-only_memory"&gt;ROM&lt;/a&gt; and known as Monitors. One notable early disk-based operating system was &lt;a title="CP/M" href="http://en.wikipedia.org/wiki/CP/M"&gt;CP/M&lt;/a&gt;, which was supported on many early microcomputers and was closely imitated in &lt;a title="MS-DOS" href="http://en.wikipedia.org/wiki/MS-DOS"&gt;MS-DOS&lt;/a&gt;, which became wildly popular as the operating system chosen for the &lt;a class="mw-redirect" title="IBM PC" href="http://en.wikipedia.org/wiki/IBM_PC"&gt;IBM PC&lt;/a&gt; (IBM's version of it was called IBM DOS or &lt;a class="mw-redirect" title="PC-DOS" href="http://en.wikipedia.org/wiki/PC-DOS"&gt;PC DOS&lt;/a&gt;), its successors making &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt;. In the 80's Apple Computer Inc. (now &lt;a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple Inc.&lt;/a&gt;) abandoned its popular &lt;a class="mw-redirect" title="Apple II" href="http://en.wikipedia.org/wiki/Apple_II"&gt;Apple II&lt;/a&gt; series of microcomputers to introduce the &lt;a class="mw-redirect" title="Apple Macintosh" href="http://en.wikipedia.org/wiki/Apple_Macintosh"&gt;Apple Macintosh&lt;/a&gt; computer with an innovative &lt;a class="mw-redirect" title="Graphical User Interface" href="http://en.wikipedia.org/wiki/Graphical_User_Interface"&gt;Graphical User Interface&lt;/a&gt; (GUI) to the &lt;a title="Mac OS" href="http://en.wikipedia.org/wiki/Mac_OS"&gt;Mac OS&lt;/a&gt;.&lt;br /&gt;The introduction of the &lt;a title="Intel 80386" href="http://en.wikipedia.org/wiki/Intel_80386"&gt;Intel 80386&lt;/a&gt; &lt;a class="mw-redirect" title="CPU" href="http://en.wikipedia.org/wiki/CPU"&gt;CPU&lt;/a&gt; chip with &lt;a title="32-bit" href="http://en.wikipedia.org/wiki/32-bit"&gt;32-bit&lt;/a&gt; architecture and &lt;a title="Paging" href="http://en.wikipedia.org/wiki/Paging"&gt;paging&lt;/a&gt; capabilities, provided personal computers with the ability to run &lt;a title="Computer multitasking" href="http://en.wikipedia.org/wiki/Computer_multitasking"&gt;multitasking&lt;/a&gt; operating systems like those of earlier &lt;a class="mw-redirect" title="Minicomputers" href="http://en.wikipedia.org/wiki/Minicomputers"&gt;minicomputers&lt;/a&gt; and &lt;a class="mw-redirect" title="Mainframes" href="http://en.wikipedia.org/wiki/Mainframes"&gt;mainframes&lt;/a&gt;. Microsoft responded to this progress by hiring &lt;a title="Dave Cutler" href="http://en.wikipedia.org/wiki/Dave_Cutler"&gt;Dave Cutler&lt;/a&gt;, who had developed the &lt;a title="VMS" href="http://en.wikipedia.org/wiki/VMS"&gt;VMS&lt;/a&gt; operating system for &lt;a title="Digital Equipment Corporation" href="http://en.wikipedia.org/wiki/Digital_Equipment_Corporation"&gt;Digital Equipment Corporation&lt;/a&gt;. He would lead the development of the &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; operating system, which continues to serve as the basis for Microsoft's operating systems line. &lt;a title="Steve Jobs" href="http://en.wikipedia.org/wiki/Steve_Jobs"&gt;Steve Jobs&lt;/a&gt;, a co-founder of &lt;a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple Inc.&lt;/a&gt;, started &lt;a title="NeXT" href="http://en.wikipedia.org/wiki/NeXT"&gt;NeXT&lt;/a&gt; Computer Inc., which developed the &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; &lt;a class="mw-redirect" title="NEXTSTEP" href="http://en.wikipedia.org/wiki/NEXTSTEP"&gt;NEXTSTEP&lt;/a&gt; operating system. NEXTSTEP would later be acquired by &lt;a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple Inc.&lt;/a&gt; and used, along with code from &lt;a title="FreeBSD" href="http://en.wikipedia.org/wiki/FreeBSD"&gt;FreeBSD&lt;/a&gt; as the core of Mac OS X.&lt;br /&gt;&lt;a class="mw-redirect" title="Minix" href="http://en.wikipedia.org/wiki/Minix"&gt;Minix&lt;/a&gt;, an academic teaching tool which could be run on early PCs, would inspire another reimplementation of &lt;a title="Unix" href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt;, called &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt;. Started by computer science student &lt;a title="Linus Torvalds" href="http://en.wikipedia.org/wiki/Linus_Torvalds"&gt;Linus Torvalds&lt;/a&gt; with cooperation from volunteers over the internet, a operating system was developed with the tools from the &lt;a title="GNU Project" href="http://en.wikipedia.org/wiki/GNU_Project"&gt;GNU Project&lt;/a&gt;. The Berkeley Software Distribution, known as &lt;a class="mw-redirect" title="BSD (operating system)" href="http://en.wikipedia.org/wiki/BSD_(operating_system)"&gt;BSD&lt;/a&gt;, is the UNIX derivative distributed by the University of California, Berkeley, starting in the 1970s. Freely distributed and &lt;a class="mw-redirect" title="Ported" href="http://en.wikipedia.org/wiki/Ported"&gt;ported&lt;/a&gt; to many minicomputers, it eventually also gained a following for use on PCs, mainly as &lt;a title="FreeBSD" href="http://en.wikipedia.org/wiki/FreeBSD"&gt;FreeBSD&lt;/a&gt;, &lt;a title="NetBSD" href="http://en.wikipedia.org/wiki/NetBSD"&gt;NetBSD&lt;/a&gt; and &lt;a title="OpenBSD" href="http://en.wikipedia.org/wiki/OpenBSD"&gt;OpenBSD&lt;/a&gt;.&lt;br /&gt;&lt;a id="Features" name="Features"&gt;&lt;/a&gt;&lt;br /&gt; Features&lt;br /&gt;&lt;a id="Program_execution" name="Program_execution"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: Program execution" href="http://en.wikipedia.org/w/index.php?title=Operating_system&amp;amp;action=edit&amp;amp;section=6"&gt;edit&lt;/a&gt;] Program execution&lt;br /&gt;Main article: &lt;a title="Process (computing)" href="http://en.wikipedia.org/wiki/Process_(computing)"&gt;Process (computing)&lt;/a&gt;&lt;br /&gt;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 &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; 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.&lt;br /&gt;&lt;a id="Interrupts" name="Interrupts"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: Interrupts" href="http://en.wikipedia.org/w/index.php?title=Operating_system&amp;amp;action=edit&amp;amp;section=7"&gt;edit&lt;/a&gt;] Interrupts&lt;br /&gt;Main article: &lt;a title="Interrupt" href="http://en.wikipedia.org/wiki/Interrupt"&gt;interrupt&lt;/a&gt;&lt;br /&gt;Interrupts are central to operating systems, since 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—is a poor use of CPU resources. &lt;a title="Interrupt" href="http://en.wikipedia.org/wiki/Interrupt"&gt;Interrupt&lt;/a&gt;-based programming is directly supported by most CPUs. Interrupts provide a computer with a way of automatically 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.&lt;br /&gt;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 &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;. Interrupts may come from either the computer's hardware or from the running program.&lt;br /&gt;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. How much code gets 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 drivers, 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.&lt;br /&gt;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.&lt;br /&gt;&lt;a id="Protected_mode_and_supervisor_mode" name="Protected_mode_and_supervisor_mode"&gt;&lt;/a&gt;&lt;br /&gt; Protected mode and supervisor mode&lt;br /&gt;Main article: &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;Protected mode&lt;/a&gt;&lt;br /&gt;Main article: &lt;a class="mw-redirect" title="Supervisor mode" href="http://en.wikipedia.org/wiki/Supervisor_mode"&gt;Supervisor mode&lt;/a&gt;&lt;br /&gt;Modern CPUs support something called dual mode operation. &lt;a class="mw-redirect" title="CPU" href="http://en.wikipedia.org/wiki/CPU"&gt;CPUs&lt;/a&gt; with this capability use two modes: &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected mode&lt;/a&gt; and &lt;a class="mw-redirect" title="Supervisor mode" href="http://en.wikipedia.org/wiki/Supervisor_mode"&gt;supervisor mode&lt;/a&gt;, which allow certain CPU functions to be controlled and affected only by the operating system &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;. Here, protected mode does not refer specifically to the &lt;a class="mw-redirect" title="80286" href="http://en.wikipedia.org/wiki/80286"&gt;80286&lt;/a&gt; (Intel's x86 16-bit microprocessor) CPU feature, although its protected mode is very similar to it. &lt;a class="mw-redirect" title="CPU" href="http://en.wikipedia.org/wiki/CPU"&gt;CPUs&lt;/a&gt; might have other modes similar to 80286 protected mode as well, such as the &lt;a title="Virtual 8086 mode" href="http://en.wikipedia.org/wiki/Virtual_8086_mode"&gt;virtual 8086 mode&lt;/a&gt; of the &lt;a class="mw-redirect" title="80386" href="http://en.wikipedia.org/wiki/80386"&gt;80386&lt;/a&gt; (Intel's x86 32-bit microprocessor or i386).&lt;br /&gt;However, the term is used here more generally in operating system theory to refer to all modes which limit the capabilities of programs running in that mode, providing things like virtual memory addressing and limiting access to hardware in a manner determined by a program running in supervisor mode. Similar modes have existed in supercomputers, minicomputers, and mainframes as they are essential to fully supporting UNIX-like multi-user operating systems.&lt;br /&gt;When a computer first starts up, it is automatically running in supervisor mode. The first few programs to run on the computer, being the &lt;a title="BIOS" href="http://en.wikipedia.org/wiki/BIOS"&gt;BIOS&lt;/a&gt;, &lt;a class="mw-redirect" title="Bootloader" href="http://en.wikipedia.org/wiki/Bootloader"&gt;bootloader&lt;/a&gt; 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 &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected mode&lt;/a&gt;.&lt;br /&gt;In &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected mode&lt;/a&gt;, programs may have access to a more limited set of the CPU's instructions. A user program may leave &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected mode&lt;/a&gt; only by triggering an interrupt, causing control to be passed back to the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;. In this way the operating system can maintain exclusive control over things like access to hardware and memory.&lt;br /&gt;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).&lt;br /&gt;&lt;a id="Memory_management" name="Memory_management"&gt;&lt;/a&gt;&lt;br /&gt; Memory management&lt;br /&gt;Main article: &lt;a title="Memory management" href="http://en.wikipedia.org/wiki/Memory_management"&gt;memory management&lt;/a&gt;&lt;br /&gt;Among other things, a multiprogramming operating system &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; 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.&lt;br /&gt;Cooperative memory management, used by many early operating systems assumes that all programs make voluntary use of the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;'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.&lt;br /&gt;&lt;a title="Memory protection" href="http://en.wikipedia.org/wiki/Memory_protection"&gt;Memory protection&lt;/a&gt; enables the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; to limit a process' access to the computer's memory. Various methods of memory protection exist, including &lt;a title="Memory segmentation" href="http://en.wikipedia.org/wiki/Memory_segmentation"&gt;memory segmentation&lt;/a&gt; and &lt;a title="Paging" href="http://en.wikipedia.org/wiki/Paging"&gt;paging&lt;/a&gt;. All methods require some level of hardware support (such as the &lt;a class="mw-redirect" title="80286" href="http://en.wikipedia.org/wiki/80286"&gt;80286&lt;/a&gt; MMU) which doesn't exist in all computers.&lt;br /&gt;In both segmentation and paging, certain &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected mode&lt;/a&gt; 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 &lt;a class="mw-redirect" title="Supervisor mode" href="http://en.wikipedia.org/wiki/Supervisor_mode"&gt;supervisor mode&lt;/a&gt;, placing the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; in charge. This is called a &lt;a class="mw-redirect" title="Segmentation violation" href="http://en.wikipedia.org/wiki/Segmentation_violation"&gt;segmentation violation&lt;/a&gt; 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 &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; will generally resort to terminating the offending program, and will report the error.&lt;br /&gt;Windows 3.1-Me had some level of memory protection, but programs could easily circumvent the need to use it. Under Windows 9x all MS-DOS applications ran in &lt;a class="mw-redirect" title="Supervisor mode" href="http://en.wikipedia.org/wiki/Supervisor_mode"&gt;supervisor mode&lt;/a&gt;, giving them almost unlimited control over the computer. A &lt;a title="General protection fault" href="http://en.wikipedia.org/wiki/General_protection_fault"&gt;general protection fault&lt;/a&gt; would be produced indicating a segmentation violation had occurred, however the system would often crash anyway.&lt;br /&gt;In most Linux systems, part of the hard disk is reserved for virtual memory when the Operating system is being installed on the system. This part is known as &lt;a class="mw-redirect" title="Swap space" href="http://en.wikipedia.org/wiki/Swap_space"&gt;swap space&lt;/a&gt;. Windows systems use a &lt;a class="mw-redirect" title="Swap file" href="http://en.wikipedia.org/wiki/Swap_file"&gt;swap file&lt;/a&gt; instead of a &lt;a title="Disk partitioning" href="http://en.wikipedia.org/wiki/Disk_partitioning"&gt;partition&lt;/a&gt;.&lt;br /&gt;&lt;a id="Virtual_memory" name="Virtual_memory"&gt;&lt;/a&gt;&lt;br /&gt; Virtual memory&lt;br /&gt;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.&lt;br /&gt;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 &lt;a title="Page fault" href="http://en.wikipedia.org/wiki/Page_fault"&gt;page fault&lt;/a&gt;.&lt;br /&gt;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.&lt;br /&gt;In modern operating systems, application 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 &lt;a title="Paging" href="http://en.wikipedia.org/wiki/Paging"&gt;swapping&lt;/a&gt;, as an area of memory can be used by multiple programs, and what that memory area contains can be swapped or exchanged on demand.&lt;br /&gt;Further information: &lt;a title="Page fault" href="http://en.wikipedia.org/wiki/Page_fault"&gt;Page fault&lt;/a&gt;&lt;br /&gt;&lt;a id="Multitasking" name="Multitasking"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: Multitasking" href="http://en.wikipedia.org/w/index.php?title=Operating_system&amp;amp;action=edit&amp;amp;section=11"&gt;edit&lt;/a&gt;] Multitasking&lt;br /&gt;Main article: &lt;a title="Computer multitasking" href="http://en.wikipedia.org/wiki/Computer_multitasking"&gt;Computer multitasking&lt;/a&gt;&lt;br /&gt;Main article: &lt;a title="Process management (computing)" href="http://en.wikipedia.org/wiki/Process_management_(computing)"&gt;Process management (computing)&lt;/a&gt;&lt;br /&gt;&lt;a title="Computer multitasking" href="http://en.wikipedia.org/wiki/Computer_multitasking"&gt;Multitasking&lt;/a&gt; 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.&lt;br /&gt;An operating system &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; contains a piece of software called a &lt;a title="Scheduling (computing)" href="http://en.wikipedia.org/wiki/Scheduling_(computing)"&gt;scheduler&lt;/a&gt; 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 &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;, which allows the program access to the &lt;a title="Central processing unit" href="http://en.wikipedia.org/wiki/Central_processing_unit"&gt;CPU&lt;/a&gt; and memory. At a later time control is returned to the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt; 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 &lt;a title="Context switch" href="http://en.wikipedia.org/wiki/Context_switch"&gt;context switch&lt;/a&gt;.&lt;br /&gt;An early model which governed the allocation of time to programs was called &lt;a class="mw-redirect" title="Cooperative multitasking" href="http://en.wikipedia.org/wiki/Cooperative_multitasking"&gt;cooperative multitasking&lt;/a&gt;. In this model, when control is passed to a program by the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;, it may execute for as long as it wants before explicitly returning control to the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;. 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 &lt;a title="Infinite loop" href="http://en.wikipedia.org/wiki/Infinite_loop"&gt;infinite loop&lt;/a&gt;.&lt;br /&gt;The philosophy governing &lt;a class="mw-redirect" title="Preemptive multitasking" href="http://en.wikipedia.org/wiki/Preemptive_multitasking"&gt;preemptive multitasking&lt;/a&gt; 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 &lt;a title="Protected mode" href="http://en.wikipedia.org/wiki/Protected_mode"&gt;protected mode&lt;/a&gt; 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.)&lt;br /&gt;On many single user operating systems cooperative multitasking is perfectly adequate, as home computers generally run a small number of well tested programs. &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; was the first version of &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; which enforced preemptive multitasking, but it didn't reach the home user market until &lt;a title="Windows XP" href="http://en.wikipedia.org/wiki/Windows_XP"&gt;Windows XP&lt;/a&gt;, (since &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; was targeted at professionals.)&lt;br /&gt;Further information: &lt;a title="Context switch" href="http://en.wikipedia.org/wiki/Context_switch"&gt;Context switch&lt;/a&gt;&lt;br /&gt;Further information: &lt;a class="mw-redirect" title="Preemptive multitasking" href="http://en.wikipedia.org/wiki/Preemptive_multitasking"&gt;Preemptive multitasking&lt;/a&gt;&lt;br /&gt;Further information: &lt;a class="mw-redirect" title="Cooperative multitasking" href="http://en.wikipedia.org/wiki/Cooperative_multitasking"&gt;Cooperative multitasking&lt;/a&gt;&lt;br /&gt;&lt;a id="Kernel_Preemption" name="Kernel_Preemption"&gt;&lt;/a&gt;&lt;br /&gt; Kernel Preemption&lt;br /&gt;In recent years concerns have arisen because of long latencies often associated with some kernel run-times, sometimes on the order of 100ms or more in systems with monolithic kernels. These latencies often produce noticeable slowness in desktop systems, and can prevent operating systems from performing time-sensitive operations such as audio recording and some communications.&lt;br /&gt;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. Under &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt;, the introduction of the &lt;a title="Windows Display Driver Model" href="http://en.wikipedia.org/wiki/Windows_Display_Driver_Model"&gt;Windows Display Driver Model&lt;/a&gt; (WDDM) accomplishes this for display drivers, and in Linux, the preemptable kernel model introduced in version 2.6 allows all device drivers and some other parts of kernel code to take advantage of preemptive multi-tasking.&lt;br /&gt;Under Windows prior to &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt; and &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt; prior to version 2.6 all driver execution was co-operative, meaning that if a driver entered an infinite loop it would freeze the system.&lt;br /&gt;&lt;a id="Disk_access_and_file_systems" name="Disk_access_and_file_systems"&gt;&lt;/a&gt;&lt;br /&gt; Disk access and file systems&lt;br /&gt;Main article: &lt;a title="Virtual file system" href="http://en.wikipedia.org/wiki/Virtual_file_system"&gt;Virtual file system&lt;/a&gt;&lt;br /&gt;Access to data stored on disks is a central feature of all operating systems. Computers store data on &lt;a class="mw-redirect" title="Hard disk drives" href="http://en.wikipedia.org/wiki/Hard_disk_drives"&gt;disks&lt;/a&gt; using &lt;a class="mw-redirect" title="Computer files" href="http://en.wikipedia.org/wiki/Computer_files"&gt;files&lt;/a&gt;, 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 &lt;a title="File system" href="http://en.wikipedia.org/wiki/File_system"&gt;file system&lt;/a&gt;, 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 &lt;a class="mw-redirect" title="Directory tree" href="http://en.wikipedia.org/wiki/Directory_tree"&gt;directory tree&lt;/a&gt;.&lt;br /&gt;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.&lt;br /&gt;While many simpler operating systems support a limited range of options for accessing storage systems, operating systems like &lt;a class="mw-redirect" title="UNIX" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt; and &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt; support a technology known as a &lt;a title="Virtual file system" href="http://en.wikipedia.org/wiki/Virtual_file_system"&gt;virtual file system&lt;/a&gt; or VFS. An operating system like UNIX supports a wide array of storage devices, regardless of their design or &lt;a title="File system" href="http://en.wikipedia.org/wiki/File_system"&gt;file systems&lt;/a&gt; to be accessed through a common &lt;a title="Application programming interface" href="http://en.wikipedia.org/wiki/Application_programming_interface"&gt;application programming interface&lt;/a&gt; (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 &lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device drivers&lt;/a&gt; and file system drivers.&lt;br /&gt;A connected &lt;a title="Data storage device" href="http://en.wikipedia.org/wiki/Data_storage_device"&gt;storage device&lt;/a&gt; such as a &lt;a class="mw-redirect" title="Hard drive" href="http://en.wikipedia.org/wiki/Hard_drive"&gt;hard drive&lt;/a&gt; is accessed through a &lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device driver&lt;/a&gt;. 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 &lt;a class="mw-redirect" title="Block devices" href="http://en.wikipedia.org/wiki/Block_devices"&gt;block devices&lt;/a&gt;.&lt;br /&gt;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.&lt;br /&gt;Various differences between file systems make supporting all file systems difficult. Allowed characters in file names, &lt;a title="Case sensitivity" href="http://en.wikipedia.org/wiki/Case_sensitivity"&gt;case sensitivity&lt;/a&gt;, and the presence of various kinds of &lt;a title="File attribute" href="http://en.wikipedia.org/wiki/File_attribute"&gt;file attributes&lt;/a&gt; makes the implementation of a single interface for every file system a daunting task. Operating systems tend to recommend the use of (and so support natively) file systems specifically designed for them; for example, &lt;a title="NTFS" href="http://en.wikipedia.org/wiki/NTFS"&gt;NTFS&lt;/a&gt; in Windows and &lt;a title="Ext3" href="http://en.wikipedia.org/wiki/Ext3"&gt;ext3&lt;/a&gt; and &lt;a title="ReiserFS" href="http://en.wikipedia.org/wiki/ReiserFS"&gt;ReiserFS&lt;/a&gt; in Linux. However, in practice, third party drives are usually available to give support for the most widely used filesystems in most general-purpose operating systems (for example, NTFS is available in Linux through &lt;a class="mw-redirect" title="NTFS-3g" href="http://en.wikipedia.org/wiki/NTFS-3g"&gt;NTFS-3g&lt;/a&gt;, and ext2/3 and ReiserFS are available in Windows through &lt;a class="external text" title="http://www.fs-driver.org" href="http://www.fs-driver.org/" rel="nofollow"&gt;FS-driver&lt;/a&gt; and &lt;a class="external text" title="http://p-nand-q.com/download/rfstool.html" href="http://p-nand-q.com/download/rfstool.html" rel="nofollow"&gt;rfstool&lt;/a&gt;).&lt;br /&gt;&lt;a id="Device_drivers" name="Device_drivers"&gt;&lt;/a&gt;&lt;br /&gt; Device drivers&lt;br /&gt;Main article: &lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;Device driver&lt;/a&gt;&lt;br /&gt;A &lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device driver&lt;/a&gt; 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.&lt;br /&gt;The key design goal of device drivers is &lt;a title="Abstraction" href="http://en.wikipedia.org/wiki/Abstraction"&gt;abstraction&lt;/a&gt;. 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, OSes essentially dictate how every type of device should be controlled. The function of the device driver is then to translate these OS 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 systems' point of view.&lt;br /&gt;&lt;a id="Networking" name="Networking"&gt;&lt;/a&gt;&lt;br /&gt; Networking&lt;br /&gt;Main article: &lt;a title="Computer network" href="http://en.wikipedia.org/wiki/Computer_network"&gt;Computer network&lt;/a&gt;&lt;br /&gt;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 &lt;a title="Computer network" href="http://en.wikipedia.org/wiki/Computer_network"&gt;network&lt;/a&gt; for sharing resources such as &lt;a title="Remote procedure call" href="http://en.wikipedia.org/wiki/Remote_procedure_call"&gt;computing&lt;/a&gt;, 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 &lt;a title="SSH" href="http://en.wikipedia.org/wiki/SSH"&gt;SSH&lt;/a&gt; which allows networked users direct access to a computer's command line interface.&lt;br /&gt;Client/server networking involves a program on a computer somewhere which connects via a network to another computer, called a server. Servers, usually running &lt;a class="mw-redirect" title="UNIX" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt; or &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt;, 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 &lt;a title="Network address" href="http://en.wikipedia.org/wiki/Network_address"&gt;network address&lt;/a&gt;. 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.&lt;br /&gt;Many operating systems support one or more vendor-specific or open networking protocols as well, for example, &lt;a class="mw-redirect" title="Systems Network Architecture" href="http://en.wikipedia.org/wiki/Systems_Network_Architecture"&gt;SNA&lt;/a&gt; on &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt; systems, &lt;a title="DECnet" href="http://en.wikipedia.org/wiki/DECnet"&gt;DECnet&lt;/a&gt; on systems from &lt;a title="Digital Equipment Corporation" href="http://en.wikipedia.org/wiki/Digital_Equipment_Corporation"&gt;Digital Equipment Corporation&lt;/a&gt;, and Microsoft-specific protocols (&lt;a class="mw-redirect" title="Server message block" href="http://en.wikipedia.org/wiki/Server_message_block"&gt;SMB&lt;/a&gt;) on Windows. Specific protocols for specific tasks may also be supported such as &lt;a title="Network File System (protocol)" href="http://en.wikipedia.org/wiki/Network_File_System_(protocol)"&gt;NFS&lt;/a&gt; for file access. Protocols like &lt;a class="new" title="ESound (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=ESound&amp;amp;action=edit&amp;amp;redlink=1"&gt;ESound&lt;/a&gt;, or esd can be easily extended over the network to provide sound from local applications, on a remote system's sound hardware.&lt;br /&gt;&lt;a id="Security" name="Security"&gt;&lt;/a&gt;&lt;br /&gt; Security&lt;br /&gt;Main article: &lt;a title="Computer security" href="http://en.wikipedia.org/wiki/Computer_security"&gt;Computer security&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;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 and tied to either the requester's user account or to the variously configured groups of users to which the requester belongs.&lt;br /&gt;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.&lt;br /&gt;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 &lt;a class="mw-redirect" title="Government of the United States" href="http://en.wikipedia.org/wiki/Government_of_the_United_States"&gt;Government&lt;/a&gt; &lt;a title="United States Department of Defense" href="http://en.wikipedia.org/wiki/United_States_Department_of_Defense"&gt;Department of Defense&lt;/a&gt; (DoD) created the &lt;a title="Trusted Computer System Evaluation Criteria" href="http://en.wikipedia.org/wiki/Trusted_Computer_System_Evaluation_Criteria"&gt;Trusted Computer System Evaluation Criteria&lt;/a&gt; (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 &lt;a title="Classified information" href="http://en.wikipedia.org/wiki/Classified_information"&gt;classified information&lt;/a&gt;.&lt;br /&gt;Network services include offerings such as file sharing, print services, email, web sites, and &lt;a class="mw-redirect" title="File transfer protocol" href="http://en.wikipedia.org/wiki/File_transfer_protocol"&gt;file transfer protocols&lt;/a&gt; (FTP), most of which can have compromised security. At the front line of security are hardware devices known as &lt;a class="mw-redirect" title="Firewall (networking)" href="http://en.wikipedia.org/wiki/Firewall_(networking)"&gt;firewalls&lt;/a&gt; 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.&lt;br /&gt;An alternative strategy, and the only &lt;a title="Sandbox (computer security)" href="http://en.wikipedia.org/wiki/Sandbox_(computer_security)"&gt;sandbox&lt;/a&gt; strategy available in systems that do not meet the &lt;a title="Popek and Goldberg virtualization requirements" href="http://en.wikipedia.org/wiki/Popek_and_Goldberg_virtualization_requirements"&gt;Popek and Goldberg virtualization requirements&lt;/a&gt;, is the operating system not running user programs as native code, but instead either &lt;a title="Emulator" href="http://en.wikipedia.org/wiki/Emulator"&gt;emulates&lt;/a&gt; a processor or provides a host for a &lt;a title="P-code machine" href="http://en.wikipedia.org/wiki/P-code_machine"&gt;p-code&lt;/a&gt; based system such as Java.&lt;br /&gt;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.&lt;br /&gt;&lt;a id="Example:_Microsoft_Windows" name="Example:_Microsoft_Windows"&gt;&lt;/a&gt;&lt;br /&gt; Example: Microsoft Windows&lt;br /&gt;While the &lt;a title="Windows 9x" href="http://en.wikipedia.org/wiki/Windows_9x"&gt;Windows 9x&lt;/a&gt; series offered the option of having profiles for multiple users, they had no concept of &lt;a title="Principle of least privilege" href="http://en.wikipedia.org/wiki/Principle_of_least_privilege"&gt;access privileges&lt;/a&gt;, and did not allow concurrent access; and so were not true &lt;a title="Multi-user" href="http://en.wikipedia.org/wiki/Multi-user"&gt;multi-user&lt;/a&gt; operating systems. In addition, they implemented only partial &lt;a title="Memory protection" href="http://en.wikipedia.org/wiki/Memory_protection"&gt;memory protection&lt;/a&gt;. They were accordingly widely criticised for lack of security.&lt;br /&gt;The &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; series of operating systems, by contrast, are true multi-user, and implement absolute memory protection. However, a lot of the advantages of being a true multi-user operating system were nullified by the fact that, prior to &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt;, the first user account created during the setup process was an &lt;a title="Superuser" href="http://en.wikipedia.org/wiki/Superuser#Windows_N"&gt;administrator&lt;/a&gt; account, which was also the default for new accounts. Though &lt;a title="Windows XP" href="http://en.wikipedia.org/wiki/Windows_XP"&gt;Windows XP&lt;/a&gt; did have limited accounts, the majority of home users did not change to an account type with fewer rights – partially due to the number of programs which unnecessarily required administrator rights – and so most home users ran as administrator all the time.&lt;br /&gt;&lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt; changes this by introducing a privilege elevation system called &lt;a title="User Account Control" href="http://en.wikipedia.org/wiki/User_Account_Control"&gt;User Account Control&lt;/a&gt;. When logging in as a standard user, a logon session is created and a &lt;a class="mw-redirect" title="Token (Windows NT architecture)" href="http://en.wikipedia.org/wiki/Token_(Windows_NT_architecture)"&gt;token&lt;/a&gt; containing only the most basic privileges is assigned. In this way, the new logon session is incapable of making changes that would affect the entire system. When logging in as a user in the Administrators group, two separate tokens are assigned. The first token contains all privileges typically awarded to an administrator, and the second is a restricted token similar to what a standard user would receive. User applications, including the &lt;a title="Windows Shell" href="http://en.wikipedia.org/wiki/Windows_Shell"&gt;Windows Shell&lt;/a&gt;, are then started with the restricted token, resulting in a reduced privilege environment even under an Administrator account. When an application requests higher privileges or "Run as administrator" is clicked, UAC will prompt for confirmation and, if consent is given (including administrator credentials if the account requesting the elevation is not a member of the administrators group), start the process using the unrestricted token.&lt;br /&gt;&lt;a id="Example:_Linux.2FUnix" name="Example:_Linux.2FUnix"&gt;&lt;/a&gt;&lt;br /&gt; Example: &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;/&lt;a title="Unix" href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt;&lt;br /&gt;Linux and UNIX both have two tier security, which limits any system-wide changes to the root user, a special user account on all UNIX-like systems. While the root user has virtually unlimited permission to effect system changes, programs running as a regular user are limited in where they can save files, what hardware they can access, etc. In many systems, a user's memory usage, their selection of available programs, their total disk usage or &lt;a title="Disk quota" href="http://en.wikipedia.org/wiki/Disk_quota"&gt;quota&lt;/a&gt;, available range of programs' &lt;a title="Scheduling (computing)" href="http://en.wikipedia.org/wiki/Scheduling_(computing)"&gt;priority&lt;/a&gt; settings, and other functions can also be locked down. This provides the user with plenty of freedom to do what needs to be done, without being able to put any part of the system in jeopardy (barring accidental triggering of system-level bugs) or make sweeping, system-wide changes. The user's settings are stored in an area of the computer's file system called the user's home directory, which is also provided as a location where the user may store their work, a concept later adopted by Windows as the 'My Documents' folder. Should a user have to install software outside of his home directory or make system-wide changes, they must become the root user temporarily, usually with the &lt;a title="Su (Unix)" href="http://en.wikipedia.org/wiki/Su_(Unix)"&gt;su&lt;/a&gt; or sudo command, which is answered with the computer's root password when prompted. Some systems (such as &lt;a title="Ubuntu (operating system)" href="http://en.wikipedia.org/wiki/Ubuntu_(operating_system)"&gt;Ubuntu&lt;/a&gt; and its derivatives) are configured by default to allow select users to run programs as the root user via the &lt;a title="Sudo" href="http://en.wikipedia.org/wiki/Sudo"&gt;sudo&lt;/a&gt; command, using the user's own password for authentication instead of the system's root password. One is sometimes said to "go root" or "drop to root" when elevating oneself to root access.&lt;br /&gt;For more information on the differences between the Linux su/sudo approach and Vista's &lt;a title="User Account Control" href="http://en.wikipedia.org/wiki/User_Account_Control"&gt;User Account Control&lt;/a&gt;, see &lt;a title="Comparison of privilege authorization features" href="http://en.wikipedia.org/wiki/Comparison_of_privilege_authorization_features"&gt;Comparison of privilege authorization features&lt;/a&gt;.&lt;br /&gt;&lt;a id="File_system_support_in_modern_operating_systems" name="File_system_support_in_modern_operating_systems"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: File system support in modern operating systems" href="http://en.wikipedia.org/w/index.php?title=Operating_system&amp;amp;action=edit&amp;amp;section=19"&gt;edit&lt;/a&gt;] File system support in modern operating systems&lt;br /&gt;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.&lt;br /&gt;&lt;a id="Solaris" name="Solaris"&gt;&lt;/a&gt;&lt;br /&gt; Solaris&lt;br /&gt;The &lt;a class="mw-redirect" title="Solaris Operating System" href="http://en.wikipedia.org/wiki/Solaris_Operating_System"&gt;Solaris Operating System&lt;/a&gt; (as with most operating systems based upon &lt;a class="mw-redirect" title="Open standards" href="http://en.wikipedia.org/wiki/Open_standards"&gt;open standards&lt;/a&gt; and/or &lt;a title="Open source" href="http://en.wikipedia.org/wiki/Open_source"&gt;open source&lt;/a&gt;) uses &lt;a title="Unix File System" href="http://en.wikipedia.org/wiki/Unix_File_System"&gt;UFS&lt;/a&gt; as its primary file system. Prior to 1998, Solaris UFS did not have logging/journaling capabilities, but over time the OS has gained this and other new data management capabilities.&lt;br /&gt;Additional features include &lt;a title="Veritas Software" href="http://en.wikipedia.org/wiki/Veritas_Software"&gt;Veritas&lt;/a&gt; (Journaling) &lt;a class="mw-redirect" title="VxFS" href="http://en.wikipedia.org/wiki/VxFS"&gt;VxFS&lt;/a&gt;, &lt;a title="QFS" href="http://en.wikipedia.org/wiki/QFS"&gt;QFS&lt;/a&gt; from &lt;a title="Sun Microsystems" href="http://en.wikipedia.org/wiki/Sun_Microsystems"&gt;Sun Microsystems&lt;/a&gt;, enhancements to UFS including multiterabyte support and UFS volume management included as part of the OS, and &lt;a title="ZFS" href="http://en.wikipedia.org/wiki/ZFS"&gt;ZFS&lt;/a&gt; (open source, poolable, 128-bit, compressible, and error-correcting).&lt;br /&gt;Kernel extensions were added to Solaris to allow for bootable Veritas VxFS operation. Logging or &lt;a title="Journaling" href="http://en.wikipedia.org/wiki/Journaling"&gt;journaling&lt;/a&gt; was added to UFS in &lt;a class="mw-redirect" title="Solaris 7" href="http://en.wikipedia.org/wiki/Solaris_7"&gt;Solaris 7&lt;/a&gt;. Releases of &lt;a class="mw-redirect" title="Solaris 10" href="http://en.wikipedia.org/wiki/Solaris_10"&gt;Solaris 10&lt;/a&gt;, Solaris Express, &lt;a title="OpenSolaris" href="http://en.wikipedia.org/wiki/OpenSolaris"&gt;OpenSolaris&lt;/a&gt;, and other open source variants of Solaris later supported bootable ZFS.&lt;br /&gt;&lt;a class="mw-redirect" title="Logical Volume Management" href="http://en.wikipedia.org/wiki/Logical_Volume_Management"&gt;Logical Volume Management&lt;/a&gt; allows for spanning a file system across multiple devices for the purpose of adding redundancy, capacity, and/or throughput. Solaris includes &lt;a title="Solaris Volume Manager" href="http://en.wikipedia.org/wiki/Solaris_Volume_Manager"&gt;Solaris Volume Manager&lt;/a&gt; (formerly known as Solstice DiskSuite.) Solaris is one of many operating systems supported by &lt;a title="Veritas Volume Manager" href="http://en.wikipedia.org/wiki/Veritas_Volume_Manager"&gt;Veritas Volume Manager&lt;/a&gt;. Modern Solaris based operating systems eclipse the need for volume management through leveraging virtual storage pools in ZFS.&lt;br /&gt;&lt;a id="Linux" name="Linux"&gt;&lt;/a&gt;&lt;br /&gt; Linux&lt;br /&gt;Many &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; distributions support some or all of &lt;a title="Ext2" href="http://en.wikipedia.org/wiki/Ext2"&gt;ext2&lt;/a&gt;, &lt;a title="Ext3" href="http://en.wikipedia.org/wiki/Ext3"&gt;ext3&lt;/a&gt;, &lt;a title="Ext4" href="http://en.wikipedia.org/wiki/Ext4"&gt;ext4&lt;/a&gt;, &lt;a title="ReiserFS" href="http://en.wikipedia.org/wiki/ReiserFS"&gt;ReiserFS&lt;/a&gt;, &lt;a title="Reiser4" href="http://en.wikipedia.org/wiki/Reiser4"&gt;Reiser4&lt;/a&gt;, &lt;a title="JFS (file system)" href="http://en.wikipedia.org/wiki/JFS_(file_system)"&gt;JFS&lt;/a&gt; , &lt;a title="XFS" href="http://en.wikipedia.org/wiki/XFS"&gt;XFS&lt;/a&gt; , &lt;a title="Global File System" href="http://en.wikipedia.org/wiki/Global_File_System"&gt;GFS&lt;/a&gt;, &lt;a title="Global File System" href="http://en.wikipedia.org/wiki/Global_File_System"&gt;GFS2&lt;/a&gt;, &lt;a title="OCFS" href="http://en.wikipedia.org/wiki/OCFS"&gt;OCFS&lt;/a&gt;, &lt;a class="mw-redirect" title="OCFS2" href="http://en.wikipedia.org/wiki/OCFS2"&gt;OCFS2&lt;/a&gt;, and &lt;a title="NILFS" href="http://en.wikipedia.org/wiki/NILFS"&gt;NILFS&lt;/a&gt;. The ext file systems, namely ext2, ext3 and ext4 are based on the original Linux file system. Others have been developed by companies to meet their specific needs, hobbyists, or adapted from UNIX, Microsoft Windows, and other operating systems. Linux has full support for &lt;a title="XFS" href="http://en.wikipedia.org/wiki/XFS"&gt;XFS&lt;/a&gt; and &lt;a class="mw-redirect" title="IBM Journaled File System 2 (JFS2)" href="http://en.wikipedia.org/wiki/IBM_Journaled_File_System_2_(JFS2)"&gt;JFS&lt;/a&gt;, along with &lt;a title="File Allocation Table" href="http://en.wikipedia.org/wiki/File_Allocation_Table"&gt;FAT&lt;/a&gt; (the &lt;a title="MS-DOS" href="http://en.wikipedia.org/wiki/MS-DOS"&gt;MS-DOS&lt;/a&gt; file system), and &lt;a title="Hierarchical File System" href="http://en.wikipedia.org/wiki/Hierarchical_File_System"&gt;HFS&lt;/a&gt; which is the primary file system for the &lt;a title="Macintosh" href="http://en.wikipedia.org/wiki/Macintosh"&gt;Macintosh&lt;/a&gt;.&lt;br /&gt;In recent years support for Microsoft &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt;'s &lt;a title="NTFS" href="http://en.wikipedia.org/wiki/NTFS"&gt;NTFS&lt;/a&gt; file system has appeared in &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;, and is now comparable to the support available for other native &lt;a class="mw-redirect" title="UNIX" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt; file systems. &lt;a title="ISO 9660" href="http://en.wikipedia.org/wiki/ISO_9660"&gt;ISO 9660&lt;/a&gt; and &lt;a title="Universal Disk Format" href="http://en.wikipedia.org/wiki/Universal_Disk_Format"&gt;Universal Disk Format&lt;/a&gt; (UDF) are supported which are standard file systems used on CDs, DVDs, and BluRay discs. It is possible to install Linux on the majority of these file systems. Unlike other operating systems, 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. Microsoft Windows&lt;br /&gt;&lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; currently supports NTFS and &lt;a title="File Allocation Table" href="http://en.wikipedia.org/wiki/File_Allocation_Table"&gt;FAT&lt;/a&gt; file systems, along with &lt;a title="Network file system" href="http://en.wikipedia.org/wiki/Network_file_system"&gt;network file systems&lt;/a&gt; shared from other computers, and the ISO 9660 and UDF filesystems used for &lt;a class="mw-redirect" title="CD" href="http://en.wikipedia.org/wiki/CD"&gt;CDs&lt;/a&gt;, &lt;a title="DVD" href="http://en.wikipedia.org/wiki/DVD"&gt;DVDs&lt;/a&gt;, and other optical discs such as &lt;a class="mw-redirect" title="Blu-ray" href="http://en.wikipedia.org/wiki/Blu-ray"&gt;Blu-ray&lt;/a&gt;. 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 &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt;, &lt;a title="NTFS" href="http://en.wikipedia.org/wiki/NTFS"&gt;NTFS&lt;/a&gt; is the only file system which the operating system can be installed on. &lt;a title="Windows Embedded CE 6.0" href="http://en.wikipedia.org/wiki/Windows_Embedded_CE_6.0"&gt;Windows Embedded CE 6.0&lt;/a&gt;, Windows Vista Service Pack 1, and &lt;a title="Windows Server 2008" href="http://en.wikipedia.org/wiki/Windows_Server_2008"&gt;Windows Server 2008&lt;/a&gt; support &lt;a title="ExFAT" href="http://en.wikipedia.org/wiki/ExFAT"&gt;ExFAT&lt;/a&gt;, a file system more suitable for &lt;a title="Flash drive" href="http://en.wikipedia.org/wiki/Flash_drive"&gt;flash drives&lt;/a&gt;.&lt;br /&gt;&lt;a id="Mac_OS_X" name="Mac_OS_X"&gt;&lt;/a&gt;&lt;br /&gt; Mac OS X&lt;br /&gt;&lt;a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; supports &lt;a title="HFS Plus" href="http://en.wikipedia.org/wiki/HFS_Plus"&gt;HFS+&lt;/a&gt; with journaling as its primary file system. It is derived from the &lt;a title="Hierarchical File System" href="http://en.wikipedia.org/wiki/Hierarchical_File_System"&gt;Hierarchical File System&lt;/a&gt; of the earlier &lt;a title="Mac OS" href="http://en.wikipedia.org/wiki/Mac_OS"&gt;Mac OS&lt;/a&gt;. Mac OS X has facilities to read and write FAT, NTFS (only read, although an open-source cross platform implementation known as &lt;a class="mw-redirect" title="NTFS 3G" href="http://en.wikipedia.org/wiki/NTFS_3G"&gt;NTFS 3G&lt;/a&gt; provides read-write support to Microsoft Windows NTFS file system for Mac OS X users.), UDF, and other file systems, but cannot be installed to them. Due to its UNIX heritage &lt;a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; now supports virtually all the file systems supported by the UNIX VFS. Recently &lt;a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple Inc.&lt;/a&gt; started work on porting &lt;a title="Sun Microsystems" href="http://en.wikipedia.org/wiki/Sun_Microsystems"&gt;Sun Microsystem's&lt;/a&gt; &lt;a class="mw-redirect" title="Zfs" href="http://en.wikipedia.org/wiki/Zfs"&gt;ZFS&lt;/a&gt; filesystem to &lt;a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; and preliminary support is already available in &lt;a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; 10.5 and support blu-ray disc.&lt;br /&gt;&lt;a id="Special-purpose_file_systems" name="Special-purpose_file_systems"&gt;&lt;/a&gt;&lt;br /&gt; Special-purpose file systems&lt;br /&gt;FAT file systems are commonly found on &lt;a title="Floppy disk" href="http://en.wikipedia.org/wiki/Floppy_disk"&gt;floppy disks&lt;/a&gt;, &lt;a title="Flash memory" href="http://en.wikipedia.org/wiki/Flash_memory"&gt;flash memory&lt;/a&gt; cards, &lt;a title="Digital camera" href="http://en.wikipedia.org/wiki/Digital_camera"&gt;digital cameras&lt;/a&gt;, and many other portable devices because of their relative simplicity. Performance of FAT compares poorly to most other file systems as it uses overly simplistic data structures, making file operations time-consuming, and makes poor use of disk space in situations where many small files are present. &lt;a title="ISO 9660" href="http://en.wikipedia.org/wiki/ISO_9660"&gt;ISO 9660&lt;/a&gt; and &lt;a title="Universal Disk Format" href="http://en.wikipedia.org/wiki/Universal_Disk_Format"&gt;Universal Disk Format&lt;/a&gt; are two common formats that target &lt;a title="Compact Disc" href="http://en.wikipedia.org/wiki/Compact_Disc"&gt;Compact Discs&lt;/a&gt; and &lt;a title="DVD" href="http://en.wikipedia.org/wiki/DVD"&gt;DVDs&lt;/a&gt;. &lt;a title="Mount Rainier (packet writing)" href="http://en.wikipedia.org/wiki/Mount_Rainier_(packet_writing)"&gt;Mount Rainier&lt;/a&gt; is a newer extension to UDF supported by Linux 2.6 series and Windows Vista that facilitates rewriting to DVDs in the same fashion as has been possible with floppy disks.&lt;br /&gt;&lt;a id="Journalized_file_systems" name="Journalized_file_systems"&gt;&lt;/a&gt;&lt;br /&gt; Journalized file systems&lt;br /&gt;File systems may provide &lt;a title="Journaling file system" href="http://en.wikipedia.org/wiki/Journaling_file_system"&gt;journaling&lt;/a&gt;, which provides safe recovery in the event of a system crash. A journaled file system writes some information twice: first to the journal, which is a log of file system operations, then to its proper place in the ordinary file system. Journaling is handled by the file system driver, and keeps track of each operation taking place that changes the contents of the disk. In the event of a crash, the system can recover to a consistent state by replaying a portion of the journal. Many UNIX file systems provide journaling including &lt;a title="ReiserFS" href="http://en.wikipedia.org/wiki/ReiserFS"&gt;ReiserFS&lt;/a&gt;, &lt;a title="JFS" href="http://en.wikipedia.org/wiki/JFS"&gt;JFS&lt;/a&gt;, and &lt;a title="Ext3" href="http://en.wikipedia.org/wiki/Ext3"&gt;Ext3&lt;/a&gt;.&lt;br /&gt;In contrast, non-journaled file systems typically need to be examined in their entirety by a utility such as &lt;a title="Fsck" href="http://en.wikipedia.org/wiki/Fsck"&gt;fsck&lt;/a&gt; or &lt;a class="mw-redirect" title="Chkdsk" href="http://en.wikipedia.org/wiki/Chkdsk"&gt;chkdsk&lt;/a&gt; for any inconsistencies after an unclean shutdown. &lt;a title="Soft updates" href="http://en.wikipedia.org/wiki/Soft_updates"&gt;Soft updates&lt;/a&gt; is an alternative to journaling that avoids the redundant writes by carefully ordering the update operations. Log-structured file systems and &lt;a title="ZFS" href="http://en.wikipedia.org/wiki/ZFS"&gt;ZFS&lt;/a&gt; also differ from traditional journaled file systems in that they avoid inconsistencies by always writing new copies of the data, eschewing in-place updates.&lt;br /&gt;&lt;a id="Graphical_user_interfaces" name="Graphical_user_interfaces"&gt;&lt;/a&gt;&lt;br /&gt; Graphical user interfaces&lt;br /&gt;Most modern computer systems support &lt;a title="Graphical user interface" href="http://en.wikipedia.org/wiki/Graphical_user_interface"&gt;graphical user interfaces&lt;/a&gt; (GUI), and often include them. In some computer systems, such as the original implementations of &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; and the &lt;a title="Mac OS" href="http://en.wikipedia.org/wiki/Mac_OS"&gt;Mac OS&lt;/a&gt;, the GUI is integrated into the &lt;a class="mw-redirect" title="Kernel (computer science)" href="http://en.wikipedia.org/wiki/Kernel_(computer_science)"&gt;kernel&lt;/a&gt;.&lt;br /&gt;While technically a graphical user interface is not an operating system service, incorporating support for one into the operating system kernel can allow the GUI to be more responsive by reducing the number of &lt;a title="Context switch" href="http://en.wikipedia.org/wiki/Context_switch"&gt;context switches&lt;/a&gt; required for the GUI to perform its output functions. Other operating systems are &lt;a class="mw-redirect" title="Modularity (programming)" href="http://en.wikipedia.org/wiki/Modularity_(programming)"&gt;modular&lt;/a&gt;, separating the graphics subsystem from the kernel and the Operating System. In the 1980s UNIX, VMS and many others had operating systems that were built this way. Linux and Mac OS X are also built this way. Modern releases of Microsoft Windows such as &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt; implement a graphics subsystem that is mostly in user-space, however versions between &lt;a title="Windows NT 4.0" href="http://en.wikipedia.org/wiki/Windows_NT_4.0"&gt;Windows NT 4.0&lt;/a&gt; and &lt;a title="Windows Server 2003" href="http://en.wikipedia.org/wiki/Windows_Server_2003"&gt;Windows Server 2003&lt;/a&gt;'s graphics drawing routines exist mostly in kernel space. &lt;a title="Windows 9x" href="http://en.wikipedia.org/wiki/Windows_9x"&gt;Windows 9x&lt;/a&gt; had very little distinction between the interface and the kernel.&lt;br /&gt;Many computer operating systems allow the user to install or create any user interface they desire. The &lt;a title="X Window System" href="http://en.wikipedia.org/wiki/X_Window_System"&gt;X Window System&lt;/a&gt; in conjunction with &lt;a title="GNOME" href="http://en.wikipedia.org/wiki/GNOME"&gt;GNOME&lt;/a&gt; or &lt;a title="KDE" href="http://en.wikipedia.org/wiki/KDE"&gt;KDE&lt;/a&gt; is a commonly-found setup on most Unix and &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; (BSD, Linux, &lt;a class="mw-redirect" title="Minix" href="http://en.wikipedia.org/wiki/Minix"&gt;Minix&lt;/a&gt;) systems. A number of &lt;a title="Windows shell replacement" href="http://en.wikipedia.org/wiki/Windows_shell_replacement"&gt;Windows shell replacements&lt;/a&gt; have been released for Microsoft Windows, which offer alternatives to the included &lt;a class="mw-redirect" title="Windows shell" href="http://en.wikipedia.org/wiki/Windows_shell"&gt;Windows shell&lt;/a&gt;, but the shell itself cannot be separated from Windows.&lt;br /&gt;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 &lt;a title="Common Open Software Environment" href="http://en.wikipedia.org/wiki/Common_Open_Software_Environment"&gt;COSE&lt;/a&gt; and &lt;a title="Common Desktop Environment" href="http://en.wikipedia.org/wiki/Common_Desktop_Environment"&gt;CDE&lt;/a&gt; failed for the most part due to various reasons, eventually eclipsed by the widespread adoption of GNOME and KDE. Prior to open source-based toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon which CDE was developed).&lt;br /&gt;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.&lt;br /&gt;&lt;a id="Examples_of_operating_systems" name="Examples_of_operating_systems"&gt;&lt;/a&gt;&lt;br /&gt; Examples of operating systems&lt;br /&gt;&lt;a class="image" title="Gnome globe current event.svg" href="http://en.wikipedia.org/wiki/File:Gnome_globe_current_event.svg"&gt;&lt;/a&gt;&lt;br /&gt;This article or section contains information about scheduled or expected &lt;a title="Category:Upcoming software" href="http://en.wikipedia.org/wiki/Category:Upcoming_software"&gt;future software&lt;/a&gt;. Information about it may change as the software release approaches and more information becomes available.&lt;br /&gt;&lt;a class="image" title="Nuvola apps kpager.svg" href="http://en.wikipedia.org/wiki/File:Nuvola_apps_kpager.svg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a id="Microsoft_Windows_2" name="Microsoft_Windows_2"&gt;&lt;/a&gt;&lt;br /&gt; Microsoft Windows&lt;br /&gt;&lt;a class="image" title="Windows Vista is the latest stable Windows operating system." href="http://en.wikipedia.org/wiki/File:Windows_Vista_Desktop.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:Windows_Vista_Desktop.png"&gt;&lt;/a&gt;Windows Vista is the latest &lt;a title="Software release life cycle" href="http://en.wikipedia.org/wiki/Software_release_life_cycle#Stable_or_unstable"&gt;stable&lt;/a&gt; Windows operating system.&lt;br /&gt;&lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; is a family of proprietary operating systems that originated as an add-on to the older &lt;a title="MS-DOS" href="http://en.wikipedia.org/wiki/MS-DOS"&gt;MS-DOS&lt;/a&gt; operating system for the &lt;a class="mw-redirect" title="IBM PC" href="http://en.wikipedia.org/wiki/IBM_PC"&gt;IBM PC&lt;/a&gt;. Modern versions are based on the newer &lt;a title="Windows NT" href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; kernel that was originally intended for &lt;a title="OS/2" href="http://en.wikipedia.org/wiki/OS/2"&gt;OS/2&lt;/a&gt;. Windows runs on &lt;a title="X86" href="http://en.wikipedia.org/wiki/X86"&gt;x86&lt;/a&gt;, &lt;a title="X86-64" href="http://en.wikipedia.org/wiki/X86-64"&gt;x86-64&lt;/a&gt; and &lt;a title="Itanium" href="http://en.wikipedia.org/wiki/Itanium"&gt;Itanium&lt;/a&gt; processors. Earlier versions also ran on the &lt;a title="DEC Alpha" href="http://en.wikipedia.org/wiki/DEC_Alpha"&gt;DEC Alpha&lt;/a&gt;, &lt;a title="MIPS architecture" href="http://en.wikipedia.org/wiki/MIPS_architecture"&gt;MIPS&lt;/a&gt;, &lt;a title="Fairchild Semiconductor" href="http://en.wikipedia.org/wiki/Fairchild_Semiconductor"&gt;Fairchild&lt;/a&gt; (later &lt;a title="Intergraph" href="http://en.wikipedia.org/wiki/Intergraph"&gt;Intergraph&lt;/a&gt;) &lt;a title="Clipper architecture" href="http://en.wikipedia.org/wiki/Clipper_architecture"&gt;Clipper&lt;/a&gt; and &lt;a title="PowerPC" href="http://en.wikipedia.org/wiki/PowerPC"&gt;PowerPC&lt;/a&gt; architectures (some work was done to port it to the &lt;a title="SPARC" href="http://en.wikipedia.org/wiki/SPARC"&gt;SPARC&lt;/a&gt; architecture).&lt;br /&gt;As of June 2008, Microsoft Windows holds a large amount of the worldwide desktop &lt;a title="Market share" href="http://en.wikipedia.org/wiki/Market_share"&gt;market share&lt;/a&gt;. Windows is also used on servers, supporting applications such as &lt;a title="Web server" href="http://en.wikipedia.org/wiki/Web_server"&gt;web servers&lt;/a&gt; and &lt;a class="mw-redirect" title="DBMS" href="http://en.wikipedia.org/wiki/DBMS"&gt;database servers&lt;/a&gt;. In recent years, Microsoft has spent significant marketing and research &amp;amp; development money to demonstrate that Windows is capable of running any enterprise application, which has resulted in consistent price/performance records (see the &lt;a title="Transaction Processing Performance Council" href="http://en.wikipedia.org/wiki/Transaction_Processing_Performance_Council"&gt;TPC&lt;/a&gt;) and significant acceptance in the enterprise market.&lt;br /&gt;The most widely used version of the Microsoft Windows family is &lt;a title="Windows XP" href="http://en.wikipedia.org/wiki/Windows_XP"&gt;Windows XP&lt;/a&gt;, released on October 25, 2001.&lt;br /&gt;In November 2006, after more than five years of development work, Microsoft released &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt;, a major new operating system version of Microsoft Windows family which contains a large number of &lt;a title="Features new to Windows Vista" href="http://en.wikipedia.org/wiki/Features_new_to_Windows_Vista"&gt;new features&lt;/a&gt; and architectural changes. Chief amongst these are a new user interface and visual style called &lt;a title="Windows Aero" href="http://en.wikipedia.org/wiki/Windows_Aero"&gt;Windows Aero&lt;/a&gt;, a number of new security features such as &lt;a title="User Account Control" href="http://en.wikipedia.org/wiki/User_Account_Control"&gt;User Account Control&lt;/a&gt;, and a few new multimedia applications such as &lt;a title="Windows DVD Maker" href="http://en.wikipedia.org/wiki/Windows_DVD_Maker"&gt;Windows DVD Maker&lt;/a&gt;. A server variant based on the same kernel, &lt;a title="Windows Server 2008" href="http://en.wikipedia.org/wiki/Windows_Server_2008"&gt;Windows Server 2008&lt;/a&gt;, was released in early 2008.&lt;br /&gt;&lt;a title="Windows 7" href="http://en.wikipedia.org/wiki/Windows_7"&gt;Windows 7&lt;/a&gt; is currently under development; Microsoft has stated that it intends to scope its development to a three-year timeline; it is to be released on October 22, 2009.&lt;br /&gt;&lt;a id="Unix_and_Unix-like_operating_systems" name="Unix_and_Unix-like_operating_systems"&gt;&lt;/a&gt;&lt;br /&gt; Unix and Unix-like operating systems&lt;br /&gt;&lt;a class="image" title="Debian is a (linux-based) unix-like system" href="http://en.wikipedia.org/wiki/File:DebianLenny.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:DebianLenny.png"&gt;&lt;/a&gt;&lt;a title="Debian" href="http://en.wikipedia.org/wiki/Debian"&gt;Debian&lt;/a&gt; is a (&lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;linux&lt;/a&gt;-based) unix-like system&lt;br /&gt;&lt;a title="Ken Thompson" href="http://en.wikipedia.org/wiki/Ken_Thompson"&gt;Ken Thompson&lt;/a&gt; wrote &lt;a title="B (programming language)" href="http://en.wikipedia.org/wiki/B_(programming_language)"&gt;B&lt;/a&gt;, mainly based on &lt;a title="BCPL" href="http://en.wikipedia.org/wiki/BCPL"&gt;BCPL&lt;/a&gt;, which he used to write Unix, based on his experience in the &lt;a class="mw-redirect" title="MULTICS" href="http://en.wikipedia.org/wiki/MULTICS"&gt;MULTICS&lt;/a&gt; project. B was replaced by &lt;a title="C (programming language)" href="http://en.wikipedia.org/wiki/C_(programming_language)"&gt;C&lt;/a&gt;, and Unix developed into a large, complex family of inter-related operating systems which have been influential in every modern operating system (see &lt;a title="History of operating systems" href="http://en.wikipedia.org/wiki/History_of_operating_systems"&gt;History&lt;/a&gt;). The &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; family is a diverse group of operating systems, with several major sub-categories including &lt;a class="mw-redirect" title="System V" href="http://en.wikipedia.org/wiki/System_V"&gt;System V&lt;/a&gt;, &lt;a class="mw-redirect" title="BSD (operating system)" href="http://en.wikipedia.org/wiki/BSD_(operating_system)"&gt;BSD&lt;/a&gt;, and &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt;. The name "&lt;a class="mw-redirect" title="UNIX" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt;" is a trademark of &lt;a title="The Open Group" href="http://en.wikipedia.org/wiki/The_Open_Group"&gt;The Open Group&lt;/a&gt; which licenses it for use with any operating system that has been shown to conform to their definitions. "Unix-like" is commonly used to refer to the large set of operating systems which resemble the original Unix.&lt;br /&gt;Unix-like systems run on a wide variety of machine architectures. They are used heavily for &lt;a title="Server (computing)" href="http://en.wikipedia.org/wiki/Server_(computing)"&gt;servers&lt;/a&gt; in business, as well as &lt;a title="Workstation" href="http://en.wikipedia.org/wiki/Workstation"&gt;workstations&lt;/a&gt; in academic and engineering environments. &lt;a title="Free software" href="http://en.wikipedia.org/wiki/Free_software"&gt;Free&lt;/a&gt; Unix variants, such as &lt;a title="GNU" href="http://en.wikipedia.org/wiki/GNU"&gt;GNU&lt;/a&gt;, &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; and &lt;a title="Berkeley Software Distribution" href="http://en.wikipedia.org/wiki/Berkeley_Software_Distribution"&gt;BSD&lt;/a&gt;, are popular in these areas.&lt;br /&gt;Some Unix variants like HP's &lt;a title="HP-UX" href="http://en.wikipedia.org/wiki/HP-UX"&gt;HP-UX&lt;/a&gt; and IBM's &lt;a class="mw-redirect" title="AIX operating system" href="http://en.wikipedia.org/wiki/AIX_operating_system"&gt;AIX&lt;/a&gt; are designed to run only on that vendor's hardware. Others, such as &lt;a class="mw-redirect" title="Solaris Operating System" href="http://en.wikipedia.org/wiki/Solaris_Operating_System"&gt;Solaris&lt;/a&gt;, can run on multiple types of hardware, including &lt;a title="X86" href="http://en.wikipedia.org/wiki/X86"&gt;x86&lt;/a&gt; servers and PCs. Apple's &lt;a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt;, a &lt;a title="Hybrid kernel" href="http://en.wikipedia.org/wiki/Hybrid_kernel"&gt;hybrid kernel&lt;/a&gt;-based BSD variant derived from &lt;a class="mw-redirect" title="NeXTSTEP" href="http://en.wikipedia.org/wiki/NeXTSTEP"&gt;NeXTSTEP&lt;/a&gt;, &lt;a title="Mach (kernel)" href="http://en.wikipedia.org/wiki/Mach_(kernel)"&gt;Mach&lt;/a&gt;, and &lt;a title="FreeBSD" href="http://en.wikipedia.org/wiki/FreeBSD"&gt;FreeBSD&lt;/a&gt;, has replaced Apple's earlier (non-Unix) Mac OS.&lt;br /&gt;Unix interoperability was sought by establishing the &lt;a title="POSIX" href="http://en.wikipedia.org/wiki/POSIX"&gt;POSIX&lt;/a&gt; standard. The POSIX standard can be applied to any operating system, although it was originally created for various Unix variants.&lt;br /&gt;&lt;a id="Mac_OS_X_2" name="Mac_OS_X_2"&gt;&lt;/a&gt;&lt;br /&gt; Mac OS X&lt;br /&gt;&lt;a class="image" title="'Mac" href="http://en.wikipedia.org/wiki/File:Leopard_Desktop.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:Leopard_Desktop.png"&gt;&lt;/a&gt;Mac OS X "Leopard"&lt;br /&gt;&lt;a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; is a line of &lt;a title="Proprietary software" href="http://en.wikipedia.org/wiki/Proprietary_software"&gt;proprietary&lt;/a&gt;, graphical operating systems developed, marketed, and sold by &lt;a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple Inc.&lt;/a&gt;, the latest of which is pre-loaded on all currently shipping &lt;a title="Macintosh" href="http://en.wikipedia.org/wiki/Macintosh"&gt;Macintosh&lt;/a&gt; computers. Mac OS X is the successor to the original &lt;a title="Mac OS" href="http://en.wikipedia.org/wiki/Mac_OS"&gt;Mac OS&lt;/a&gt;, which had been Apple's primary operating system since 1984. Unlike its predecessor, Mac OS X is a &lt;a class="mw-redirect" title="UNIX" href="http://en.wikipedia.org/wiki/UNIX"&gt;UNIX&lt;/a&gt; operating system built on technology that had been developed at &lt;a title="NeXT" href="http://en.wikipedia.org/wiki/NeXT"&gt;NeXT&lt;/a&gt; through the second half of the 1980s and up until Apple purchased the company in early 1997.&lt;br /&gt;The operating system was first released in 1999 as &lt;a title="Mac OS X Server 1.0" href="http://en.wikipedia.org/wiki/Mac_OS_X_Server_1.0"&gt;Mac OS X Server 1.0&lt;/a&gt;, with a desktop-oriented version (&lt;a title="Mac OS X v10.0" href="http://en.wikipedia.org/wiki/Mac_OS_X_v10.0"&gt;Mac OS X v10.0&lt;/a&gt;) following in March 2001. Since then, five more distinct "end-user" and "server" editions of Mac OS X have been released, the most recent being &lt;a title="Mac OS X v10.5" href="http://en.wikipedia.org/wiki/Mac_OS_X_v10.5"&gt;Mac OS X v10.5&lt;/a&gt;, which was first made available in October 2007. Releases of Mac OS X are named after &lt;a title="Big cat" href="http://en.wikipedia.org/wiki/Big_cat"&gt;big cats&lt;/a&gt;; Mac OS X v10.5 is also called "Leopard". The next version of OS X, named "Snow Leopard" will be released in September 2009.&lt;br /&gt;The server edition, &lt;a title="Mac OS X Server" href="http://en.wikipedia.org/wiki/Mac_OS_X_Server"&gt;Mac OS X Server&lt;/a&gt;, is &lt;a title="Software architecture" href="http://en.wikipedia.org/wiki/Software_architecture"&gt;architecturally&lt;/a&gt; identical to its desktop counterpart but usually runs on Apple's line of Macintosh &lt;a title="Server (computing)" href="http://en.wikipedia.org/wiki/Server_(computing)"&gt;server&lt;/a&gt; hardware. Mac OS X Server includes work group management and administration software tools that provide simplified access to key &lt;a title="Network service" href="http://en.wikipedia.org/wiki/Network_service"&gt;network services&lt;/a&gt;, including a &lt;a title="Mail transfer agent" href="http://en.wikipedia.org/wiki/Mail_transfer_agent"&gt;mail transfer agent&lt;/a&gt;, a &lt;a class="mw-redirect" title="Samba software" href="http://en.wikipedia.org/wiki/Samba_software"&gt;Samba server&lt;/a&gt;, an &lt;a class="mw-redirect" title="LDAP" href="http://en.wikipedia.org/wiki/LDAP"&gt;LDAP&lt;/a&gt; server, a &lt;a title="Domain Name System" href="http://en.wikipedia.org/wiki/Domain_Name_System"&gt;domain name server&lt;/a&gt;, and others.&lt;br /&gt;&lt;a id="Plan_9" name="Plan_9"&gt;&lt;/a&gt;&lt;br /&gt; Plan 9&lt;br /&gt;&lt;a title="Ken Thompson" href="http://en.wikipedia.org/wiki/Ken_Thompson"&gt;Ken Thompson&lt;/a&gt;, &lt;a title="Dennis Ritchie" href="http://en.wikipedia.org/wiki/Dennis_Ritchie"&gt;Dennis Ritchie&lt;/a&gt; and &lt;a title="Douglas McIlroy" href="http://en.wikipedia.org/wiki/Douglas_McIlroy"&gt;Douglas McIlroy&lt;/a&gt; at &lt;a title="Bell Labs" href="http://en.wikipedia.org/wiki/Bell_Labs"&gt;Bell Labs&lt;/a&gt; designed and developed the C programming language to build the operating system Unix. Programmers at Bell Labs went on to develop &lt;a title="Plan 9 from Bell Labs" href="http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs"&gt;Plan 9&lt;/a&gt; and &lt;a title="Inferno (operating system)" href="http://en.wikipedia.org/wiki/Inferno_(operating_system)"&gt;Inferno&lt;/a&gt;, 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. Plan 9 has yet to become as popular as Unix derivatives, but it has an expanding community of developers. It is currently released under the &lt;a title="Lucent Public License" href="http://en.wikipedia.org/wiki/Lucent_Public_License"&gt;Lucent Public License&lt;/a&gt;. Inferno was sold to &lt;a title="Vita Nuova Holdings" href="http://en.wikipedia.org/wiki/Vita_Nuova_Holdings"&gt;Vita Nuova Holdings&lt;/a&gt; and has been released under a GPL/MIT license.&lt;br /&gt;&lt;a id="Real-time_operating_systems" name="Real-time_operating_systems"&gt;&lt;/a&gt;&lt;br /&gt; Real-time operating systems&lt;br /&gt;Main article: &lt;a title="Real-time operating system" href="http://en.wikipedia.org/wiki/Real-time_operating_system"&gt;real-time operating system&lt;/a&gt;&lt;br /&gt;A &lt;a title="Real-time operating system" href="http://en.wikipedia.org/wiki/Real-time_operating_system"&gt;real-time operating system&lt;/a&gt; (RTOS1) is a multitasking operating system intended for applications with fixed deadlines (&lt;a title="Real-time computing" href="http://en.wikipedia.org/wiki/Real-time_computing"&gt;real-time computing&lt;/a&gt;). Such applications include some small embedded systems, automobile engine controllers, industrial robots, spacecraft, industrial control, and some large-scale computing systems.&lt;br /&gt;An early example of a large-scale real-time operating system was &lt;a title="Transaction Processing Facility" href="http://en.wikipedia.org/wiki/Transaction_Processing_Facility"&gt;Transaction Processing Facility&lt;/a&gt; developed by &lt;a title="American Airlines" href="http://en.wikipedia.org/wiki/American_Airlines"&gt;American Airlines&lt;/a&gt; and &lt;a class="mw-redirect" title="International Business Machines" href="http://en.wikipedia.org/wiki/International_Business_Machines"&gt;IBM&lt;/a&gt; for the &lt;a class="mw-redirect" title="Sabre Airline Reservations System" href="http://en.wikipedia.org/wiki/Sabre_Airline_Reservations_System"&gt;Sabre Airline Reservations System&lt;/a&gt;.&lt;br /&gt;&lt;a id="Embedded_systems" name="Embedded_systems"&gt;&lt;/a&gt;&lt;br /&gt; Embedded systems&lt;br /&gt;Main article: &lt;a title="List of operating systems" href="http://en.wikipedia.org/wiki/List_of_operating_systems#Microcontroller.2C_Real-time"&gt;list of operating systems#Microcontroller, Real-time&lt;/a&gt;&lt;br /&gt;&lt;a title="Embedded system" href="http://en.wikipedia.org/wiki/Embedded_system"&gt;Embedded systems&lt;/a&gt; use a variety of dedicated operating systems. In some cases, the "operating system" software is directly linked to the application to produce a monolithic special-purpose program. In the simplest embedded systems, there is no distinction between the OS and the application.&lt;br /&gt;Embedded systems that have fixed deadlines use a &lt;a title="Real-time operating system" href="http://en.wikipedia.org/wiki/Real-time_operating_system"&gt;real-time operating system&lt;/a&gt; such as &lt;a title="VxWorks" href="http://en.wikipedia.org/wiki/VxWorks"&gt;VxWorks&lt;/a&gt;, &lt;a title="ECos" href="http://en.wikipedia.org/wiki/ECos"&gt;eCos&lt;/a&gt;, &lt;a title="QNX" href="http://en.wikipedia.org/wiki/QNX"&gt;QNX&lt;/a&gt;, &lt;a class="mw-redirect" title="MontaVista Linux" href="http://en.wikipedia.org/wiki/MontaVista_Linux"&gt;MontaVista Linux&lt;/a&gt; and &lt;a title="RTLinux" href="http://en.wikipedia.org/wiki/RTLinux"&gt;RTLinux&lt;/a&gt;.&lt;br /&gt;Some embedded systems use operating systems such as &lt;a title="Symbian OS" href="http://en.wikipedia.org/wiki/Symbian_OS"&gt;Symbian OS&lt;/a&gt;, &lt;a title="Palm OS" href="http://en.wikipedia.org/wiki/Palm_OS"&gt;Palm OS&lt;/a&gt;, &lt;a class="mw-redirect" title="Windows CE" href="http://en.wikipedia.org/wiki/Windows_CE"&gt;Windows CE&lt;/a&gt;, &lt;a class="mw-redirect" title="BSD (operating system)" href="http://en.wikipedia.org/wiki/BSD_(operating_system)"&gt;BSD&lt;/a&gt;, and &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt;, although such operating systems do not support real-time computing.&lt;br /&gt;&lt;a class="mw-redirect" title="Windows CE" href="http://en.wikipedia.org/wiki/Windows_CE"&gt;Windows CE&lt;/a&gt; shares similar APIs to desktop Windows but shares none of desktop Windows' codebase[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;].&lt;br /&gt;&lt;a id="Hobby_development" name="Hobby_development"&gt;&lt;/a&gt;&lt;br /&gt; Hobby development&lt;br /&gt;&lt;a title="Operating system development" href="http://en.wikipedia.org/wiki/Operating_system_development"&gt;Operating system development&lt;/a&gt;, or OSDev for short, as a hobby has a large cult-like following. As such, operating systems, such as &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt;, have derived from hobby operating system projects. The design and implementation of an operating system requires skill and determination, and the term can cover anything from a basic &lt;a title="Hello world program" href="http://en.wikipedia.org/wiki/Hello_world_program"&gt;"Hello World"&lt;/a&gt; boot loader to a fully featured kernel. One classical example of this is the &lt;a class="mw-redirect" title="Minix" href="http://en.wikipedia.org/wiki/Minix"&gt;Minix&lt;/a&gt; Operating System—an OS that was designed by &lt;a class="mw-redirect" title="Andrew Tanenbaum" href="http://en.wikipedia.org/wiki/Andrew_Tanenbaum"&gt;A.S. Tanenbaum&lt;/a&gt; as a teaching tool but was heavily used by hobbyists before &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux&lt;/a&gt; eclipsed it in popularity.&lt;br /&gt;&lt;a id="Other" name="Other"&gt;&lt;/a&gt;&lt;br /&gt; Other&lt;br /&gt;Older operating systems which are still used in niche markets include &lt;a title="OS/2" href="http://en.wikipedia.org/wiki/OS/2"&gt;OS/2&lt;/a&gt; from IBM and Microsoft; &lt;a title="Mac OS" href="http://en.wikipedia.org/wiki/Mac_OS"&gt;Mac OS&lt;/a&gt;, the non-Unix precursor to Apple's Mac OS X; &lt;a title="BeOS" href="http://en.wikipedia.org/wiki/BeOS"&gt;BeOS&lt;/a&gt;; &lt;a title="XTS-400" href="http://en.wikipedia.org/wiki/XTS-400"&gt;XTS-300&lt;/a&gt;. Some, most notably &lt;a title="AmigaOS 4" href="http://en.wikipedia.org/wiki/AmigaOS_4"&gt;AmigaOS 4&lt;/a&gt; and &lt;a title="RISC OS" href="http://en.wikipedia.org/wiki/RISC_OS"&gt;RISC OS&lt;/a&gt;, continue to be developed as minority platforms for enthusiast communities and specialist applications. &lt;a title="OpenVMS" href="http://en.wikipedia.org/wiki/OpenVMS"&gt;OpenVMS&lt;/a&gt; formerly from &lt;a title="Digital Equipment Corporation" href="http://en.wikipedia.org/wiki/Digital_Equipment_Corporation"&gt;DEC&lt;/a&gt;, is still under active development by &lt;a title="Hewlett-Packard" href="http://en.wikipedia.org/wiki/Hewlett-Packard"&gt;Hewlett-Packard&lt;/a&gt;. There were a number of operating systems for 8 bit computers - Apple's DOS (Disk Operating System) 3.2 &amp;amp; 3.3 for Apple II, ProDOS, UCSD, CP/M - available for various 8 and 16 bit environments.&lt;br /&gt;Research and development of new operating systems continues. &lt;a title="GNU Hurd" href="http://en.wikipedia.org/wiki/GNU_Hurd"&gt;GNU Hurd&lt;/a&gt; is designed to be backwards compatible with Unix, but with enhanced functionality and a microkernel architecture. &lt;a title="Singularity (operating system)" href="http://en.wikipedia.org/wiki/Singularity_(operating_system)"&gt;Singularity&lt;/a&gt; is a project at &lt;a title="Microsoft Research" href="http://en.wikipedia.org/wiki/Microsoft_Research"&gt;Microsoft Research&lt;/a&gt; to develop an operating system with better &lt;a title="Memory protection" href="http://en.wikipedia.org/wiki/Memory_protection"&gt;memory protection&lt;/a&gt; based on the .Net managed code model. Systems development follows the same model used by other &lt;a title="Software development" href="http://en.wikipedia.org/wiki/Software_development"&gt;Software development&lt;/a&gt;, which involves maintainers, version control "trees", &lt;a title="Fork (software development)" href="http://en.wikipedia.org/wiki/Fork_(software_development)"&gt;forks&lt;/a&gt;, "patches", and specifications. From the AT&amp;amp;T-Berkeley lawsuit the new unencumbered systems were based on 4.4BSD which forked as FreeBSD and NetBSD efforts to replace missing code after the &lt;a title="Unix wars" href="http://en.wikipedia.org/wiki/Unix_wars"&gt;Unix wars&lt;/a&gt;. Recent forks include &lt;a title="DragonFly BSD" href="http://en.wikipedia.org/wiki/DragonFly_BSD"&gt;DragonFly BSD&lt;/a&gt; and &lt;a title="Darwin (operating system)" href="http://en.wikipedia.org/wiki/Darwin_(operating_system)"&gt;Darwin&lt;/a&gt; from BSD Unix.&lt;br /&gt;&lt;a id="Diversity_of_operating_systems_and_portability" name="Diversity_of_operating_systems_and_portability"&gt;&lt;/a&gt;&lt;br /&gt; Diversity of operating systems and portability&lt;br /&gt;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.&lt;br /&gt;This cost in supporting operating systems diversity can be avoided by instead writing applications against &lt;a class="mw-redirect" title="Software platform" href="http://en.wikipedia.org/wiki/Software_platform"&gt;software platforms&lt;/a&gt; like &lt;a title="Java (software platform)" href="http://en.wikipedia.org/wiki/Java_(software_platform)"&gt;Java&lt;/a&gt;, &lt;a title="Qt (toolkit)" href="http://en.wikipedia.org/wiki/Qt_(toolkit)"&gt;Qt&lt;/a&gt; or for web browsers. These abstractions have already borne the cost of adaptation to specific operating systems and their &lt;a class="mw-redirect" title="System library" href="http://en.wikipedia.org/wiki/System_library"&gt;system libraries&lt;/a&gt;.&lt;br /&gt;Another approach is for operating system vendors to adopt standards. For example, &lt;a title="POSIX" href="http://en.wikipedia.org/wiki/POSIX"&gt;POSIX&lt;/a&gt; and &lt;a title="Operating System Abstraction Layer" href="http://en.wikipedia.org/wiki/Operating_System_Abstraction_Layer"&gt;OS abstraction layers&lt;/a&gt; provide commonalities that reduce porting costs.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-733792958276149859?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/733792958276149859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/operating-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/733792958276149859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/733792958276149859'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/operating-system.html' title='Operating system'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5UJc09sb8uY/Snlmeokj9JI/AAAAAAAAACo/bHm4u8aMBtQ/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-3350004947648352131</id><published>2009-08-05T03:43:00.000-07:00</published><updated>2009-08-05T03:50:51.405-07:00</updated><title type='text'>Microsoft Flight Simulator</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_5UJc09sb8uY/SnliyE8bkPI/AAAAAAAAACY/NLaKBcFAUH8/s1600-h/windows_7_logo_120x119.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366429043448844530" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 120px; CURSOR: hand; HEIGHT: 119px" alt="" src="http://3.bp.blogspot.com/_5UJc09sb8uY/SnliyE8bkPI/AAAAAAAAACY/NLaKBcFAUH8/s320/windows_7_logo_120x119.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Microsoft Flight Simulator&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Microsoft Flight Simulator (sometimes abbreviated to MSFS or FS) is a &lt;a title="Flight simulator" href="http://en.wikipedia.org/wiki/Flight_simulator"&gt;flight simulator&lt;/a&gt; program for &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt;, marketed and often seen as a &lt;a title="Video game" href="http://en.wikipedia.org/wiki/Video_game"&gt;video game&lt;/a&gt;.&lt;br /&gt;One of the longest-running, best-known and most comprehensive home flight simulator series, Microsoft Flight Simulator was an early product in the &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; portfolio – different from its other software which was largely business-oriented – and at 25 years is its longest-running franchise, predating &lt;a title="Windows 1.0" href="http://en.wikipedia.org/wiki/Windows_1.0"&gt;Windows&lt;/a&gt; by three years. It has been reported that Microsoft Flight Simulator may be the longest running PC game series of all time. In January 2009 it was reported that Microsoft &lt;a title="Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/Microsoft_Flight_Simulator#Closure_of_the_ACES_Game_Studio"&gt;closed down&lt;/a&gt; the ACES Game Studio, the design team responsible for the series.&lt;br /&gt;&lt;a title="Bruce Artwick" href="http://en.wikipedia.org/wiki/Bruce_Artwick"&gt;Bruce Artwick&lt;/a&gt; developed the Flight Simulator program beginning in 1977 and his company, &lt;a title="SubLOGIC" href="http://en.wikipedia.org/wiki/SubLOGIC"&gt;subLOGIC&lt;/a&gt; sold it for various personal computers. In 1982 Artwick's company licensed to &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; a version of Flight Simulator for the &lt;a class="mw-redirect" title="IBM PC" href="http://en.wikipedia.org/wiki/IBM_PC"&gt;IBM PC&lt;/a&gt;, which was marketed as Microsoft Flight Simulator 1.00. Former Microsoft CEO &lt;a title="Bill Gates" href="http://en.wikipedia.org/wiki/Bill_Gates"&gt;Bill Gates&lt;/a&gt; was fascinated with &lt;a class="mw-redirect" title="Antoine de Saint-Exupéry" href="http://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry"&gt;Antoine de Saint-Exupéry&lt;/a&gt;'s book &lt;a class="mw-redirect" title="Night Flight (book)" href="http://en.wikipedia.org/wiki/Night_Flight_(book)"&gt;Night Flight&lt;/a&gt;, which described the sensations of flying a small aircraft in great detail.&lt;br /&gt;&lt;br /&gt;History&lt;br /&gt;Main article: &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator"&gt;History of Microsoft Flight Simulator&lt;/a&gt;&lt;br /&gt;Microsoft Flight Simulator began life as a set of articles on computer graphics written by Bruce Artwick in 1976 about a &lt;a title="3D computer graphics" href="http://en.wikipedia.org/wiki/3D_computer_graphics"&gt;3D computer graphics&lt;/a&gt; program. When the magazine editor said that subscribers wanted to buy the program, Bruce Artwick incorporated a company called &lt;a title="SubLOGIC" href="http://en.wikipedia.org/wiki/SubLOGIC"&gt;subLOGIC Corporation&lt;/a&gt; in 1977 and began selling flight simulators for &lt;a title="Intel 8080" href="http://en.wikipedia.org/wiki/Intel_8080"&gt;8080&lt;/a&gt; computers such as the &lt;a title="Altair 8800" href="http://en.wikipedia.org/wiki/Altair_8800"&gt;Altair 8800&lt;/a&gt; and &lt;a title="IMSAI 8080" href="http://en.wikipedia.org/wiki/IMSAI_8080"&gt;IMSAI 8080&lt;/a&gt;. In 1979 subLOGIC released FS1 Flight Simulator for the &lt;a class="mw-redirect" title="Apple II family" href="http://en.wikipedia.org/wiki/Apple_II_family"&gt;Apple II&lt;/a&gt;. In 1980 subLOGIC released a version for the &lt;a title="Tandy" href="http://en.wikipedia.org/wiki/Tandy"&gt;Tandy&lt;/a&gt; &lt;a title="TRS-80" href="http://en.wikipedia.org/wiki/TRS-80"&gt;TRS-80&lt;/a&gt;, and in 1982 they licensed an &lt;a class="mw-redirect" title="IBM PC" href="http://en.wikipedia.org/wiki/IBM_PC"&gt;IBM PC&lt;/a&gt; version with &lt;a title="Color Graphics Adapter" href="http://en.wikipedia.org/wiki/Color_Graphics_Adapter"&gt;CGA&lt;/a&gt; graphics to Microsoft, which was released as Microsoft Flight Simulator 1.00. In the early days of less-than-100% &lt;a class="mw-redirect" title="IBM PC compatibles" href="http://en.wikipedia.org/wiki/IBM_PC_compatibles"&gt;IBM PC compatibles&lt;/a&gt;, Flight Simulator was used as an unofficial test of the degree of compatibility of a new PC clone model,[5 along with &lt;a title="Lotus 1-2-3" href="http://en.wikipedia.org/wiki/Lotus_1-2-3"&gt;Lotus 1-2-3&lt;/a&gt;. subLOGIC continued to develop the product for other platforms, and their improved Flight Simulator II was ported to Apple II in 1983, to the &lt;a title="Commodore 64" href="http://en.wikipedia.org/wiki/Commodore_64"&gt;Commodore 64&lt;/a&gt;, &lt;a title="MSX" href="http://en.wikipedia.org/wiki/MSX"&gt;MSX&lt;/a&gt; and &lt;a class="mw-redirect" title="Atari 800" href="http://en.wikipedia.org/wiki/Atari_800"&gt;Atari 800&lt;/a&gt; in 1984, and to the &lt;a class="mw-redirect" title="Commodore Amiga" href="http://en.wikipedia.org/wiki/Commodore_Amiga"&gt;Commodore Amiga&lt;/a&gt; and &lt;a title="Atari ST" href="http://en.wikipedia.org/wiki/Atari_ST"&gt;Atari ST&lt;/a&gt; in 1986. Meanwhile, Bruce Artwick left subLOGIC to found Bruce Artwick Organisation to work on subsequent Microsoft releases, beginning with Microsoft Flight Simulator 3.0 in 1988. Microsoft Flight Simulator reached commercial maturity with version 3.1, and then went on to encompass the use of 3D graphics and graphic hardware acceleration.&lt;br /&gt;Microsoft has consistently produced newer versions of the simulation, adding features such as new aircraft types and augmented scenery. The 2000 and 2002 versions, were available in a standard edition and a Professional Edition which included more aircraft, tools and more extensive scenery than the regular version. The 2004 (version 9) release marked one hundred years of powered flight, and had only one edition. Flight Simulator X, released in 2006, has returned to dual editions with a "Standard Edition" and a "Deluxe Edition".&lt;br /&gt;The most recent versions of this simulation, Microsoft Flight Simulator 2004 and Microsoft Flight Simulator X, cater to pilots, would-be pilots and people who once dreamed of being pilots alike. Microsoft Flight Simulator is less a game than an &lt;a title="Immersion (virtual reality)" href="http://en.wikipedia.org/wiki/Immersion_(virtual_reality)"&gt;immersive&lt;/a&gt; virtual environment; it is usually frustrating, complex and difficult to new users due to its realism, but it can be rewarding for the skilled flightsimmer at the same time. The flying area encompasses the whole world, to varying levels of detail, including over 24,000 airports. Individually-detailed scenery can be found representing major landmarks and an ever-growing number of towns and cities. Landscape details are often patchy away from population centres and particularly outside the &lt;a class="mw-redirect" title="USA" href="http://en.wikipedia.org/wiki/USA"&gt;USA&lt;/a&gt;, although a variety of websites offer scenery add-ons (both free and commercial) to remedy this.&lt;br /&gt;The three latest versions incorporate sophisticated weather simulation, along with the ability to download real-world weather data (Beginning with Flight Simulator 2000). Also included is a varied air traffic environment with interactive &lt;a class="mw-redirect" title="Air Traffic Control" href="http://en.wikipedia.org/wiki/Air_Traffic_Control"&gt;Air Traffic Control&lt;/a&gt; (although the MSFS series was not the first to implement this[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;]), player-flyable aircraft ranging from the historical &lt;a title="Douglas DC-3" href="http://en.wikipedia.org/wiki/Douglas_DC-3"&gt;Douglas DC-3&lt;/a&gt; to the modern &lt;a title="Boeing 777" href="http://en.wikipedia.org/wiki/Boeing_777"&gt;Boeing 777&lt;/a&gt;, interactive lessons and challenges, and finally aircraft checklists. In addition, the two latest versions of Microsoft Flight Simulator have a “kiosk mode”, which allows the application to be run in &lt;a title="Kiosk software" href="http://en.wikipedia.org/wiki/Kiosk_software"&gt;kiosks&lt;/a&gt;. It is the wide availability of upgrades and add-ons, both free and commercial, which give the simulator its flexibility and scope.&lt;br /&gt;&lt;a id="Closure_of_the_ACES_Game_Studio" name="Closure_of_the_ACES_Game_Studio"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: Closure of the ACES Game Studio" href="http://en.wikipedia.org/w/index.php?title=Microsoft_Flight_Simulator&amp;amp;action=edit&amp;amp;section=2"&gt;edit&lt;/a&gt;] Closure of the ACES Game Studio&lt;br /&gt;On January 22, 2009, it was reported that the development team behind the franchise was being heavily affected by Microsoft's ongoing job cuts, with indications that the entire Microsoft Flight Simulator team was laid off. Microsoft confirmed the closure of the ACES studio on January 26, 2009 in a post on the official FSInsider Web site. The article, "About the Aces Team," states in part:&lt;br /&gt;This difficult decision was made to align Microsoft’s resources with our strategic priorities. Microsoft Flight Simulator X will remain available at retail stores and web retailers, the Flight Sim community will continue to learn from and encourage one another, and we remain committed to the Flight Simulator franchise for the long term.&lt;br /&gt;According to former ACES employee Phil Taylor, the shutdown was not due to unfavorable financial results of &lt;a title="Microsoft Flight Simulator X" href="http://en.wikipedia.org/wiki/Microsoft_Flight_Simulator_X"&gt;FSX&lt;/a&gt;, but due to management issues and delays in project delivery combined with increased demands in headcount, at a time that Microsoft was attempting to lower costs. It has been speculated in the mainstream and gaming media that future releases on the franchise would come as part of an Internet game or on the &lt;a title="Xbox 360" href="http://en.wikipedia.org/wiki/Xbox_360"&gt;Xbox 360&lt;/a&gt;.&lt;br /&gt;There is an ongoing petition for Microsoft to preserve the integrity of the Flight Simulator franchise and ensure the future of Microsoft Flight Simulator development, with more than 7,808 signatures as of August 4, 2009.&lt;br /&gt; Version history&lt;br /&gt;Main article: &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator"&gt;History of Microsoft Flight Simulator&lt;/a&gt;&lt;br /&gt;1982 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_1.0"&gt;Flight Simulator 1.0&lt;/a&gt;&lt;br /&gt;1983 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_2.0"&gt;Flight Simulator 2.0&lt;/a&gt;&lt;br /&gt;1988 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_3.0"&gt;Flight Simulator 3.0&lt;/a&gt;&lt;br /&gt;1989 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_4.0"&gt;Flight Simulator 4.0&lt;/a&gt;&lt;br /&gt;1993 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_5.0"&gt;Flight Simulator 5.0&lt;/a&gt;&lt;br /&gt;1995 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_5.1"&gt;Flight Simulator 5.1&lt;/a&gt;&lt;br /&gt;1996 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_95"&gt;Flight Simulator 95&lt;/a&gt;&lt;br /&gt;1997 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_98"&gt;Flight Simulator 98&lt;/a&gt;&lt;br /&gt;1999 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_2000"&gt;Flight Simulator 2000&lt;/a&gt;&lt;br /&gt;2001 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_2002"&gt;Flight Simulator 2002&lt;/a&gt;&lt;br /&gt;2003 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_2004:_A_Century_of_Flight"&gt;Flight Simulator 2004: A Century of Flight&lt;/a&gt;&lt;br /&gt;2006 – &lt;a title="History of Microsoft Flight Simulator" href="http://en.wikipedia.org/wiki/History_of_Microsoft_Flight_Simulator#Flight_Simulator_X"&gt;Flight Simulator X&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Flight Simulator X&lt;br /&gt;Main article: &lt;a title="Microsoft Flight Simulator X" href="http://en.wikipedia.org/wiki/Microsoft_Flight_Simulator_X"&gt;Microsoft Flight Simulator X&lt;/a&gt;&lt;br /&gt;Flight Simulator X is the most recent version of Microsoft Flight Simulator. It includes a graphics engine upgrade as well as compatibility with &lt;a class="mw-redirect" title="DirectX 10" href="http://en.wikipedia.org/wiki/DirectX_10"&gt;DirectX 10&lt;/a&gt; and &lt;a title="Windows Vista" href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Windows Vista&lt;/a&gt; technologies. It was released on 17 October, 2006 in North America. There are two versions of the game, both on two DVDs. The Deluxe edition contains the new &lt;a title="Garmin G1000" href="http://en.wikipedia.org/wiki/Garmin_G1000"&gt;Garmin G1000&lt;/a&gt; integrated flight instrument system in three cockpits, additional aircraft in the fleet, Tower Control capability (multiplayer only), more missions, more high-detail cities and airports, and a Service Developers Kit (SDK) pack for development. Main improvements are graphical, for instance it is the first simulator with light bloom.&lt;br /&gt;Microsoft has also released a Flight Simulator X Demo, which contains limited aircraft and area of flight. It is available for Windows XP SP2 and Windows Vista.&lt;br /&gt;&lt;a id="Add-ons_and_customization" name="Add-ons_and_customization"&gt;&lt;/a&gt;&lt;br /&gt; Add-ons and customization&lt;br /&gt;See also &lt;a title="Category:Microsoft Flight Simulator add-ons" href="http://en.wikipedia.org/wiki/Category:Microsoft_Flight_Simulator_add-ons"&gt;Category: Microsoft Flight Simulator add-ons&lt;/a&gt;&lt;br /&gt;The long history and consistent popularity of Flight Simulator has encouraged a very large body of add-on packages to be developed as both commercial and volunteer ventures. A formal &lt;a title="Software development kit" href="http://en.wikipedia.org/wiki/Software_development_kit"&gt;software development kit&lt;/a&gt; and other tools for the simulator exist to further facilitate third-party efforts, and some third parties have also learned to "tweak" the simulator in various ways by trial and error.&lt;br /&gt;&lt;a id="Aircraft" name="Aircraft"&gt;&lt;/a&gt;&lt;br /&gt; Aircraft&lt;br /&gt;&lt;a class="image" title="'A" href="http://en.wikipedia.org/wiki/File:Afab1900dsmall.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:Afab1900dsmall.jpg"&gt;&lt;/a&gt;A PMDG &lt;a title="Beechcraft 1900" href="http://en.wikipedia.org/wiki/Beechcraft_1900"&gt;Beech 1900D&lt;/a&gt; of "American Flight Airways"; in AFA Express colors.&lt;br /&gt;Individual aspects of Flight Simulator aircraft that can be edited include cockpit layout, cockpit image, aircraft model, aircraft model textures, aircraft flight characteristics, scenery models, scenery layouts, and scenery textures, often with simple-to-use programs or only a text editor such as Notepad. Dedicated flightsimmers have taken advantage of Flight Simulator's vast add-on capabilities, having successfully linked Flight Simulator to homebuilt hardware, some of which approaches the complexity of commercial full-motion flight simulators.&lt;br /&gt;The game's aircraft are made up of five parts:&lt;br /&gt;The model, which is a 3D CAD-style model of the aircraft's exterior and virtual cockpit, if applicable.&lt;br /&gt;The textures, bitmap images which the game layers onto the model. These can be easily edited (known as repainting), so that a model can adopt any paint scheme imaginable, fictional or real.&lt;br /&gt;The sounds, literally, what the aircraft sounds like. This is determined by defining which WAV files the aircraft uses as its sound set.&lt;br /&gt;The panel, a representation of the aircraft's cockpit. This includes one or more bitmap images of the panel, instrument gauge files, and sometimes its own sounds.&lt;br /&gt;The FDE, or Flight Dynamics Engine. This consists of the airfile, a *.air file, which contains hundreds of parameters which define the aircraft's flight characteristics, and the aircraft.cfg, which contains more, easier-to-edit parameters.&lt;br /&gt;&lt;a id="AI_Traffic" name="AI_Traffic"&gt;&lt;/a&gt;&lt;br /&gt;AI Traffic&lt;br /&gt;A growing add-on for the series is AI (Artificially Intelligent) Traffic. AI Traffic is the simulation of other vehicles in the FS landscape. This traffic plays a real role in the simulator as it is possible to crash into traffic (this can be disabled), thus ending your session, and to interact with the traffic via the radio and ATC. This feature is possible even with 3rd party traffic. Microsoft introduced AI traffic in MSFS 2002 with several airliners and private aircraft. This has since been supplemented with many files created by third party developers. Typically 3rd party aircraft models have multiple levels of detail which allow the AI traffic to be better on frame rates while still being detailed during close looks. There are several prominent freeware developers, Project AI is a respected Civilian Airlineer and air cargo traffic creator along with the very popular World of AI. The most prominent developer of military traffic is Military AI Works (MAIW) which has released many packages and new AI models covering many countries of the world[&lt;a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed"&gt;citation needed&lt;/a&gt;]. There is a small niche market in the form of AI boat traffic as well.&lt;br /&gt;&lt;a id="Scenery" name="Scenery"&gt;&lt;/a&gt;&lt;br /&gt; Scenery&lt;br /&gt;Scenery add-ons usually involve replacements for existing airports with enhanced and more accurate detail, or large expanses of highly detailed ground scenery for specific regions of the world. Some types of scenery add-ons replace or add structures to the simulator. Both payware and freeware scenery add-ons are very widely available. Airport enhancements, for example, range from simple freeware add-ons that update runways or taxiways to very elaborate payware packages that reproduce every lamp, pavement marking, and structure at an airport with near-total accuracy, including animated effects such as baggage cars or marshalling agents. Geographic scenery enhancements may use detailed satellite photos and 3-D structures to closely reproduce real-world regions, particularly those including large cities, landmarks, or spectacular natural wonders.&lt;br /&gt;&lt;a id="Flight_networks" name="Flight_networks"&gt;&lt;/a&gt;&lt;br /&gt; Flight networks&lt;br /&gt;Virtual flight networks such as &lt;a title="International Virtual Aviation Organisation" href="http://en.wikipedia.org/wiki/International_Virtual_Aviation_Organisation"&gt;IVAO&lt;/a&gt; and &lt;a class="mw-redirect" title="VATSIM" href="http://en.wikipedia.org/wiki/VATSIM"&gt;VATSIM&lt;/a&gt; use special, small add-on modules for Flight Simulator to enable connection to their proprietary networks in multiplayer mode, and to allow for voice and text communication with other virtual pilots and controllers over the network.&lt;br /&gt;&lt;a id="Miscellaneous" name="Miscellaneous"&gt;&lt;/a&gt;&lt;br /&gt; Miscellaneous&lt;br /&gt;Some utilities, such as FSUIPC, merely provide useful tweaks for the simulator to overcome design limitations or bugs, or to allow more extensive interfacing with other third-party add-ons. Sometimes certain add-ons require other utility add-ons in order to work correctly with the simulator.&lt;br /&gt;Other add-ons provide navigation tools, simulation of passengers, and cameras that can view aircraft or scenery from any angle, more realistic instrument panels and gauges, and so on.&lt;br /&gt;Some software add-ons provide compatibility with specific hardware, such as game controllers and optical motion sensors.&lt;br /&gt;&lt;a id="Availability" name="Availability"&gt;&lt;/a&gt;&lt;br /&gt; Availability&lt;br /&gt;A number of websites are dedicated to providing users with add-on files (such as airplanes from real &lt;a class="mw-redirect" title="Airlines" href="http://en.wikipedia.org/wiki/Airlines"&gt;airlines&lt;/a&gt;, airport utility cars, real buildings located in specific cities, textures, and city files). The wide availability over the Internet of freeware add-on files for the simulation has encouraged the development of a large and diverse virtual community linked up by design group/enthusiast message boards, online multiplayer flying, and 'virtual airlines'. The presence of the Internet has also facilitated the distribution of payware add-ons for the simulator, with the option of downloading the files reducing distribution costs.&lt;br /&gt;There are many addons that are &lt;a title="Retail software" href="http://en.wikipedia.org/wiki/Retail_software"&gt;payware&lt;/a&gt;. Scenery enhancements, aircraft, sound packages, utilities, and many other kinds of programs are available under this payment method. Payware addons often tend to have larger feature sets than their freeware counterparts; extensive features are not, however, restricted to payware packages, and a select few freeware packages are renowned for offering the same functionality and professional quality at no cost.&lt;br /&gt;&lt;a id="Community_involvement" name="Community_involvement"&gt;&lt;/a&gt;&lt;br /&gt; Community involvement&lt;br /&gt;&lt;a class="image" title="FS2004 in the UK Lake District with VFR (Visual Flight Rules) photo scenery and terrain additional components." href="http://en.wikipedia.org/wiki/File:FS2004-lakes.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:FS2004-lakes.jpg"&gt;&lt;/a&gt;FS2004 in the UK &lt;a title="Lake District" href="http://en.wikipedia.org/wiki/Lake_District"&gt;Lake District&lt;/a&gt; with VFR (Visual Flight Rules) photo scenery and terrain additional components.&lt;br /&gt;A large community exists for the Microsoft Flight Simulator franchise, partly stemming from the open nature of the simulator structure which allows for numerous modifications to be made. There are also many &lt;a title="Virtual airline" href="http://en.wikipedia.org/wiki/Virtual_airline"&gt;virtual airlines&lt;/a&gt;, where pilots fly their assignments as pilots do in real airlines, as well as worldwide networks for the simulation of air traffic and &lt;a title="Air traffic control" href="http://en.wikipedia.org/wiki/Air_traffic_control"&gt;air traffic control&lt;/a&gt;, such as &lt;a title="International Virtual Aviation Organisation" href="http://en.wikipedia.org/wiki/International_Virtual_Aviation_Organisation"&gt;IVAO&lt;/a&gt; and &lt;a class="mw-redirect" title="VATSIM" href="http://en.wikipedia.org/wiki/VATSIM"&gt;VATSIM&lt;/a&gt;.&lt;br /&gt;&lt;a id="Awards" name="Awards"&gt;&lt;/a&gt;&lt;br /&gt; Awards&lt;br /&gt;The success of the Microsoft Flight Simulator series has resulted in Guinness World Records awarding the series 7 world records in the Guinness World Records: Gamer's Edition 2008. These records include "Longest Running Flight Sim Series", "Most Successful Flight Simulator Series", and "Most Expensive Home Flight Simulator Cockpit", which was built by Australian trucking tycoon Matthew Sheil, and cost over US$242,000 to build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-3350004947648352131?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/3350004947648352131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/microsoft-flight-simulator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/3350004947648352131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/3350004947648352131'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/microsoft-flight-simulator.html' title='Microsoft Flight Simulator'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5UJc09sb8uY/SnliyE8bkPI/AAAAAAAAACY/NLaKBcFAUH8/s72-c/windows_7_logo_120x119.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-4966386461922928712</id><published>2009-08-05T02:37:00.000-07:00</published><updated>2009-08-05T03:02:55.793-07:00</updated><title type='text'>Virtual Museum of Computing</title><content type='html'>&lt;span style="font-family:arial;font-size:130%;"&gt;The Virtual Museum of Computing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_5UJc09sb8uY/SnlWl47KODI/AAAAAAAAACA/y8PDqx_HT4Q/s1600-h/110_022.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366415639924324402" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 170px; CURSOR: hand; HEIGHT: 139px" alt="" src="http://1.bp.blogspot.com/_5UJc09sb8uY/SnlWl47KODI/AAAAAAAAACA/y8PDqx_HT4Q/s320/110_022.jpg" border="0" /&gt;&lt;/a&gt; The Virtual Museum of Computing (VMoC) is an eclectic collection of links and online resources concerning the &lt;a class="mw-redirect" title="History of computers" href="http://en.wikipedia.org/wiki/History_of_computers"&gt;history of computers&lt;/a&gt; and &lt;a title="History of computer science" href="http://en.wikipedia.org/wiki/History_of_computer_science"&gt;computer science&lt;/a&gt; . It includes links to other related museums, both real and virtual, around the world, as well as having its own virtual galleries of information. A particular feature is the early computing pioneer &lt;a title="Alan Turing" href="http://en.wikipedia.org/wiki/Alan_Turing"&gt;Alan Turing&lt;/a&gt;, among others.&lt;br /&gt;This &lt;a title="Virtual museum" href="http://en.wikipedia.org/wiki/Virtual_museum"&gt;virtual museum&lt;/a&gt; was founded by &lt;a title="Jonathan Bowen" href="http://en.wikipedia.org/wiki/Jonathan_Bowen"&gt;Jonathan Bowen&lt;/a&gt; in 1994, originally at the &lt;a title="Oxford University Computing Laboratory" href="http://en.wikipedia.org/wiki/Oxford_University_Computing_Laboratory"&gt;Oxford University Computing Laboratory&lt;/a&gt; in the &lt;a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom"&gt;United Kingdom&lt;/a&gt;. It is now supported by &lt;a title="Museophile" href="http://en.wikipedia.org/wiki/Museophile"&gt;Museophile&lt;/a&gt; and also forms part of the &lt;a title="Virtual Library museums pages" href="http://en.wikipedia.org/wiki/Virtual_Library_museums_pages"&gt;Virtual Library museums pages&lt;/a&gt;, hosted at &lt;a title="London South Bank University" href="http://en.wikipedia.org/wiki/London_South_Bank_University"&gt;London South Bank University&lt;/a&gt; and mirrored around the world.&lt;br /&gt;&lt;br /&gt;The Virtual Library museums pages (VLmp) form a leading directory of online &lt;a class="mw-redirect" title="Museums" href="http://en.wikipedia.org/wiki/Museums"&gt;museums&lt;/a&gt; around the world. The resource was founded by &lt;a title="Jonathan Bowen" href="http://en.wikipedia.org/wiki/Jonathan_Bowen"&gt;Jonathan Bowen&lt;/a&gt; in 1994, originally at the &lt;a title="Oxford University Computing Laboratory" href="http://en.wikipedia.org/wiki/Oxford_University_Computing_Laboratory"&gt;Oxford University Computing Laboratory&lt;/a&gt; in the &lt;a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom"&gt;United Kingdom&lt;/a&gt;. It is supported by the &lt;a title="International Council of Museums" href="http://en.wikipedia.org/wiki/International_Council_of_Museums"&gt;International Council of Museums&lt;/a&gt; (ICOM) and &lt;a title="Museophile" href="http://en.wikipedia.org/wiki/Museophile"&gt;Museophile&lt;/a&gt;.The main site moved to &lt;a title="London South Bank University" href="http://en.wikipedia.org/wiki/London_South_Bank_University"&gt;London South Bank University&lt;/a&gt; and is now hosted as a &lt;a title="Wiki" href="http://en.wikipedia.org/wiki/Wiki"&gt;wiki&lt;/a&gt; on &lt;a title="Wikia" href="http://en.wikipedia.org/wiki/Wikia"&gt;Wikia&lt;/a&gt;.&lt;br /&gt;The directory is organized in a distributed manner by country with around twenty people in different countries maintaining various sections. &lt;a title="Canada" href="http://en.wikipedia.org/wiki/Canada"&gt;Canada&lt;/a&gt;, through the &lt;a title="Canadian Heritage Information Network" href="http://en.wikipedia.org/wiki/Canadian_Heritage_Information_Network"&gt;Canadian Heritage Information Network&lt;/a&gt; (CHIN), was the first country to become involved. The &lt;a title="MDA (museums)" href="http://en.wikipedia.org/wiki/MDA_(museums)"&gt;MDA&lt;/a&gt; maintained the &lt;a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom"&gt;United Kingdom&lt;/a&gt; section of museums, now the &lt;a title="Collections Trust" href="http://en.wikipedia.org/wiki/Collections_Trust"&gt;Collections Trust&lt;/a&gt;.&lt;br /&gt;&lt;a id="See_also" name="See_also"&gt;&lt;/a&gt;&lt;br /&gt;Person   Achievement   Ach. Date   John Atanasoff Built the first electronic digital computer, the Atanasoff–Berry Computer, though it was neither programmable nor Turing-complete. 1939 Charles Babbage Designed the Analytical Engine and built a prototype for a less powerful mechanical calculator. 18221837 John Backus Invented FORTRAN (Formula Translation), the first practical high-level programming language, and he formulated the Backus-Naur form that described the formal language syntax. 19541963 George Boole Formalized Boolean algebra, the basis for digital logic and computer science. 1830~ Alonzo Church Founded contributions to theoretical computer science, specifically for the development of the lambda calculus and the discovery of the undecidability problem within it. 1936 Wesley A. Clark Designed LINC, the first functional computer scaled down and priced for the individual user. Put in service in 1963, many of its features are seen as prototypes of what were to be essential elements of personal computers. 1962 James Cooley With John W. Tukey, created the Fast Fourier Transform. 1965 Ole-Johan Dahl With Kristen Nygaard, invented the proto-object oriented language SIMULA. 1962 Edsger Dijkstra Made advances in algorithms, Goto considered harmful, the semaphore (programming), rigor, and pedagogy. 1968 J. Presper Eckert With John Mauchly, designed and built the ENIAC, the first modern (all electronic, Turing-complete) computer, and the UNIVAC I, the first commercially available computer. 19431951 Douglas Engelbart Best known for inventing the computer mouse (in a joint effort with Bill English); as a pioneer of human-computer interaction whose Augment team developed hypertext, networked computers, and precursors to GUIs. 1963 Gottlob Frege Developed first-order predicate calculus, which was a crucial precursor requirement to developing computation theory. 1879 Seymour Ginsburg Proved "don't-care" circuit minimization does not necessarily yield optimal results, proved that the ALGOL programming language is context-free (thus linking formal language theory to the problem of compiler writing), and invented AFL Theory. 195819611967 Kurt Gödel Proved that Peano axiomatized arithmetic could not be both logically consistent and complete in first-order predicate calculus. Church, Kleene, and Turing developed the foundations of computation theory based on corollaries to Gödel's work. 1931 James Gosling Developed the Java programming language, the most widespread portable computing language ever developed. 1994 Lois Haibt Was a member of the ten person team that invented Fortran and among the first women to play a crucial role in the development of computer science. 1954 C.A.R. Hoare Developed the formal language Communicating Sequential Processes (CSP) and Quicksort. 19601978 Grace Hopper Pioneered work on the necessity for high-level programming languages, which she termed automatic programming, and wrote the A-O compiler, which heavily influenced the COBOL language. 1952 Cuthbert Hurd Helped the International Business Machines Corporation develop its first general-purpose computer, the IBM 701. 1952 Kenneth Iverson Invented the APL programming language and made contribution to interactive computing. 1962 Jacek Karpinski Developed the first differential analyzer that used transistors, and developed one of the first machine learning algorithms for character and image recognition. Also was the inventor of one of the first minicomputers, the K-202. 1973 Alan Kay Pioneered many of the ideas at the root of object-oriented programming languages, led the team that developed Smalltalk, and made fundamental contributions to personal computing. 1970~ Stephen Cole Kleene Pioneered work with Alonzo Church on the Lambda Calculus that first laid down the foundations of computation theory. 1936 Donald Knuth Wrote The Art of Computer Programming and created TeX. 19681989 Sergei Alekseyevich Lebedev Independently designed the first electronic computer in the Soviet Union, MESM, in Kiev, Ukraine. 1951 Gottfried Leibniz Made advances in symbolic logic, such as the Calculus ratiocinator, that were heavily influential on Gottlob Frege. Made developments in first-order predicate calculus that were crucial for the theoretical foundations of computer science. 1670~ Ramon Llull Designed multiple symbolic representations machines, and pioneered notions of symbolic representation and manipulation to produce knowledge--both of which were major influences on Leibniz. 1300~ Ada Lovelace Began the study of scientific computation, analyzing Babbage's work in her Sketch of the Analytical Engine, and was the namesake for the Ada programming language. 1843 John Mauchly With J. Presper Eckert, designed and built the ENIAC, the first modern (all electronic, Turing-complete) computer, and the UNIVAC I, the first commercially available computer. 19431951 John McCarthy Invented LISP, a functional programming language. 1955 John von Neumann Devised the von Neumann architecture upon which most modern computers are based. 1945 Kristen Nygaard With Ole-Johan Dahl, invented the proto-object oriented language SIMULA. 1962 Emil L. Post Developed the Post machine as a model of computation, independently of Turing. Known also for developing truth tables, the Post correspondence problem used in recursion theory as well as proving what is knows as Post's theorem. 1936 Dennis Ritchie Pioneered the C programming language and the UNIX computer operating system at Bell Labs. 1967 Claude Shannon Founded information theory and practical digital circuit design. 19371948 Herbert Simon A political scientist and economist who pioneered artificial intelligence. Co-creator of the Logic Theory Machine and the General Problem Solver programs. 19561957 John W. Tukey With James Cooley, created the Fast Fourier Transform. 1965 Alan Turing Made several founding contributions to computer science, including the Turing machine computational model, and ACE design. 1936 Maurice Wilkes Built the first practical stored program computer (EDSAC) to be completed and for being credited with the ideas of several high-level programming language constructs. 1949 Niklaus Wirth Designed the Pascal, Modula-2 and Oberon programming languages. 19701978 Konrad Zuse Built the first functional tape-stored-program-controlled computer, the Z3. The Z3 was proven to be Turing-complete in 1998. 1941&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-4966386461922928712?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/4966386461922928712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/virtual-museum-of-computing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/4966386461922928712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/4966386461922928712'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/virtual-museum-of-computing.html' title='Virtual Museum of Computing'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5UJc09sb8uY/SnlWl47KODI/AAAAAAAAACA/y8PDqx_HT4Q/s72-c/110_022.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-8124382215592673956</id><published>2009-08-05T02:29:00.000-07:00</published><updated>2009-08-05T02:36:08.145-07:00</updated><title type='text'>computer software</title><content type='html'>&lt;span style="font-family:arial;font-size:130%;color:#ff0000;"&gt;computer software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Computer software, or just software is a general term used to describe the role that computer programs, procedures and documentation play in a computer system. The term includes:Application software such as word processors which perform productive tasks for users.Firmware which is software programmed resident to electrically programmable memory devices on board mainboards or other types of integrated hardware carriers.Middleware which controls and co-ordinates distributed systems.System software such as operating systems, which interface with hardware to provide the necessary services for application software.Software testing is a domain independent of development and programming. It consists of various methods to test and declare a software product fit before it can be launched for use by either an individual or a group. Many tests on functionality, performance and appearance are conducted by modern testers with various tools such as QTP, Load runner and Black box testing, to edit a checklist of requirements against the developed code. ISTQB is a certification that is in demand for engineers who want to pursue a career in testing. Testware which is an umbrella term or container term for all utilities and application software that serve in combination for testing a software package but not necessarily may optionally contribute to operational purposes. As such, testware is not a standing configuration but merely a working environment for application software or subsets thereof.Software includes things such as websites, programs or video games, that are coded by programming languages like C or C++."Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records. History of Computer SoftwareHistory of computer software and computer languages. It was not until after 1981 that software programs were made eligible for patents by the Supreme Court.The History of HTML Tim Berners-Lee invented the World Wide Web and HTML or hypertext markup language.Software Programming - The History of Software ProgrammingGeneral background information on computer languages including basic - pagemaker - java - fortran - ms-dos - visicalc - windows - computer graphics and more.The Unusual History of Microsoft WindowsIn 1983, the Microsoft Corporation formally announced Microsoft Windows software for IBM computers and they almost named it Interface Manager,FORTRAN The Early “Turning Point” Chapter Excerpt from "Go To: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, &amp;amp; Iconoclasts" by Steve LohrUniversal Instant Messenger TrillianThe history of Trillian a universal instant messenger software.Computer and Video Games In 1952, A.S. Douglas wrote his PhD degree at the University of Cambridge on Human-Computer interraction. Douglas created the first graphical computer game - a version of Tic-Tac-Toe.Ada LovelaceAda Byron Lovelace wrote a scientific paper in 1843 that anticipated the development of computer software artificial intelligence and computer musicRemembering Grace Murray HopperBesides being "the" pioneer computer programmer, the co-inventor of COBOL, the grand lady of software, Amazing Grace, and Grandma COBOL, Grace Murray Hopper will be remembered for one of her now famous sayings, which is "It's easier to ask forgivenesAldus PagemakerThe first desktop publishing program was created by Paul Brainard and a company called Aldus.ASCIIASCII is an acronym for the American Standard Code for Information Interchange.BASICBASIC (standing for Beginner's All Purpose Symbolic Instruction Code) was written (invented) in 1963, at Dartmouth College, by mathematicians John George Kemeny and Tom Kurtzas.The History of Computer ChessDr. Dietrich Prinz wrote the original chess playing program.The History of HTMLTim Berners-Lee was the primary author of html, assisted by his colleagues at CERN, an international scientific organization based in Geneva, Switzerland.JavaJava is a programming language and environment invented by James Gosling in 1994.JavaScriptIntroduced in 1995, JavaScript an object oriented web scripting language has become an international standard allowing web developers the ability to write Dynamic HTML that works on multiple browsers.Lingo ProgrammingJohn Thompson invented lingo programming used in Macromedia Director and Shockwave.The History of the MS-DOS Operating SystemsThe "Microsoft Disk Operating System" or MS-DOS was based on QDOS, the "Quick and Dirty Operating System" written by Tim Paterson of Seattle Computer Products,The First Spreadsheet"Any product that pays for itself in two weeks is a surefire winner." - Dan Bricklin on VisiCalcThe First Word ProcessorReleased in 1979 by Micropro International Inc., WordStar was the first commercially successful word processing software program produced for microcomputers and the best selling software program of the early eighties.Philip Emeagwali and SupercomputersInterview with Philip Emeagwali about writing softwar for supercomputers. OverviewComputer software is often regarded as anything but hardware, meaning that the "hard" are the parts that are tangible while the "soft" part is the intangible objects inside the computer. Software encompasses an extremely wide array of products and technologies developed using different techniques like programming languages, scripting languages or even microcode or a FPGA state. The types of software include web pages developed by technologies like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like OpenOffice, Microsoft Word developed by technologies like C, C++, Java,or C#. Software usually runs on an underlying software operating systems such as the Linux or Microsoft Windows. Software also includes video games and the logic systems of modern consumer devices such as automobiles, televisions, and toasters.&lt;br /&gt;Relationship to computer hardwareComputer software is so called to distinguish it from computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence. It is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an assembly language, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler.The term "software" was first used in this sense by John W. Tukey in 1958. In computer science and software engineering, computer software is all computer programs. The theory that is the basis for most modern software was first proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem.&lt;br /&gt;Types of softwareA layer structure showing where Operating System is located on generally used software systems on desktopsPractical computer systems divide software systems into three major classes: system software, programming software and application software, although the distinction is arbitrary, and often blurred.&lt;br /&gt;System softwareSystem software helps run the computer hardware and computer system. It includes combination of the following:device driversoperating systemsserversutilitieswindowing systemsThe purpose of systems software is to unburden the applications programmer from the details of the particular computer complex being used, including such accessory devices as communications, printers, readers, displays and keyboards, and also to partition the computer's resources such as memory and processor time in a safe and stable manner.&lt;br /&gt;Programming softwareProgramming software usually provides tools to assist a programmer in writing computer programs, and software using different programming languages in a more convenient way. The tools include:compilersdebuggersinterpreterslinkerstext editorsAn Integrated development environment (IDE) is a single application that attempts to manage all these functions.&lt;br /&gt;ArchitectureSoftware architectureUsers often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user software.Platform software: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software.Application software: Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.User-written software: End-user development tailors systems to meet users' specific needs. User software include spreadsheet templates, word processor macros, scientific simulations, and scripts for graphics and animations. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers. DocumentationMain article: Software documentationMost software has software documentation so that the end user can understand the program, what it does, and how to use it. Without a clear documentation, software can be hard to use--especially if it is a very specialized and relatively complex software like the Photoshop or AutoCAD.Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified.&lt;br /&gt;Library Main article: Software libraryAn executable is almost always not sufficiently complete for direct execution. Software libraries include collections of functions and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.&lt;br /&gt;StandardMain article: Software standardSince software can be designed using many different programming languages and in many different operating systems and operating environments, software standard is needed so that different software can understand and exchange information between each other. For instance, an email sent from a Microsoft Outlook should be readable from Yahoo! Mail and vice versa.&lt;br /&gt;ExecutionMain article: Execution (computing)Computer software has to be "loaded" into the computer's storage (such as a [hard drive], memory, or RAM). Once the software has loaded, the computer is able to execute the software. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation – moving data, carrying out a computation, or altering the control flow of instructions.Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.&lt;br /&gt;Quality and reliabilityMain articles: Software quality, Software testing, and Software reliabilitySoftware quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "bugs." Many bugs are discovered and eliminated (debugged) through software testing. However, software testing rarely – if ever – eliminates every bug; some programmers say that "every program has at least one more bug" (Lubarsky's Law). All major software companies, such as Microsoft, Novell and Sun Microsystems, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testing and other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, NASA has extremely rigorous software testing procedures for its Space Shuttle and other programs because faulty software can crash the whole program and make the vehicle not functional, at great expense.&lt;br /&gt;LicenseMain article: Software licenseThe software's license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware. See also License Management.&lt;br /&gt;PatentsMain articles: Software patent and Software patent debateSoftware can be patented; however, software patents can be controversial in the software industry with many people holding different views about it. The controversy over software patents is that a specific algorithm or technique that the software has cannot be duplicated by others and is considered an intellectual property and copyright infringement depending on the severity. Some people believe that software patent hinder software development, while others argue that software patents provide an important incentive to spur software innovation.&lt;br /&gt;Design and implementationMain articles: Software development, Computer programming, and Software engineeringDesign and implementation of software varies depending on the complexity of the software. For instance, design and creation of Microsoft Word software will take much longer time than designing and developing Microsoft Notepad because of the difference in functionalities in each one.Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like emacs, xemacs, Microsoft Visual Studio and Eclipse that can simplify the process and compile the program. As noted in different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK+, JavaBeans or Swing. Libraries (APIs) are categorized for different purposes. For instance, JavaBeans library is used for designing enterprise applications, Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word, and Windows Communication Foundation is used for designing web services. Underlying computer programming concepts like quicksort, hashtable, array, and binary tree can be useful to creating software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows desktop application, he/she might use the .NET Windows Forms library to design the desktop application and call its APIs like Form1.Close() and Form1.Show() to close or open the application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Sun Microsystems, Novell, and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.Software has special economic characteristics that make its design, creation, and distribution different from most other economic goods.A title of a person who creates software is called a programmer, software engineer, software developer, and code monkey that all essentially have a same meaning.&lt;br /&gt;Industry and organizationsMain article: Software industrySoftware has its own niche industry that is called the software industry made up of different entities and peoples that produce software, and as a result there are many software companies and programmers in the world. Because software is increasingly used in many different areas like in finance, searching, mathematics, space exploration, gaming and mining and such, software companies and people usually specialize in certain areas. For instance, Electronic Arts primarily creates video games.Also selling software can be quite a profitable industry. For instance, Bill Gates, the founder of Microsoft is the second richest man in the world in 2008 largely by selling the Microsoft Windows and Microsoft Office software programs. The same goes for Larry Ellison, largely through his Oracle database software.There are also many non-profit software organizations like the Free Software Foundation, GNU Project, Mozilla Foundation. Also there are many software standard organizations like the W3C, IETF and others that try to come up with a software standard so that many software can work and interoperate with each other like through standards such as XML, HTML, HTTP or FTP.Some of the well known software companies include Microsoft, Apple, IBM, Oracle, Novell, SAP and HP.&lt;br /&gt;Free Software MovementMain article: Free software movement&lt;br /&gt;This section may contain original research or unverified claims. Please improve the article by adding references. See the talk page for details. (July 2008)There is more than one approach to creating, licensing, and distributing software. For instance, the free software (or open source) community produces software under licensing that makes it free for inspection of its code, modification of its code, and distribution. While the software released under an open source license (such as General Public License, or GPL for short) can be sold for money, the distribution cannot be restricted in the same way as software with copyright and patent restrictions (used by corporations to require licensing fees).While some advocates of free software use slogans such as "information wants to be free," hinting that it is easy to copy digital data and that the licenses (enforced through laws) are unnatural restrictions, other creators and users of open source software recognize it to be one model among many for software creation, licensing, and distribution. And the laws themselves are put into place for the ostensible purpose of increasing creative output, by allowing the creators to control and profit most effectively from their intellectual property.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-8124382215592673956?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/8124382215592673956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/computer-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/8124382215592673956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/8124382215592673956'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/computer-software.html' title='computer software'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-1592319008086652080</id><published>2009-08-04T05:42:00.000-07:00</published><updated>2009-08-04T05:55:45.704-07:00</updated><title type='text'>History of computer software</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_5UJc09sb8uY/SngvuWySWeI/AAAAAAAAAB4/H_l9Tj5-l_A/s1600-h/stock-photo-woman-on-couch-using-laptop-33894244.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5366091429448931810" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 100px; CURSOR: hand; HEIGHT: 80px" alt="" src="http://2.bp.blogspot.com/_5UJc09sb8uY/SngvuWySWeI/AAAAAAAAAB4/H_l9Tj5-l_A/s320/stock-photo-woman-on-couch-using-laptop-33894244.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The history of computer science began long before the modern discipline of &lt;a title="Computer science" href="http://en.wikipedia.org/wiki/Computer_science"&gt;computer science&lt;/a&gt; that emerged in the twentieth century. The progression, from mechanical inventions and mathematical theories towards the modern concepts and machines, formed a major academic field and the basis of a massive worldwide industry.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Algorithms&lt;br /&gt;In the &lt;a title="7th century" href="http://en.wikipedia.org/wiki/7th_century"&gt;7th century&lt;/a&gt;, &lt;a title="Indian mathematics" href="http://en.wikipedia.org/wiki/Indian_mathematics"&gt;Indian mathematician&lt;/a&gt; &lt;a title="Brahmagupta" href="http://en.wikipedia.org/wiki/Brahmagupta"&gt;Brahmagupta&lt;/a&gt; gave the first explanation of the &lt;a class="mw-redirect" title="Hindu-Arabic numeral system" href="http://en.wikipedia.org/wiki/Hindu-Arabic_numeral_system"&gt;Hindu-Arabic numeral system&lt;/a&gt; and the use of &lt;a title="0 (number)" href="http://en.wikipedia.org/wiki/0_(number)"&gt;zero&lt;/a&gt; as both a &lt;a title="Placeholder" href="http://en.wikipedia.org/wiki/Placeholder"&gt;placeholder&lt;/a&gt; and a &lt;a class="mw-redirect" title="Decimal digit" href="http://en.wikipedia.org/wiki/Decimal_digit"&gt;decimal digit&lt;/a&gt;.&lt;br /&gt;Approximately around the year &lt;a title="825" href="http://en.wikipedia.org/wiki/825"&gt;825&lt;/a&gt;, Persian mathematician &lt;a class="mw-redirect" title="Al-Khwarizmi" href="http://en.wikipedia.org/wiki/Al-Khwarizmi"&gt;Al-Khwarizmi&lt;/a&gt; wrote a book, On the Calculation with Hindu Numerals, that was principally responsible for the diffusion of the &lt;a class="mw-redirect" title="Hindu-Arabic numeral system" href="http://en.wikipedia.org/wiki/Hindu-Arabic_numeral_system"&gt;Indian system of numeration&lt;/a&gt; in the &lt;a title="Middle East" href="http://en.wikipedia.org/wiki/Middle_East"&gt;Middle East&lt;/a&gt; and then &lt;a title="Europe" href="http://en.wikipedia.org/wiki/Europe"&gt;Europe&lt;/a&gt;. Around the &lt;a title="12th century" href="http://en.wikipedia.org/wiki/12th_century"&gt;12th century&lt;/a&gt;, there was translation of this book written into &lt;a title="Latin" href="http://en.wikipedia.org/wiki/Latin"&gt;Latin&lt;/a&gt;: Algoritmi de numero Indorum. These books presented newer concepts to perform a series of steps in order to accomplish a task such as the systematic application of arithmetic to algebra. By derivation from his name, we have the term &lt;a title="Algorithm" href="http://en.wikipedia.org/wiki/Algorithm"&gt;algorithm&lt;/a&gt;.&lt;br /&gt;&lt;a id="Binary_logic" name="Binary_logic"&gt;&lt;/a&gt;&lt;br /&gt;Binary logic&lt;br /&gt;Around the &lt;a title="3rd century BC" href="http://en.wikipedia.org/wiki/3rd_century_BC"&gt;3rd century BC&lt;/a&gt;, Indian mathematician &lt;a title="Pingala" href="http://en.wikipedia.org/wiki/Pingala"&gt;Pingala&lt;/a&gt; discovered the &lt;a title="Binary numeral system" href="http://en.wikipedia.org/wiki/Binary_numeral_system"&gt;binary numeral system&lt;/a&gt;. In this system, still used today to process all modern computers, a sequence of &lt;a title="1 (number)" href="http://en.wikipedia.org/wiki/1_(number)"&gt;ones&lt;/a&gt; and zeros can represent any number.&lt;br /&gt;In &lt;a title="1703" href="http://en.wikipedia.org/wiki/1703"&gt;1703&lt;/a&gt;, &lt;a class="mw-redirect" title="Gottfried Leibnitz" href="http://en.wikipedia.org/wiki/Gottfried_Leibnitz"&gt;Gottfried Leibnitz&lt;/a&gt; developed &lt;a title="Logic" href="http://en.wikipedia.org/wiki/Logic"&gt;logic&lt;/a&gt; in a formal, mathematical sense with his writings on the binary numeral system. In his system, the ones and zeros also represent true and false values or on and off states. But it took more than a century before &lt;a title="George Boole" href="http://en.wikipedia.org/wiki/George_Boole"&gt;George Boole&lt;/a&gt; published his &lt;a title="Boolean algebra (logic)" href="http://en.wikipedia.org/wiki/Boolean_algebra_(logic)"&gt;Boolean algebra&lt;/a&gt; in &lt;a title="1854" href="http://en.wikipedia.org/wiki/1854"&gt;1854&lt;/a&gt; with a complete system that allowed computational processes to be mathematically modeled.&lt;br /&gt;By this time, the first mechanical devices driven by a binary pattern had been invented. The &lt;a class="mw-redirect" title="Industrial revolution" href="http://en.wikipedia.org/wiki/Industrial_revolution"&gt;industrial revolution&lt;/a&gt; had driven forward the mechanization of many tasks, and this included &lt;a title="Weaving" href="http://en.wikipedia.org/wiki/Weaving"&gt;weaving&lt;/a&gt;. &lt;a class="mw-redirect" title="Punch cards" href="http://en.wikipedia.org/wiki/Punch_cards"&gt;Punch cards&lt;/a&gt; controlled &lt;a title="Joseph Marie Jacquard" href="http://en.wikipedia.org/wiki/Joseph_Marie_Jacquard"&gt;Joseph Marie Jacquard&lt;/a&gt;'s loom in &lt;a title="1801" href="http://en.wikipedia.org/wiki/1801"&gt;1801&lt;/a&gt;, where a hole punched in the card indicated a binary one and an unpunched spot indicated a binary zero. Jacquard's loom was far from being a computer, but it did illustrate that machines could be driven by binary systems.&lt;br /&gt;&lt;a id="Birth_of_computer_science" name="Birth_of_computer_science"&gt;&lt;/a&gt;&lt;br /&gt;Birth of computer science&lt;br /&gt;Before the 1920s, computers (sometimes computors) were human clerks that performed computations. They were usually under the lead of a physicist. Many thousands of computers were employed in commerce, government, and research establishments. Most of these computers were women, and they were known to have a degree in calculus. Some performed astronomical calculations for calendars.&lt;br /&gt;After the 1920s, the expression computing machine referred to any machine that performed the work of a human computer, especially those in accordance with effective methods of the &lt;a class="mw-redirect" title="Church-Turing thesis" href="http://en.wikipedia.org/wiki/Church-Turing_thesis"&gt;Church-Turing thesis&lt;/a&gt;. The thesis states that a mathematical method is effective if it could be set out as a list of instructions able to be followed by a human clerk with paper and pencil, for as long as necessary, and without ingenuity or insight.&lt;br /&gt;Machines that computed with continuous values became known as the analog kind. They used machinery that represented continuous numeric quantities, like the angle of a shaft rotation or difference in electrical potential.&lt;br /&gt;Digital machinery, in contrast to analog, were able to render a state of a numeric value and store each individual digit. Digital machinery used difference engines or relays before the invention of faster memory devices.&lt;br /&gt;The phrase computing machine gradually gave away, after the late 1940s, to just computer as the onset of electronic digital machinery became common. These computers were able to perform the calculations that were performed by the previous human clerks.&lt;br /&gt;Since the values stored by digital machines were not bound to physical properties like analog devices, a logical computer, based on digital equipment, was able to do anything that could be described "purely mechanical." &lt;a title="Alan Turing" href="http://en.wikipedia.org/wiki/Alan_Turing"&gt;Alan Turing&lt;/a&gt;, known as the Father of Computer Science, invented such a logical computer known as the &lt;a class="mw-redirect" title="Turing Machine" href="http://en.wikipedia.org/wiki/Turing_Machine"&gt;Turing Machine&lt;/a&gt;, which later evolved into the modern computer. These new computers were also able to perform non-numeric computations, like music.&lt;br /&gt;From the time when computational processes were performed by human clerks, the study of computability began a science by being able to make evident which was not explicit into ordinary sense more immediate.&lt;br /&gt;See also: &lt;a title="Numerical analysis" href="http://en.wikipedia.org/wiki/Numerical_analysis"&gt;Numerical analysis&lt;/a&gt;, &lt;a title="Philosophy of mathematics" href="http://en.wikipedia.org/wiki/Philosophy_of_mathematics"&gt;Philosophy of mathematics&lt;/a&gt;, and &lt;a title="Philosophy of language" href="http://en.wikipedia.org/wiki/Philosophy_of_language"&gt;Philosophy of language&lt;/a&gt;&lt;br /&gt;&lt;a id="Emergence_of_a_discipline" name="Emergence_of_a_discipline"&gt;&lt;/a&gt;&lt;br /&gt;Emergence of a discipline&lt;br /&gt;&lt;a id="The_theoretical_groundwork" name="The_theoretical_groundwork"&gt;&lt;/a&gt;&lt;br /&gt;The theoretical groundwork&lt;br /&gt;The mathematical foundations of modern computer science began to be laid by &lt;a title="Kurt Gödel" href="http://en.wikipedia.org/wiki/Kurt_GÃ¶del"&gt;Kurt Gödel&lt;/a&gt; with his &lt;a title="Gödel's incompleteness theorems" href="http://en.wikipedia.org/wiki/GÃ¶del"&gt;incompleteness theorem&lt;/a&gt; (&lt;a title="1931" href="http://en.wikipedia.org/wiki/1931"&gt;1931&lt;/a&gt;). In this theorem, he showed that there were limits to what could be proved and disproved within a &lt;a title="Formal system" href="http://en.wikipedia.org/wiki/Formal_system"&gt;formal system&lt;/a&gt;. This led to work by Gödel and others to define and describe these formal systems, including concepts such as &lt;a class="mw-redirect" title="Mu-recursive function" href="http://en.wikipedia.org/wiki/Mu-recursive_function"&gt;mu-recursive functions&lt;/a&gt; and &lt;a class="mw-redirect" title="Lambda-definable functions" href="http://en.wikipedia.org/wiki/Lambda-definable_functions"&gt;lambda-definable functions&lt;/a&gt;.&lt;br /&gt;&lt;a title="1936" href="http://en.wikipedia.org/wiki/1936"&gt;1936&lt;/a&gt; was a key year for computer science. Alan Turing and &lt;a title="Alonzo Church" href="http://en.wikipedia.org/wiki/Alonzo_Church"&gt;Alonzo Church&lt;/a&gt; independently, and also together, introduced the formalization of an &lt;a title="Algorithm" href="http://en.wikipedia.org/wiki/Algorithm"&gt;algorithm&lt;/a&gt;, with limits on what can be computed, and a "purely mechanical" model for computing.&lt;br /&gt;These topics are covered by what is now called the &lt;a title="Church–Turing thesis" href="http://en.wikipedia.org/wiki/ChurchâTuring_thesis"&gt;Church–Turing thesis&lt;/a&gt;, a hypothesis about the nature of mechanical calculation devices, such as electronic computers. The thesis claims that any calculation that is possible can be performed by an algorithm running on a computer, provided that sufficient time and storage space are available.&lt;br /&gt;Turing also included with the thesis a description of the &lt;a title="Turing machine" href="http://en.wikipedia.org/wiki/Turing_machine"&gt;Turing machine&lt;/a&gt;. A Turing machine has an infinitely long tape and a read/write head that can move along the tape, changing the values along the way. Clearly such a machine could never be built, but nonetheless, the model can simulate the computation of any algorithm which can be performed on a modern computer.&lt;br /&gt;Turing is so important to computer science that his name is also featured on the &lt;a title="Turing Award" href="http://en.wikipedia.org/wiki/Turing_Award"&gt;Turing Award&lt;/a&gt; and the &lt;a title="Turing test" href="http://en.wikipedia.org/wiki/Turing_test"&gt;Turing test&lt;/a&gt;. He contributed greatly to British code-breaking successes in the &lt;a class="mw-redirect" title="Second World War" href="http://en.wikipedia.org/wiki/Second_World_War"&gt;Second World War&lt;/a&gt;, and continued to design computers and software through the &lt;a title="1940s" href="http://en.wikipedia.org/wiki/1940s"&gt;1940s&lt;/a&gt;, but committed suicide in &lt;a title="1954" href="http://en.wikipedia.org/wiki/1954"&gt;1954&lt;/a&gt;.&lt;br /&gt;At a symposium on large-scale digital machinery in Cambridge, Turing said, "We are trying to build a machine to do all kinds of different things simply by programming rather than by the addition of extra apparatus".&lt;br /&gt;In 1948, the first practical computer that could run stored programs, based on the Turing machine model, had been built - the &lt;a title="Manchester Small-Scale Experimental Machine" href="http://en.wikipedia.org/wiki/Manchester_Small-Scale_Experimental_Machine"&gt;Manchester Baby&lt;/a&gt;.&lt;br /&gt;In 1950, Britain's &lt;a title="National Physical Laboratory, UK" href="http://en.wikipedia.org/wiki/National_Physical_Laboratory,_UK"&gt;National Physical Laboratory&lt;/a&gt; completed &lt;a title="Pilot ACE" href="http://en.wikipedia.org/wiki/Pilot_ACE"&gt;Pilot ACE&lt;/a&gt;, a small scale programmable computer, based on Turing's philosophy.&lt;br /&gt;&lt;a id="Shannon_and_information_theory" name="Shannon_and_information_theory"&gt;&lt;/a&gt;&lt;br /&gt;Shannon and information theory&lt;br /&gt;Up to and during the 1930s, electrical engineers were able to build electronic circuits to solve mathematical and logic problems, but most did so in an ad hoc manner, lacking any theoretical rigor. This changed with &lt;a title="Claude Shannon" href="http://en.wikipedia.org/wiki/Claude_Shannon"&gt;Claude Elwood Shannon&lt;/a&gt;'s publication of his 1937 master's thesis, &lt;a title="A Symbolic Analysis of Relay and Switching Circuits" href="http://en.wikipedia.org/wiki/A_Symbolic_Analysis_of_Relay_and_Switching_Circuits"&gt;A Symbolic Analysis of Relay and Switching Circuits&lt;/a&gt;. While taking an undergraduate philosophy class, Shannon had been exposed to &lt;a title="George Boole" href="http://en.wikipedia.org/wiki/George_Boole"&gt;Boole's&lt;/a&gt; work, and recognized that it could be used to arrange electromechanical relays (then used in telephone routing switches) to solve logic problems. This concept, of utilizing the properties of electrical switches to do logic, is the basic concept that underlies all electronic digital computers, and his thesis became the foundation of practical digital circuit design when it became widely known among the electrical engineering community during and after World War II.&lt;br /&gt;Shannon went on to found the field of &lt;a title="Information theory" href="http://en.wikipedia.org/wiki/Information_theory"&gt;information theory&lt;/a&gt; with his 1948 paper titled &lt;a title="A Mathematical Theory of Communication" href="http://en.wikipedia.org/wiki/A_Mathematical_Theory_of_Communication"&gt;A Mathematical Theory of Communication&lt;/a&gt;, which applied &lt;a title="Probability theory" href="http://en.wikipedia.org/wiki/Probability_theory"&gt;probability theory&lt;/a&gt; to the problem of how to best encode the information a sender wants to transmit. This work is one of the theoretical foundations for many areas of study, including &lt;a title="Data compression" href="http://en.wikipedia.org/wiki/Data_compression"&gt;data compression&lt;/a&gt; and &lt;a title="Cryptography" href="http://en.wikipedia.org/wiki/Cryptography"&gt;cryptography&lt;/a&gt;.&lt;br /&gt;&lt;a id="Wiener_and_Cybernetics" name="Wiener_and_Cybernetics"&gt;&lt;/a&gt;&lt;br /&gt;Wiener and Cybernetics&lt;br /&gt;From experiments with anti-aircraft systems that interpreted radar images to detect enemy planes, &lt;a title="Norbert Wiener" href="http://en.wikipedia.org/wiki/Norbert_Wiener"&gt;Norbert Wiener&lt;/a&gt; coined the term &lt;a title="Cybernetics" href="http://en.wikipedia.org/wiki/Cybernetics"&gt;cybernetics&lt;/a&gt; from the Greek word for "steersman." He published "Cybernetics" in 1948, which influenced &lt;a title="Artificial intelligence" href="http://en.wikipedia.org/wiki/Artificial_intelligence"&gt;artificial intelligence&lt;/a&gt;. Wiener also compared &lt;a title="Computation" href="http://en.wikipedia.org/wiki/Computation"&gt;computation&lt;/a&gt;, computing machinery, &lt;a title="Computer memory" href="http://en.wikipedia.org/wiki/Computer_memory"&gt;memory&lt;/a&gt; devices, and other cognitive similarities with his analysis of brain waves.&lt;br /&gt;&lt;a id="The_first_computer_bug" name="The_first_computer_bug"&gt;&lt;/a&gt;&lt;br /&gt;The first computer bug&lt;br /&gt;Main article: &lt;a title="Software bug" href="http://en.wikipedia.org/wiki/Software_bug"&gt;Software bug&lt;/a&gt;&lt;br /&gt;The first actual computer bug was a moth. It was stuck in between the relays on the Harvard Mark II.&lt;a class="external autonumber" title="http://www.history.navy.mil/photos/images/h96000/h96566kc.htm" href="http://www.history.navy.mil/photos/images/h96000/h96566kc.htm" rel="nofollow"&gt;[1]&lt;/a&gt; While the invention of the term 'bug' is often but erroneously attributed to &lt;a title="Grace Hopper" href="http://en.wikipedia.org/wiki/Grace_Hopper"&gt;Grace Hopper&lt;/a&gt;, a rear admiral in the U.S. Navy, who supposedly logged the "bug" on &lt;a title="September 9" href="http://en.wikipedia.org/wiki/September_9"&gt;September 9&lt;/a&gt;, &lt;a title="1945" href="http://en.wikipedia.org/wiki/1945"&gt;1945&lt;/a&gt;, most other accounts conflict at least with these details. According to these accounts, the actual date was &lt;a title="September 9" href="http://en.wikipedia.org/wiki/September_9"&gt;September 9&lt;/a&gt;, &lt;a title="1947" href="http://en.wikipedia.org/wiki/1947"&gt;1947&lt;/a&gt; when operators filed this 'incident' — along with the insect and the notation "First actual case of bug being found" (see &lt;a title="Software bug" href="http://en.wikipedia.org/wiki/Software_bug"&gt;software bug&lt;/a&gt; for details).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Notes&lt;br /&gt;&lt;a class="external text" title="http://www.cs.uwaterloo.ca/~shallit/Courses/134/history.html" href="http://www.cs.uwaterloo.ca/~shallit/Courses/134/history.html" rel="nofollow"&gt;History of Computer Science&lt;/a&gt;&lt;br /&gt;&lt;a id="References" name="References"&gt;&lt;/a&gt;&lt;br /&gt;[&lt;a title="Edit section: References" href="http://en.wikipedia.org/w/index.php?title=History_of_computer_science&amp;amp;action=edit&amp;amp;section=12"&gt;edit&lt;/a&gt;] References&lt;br /&gt;&lt;a class="external text" title="http://www.cs.uwaterloo.ca/~shallit/Courses/134/history.html" href="http://www.cs.uwaterloo.ca/~shallit/Courses/134/history.html" rel="nofollow"&gt;A Very Brief History of Computer Science&lt;/a&gt;&lt;br /&gt;&lt;a class="external text" title="http://www.computerhistory.org/" href="http://www.computerhistory.org/" rel="nofollow"&gt;Computer History Museum&lt;/a&gt;&lt;br /&gt;&lt;a class="external text" title="http://www.eingang.org/Lecture/" href="http://www.eingang.org/Lecture/" rel="nofollow"&gt;Computers: From the Past to the Present&lt;/a&gt;&lt;br /&gt;&lt;a class="external text" title="http://www.history.navy.mil/photos/images/h96000/h96566kc.htm" href="http://www.history.navy.mil/photos/images/h96000/h96566kc.htm" rel="nofollow"&gt;The First "Computer Bug"&lt;/a&gt; at the Online Library of the Naval Historical Center, retrieved &lt;a title="February 28" href="http://en.wikipedia.org/wiki/February_28"&gt;February 28&lt;/a&gt;, &lt;a title="2006" href="http://en.wikipedia.org/wiki/2006"&gt;2006&lt;/a&gt;&lt;br /&gt;&lt;a class="external text" title="http://www.bitsavers.org/" href="http://www.bitsavers.org/" rel="nofollow"&gt;Bitsavers&lt;/a&gt;, an effort to capture, salvage, and archive historical computer software and manuals from minicomputers and mainframes of the 50s, 60s, 70s, and 80s&lt;br /&gt;&lt;a id="External_links" name="External_links"&gt;&lt;/a&gt;&lt;br /&gt;External links&lt;br /&gt;&lt;a class="external text" title="http://www.cbi.umn.edu/oh/display.phtml?id=" href="http://www.cbi.umn.edu/oh/display.phtml?id=5" rel="nofollow"&gt;Oral history interview with William F. Miller&lt;/a&gt; at &lt;a title="Charles Babbage Institute" href="http://en.wikipedia.org/wiki/Charles_Babbage_Institute"&gt;Charles Babbage Institute&lt;/a&gt;, University of Minnesota, Minneapolis. Miller contrasts the emergence of computer science at Stanford with developments at Harvard and the University of Pennsylvania.&lt;br /&gt;&lt;a class="external text" title="http://www.cbi.umn.edu/oh/display.phtml?id=" href="http://www.cbi.umn.edu/oh/display.phtml?id=274" rel="nofollow"&gt;Oral history interview with Alexandra Forsythe&lt;/a&gt; at &lt;a title="Charles Babbage Institute" href="http://en.wikipedia.org/wiki/Charles_Babbage_Institute"&gt;Charles Babbage Institute&lt;/a&gt;, University of Minnesota, Minneapolis. Forsythe discusses the career of her husband, George Forsythe, who established Stanford University's program in computer science.&lt;br /&gt;&lt;a class="external text" title="http://www.cbi.umn.edu/oh/display.phtml?id=" href="http://www.cbi.umn.edu/oh/display.phtml?id=146" rel="nofollow"&gt;Oral history interview with Allen Newell&lt;/a&gt; at &lt;a title="Charles Babbage Institute" href="http://en.wikipedia.org/wiki/Charles_Babbage_Institute"&gt;Charles Babbage Institute&lt;/a&gt;, University of Minnesota, Minneapolis. Newell discusses his entry into computer science, funding for computer science departments and research, the development of the Computer Science Department at Carnegie Mellon University, including the work of &lt;a title="Alan Perlis" href="http://en.wikipedia.org/wiki/Alan_Perlis"&gt;Alan J. Perlis&lt;/a&gt; and Raj Reddy, and the growth of the computer science and artificial intelligence research communities. Compares computer science programs at Stanford, MIT, and Carnegie Mellon.&lt;br /&gt;&lt;a class="external text" title="http://www.cbi.umn.edu/oh/display.phtml?id=" href="http://www.cbi.umn.edu/oh/display.phtml?id=271" rel="nofollow"&gt;Oral history interview with Louis Fein&lt;/a&gt; at &lt;a title="Charles Babbage Institute" href="http://en.wikipedia.org/wiki/Charles_Babbage_Institute"&gt;Charles Babbage Institute&lt;/a&gt;, University of Minnesota, Minneapolis. Fein discusses establishing computer science as an academic discipline at Stanford Research Institute (SRI) as well as contacts with the University of California—Berkeley, the University of North Carolina, Purdue, International Federation for Information Processing and other institutions.&lt;br /&gt;&lt;a class="external text" title="http://www.cbi.umn.edu/oh/display.phtml?id=" href="http://www.cbi.umn.edu/oh/display.phtml?id=132" rel="nofollow"&gt;Oral history interview with W. Richards Adrion&lt;/a&gt; at &lt;a title="Charles Babbage Institute" href="http://en.wikipedia.org/wiki/Charles_Babbage_Institute"&gt;Charles Babbage Institute&lt;/a&gt;, University of Minnesota, Minneapolis. Adrion gives a brief history of theoretical computer science in the United States and NSF's role in funding that area during the 1970s and 1980s.&lt;br /&gt;&lt;a class="external text" title="http://www.cbi.umn.edu/oh/display.phtml?id=" href="http://www.cbi.umn.edu/oh/display.phtml?id=153" rel="nofollow"&gt;Oral history interview with Bernard A. Galler&lt;/a&gt; at &lt;a title="Charles Babbage Institute" href="http://en.wikipedia.org/wiki/Charles_Babbage_Institute"&gt;Charles Babbage Institute&lt;/a&gt;, University of Minnesota, Minneapolis. Galler describes the development of computer science at the University of Michigan from the 1950s through the 1980s and discusses his own work in computer science.&lt;br /&gt;&lt;a class="external text" title="http://plato.stanford.edu/entries/computing-history" href="http://plato.stanford.edu/entries/computing-history" rel="nofollow"&gt;The Modern History of Computing&lt;/a&gt; entry in the &lt;a title="Stanford Encyclopedia of Philosophy" href="http://en.wikipedia.org/wiki/Stanford_Encyclopedia_of_Philosophy"&gt;Stanford Encyclopedia of Philosophy&lt;/a&gt; by B. Jack Copeland &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-1592319008086652080?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/1592319008086652080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/history-of-computer-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/1592319008086652080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/1592319008086652080'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/08/history-of-computer-software.html' title='History of computer software'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5UJc09sb8uY/SngvuWySWeI/AAAAAAAAAB4/H_l9Tj5-l_A/s72-c/stock-photo-woman-on-couch-using-laptop-33894244.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1603173738482823676.post-7965316145289515635</id><published>2009-07-24T03:08:00.000-07:00</published><updated>2009-08-02T06:59:35.795-07:00</updated><title type='text'>Computer software</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#cc0000;"&gt;Computer software&lt;/span&gt;&lt;/strong&gt;, or just software is a general term used to describe the role that &lt;/span&gt;&lt;a title="Computer program" href="http://en.wikipedia.org/wiki/Computer_program"&gt;&lt;span style="font-family:arial;"&gt;computer programs&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;a title="Algorithm" href="http://en.wikipedia.org/wiki/Algorithm"&gt;&lt;span style="font-family:arial;"&gt;procedures&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; and &lt;/span&gt;&lt;a title="Software documentation" href="http://en.wikipedia.org/wiki/Software_documentation"&gt;&lt;span style="font-family:arial;"&gt;documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; play in a computer system. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The term includes:&lt;br /&gt;Application software such as &lt;/span&gt;&lt;a title="Word processor" href="http://en.wikipedia.org/wiki/Word_processor"&gt;&lt;span style="font-family:arial;"&gt;word processors&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; which perform productive tasks for users.&lt;br /&gt;&lt;/span&gt;&lt;a title="Firmware" href="http://en.wikipedia.org/wiki/Firmware"&gt;&lt;span style="font-family:arial;"&gt;Firmware&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; which is software programmed resident to electrically programmable memory devices on board mainboards or other types of integrated hardware carriers.&lt;br /&gt;&lt;/span&gt;&lt;a title="Middleware" href="http://en.wikipedia.org/wiki/Middleware"&gt;&lt;span style="font-family:arial;"&gt;Middleware&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; which controls and co-ordinates &lt;/span&gt;&lt;a title="Distributed computing" href="http://en.wikipedia.org/wiki/Distributed_computing"&gt;&lt;span style="font-family:arial;"&gt;distributed systems&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;System software such as &lt;/span&gt;&lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;&lt;span style="font-family:arial;"&gt;operating systems&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, which interface with hardware to provide the necessary services for application software.&lt;br /&gt;&lt;/span&gt;&lt;a title="Software testing" href="http://en.wikipedia.org/wiki/Software_testing"&gt;&lt;span style="font-family:arial;"&gt;Software testing&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; is a domain independent of development and programming. It consists of various methods to test and declare a software product fit before it can be launched for use by either an individual or a group. Many tests on functionality, performance and appearance are conducted by modern testers with various tools such as &lt;/span&gt;&lt;a class="mw-redirect" title="QTP" href="http://en.wikipedia.org/wiki/QTP"&gt;&lt;span style="font-family:arial;"&gt;QTP&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, Load runner and Black box testing, to edit a checklist of requirements against the developed code. &lt;/span&gt;&lt;a class="mw-redirect" title="ISTQB" href="http://en.wikipedia.org/wiki/ISTQB"&gt;&lt;span style="font-family:arial;"&gt;ISTQB&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; is a certification that is in demand for engineers who want to pursue a career in testing. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="Testware" href="http://en.wikipedia.org/wiki/Testware"&gt;&lt;span style="font-family:arial;"&gt;Testware&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; which is an &lt;/span&gt;&lt;a title="Umbrella term" href="http://en.wikipedia.org/wiki/Umbrella_term"&gt;&lt;span style="font-family:arial;"&gt;umbrella term&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; or container term for all &lt;/span&gt;&lt;a title="Utility software" href="http://en.wikipedia.org/wiki/Utility_software"&gt;&lt;span style="font-family:arial;"&gt;utilities&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; and application software that serve in combination for testing a &lt;/span&gt;&lt;a title="Software package (programming)" href="http://en.wikipedia.org/wiki/Software_package_(programming)"&gt;&lt;span style="font-family:arial;"&gt;software package&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; but not necessarily may optionally contribute to &lt;/span&gt;&lt;a title="Business operations" href="http://en.wikipedia.org/wiki/Business_operations"&gt;&lt;span style="font-family:arial;"&gt;operational&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; purposes. As such, testware is not a standing configuration but merely a working environment for application software or &lt;/span&gt;&lt;a title="Subset" href="http://en.wikipedia.org/wiki/Subset"&gt;&lt;span style="font-family:arial;"&gt;subsets&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; thereof.&lt;br /&gt;Software includes things such as &lt;/span&gt;&lt;a title="Website" href="http://en.wikipedia.org/wiki/Website"&gt;&lt;span style="font-family:arial;"&gt;websites&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;a title="Computer program" href="http://en.wikipedia.org/wiki/Computer_program"&gt;&lt;span style="font-family:arial;"&gt;programs&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; or &lt;/span&gt;&lt;a title="Video game" href="http://en.wikipedia.org/wiki/Video_game"&gt;&lt;span style="font-family:arial;"&gt;video games&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, that are coded by &lt;/span&gt;&lt;a title="Programming language" href="http://en.wikipedia.org/wiki/Programming_language"&gt;&lt;span style="font-family:arial;"&gt;programming languages&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; like &lt;/span&gt;&lt;a title="C (programming language)" href="http://en.wikipedia.org/wiki/C_(programming_language)"&gt;&lt;span style="font-family:arial;"&gt;C&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; or &lt;/span&gt;&lt;a title="C++" href="http://en.wikipedia.org/wiki/C++"&gt;&lt;span style="font-family:arial;"&gt;C++&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;"Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;History of Computer Software&lt;/span&gt;&lt;br /&gt;History of computer software and computer languages. It was not until after 1981 that software programs were made eligible for patents by the Supreme Court.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/od/computersoftware/a/html.htm"&gt;The History of HTML &lt;/a&gt;Tim Berners-Lee invented the World Wide Web and HTML or hypertext markup language.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/od/sstartinventions/a/software.htm"&gt;Software Programming - The History of Software Programming&lt;/a&gt;General background information on computer languages including basic - pagemaker - java - fortran - ms-dos - visicalc - windows - computer graphics and more.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/weekly/aa080499.htm"&gt;The Unusual History of Microsoft Windows&lt;/a&gt;In 1983, the Microsoft Corporation formally announced Microsoft Windows software for IBM computers and they almost named it Interface Manager,&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/od/fstartinventions/a/Fortran.htm"&gt;FORTRAN The Early “Turning Point” &lt;/a&gt;Chapter Excerpt from "Go To: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, &amp;amp; Iconoclasts" by Steve Lohr&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/od/tstartinventions/a/trillian.htm"&gt;Universal Instant Messenger Trillian&lt;/a&gt;The history of Trillian a universal instant messenger software.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/blcomputer_videogames.htm"&gt;Computer and Video Games &lt;/a&gt;In 1952, A.S. Douglas wrote his PhD degree at the University of Cambridge on Human-Computer interraction. Douglas created the first graphical computer game - a version of Tic-Tac-Toe.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/od/lstartinventors/p/Ada_Lovelace.htm"&gt;Ada Lovelace&lt;/a&gt;Ada Byron Lovelace wrote a scientific paper in 1843 that anticipated the development of computer software artificial intelligence and computer music&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/od/hstartinventors/a/Grace_Hopper.htm"&gt;Remembering Grace Murray Hopper&lt;/a&gt;Besides being "the" pioneer computer programmer, the co-inventor of COBOL, the grand lady of software, Amazing Grace, and Grandma COBOL, Grace Murray Hopper will be remembered for one of her now famous sayings, which is "It's easier to ask forgivenes&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/blalduspagemaker.htm"&gt;Aldus Pagemaker&lt;/a&gt;The first desktop publishing program was created by Paul Brainard and a company called Aldus.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/bl_ascii.htm"&gt;ASCII&lt;/a&gt;ASCII is an acronym for the American Standard Code for Information Interchange.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/blbasic.htm"&gt;BASIC&lt;/a&gt;BASIC (standing for Beginner's All Purpose Symbolic Instruction Code) was written (invented) in 1963, at Dartmouth College, by mathematicians John George Kemeny and Tom Kurtzas.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/blcomputerchess.htm"&gt;The History of Computer Chess&lt;/a&gt;Dr. Dietrich Prinz wrote the original chess playing program.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/blhtml.htm"&gt;The History of HTML&lt;/a&gt;Tim Berners-Lee was the primary author of html, assisted by his colleagues at CERN, an international scientific organization based in Geneva, Switzerland.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/bljava.htm"&gt;Java&lt;/a&gt;Java is a programming language and environment invented by James Gosling in 1994.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/bl_javascript.htm"&gt;JavaScript&lt;/a&gt;Introduced in 1995, JavaScript an object oriented web scripting language has become an international standard allowing web developers the ability to write Dynamic HTML that works on multiple browsers.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/inventors/bl_Lingo_programming.htm"&gt;Lingo Programming&lt;/a&gt;John Thompson invented lingo programming used in Macromedia Director and Shockwave.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/weekly/aa033099.htm"&gt;The History of the MS-DOS Operating Systems&lt;/a&gt;The "Microsoft Disk Operating System" or MS-DOS was based on QDOS, the "Quick and Dirty Operating System" written by Tim Paterson of Seattle Computer Products,&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/weekly/aa010199.htm"&gt;The First Spreadsheet&lt;/a&gt;"Any product that pays for itself in two weeks is a surefire winner." - Dan Bricklin on VisiCalc&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/weekly/aa030199.htm"&gt;The First Word Processor&lt;/a&gt;Released in 1979 by Micropro International Inc., WordStar was the first commercially successful word processing software program produced for microcomputers and the best selling software program of the early eighties.&lt;br /&gt;&lt;a class="al" onclick="zT(this,'18/1R4/Wa')" href="http://inventors.about.com/library/weekly/aa111097.htm"&gt;Philip Emeagwali and Supercomputers&lt;/a&gt;Interview with Philip Emeagwali about writing softwar for supercomputers.                             &lt;/div&gt;&lt;div align="left"&gt;     &lt;span style="font-family:arial;font-size:130%;"&gt; Overview&lt;/span&gt;&lt;br /&gt;Computer software is often regarded as anything but &lt;a title="Hardware" href="http://en.wikipedia.org/wiki/Hardware"&gt;hardware&lt;/a&gt;, meaning that the "hard" are the parts that are &lt;a class="mw-redirect" title="Tangible" href="http://en.wikipedia.org/wiki/Tangible"&gt;tangible&lt;/a&gt; while the "soft" part is the intangible objects inside the computer. Software encompasses an extremely wide array of products and technologies developed using different techniques like &lt;a class="mw-redirect" title="Programming languages" href="http://en.wikipedia.org/wiki/Programming_languages"&gt;programming languages&lt;/a&gt;, &lt;a class="mw-redirect" title="Scripting languages" href="http://en.wikipedia.org/wiki/Scripting_languages"&gt;scripting languages&lt;/a&gt; or even &lt;a title="Microcode" href="http://en.wikipedia.org/wiki/Microcode"&gt;microcode&lt;/a&gt; or a &lt;a title="Field-programmable gate array" href="http://en.wikipedia.org/wiki/Field-programmable_gate_array"&gt;FPGA&lt;/a&gt; state. The types of software include &lt;a class="mw-redirect" title="Web pages" href="http://en.wikipedia.org/wiki/Web_pages"&gt;web pages&lt;/a&gt; developed by technologies like &lt;a title="HTML" href="http://en.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt;, &lt;a title="PHP" href="http://en.wikipedia.org/wiki/PHP"&gt;PHP&lt;/a&gt;, &lt;a title="Perl" href="http://en.wikipedia.org/wiki/Perl"&gt;Perl&lt;/a&gt;, &lt;a title="JavaServer Pages" href="http://en.wikipedia.org/wiki/JavaServer_Pages"&gt;JSP&lt;/a&gt;, &lt;a title="ASP.NET" href="http://en.wikipedia.org/wiki/ASP.NET"&gt;ASP.NET&lt;/a&gt;, &lt;a title="XML" href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;, and &lt;a class="mw-redirect" title="Desktop application" href="http://en.wikipedia.org/wiki/Desktop_application"&gt;desktop applications&lt;/a&gt; like &lt;a class="mw-redirect" title="OpenOffice" href="http://en.wikipedia.org/wiki/OpenOffice"&gt;OpenOffice&lt;/a&gt;, &lt;a title="Microsoft Word" href="http://en.wikipedia.org/wiki/Microsoft_Word"&gt;Microsoft Word&lt;/a&gt; developed by technologies like &lt;a title="C (programming language)" href="http://en.wikipedia.org/wiki/C_(programming_language)"&gt;C&lt;/a&gt;, &lt;a title="C++" href="http://en.wikipedia.org/wiki/C++"&gt;C++&lt;/a&gt;, &lt;a title="Java (programming language)" href="http://en.wikipedia.org/wiki/Java_(programming_language)"&gt;Java&lt;/a&gt;,or &lt;a title="C Sharp (programming language)" href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)"&gt;C#&lt;/a&gt;. Software usually runs on an underlying software &lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating systems&lt;/a&gt; such as the &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; or &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt;. Software also includes &lt;a title="Video game" href="http://en.wikipedia.org/wiki/Video_game"&gt;video games&lt;/a&gt; and the &lt;a title="Logic" href="http://en.wikipedia.org/wiki/Logic"&gt;logic&lt;/a&gt; systems of modern consumer devices such as &lt;a title="Automobile" href="http://en.wikipedia.org/wiki/Automobile"&gt;automobiles&lt;/a&gt;, &lt;a title="Television" href="http://en.wikipedia.org/wiki/Television"&gt;televisions&lt;/a&gt;, and &lt;a class="mw-redirect" title="Toasters" href="http://en.wikipedia.org/wiki/Toasters"&gt;toasters&lt;/a&gt;.&lt;br /&gt;&lt;a id="Relationship_to_computer_hardware" name="Relationship_to_computer_hardware"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Relationship to computer hardware&lt;/span&gt;&lt;br /&gt;&lt;a title="Computer" href="http://en.wikipedia.org/wiki/Computer"&gt;Computer&lt;/a&gt; software is so called to distinguish it from &lt;a class="mw-redirect" title="Computer hardware" href="http://en.wikipedia.org/wiki/Computer_hardware"&gt;computer hardware&lt;/a&gt;, which encompasses the physical interconnections and devices required to store and execute (or run) the software. At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence. It is usually written in &lt;a title="High-level programming language" href="http://en.wikipedia.org/wiki/High-level_programming_language"&gt;high-level programming languages&lt;/a&gt; that are easier and more efficient for humans to use (closer to &lt;a title="Natural language" href="http://en.wikipedia.org/wiki/Natural_language"&gt;natural language&lt;/a&gt;) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an &lt;a title="Assembly language" href="http://en.wikipedia.org/wiki/Assembly_language"&gt;assembly language&lt;/a&gt;, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an &lt;a title="Assembly language" href="http://en.wikipedia.org/wiki/Assembly_language#Assembler"&gt;assembler&lt;/a&gt;.&lt;br /&gt;The term "software" was first used in this sense by &lt;a class="mw-redirect" title="John W. Tukey" href="http://en.wikipedia.org/wiki/John_W._Tukey"&gt;John W. Tukey&lt;/a&gt; in 1958. In &lt;a title="Computer science" href="http://en.wikipedia.org/wiki/Computer_science"&gt;computer science&lt;/a&gt; and &lt;a title="Software engineering" href="http://en.wikipedia.org/wiki/Software_engineering"&gt;software engineering&lt;/a&gt;, computer software is all computer programs. The theory that is the basis for most modern software was first proposed by &lt;a title="Alan Turing" href="http://en.wikipedia.org/wiki/Alan_Turing"&gt;Alan Turing&lt;/a&gt; in his 1935 essay Computable numbers with an application to the Entscheidungsproblem.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Types of software&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:Operating_system_placement.svg"&gt;&lt;/a&gt;A layer structure showing where &lt;a class="mw-redirect" title="Operating System" href="http://en.wikipedia.org/wiki/Operating_System"&gt;Operating System&lt;/a&gt; is located on generally used software systems on &lt;a title="Desktop computer" href="http://en.wikipedia.org/wiki/Desktop_computer"&gt;desktops&lt;/a&gt;&lt;br /&gt;Practical &lt;a class="mw-redirect" title="Computer system" href="http://en.wikipedia.org/wiki/Computer_system"&gt;computer systems&lt;/a&gt; divide &lt;a title="Software system" href="http://en.wikipedia.org/wiki/Software_system"&gt;software systems&lt;/a&gt; into three major classes: &lt;a title="System software" href="http://en.wikipedia.org/wiki/System_software"&gt;system software&lt;/a&gt;, &lt;a class="mw-redirect" title="Programming software" href="http://en.wikipedia.org/wiki/Programming_software"&gt;programming software&lt;/a&gt; and &lt;a title="Application software" href="http://en.wikipedia.org/wiki/Application_software"&gt;application software&lt;/a&gt;, although the distinction is arbitrary, and often blurred.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;System software&lt;br /&gt;&lt;a title="System software" href="http://en.wikipedia.org/wiki/System_software"&gt;System software&lt;/a&gt; helps run the computer hardware and computer system. It includes combination of the following:&lt;br /&gt;&lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device drivers&lt;/a&gt;&lt;br /&gt;&lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating systems&lt;/a&gt;&lt;br /&gt;&lt;a title="Server (computing)" href="http://en.wikipedia.org/wiki/Server_(computing)"&gt;servers&lt;/a&gt;&lt;br /&gt;&lt;a class="mw-redirect" title="Software utility" href="http://en.wikipedia.org/wiki/Software_utility"&gt;utilities&lt;/a&gt;&lt;br /&gt;&lt;a title="Windowing system" href="http://en.wikipedia.org/wiki/Windowing_system"&gt;windowing systems&lt;/a&gt;&lt;br /&gt;The purpose of systems software is to unburden the applications programmer from the details of the particular computer complex being used, including such accessory devices as communications, printers, readers, displays and keyboards, and also to partition the computer's resources such as memory and processor time in a safe and stable manner.&lt;br /&gt;&lt;a id="Programming_software" name="Programming_software"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Programming software&lt;br /&gt;&lt;/span&gt;&lt;a class="mw-redirect" title="Programming software" href="http://en.wikipedia.org/wiki/Programming_software"&gt;Programming software&lt;/a&gt; usually provides tools to assist a programmer in writing &lt;a title="Computer program" href="http://en.wikipedia.org/wiki/Computer_program"&gt;computer programs&lt;/a&gt;, and software using different programming languages in a more convenient way. The tools include:&lt;br /&gt;&lt;a title="Compiler" href="http://en.wikipedia.org/wiki/Compiler"&gt;compilers&lt;/a&gt;&lt;br /&gt;&lt;a title="Debugger" href="http://en.wikipedia.org/wiki/Debugger"&gt;debuggers&lt;/a&gt;&lt;br /&gt;&lt;a title="Interpreter (computing)" href="http://en.wikipedia.org/wiki/Interpreter_(computing)"&gt;interpreters&lt;/a&gt;&lt;br /&gt;&lt;a title="Linker" href="http://en.wikipedia.org/wiki/Linker"&gt;linkers&lt;/a&gt;&lt;br /&gt;&lt;a title="Text editor" href="http://en.wikipedia.org/wiki/Text_editor"&gt;text editors&lt;/a&gt;&lt;br /&gt;An &lt;a title="Integrated development environment" href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;Integrated development environment&lt;/a&gt; (IDE) is a single application that attempts to manage all these functions.&lt;br /&gt;&lt;br /&gt;&lt;a id="Architecture" name="Architecture"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Architecture&lt;br /&gt;&lt;/span&gt;&lt;a title="Software architecture" href="http://en.wikipedia.org/wiki/Software_architecture"&gt;Software architecture&lt;/a&gt;&lt;br /&gt;Users often see things differently than programmers. People who use modern general purpose computers (as opposed to &lt;a title="Embedded system" href="http://en.wikipedia.org/wiki/Embedded_system"&gt;embedded systems&lt;/a&gt;, &lt;a title="Analog computer" href="http://en.wikipedia.org/wiki/Analog_computer"&gt;analog computers&lt;/a&gt; and &lt;a title="Supercomputer" href="http://en.wikipedia.org/wiki/Supercomputer"&gt;supercomputers&lt;/a&gt;) usually see three layers of software performing a variety of tasks: platform, application, and user software.&lt;br /&gt;Platform software: &lt;a class="mw-redirect" title="Platform (computing)" href="http://en.wikipedia.org/wiki/Platform_(computing)"&gt;Platform&lt;/a&gt; includes the &lt;a title="Firmware" href="http://en.wikipedia.org/wiki/Firmware"&gt;firmware&lt;/a&gt;, &lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device drivers&lt;/a&gt;, an &lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating system&lt;/a&gt;, and typically a &lt;a title="Graphical user interface" href="http://en.wikipedia.org/wiki/Graphical_user_interface"&gt;graphical user interface&lt;/a&gt; which, in total, allow a user to interact with the computer and its &lt;a title="Peripheral" href="http://en.wikipedia.org/wiki/Peripheral"&gt;peripherals&lt;/a&gt; (associated equipment). Platform software often comes bundled with the computer. On a &lt;a title="Personal computer" href="http://en.wikipedia.org/wiki/Personal_computer"&gt;PC&lt;/a&gt; you will usually have the ability to change the platform software.&lt;br /&gt;Application software: &lt;a title="Application software" href="http://en.wikipedia.org/wiki/Application_software"&gt;Application software&lt;/a&gt; or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.&lt;br /&gt;User-written software: &lt;a title="End-user development" href="http://en.wikipedia.org/wiki/End-user_development"&gt;End-user development&lt;/a&gt; tailors systems to meet users' specific needs. User software include spreadsheet templates, &lt;a title="Word processor" href="http://en.wikipedia.org/wiki/Word_processor"&gt;word processor&lt;/a&gt; &lt;a title="Macro" href="http://en.wikipedia.org/wiki/Macro"&gt;macros&lt;/a&gt;, scientific simulations, and &lt;a title="Scripting language" href="http://en.wikipedia.org/wiki/Scripting_language"&gt;scripts&lt;/a&gt; for graphics and animations. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:130%;"&gt;Documentation&lt;/span&gt;&lt;br /&gt;Main article: &lt;a title="Software documentation" href="http://en.wikipedia.org/wiki/Software_documentation"&gt;Software documentation&lt;/a&gt;&lt;br /&gt;Most software has &lt;a title="Software documentation" href="http://en.wikipedia.org/wiki/Software_documentation"&gt;software documentation&lt;/a&gt; so that the &lt;a class="mw-redirect" title="End user" href="http://en.wikipedia.org/wiki/End_user"&gt;end user&lt;/a&gt; can understand the program, what it does, and how to use it. Without a clear documentation, software can be hard to use--especially if it is a very specialized and relatively complex software like the &lt;a class="mw-redirect" title="Photoshop" href="http://en.wikipedia.org/wiki/Photoshop"&gt;Photoshop&lt;/a&gt; or &lt;a title="AutoCAD" href="http://en.wikipedia.org/wiki/AutoCAD"&gt;AutoCAD&lt;/a&gt;.&lt;br /&gt;Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Library &lt;/span&gt;&lt;br /&gt;Main article: &lt;a class="mw-redirect" title="Software library" href="http://en.wikipedia.org/wiki/Software_library"&gt;Software library&lt;/a&gt;&lt;br /&gt;An executable is almost always not sufficiently complete for direct execution. &lt;a class="mw-redirect" title="Software library" href="http://en.wikipedia.org/wiki/Software_library"&gt;Software libraries&lt;/a&gt; include collections of &lt;a class="mw-redirect" title="Functions" href="http://en.wikipedia.org/wiki/Functions"&gt;functions&lt;/a&gt; and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.&lt;br /&gt;&lt;a id="Standard" name="Standard"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Standard&lt;/span&gt;&lt;br /&gt;Main article: &lt;a class="mw-redirect" title="Software standard" href="http://en.wikipedia.org/wiki/Software_standard"&gt;Software standard&lt;/a&gt;&lt;br /&gt;Since software can be designed using many different &lt;a class="mw-redirect" title="Programming languages" href="http://en.wikipedia.org/wiki/Programming_languages"&gt;programming languages&lt;/a&gt; and in many different &lt;a class="mw-redirect" title="Operating systems" href="http://en.wikipedia.org/wiki/Operating_systems"&gt;operating systems&lt;/a&gt; and &lt;a title="Operating environment" href="http://en.wikipedia.org/wiki/Operating_environment"&gt;operating environments&lt;/a&gt;, &lt;a class="mw-redirect" title="Software standard" href="http://en.wikipedia.org/wiki/Software_standard"&gt;software standard&lt;/a&gt; is needed so that different software can understand and exchange information between each other. For instance, an &lt;a class="mw-redirect" title="Email" href="http://en.wikipedia.org/wiki/Email"&gt;email&lt;/a&gt; sent from a &lt;a title="Microsoft Outlook" href="http://en.wikipedia.org/wiki/Microsoft_Outlook"&gt;Microsoft Outlook&lt;/a&gt; should be readable from &lt;a title="Yahoo! Mail" href="http://en.wikipedia.org/wiki/Yahoo!_Mail"&gt;Yahoo! Mail&lt;/a&gt; and vice versa.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Execution&lt;br /&gt;Main article: &lt;a title="Execution (computing)" href="http://en.wikipedia.org/wiki/Execution_(computing)"&gt;Execution (computing)&lt;/a&gt;&lt;br /&gt;Computer software has to be "loaded" into the &lt;a class="mw-redirect" title="Computer storage" href="http://en.wikipedia.org/wiki/Computer_storage"&gt;computer's storage&lt;/a&gt; (such as a [hard drive], memory, or &lt;a class="mw-redirect" title="RAM" href="http://en.wikipedia.org/wiki/RAM"&gt;RAM&lt;/a&gt;). Once the software has loaded, the computer is able to execute the software. This involves passing &lt;a title="Instruction (computer science)" href="http://en.wikipedia.org/wiki/Instruction_(computer_science)"&gt;instructions&lt;/a&gt; from the application software, through the system software, to the &lt;a title="Hardware" href="http://en.wikipedia.org/wiki/Hardware"&gt;hardware&lt;/a&gt; which ultimately receives the instruction as &lt;a class="mw-redirect" title="Machine language" href="http://en.wikipedia.org/wiki/Machine_language"&gt;machine code&lt;/a&gt;. Each instruction causes the computer to carry out an operation – moving &lt;a title="Data (computing)" href="http://en.wikipedia.org/wiki/Data_(computing)"&gt;data&lt;/a&gt;, carrying out a &lt;a title="Computation" href="http://en.wikipedia.org/wiki/Computation"&gt;computation&lt;/a&gt;, or altering the &lt;a title="Control flow" href="http://en.wikipedia.org/wiki/Control_flow"&gt;control flow&lt;/a&gt; of instructions.&lt;br /&gt;Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.&lt;br /&gt;&lt;a id="Quality_and_reliability" name="Quality_and_reliability"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Quality and reliability&lt;/span&gt;&lt;br /&gt;Main articles: &lt;a title="Software quality" href="http://en.wikipedia.org/wiki/Software_quality"&gt;Software quality&lt;/a&gt;, &lt;a title="Software testing" href="http://en.wikipedia.org/wiki/Software_testing"&gt;Software testing&lt;/a&gt;, and &lt;a class="mw-redirect" title="Software reliability" href="http://en.wikipedia.org/wiki/Software_reliability"&gt;Software reliability&lt;/a&gt;&lt;br /&gt;Software quality is very important, especially for commercial and system software like &lt;a title="Microsoft Office" href="http://en.wikipedia.org/wiki/Microsoft_Office"&gt;Microsoft Office&lt;/a&gt;, &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; and &lt;a title="Linux" href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "&lt;a title="Software bug" href="http://en.wikipedia.org/wiki/Software_bug"&gt;bugs&lt;/a&gt;." Many bugs are discovered and eliminated (debugged) through &lt;a title="Software testing" href="http://en.wikipedia.org/wiki/Software_testing"&gt;software testing&lt;/a&gt;. However, software testing rarely – if ever – eliminates every bug; some programmers say that "every program has at least one more bug" (Lubarsky's Law). All major software companies, such as Microsoft, Novell and &lt;a title="Sun Microsystems" href="http://en.wikipedia.org/wiki/Sun_Microsystems"&gt;Sun Microsystems&lt;/a&gt;, have their own software testing departments with the specific goal of just testing. Software can be tested through &lt;a title="Unit testing" href="http://en.wikipedia.org/wiki/Unit_testing"&gt;unit testing&lt;/a&gt;, &lt;a title="Regression testing" href="http://en.wikipedia.org/wiki/Regression_testing"&gt;regression testing&lt;/a&gt; and other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, &lt;a title="NASA" href="http://en.wikipedia.org/wiki/NASA"&gt;NASA&lt;/a&gt; has extremely rigorous software testing procedures for its &lt;a title="Space Shuttle" href="http://en.wikipedia.org/wiki/Space_Shuttle"&gt;Space Shuttle&lt;/a&gt; and other programs because faulty software can crash the whole program and make the vehicle not functional, at great expense.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;License&lt;br /&gt;Main article: &lt;a title="Software license" href="http://en.wikipedia.org/wiki/Software_license"&gt;Software license&lt;/a&gt;&lt;br /&gt;The software's &lt;a title="Software license" href="http://en.wikipedia.org/wiki/Software_license"&gt;license&lt;/a&gt; gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a &lt;a class="mw-redirect" title="Free software license" href="http://en.wikipedia.org/wiki/Free_software_license"&gt;free software license&lt;/a&gt;, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of &lt;a title="Freeware" href="http://en.wikipedia.org/wiki/Freeware"&gt;freeware&lt;/a&gt; or &lt;a title="Shareware" href="http://en.wikipedia.org/wiki/Shareware"&gt;shareware&lt;/a&gt;. See also &lt;a class="mw-redirect" title="License Management" href="http://en.wikipedia.org/wiki/License_Management"&gt;License Management&lt;/a&gt;.&lt;br /&gt;&lt;a id="Patents" name="Patents"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Patents&lt;br /&gt;&lt;/span&gt;Main articles: &lt;a title="Software patent" href="http://en.wikipedia.org/wiki/Software_patent"&gt;Software patent&lt;/a&gt; and &lt;a title="Software patent debate" href="http://en.wikipedia.org/wiki/Software_patent_debate"&gt;Software patent debate&lt;/a&gt;&lt;br /&gt;Software can be patented; however, &lt;a title="Software patent" href="http://en.wikipedia.org/wiki/Software_patent"&gt;software patents&lt;/a&gt; can be controversial in the software industry with many people holding different views about it. The controversy over software patents is that a specific &lt;a title="Algorithm" href="http://en.wikipedia.org/wiki/Algorithm"&gt;algorithm&lt;/a&gt; or technique that the software has cannot be duplicated by others and is considered an &lt;a title="Intellectual property" href="http://en.wikipedia.org/wiki/Intellectual_property"&gt;intellectual property&lt;/a&gt; and &lt;a title="Copyright infringement" href="http://en.wikipedia.org/wiki/Copyright_infringement"&gt;copyright infringement&lt;/a&gt; depending on the severity. Some people believe that software patent hinder &lt;a title="Software development" href="http://en.wikipedia.org/wiki/Software_development"&gt;software development&lt;/a&gt;, while others argue that software patents provide an important incentive to spur software innovation.&lt;br /&gt;&lt;a id="Design_and_implementation" name="Design_and_implementation"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Design and implementation&lt;/span&gt;&lt;br /&gt;Main articles: &lt;a title="Software development" href="http://en.wikipedia.org/wiki/Software_development"&gt;Software development&lt;/a&gt;, &lt;a title="Computer programming" href="http://en.wikipedia.org/wiki/Computer_programming"&gt;Computer programming&lt;/a&gt;, and &lt;a title="Software engineering" href="http://en.wikipedia.org/wiki/Software_engineering"&gt;Software engineering&lt;/a&gt;&lt;br /&gt;Design and implementation of software varies depending on the complexity of the software. For instance, design and creation of &lt;a title="Microsoft Word" href="http://en.wikipedia.org/wiki/Microsoft_Word"&gt;Microsoft Word&lt;/a&gt; software will take much longer time than designing and developing &lt;a class="mw-redirect" title="Microsoft Notepad" href="http://en.wikipedia.org/wiki/Microsoft_Notepad"&gt;Microsoft Notepad&lt;/a&gt; because of the difference in &lt;a class="mw-redirect" title="Functionality" href="http://en.wikipedia.org/wiki/Functionality"&gt;functionalities&lt;/a&gt; in each one.&lt;br /&gt;Software is usually designed and created (coded/written/programmed) in &lt;a title="Integrated development environment" href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;integrated development environments&lt;/a&gt; (IDE) like &lt;a title="Emacs" href="http://en.wikipedia.org/wiki/Emacs"&gt;emacs&lt;/a&gt;, &lt;a class="mw-redirect" title="Xemacs" href="http://en.wikipedia.org/wiki/Xemacs"&gt;xemacs&lt;/a&gt;, &lt;a title="Microsoft Visual Studio" href="http://en.wikipedia.org/wiki/Microsoft_Visual_Studio"&gt;Microsoft Visual Studio&lt;/a&gt; and &lt;a title="Eclipse (software)" href="http://en.wikipedia.org/wiki/Eclipse_(software)"&gt;Eclipse&lt;/a&gt; that can simplify the process and &lt;a title="Compiler" href="http://en.wikipedia.org/wiki/Compiler"&gt;compile&lt;/a&gt; the program. As noted in different section, software is usually created on top of existing software and the &lt;a title="Application programming interface" href="http://en.wikipedia.org/wiki/Application_programming_interface"&gt;application programming interface&lt;/a&gt; (API) that the underlying software provides like &lt;a title="GTK+" href="http://en.wikipedia.org/wiki/GTK+"&gt;GTK+&lt;/a&gt;, JavaBeans or &lt;a title="Swing (Java)" href="http://en.wikipedia.org/wiki/Swing_(Java)"&gt;Swing&lt;/a&gt;. Libraries (APIs) are categorized for different purposes. For instance, &lt;a class="mw-redirect" title="JavaBeans" href="http://en.wikipedia.org/wiki/JavaBeans"&gt;JavaBeans&lt;/a&gt; library is used for designing &lt;a class="mw-redirect" title="Enterprise application" href="http://en.wikipedia.org/wiki/Enterprise_application"&gt;enterprise applications&lt;/a&gt;, &lt;a title="Windows Forms" href="http://en.wikipedia.org/wiki/Windows_Forms"&gt;Windows Forms&lt;/a&gt; library is used for designing graphical user interface (GUI) applications like &lt;a title="Microsoft Word" href="http://en.wikipedia.org/wiki/Microsoft_Word"&gt;Microsoft Word&lt;/a&gt;, and &lt;a title="Windows Communication Foundation" href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation"&gt;Windows Communication Foundation&lt;/a&gt; is used for designing &lt;a class="mw-redirect" title="Web services" href="http://en.wikipedia.org/wiki/Web_services"&gt;web services&lt;/a&gt;. Underlying &lt;a title="Computer programming" href="http://en.wikipedia.org/wiki/Computer_programming"&gt;computer programming&lt;/a&gt; &lt;a title="Concept" href="http://en.wikipedia.org/wiki/Concept"&gt;concepts&lt;/a&gt; like &lt;a title="Quicksort" href="http://en.wikipedia.org/wiki/Quicksort"&gt;quicksort&lt;/a&gt;, &lt;a class="mw-redirect" title="Hashtable" href="http://en.wikipedia.org/wiki/Hashtable"&gt;hashtable&lt;/a&gt;, &lt;a title="Array data type" href="http://en.wikipedia.org/wiki/Array_data_type"&gt;array&lt;/a&gt;, and &lt;a title="Binary tree" href="http://en.wikipedia.org/wiki/Binary_tree"&gt;binary tree&lt;/a&gt; can be useful to creating software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows desktop application, he/she might use the &lt;a title=".NET Framework" href="http://en.wikipedia.org/wiki/.NET_Framework"&gt;.NET&lt;/a&gt; Windows Forms library to design the desktop application and call its APIs like Form1.Close() and Form1.Show() to close or open the application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like &lt;a title="Sun Microsystems" href="http://en.wikipedia.org/wiki/Sun_Microsystems"&gt;Sun Microsystems&lt;/a&gt;, &lt;a title="Novell" href="http://en.wikipedia.org/wiki/Novell"&gt;Novell&lt;/a&gt;, and &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; provide their own APIs so that many applications are written using their &lt;a class="mw-redirect" title="Software library" href="http://en.wikipedia.org/wiki/Software_library"&gt;software libraries&lt;/a&gt; that usually have numerous APIs in them.&lt;br /&gt;Software has special economic characteristics that make its design, creation, and distribution different from most other economic goods.&lt;br /&gt;A title of a person who creates software is called a &lt;a title="Programmer" href="http://en.wikipedia.org/wiki/Programmer"&gt;programmer&lt;/a&gt;, &lt;a title="Software engineer" href="http://en.wikipedia.org/wiki/Software_engineer"&gt;software engineer&lt;/a&gt;, &lt;a title="Software developer" href="http://en.wikipedia.org/wiki/Software_developer"&gt;software developer&lt;/a&gt;, and &lt;a title="Code monkey" href="http://en.wikipedia.org/wiki/Code_monkey"&gt;code monkey&lt;/a&gt; that all essentially have a same meaning.&lt;br /&gt;&lt;a id="Industry_and_organizations" name="Industry_and_organizations"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:arial;"&gt;Industry and organizations&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Main article: &lt;a title="Software industry" href="http://en.wikipedia.org/wiki/Software_industry"&gt;Software industry&lt;/a&gt;&lt;br /&gt;Software has its own niche industry that is called the software industry made up of different entities and peoples that produce software, and as a result there are many software companies and programmers in the world. Because software is increasingly used in many different areas like in &lt;a title="Finance" href="http://en.wikipedia.org/wiki/Finance"&gt;finance&lt;/a&gt;, &lt;a title="Searching" href="http://en.wikipedia.org/wiki/Searching"&gt;searching&lt;/a&gt;, &lt;a title="Mathematics" href="http://en.wikipedia.org/wiki/Mathematics"&gt;mathematics&lt;/a&gt;, &lt;a title="Space exploration" href="http://en.wikipedia.org/wiki/Space_exploration"&gt;space exploration&lt;/a&gt;, &lt;a title="Gaming" href="http://en.wikipedia.org/wiki/Gaming"&gt;gaming&lt;/a&gt; and &lt;a title="Mining" href="http://en.wikipedia.org/wiki/Mining"&gt;mining&lt;/a&gt; and such, software companies and people usually specialize in certain areas. For instance, &lt;a title="Electronic Arts" href="http://en.wikipedia.org/wiki/Electronic_Arts"&gt;Electronic Arts&lt;/a&gt; primarily creates &lt;a title="Video game" href="http://en.wikipedia.org/wiki/Video_game"&gt;video games&lt;/a&gt;.&lt;br /&gt;Also selling software can be quite a profitable industry. For instance, &lt;a title="Bill Gates" href="http://en.wikipedia.org/wiki/Bill_Gates"&gt;Bill Gates&lt;/a&gt;, the founder of &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; is the second richest man in the world in 2008 largely by selling the &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; and &lt;a title="Microsoft Office" href="http://en.wikipedia.org/wiki/Microsoft_Office"&gt;Microsoft Office&lt;/a&gt; software programs. The same goes for &lt;a title="Larry Ellison" href="http://en.wikipedia.org/wiki/Larry_Ellison"&gt;Larry Ellison&lt;/a&gt;, largely through his &lt;a class="mw-redirect" title="Oracle database" href="http://en.wikipedia.org/wiki/Oracle_database"&gt;Oracle database&lt;/a&gt; software.&lt;br /&gt;There are also many non-profit software organizations like the &lt;a title="Free Software Foundation" href="http://en.wikipedia.org/wiki/Free_Software_Foundation"&gt;Free Software Foundation&lt;/a&gt;, &lt;a title="GNU Project" href="http://en.wikipedia.org/wiki/GNU_Project"&gt;GNU Project&lt;/a&gt;, &lt;a title="Mozilla Foundation" href="http://en.wikipedia.org/wiki/Mozilla_Foundation"&gt;Mozilla Foundation&lt;/a&gt;. Also there are many software standard organizations like the &lt;a class="mw-redirect" title="W3C" href="http://en.wikipedia.org/wiki/W3C"&gt;W3C&lt;/a&gt;, &lt;a class="mw-redirect" title="IETF" href="http://en.wikipedia.org/wiki/IETF"&gt;IETF&lt;/a&gt; and others that try to come up with a software standard so that many software can work and interoperate with each other like through standards such as &lt;a title="XML" href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;, &lt;a title="HTML" href="http://en.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt;, &lt;a class="mw-redirect" title="HTTP" href="http://en.wikipedia.org/wiki/HTTP"&gt;HTTP&lt;/a&gt; or &lt;a class="mw-redirect" title="FTP" href="http://en.wikipedia.org/wiki/FTP"&gt;FTP&lt;/a&gt;.&lt;br /&gt;Some of the well known software companies include &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt;, &lt;a class="mw-redirect" title="Apple Computer" href="http://en.wikipedia.org/wiki/Apple_Computer"&gt;Apple&lt;/a&gt;, &lt;a title="IBM" href="http://en.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt;, &lt;a title="Oracle Corporation" href="http://en.wikipedia.org/wiki/Oracle_Corporation"&gt;Oracle&lt;/a&gt;, &lt;a title="Novell" href="http://en.wikipedia.org/wiki/Novell"&gt;Novell&lt;/a&gt;, &lt;a title="SAP AG" href="http://en.wikipedia.org/wiki/SAP_AG"&gt;SAP&lt;/a&gt; and &lt;a class="mw-redirect" title="HP" href="http://en.wikipedia.org/wiki/HP"&gt;HP&lt;/a&gt;.&lt;br /&gt;&lt;a id="Free_Software_Movement" name="Free_Software_Movement"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Free Software Movement&lt;/span&gt;&lt;br /&gt;Main article: &lt;a title="Free software movement" href="http://en.wikipedia.org/wiki/Free_software_movement"&gt;Free software movement&lt;/a&gt;&lt;br /&gt;&lt;a class="image" title="Ambox content.png" href="http://en.wikipedia.org/wiki/File:Ambox_content.png"&gt;&lt;/a&gt;&lt;br /&gt;This section may contain &lt;a title="Wikipedia:No original research" href="http://en.wikipedia.org/wiki/Wikipedia:No_original_research"&gt;original research&lt;/a&gt; or &lt;a title="Wikipedia:Verifiability" href="http://en.wikipedia.org/wiki/Wikipedia:Verifiability"&gt;unverified claims&lt;/a&gt;. Please &lt;a class="external text" title="http://en.wikipedia.org/w/index.php?title=" href="http://en.wikipedia.org/w/index.php?title=Computer_software&amp;amp;action=edit" rel="nofollow" action="edit"&gt;improve the article&lt;/a&gt; by adding &lt;a class="mw-redirect" title="Wikipedia:References" href="http://en.wikipedia.org/wiki/Wikipedia:References"&gt;references&lt;/a&gt;. See the &lt;a title="Talk:Computer software" href="http://en.wikipedia.org/wiki/Talk:Computer_software"&gt;talk page&lt;/a&gt; for details. (July 2008)&lt;br /&gt;There is more than one approach to creating, licensing, and distributing software. For instance, the &lt;a title="Free software" href="http://en.wikipedia.org/wiki/Free_software"&gt;free software&lt;/a&gt; (or &lt;a title="Open source" href="http://en.wikipedia.org/wiki/Open_source"&gt;open source&lt;/a&gt;) community produces software under licensing that makes it free for inspection of its code, modification of its code, and distribution. While the software released under an open source license (such as &lt;a class="mw-redirect" title="General Public License" href="http://en.wikipedia.org/wiki/General_Public_License"&gt;General Public License&lt;/a&gt;, or GPL for short) can be sold for money, the distribution cannot be restricted in the same way as software with copyright and patent restrictions (used by corporations to require licensing fees).&lt;br /&gt;While some advocates of free software use slogans such as "information wants to be free," hinting that it is easy to copy digital data and that the licenses (enforced through laws) are unnatural restrictions, other creators and users of open source software recognize it to be one model among many for software creation, licensing, and distribution. And the laws themselves are put into place for the ostensible purpose of increasing creative output, by allowing the creators to control and profit most effectively from their intellectual property.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:180%;"&gt;Types of software&lt;/span&gt;&lt;br /&gt;&lt;a class="image" title="A layer structure showing where Operating System is located on generally used software systems on desktops" href="http://en.wikipedia.org/wiki/File:Operating_system_placement.svg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="internal" title="Enlarge" href="http://en.wikipedia.org/wiki/File:Operating_system_placement.svg"&gt;&lt;/a&gt;A layer structure showing where &lt;a class="mw-redirect" title="Operating System" href="http://en.wikipedia.org/wiki/Operating_System"&gt;Operating System&lt;/a&gt; is located on generally used software systems on &lt;a title="Desktop computer" href="http://en.wikipedia.org/wiki/Desktop_computer"&gt;desktops&lt;/a&gt;&lt;br /&gt;Practical &lt;a class="mw-redirect" title="Computer system" href="http://en.wikipedia.org/wiki/Computer_system"&gt;computer systems&lt;/a&gt; divide &lt;a title="Software system" href="http://en.wikipedia.org/wiki/Software_system"&gt;software systems&lt;/a&gt; into three major classes: &lt;a title="System software" href="http://en.wikipedia.org/wiki/System_software"&gt;system software&lt;/a&gt;, &lt;a class="mw-redirect" title="Programming software" href="http://en.wikipedia.org/wiki/Programming_software"&gt;programming software&lt;/a&gt; and &lt;a title="Application software" href="http://en.wikipedia.org/wiki/Application_software"&gt;application software&lt;/a&gt;, although the distinction is arbitrary, and often blurred.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;System software&lt;/span&gt;&lt;br /&gt;&lt;a title="System software" href="http://en.wikipedia.org/wiki/System_software"&gt;System software&lt;/a&gt; helps run the computer hardware and computer system. It includes combination of the following:&lt;br /&gt;&lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device drivers&lt;/a&gt;&lt;br /&gt;&lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating systems&lt;/a&gt;&lt;br /&gt;&lt;a title="Server (computing)" href="http://en.wikipedia.org/wiki/Server_(computing)"&gt;servers&lt;/a&gt;&lt;br /&gt;&lt;a class="mw-redirect" title="Software utility" href="http://en.wikipedia.org/wiki/Software_utility"&gt;utilities&lt;/a&gt;&lt;br /&gt;&lt;a title="Windowing system" href="http://en.wikipedia.org/wiki/Windowing_system"&gt;windowing systems&lt;/a&gt;&lt;br /&gt;The purpose of systems software is to unburden the applications programmer from the details of the particular computer complex being used, including such accessory devices as communications, printers, readers, displays and keyboards, and also to partition the computer's resources such as memory and processor time in a safe and stable manner.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Programming software&lt;br /&gt;&lt;a class="mw-redirect" title="Programming software" href="http://en.wikipedia.org/wiki/Programming_software"&gt;Programming software&lt;/a&gt; usually provides tools to assist a programmer in writing &lt;a title="Computer program" href="http://en.wikipedia.org/wiki/Computer_program"&gt;computer programs&lt;/a&gt;, and software using different programming languages in a more convenient way. The tools include:&lt;br /&gt;&lt;a title="Compiler" href="http://en.wikipedia.org/wiki/Compiler"&gt;compilers&lt;/a&gt;&lt;br /&gt;&lt;a title="Debugger" href="http://en.wikipedia.org/wiki/Debugger"&gt;debuggers&lt;/a&gt;&lt;br /&gt;&lt;a title="Interpreter (computing)" href="http://en.wikipedia.org/wiki/Interpreter_(computing)"&gt;interpreters&lt;/a&gt;&lt;br /&gt;&lt;a title="Linker" href="http://en.wikipedia.org/wiki/Linker"&gt;linkers&lt;/a&gt;&lt;br /&gt;&lt;a title="Text editor" href="http://en.wikipedia.org/wiki/Text_editor"&gt;text editors&lt;/a&gt;&lt;br /&gt;An &lt;a title="Integrated development environment" href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;Integrated development environment&lt;/a&gt; (IDE) is a single application that attempts to manage all these functions.&lt;br /&gt;&lt;a id="Application_software" name="Application_software"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Application software&lt;/span&gt;&lt;br /&gt;&lt;a title="Application software" href="http://en.wikipedia.org/wiki/Application_software"&gt;Application software&lt;/a&gt; allows end users to accomplish one or more specific (not directly computer development related) &lt;a title="Task" href="http://en.wikipedia.org/wiki/Task"&gt;tasks&lt;/a&gt;. Typical applications include:&lt;br /&gt;&lt;a title="Automation" href="http://en.wikipedia.org/wiki/Automation"&gt;industrial automation&lt;/a&gt;&lt;br /&gt;&lt;a title="Business software" href="http://en.wikipedia.org/wiki/Business_software"&gt;business software&lt;/a&gt;&lt;br /&gt;&lt;a class="mw-redirect" title="Computer games" href="http://en.wikipedia.org/wiki/Computer_games"&gt;computer games&lt;/a&gt;&lt;br /&gt;&lt;a title="Telecommunication" href="http://en.wikipedia.org/wiki/Telecommunication"&gt;telecommunications&lt;/a&gt; (i.e., &lt;a title="Internet" href="http://en.wikipedia.org/wiki/Internet"&gt;the internet&lt;/a&gt; and everything that flows on it)&lt;br /&gt;&lt;a title="Database" href="http://en.wikipedia.org/wiki/Database"&gt;databases&lt;/a&gt;&lt;br /&gt;&lt;a title="Educational software" href="http://en.wikipedia.org/wiki/Educational_software"&gt;educational software&lt;/a&gt;&lt;br /&gt;&lt;a title="Medical software" href="http://en.wikipedia.org/wiki/Medical_software"&gt;medical software&lt;/a&gt;&lt;br /&gt;&lt;a class="new" title="Military software (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Military_software&amp;amp;action=edit&amp;amp;redlink=1"&gt;military software&lt;/a&gt; tecture&lt;br /&gt;See also: &lt;a title="Software architecture" href="http://en.wikipedia.org/wiki/Software_architecture"&gt;Software architecture&lt;/a&gt;&lt;br /&gt;Users often see things differently than programmers. People who use modern general purpose computers (as opposed to &lt;a title="Embedded system" href="http://en.wikipedia.org/wiki/Embedded_system"&gt;embedded systems&lt;/a&gt;, &lt;a title="Analog computer" href="http://en.wikipedia.org/wiki/Analog_computer"&gt;analog computers&lt;/a&gt; and &lt;a title="Supercomputer" href="http://en.wikipedia.org/wiki/Supercomputer"&gt;supercomputers&lt;/a&gt;) usually see three layers of software performing a variety of tasks: platform, application, and user software.&lt;br /&gt;Platform software: &lt;a class="mw-redirect" title="Platform (computing)" href="http://en.wikipedia.org/wiki/Platform_(computing)"&gt;Platform&lt;/a&gt; includes the &lt;a title="Firmware" href="http://en.wikipedia.org/wiki/Firmware"&gt;firmware&lt;/a&gt;, &lt;a title="Device driver" href="http://en.wikipedia.org/wiki/Device_driver"&gt;device drivers&lt;/a&gt;, an &lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating system&lt;/a&gt;, and typically a &lt;a title="Graphical user interface" href="http://en.wikipedia.org/wiki/Graphical_user_interface"&gt;graphical user interface&lt;/a&gt; which, in total, allow a user to interact with the computer and its &lt;a title="Peripheral" href="http://en.wikipedia.org/wiki/Peripheral"&gt;peripherals&lt;/a&gt; (associated equipment). Platform software often comes bundled with the computer. On a &lt;a title="Personal computer" href="http://en.wikipedia.org/wiki/Personal_computer"&gt;PC&lt;/a&gt; you will usually have the ability to change the platform software.&lt;br /&gt;Application software: &lt;a title="Application software" href="http://en.wikipedia.org/wiki/Application_software"&gt;Application software&lt;/a&gt; or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.&lt;br /&gt;User-written software: &lt;a title="End-user development" href="http://en.wikipedia.org/wiki/End-user_development"&gt;End-user development&lt;/a&gt; tailors systems to meet users' specific needs. User software include spreadsheet templates, &lt;a title="Word processor" href="http://en.wikipedia.org/wiki/Word_processor"&gt;word processor&lt;/a&gt; &lt;a title="Macro" href="http://en.wikipedia.org/wiki/Macro"&gt;macros&lt;/a&gt;, scientific simulations, and &lt;a title="Scripting language" href="http://en.wikipedia.org/wiki/Scripting_language"&gt;scripts&lt;/a&gt; for graphics and animations. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.&lt;br /&gt;&lt;a id="Documentation" name="Documentation"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1603173738482823676-7965316145289515635?l=computersoftware-edu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computersoftware-edu.blogspot.com/feeds/7965316145289515635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/07/computer-software.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/7965316145289515635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1603173738482823676/posts/default/7965316145289515635'/><link rel='alternate' type='text/html' href='http://computersoftware-edu.blogspot.com/2009/07/computer-software.html' title='Computer software'/><author><name>Bipin</name><uri>http://www.blogger.com/profile/11598260941442261579</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
