Skip to content

Oq qog'oz ​

Ushbu hujjat WSL Dashboard'ning arxitektura dizayni, texnologiya tanlovi va asosiy funksiyalarning past darajadagi amalga oshirish mantiqini chuqur tahlil qiladi, ishlab chiquvchilar va ilg'or foydalanuvchilar uchun texnik chuqurlik nuqtai nazarini taqdim etish maqsadida.

1. Arxitektura umumiy nuqtai ​

WSL Dashboard klassik reaktiv UI boshqaruvi + asinxron backend vazifalari arxitekturasini qo'llaydi, Rust tilining tip tizimi va egalik modelidan foydalanib xotira xavfsizligi va yuqori parallellik unumdorligini ta'minlaydi.

Asosiy komponentlar ​

  • Frontend (UI): Slint deklarativ interfeysi asosida. UI ipi render va foydalanuvchi o'zaro aloqasini bajaradi.
  • Backend (Runtime): Tokio asinxron runtime asosida. Tizim buyruqlarini (CLI) taqsimlash va bajarish, fayl I/O va tarmoq tinglashni amalga oshiradi.
  • Communication: UI ipi va asinxron vazifalar Channel (MPSC) va Shared State (Arc/Mutex/RwLock) orqali samarali, ip-xavfsiz aloqa qiladi.

2. Texnologiya tanlovi sabablari ​

Nima uchun Rust? ​

  • Unumdorlik: Nol xarajatli abstraksiyalar, mahalliy mashina kodiga kompilyatsiya qilinadi, GC tebranishlari yo'q.
  • Xotira xavfsizligi: Kompilyatsiya bosqichida bufer toshib ketishi va ma'lumot poygalarini bartaraf etadi, bu tizim past darajasidagi amallar (disk ko'chirish, tarmoq sozlash kabi) bilan shug'ullanadigan vositalar uchun muhimdir.
  • Binar hajmi: Barcha bog'liqliklar statik ulanadi, yagona faylli portativ ijro etiladigan dastur hosil qiladi.

Nima uchun Slint + Skia? ​

  • Deklarativ sintaksis: Interfeys tavsifi va mantiq ajratilgan, kodni saqlash oson.
  • Skia render: To'g'ridan-to'g'ri GPU tezlashtirishdan (Skia dvigateli orqali) foydalanadi, subpiksel aniqlikdagi matn va silliq animatsiya effektlarini taqdim etadi.
  • Past qo'shimcha xarajat: Electron yoki WPF bilan solishtirganda, Slint runtime qo'shimcha xarajati juda kichik.

3. Asosiy texnik amalga oshirish ​

3.1 WSL instansiyalarini aniqlash va tahlil qilish ​

Ilova wsl.exe --list --verbose chaqirib, uning chiqishini tahlil qilish orqali (UTF-16 kodlashni qayta ishlash) real vaqtda instansiya holatini oladi.

  • Past darajadagi dekodlash: O'z ishlab chiqilgan samarali kodlash-dekodlash qurilmasi, turli mintaqa sozlamalaridagi Windows muhitlarida chiqishni to'g'ri tahlil qilishni ta'minlaydi.
  • Holat sinxronizatsiyasi: Davriy poll + amal bilan ishga tushiriladigan ikki tomonlama sinxronlash mexanizmi qo'llaniladi.

3.2 Disk tasvirini ko'chirish (VHDX Move) ​

Ko'chirish funksiyasi WSL'ning import-eksport mexanizmidan foydalanadi, lekin yuqori darajada abstraktsiya qilinadi va atomik ishlanadi.

  • Tranzaksiya kafolati: Ko'chirish boshlanishidan oldin ilova Mutex orqali maqsadli distributivni bloklaydi, parallel amallar tufayli ma'lumotlarning shikastlanishini oldini oladi.
  • Avtomatik ro'yxatdan o'tkazish: Ko'chirish tugagach, ilova VHDX yo'lini avtomatik qayta yo'naltiradi va distributivni qayta ro'yxatdan o'tkazadi, foydalanuvchi qo'lda aralashuvi shart emas.

