Эмуля́цыя (англ.: emulation) — мадэляванне праграмнымі або апаратнымі сродкамі, альбо іх камбінацыяй, работы іншых праграм ці прылад.
У выпадку праграмна-апаратнага комплексу эмулятарам з’яўляецца спецыяльная электронная прылада, выкананая ў выглядзе платы.[1]
Эмуляцыя дазваляе выконваць камп’ютарную праграму на платформе (камп’ютарнай архітэктуры і/або аперацыйнай сістэме), адрознай, ці ў некаторых выпадках ідэнтычнай той, для якой яна была напісана ў арыгінале. Эмуляцыяй таксама называюць сам працэс гэтага выканання. У адрозненні ад сімуляцыі, якая толькі паўтарае паводзіны праграмы, пры эмуляцыі ставіцца мэта дакладнага мадэлявання стану сістэмы, якую імітуюць, для выканання арыгінальная машыннага кода.
Пры ўжыванні моў высокага ўзроўню, часам у мэтах захоўвання хуткадзейнасці праграмы, замест эмуляцыі робяць партаванне праграм у новае асяроддзе. У гэтым выпадку ажыццяўляецца перапісванне нанова апаратна-залежных частак кода.
Адно з папулярных прымяненняў эмуляцыі — выкананне на персанальным камп’ютары гульняў, напісаных для гульнявых аўтаматаў ці гульнявых прыставак.
Тэарэтычна, згодна тэзісу Чорча—Цьюрынга, любое аперацыйнае асяроддзе можа быць эмулявана ў любым іншым асяроддзі. На практыцы, аднак, назіраецца шэраг цяжкасцяў; у прыватнасці, дакладныя паводзіны эмулюемай сістэмы часта не дакументаваны (ці ўтоены пад грыфам камерцыйнай тайны) і павінны быць даследаваны і вызначаны з дапамогай адваротнай распрацоўкі.
Досыць поўная эмуляцыя некаторых апаратных платформ патрабуе вялікай дакладнасці, да ўзроўню асобных тактавых цыклаў, недакументаваных асаблівасцяў і нават памылак рэалізацыі. Гэта асабліва важна для такіх мадэляў класічных хатніх машын, як Commodore 64, ZX Spectrum.
На некаторых іншых платформах даволі мала ўжываецца прамы доступ да абсталявання. У гэтым выпадку аказваецца дастатковым забяспечыць некаторы ўзровень сумяшчальнасці, які б выконваў трансляцыю сістэмных выклікаў эмулюемай сістэмы ў выклікі мэтавай сістэмы.
Звычайна, эмулятар складаецца з некалькіх модуляў, якія адказваюць за разнастайныя падсістэмы эмулюемага камп'ютара. Часцей усяго, эмулятар складаецца з:
Сістэмная шына звычайна не эмулюецца, па прычынах спрашчэння ці падвышэння хуткадзейнасці, і віртуальная перыферыя звяртаецца непасрэдна да модуля ЦП і модуля памяці.