Skip to content

Teknik Rapor

Bu belge, WSL Dashboard'ın temel özelliklerinin mimari tasarımı, teknoloji tercihleri ve altta yatan uygulama mantığı hakkında derinlemesine bir bakış sunar; teknik perspektif arayan geliştiriciler ve ileri düzey kullanıcılar için tasarlanmıştır.

1. Mimari Genel Bakış

WSL Dashboard, Rust'un tür sistemi ve sahiplik modelini kullanarak bellek güvenliğini ve yüksek eşzamanlılık performansını garanti eden, klasik bir reaktif UI-tabanlı + asenkron backend görev mimarisi benimser.

Temel Bileşenler

  • Frontend (UI): Slint bildirimsel arayüzü üzerine inşa edilmiştir. UI iş parçacığı, işleme ve kullanıcı etkileşiminden sorumludur.
  • Backend (Runtime): Tokio asenkron çalışma zamanı üzerine inşa edilmiştir. Sistem komutlarının (CLI), dosya G/Ç ve ağ dinleyicilerinin gönderilmesi ve yürütülmesinden sorumludur.
  • İletişim: UI iş parçacığı ve asenkron görevler, Kanallar (MPSC) ve Paylaşımlı Durum (Arc/Mutex/RwLock) aracılığıyla verimli ve iş parçacığı güvenli bir şekilde iletişim kurar.

2. Teknoloji Gerekçesi

Neden Rust?

  • Performans: Sıfır maliyetli soyutlamalar, yerel makine koduna derleme, GC duraklaması yok.
  • Bellek Güvenliği: Derleme anında tampon taşmaları ve veri yarışmalarını ortadan kaldırır — sistem düzeyinde (disk geçişi, ağ yapılandırması) çalışan bir araç için kritik.
  • İkili Boyut: Tüm bağımlılıkları statik olarak bağlayarak tek dosyalık taşınabilir bir yürütülebilir dosya üretir.

Neden Slint + Skia?

  • Bildirimsel Sözdizimi: UI tanımlamasını mantıktan ayırır, kod tabanını temiz ve sürdürülebilir tutar.
  • Skia İşleme: GPU hızlandırmayı doğrudan kullanır (Skia motoru aracılığıyla), alt piksel metin netliği ve akıcı animasyonlar sunar.
  • Düşük Yük: Electron veya WPF ile karşılaştırıldığında Slint'in çalışma zamanı ayak izi minimumdur.

3. Önemli Teknik Uygulamalar

3.1 WSL Örnek Tespiti ve Ayrıştırma

Uygulama, wsl.exe --list --verbose komutunu çağırarak ve çıktısını ayrıştırarak (UTF-16 kodlaması işleme) gerçek zamanlı örnek durumunu alır.

  • Düşük düzeyde kod çözme: Özel yapım, verimli bir kodlayıcı/kod çözücü, farklı bölgesel ayarlara sahip Windows ortamlarında doğru çıktı ayrıştırmasını sağlar.
  • Durum senkronizasyonu: Zamanlanmış yoklama ile işlem tetiklemeli güncellemeleri birleştiren çift senkronizasyon mekanizması kullanır.

3.2 Disk Görüntüsü Geçişi (VHDX Taşıma)

Geçiş özelliği, WSL'nin içe/dışa aktarma mekanizmasını kullanır, ancak yüksek düzeyde soyutlama ve atomiklik ile.

  • İşlem garantisi: Geçiş başlamadan önce uygulama, eşzamanlı işlemlerin veri bozulmasına neden olmasını önlemek için Mutex aracılığıyla hedef dağıtımı kilitler.
  • Otomatik kayıt: Geçiş tamamlandıktan sonra uygulama otomatik olarak VHDX yolunu yeniden yönlendirir ve dağıtımı yeniden kaydeder — manuel müdahale gerekmez.

3.3 Port Yönlendirme ve Güvenlik Duvarı Otomasyonu

Ağ özelliği, basit bir netsh interface portproxy çağrısının ötesine geçer.

  • Kural yaşam döngüsü yönetimi: Uygulama, mevcut güvenlik duvarı kurallarını otomatik olarak algılar. Kullanıcı bir yönlendirme kuralı oluşturduğunda, Windows API veya CLI aracılığıyla eşzamanlı olarak bir gelen istisna kuralı oluşturur.
  • Otomatik IP çözümleme: wsl hostname -I çıktısını ayrıştırarak, konuk bilgisayar ve örnek arasındaki sanal ağ IP'lerini otomatik olarak eşler.

3.4 USBIP Entegrasyonu

usbipd-win komut satırı arayüzünü kullanır.

  • Yükseltme yönetimi: Bağlama işlemleri yönetici ayrıcalıkları gerektirir. Backend, zarif UAC yükseltme talebi yönlendirmesi uygular.
  • Durum makinesi: Attach/Detach işlemlerinin tam izlenebilirliğini sağlamak için dahili bir USB cihaz bağlantı durum makinesi sürdürür.

3.5 Kaynak İzleme ve Minimum Ayak İzi

Uygulama, yerel Windows API'lerini (örn. GetProcessMemoryInfo) çağırarak kendi kaynak kullanımını izler.

  • Aşırı verimlilik: Sessiz tepsi modunda uygulama, gereksiz UI kaynaklarını proaktif olarak serbest bırakır. Standart karakter setleri (örn. İngilizce) için bellek kullanımı 10MB kadar düşük olabilir; karmaşık karakter setleri (örn. CJK) için, daha büyük yazı tipi işleme önbelleği nedeniyle yaklaşık 38MB'dir.

4. Performans Karşılaştırmaları

MetrikHedef / ÖlçülenOptimizasyon Yaklaşımı
Başlangıç Süresi< 500msÖnceden derlenmiş Slint arayüzü, çalışma zamanı ayrıştırmasını en aza indirme.
Temel Bellek (tepsi)~10MBEn aza indirilmiş arka plan yoklama sıklığı, isteğe bağlı işleme önbelleği serbest bırakma.
CPU Kullanımı (boşta)< 0.1%Windows olay odaklı model, meşgul döngü yoklaması yok.
Kare Hızı60 FPSSkia GPU hızlandırma, alt piksel kenar yumuşatma işleme.

5. Backend Görev Dağıtım Mantığı

UI yanıt verebilirliğini sağlamak için, tüm zaman alan işlemler (örn. VHDX dışa aktarma) asenkron görevler olarak gönderilir:

  1. İstek sarmalama: UI iş parçacığı, kullanıcı eylemlerini Command mesajlarına sarmalar.
  2. Mesaj kanalı: tokio::sync::mpsc aracılığıyla arka plan görev işleyicisine gönderir.
  3. Durum geri çağrısı: Arka plan görevi tamamlandığında, geri çağırma veya paylaşımlı durum aracılığıyla UI'ı günceller. Bu tasarım, birkaç gigabaytlık bir yedekleme görevi işlenirken bile arayüzün kullanıcı girdisine tamamen yanıt verici kalmasını sağlar.

6. Güvenlik Hususları

  • Atomik işlemler: Kritik örnek kayıt kaldırma ve geçiş işlemleri için uçuş öncesi doğrulama uygulanmıştır.
  • UAC yükseltme yönetimi: Yükseltilmiş ayrıcalıklar yalnızca gerektiğinde istenir (örn. USB cihazı bağlama), en az ayrıcalık ilkesine uygun olarak.
  • Yerel depolama: Yapılandırma yalnızca yerel ~\.wsldashboard dizinine kaydedilir; hiçbir bulut senkronizasyonu yoktur, kullanıcı gizliliğini korur.