A live CD is a complete bootable computer installation including operating system which runs directly from a CD-ROM or similar storage device into a computer's memory, rather than loading from a hard disk drive. A Live CD allows users to run an operating system for any purpose without installing it or making any changes to the computer's configuration. Live CDs can run on a computer without secondary storage, such as a hard disk drive, or with a corrupted hard disk drive or file system, allowing data recovery; as CD and DVD drives have been phased-out, live CDs have become less popular, being replaced by live USBs, which are equivalent systems written onto USB flash drives, which have the added benefit of having write-able storage. The functionality of a live CD is available with a bootable live USB flash drive, or an external hard disk drive connected by USB. Many live CDs offer the option of persistence by writing files to USB flash drive. Many Linux distributions make ISO images available for burning to CD or DVD.
While open source Operating Systems can be used for free, some commercial software, such as Windows To Go requires a license to use. Many Live CDs are used for data recovery, computer forensics, disk imaging, system recovery and malware removal; the Tails operating system is aimed at preserving privacy and anonymity of its users, allowing them to work with sensitive documents without leaving a record on a computer's hard drive. All except the earliest digital computers are built with some form of minimal built-in loader, which loads a program or succession of programs from a storage medium, which operate the computer. A read-only medium such as punched tape or punched cards was used for initial program load. With the introduction of inexpensive read-write storage, read-write floppy disks and hard disks were used as boot media. After the introduction of the audio compact disc, it was adapted for use as a medium for storing and distributing large amounts of computer data; this data may include application and operating-system software, sometimes packaged and archived in compressed formats.
It was seen to be convenient and useful to boot the computer directly from compact disc with a minimal working system to install a full system onto a hard drive. While there are read-write optical discs, either mass-produced read-only discs or write-once discs were used for this purpose; the first Compact Disc drives on personal computers were much too slow to run complex operating systems. When operating systems came to be distributed on compact discs, either a boot floppy or the CD itself would boot and only, to install onto a hard drive; the world's first and oldest non-Linux live CD was the FM Towns OS first released in 1989, before the release of Macintosh System 7 in 1991 and Yggdrasil Linux in 1992. Although early developers and users of distributions built on top of the Linux kernel so it could take advantage of cheap optical disks and declining prices of CD drives for personal computers, the Linux distribution CDs or "distros" were treated as a collection of installation packages that must first be permanently installed to hard disks on the target machine.
However, in the case of these distributions built on top of the Linux kernel, the free operating system was meeting resistance in the consumer market because of the perceived difficulty and risk involved in installing an additional partition on the hard disk, in parallel with an existing operating system installation. The term "live CD" was coined because, after typical PC RAM was large enough and 52x speed CD drives and CD burners were widespread among PC owners, it became convenient and practical to boot the kernel and run X11, a window manager and GUI applications directly from a CD without disturbing the OS on the hard disk; this was a new and different situation for Linux than other operating systems, because the updates/upgrades were being released so different distributions and versions were being offered online, because users were burning their own CDs. The first Linux-based'Live CD' was Yggdrasil Linux first released in beta form 1992~1993, though in practice its functionality was hampered due to the low throughput of contemporary CD-ROM drives.
DemoLinux, released in 1998, was the first Linux distribution specially designed as a live CD. The Linuxcare bootable business card, first released in 1999, was the first Live CD to focus on system administration, the first to be distributed in the bootable business card form factor; as of 2015, Finnix is the oldest Live CD still in production. Knoppix, a Debian-derived Linux distribution, was released in 2003, found popularity as both a rescue disk system and as a primary distribution in its own right. Since 2003, the popularity of live CDs has increased partly due to Linux Live scripts and remastersys, which made it easy to build customized live systems. Most of the popular Linux distributions now include a live CD variant, which in some cases is the preferred installation medium. Live CDs are made for many different uses; some are designed to "test drive" a particular operating system. Software can be run for a particular single use, without interfering with system setup. Data on a system, not functioning due to operating system and software issues can be made available.
GNU variants are operating systems based upon the GNU operating system. According to the GNU project and others, these include most operating systems using the Linux kernel and a few others using BSD-based kernels. GNU users obtain their operating system by downloading GNU distributions, which are available for a wide variety of systems ranging from embedded devices and personal computers to powerful supercomputers. Hurd is the official kernel developed for the GNU system. Debian GNU/Hurd was discussed for a release as technology preview with Debian 7.0 Wheezy, however these plans were discarded due to the immature state of the system. However the maintainers of Debian GNU/Hurd decided to publish an unofficial release on the release date of Debian 7.0. Debian GNU/Hurd is not considered yet to provide the performance and stability expected from a production system. Among the open issues are incomplete implementation of Java and X.org graphical user interfaces and limited hardware driver support.
About two thirds of the Debian packages have been ported to Hurd. Arch Hurd was a derivative work of Arch Linux, porting it to the GNU Hurd system with packages optimised for the Intel P6 architecture; the goal was to provide an Arch-like user environment on the GNU Hurd, stable enough for at least occasional use. Although abandoned as of 2018, the project produced a LiveCD for evaluation purposes and installations guides for LiveCD and conventional installation; the term GNU/Linux or GNU+Linux is used by the FSF and its supporters to refer to an operating system where the Linux kernel is distributed with a GNU system software. Such distributions are the primary installed base of GNU packages and programs and of Linux; the most notable official use of this term for a distribution is Debian GNU/Linux. As of 2018, the only GNU variants recommended by the GNU project for regular use are Linux distributions committed to the Free System Distribution Guidelines. Debian GNU/kFreeBSD is an operating system for x86-64 computer architectures.
It is a distribution of GNU with Debian package management and the kernel of FreeBSD. The k in kFreeBSD is an abbreviation for kernel of, reflects the fact that only the kernel of the complete FreeBSD operating system is used; the operating system was released with Debian Squeeze on February 6, 2011. One Debian GNU/kFreeBSD live CD is Ging, no longer maintained. Debian GNU/NetBSD was an experimental port of GNU user-land applications to NetBSD kernel. No official release of this operating system was made. Nexenta OS is the first distribution that combines the GNU userland and Debian's packaging and organisation with the OpenSolaris kernel. Nexenta OS is available for x86-64 based systems. Nexenta Systems, Inc sponsors its continued development. Nexenta OS is not considered a GNU variant, due to the use of OpenSolaris libc. Multiple Illumos distributions use; the Cygwin project is an actively-developed compatibility layer in the form of a C library providing a substantial part of the POSIX API functionality for Windows, as well as a distribution of GNU and other Unix-like programs for such an ecosystem.
It was first released in 1995 by Cygnus Solutions. In 2016 Microsoft and Canonical added an official compatibility layer to Windows 10 that translates Linux kernel calls into Windows NT ones, the reverse of what Wine does; this allows ELF executables to run unmodified on Windows, is intended to provide web developers with the more familiar GNU userland on top of the Windows kernel. The combination has been dubbed "Linux for Windows" though Linux is absent. Comparison of Linux distributions GNU/Linux naming controversy Arch Hurd Superunprivileged.org GNU/Hurd-based Live CD Debian GNU/kFreeBSD Debian GNU/NetBSD #debian-kbsd on OFTC Ging live CD
GNU General Public License
The GNU General Public License is a widely-used free software license, which guarantees end users the freedom to run, study and modify the software. The license was written by Richard Stallman of the Free Software Foundation for the GNU Project, grants the recipients of a computer program the rights of the Free Software Definition; the GPL is a copyleft license, which means that derivative work can only be distributed under the same license terms. This is in distinction to permissive free software licenses, of which the BSD licenses and the MIT License are widely-used examples. GPL was the first copyleft license for general use; the GPL license family has been one of the most popular software licenses in the free and open-source software domain. Prominent free-software programs licensed under the GPL include the Linux kernel and the GNU Compiler Collection. David A. Wheeler argues that the copyleft provided by the GPL was crucial to the success of Linux-based systems, giving the programmers who contributed to the kernel the assurance that their work would benefit the whole world and remain free, rather than being exploited by software companies that would not have to give anything back to the community.
In 2007, the third version of the license was released to address some perceived problems with the second version that were discovered during its long-time usage. To keep the license up to date, the GPL license includes an optional "any version" clause, allowing users to choose between the original terms or the terms in new versions as updated by the FSF. Developers can omit it; the GPL was written by Richard Stallman in 1989, for use with programs released as part of the GNU project. The original GPL was based on a unification of similar licenses used for early versions of GNU Emacs, the GNU Debugger and the GNU C Compiler; these licenses contained similar provisions to the modern GPL, but were specific to each program, rendering them incompatible, despite being the same license. Stallman's goal was to produce one license that could be used for any project, thus making it possible for many projects to share code; the second version of the license, version 2, was released in 1991. Over the following 15 years, members of the free software community became concerned over problems in the GPLv2 license that could let someone exploit GPL-licensed software in ways contrary to the license's intent.
These problems included tivoization, compatibility issues similar to those of the Affero General Public License—and patent deals between Microsoft and distributors of free and open-source software, which some viewed as an attempt to use patents as a weapon against the free software community. Version 3 was developed to attempt to address these concerns and was released on 29 June 2007. Version 1 of the GNU GPL, released on 25 February 1989, prevented what were the two main ways that software distributors restricted the freedoms that define free software; the first problem was that distributors may publish binary files only—executable, but not readable or modifiable by humans. To prevent this, GPLv1 stated that copying and distributing copies or any portion of the program must make the human-readable source code available under the same licensing terms; the second problem was that distributors might add restrictions, either to the license, or by combining the software with other software that had other restrictions on distribution.
The union of two sets of restrictions would apply to the combined work, thus adding unacceptable restrictions. To prevent this, GPLv1 stated that modified versions, as a whole, had to be distributed under the terms in GPLv1. Therefore, software distributed under the terms of GPLv1 could be combined with software under more permissive terms, as this would not change the terms under which the whole could be distributed. However, software distributed under GPLv1 could not be combined with software distributed under a more restrictive license, as this would conflict with the requirement that the whole be distributable under the terms of GPLv1. According to Richard Stallman, the major change in GPLv2 was the "Liberty or Death" clause, as he calls it – Section 7; the section says that licensees may distribute a GPL-covered work only if they can satisfy all of the license's obligations, despite any other legal obligations they might have. In other words, the obligations of the license may not be severed due to conflicting obligations.
This provision is intended to discourage any party from using a patent infringement claim or other litigation to impair users' freedom under the license. By 1990, it was becoming apparent that a less restrictive license would be strategically useful for the C library and for software libraries that did the job of existing proprietary ones; the version numbers diverged in 1999 when version 2.1 of the LGPL was released, which renamed it the GNU Lesser General Public License to reflect its place in the philosophy. Most "GPLv2 or any version" is stated by users of the license, to allow upgrading to GPLv3. In late 2005, the Free Software Foundation announced work on version 3 of the GPL. On 16 January 2006, the first "discussion draft" of GPLv3 was published, the public consultation began; the public consultation was planned for ni
An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may include accounting software for cost allocation of processor time, mass storage and other resources. For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between programs and the computer hardware, although the application code is executed directly by the hardware and makes system calls to an OS function or is interrupted by it. Operating systems are found on many devices that contain a computer – from cellular phones and video game consoles to web servers and supercomputers; the dominant desktop operating system is Microsoft Windows with a market share of around 82.74%. MacOS by Apple Inc. is in second place, the varieties of Linux are collectively in third place. In the mobile sector, use in 2017 is up to 70% of Google's Android and according to third quarter 2016 data, Android on smartphones is dominant with 87.5 percent and a growth rate 10.3 percent per year, followed by Apple's iOS with 12.1 percent and a per year decrease in market share of 5.2 percent, while other operating systems amount to just 0.3 percent.
Linux distributions are dominant in supercomputing sectors. Other specialized classes of operating systems, such as embedded and real-time systems, exist for many applications. A single-tasking system can only run one program at a time, while a multi-tasking operating system allows more than one program to be running in concurrency; this is achieved by time-sharing, where the available processor time is divided between multiple processes. These processes are each interrupted in time slices by a task-scheduling subsystem of the operating system. Multi-tasking may be characterized in co-operative types. In preemptive multitasking, the operating system slices the CPU time and dedicates a slot to each of the programs. Unix-like operating systems, such as Solaris and Linux—as well as non-Unix-like, such as AmigaOS—support preemptive multitasking. Cooperative multitasking is achieved by relying on each process to provide time to the other processes in a defined manner. 16-bit versions of Microsoft Windows used cooperative multi-tasking.
32-bit versions of both Windows NT and Win9x, used preemptive multi-tasking. Single-user operating systems have no facilities to distinguish users, but may allow multiple programs to run in tandem. A multi-user operating system extends the basic concept of multi-tasking with facilities that identify processes and resources, such as disk space, belonging to multiple users, the system permits multiple users to interact with the system at the same time. Time-sharing operating systems schedule tasks for efficient use of the system and may include accounting software for cost allocation of processor time, mass storage and other resources to multiple users. A distributed operating system manages a group of distinct computers and makes them appear to be a single computer; the development of networked computers that could be linked and communicate with each other gave rise to distributed computing. Distributed computations are carried out on more than one machine; when computers in a group work in cooperation, they form a distributed system.
In an OS, distributed and cloud computing context, templating refers to creating a single virtual machine image as a guest operating system saving it as a tool for multiple running virtual machines. The technique is used both in virtualization and cloud computing management, is common in large server warehouses. Embedded operating systems are designed to be used in embedded computer systems, they are designed to operate on small machines like PDAs with less autonomy. They are able to operate with a limited number of resources, they are compact and efficient by design. Windows CE and Minix 3 are some examples of embedded operating systems. A real-time operating system is an operating system that guarantees to process events or data by a specific moment in time. A real-time operating system may be single- or multi-tasking, but when multitasking, it uses specialized scheduling algorithms so that a deterministic nature of behavior is achieved. An event-driven system switches between tasks based on their priorities or external events while time-sharing operating systems switch tasks based on clock interrupts.
A library operating system is one in which the services that a typical operating system provides, such as networking, are provided in the form of libraries and composed with the application and configuration code to construct a unikernel: a specialized, single address space, machine image that can be deployed to cloud or embedded environments. Early computers were built to perform a series of single tasks, like a calculator. Basic operating system features were developed in the 1950s, such as resident monitor functions that could automatically run different programs in succession to speed up processing. Operating systems did not exist in their more complex forms until the early 1960s. Hardware features were added, that enabled use of runtime libraries and parallel processing; when personal computers became popular in the 1980s, operating systems were made for them similar in concept to those used on larger computers. In the 1940s, the earliest electronic digital systems had no operating systems.
Electronic systems of this time were programmed on rows of mechanical switches or by jumper wires on plug boards. These were special-purpose systems that, for example, generated ballistics tables for the military or controlled the pri
GNU Emacs is the most popular and most ported Emacs text editor. It was created by GNU Project founder Richard Stallman. In common with other varieties of Emacs, GNU Emacs is extensible using a Turing complete programming language. GNU Emacs has been called "the most powerful text editor available today". With proper support from the underlying system, GNU Emacs is able to display files in multiple character sets, has been able to display most human languages since at least 1999. Throughout its history, GNU Emacs has been a central component of the GNU project, a flagship of the free software movement. GNU Emacs is sometimes abbreviated as GNUMACS to differentiate it from other EMACS variants; the tag line for GNU Emacs is "the extensible self-documenting text editor". In 1976, Stallman wrote the first Emacs, in 1984, began work on GNU Emacs, to produce a free software alternative to the proprietary Gosling Emacs. GNU Emacs was based on Gosling Emacs, but Stallman's replacement of its Mocklisp interpreter with a true Lisp interpreter required that nearly all of its code be rewritten.
This became the first program released by the nascent GNU Project. GNU Emacs is written in C and provides Emacs Lisp implemented in C, as an extension language. Version 13, the first public release, was made on March 20, 1985; the first distributed version of GNU Emacs was version 15.34, released in 1985. Early versions of GNU Emacs were numbered as "1.x.x," with the initial digit denoting the version of the C core. The "1" was dropped after version 1.12 as it was thought that the major number would never change, thus the major version skipped from "1" to "13". A new third version number was added to represent changes made by user sites. In the current numbering scheme, a number with two components signifies a release version, with development versions having three components. GNU Emacs was ported to Unix, it offered more features than Gosling Emacs, in particular a full-featured Lisp as its extension language, soon replaced Gosling Emacs as the de facto Unix Emacs editor. Markus Hess exploited a security flaw in GNU Emacs' email subsystem in his 1986 cracking spree, in which he gained superuser access to Unix computers.
Although users submitted patches and Elisp code to the net.emacs newsgroup, participation in GNU Emacs development was restricted until 1999, was used as an example of the "Cathedral" development style in The Cathedral and the Bazaar. The project has since adopted anonymous CVS access. Development took place in a single CVS trunk until 2008, today uses the Git DVCS. Richard Stallman has remained the principal maintainer of GNU Emacs, but he has stepped back from the role at times. Stefan Monnier and Chong Yidong have overseen maintenance since 2008. On September 21, 2015 Monnier announced that he would be stepping down as maintainer effective with the feature freeze of Emacs 25. Longtime contributor John Wiegley was announced as the new maintainer on November 5, 2015; the terms of the GNU General Public License state that the Emacs source code, including both the C and Emacs Lisp components, are available for examination and redistribution. Older versions of the GNU Emacs documentation appeared under an ad-hoc license that required the inclusion of certain text in any modified copy.
In the GNU Emacs user's manual, for example, this included instructions for obtaining GNU Emacs and Richard Stallman's essay The GNU Manifesto. The XEmacs manuals, which were inherited from older GNU Emacs manuals when the fork occurred, have the same license. Newer versions of the documentation use the GNU Free Documentation License with "invariant sections" that require the inclusion of the same documents and that the manuals proclaim themselves as GNU Manuals. For GNU Emacs, like many other GNU packages, it remains policy to accept significant code contributions only if the copyright holder executes a suitable disclaimer or assignment of their copyright interest to the Free Software Foundation. Bug fixes and minor code contributions of fewer than 10 lines are exempt; this policy is in place so that the FSF can defend the software in court if its copyleft license is violated. In 2011, it was noticed that GNU Emacs had been accidentally releasing some binaries without corresponding source code for two years, in opposition to the intended spirit of the GPL, resulting in a copyright violation.
Richard Stallman described this incident as "a bad mistake", promptly fixed. The FSF didn't sue any downstream redistributors who unknowingly violated the GPL by distributing these binaries. In its normal editing mode, GNU Emacs behaves like other text editors and allows the user to insert characters with the corresponding keys and to move the editing point with the arrow keys. Escape key sequences or pressing the control key and/or the meta key, alt key or super keys in conjunction with a regular key produces modified keystrokes that invoke functions from the Emacs Lisp environment. Commands such as save-buffer and save-buffers-kill-emacs combine multiple modified keystrokes; some GNU Emacs commands work by invoking an external program, such as ispell for spell-checking or GNU Compiler Collection for program compilation, parsing the program's output, displaying the result in GNU Emacs. Emacs supports "inferior processes"—long-lived processes that interact with an Emacs buffer; this is used to implement shell-mode, running a Unix shell as inferior process, as well as read–eval–print loop modes for various programming languages.
Emacs' support for external processes makes it an attractive environment for interactive programming along the lines of Interlisp or Smalltalk. Users who prefer
The user interface, in the industrial design field of human–computer interaction, is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine from the human end, whilst the machine feeds back information that aids the operators' decision-making process. Examples of this broad concept of user interfaces include the interactive aspects of computer operating systems, hand tools, heavy machinery operator controls, process controls; the design considerations applicable when creating user interfaces are related to or involve such disciplines as ergonomics and psychology. The goal of user interface design is to produce a user interface which makes it easy and enjoyable to operate a machine in the way which produces the desired result; this means that the operator needs to provide minimal input to achieve the desired output, that the machine minimizes undesired outputs to the human. User interfaces are composed of one or more layers including a human-machine interface interfaces machines with physical input hardware such a keyboards, game pads and output hardware such as computer monitors and printers.
A device that implements a HMI is called a human interface device. Other terms for human-machine interfaces are man–machine interface and when the machine in question is a computer human–computer interface. Additional UI layers may interact with one or more human sense, including: tactile UI, visual UI, auditory UI, olfactory UI, equilibrial UI, gustatory UI. Composite user interfaces are UIs that interact with two or more senses; the most common CUI is a graphical user interface, composed of a tactile UI and a visual UI capable of displaying graphics. When sound is added to a GUI it becomes a multimedia user interface. There are three broad categories of CUI: standard and augmented. Standard composite user interfaces use standard human interface devices like keyboards and computer monitors; when the CUI blocks out the real world to create a virtual reality, the CUI is virtual and uses a virtual reality interface. When the CUI does not block out the real world and creates augmented reality, the CUI is augmented and uses an augmented reality interface.
When a UI interacts with all human senses, it is called a qualia interface, named after the theory of qualia. CUI may be classified by how many senses they interact with as either an X-sense virtual reality interface or X-sense augmented reality interface, where X is the number of senses interfaced with. For example, a Smell-O-Vision is a 3-sense Standard CUI with visual display and smells; the user interface or human–machine interface is the part of the machine that handles the human–machine interaction. Membrane switches, rubber keypads and touchscreens are examples of the physical part of the Human Machine Interface which we can see and touch. In complex systems, the human–machine interface is computerized; the term human–computer interface refers to this kind of system. In the context of computing, the term extends as well to the software dedicated to control the physical elements used for human-computer interaction; the engineering of the human–machine interfaces is enhanced by considering ergonomics.
The corresponding disciplines are human factors engineering and usability engineering, part of systems engineering. Tools used for incorporating human factors in the interface design are developed based on knowledge of computer science, such as computer graphics, operating systems, programming languages. Nowadays, we use the expression graphical user interface for human–machine interface on computers, as nearly all of them are now using graphics. There is a difference between a user interface and an operator interface or a human–machine interface; the term "user interface" is used in the context of computer systems and electronic devices Where a network of equipment or computers are interlinked through an MES -or Host to display information. A human-machine interface is local to one machine or piece of equipment, is the interface method between the human and the equipment/machine. An operator interface is the interface method by which multiple equipment that are linked by a host control system is accessed or controlled.
The system may expose several user interfaces to serve different kinds of users. For example, a computerized library database might provide two user interfaces, one for library patrons and the other for library personnel; the user interface of a mechanical system, a vehicle or an industrial installation is sometimes referred to as the human–machine interface. HMI is a modification of the original term MMI. In practice, the abbreviation MMI is still used although some may claim that MMI stands for something different now. Another abbreviation is HCI, but is more used for human–computer interaction. Other terms used are operator interface terminal; however it is abbreviated, the terms refer to the'layer' that separates a human, operating a machine from the machine itself. Without a clean and usable interface, humans would not be able to
X86-64 is the 64-bit version of the x86 instruction set. It introduces two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mode. With 64-bit mode and the new paging mode, it supports vastly larger amounts of virtual memory and physical memory than is possible on its 32-bit predecessors, allowing programs to store larger amounts of data in memory. X86-64 expands general-purpose registers to 64-bit, as well extends the number of them from 8 to 16, provides numerous other enhancements. Floating point operations are supported via mandatory SSE2-like instructions, x87/MMX style registers are not used. In 64-bit mode, instructions are modified to support 64-bit addressing mode; the compatibility mode allows 16- and 32-bit user applications to run unmodified coexisting with 64-bit applications if the 64-bit operating system supports them. As the full x86 16-bit and 32-bit instruction sets remain implemented in hardware without any intervening emulation, these older executables can run with little or no performance penalty, while newer or modified applications can take advantage of new features of the processor design to achieve performance improvements.
A processor supporting x86-64 still powers on in real mode for full backward compatibility. The original specification, created by AMD and released in 2000, has been implemented by AMD, Intel and VIA; the AMD K8 processor was the first to implement it. This was the first significant addition to the x86 architecture designed by a company other than Intel. Intel was forced to follow suit and introduced a modified NetBurst family, software-compatible with AMD's specification. VIA Technologies introduced x86-64 with the VIA Nano; the x86-64 architecture is distinct from the Intel Itanium architecture, not compatible on the native instruction set level with the x86 architecture. Operating systems and applications written for one cannot be run on the other. AMD64 was created as an alternative to the radically different IA-64 architecture, designed by Intel and Hewlett Packard. Announced in 1999 while a full specification became available in August 2000, the AMD64 architecture was positioned by AMD from the beginning as an evolutionary way to add 64-bit computing capabilities to the existing x86 architecture, as opposed to Intel's approach of creating an new 64-bit architecture with IA-64.
The first AMD64-based processor, the Opteron, was released in April 2003. AMD's processors implementing the AMD64 architecture include Opteron, Athlon 64, Athlon 64 X2, Athlon 64 FX, Athlon II, Turion 64, Turion 64 X2, Phenom, Phenom II, FX, Fusion/APU and Ryzen/Epyc; the primary defining characteristic of AMD64 is the availability of 64-bit general-purpose processor registers, 64-bit integer arithmetic and logical operations, 64-bit virtual addresses. The designers took the opportunity to make other improvements as well; some of the most significant changes are described below. 64-bit integer capability All general-purpose registers are expanded from 32 bits to 64 bits, all arithmetic and logical operations, memory-to-register and register-to-memory operations, etc. can now operate directly on 64-bit integers. Pushes and pops on the stack default to 8-byte strides, pointers are 8 bytes wide. Additional registers In addition to increasing the size of the general-purpose registers, the number of named general-purpose registers is increased from eight in x86 to 16.
It is therefore possible to keep more local variables in registers rather than on the stack, to let registers hold accessed constants. AMD64 still has fewer registers than many RISC instruction sets or VLIW-like machines such as the IA-64. However, an AMD64 implementation may have far more internal registers than the number of architectural registers exposed by the instruction set. Additional XMM registers Similarly, the number of 128-bit XMM registers is increased from 8 to 16; the traditional x87 FPU register stack is not included in the register file size extension in 64-bit mode, compared with the XMM registers used by SSE2, which did get extended. The x87 register stack is not a simple register file although it does allow direct access to individual registers by low cost exchange operations. Larger virtual address space The AMD64 architecture defines a 64-bit virtual address format, of which the low-order 48 bits are used in current implementations; this allows up to 256 TB of virtual address space.
The architecture definition allows this limit to be raised in future implementations to the full 64 bits, exten