- WOW64 leidžia paleisti 32 bitų programas sistemose Windows 64 bitų, naudojant sudėtingą suderinamumo sluoksnį.
- „System32“ ir „SysWOW64“ aplankuose saugomi atitinkamai 64 ir 32 bitų failai, kad būtų užtikrintas teisingas kiekvieno tipo programos vykdymas.
- WOW64 naudoja keletą specifinių DLL failų instrukcijoms versti, atminčiai valdyti ir sistemos skambučiams peradresuoti, palaikydamas suderinamumą ir išvengdamas konfliktų.
Jei kada nors naršėte 64 bitų „Windows“ sistemos aplankus, tikriausiai esate susidūrę su tokiais pavadinimais kaip SysWOW64 o System32 ir jūs susimąstėte, kodėl šie aplankai egzistuoja ir kuo jie skiriasi. Tačiau tikrasis raktas į supratimą, kodėl jūsų senoji 32 bitų programa vis dar puikiai veikia šiuolaikinėje 64 bitų „Windows“ sistemoje, yra WOW64 posistemisŠi technologija, nors ir paprastai nepastebima eilinio vartotojo, yra būtina siekiant užtikrinti daugelio senesnių programų suderinamumą ir sklandų veikimą. operacines sistemas naujesni.
WOW64, Sutrumpinimas 32 bitų „Windows“ 64 bitų „Windows“ versijoje, yra vienas iš tų tylių inžinerijos pavyzdžių, jungiančių du pasaulius: senųjų programų ir šiuolaikinių architektūrų. Šiame straipsnyje mes nuodugniai išaiškinsime, kas yra WOW64, kaip jis veikia, kodėl egzistuoja, atrodytų, „prieštaringi“ aplankai, tokie kaip SysWOW64 ir System32, ir kaip „Windows“ tvarko visą šį beveik magišką suderinamumą. Visa tai pateikiama aiškia, išsamia kalba, skirta atsakyti į visus jūsų klausimus, nesvarbu, ar esate patyręs vartotojas, IT specialistas ar tiesiog kažkas, kas domisi kompiuterija.
Kas yra WOW64 ir kodėl jis egzistuoja?
Operacinių sistemų atsiradimas 64 bitai Tai buvo reikšminga pažanga našumo ir pajėgumų požiūriu. Tačiau tai kėlė didelį iššūkį: Kas nutiktų daugybei programų, sukurtų 32 bitų sistemai, kurios jau buvo rinkoje? Norėdami išspręsti šią problemą, „Microsoft“ sukūrė WOW64, kuris yra ne kas kita, kaip suderinamumo aplinka integruota į 64 bitų „Windows“. Pagrindinė jos funkcija – leisti programoms, iš pradžių sukurtoms veikti 32 bitų versijose, nepakeistoms veikti naujesnėse 64 bitų sistemose.
Tai yra lengvas vertimo sluoksnis tarp 32 bitų programinės įrangos ir 64 bitų operacinės sistemos. Tikslas yra tas, kad 32 bitų programos „manytų“, jog veikia gimtojoje aplinkoje, nesuvokdamos, kad iš tikrųjų jos veikia kitoje architektūroje. Tačiau nesusipainiokite: WOW64 nėra grynas emuliatorius (kaip „Virtual PC“ ar Vynas), bet suderinamumo sluoksnis, kuris perima, verčia ir nukreipia užklausas iš 32 bitų programinės įrangos, kad 64 bitų sistema jas teisingai suprastų ir apdorotų.
Šis sprendimas buvo būtinas technologiniam perėjimui, leidžiantis vartotojams ir įmonėms toliau naudoti senąją programinę įrangą, palaipsniui pereinant prie vietinių 64 bitų programų.
Pagrindiniai komponentai: kaip WOW64 veikia viduje
WOW64 veikimą palaiko keletas funkcijų DLL bibliotekos kurie veikia koordinuotai, kad atliktų sistemos iškvietimų vertimą ir peradresavimą, taip pat procesoriaus lygio suderinamumo valdymą.
- wow64.dllTai yra pagrindinė sistemos biblioteka. Ji atsakinga už 32 bitų API emuliacijos valdymą 64 bitų aplinkoje. Ji veikia kaip tarpinis sluoksnis ir yra atsakinga už sistemos iškvietimų iš 32 bitų programinės įrangos vertimą / peradresavimą.
- wow64win.dllPapildo wow64.dll, valdydamas 64 bitų API iškvietimų peradresavimą ir pritaikydamas savo veikimą taip, kad 32 bitų programos galėtų juos naudoti be problemų.
- wow64cpu.dllAtsakingas už 32 bitų instrukcijų vertimą į 64 bitų instrukcijas tiesiogiai procesoriaus lygmenyje. Tai užtikrina, kad procesoriaus instrukcijos, skirtos x86 programoms, tinkamai veiktų šiuolaikinėje x64 architektūroje.
Kiekviena iš šių bibliotekų atlieka esminį vaidmenį, kad procesas būtų kuo efektyvesnis ir skaidresnis vartotojui. Kai 32 bitų programa paleidžiama 64 bitų „Windows“ sistemoje, šios DLL atlieka visą „nematomą“ darbą, reikalingą, kad ji tinkamai veiktų.
Be to, yra ir kitų papildomų bibliotekų, kurios tvarko konkretų architektūrų suderinamumą, pvz. Itanas (IA-64), ARM64 arba CHPE (hibridinio nešiojamojo vykdomojo failo) technologija, naudojama „Windows 10 ARM“ sistemoje. Pavyzdžiui, „wowia32x.dll“ „Itanium“ sistemoje ir „xtajit.dll“ ARM64 sistemoje išplečia šią funkciją pagal procesoriaus tipą.
Kas slypi už „System32“ ir „SysWOW64“? Būtinas dvilypumas
Viena iš detalių, keliančių daugiausia painiavos tarp 64 bitų „Windows“ naudotojų, yra dviejų aplankų, kurių pavadinimai atrodo prieštaringi, egzistavimas: System32 y SysWOW64Įdomu tai, kad, priešingai nei galima pamanyti iš pavadinimo, aplankas System32 saugo failus 64 bitaiO SysWOW64 Jis yra atsakingas už failų išsaugojimą 32 bitaiKodėl taip nutinka?
Paaiškinimas slypi tame, suderinamumasDaugelyje senesnių 32 bitų programų kelias buvo naudojamas kietojoje programinėje įrangoje. C:\Windows\System32
ieškoti DLL failų ir sistemos komponentų. Jei „Microsoft“ būtų pervadinusi šį aplanką migruodama į 64 bitų versiją, milijonai programų būtų nustojusios veikti, nes nerastų savo failų. Norėdami išvengti šios problemos, System32 Jis išlaikė savo istorinį pavadinimą, bet pradėjo talpinti 64 bitų failus.
Be to, siekiant užtikrinti, kad 32 bitų programos nebandytų įkelti 64 bitų DLL (dėl ko kiltų rimtų klaidų), aplankas buvo sukurtas SysWOW64, kuri veikia kaip išskirtinė 32 bitų failų ir DLL saugykla. Čia yra WOW64 posistemis: kai 32 bitų programa ieško failo System32
, WOW64 automatiškai nukreipia tą užklausą į SysWOW64
Taigi, programinė įranga ir toliau „tiki“, kad veikia tradiciniu būdu, tačiau iš tikrųjų ji naudoja failus iš savo architektūros.
Rezultatas – sklandus sambūvis: kiekvienas programos tipas naudoja savo bibliotekas, taip išvengiant konfliktų ir užtikrinant stabilų veikimą.
Peradresavimo magija: kaip WOW64 valdo išteklius ir skambučius
WOW64 efektyvumą lemia ne tik instrukcijų vertimas, bet ir sumanus skirtingų išteklių, kelių ir operacinės sistemos iškvietimų valdymas.
Pavyzdžiui, kai 32 bitų programai reikia pasiekti sistemos failus, WOW64 automatiškai peradresuoja savo užklausas, kad būtų naudojamos teisingos bibliotekų ar vykdomųjų failų versijos. Tas pats pasakytina ir apie „Windows“ registras: Įrašai, skirti 32 bitų ir 64 bitų programoms, yra atskirti.
Šis peradresavimo sluoksnis apsaugo nuo daugybės galimų klaidų. Pavyzdžiui, jei 32 bitų programa bandytų įkelti 64 bitų DLL failą, sistema iš karto užstrigtų. Štai kodėl labai svarbu, kad failai, sukompiliuoti tam tikram bitų greičiui, visada būtų įdiegti teisingame aplanke; kitaip programa net nepasileis arba veiks netinkamai.
Be to, WOW64 posistemis egzistuoja nuo 64 bitų „Windows XP“ sistemų ir iš esmės nepakito visose šiuolaikinėse „Windows“ versijose, įskaitant „Windows Vista“, 7, 8, 10 ir „Windows Server“. Net ir langai 11Nors perėjimas prie gimtosios 64 bitų programinės įrangos beveik baigtas, WOW64 ir toliau atlieka svarbų vaidmenį palaikant senesnes programas.
Techninės detalės: Kaip WOW64 valdo vykdymą ir atmintį
WOW64 veikimas yra nepaprastai sudėtingas. Veikia toliau vartotojo režimas, suteikia sąsają tarp 32 bitų ntdll.dll failų ir 64 bitų operacinės sistemos branduolio. Jis perima branduolio iškvietimus ir nukreipia juos per savo bibliotekas, valdydamas tai, kas vadinama dunksėjimas (procesas, kurio metu skambučiai ir duomenys pritaikomi tarp 32 bitų ir 64 bitų aplinkos).
Paleidžiant 32 bitų programą, wow64.dll įkelia atitinkamą x86 ntdll.dll versiją (arba CHPE versiją, jei ją palaiko ARM sistema) ir inicijuoja visus reikiamus DLL failus, kurie paprastai yra tokie patys kaip ir bet kurioje kitoje 32 bitų „Windows“ versijoje, nors kai kurie yra pritaikyti našumui optimizuoti arba atmintimi dalytis su 64 bitų sistema.
Viena iš pagrindinių problemų yra tai, kaip tvarkomi sisteminiai iškvietimai. Užuot leidus 32 bitų vykdomiesiems failams naudoti tradicines x86 paslaugų iškvietimų sekas, jie nukreipiami naudoti pasirinktinę, nebrangią perimti seką. Tai leidžia jiems likti vartotojo režimu, palengvina stebėjimą ir sumažina galimą poveikį branduolio stabilumui, užkertant kelią rimtoms klaidoms ar pažeidžiamumams.
Atminties adresų lygmenyje sistema rezervuoja viršutines vartotojo adresų erdvės dalis, kad 32 bitų procesai negalėtų pasiekti netinkamų sričių. Tai dar vienas būdas užtikrinti saugumą ir tinkamą abiejų tipų programų sambūvį.
Aplinkos kintamieji ir aplankų organizavimas
Kai 32 bitų procesas sukuria 64 bitų procesą (arba atvirkščiai), WOW64 automatiškai nustato atitinkamus aplinkos kintamuosius gautam procesui. Pavyzdžiui, 32 bitų procesas turės tokius kintamuosius kaip PROCESSOR_ARCHITECTURE=x86
ir aplankų kelius Program Files (x86), SysWOW64ir kt., o 64 bitų procesas naudos AMD64, System32 y Program Files "šiaip taip."
Teisingas šių kintamųjų priskyrimas ir naudojimas yra labai svarbus tiek programos diegimui, tiek jos veikimui, siekiant išvengti persidengimų ar programų failų paieškos netinkamose vietose. Todėl diegėjai turi atkreipti ypatingą dėmesį į šiuos kelius; kitaip programos gali nepasileisti, rodyti klaidas arba tiesiog veikti netvarkingai.
O kaip dėl globalių kabliukų ir DLL?
Kuriant programinę įrangą „Windows“ sistemai, dažnai naudojami vadinamieji „programinės įrangos integravimo“ metodai. pasauliniai kabliukai (arba kabliukų). Funkcija SetWindowsHookEx
leidžia įterpti DLL failus į kitus procesus, kad būtų galima perimti sistemos įvykius. WOW64 nustato keletą svarbių apribojimų, siekiant išvengti konfliktų ir užtikrinti stabilumą:
- 32 bitų DLL galima įterpti tik į 32 bitų procesus, o 64 bitų DLL – tik į 64 bitų procesus.
- Skirtingų architektūrų DLL turi turėti skirtingus pavadinimus.
- Tame pačiame procese neįmanoma maišyti skirtingų architektūrų DLL.
Tai užtikrina, kad 32 bitų ir 64 bitų procesų suderinamumas ir izoliacija būtų palaikoma visada, net ir atliekant sudėtingas operacijas, pvz., naudojant kabliukus.
Suderinamumas, apribojimai ir specialūs atvejai
Nors WOW64 yra suderinamumo stebuklas, tai nėra stebuklinga lazdelė. Yra programų, kurios dėl savo prigimties negali tinkamai veikti „emuliuotoje“ aplinkoje arba po suderinamumo sluoksniu. Pavyzdžiui, taip yra su kai kuriomis antivirusinėmis programomis ir programine įranga, kuri tiesiogiai sąveikauja su operacine sistema. techninė įranga žemu lygiu. Tokiais atvejais Būtina turėti gimtąją 64 bitų versiją.
Kaip programinės įrangos diegimasvisada rekomenduojama atsižvelgti į kiekvienai architektūrai skirtus aplankus. Todėl 32 bitų programos turėtų būti diegiamos naudojant Programos failai (x86) ir atitinkamus DLL failus SysWOW64, o visa 64 bitų programinė įranga turi naudoti standartinius kelius Programos failai y System32Tai padeda išvengti klaidų ir gedimų, kylančių maišant skirtingų architektūrų failus.
WOW64 skirtingose architektūrose: x64, ARM ir kt.
WOW64 įgyvendinimas skiriasi priklausomai nuo procesoriaus architektūros. X64 sistemose (dažniausiai pasitaikančiose) CPU persijungia iš 64 bitų režimo į suderinamumo režimą, kai reikia paleisti 32 bitų kodą, todėl šis procesas yra labai efektyvus ir nereikalauja grynos emuliacijos.
Rečiau pasitaikančiuose procesoriuose, tokiuose kaip "Intel" Itanas arba sistemos ARM64, istorija kitokia. Čia WOW64 apima papildomas bibliotekas, skirtas x86 instrukcijoms emuliuoti arba suderinamumui palengvinti, pvz. IA32Exec.bin, wowia32x.dll, xtajit.dll o wowarmw.dllPavyzdžiui, „Windows 10 ARM“ sistemoje ši technologija pristatoma. CHPE (Hybrid Portable Compiled Executable), kuris optimizuoja x86 programų vykdymą ARM aplinkoje.
Dėl visų šių pritaikymų WOW64 išlieka veiksmingu sprendimu įvairiose aplinkose, pailgindamas 32 bitų programinės įrangos gyvavimo trukmę labiau, nei daugelis galėtų įsivaizduoti.
Pagrindiniai 32 bitų ir 64 bitų programų skirtumai sistemoje „Windows“
Dviejų tipų programinės įrangos sambūvis yra įmanomas dėl aiškiai apibrėžtų skirtumų sandėliavimas ir dvejetainių failų valdymas:
- System32: 64 bitų „Windows“ sistemoje saugomi 64 bitų sistemos failai ir DLL.
- SysWOW64: saugo 32 bitų failus ir DLL, specialiai skirtus WOW64 posistemei.
- Programos failai: aplankas, skirtas 64 bitų programoms.
- Programos failai (x86): Specialus aplankas 32 bitų programoms.
Šis atskyrimas yra būtinas, kad sistema automatiškai nuspręstų, kurį kelią ir failus naudoti kiekvieno tipo programinei įrangai, užtikrindama stabilumą ir išvengdama vykdymo klaidų. Apskritai, nors 32 bitų programos ir toliau veikia tinkamai dėl WOW64, patartina pereiti prie 64 bitų programinės įrangos, kad būtų geriau panaudoti ištekliai ir pagerintas ilgalaikis saugumas.
Aistringas rašytojas apie baitų pasaulį ir technologijas apskritai. Man patinka dalytis savo žiniomis rašydamas, būtent tai ir darysiu šiame tinklaraštyje, parodysiu jums įdomiausius dalykus apie programėles, programinę įrangą, techninę įrangą, technologijų tendencijas ir kt. Mano tikslas – padėti jums paprastai ir smagiai naršyti skaitmeniniame pasaulyje.