Skip to content

Bele knjige ​

Ta dokument poglobljeno obravnava arhitekturno zasnovo WSL Dashboard, izbiro tehnologij ter logiko izvedbe ključnih funkcij v ozadju ter razvijalcem in naprednim uporabnikom ponuja tehnično poglobljen pogled.

1. Arhitekturni pregled ​

WSL Dashboard uporablja klasično arhitekturo odzivni UI pogon + asinhrone naloge v ozadju, pri čemer sistem tipov in model lastništva jezika Rust zagotavljata pomnilniško varnost in visoko zmogljivost ob hkratnem delovanju.

Osrednje komponente ​

  • Frontend (UI): deklarativni vmesnik, ki temelji na Slint. Nit UI je odgovorna za upodabljanje in uporabniške interakcije.
  • Backend (Runtime): asinhroni runtime, ki temelji na Tokio. Odgovoren za razporejanje in izvajanje sistemskih ukazov (CLI), vhodno/izhodne operacije z datotekami ter poslušanje omrežja.
  • Komunikacija: nit UI in asinhrone naloge komunicirajo učinkovito in nitno varno prek Channel (MPSC) in Shared State (Arc/Mutex/RwLock).

2. Razlogi za izbiro tehnologij ​

Zakaj Rust? ​

  • Zmogljivost: abstrakcije brez stroškov, prevedeno v izvorno strojno kodo, brez tresljajev GC.
  • Pomnilniška varnost: odpravlja prekoračitve medpomnilnika in podatkovne tekme že v fazi prevajanja – to je ključno za orodja, ki posegajo v sistemske operacije (kot so selitev diskov, konfiguracija omrežja).
  • Velikost binarne datoteke: statično povezuje vse odvisnosti, kar prinaša enojni prenosni izvršljivi program.

Zakaj Slint + Skia? ​

  • Deklarativna sintaksa: opis vmesnika je ločen od logike; koda je lažje vzdržljiva.
  • Skia upodabljanje: neposredna uporaba pospeševanja GPU (prek pogona Skia), ki zagotavlja besedilo s subpikselsko ostrino in gladke animacije.
  • Nizki stroški: v primerjavi z Electron ali WPF so stroški runtime Slint izjemno nizki.

3. Ključne tehnične izvedbe ​

3.1 Zaznavanje in razčlenjevanje instanc WSL ​

Aplikacija v realnem času pridobiva stanje instanc s klicem wsl.exe --list --verbose in razčlenjevanjem njegovega izpisa (obdelava kodiranja UTF-16).

  • Dekodiranje v ozadju: lastni učinkoviti kodirnik/dekodirnik zagotavlja pravilno razčlenjevanje izpisa v okoljih Windows z različnimi regionalnimi nastavitvami.
  • Sinhronizacija stanja: dvojni mehanizem sinhronizacije s časovnim anketiranjem in sprožitvijo ob operacijah.

3.2 Selitev slike diska (VHDX Move) ​

Funkcija selitve izkorišča mehanizem uvoza/izvoza WSL, vendar je visoko abstrahirana in atomarna.

  • Transakcijska zaščita: pred začetkom selitve aplikacija z zaklepom (Mutex) zaklene ciljno distribucijo, da prepreči poškodbe podatkov zaradi sočasnih operacij.
  • Samodejna registracija: po končani selitvi aplikacija samodejno preusmeri pot VHDX in ponovno registrira distribucijo – brez ročnega posredovanja uporabnika.

3.3 Prenašanje vrat in avtomatizacija požarnega zidu ​

Omrežna funkcija ni zgolj preprost klic netsh interface portproxy.

  • Upravljanje življenjskega cikla pravil: aplikacija samodejno zaznava obstoječa pravila požarnega zidu. Ko uporabnik ustvari prenos, aplikacija prek API-ja Windows ali CLI sinhrono ustvari izjemo za dohodna pravila.
  • Samodejno pridobivanje IP: s razčlenjevanjem rezultata wsl hostname -I samodejno preslika virtualne omrežne IP med gostiteljem in instanco.

3.4 Integracija USBIP ​

Uporablja vmesnik ukazne vrstice usbipd-win.

  • Obdelava povišanja pravic: vezanje zahteva skrbniška dovoljenja; logika v ozadju izvaja eleganten prenos zahteve za UAC povišanje.
  • Stanjski stroj stanja: notranje vzdržuje stanjski stroj povezav USB naprav, ki zagotavlja sledljivost postopkov Attach/Detach.

3.5 Spremljanje virov in lahka zasnova ​

Aplikacija spremlja lastno porabo virov prek izvornih API-jev Windows (kot je GetProcessMemoryInfo).

  • Skrajno lahek: v tihem načinu sistemske vrstice aplikacija proaktivno sprošča nepotrebne vire UI. Za standardne znakovne nabore (npr. angleščina) lahko poraba pomnilnika pade na 10 MB; za zapletene znakovne nabore, kot so kitajščina, japonščina in korejščina, pa je zaradi nalaganja večjih predpomnilnikov upodabljanja pisav poraba približno 38 MB.

4. Merila optimizacije zmogljivosti ​

MeriloCilj/izmerjenoNačin optimizacije
Hitrost zagona< 500 msVnaprej preveden vmesnik Slint, manj razčlenjevanja v času izvajanja.
Osnovni pomnilnik (sistemska vrstica)~10 MBMinimizirana pogostost anketiranja v ozadju, sproščanje predpomnilnika upodabljanja po potrebi.
Poraba CPU (mirovanje)< 0,1 %Uporaba dogodkovnega modela Windows, izogibanje praznim zankam anketiranja.
Hitrost upodabljanja60 FPSPospeševanje GPU Skia, subpikselsko izravnavanje.

5. Logika razporejanja nalog v ozadju ​

Za gladkost UI se vse dolgotrajne operacije (kot je izvoz VHDX) razporejajo kot asinhrone naloge:

  1. Zapakiranje zahteve: nit UI zapakira uporabniško operacijo v sporočilo Command.
  2. Sporočilni kanal: pošlje v obdelovalnik nalog v ozadju prek tokio::sync::mpsc.
  3. Povratno posredovanje stanja: po končani nalogi v ozadju se UI posodobi prek povratnih klicev ali deljenega stanja. Ta zasnova zagotavlja, da vmesnik tudi pri obdelavi varnostnih kopij velikosti več GB še vedno v realnem času odziva na klike uporabnika.

6. Varnostni vidiki ​

  • Atomske operacije: za ključne odstranitve instanc in selitve so implementirani predhodni pregledi.
  • Upravljanje UAC povišanja: dovoljenja se zahtevajo le, kadar je to nujno (npr. pri vezanju USB naprav), v skladu z načelom najmanjših dovoljenj.
  • Lokalno shranjevanje: nastavitve se shranjujejo izključno lokalno v ~\.wsldashboard, brez kakršne koli sinhronizacije v oblak – zaščita zasebnosti uporabnika.