Skip to content

व्हाइटपेपर

यह दस्तावेज़ WSL Dashboard के वास्तुकला डिज़ाइन, तकनीकी चयन और मुख्य सुविधाओं की बुनियादी कार्यान्वयन तार्किकी की गहराई से जांचता है ताकि डेवलपर्स और उन्नत उपयोगकर्ताओं को तकनीकी गहराई का दृष्टिकोण प्रदान किया जा सके।

1. वास्तुकला अवलोकन

WSL Dashboard रिएक्टिव UI + असिंक्रोनस बैकएंड टास्क की एक शास्त्रीय वास्तुकला का उपयोग करता है, जो रस्ट भाषा के टाइप सिस्टम और स्वामित्व मॉडल का उपयोग करके मेमोरी सुरक्षा और उच्च समानांतर प्रदर्शन सुनिश्चित करता है।

कोर घटक

  • फ्रंटएंड (UI): Slint के आधार पर घोषणात्मक इंटरफेस। UI थ्रेड रेंडरिंग और उपयोगकर्ता इंटरैक्शन के लिए जिम्मेदार है।
  • बैकएंड (Runtime): Tokio असिंक्रोनस रनटाइम पर आधारित। सिस्टम कमांड (CLI) के वितरण और निष्पादन, फ़ाइल I/O और नेटवर्क लिसनिंग के लिए जिम्मेदार है।
  • संचार: UI थ्रेड और असिंक्रोनस टास्क चैनल (MPSC) और साझा स्टेट (Arc/Mutex/RwLock) के माध्यम से कुशल और थ्रेड-सुरक्षित रूप से संवाद करते हैं।

2. तकनीकी चयन के कारण

रस्ट क्यों?

  • प्रदर्शन: शून्य-लागत abstractions, मूल मशीन कोड में संकलित, बिना GC-जitters के।
  • मेमोरी सुरक्षा: संकलन समय में बफर ओवरफ्लो और डेटा प्रतियोगिता को समाप्त करता है, जो डिस्क माइग्रेशन, नेटवर्क कॉन्फ़िगरेशन जैसे निम्न-स्तरीय सिस्टम संचालनों के साथ काम करने वाले टूल्स के लिए महत्वपूर्ण है।
  • बाइनरी आकार: सभी निर्भरताओं को स्थैतिक रूप से लिंक करता है, एक पोर्टेबल एक-फ़ाइल प्रोग्राम उत्पन्न करता है।

Slint + Skia क्यों?

  • घोषणात्मक वाक्य रचना: इंटरफेस विवरण और तार्किकी को अलग करता है, कोड को आसानी से बनाए रखने में मदद करता है।
  • Skia रेंडरिंग: GPU त्वरित (Skia इंजन के माध्यम से) का सीधा उपयोग करता है, सब-पिक्सल स्पष्टता वाला टेक्स्ट और स्मूथ एनीमेशन प्रभाव प्रदान करता है।
  • निम्न ओवरहेड: इलेक्ट्रॉन या 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 डिवाइस कनेक्शन स्टेट मशीन को बनाए रखा जाता है ताकि संलग्न/वियोजित प्रक्रिया की अनुरेखितता सुनिश्चित हो सके।

3.5 संसाधन-निगरानी और हल्कापन

एप्लिकेशन Windows-मूल API (जैसे GetProcessMemoryInfo) को कॉल करके अपने स्वयं के संसाधन उपयोग की निगरानी करता है।

  • अत्यधिक हल्कापन: सायलेंट ट्रे मोड में, एप्लिकेशन अनावश्यक UI संसाधनों को सक्रिय रूप से मुक्त करता है। अंग्रेजी जैसे मानक वर्ण सेट के मामले में, मेमोरी उपयोग को केवल 10MB तक कम किया जा सकता है; चीनी, जापानी और कोरियाई जैसे जटिल वर्ण सेट के मामले में, उपयोग लगभग 38MB होता है क्योंकि बड़े फॉन्ट रेंडरिंग कैश को लोड करने की आवश्यकता होती है।

4. प्रदर्शन अनुकूलन मेट्रिक्स

मेट्रिकलक्ष्य/मापा गयाअनुकूलन विधि
स्टार्ट-अप गति< 500msSlint इंटरफेस का पूर्व-संकलन, रनटाइम विश्लेषण का कमी करना।
आधार-मेमोरी (ट्रे)~10MBपृष्ठभूमि पोलिंग की आवृत्ति को कम करना, आवश्यकतानुसार रेंडरिंग कैश मुक्त करना।
CPU उपयोग (स्थैतिक)< 0.1%Windows इवेंट मॉडल का उपयोग करना, खाली-लूप पोलिंग से बचना।
रेंडरिंग-एफपीएस60 FPSSkia GPU त्वरित, सब-पिक्सल एंटीएलियासिंग रेंडरिंग।

5. बैकएंड-टास्क वितरण तार्किकी

UI की प्रवाहितता सुनिश्चित करने के लिए, सभी समय-सेवन संचालन (जैसे VHDX निर्यात) असिंक्रोनस कार्यों के माध्यम से वितरित किए जाते हैं:

  1. अनुरोध-कैप्सूलेशन: UI थ्रेड उपयोगकर्ता-ऑपरेशन को Command-संदेश के रूप में कैप्सूलेट करता है।
  2. संदेश-चैनल: tokio::sync::mpsc के माध्यम से बैकएंड-टास्क प्रोसेसर को भेजा जाता है।
  3. स्थिति-रिटर्न: बैकएंड-टास्क पूरा होने के बाद, UI को कॉलबैक या स्थिति-साझा के माध्यम से अपडेट किया जाता है। यह डिज़ाइन सुनिश्चित करता है कि इंटरफेस कई जीबी के बैकअप कार्यों की प्रसंस्करण के दौरान भी उपयोगकर्ता-क्लिक पर वास्तविक समय में प्रतिक्रिया करता रहता है।

6. सुरक्षा विचार

  • परमाणु संचालन: महत्वपूर्ण इंस्टेंस-अनरजिस्ट्रेशन और माइग्रेशन के लिए पूर्व-चेक्स लागू किए गए हैं।
  • UAC उन्नयन प्रबंधन: आवश्यकता पर ही (जैसे USB डिवाइस बाइंडिंग) अनुमतियों का अनुरोध करता है, न्यूनतम-अनुमति सिद्धांत का पालन करता है।
  • स्थानीय स्टोरेज: कॉन्फ़िगरेशन केवल ~\.wsldashboard में स्थानीय रूप से सेव की जाती है, क्लाउड-सिंक्रोनाइजेशन के बिना, उपयोगकर्ता गोपनीयता की सुरक्षा करता है।