Şarap emülatör değil nasıl?


23

Emülatörleri anladığım kadarıyla (basit bir şekilde), sistemin X fonksiyonlarını kullanan bir programın fonksiyon çağrılarını, programın üzerinde çalıştığı Y sisteminin kullandığı fonksiyonlara çevirir ya da değiştirir. Wine projesi Wine'ın Emulator olmadığını iddia ediyor, çünkü:

Wine, sanal bir makine veya öykünücü gibi dahili Windows mantığını simüle etmek yerine, Windows API çağrılarını anında POSIX çağrılarına çevirir, diğer yöntemlerin performansını ve bellek cezalarını ortadan kaldırır ve Windows uygulamalarını masaüstünüze temiz bir şekilde entegre etmenizi sağlar.

Öyleyse, öykünücüler ve sanal makineler, Windows olmayan sistemlerde dahili Windows mantığını nasıl simüle eder? Bu, Windows sistem çağrılarını ana bilgisayarın kendi çağrılarına çevirerek yapmıyor mu? Öykünücülerle öykünücüler (Wine gibi) arasındaki fark, öykünücüler bütün bir işletim sistemini taklit ediyor mu, o zaman uygulama, öykünücüler doğrudan uygulamanın çağrısını doğrudan ana bilgisayarın çevirmenlerine çevirirken, öykünücüler bir öykünücüyle konuştuğunu bilmeden bu sistem API'lerini kullanıyor mu? ve uygulama da bilmiyor olabilir)? Ekstra dolaylılık seviyesi, emülatörler ve Şarap arasındaki tek fark mıdır?


7
Normalde, bilgisayar fikirli insanlar "emülatör" kelimesini kullandığında, onlar bir donanım emülatörü, donanımı taklit eden yazılım anlamına gelir . Bu anlamda Şarap bir emülatör değildir. Bununla birlikte, kelimenin Kelimenin sözlük anlamında Wine, Windows'a öykünür ve bu anlamda Wine'a bir Windows öykünücüsü diyebilirsiniz.
Christoffer Hammarström 11:13

1
WINE aynı zamanda hafifçe gerilmiş bir arka plandır, ilk başta WINE oluşturmak için gereken kişiliğe hitap eden bir mizah.
RBerteig 11:13

Yanıtlar:


29

Öyleyse, öykünücüler ve sanal makineler, Windows olmayan sistemlerde dahili Windows mantığını nasıl simüle eder? Bu, Windows sistem çağrılarını ana bilgisayarın kendi çağrılarına çevirerek yapmıyor mu?

Hayır, ya da en azından WINE’ın yaptığı anlamda - sistemin tam anlamıyla çevrilmesiyle kullanıcı alanında bire bir aramalar yapılabilir. Bir emülatör bunu soyut olarak daha dolambaçlı bir yolla yapar; sistem çağrılarını doğrudan çevirmez.

Gerçek bir emülatör , sanal bir işletim sistemi değil, sanal bir makine (örneğin x86-64) oluşturur . Teoride, o makine tipini hedefleyen herhangi bir işletim sistemini çalıştırabilirsiniz. Yaygın olarak bir "emülatör" işletim sistemini içerir, ancak aslında taklit ettiği şey bu değildir; İçerdiği işletim sistemi gerçek bir makinede çalışan sistemle aynı.

Emülatörler bazen ana makineden farklı bir donanımı taklit etmek için kullanılır, aynı zamanda bir işletim sistemini diğerinin içinde çalıştırmak için aynı olan donanımı da kullanır.

ŞARAP bundan farklıdır, çünkü aslında pencereler değildir. İçinde gerçek bir Windows kopyası bulunan bir x86-64 öykünücüsünü çalıştırabilirsiniz, ancak WINE da öyle değil. Bir emülatörden aslında daha verimli olduğu iddiası anlamlıdır - sadece sistem çağrılarını çevirmenin ek yükü büyük olasılıkla bir VM çalıştırmaya göre daha düşüktür. Dezavantajı, ŞARAP'ın sadece pencere olabilmesidir; Normal bir VM'de olduğu gibi başka bir işletim sistemi ile kullanamazsınız .


13

Java Sanal Makineleri'ni düşünün. Hiçbir JVM başkalarını taklit etmez, hepsi bir şartname uygulamasıdır. Şarap, win32 api'yi taklit etmiyor, bunun bir uygulaması. Şartlar ve gerçekler mutlaka eşleşmiyor, hem Microsoft'un uygulamasının hem de Wine'ın uygulamasının hata kodunun çalışması için geçici çözümleri var ve hangi uygulamanın herhangi bir proje için daha iyi bir hedef olduğu kesin olarak belli değil.


4

Wine, Windows API çağrılarını engelleyen ve bunları anında ilgili Linux API çağrılarına dönüştüren bir altlıktır. Bir emülatör veya sanal makine, bunun yerine fiziksel bir makineye öykünür. Açıkçası bir şim daha verimlidir, ancak istenen işlevselliği taklit edebilme yeteneğine sahip olmayabilir.


0

Emülatörler, normalde bir Windows uygulamasını çalıştıran işlemciyi ve / veya işletim sistemini sanallaştırır; işlemcinin / işlem platformunun kendi mantığını ve davranışını, başka bir işletim sistemi / işlemci platformunun üzerinde çalışan emülatör uygulamasında mantık ve davranışlarını oluşturarak sanallaştırır. Wine, Windows işletim sistemi / işlemci davranışını sanallaştırmaz, ancak Windows uygulamasını Windows işletim sistemi ile aynı soyutlama düzeyinde çalıştırır. Bunu, doğrudan Unix tabanlı işletim sistemi / işlemci platformunda çalışmak üzere Windows API'sini yeniden uygulayarak yapar. Diğer bir deyişle, Wine, Windows API çağrı isteklerini doğrudan fiziksel işlemciyle doğrudan iletişim kuran eşdeğer Unix tabanlı koda çeviren bir dizi derlenmiş DLL kümesi olan Windows işletim sisteminin temel öğelerinin yeniden uygulanmasıdır.

Bu, bazen Wine + Linux'un Windows uygulamasını Windows'tan daha hızlı çalıştırmasını sağlayacak çalışma zamanı bağlamları olduğu anlamına gelir! Bir Emulator hiçbir zaman bu olasılığa sahip olamaz çünkü kodu Unix tabanlı platformun üstündeki CPU / WinOS platformunu daha yüksek bir soyutlama düzeyinde simüle etmekle meşgul olacaktı. Bu durumda, bir Windows uygulamasını çalıştırmak için daha fazla çeviri ve arayüz gereklidir. (Aşağıdaki şemaya bakınız)

Kısacası, Wine, Windows öykünmesi değil, Windows'un yeniden uygulanmasıdır.

görüntü tanımını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.