úterý 23. října 2007

Favourite Web Pages

1) Google:
Google Inc. (NASDAQ: GOOG and LSE: GGEA) is an American public corporation, specializing in Internet search and online advertising. The company is based in Mountain View, California, and has 15,916 full-time employees (as of September 30, 2007). Google's mission statement is, "to organize the world's information and make it universally accessible and useful." Google's corporate philosophy includes statements such as "Don't be evil", and "Work should be challenging and the challenge should be fun", illustrating a somewhat relaxed corporate culture.

Google was co-founded by Larry Page and Sergey Brin while they were students at Stanford University and the company was first incorporated as a privately held company on September 7, 1998. Google's initial public offering took place on August 19, 2004, raising $1.67 billion, making it worth $23 billion. Through a series of new product developments, acquisitions and partnerships, the company has expanded its initial search and advertising business into other areas, including web-based email, online mapping, office productivity, and video sharing, among others.

2) Digg News:
Digg is a community-based popularity website with an emphasis on technology and science articles, recently expanding to a broader range of categories such as politics and entertainment. It combines social bookmarking, blogging, and syndication with a form of non-hierarchical, democratic editorial control.

News stories and websites are submitted by users, and then promoted to the front page through a user-based ranking system. This differs from the hierarchical editorial system that many other news sites employ.

3) http://my.opera.com/community/
The My Opera Community is the support community for the Opera Internet Suite. Over 1,800 new members join per day , and the site has more than one million members.

3) YouTube.com
YouTube is a video sharing website where users can upload, view and share video clips. YouTube was created in mid February 2005 by three former PayPal employees. The San Bruno-based service uses Adobe Flash technology to display a wide variety of video content, including movie clips, TV clips and music videos, as well as amateur content such as videoblogging and short original videos. In October 2006, Google Inc. announced that it had reached a deal to acquire the company for US$1.65 billion in Google stock. The deal closed on November 13, 2006.

Unregistered users can watch most videos on the site, while registered users are permitted to upload an unlimited number of videos. Some videos are available only to users of age 18 or older (e.g. videos containing potentially offensive content, although pornography is disallowed to be uploaded). Related videos, determined by title and tags, appear onscreen to the right of a given video. In YouTube's second year, functions were added to enhance user ability to post video 'responses' and subscribe to content feeds.

3) VladStudio.com
Amazing Wallpapers - You have to see it!

Czech Web Pages:
http://lamer.cz/ - jokes about IT Technology
http://stargate-game.cz - The best internet game.

SoftWare

Computer software is a general term used to describe a collection of computer programs, procedures and documentation that perform some task on a computer system. The term includes application software such as word processors which perform productive tasks for users, system software such as operating systems, which interface with hardware to provide the necessary services for application software, and middleware which controls and co-ordinates distributed systems.

Terminology

The term "software" is sometimes used in a broader context to describe any electronic media content which embodies expressions of ideas such as film, tapes, records, etc.
A screenshot of computer software - AbiWord.
A screenshot of computer software - AbiWord.

Relationship to computer hardware


Computer software is so called in contrast to computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. In computers, software is loaded into RAM and executed in the central processing unit. 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 (object code), which 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 concept of reading different sequences of instructions into the memory of a device to control computations was invented by Charles Babbage as part of his difference engine. 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.

Types

Practical computer systems divide software systems into three major classes: system software, programming software and application software, although the distinction is arbitrary, and often blurred.

* System software helps run the computer hardware and computer system. It includes operating systems, device drivers, diagnostic tools, servers, windowing systems, utilities and more. The purpose of systems software is to insulate the applications programmer as much as possible from the details of the particular computer complex being used, especially memory and other hardware features, and such accessory devices as communications, printers, readers, displays, keyboards, etc.
* Programming 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 text editors, compilers, interpreters, linkers, debuggers, and so on. An Integrated development environment (IDE) merges those tools into a software bundle, and a programmer may not need to type multiple commands for compiling, interpreter, debugging, tracing, and etc., because the IDE usually has an advanced graphical user interface, or GUI.
* Application software allows end users to accomplish one or more specific (non-computer related) tasks. Typical applications include industrial automation, business software, educational software, medical software, databases, and computer games. Businesses are probably the biggest users of application software, but almost every field of human activity now uses some form of application software. It is used to automate all sorts of functions.

