HOME

TheInfoList



OR:

In
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
, a compatibility layer is an interface that allows binaries for a legacy or foreign system to run on a host system. This translates
system call In computing, a system call (commonly abbreviated to syscall) is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services (for example, acc ...
s for the foreign system into native system calls for the host system. With some
libraries A library is a collection of Document, materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or electronic media, digital access (soft copies) materials, and may be a ...
for the foreign system, this will often be sufficient to run foreign binaries on the host system. A hardware compatibility layer consists of tools that allow hardware emulation.


Software

Examples include: *
Wine Wine is an alcoholic drink typically made from fermented grapes. Yeast consumes the sugar in the grapes and converts it to ethanol and carbon dioxide, releasing heat in the process. Different varieties of grapes and strains of yeasts are m ...
, which runs some Microsoft Windows binaries on
Unix-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
systems using a program loader and the
Windows API The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations th ...
implemented in DLLs *
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
's application compatibility layers to attempt to run poorly written applications or those written for earlier versions of the platform. * Lina, which runs some Linux binaries on Windows,
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
and Unix-like systems with native look and feel. * KernelEX, which runs some Windows 2000/XP programs on Windows 98/Me. * Executor, which runs 68k-based "classic" Mac OS programs in Windows, Mac OS X and Linux. * Anbox, an Android compatibility layer for
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
. * Columbia Cycada, an unreleased one which runs Apple iOS applications on Android systems * Hybris, library that translates Bionic into glibc calls. * Darling, a translation layer that attempts to run Mac OS X and Darwin binaries on Linux. *
Windows Subsystem for Linux Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
v1, which runs Linux binaries on Windows via a compatibility layer which translates Linux system calls into native windows system calls. * Cygwin, a
POSIX The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming inter ...
-compatible environment that runs natively on Windows. * 2ine, a project to run
OS/2 OS/2 (Operating System/2) is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 r ...
application on Linux * Rosetta 2,
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple trees are cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, where its wild ancestor, ' ...
's translation layer bundled with macOS Big Sur to allow x86-64 exclusive applications to run on ARM hardware. * ACL for Tizen allows Android apps to natively execute on Tizen phones. Compatibility layer in
kernel Kernel may refer to: Computing * Kernel (operating system), the central component of most operating systems * Kernel (image processing), a matrix used for image convolution * Compute kernel, in GPGPU programming * Kernel method, in machine learn ...
: * FreeBSD's Linux compatibility layer, which enables binaries built specifically for
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
to run on FreeBSD the same way as the native FreeBSD API layer. FreeBSD also has some Unix-like system emulations, including NDIS, NetBSD, PECoff, SVR4, and different CPU versions of FreeBSD. * NetBSD has several Unix-like system emulations. *
Windows Subsystem for Linux Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
provides a
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
-compatible kernel interface developed by Microsoft.
The PEACE Project
(aka COMPAT_PECOFF) has Win32 compatible layer for NetBSD. The project is now inactive. * On
RSTS/E RSTS () is a multi-user time-sharing operating system developed by Digital Equipment Corporation (DEC, now part of Hewlett-Packard) for the PDP-11 series of 16-bit minicomputers. The first version of RSTS (RSTS-11, Version 1) was implemented in 1 ...
for the PDP-11 series of minicomputers, programs written to run on the
RT-11 RT-11 (Real-time 11) is a discontinued small, low-end, single-user real-time operating system for the full line of Digital Equipment Corporation PDP-11 16-bit computers. RT-11 was first implemented in 1970. It was widely used for real-time computin ...
operating system could run (without recompiling) on RSTS through the RT-11 Run-Time System having its EMT flag set, meaning that an RT-11 EMT instruction that matches a RSTS EMT is diverted to the RT-11 Run-Time System which translates them to the equivalent RSTS EMT. Programs written to take advantage of RSTS directly (or calls to RSTS within the Run-Time system itself) signal this by having a ''second'' EMT instruction (usually EMT 255) immediately before the actual RSTS EMT code. A compatibility layer avoids both the complexity and the speed penalty of full hardware
emulation Emulation may refer to: *Emulation (computing), imitation of behavior of a computer or other electronic system with the help of another type of system :*Video game console emulator, software which emulates video game consoles *Gaussian process em ...
. Some programs may even run faster than the original, ''e.g.'' some Linux applications running on FreeBSD's Linux compatibility layer may perform better than the same applications on Red Hat Linux. Benchmarks are occasionally run on Wine to compare it to Windows NT-based operating systems. Even on similar systems, the details of implementing a compatibility layer can be quite intricate and troublesome; a good example is the IRIX binary compatibility layer in the
MIPS architecture MIPS (Microprocessor without Interlocked Pipelined Stages) is a family of reduced instruction set computer (RISC) instruction set architectures (ISA)Price, Charles (September 1995). ''MIPS IV Instruction Set'' (Revision 3.2), MIPS Technologies, ...
version of NetBSD. A compatibility layer requires the host system's CPU to be (upwardly) compatible to that of the foreign system. For example, a Microsoft Windows compatibility layer is not possible on PowerPC hardware because Windows requires an
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was intr ...
CPU. In this case full emulation is needed.


Hardware

Hardware compatibility layers involve
tool A tool is an object that can extend an individual's ability to modify features of the surrounding environment or help them accomplish a particular task. Although many animals use simple tools, only human beings, whose use of stone tools dates ba ...
s that allow hardware emulation. Some hardware compatibility layers involve
breakout box A breakout box is a piece of electrical test equipment used to support integration testing, expedite maintenance, and streamline the troubleshooting process at the system, subsystem, and component-level by simplifying the access to test signals. Br ...
es because breakout boxes can provide compatibility for certain computer buses that are otherwise incompatible with the machine.


See also

*
Hypervisor A hypervisor (also known as a virtual machine monitor, VMM, or virtualizer) is a type of computer software, firmware or hardware that creates and runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called ...
*
Paravirtualization In computing, paravirtualization or para-virtualization is a virtualization technique that presents a software interface to the virtual machines which is similar, yet not identical, to the underlying hardware–software interface. The intent o ...
*
Emulator In computing, an emulator is hardware or software that enables one computer system (called the ''host'') to behave like another computer system (called the ''guest''). An emulator typically enables the host system to run software or use pe ...
* Cross-platform virtualization * Computing platform *
Shim (computing) In computer programming, a shim is a library that transparently intercepts API calls and changes the arguments passed, handles the operation itself or redirects the operation elsewhere. Shims can be used to support an old API in a newer ...
*
Driver wrapper A driver wrapper is a Wrapper function, subroutine in a software library that functions as an adapter pattern, adapter between an operating system and a driver, such as a device driver, that was not designed for that operating system. It can enable ...
*
Glue code Adhesive, also known as glue, cement, mucilage, or paste, is any non-metallic substance applied to one or both surfaces of two separate items that binds them together and resists their separation. The use of adhesives offers certain advant ...


References


External links


Windows XP Application Compatibility Technologies
(Dave Morehouse and Todd Phillips, Microsoft Corporation, 1 June 2001) {{DEFAULTSORT:Compatibility Layer