Interaction with operating systems
Some operating systems designate executable files by filename extension (such as .exe) or noted alongside the file in its metadata (such as by marking an "execute" permission in Unix-like operating systems). Most also check that the file has a valid executable file format to safeguard against random bit sequences from inadvertently being run as instructions. Modern operating systems retain control over the computer's resources, requiring that individual programs make system calls to access privileged resources. Since each operating system family features its own system call architecture, executable files are generally tied to specific operating systems.
There are many tools available that make executable files made for one operating system work on another one by implementing a similar or compatible application binary interface. (For example Wine, which implements a Win32-compatible library for x86 processors)
When the binary interface of the hardware the executable was compiled for differs from the binary interface on which the executable is run, the program that does this translation is called an emulator. Different files that can execute but do not necessarily conform to a specific hardware binary interface, or instruction set, can be either represented in bytecode for Just-in-time compilation, or in source code for use in a scripting language. (see Shebang (Unix))