Program and library

A program may not be sufficiently complete for execution by a computer. In particular, it may require additional software from a software library in order to be complete. Such a library may include software components used by stand-alone programs, but which cannot work on their own. Thus, programs may include standard routines that are common to many programs, extracted from these libraries. Libraries may also include 'stand-alone' programs which are activated by some computer event and/or perform some function (e.g., of computer 'housekeeping') but do not return data to their calling program. Programs may be called by one to many other programs; programs may call zero to many other programs.

Three layers
Starting in the 1980s, application software has been sold in mass-produced packages through retailers.
Starting in the 1980s, application software has been sold in mass-produced packages through retailers.

See also: Software architecture

Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers, supercomputers, etc.) 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 almost always 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
User software tailors systems to meet the 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 purchased application packages, many users may not be aware of the distinction between the purchased packages, and what has been added by fellow co-workers.

Creation

Main article: Computer programming

Operation

Computer software has to be "loaded" into the computer's storage (such as a hard drive, memory, or RAM). Once the software is loaded, the computer is able to execute the software. Computers operate by executing the computer program. 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.

Instructions may be performed sequentially, conditionally, or iteratively. Sequential instructions are those operations that are performed one after another. Conditional instructions are performed such that different sets of instructions execute depending on the value(s) of some data. In some languages this is known as an "if" statement. Iterative instructions are performed repetitively and may depend on some data value. This is sometimes called a "loop." Often, one instruction may "call" another set of instructions that are defined in some other program or module. When more than one computer processor is used, instructions may be executed simultaneously.

A simple example of the way software operates is what happens when a user selects an entry such as "Copy" from a menu. In this case, a conditional instruction is executed to copy text from data in a 'document' area residing in memory, perhaps to an intermediate storage area known as a 'clipboard' data area. If a different menu entry such as "Paste" is chosen, the software may execute the instructions to copy the text from the clipboard data area to a specific location in the same or another document in memory.

Depending on the application, even the example above could become complicated. The field of software engineering endeavors to manage the complexity of how software operates. This is especially true for software that operates in the context of a large or powerful computer system.

Currently, almost the only limitations on the use of computer software in applications is the ingenuity of the designer/programmer. Consequently, large areas of activities (such as playing grand master level chess) formerly assumed to be incapable of software simulation are now routinely programmed. The only area that has so far proved reasonably secure from software simulation is the realm of human art— especially, pleasing music and literature.

Kinds of software by operation: computer program as executable, source code or script, configuration.

Quality and reliability

Software reliability considers the errors, faults, and failures related to the creation and operation of software.

See Software auditing, Software quality, Software testing, and Software reliability.

License

Software 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 licence, 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.

Patents

The issue of software patents is controversial. Some believe that they hinder software development, while others argue that software patents provide an important incentive to spur software innovation. See software patent debate.

Ethics and rights for software users

Being a new part of society, the idea of what rights users of software should have is not very developed. Some, such as the free software community, believe that software users should be free to modify and redistribute the software they use. They argue that these rights are necessary so that each individual can control their computer, and so that everyone can cooperate, if they choose, to work together as a community and control the direction that software progresses in. Others believe that software authors should have the power to say what rights the user will get.

The former philosophy is somewhat derived from the "hacker ethic" that was common in the 60s and 70s.

My Favourite SW

Work Programmes:
Opera:
Opera is a cross-platform web browser and Internet suite developed by the Opera Software corporation. Opera handles common Internet-related tasks such as visiting web sites, sending and receiving e-mail messages, managing contacts, IRC online chatting, downloading files via BitTorrent, and reading web feeds. Both Opera for desktops and Opera Mini for mobile phones are offered free of charge, but editions of Opera for other platforms are not.

Opera runs on a variety of operating systems, including Microsoft Windows, Mac OS X, Linux, FreeBSD and Solaris. It is also used on mobile phones, smartphones, personal digital assistants, the Nintendo DS and Wii video game systems, and interactive televisions. In addition, Adobe licensed Opera technology for use in the Adobe Creative Suite.

Opera has had limited success on desktop platforms in the face of competitors such as Internet Explorer, Firefox, and Safari. However, it has enjoyed greater success on mobile device platforms and more recently the Nintendo DS and Wii gaming systems.

