Skip to content

വൈറ്റ് പേപ്പർ ​

ഈ ഡോക്യുമെന്റ് WSL Dashboard-ന്റെ ആർക്കിടെക്ചർ രൂപകൽപ്പന, സാങ്കേതിക തിരഞ്ഞെടുപ്പ്, പ്രധാന ഫീച്ചറുകളുടെ അടിസ്ഥാന നടപ്പാക്കൽ ലോജിക് എന്നിവ ആഴത്തിൽ പര്യവേക്ഷണം ചെയ്യുന്നു, ഡെവലപ്പർമാർക്കും വിദഗ്ദ്ധ ഉപയോക്താക്കൾക്കും സാങ്കേതിക ആഴത്തിലുള്ള കാഴ്ചപ്പാട് നൽകാൻ ലക്ഷ്യമിടുന്നു.

1. ആർക്കിടെക്ചർ അവലോകനം ​

WSL Dashboard ക്ലാസിക്പ്രതികരണശേഷിയുള്ള UI ഡ്രൈവൺ + അസിൻക്രണസ് ബാക്കെൻഡ് ടാസ്ക് ആർക്കിടെക്ചർ ഉപയോഗിക്കുന്നു, Rust ഭാഷയുടെ ടൈപ്പ് സിസ്റ്റവും ഉടമസ്ഥതാ മോഡലും ഉപയോഗിച്ച് മെമ്മറി സുരക്ഷയും ഉയർന്ന കൺകറൻസി പ്രകടനവും ഉറപ്പാക്കുന്നു.

പ്രധാന ഘടകങ്ങൾ ​

  • ഫ്രണ്ട്എൻഡ് (UI): Slint ഡിക്ലറേറ്റീവ് ഇന്റർഫേസിനെ അടിസ്ഥാനമാക്കിയുള്ളത്. UI ത്രെഡ് റെൻഡറിംഗിനും ഉപയോക്തൃ ഇടപെടലിനും ഉത്തരവാദിയാണ്.
  • ബാക്കെൻഡ് (Runtime): Tokio അസിൻക്രണസ് റൺടൈമിനെ അടിസ്ഥാനമാക്കിയുള്ളത്. സിസ്റ്റം കമാൻഡുകൾ (CLI) വിതരണം, നടപ്പിലാക്കൽ, ഫയൽ I/O, നെറ്റ്‌വർക്ക് കേൾക്കൽ എന്നിവയ്ക്ക് ഉത്തരവാദി.
  • ആശയവിനിമയം: UI ത്രെഡും അസിൻക്രണസ് ടാസ്ക്കുകളുംചാനൽ (MPSC),പങ്കിട്ട അവസ്ഥ (Arc/Mutex/RwLock) എന്നിവയിലൂടെ കാര്യക്ഷമമായും ത്രെഡ്-സുരക്ഷിതമായും ആശയവിനിമയം നടത്തുന്നു.

2. സാങ്കേതിക തിരഞ്ഞെടുപ്പിനുള്ള കാരണങ്ങൾ ​

എന്തുകൊണ്ട് Rust? ​

  • പ്രകടനം: പൂജ്യം-ചെലവ് അബ്സ്ട്രാക്ഷൻ, നേറ്റീവ് മെഷീൻ കോഡായി കംപൈൽ ചെയ്യുന്നു, GC ജിറ്റർ ഇല്ല.
  • മെമ്മറി സുരക്ഷ: കംപൈൽ സമയത്ത് ബഫർ ഓവർഫ്ലോയും ഡാറ്റ റേസും ഇല്ലാതാക്കുന്നു, ഇത് സിസ്റ്റം-ലെവൽ പ്രവർത്തനങ്ങൾ (ഡിസ്ക് മൈഗ്രേഷൻ, നെറ്റ്‌വർക്ക് കോൺഫിഗറേഷൻ പോലുള്ളവ) ഉൾപ്പെടുന്ന ടൂളിന് നിർണായകമാണ്.
  • ബൈനറി വലുപ്പം: എല്ലാ ഡിപൻഡൻസികളും സ്റ്റാറ്റിക്കായി ലിങ്ക് ചെയ്യുന്നു, ഒറ്റ ഫയൽ പോർട്ടബിൾ എക്സിക്യൂട്ടബിൾ പ്രോഗ്രാം ഉത്പാദിപ്പിക്കുന്നു.

