2013-01-02 19 views
20

फ़ाइल संगठन के लिए कौन सी डेटा संरचना का उपयोग करना सबसे अच्छा है? क्या बी-पेड़ सबसे अच्छा है या क्या कोई अन्य डेटा संरचना है जो फ़ाइलों और अच्छे संगठन तक तेजी से पहुंच प्राप्त करती है? धन्यवादफाइल सिस्टम बनाने के लिए उपयोग की जाने वाली डेटा संरचनाएं?

+1

मैं जानकारी संग्रहीत करने के लिए डेटाबेस का उपयोग करने का प्रशंसक हूं। मेरा मानना ​​है कि अधिकांश डीबी एक बी-स्ट्रक्चर का उपयोग करते हैं। क्या कोई विशिष्ट कार्य है जिसे आप पूरा करने की कोशिश कर रहे हैं? – kevingreen

+0

मैं सिर्फ उत्सुक हूं कि ओएस के फाइल संगठन के लिए डेटा संरचना का उपयोग किया जाता है क्योंकि मैं डेटा संरचनाओं को सीख रहा हूं और मैंने उनमें से कुछ को लागू किया: लाल ब्लैक पेड़, एवीएल पेड़, बी-पेड़, छोड़ें सूची .. मैं चाहूंगा पता है कि उनमें से कौन सा मैं एक अधिक उपयोगी कार्य (संख्याओं को संग्रहित नहीं) के लिए उपयोग कर सकता हूं – Bernice

+0

मुझे विशेष रूप से यह सुनिश्चित नहीं है कि अधिकांश ओएस डेटा कैसे स्टोर करता है। शोध पर शुभकामनाएँ। – kevingreen

उत्तर

29

सभी फाइल सिस्टम अलग हैं, इसलिए बड़ी संख्या में डेटा संरचनाएं हैं जो वास्तव में फ़ाइल सिस्टम में उपयोग की जाती हैं।

कई फाइल सिस्टम कुछ प्रकार के bit vector (आमतौर पर बिटमैप के रूप में संदर्भित) का उपयोग करते हैं ताकि यह पता चल सके कि कुछ खाली ब्लॉक कहां हैं, क्योंकि उनके पास पूछताछ के लिए उत्कृष्ट प्रदर्शन है कि डिस्क का एक विशिष्ट ब्लॉक उपयोग में है या नहीं (डिस्क के लिए जो डिस्क हैं मुक्त रूप से पूर्ण नहीं है) मुफ्त ब्लॉक के उचित तेज़ लुकअप का समर्थन करते हैं।

सरल लिंक्ड सूचियों का उपयोग करके कई पुरानी फाइल सिस्टम (ext और ext2) संग्रहीत निर्देशिका संरचनाएं। जाहिर है, यह वास्तव में अधिकांश अनुप्रयोगों के लिए पर्याप्त तेज़ था, हालांकि कुछ प्रकार के अनुप्रयोगों ने बहुत सी बड़ी निर्देशिकाओं का उपयोग किया जो ध्यान देने योग्य प्रदर्शन हिट का सामना करना पड़ा।

एक्सएफएस फाइल सिस्टम निर्देशिका संरचनाओं और इसकी जर्नलिंग सिस्टम समेत लगभग हर चीज़ के लिए B+-trees का उपयोग करने के लिए प्रसिद्ध था। मेरे अंडरग्रेड ओएस कोर्स से मुझे जो याद है, उससे दर्शन यह था कि बी +-ट्री के कार्यान्वयन को लिखने, डीबग करने और प्रदर्शन करने में काफी समय लगा, इसलिए इसे जितना संभव हो सके इसका उपयोग करने के लिए समझ में आया।

अन्य फ़ाइल सिस्टम (ext3 और ext4) बी-पेड़ के एक प्रकार का उपयोग करते हैं जिसे HTree कहा जाता है जिसे मैं बहुत परिचित नहीं हूं। जाहिर है यह ब्रांचिंग कारक को उच्च रखने के लिए कुछ प्रकार की हैशिंग योजना का उपयोग करता है ताकि बहुत कम डिस्क एक्सेस का उपयोग किया जा सके।

मैंने सुना है कि कुछ ऑपरेटिंग सिस्टम ने अपनी निर्देशिका संरचनाओं को संग्रहीत करने के लिए splay trees का उपयोग करने का प्रयास किया लेकिन उनके साथ परेशानी में भाग गया। विशेष रूप से, यह एकाधिक पाठकों से एक ही निर्देशिका में बहुप्रचारित पहुंच को रोकता है (चूंकि एक स्प्ले पेड़ में, प्रत्येक पहुंच पेड़ को दोबारा बदलती है) और पेड़ के सभी तत्व अनुक्रमिक रूप से उपयोग किए जाने पर पेड़ एक लिंक्ड सूची में गिरावट का सामना करना पड़ता है। उस ने कहा, मुझे नहीं पता कि यह सिर्फ एक शहरी किंवदंती है, क्योंकि इन समस्याओं को कोड करने की कोशिश करने से पहले ये समस्याएं स्पष्ट होंगी।

माइक्रोसॉफ्ट की एफएटी 32 प्रणाली ने एक विशाल सरणी (फ़ाइल आवंटन तालिका) का उपयोग किया जो स्टोर करता है कि कौन सी फाइलें संग्रहीत की गईं और कौन से डिस्क क्षेत्र एक दूसरे में तर्कसंगत रूप से एक दूसरे का पालन करते हैं। मुख्य दोष यह है कि तालिका को पहले से स्थापित किया जाना था, इसलिए डिस्क पर संग्रहीत फ़ाइलों के आकार पर ऊपरी सीमाएं समाप्त हो गईं। हालांकि, सरणी-आधारित प्रणाली लागू करने के लिए बहुत आसान था।

यह एक संपूर्ण सूची नहीं है - मुझे यकीन है कि अन्य फाइल सिस्टम अन्य डेटा संरचनाओं का उपयोग करते हैं। हालांकि, मुझे उम्मीद है कि यह आपको सही दिशा में धक्का देने में मदद करेगा।

आशा है कि इससे मदद मिलती है!

+0

बहुत उपयोगी पोस्ट धन्यवाद! मैं फिर थोड़ा वैक्टर के बारे में शोध करूंगा, और अन्य ओएस के बारे में कुछ और शोध करूंगा .. मैंने सुना है कि स्प्ले पेड़ परेशान थे! मैं बी-पेड़ से सबसे ज्यादा परिचित हूं लेकिन मैं अन्य डेटा संरचनाओं को सीखने की आशा करता हूं जो इस तरह के सामान के लिए उपयोगी होंगे! आपके लंबे उत्तर के लिए धन्यवाद :) – Bernice

संबंधित मुद्दे