Trillian:
Trillian is a proprietary multiprotocol instant messaging application for Windows created by Cerulean Studios that can connect to multiple IM services, such as AIM, ICQ, Windows Live Messenger, Yahoo! Messenger, IRC, Novell GroupWise Messenger, Bonjour, Jabber, and Skype networks (the latter four with Trillian Pro which allows for additional plugins).

Initially released July 1, 2000 as a freeware IRC client, the first commercial version (Trillian Pro 1.0) was published on September 10, 2002. There are currently two types of Trillian available, the original and free Trillian Basic 3 and the commercial Trillian Pro 3. An upcoming product called Trillian Astra (4.0) has been announced and is currently in alpha testing.

Adobe Photoshop:
Adobe Photoshop, or simply Photoshop, is a graphics editor developed and published by Adobe Systems. It is the current market leader for commercial bitmap and image manipulation, and is the flagship product of Adobe Systems. It has been described as "an industry standard for graphics professionals." Although originally designed to edit images for paper-based printing, Photoshop can also be used for a wide range of other professional and amateur purposes.

The current (10th) iteration of the program, Photoshop CS3, was released on 16 April 2007. "CS" reflects its integration with other Creative Suite products, and the number "3" represents it as the third version released since Adobe re-branded its products under the CS umbrella. Photoshop CS3 features additions such as the ability to apply non-destructive filters, as well as new selection tools named Quick Selection and Refine Edge that make selection more streamlined. On April 30th, Adobe released Photoshop CS3 Extended, which includes all the same features of Adobe Photoshop CS3 with the addition of capabilities for scientific imaging, 3D, and high end film and video users.

Adobe (Macromedia) Flash:
Adobe Flash, or simply Flash, refers to both the Adobe Flash Player, and to the Adobe Flash Professional multimedia authoring program. Adobe Flash Professional is used to create content for the Adobe Engagement Platform (such as web applications, games and movies, and content for mobile phones and other embedded devices). The Flash Player, developed and distributed by Adobe Systems (which acquired Macromedia in a merger that was finalized in December 2005), is a client application available in most common web browsers. It features support for vector and raster graphics, a scripting language called ActionScript and bi-directional streaming of audio and video. There are also versions of the Flash Player for mobile phones and other non-PC devices.

Strictly speaking, Adobe Flash Professional is an integrated development environment (IDE) while Flash Player is a virtual machine used to run, or parse, the Flash files. But in contemporary colloquial terms "Flash" can refer to the authoring environment, the player, or the application files.

Since its introduction in 1996, Flash technology has become a popular method for adding animation and interactivity to web pages; several software products, systems, and devices are able to create or display Flash. Flash is commonly used to create animation, advertisements, various web-page components, to integrate video into web pages, and more recently, to develop rich Internet applications.

The Flash files, traditionally called "Flash movies" or "Flash games", have a .swf file extension and may be an object of a web page, strictly "played" in a standalone Flash Player, or incorporated into a Projector, a self-executing Flash movie with the .exe extension in Windows. Flash Video files have a .flv file extension and are utilized from within .swf files.



Games:
Battlefield 2:
Battlefield2 (abbreviated to BF2) is a computer game in which players fight in a modern battlefield using modern weapon systems. Battlefield 2 is a first-person shooter with some strategy and RPG elements. Battlefield 2 was developed by Digital Illusions CE (DICE) with a custom game engine. During development, Trauma Studios contributed to the development of the game after it was acquired by Digital Illusions CE. BF2 is published by Electronic Arts as the third full game of the Battlefield series, released in late June 2005. The first two installments were Battlefield 1942 and Battlefield Vietnam.

BF2 includes a single-player mode with three difficulty levels and multiplayer mode via the Internet or a LAN. Both player modes use the same maps and use Battlefield's conquest game mode. Single-player mode allows 15 computer controlled players, while Internet mode allows up to 64 players. Players can choose to play 3 factions: United States Marine Corps (USMC), People's Liberation Army (PLA), and the fictional Middle East Coalition (MEC). Additional factions are playable through the expansion packs.

A console branded version also exists (for Xbox, Xbox 360 and PS2), named Battlefield 2: Modern Combat. Although they both share the same name, they differ quite considerably in execution, content, and gameplay.

