Google द्वारा वृद्धिशील फ़ाइल सिस्टम
Google एक नए प्रकार के फ़ाइल सिस्टम पर काम कर रहा है जो पूर्ण बंडल लोड होने से पहले बायनेरिज़ के निष्पादन की अनुमति देता है। एक उदाहरण के रूप में एंड्रॉइड ऐप के विकास को लेते हुए, आपको वर्तमान में पूरे बाइनरी को या तो एमुलेटर या डिबगिंग के लिए आपके वास्तविक परीक्षण उपकरण में प्रसारित होने की प्रतीक्षा करनी होगी। इंक्रीमेंटल फाइल सिस्टम नाटकीय रूप से पूरे पैकेज के प्रसारित होने से पहले बाइनरी के निष्पादन की अनुमति देकर इस देरी को कम करता है। यह बेहद जटिल लगता है, और यही है, लेकिन हम अभी भी इसे बेहतर ढंग से समझने के लिए देख सकते हैं कि एंड्रॉइड 12 और बाद में डिफ़ॉल्ट सुविधा क्या होगी।
एक वर्चुअल फाइल सिस्टम जिसे "incfs" कहा जाता है
Google का वर्चुअल फ़ाइल सिस्टम समाधान, जो अपने पहले पुनरावृत्ति में विशेष रूप से Play Store से लोड किए गए APK और AAB के लिए उपयोग किया जाएगा, एक ऐसी परत है जो वास्तविक फाइल सिस्टम के शीर्ष पर बैठती है। आर्किटेक्चर को बेहतर ढंग से समझाने के लिए, मैं कुछ स्लाइड्स का उपयोग कर रहा हूं जो Google ने तकनीकी बातचीत के लिए बनाई हैं। आप इस पृष्ठ के अंत में परिशिष्ट में लिंक पा सकते हैं।
विषय पर वापस आते हुए, Google की वृद्धिशील फाइल सिस्टम को कैश के रूप में माना जा सकता है, जहां बनाई गई इकाइयां वास्तविक फाइल सिस्टम में सीधे फाइलों का संदर्भ देती हैं। कोड ही कर्नेल मॉड्यूल के रूप में ऑपरेशन सिस्टम में गहराई से बनाया गया है - जो समग्र वास्तुकला में निम्न-स्तरीय प्लेसमेंट के कारण तार्किक लगता है।
वर्चुअल फाइल सिस्टम का लाभ
इस तरह के एक वर्चुअल FS का लाभ यह है कि आप एक वास्तविक फाइल सिस्टम की सीमाओं से बंधे नहीं हैं, जहां किसी प्रोग्राम को पढ़ना और उसके बाद का निष्पादन आमतौर पर केवल तभी हो सकता है जब पूरा बंडल उपलब्ध हो - पहली से अंतिम बाइट तक। "वृद्धिशील फाइलसिस्टम" के साथ, यह सीमा तकनीकी रूप से साफ हो गई है। फिर भी इतनी शक्तिशाली विशेषता के साथ विचार करने के लिए जटिल पहलुओं का एक बड़ा समूह आता है।
इसे एक Google इंजीनियर से लेना, एक बड़ी चुनौती लेखन-संचालन का सही संचालन है। लंबित पठन के संबंध में वर्चुअल फाइल सिस्टम की अपनी स्थिति है, लेकिन फिर भी लोड की गई फ़ाइलों की डेटा अखंडता को बनाए रखना है।
"incfs" में एक कस्टम इंडेक्स बनाकर चुनौती का सामना किया जाता है। प्रत्येक वास्तविक फ़ाइल सीधे वर्चुअल फाइल सिस्टम में एक इकाई से संबंधित होती है, तब भी जब मूल फ़ाइल का नाम बदल दिया जाता है।
एक और संक्षिप्त नाम जिसे "ioctl" कहा जाता है
यह संक्षिप्त नाम "इनपुट/आउटपुट नियंत्रण" के लिए है और Google की वृद्धिशील फ़ाइल सिस्टम में ऐसी अनुक्रमणिका-फ़ाइल के निर्माण की ओर ले जाता है। "ioctl" ऑपरेशन सिस्टम से आता है और इसकी तकनीकी व्याख्या इस लेख के दायरे से बाहर है। यदि आप और अधिक पढ़ना चाहते हैं, तो परिशिष्ट में एक लिंक भी है।
यह भी काफी दिलचस्प है: "incfs" में एक अंतर्निहित लॉगिंग तंत्र है। इस सुविधा का उपयोग आगे के संवर्द्धन के लिए इसके कार्यान्वयन के वास्तविक-विश्व प्रदर्शन को निर्धारित करने के लिए किया जाएगा।
व्यावहारिक उपयोग
इस सुविधा की शुरुआत मई 2019 में हुई थी, जब Google के कुछ इंजीनियरों ने लिनक्स कर्नेल में बदलाव करना शुरू किया था। इसे वहां रखने से उन्हें एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी), एंड्रॉइड का ओपन सोर्स हिस्सा और इस ऑपरेटिंग सिस्टम की मुख्य नींव में इसका इस्तेमाल करने की इजाजत दी गई, क्योंकि एओएसपी लिनक्स कर्नेल पर भी बनाया गया है।
लिनक्स योगदानकर्ता सभी खुश नहीं थे, क्योंकि फ़ाइल सिस्टम को बढ़ाने के समान दृष्टिकोण पहले से ही बनाए गए थे, जैसे कि FUSE या OverlayFS। फिर भी, Google के दृष्टिकोण से, वे कार्यान्वयन कम-अंत वाले Android उपकरणों पर पर्याप्त रूप से पर्याप्त नहीं थे। इससे इंक्रीमेंटल फाइल सिस्टम का विकास हुआ।
पहले पुनरावृत्ति के लिए, इसका उपयोग एंड्रॉइड 12 से शुरू होने वाले Play Store से डाउनलोड किए गए गेम के लिए किया जाएगा ताकि गेम को वास्तव में लॉन्च करने में लगने वाले समय को कम किया जा सके। यह वास्तव में महान सुविधा वृद्धिशील फाइल सिस्टम को निर्धारित करती है, लेकिन एंड्रॉइड में निर्मित कुछ तर्क भी यह निर्धारित करने के लिए कि उन खेलों को जल्दी से कैसे शुरू किया जाए - डेवलपर द्वारा किसी भी बदलाव के बिना, Google के अनुसार।