എന്തുകൊണ്ട് Slint + Skia? ​

  • ഡിക്ലറേറ്റീവ് സിൻ്റാക്സ്: ഇന്റർഫേസ് വിവരണവും ലോജിക്കും വേർതിരിച്ചിരിക്കുന്നു, കോഡ് പരിപാലിക്കാൻ എളുപ്പം.
  • Skia റെൻഡറിംഗ്: GPU ത്വരണം നേരിട്ട് ഉപയോഗിക്കുന്നു (Skia എഞ്ചിൻ വഴി), സബ്-പിക്സൽ നില കൃത്യതയുള്ള അക്ഷരങ്ങളും മിനുസമാർന്ന അനിമേഷൻ പ്രഭാവങ്ങളും നൽകുന്നു.
  • കുറഞ്ഞ മേല്‍ഭാരം: Electron അല്ലെങ്കിൽ WPF-നെ അപേക്ഷിച്ച്, Slint-ന്റെ റൺടൈം മേല്‍ഭാരം വളരെ കുറവാണ്.

3. പ്രധാന സാങ്കേതിക നടപ്പാക്കലുകൾ ​

3.1 WSL ഇൻസ്റ്റൻസ് കണ്ടെത്തലും വിശകലനവും ​

ആപ്പ് wsl.exe --list --verbose വിളിച്ച് അതിന്റെ ഔട്ട്പുട്ട് (UTF-16 എൻകോഡിംഗ് പ്രോസസ്സിംഗ്) വിശകലനം ചെയ്ത് തത്സമയം ഇൻസ്റ്റൻസ് അവസ്ഥ ലഭ്യമാക്കുന്നു.

  • അടിസ്ഥാന ഡീകോഡിംഗ്: സ്വന്തമായി വികസിപ്പിച്ച കാര്യക്ഷമമായ എൻകോഡർ/ഡീകോഡർ, വ്യത്യസ്ത ലൊക്കേൽ ക്രമീകരണങ്ങളുള്ള Windows പരിതസ്ഥിതികളിൽ ഔട്ട്പുട്ട് ശരിയായി വിശകലനം ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
  • അവസ്ഥ സമന്വയം: സമയ നിശ്ചിത പോളിംഗ് + പ്രവർത്തന-ട്രിഗർ ചെയ്ത ഇരട്ട സമന്വയ സംവിധാനം ഉപയോഗിക്കുന്നു.

3.2 ഡിസ്ക് ഇമേജ് മൈഗ്രേഷൻ (VHDX Move) ​

മൈഗ്രേഷൻ ഫീച്ചർ WSL-ന്റെ ഇമ്പോർട്ട്/എക്സ്പോർട്ട് സംവിധാനം ഉപയോഗിക്കുന്നു, എന്നാൽ ഉയർന്ന അബ്സ്ട്രാക്ഷനും ആറ്റോമിക് പ്രോസസ്സിംഗും ഉപയോഗിച്ച്.

  • ട്രാൻസാക്ഷൻ ഉറപ്പ്: മൈഗ്രേഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ്, ആപ്പ് പരസ്പര വിരുദ്ധമായ ലോക്ക് (Mutex) വഴി ടാർഗെറ്റ് ഡിസ്ട്രോ ലോക്ക് ചെയ്യുന്നു, സമാന്തര പ്രവർത്തനങ്ങൾ മൂലം ഡാറ്റ കേടാകുന്നത് തടയുന്നു.
  • സ്വയമേവയുള്ള രജിസ്ട്രേഷൻ: മൈഗ്രേഷൻ പൂർത്തിയായ ശേഷം, ആപ്പ് സ്വയമേവ VHDX പാത്ത് റീഡയറക്ട് ചെയ്ത് ഡിസ്ട്രോ വീണ്ടും രജിസ്റ്റർ ചെയ്യുന്നു, ഉപയോക്തൃ മാനുവൽ ഇടപെടൽ ആവശ്യമില്ല.