Unreal_Tournament_2004:
Unreal Tournament, abbreviated UT, (sometimes referred to as UT99, UT Classic, UT1, or UT:GOTY to differentiate from Unreal Tournament 2003, Unreal Tournament 2004, and Unreal Tournament 3) is a popular first-person shooter video game. It is Epic Games' 1999 follow-up title to Unreal and focuses mainly on multiplayer action. It was launched in direct competition to id Software's Quake III Arena which was released ten days later. Although Quake III Arena was considered to have better graphics, streamlined gameplay and a widely adopted engine, UT had superior bot AI, "alternate fire" for weapons which introduced a further element of strategy, and a larger variety of multiplayer capabilities.

As with the original Unreal, the ease with which players can create and release mods to the core game is a key factor contributing to UT's longevity. UT improved upon the mod-friendly nature of its predecessor with support for mutators such as Sniper Arena, Instagib, BunnyTracks, MonsterHunt, Jailbreak and more. Further, UT clans, or gaming teams, and a score of UT dedicated clan and fan community sites continue to sustain Unreal Tournament's popularity years after its initial release.

Operate system

An operating system (OS) is the software that manages the sharing of the resources of a computer. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the system. At the foundation of all system software, an operating system performs basic tasks such as controlling and allocating memory, prioritizing system requests, controlling input and output devices, facilitating networking and managing file systems. Most operating systems come with an application that provides a user interface for managing the operating system, such as a command line interpreter or graphical user interface. The operating system forms a platform for other system software and for application software. Linux and Mac OS (or any other BSD-derivative) are popular UNIX-like operating systems. Another well-known operating system is Microsoft Windows.


Process management

Every program running on a computer, be it a service or an application, is a process. As long as a von Neumann architecture is used to build computers, only one process per CPU can be run at a time. Older microcomputer OSes such as MS-DOS did not attempt to bypass this limit, with the exception of interrupt processing, and only one process could be run under them (although DOS itself featured TSR as a very partial and not too easy to use solution). Mainframe operating systems have had multitasking capabilities since the early 1960s. Modern operating systems enable concurrent execution of many processes at once via multitasking even with one CPU. Process management is an operating system's way of dealing with running multiple processes. Since most computers contain one processor with one core, multitasking is done by simply switching processes quickly. Depending on the operating system, as more processes run, either each time slice will become smaller or there will be a longer delay before each process is given a chance to run. Process management involves computing and distributing CPU time as well as other resources. Most operating systems allow a process to be assigned a priority which affects its allocation of CPU time. Interactive operating systems also employ some level of feedback in which the task with which the user is working receives higher priority. Interrupt driven processes will normally run at a very high priority. In many systems there is a background process, such as the System Idle Process in Windows, which will run when no other process is waiting for the CPU.

Memory management

Current computer architectures arrange the computer's memory in a hierarchical manner, starting from the fastest registers, CPU cache, random access memory and disk storage. An operating system's memory manager coordinates the use of these various types of memory by tracking which one is available, which is to be allocated or deallocated and how to move data between them. This activity, usually referred to as virtual memory management, increases the amount of memory available for each process by making the disk storage seem like main memory. There is a speed penalty associated with using disks or other slower storage as memory – if running processes require significantly more RAM than is available, the system may start thrashing. This can happen either because one process requires a large amount of RAM or because two or more processes compete for a larger amount of memory than is available. This then leads to constant transfer of each process's data to slower storage.

Another important part of memory management is managing virtual addresses. If multiple processes are in memory at once, they must be prevented from interfering with each other's memory (unless there is an explicit request to utilise shared memory). This is achieved by having separate address spaces. Each process sees the whole virtual address space, typically from address 0 up to the maximum size of virtual memory, as uniquely assigned to it. The operating system maintains a page table that match virtual addresses to physical addresses. These memory allocations are tracked so that when a process terminates, all memory used by that process can be made available for other processes.

The operating system can also write inactive memory pages to secondary storage. This process is called "paging" or "swapping" – the terminology varies between operating systems.

It is also typical for operating systems to employ otherwise unused physical memory as a page cache; requests for data from a slower device can be retained in memory to improve performance. The operating system can also pre-load the in-memory cache with data that may be requested by the user in the near future; SuperFetch is an example of this.

Disk and file systems

All operating systems include support for a variety of file systems.

