- Windows NT'nin alt sistem yapısı, farklı işletim sistemleri için uygulama çalıştırmak amacıyla bir API çağrı dönüştürme katmanı olarak gelmiştir
- WSL1 bu geleneği sürdüren biçimde, Linux çağrılarını Windows çekirdek çağrılarına dönüştüren hafif bir çeviri katmanı olarak çalışır
- WSL2, performans sorunlarını çözmek için Hyper-V tabanlı tam bir Linux VM'e geçerek gerçek bir Linux çekirdeği çalıştırır
- WSL2, dinamik bellek yönetimi, Windows sürücü montajı, WSLg ile GUI entegrasyonu gibi özellikleriyle klasik VM'den daha yüksek entegrasyon sağlar
- Dosya yönetiminin zorlukları ve disk imajına bağımlılık gibi sınırlamalar olsa da, WSL1 ve WSL2'nin artılarını ve eksilerini duruma göre seçebilmeyi sağlayan esneklik önemlidir
Windows NT'deki alt sistem kavramı
- Windows NT'deki alt sistem (subsystem), farklı işletim sistemlerine ait programları çalıştırmak için bir API kümesi ve çağrı dönüştürme katmanı anlamına gelir
- Geçmişte NT'de OS/2 alt sistemi (OS2SS.EXE), POSIX alt sistemi (PSXSS.EXE) bulunuyordu
- CSRSS.EXE, Win32 API çeviri katmanıydı; bazı işlevler çekirdek moduna (
WIN32K.SYS) taşındı
- POSIX alt sistemi, devlet onayı için minimum düzeyde bir uygulamaydı ve daha sonra Interix tabanlı Windows Services for Unix ile değiştirildi
WSL1: Çeviri tabanlı Linux katmanı
- WSL1 (Windows Subsystem for Linux), Linux sistem çağrılarını Windows çağrılarına çeviren ince bir çeviri katmanıdır
- Çalıştırıldığında yalnızca birkaç MB bellek kullanan bir
bash süreci bulunur ve Task Manager'da normal bir süreç olarak görünür
- Kök dosya sistemi NTFS üzerindeki tekil dosya yapısında bulunur ve bu nedenle depolama alanı overhead'i neredeyse yoktur
- Kısıtlamalar
- I/O performans düşüşü: Linux ile Win32 dosya sistemi API farkından doğan dönüştürme maliyeti
- GUI çalıştırırken harici bir X sunucusu gerekir (ör. X410)
- Raw socket desteklenmez;
traceroute, nmap, tcpdump gibi araçlar çalıştırılamaz
WSL2: Hyper-V tabanlı Linux VM
- Kullanıcı taleplerine göre Microsoft, Hyper-V üzerinde çalışan tam bir Linux VM modelini benimsedi
- Kök dosya sistemi tek bir VHDX dosyası ile yönetilir
wsl --set-version "Ubuntu" 2 komutuyla WSL1 ile WSL2 arasında geçiş yapılabilir
- Performans özellikleri
- İlk açılış yavaştır ama yerel Linux çekirdeği çalıştırılır
- Bellek kullanımı dinamik olup, fiziksel belleğin en fazla yarısına kadar genişleyebilir
stress testi sonuçlarına göre, bellek kullanımı yük arttıkça yükselir ve sonra otomatik olarak düşer
- İstenirse
wsl --shutdown komutuyla VM kapatılabilir
WSL2'nin entegrasyon özellikleri ve sınırlamaları
- WSL2, geleneksel VM'lerin aksine Windows ile entegrasyonu güçlendirir
- Windows sürücülerinin otomatik montajı, Linux sürücülerine
\\wsl$ yolu ile erişim, WSLg ile GUI uygulamaları çalıştırma
- GUI uygulamaları Remote Desktop Protokolü ile akışla iletilir ve DPI veya metin ölçekleme için ayrı ayar gerektirir
- Dosya yönetimi sorunu
- Linux iş verisi,
ext4.vhdx imajının içinde saklandığı için taşınabilirlik ve kurtarma (recovery) riski vardır
wsl --unregister Distro komutu çalıştırıldığında tüm veriler anında silinir
- Windows sürücüsünü (
/mnt/c) kullanırken NTFS + VM ek yükü nedeniyle performans düşer
- Dosya sistemi protokolü
- WSL1
drvfs, WSL2 ise Plan9'un 9p protokolünü kullanır
- Dönüşümde
drvfs yüzünden kalan bazı hata örnekleri belirtilir
- Alternatif
- Ayrı bir VHDX imajı oluşturarak
wsl --mount --vhd ile mount etmek ve iş verisini ayırmak önerilir
.wslconfig içinde otomatik ayar yapılamaz, script ile işlenmesi gerekir
Sonuç
- Windows NT'nin modüler tasarımı ve kararlı çekirdek ABI'si, eski sürücü uyumluluğunu korur
- WSL1 hafif bellek kullanımının avantajına sahiptir; WSL2 ise gerçek Linux çekirdeği ile daha yüksek uyumluluk ve performans sağlar
- WSL2, VM'in dezavantajlarını en aza indirip ana işletim sistemiyle entegrasyonu güçlendiren bir yapıdır
- Geleneksel bir tanıma göre VM'e yakın olsa da, hafif entegre bir ortam olarak “alt sistem” denmeye değer
Henüz yorum yok.