Skip to content

Beyaz Kağıt ​

Bu belge, WSL Dashboard'un mimari tasarımını, teknoloji seçimlerini ve temel özelliklerin arkasındaki uygulama mantığını derinlemesine inceler; geliştiricilere ve ileri düzey kullanıcılara teknik derinlik perspektifi sunar.

1. Mimari Genel Bakış ​

WSL Dashboard, klasik tepkisel UI odaklı + asenkron arka plan görevleri mimarisini benimser; Rust dilinin tip sistemi ve sahiplik modelini kullanarak bellek güvenliği ve yüksek eşzamanlı performans sağlar.

Temel Bileşenler ​

  • Frontend (UI): Slint tabanlı bildirimsel arayüz. UI iş parçacığı görüntüleme ve kullanıcı etkileşiminden sorumludur.
  • Backend (Runtime): Tokio tabanlı asenkron çalışma zamanı. Sistem komutlarının (CLI) dağıtımı, yürütülmesi, dosya G/Ç'si ve ağ dinlemesinden sorumludur.
  • İletişim: UI iş parçacığı ve asenkron görevler, Channel (MPSC) ve paylaşımlı durum (Arc/Mutex/RwLock) aracılığıyla verimli ve iş parçacığı güvenli şekilde iletişim kurar.

2. Teknoloji Seçimi Gerekçeleri ​

Neden Rust? ​

  • Performans: Sıfır maliyetli soyutlamalar, yerel makine koduna derlenir, GC sarsıntısı yok.
  • Bellek Güvenliği: Tampon taşmaları ve veri yarışları derleme zamanında ortadan kaldırılır; bu, düşük seviyeli sistem işlemleri (ör. disk taşıma, ağ yapılandırması) yapan araçlar için kritiktir.
  • İkili Boyut: Tüm bağımlılıkların statik bağlanması, tek dosyalı taşınabilir yürütülebilir program üretir.

Neden Slint + Skia? ​

  • Bildirimsel Sözdizimi: Arayüz tanımı mantıktan ayrılır, kod bakımı kolaylaşır.
  • Skia İşleme: GPU hızlandırmasından (Skia motoru üzerinden) doğrudan yararlanır; alt piksel netliğinde metin ve akıcı animasyonlar sunar.
  • Düşük Yük: Electron veya WPF'ye kıyasla Slint'in çalışma zamanı yükü son derece düşüktür.

3. Temel Teknik Uygulamalar ​

3.1 WSL Örneği Algılama ve Ayrıştırma ​

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

  • Düşük Seviye Kod Çözme: Özel geliştirilmiş verimli kodlayıcı/çözücü, farklı bölgesel ayarlara sahip Windows ortamlarında çıktının doğru ayrıştırılmasını sağlar.
  • Durum Eşitleme: Zamanlanmış yoklama + işlem tetiklemeli çift eşitleme mekanizması.

3.2 Disk Görüntüsü Taşıma (VHDX Move) ​

Taşıma özelliği WSL'nin içe/dışa aktarma mekanizmasını kullanır, ancak yüksek soyutlama ve atomik işlemle uygulanır.

  • İşlemsel Güvence: Taşıma başlamadan önce uygulama, hedef dağıtımı karşılıklı kilit (Mutex) ile kilitler; eşzamanlı işlemlerin veri bozulmasına yol açmasını önler.
  • Otomatik Kayıt: Taşıma tamamlandıktan sonra uygulama VHDX yolunu otomatik yönlendirir ve dağıtımı yeniden kaydeder; elle müdahale gerekmez.

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

Ağ özelliği yalnızca basit bir netsh interface portproxy çağrısı değildir.

  • Kural Yaşam Döngüsü Yönetimi: Uygulama mevcut güvenlik duvarı kurallarını otomatik algılar. Kullanıcı yönlendirme oluşturduğunda, uygulama Windows API veya CLI ile gelen istisna kurallarını eşzamanlı oluşturur.
  • Otomatik IP Alma: wsl hostname -I sonuçlarını ayrıştırarak ana bilgisayar ile örnek arasındaki sanal ağ IP'lerini otomatik eşler.

3.4 USBIP Entegrasyonu ​

usbipd-win komut satırı arayüzünden yararlanır.

  • Hak Yükseltme Yönetimi: Bağlama işlemi yönetici hakları gerektirir; arka plan mantığı zarif bir UAC hak yükseltme talebi iletimi uygular.
  • Durum Makinesi: Dahili olarak bir USB cihaz bağlantı durum makinesi tutar; Attach/Detach süreçlerinin izlenebilirliğini sağlar.

3.5 Kaynak İzleme ve Hafiflik ​

Uygulama, kendi kaynak kullanımını izlemek için Windows yerel API'lerini (ör. GetProcessMemoryInfo) çağırır.

  • Aşırı Hafiflik: Tepside sessiz modda uygulama gereksiz UI kaynaklarını aktif olarak serbest bırakır. İngilizce gibi standart karakter kümelerinde bellek kullanımı 10MB kadar düşük olabilir; Çince/Japonca/Korece gibi karmaşık karakter kümelerinde daha büyük yazı tipi işleme önbelleği yüklenmesi nedeniyle kullanım yaklaşık 38MB civarındadır.

4. Performans Optimizasyon Metrikleri ​

MetrikHedef/ÖlçülenOptimizasyon Yöntemleri
Başlangıç Hızı< 500msÖnceden derlenmiş Slint arayüzü, çalışma zamanı ayrıştırmayı azaltır.
Temel Bellek (tepsi)~10MBArka plan yoklama sıklığını en aza indirir, işleme önbelleğini ihtiyaca göre serbest bırakır.
CPU Kullanımı (boşta)< 0.1%Windows olay odaklı model kullanır, boş döngü yoklaması yapmaz.
İşleme Kare Hızı60 FPSSkia GPU hızlandırma, alt piksel seviyesinde kenar yumuşatma.

5. Arka Plan Görev Dağıtım Mantığı ​

UI akıcılığını garanti etmek için tüm zaman alan işlemler (ör. VHDX dışa aktarma) asenkron görevlerle dağıtılır:

  1. İstek Paketleme: UI iş parçacığı kullanıcı işlemini Command mesajına paketler.
  2. Mesaj Kanalı: tokio::sync::mpsc üzerinden arka plan görev işlemcisine gönderir.
  3. Durum Geri Bildirimi: Arka plan görevi tamamlandığında geri çağırma veya paylaşımlı durumla UI güncellenir. Bu tasarım, GB'larca yedekleme görevi işlenirken bile arayüzün kullanıcı tıklamalarına gerçek zamanlı yanıt vermesini sağlar.

6. Güvenlik Değerlendirmeleri ​

  • Atomik İşlemler: Kritik örnek kaldırma ve taşıma için ön doğrulama uygulanır.
  • UAC Hak Yükseltme Yönetimi: Yalnızca gerektiğinde (ör. USB cihaz bağlama) izin istenir; en az ayrıcalık ilkesine uyulur.
  • Yerel Depolama: Yapılandırma yalnızca yerel ~\.wsldashboard içinde saklanır, bulut eşitleme yapılmaz; kullanıcı gizliliği korunur.