3.3 പോർട്ട് ഫോർവേഡിംഗും ഫയർവാൾ ഓട്ടോമേഷനും ​

നെറ്റ്‌വർക്ക് ഫീച്ചർ ലളിതമായ netsh interface portproxy കോൾ അല്ല.

  • നിയമ ജീവിതചക്ര മാനേജ്മെന്റ്: ആപ്പ് സ്വയമേവ നിലവിലുള്ള ഫയർവാൾ നിയമങ്ങൾ കണ്ടെത്തുന്നു. ഉപയോക്താവ് ഫോർവേഡിംഗ് സൃഷ്ടിക്കുമ്പോൾ, ആപ്പ് Windows API അല്ലെങ്കിൽ CLI വഴി ഇൻബൗണ്ട് ഒഴിവാക്കൽ നിയമങ്ങൾ സമന്വയിപ്പിച്ച് സൃഷ്ടിക്കുന്നു.
  • സ്വയമേവയുള്ള IP ലഭ്യമാക്കൽ: wsl hostname -I ഫലം വിശകലനം ചെയ്ത്, ഹോസ്റ്റും ഇൻസ്റ്റൻസും തമ്മിലുള്ള വെർച്ച്വൽ നെറ്റ്‌വർക്ക് IP-കൾ സ്വയമേവ മാപ്പ് ചെയ്യുന്നു.

3.4 USBIP സംയോജനം ​

usbipd-win-ന്റെ കമാൻഡ് ലൈൻ ഇന്റർഫേസ് ഉപയോഗിക്കുന്നു.

  • അനുമതി ഉയർത്തൽ പ്രോസസ്സിംഗ്: ബൈൻഡിംഗ് പ്രവർത്തനത്തിന് അഡ്മിനിസ്ട്രേറ്റർ അനുമതി ആവശ്യമാണ്, ബാക്കെൻഡ് ലോജിക് ഗംഭീരമായ UAC ഉയർത്തൽ അഭ്യർത്ഥന ഫോർവേഡിംഗ് നടപ്പിലാക്കുന്നു.
  • അവസ്ഥ മെഷീൻ: ആന്തരികമായി USB ഉപകരണ കണക്ഷൻ അവസ്ഥ മെഷീൻ പരിപാലിക്കുന്നു, Attach/Detach പ്രക്രിയയുടെ ട്രേസ് ചെയ്യാവുന്നത ഉറപ്പാക്കുന്നു.

3.5 വിഭവ നിരീക്ഷണവും ഭാരം കുറഞ്ഞതും ​

ആപ്പ് Windows നേറ്റീവ് API (ഉദാ: GetProcessMemoryInfo) വിളിച്ച് സ്വന്തം വിഭവ ഉപയോഗം നിരീക്ഷിക്കുന്നു.

  • അത്യന്തം ഭാരം കുറഞ്ഞത്: ട്രേ നിശ്ശബ്ദ മോഡിൽ, ആപ്പ് അനാവശ്യമായ UI വിഭവങ്ങൾ സ്വയമേവ വിട്ടുനൽകുന്നു. ഇംഗ്ലീഷ് പോലുള്ള സ്റ്റാൻഡേർഡ് അക്ഷര സെറ്റുകൾക്ക്, മെമ്മറി ഉപയോഗം10MB വരെ കുറവായിരിക്കും; ചൈനീസ്, ജാപ്പനീസ്, കൊറിയൻ പോലുള്ള സങ്കീർണ്ണ അക്ഷര സെറ്റുകൾക്ക്, വലിയ ഫോണ്ട് റെൻഡറിംഗ് കാഷെ ലോഡ് ചെയ്യേണ്ടതിനാൽ, ഉപയോഗം ഏകദേശം38MB ആയിരിക്കും.

4. പ്രകടന ഒപ്റ്റിമൈസേഷൻ മെട്രിക്കുകൾ ​