Modern file systems comprise a hierarchy of directories. While the idea is conceptually similar across all general-purpose file systems, some differences in implementation exist. Two noticeable examples of this are the character used to separate directories, and case sensitivity.

Unix demarcates its path components with a slash (/), a convention followed by operating systems that emulated it or at least its concept of hierarchical directories, such as Linux, Amiga OS and Mac OS X. MS-DOS also emulated this feature, but had already also adopted the CP/M convention of using slashes for additional options to commands, so instead used the backslash (\) as its component separator. Microsoft Windows continues with this convention; Japanese editions of Windows use ¥, and Korean editions use ₩. Versions of Mac OS prior to OS X use a colon (:) for a path separator. RISC OS uses a period (.).

Unix and Unix-like operating systems allow for any character in file names other than the slash (including line feed (LF) and other control characters). Unix file names are case sensitive, which allows multiple files to be created with names that differ only in case. By contrast, Microsoft Windows file names are not case sensitive by default. Windows also has a larger set of punctuation characters that are not allowed in file names.

File systems may provide journaling, which provides safe recovery in the event of a system crash. A journaled file system writes information twice: first to the journal, which is a log of file system operations, then to its proper place in the ordinary file system. In the event of a crash, the system can recover to a consistent state by replaying a portion of the journal. In contrast, non-journaled file systems typically need to be examined in their entirety by a utility such as fsck or chkdsk. Soft updates is an alternative to journalling that avoids the redundant writes by carefully ordering the update operations. Log-structured file systems and ZFS also differ from traditional journaled file systems in that they avoid inconsistencies by always writing new copies of the data, eschewing in-place updates.

Many Linux distributions support some or all of ext2, ext3, ReiserFS, Reiser4, GFS, GFS2, OCFS, OCFS2, and NILFS. Linux also has full support for XFS and JFS, along with the FAT file systems, and NTFS.

Microsoft Windows includes support for FAT12, FAT16, FAT32, and NTFS. The NTFS file system is the most efficient and reliable of the four Windows file systems, and as of Windows Vista, is the only file system which the operating system can be installed on. Windows Embedded CE 6.0 introduced ExFAT, a file system suitable for flash drives.

Mac OS X supports HFS+ as its primary file system, and it supports several other file systems as well, including FAT16, FAT32, NTFS and ZFS.

Common to all these (and other) operating systems is support for file systems typically found on removable media. FAT12 is the file system most commonly found on floppy discs. ISO 9660 and Universal Disk Format are two common formats that target Compact Discs and DVDs, respectively. Mount Rainier is a newer extension to UDF supported by Linux 2.6 kernels and Windows-Vista that facilitates rewriting to DVDs in the same fashion as what has been possible with floppy disks.

Networking

Most current operating systems are capable of using the TCP/IP networking protocols. This means that computers running dissimilar operating systems can participate in a common network for sharing resources such as computing, files, printers, and scanners using either wired or wireless connections.

Many operating systems also support one or more vendor-specific legacy networking protocols as well, for example, SNA on IBM systems, DECnet on systems from Digital Equipment Corporation, and Microsoft-specific protocols on Windows. Specific protocols for specific tasks may also be supported such as NFS for file access.

Security

Many operating systems include some level of security. Security is based on the two ideas that:

* The operating system provides access to a number of resources, directly or indirectly, such as files on a local disk, privileged system calls, personal information about users, and the services offered by the programs running on the system;
* The operating system is capable of distinguishing between some requesters of these resources who are authorized (allowed) to access the resource, and others who are not authorized (forbidden). While some systems may simply distinguish between "privileged" and "non-privileged", systems commonly have a form of requester identity, such as a user name. Requesters, in turn, divide into two categories:
o Internal security: an already running program. On some systems, a program once it is running has no limitations, but commonly the program has an identity which it keeps and is used to check all of its requests for resources.
o External security: a new request from outside the computer, such as a login at a connected console or some kind of network connection. 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.

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?").

Security of operating systems has long been a concern because of highly sensitive data held on computers, both of a commercial and military nature. The United States Government Department of Defense (DoD) created the Trusted Computer System Evaluation Criteria (TCSEC) which is a standard that sets basic requirements for assessing the effectiveness of security. This became of vital importance to operating system makers, because the TCSEC was used to evaluate, classify and select computer systems being considered for the processing, storage and retrieval of sensitive or classified information.

