Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

As I understand emulators (in a simple way), they do translate or substitute the function calls of a program using functions of system X into functions used by system Y in which the program is being run onto. Wine project claims that Wine Is Not an Emulator, because:

Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

Well, how emulators and virtual machines simulate internal Windows logic on host non-Windows systems? Isn't that by translating Windows system calls into the host's own respective calls? Is the difference between emulators and non-emulators (like Wine) is that emulators emulate a whole operating system then the application uses that system APIs without knowing that it is talking to an emulator, while non-emulators directly translates application's calls into the host's (and the application also may not know it)? Is the extra level of indirection is the only different between emulators and Wine?

share|improve this question
4  
Normally when computer minded people use the word "emulator", they mean a hardware emulator, software that emulates hardware. In that sense Wine is not an emulator. However in the dictionary sense of the word, Wine does emulate Windows, and in that sense you could call Wine a Windows emulator. –  Christoffer Hammarström Nov 11 '13 at 16:56
    
WINE is also a slightly stretched backronym, a kind of humor that appeals to the personality required to create WINE in the first place. –  RBerteig Nov 11 '13 at 19:46

3 Answers 3

Well, how emulators and virtual machines simulate internal Windows logic on host non-Windows systems? Isn't that by translating Windows system calls into the host's own respective calls?

No, or at least not in the sense that WINE does -- by literally translating system calls one to one in user space. An emulator does this abstractly via a more circuitous route; it does not translate system calls directly.

A true emulator creates a virtual machine (e.g. x86-64), not a virtual operating system. You can then in theory run any operating system targeting that style of machine. Commonly an "emulator" includes the operating system, but that's not really what it is emulating; the OS it includes is the same as one that would run on a real machine.

Emulators are sometimes used to simulate hardware different from the host machine, but also hardware that is exactly the same for the purpose of running one OS inside another.

WINE is different from this in that it is not actually windows. You could run an x86-64 emulator with a real copy of windows inside it, but that is not what WINE is. Their claim that it is actually more efficient than an emulator makes sense -- the overhead for just translating system calls is probably lower than that of running a VM. The disadvantage is that WINE can only be windows; you cannot use it with some other OS as you could a normal VM.

share|improve this answer

Consider Java Virtual Machines. No JVM emulates any other, they're all implementations of a specification. Wine isn't emulating the win32 api, it's an implementation of it. Specs and reality not necessarily matching, both Microsoft's implementation and Wine's implementation have workarounds to make buggy code work, and it's not necessarily obvious which implementation is a better target for any given project.

share|improve this answer
1  
+1 good analogy –  AJMansfield Nov 12 '13 at 2:08

Wine is a shim which intercepts windows API calls and converts them in the fly to the corresponding Linux API call(s). A emulator or virtual machine instead emulates a physical machine. Obviously a shim is more efficient, but may not be completely capable of mimicking the desired functionality.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.