( egeresz | 2010. 11. 07., v – 08:58 )

a proci ugyanaz, a gepi kod ugyanaz.
Azonban a proci, es a gepi kod onmagaban meg nem teljes program, a legfontosabb kimaradt: az interakcio.
A program az valami adatot var (akar egy egerkattintast) es valami adatot ad ki (mondjuk rajzol).

Az interakcio (Input/Output muvelet) az oprendszer feladata. A program nem maga kommunikal, hanem megkeri az oprendszert szepen, hogy olvasson be/irjon ki neki.

Hogy ezt megtehesse, a CPU (gepi kod)-ban van erre utasitas, mas es mas architecturan mas es mas a neve: syscall, supervisor call, soft interrupt, ilyesmik.

Az, hogy melyik syscall mit jelent, es milyen parameterekkel kell hivni, az roppant oprendszer-specifikus. Hasonloan roppant oprendszer specifikus, hogy hogyan kapja meg a program a vezerlest (hogyan indul el).
Azonban csak ennyi. Nincs tobb. Ezeket az interakciokat lehet emulalni, szoktak is.
Igy mukodik peldaul, hogy a linuxos mplayer (i386 gepi kod, linux syscall) futtat windows ala irt codeceket (i386 gepi kod, windows syscall). Hasonlo az elve a wine emulatornak, gepi kod transzlaciot nem vegez, csak a win syscallokat forgatja linux syscall-ra.
Van meg *bsd alatt "linux binary compatibility" amivel lehetoseg van a linux binarisok *bsd alatti futtatasara, ez szinten syscall transzlaciot takar.

a pontossag vegett: a vegso programok altalaban nem hivnak kozvetlenul syscallt, hanem inkabb egy library rutint, ami majd syscallt hiv, ez az elven nem valtoztat, csak az emulator bonyolultsagan.