Internal security

Internal security can be thought of as protecting the computer's resources from the programs concurrently running on the system. Most operating systems set programs running natively on the computer's processor, so the problem arises of how to stop these programs doing the same task and having the same privileges as the operating system (which is after all just a program too). Processors used for general purpose operating systems generally have a hardware concept of privilege. Generally less privileged programs are automatically blocked from using certain hardware instructions, such as those to read or write from external devices like disks. Instead, they have to ask the privileged program (operating system kernel) to read or write. The operating system therefore gets the chance to check the program's identity and allow or refuse the request.

An alternative strategy, and the only sandbox strategy available in systems that do not meet the Popek and Goldberg virtualization requirements, is the operating system not running user programs as native code, but instead either emulates a processor or provides a host for a p-code based system such as Java.

Internal security is especially relevant for multi-user systems; it allows each user of the system to have private files that the other users cannot tamper with or read. Internal security is also vital if auditing is to be of any use, since a program can potentially bypass the operating system, inclusive of bypassing auditing.

External security

Typically an operating system offers (or hosts) various services to other network computers and users. These services are usually provided through ports or numbered access points beyond the operating systems network address. Services include offerings such as file sharing, print services, email, web sites, and file transfer protocols (FTP), most of which can have compromised security.

At the front line of security are hardware devices known as firewalls or intrustion 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.

Graphical user interfaces

Today, most modern operating systems contain Graphical User Interfaces . A few older operating systems tightly integrated the GUI to the kernel—for example, in the original implementations of Microsoft Windows and Mac OS the Graphical subsystem was actually part of the operating system. More modern operating systems are modular, separating the graphics subsystem from the kernel (as is now done in Linux, and Mac OS X) so that the graphics subsystem is not part of the OS at all.

Many operating systems allow the user to install or create any user interface they desire. The X Window System in conjunction with GNOME or KDE is a commonly found setup on most Unix and Unix derivative (BSD, Linux, Minix) systems.

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 2001.

Device drivers

A device driver is a specific type of computer software developed to allow interaction with hardware devices. Typically this constitutes an interface for communicating with the device, through the specific computer bus or communications subsystem that the hardware is connected to, providing commands to and/or receiving data from the device, and on the other end, the requisite interfaces to the operating system and software applications. It is a specialized hardware-dependent computer program which is also operating system specific that enables another program, typically an operating system or applications software package or computer program running under the operating system kernel, to interact transparently with a hardware device, and usually provides the requisite interrupt handling necessary for any necessary asynchronous time-dependent hardware interfacing needs.

The key design goal of device drivers is abstraction. Every model of hardware (even within the same class of device) is different. Newer models also are released by manufacturers that provide more reliable or better performance and these newer models are often controlled differently. Computers and their operating systems cannot be expected to know how to control every device, both now and in the future. To solve this problem, 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 for any person..

History

Main article: History of operating systems

The first computers did not have operating systems. By the early 1960s, commercial computer vendors were supplying quite extensive tools for streamlining the development, scheduling, and execution of jobs on batch processing systems. Examples were produced by UNIVAC and Control Data Corporation, amongst others.

Mainframes

Through the 1960s, several major concepts were developed, driving the development of operating systems. The development of the IBM System/360 produced a family of mainframe computers available in widely differing capacities and price points, for which a single operating system OS/360 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, IBM's current mainframe operating systems are distant descendants of this original system; applications written for the OS/360 can still be run on modern machines. OS/360 also contained another important advance: the development of the hard disk permanent storage device (which IBM called DASD). Another key development was the concept of time-sharing: the idea of sharing the resources of expensive computers amongst multiple computer users interacting in real time with the system. Time sharing allowed all of the users to have the illusion of having exclusive access to the machine; the Multics timesharing system was the most famous of a number of new operating systems developed to take advantage of the concept.

Midrange systems

Multics, particularly, was an inspiration to a number of operating systems developed in the 1970s, notably Unix by Dennis Ritchie and Ken Thompson. Another commercially-popular minicomputer operating system was VMS.

Microcomputer era