3.3 Port yo'naltirish va xavfsizlik devori avtomatlashtirishi ​

Tarmoq funksiyasi oddiy netsh interface portproxy chaqiruvidan iborat emas.

  • Qoida hayot sikli boshqaruvi: Ilova mavjud xavfsizlik devori qoidalarini avtomatik aniqlaydi. Foydalanuvchi yo'naltirish yaratganda, ilova Windows API yoki CLI orqali kirish istisno qoidalarini sinxron yaratadi.
  • IP avtomatik olish: wsl hostname -I natijasini tahlil qilib, xost va instansiya o'rtasidagi virtual tarmoq IP manzillarini avtomatik xaritlaydi.

3.4 USBIP integratsiyasi ​

usbipd-win buyruq qatori interfeysidan foydalanadi.

  • Ruxsat oshirishni qayta ishlash: Bog'lash amali administrator ruxsatini talab qiladi, backend mantiq UAC ruxsat so'rovini nafis tarzda yo'naltiradi.
  • Holat mashinasi: Ichki USB qurilma ulanish holati mashinasi yuritiladi, Attach/Detach jarayonining kuzatilishini ta'minlaydi.

3.5 Resurs monitoringi va yengillik ​

Ilova Windows mahalliy API (masalan, GetProcessMemoryInfo) chaqirib o'z resurs bandligini kuzatadi.

  • Juda yengil: Tray jim rejimida ilova keraksiz UI resurslarini faol bo'shatadi. Ingliz tili kabi standart belgilar to'plamlari uchun xotira bandligi 10MB gacha past bo'lishi mumkin; xitoycha, yaponcha, koreyscha kabi murakkab belgilar to'plamlari uchun katta shrift render keshlari yuklanishi sababli taxminan 38MB atrofida bo'ladi.

4. Unumdorlik optimallashtirish ko'rsatkichlari ​

Ko'rsatkichMaqsad/o'lchanganOptimallashtirish usuli
Ishga tushirish tezligi< 500msOldindan kompilyatsiya qilingan Slint interfeysi, runtime tahlilni kamaytiradi.
Asosiy xotira (tray)~10MBFonda poll chastotasini minimallashtirish, render keshlarni ehtiyojga qarab bo'shatish.
CPU bandligi (harakatsiz)< 0.1%Windows hodisaga asoslangan modeldan foydalanish, bo'sh siklda poll qilishni oldini oladi.
Render kadr tezligi60 FPSSkia GPU tezlashtirish, subpiksel aniqlikdagi antialiasing render.

5. Backend vazifa taqsimlash mantig'i ​

UI ravonligini ta'minlash uchun barcha uzoq davom etadigan amallar (masalan, VHDX eksporti) asinxron vazifalar orqali taqsimlanadi:

  1. So'rovni o'rash: UI ipi foydalanuvchi amalini Command xabari sifatida o'rab oladi.
  2. Xabar kanali: tokio::sync::mpsc orqali backend vazifa protsessoriga yuboriladi.
  3. Holatni qaytarish: Backend vazifa tugagach, callback yoki holatni bo'lishish orqali UI yangilanadi. Bu dizayn hatto bir necha GB hajmdagi zaxira vazifalarini qayta ishlashda ham interfeys foydalanuvchi bosishlariga real vaqtda javob berishini ta'minlaydi.

6. Xavfsizlik mulohazalari ​

  • Atomik amallar: Muhim instansiyani o'chirish va ko'chirish uchun oldindan tekshirish amalga oshiriladi.
  • UAC ruxsat oshirish boshqaruvi: Faqat kerak bo'lganda (masalan, USB qurilmani bog'lash) ruxsat so'raladi, minimal ruxsat tamoyiliga amal qilinadi.
  • Mahalliy saqlash: Konfiguratsiya faqat mahalliy ~\.wsldashboard da saqlanadi, hech qanday bulut sinxronizatsiyasi amalga oshirilmaydi, foydalanuvchi shaxsiy hayoti himoyalanadi.