മെട്രിക്ലക്ഷ്യം/അളവ്ഒപ്റ്റിമൈസേഷൻ മാർഗം
സ്റ്റാർട്ടപ്പ് വേഗത< 500msമുൻ-കംപൈൽ ചെയ്ത Slint ഇന്റർഫേസ്, റൺടൈം വിശകലനം കുറയ്ക്കൽ.
അടിസ്ഥാന മെമ്മറി (ട്രേ)~10MBപശ്ചാത്തല പോളിംഗ് ആവൃത്തി കുറയ്ക്കുക, ആവശ്യമുള്ളപ്പോൾ റെൻഡറിംഗ് കാഷെ വിട്ടുനൽകുക.
CPU ഉപയോഗം (നിശ്ചലം)< 0.1%Windows ഇവന്റ്-ഡ്രിവൺ മോഡൽ ഉപയോഗിക്കുക, ശൂന്യ ലൂപ്പ് പോളിംഗ് ഒഴിവാക്കുക.
റെൻഡറിംഗ് FPS60 FPSSkia GPU ത്വരണം, സബ്-പിക്സൽ നില ആന്റി-അലിയാസിംഗ് റെൻഡറിംഗ്.

5. ബാക്കെൻഡ് ടാസ്ക് വിതരണ ലോജിക് ​

UI മിനുസം ഉറപ്പാക്കാൻ, സമയമെടുക്കുന്ന എല്ലാ പ്രവർത്തനങ്ങളും (VHDX എക്സ്പോർട്ട് പോലുള്ളവ) അസിൻക്രണസ് ടാസ്ക്കുകൾ വഴി വിതരണം ചെയ്യുന്നു:

  1. അഭ്യർത്ഥന എൻകാപ്സുലേഷൻ: UI ത്രെഡ് ഉപയോക്തൃ പ്രവർത്തനം Command സന്ദേശമായി എൻകാപ്സുലേറ്റ് ചെയ്യുന്നു.
  2. സന്ദേശ ചാനൽ: tokio::sync::mpsc വഴി പശ്ചാത്തല ടാസ്ക് പ്രോസസറിലേക്ക് അയയ്ക്കുന്നു.
  3. അവസ്ഥ തിരിച്ചയയ്ക്കൽ: പശ്ചാത്തല ടാസ്ക് പൂർത്തിയായ ശേഷം, കോൾബാക്ക് അല്ലെങ്കിൽ പങ്കിട്ട അവസ്ഥ വഴി UI അപ്ഡേറ്റ് ചെയ്യുന്നു. ഈ രൂപകൽപ്പന ഏതാനും GB വലുപ്പമുള്ള ബാക്കപ്പ് ടാസ്ക് പ്രോസസ്സ് ചെയ്യുമ്പോഴും ഇന്റർഫേസ് ഉപയോക്തൃ ക്ലിക്കുകളോട് തത്സമയം പ്രതികരിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.

6. സുരക്ഷാ പരിഗണനകൾ ​

  • ആറ്റോമിക് പ്രവർത്തനങ്ങൾ: നിർണായകമായ ഇൻസ്റ്റൻസ് രജിസ്ട്രേഷൻ നീക്കവും മൈഗ്രേഷനും മുൻകൂർ സ്ഥിരീകരണം നടപ്പിലാക്കുന്നു.
  • UAC ഉയർത്തൽ മാനേജ്മെന്റ്: ആവശ്യമുള്ളപ്പോൾ മാത്രം (USB ഉപകരണ ബൈൻഡിംഗ് പോലുള്ളവ) അനുമതി അഭ്യർത്ഥിക്കുന്നു, ഏറ്റവും കുറഞ്ഞ അനുമതി തത്വം പിന്തുടരുന്നു.
  • ലോക്കൽ സംഭരണം: കോൺഫിഗറേഷൻ ലോക്കലായി ~\.wsldashboard-ൽ മാത്രം സംഭരിക്കുന്നു, ഒരു ക്ലൗഡ് സമന്വയവുമില്ല, ഉപയോക്തൃ സ്വകാര്യത സംരക്ഷിക്കുന്നു.