The first microcomputers did not have the capacity or need for the elaborate operating systems that had been developed for mainframes and minis; minimalistic operating systems were developed, often loaded from ROM and known as Monitors. One notable early disk-based operating system was CP/M, which was supported on many early microcomputers and was largely cloned in creating MS-DOS, which became wildly popular as the operating system chosen for the IBM PC (IBM's version of it was called IBM-DOS or PC-DOS), its successors making Microsoft one of the world's most profitable companies. The major alternative throughout the 1980s in the microcomputer market was Mac OS, tied intimately to the Apple Macintosh computer.

By the 1990s, the microcomputer had evolved to the point where, as well as extensive GUI facilities, the robustness and flexibility of operating systems of larger computers became increasingly desirable. Microsoft's response to this change was the development of Windows NT, which served as the basis for Microsoft's desktop operating system line starting in 2001. Apple rebuilt their operating system on top of a Unix core as Mac OS X, also released in 2001. Hobbyist-developed reimplementations of Unix, assembled with the tools from the GNU Project, also became popular; versions based on the Linux kernel are by far the most popular, with the BSD derived UNIXes holding a small portion of the server market.

The growing complexity of embedded devices has led to increasing use of embedded operating systems.

Today

Modern operating systems usually feature a Graphical user interface (GUI) which uses a pointing device such as a mouse or stylus for input in addition to the keyboard. Older models and Operating Systems not designed for direct-human interaction (such as web-servers) generally use a Command line interface (or CLI) typically with only the keyboard for input. Both models are centered around a "shell" which accepts and processes commands from the user (eg. clicking on a button, or a typed command at a prompt).

The choice of OS may be dependant on the hardware architecture, specifically the CPU, with only Linux and BSD running on almost any CPU. Windows NT 3.1, which is no longer supported, was ported to the DEC Alpha and MIPS Magnum. Since the mid-1990s, the most commonly used operating systems have been the Microsoft Windows family, Linux, and other Unix-like operating systems, most notably Mac OS X. Mainframe computers and embedded systems use a variety of different operating systems, many with no direct connection to Windows or Unix. QNX and VxWorks are two common embedded operating systems, the latter being used in network infrastructure hardware equipment.

Personal computers

* IBM PC compatible - Microsoft Windows, Unix variants, and Linux variants.
* Apple Macintosh - Mac OS X (a Unix variant), Windows (on x86 machines only), Linux and BSD

Mainframe computers

The earliest operating systems were developed for mainframe computer architectures in the 1960s. The enormous investment in software for these systems caused most of the original computer manufacturers to continue to develop hardware and operating systems that are compatible with those early operating systems. Those early systems pioneered many of the features of modern operating systems. Mainframe operating systems that are still supported include:

* Burroughs MCP-- B5000,1961 to Unisys Clearpath/MCP, present.
* IBM OS/360 -- IBM System/360, 1964 to IBM zSeries, present
* UNIVAC EXEC 8 -- UNIVAC 1108, 1964, to Unisys Clearpath IX, present.

Modern mainframes typically also run Linux or Unix variants. A "Datacenter" variant of Windows Server 2003 is also available for some mainframe systems.

Embedded systems

Embedded systems 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. Embedded systems that have certain time requirements are known as Real-time operating systems.

Unix-like operating systems
A customized KDE desktop running under Linux.
A customized KDE desktop running under Linux.

The Unix-like family is a diverse group of operating systems, with several major sub-categories including System V, BSD, and Linux. The name "UNIX" is a trademark of The Open Group which licenses it for use with any operating system that has been shown to conform to their definitions. "Unix-like" is commonly used to refer to the large set of operating systems which resemble the original Unix.

Unix systems run on a wide variety of machine architectures. They are used heavily as server systems in business, as well as workstations in academic and engineering environments. Free software Unix variants, such as Linux and BSD, are popular in these areas. The market share for Linux is divided between many different distributions. Enterprise class distributions by Red Hat or SuSe are used by corporations, but some home users may use those products. Historically home users typically installed a distribution themselves, but in 2007 Dell began to offer the Ubuntu Linux distribution on home PCs. Linux on the desktop is also popular in the developer and hobbyist operating system development communities. (see below)

Market share statistics for freely available operating systems are usually inaccurate since most free operating systems are not purchased, making usage under-represented. On the other hand, market share statistics based on total downloads of free operating systems are often inflated, as there is no economic disincentive to acquire multiple operating systems so users can download multiple, test them, and decide which they like best,

Some Unix variants like HP's HP-UX and IBM's AIX are designed to run only on that vendor's hardware. Others, such as Solaris, can run on multiple types of hardware, including x86 servers and PCs. Apple's Mac OS X, a hybrid kernel-based BSD variant derived from NeXTSTEP, Mach, and FreeBSD, has replaced Apple's earlier (non-Unix) Mac OS.

Open source

See POSIX -- full Unix interoperability heavily depends on full POSIX standards compliance. The POSIX standard applies to any operating system.

Over the past several years, the trend in the Unix and Unix-like space has been to open source operating systems. Many areas previously dominated by UNIX have seen significant inroads by Linux; Solaris source code is now the basis of the OpenSolaris project.

The team at Bell Labs that designed and developed Unix went on to develop Plan 9 and Inferno, which were designed for modern distributed environments. They had graphics built-in, unlike Unix counterparts that added it to the design later. Plan 9 did not become popular because, unlike many Unix distributions, it was not originally free. It has since been released under Free Software and Open Source Lucent Public License, and has an expanding community of developers. Inferno was sold to Vita Nuova and has been released under a GPL/MIT license.

Mac OS X

Mac OS X is a line of proprietary, graphical operating systems developed, marketed, and sold by Apple Inc., the latest of which is pre-loaded on all currently shipping Macintosh computers. Mac OS X is the successor to the original Mac OS, which had been Apple's primary operating system since 1984. Unlike its predecessor, Mac OS X is a UNIX operating system built on technology that had been developed at NeXT through the second half of the 1980s and up until Apple purchased the company in early 1997.

The operating system was first released in 1999 as Mac OS X Server 1.0, with a desktop-oriented version (Mac OS X v10.0) following in March 2001. Since then, four more distinct "end-user" and "server" editions of Mac OS X have been released, the most recent being Mac OS X v10.4, which was first made available in April 2005. Releases of Mac OS X are named after big cats; Mac OS X v10.4 is usually referred to by Apple and users as "Tiger". In October 2007, Apple will release Mac OS X 10.5, nicknamed "Leopard".

The server edition, Mac OS X Server, is architecturally identical to its desktop counterpart but usually runs on Apple's line of Macintosh server hardware. Mac OS X Server includes workgroup management and administration software tools that provide simplified access to key network services, including a mail transfer agent, a Samba server, an LDAP server, a domain name server, and others.

Microsoft Windows

The Microsoft Windows family of operating systems originated as a graphical layer on top of the older MS-DOS environment for the IBM PC. Modern versions are based on the newer Windows NT core that first took shape in OS/2 and borrowed from VMS. Windows runs on 32-bit and 64-bit Intel and AMD processors, although earlier versions also ran on the DEC Alpha, MIPS, Fairchild (later Intergraph) Clipper and PowerPC architectures (some work was done to port it to the SPARC architecture).

As of July 2007, Microsoft Windows held a large amount on the worldwide desktop market share, although some predict this to dwindle due to Microsoft's restrictive licensing, (CD-Key) registration, and customer practices causing an increased interest in open source operating systems. Windows is also used on low-end and mid-range servers, supporting applications such as web servers and database servers. In recent years, Microsoft has spent significant marketing and research & development money to demonstrate that Windows is capable of running any enterprise application, which has resulted in consistent price/performance records (see the TPC) and significant acceptance in the enterprise market.

The most widely used version of the Microsoft Windows family is Microsoft Windows XP, released on October 25, 2001. The latest release of Windows XP is Windows XP Service Pack 2, released on August 6, 2004.

In November 2006, after more than five years of development work, Microsoft released Windows Vista, a major new version of Microsoft Windows which contains a large number of new features and architectural changes. Chief amongst these are a new user interface and visual style called Windows Aero, a number of new security features such as User Account Control, and new multimedia applications such as Windows DVD Maker.An operating system (OS) is the software that manages the sharing of the resources of a computer. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the system. At the foundation of all system software, an operating system performs basic tasks such as controlling and allocating memory, prioritizing system requests, controlling input and output devices, facilitating networking and managing file systems. Most operating systems come with an application that provides a user interface for managing the operating system, such as a command line interpreter or graphical user interface. The operating system forms a platform for other system software and for application software. Linux and Mac OS (or any other BSD-derivative) are popular UNIX-like operating systems. Another well-known operating system is Microsoft Windows.