इससे पहले कि हम के बारे में बारीकियों पर चर्चा करें pdflush
, kjournald, and
kswapd`, आइए सबसे पहले लिनक्स कर्नेल के संदर्भ में हम जो बात कर रहे हैं उसके संदर्भ में एक छोटी सी पृष्ठभूमि प्राप्त करें।
GNU / Linux आर्किटेक्चर
GNU / Linux की वास्तुकला को 2 स्थानों के रूप में सोचा जा सकता है:
यूजर स्पेस और कर्नेल स्पेस के बीच GNU C लाइब्रेरी ( glibc
) बैठता है । यह सिस्टम कॉल इंटरफ़ेस प्रदान करता है जो कर्नेल को उपयोगकर्ता-स्पेस एप्लिकेशन से जोड़ता है।
कर्नेल स्पेस को 3 स्तरों में विभाजित किया जा सकता है:
- सिस्टम कॉल इंटरफ़ेस
- वास्तुकला स्वतंत्र कर्नेल कोड
- वास्तुकला पर निर्भर कोड
सिस्टम कॉल इंटरफ़ेस, जैसा कि इसके नाम का अर्थ है, glibc
कर्नेल के बीच एक इंटरफ़ेस प्रदान करता है । वास्तु स्वतंत्र कर्नेल कोड इस तरह के वीएफएस (वर्चुअल फ़ाइल प्रणाली) और VMM (वर्चुअल मेमोरी प्रबंधन) के रूप में तार्किक इकाई के शामिल है। वास्तु निर्भर कोड घटक है कि किसी दिए गए हार्डवेयर वास्तुकला के लिए प्रोसेसर और प्लेटफ़ॉर्म-विशिष्ट कोड हो रहा है।
GNU / Linux आर्किटेक्चर का आरेख
इस लेख के बाकी हिस्सों के लिए, हम कर्नेल स्पेस के भीतर VFS और VMM तार्किक इकाइयों पर अपना ध्यान केंद्रित करेंगे।
GNU / Linux कर्नेल के सबसिस्टम
VFS सबसिस्टम
जीएनयू / लिनक्स कर्नेल को संरचित करने की एक उच्च स्तरीय अवधारणा के साथ हम वीएफएस सबसिस्टम में थोड़ी गहराई तक पहुंचा सकते हैं। यह घटक विभिन्न ब्लॉक स्टोरेज डिवाइस तक पहुंच प्रदान करने के लिए जिम्मेदार है, जो अंततः एक भौतिक उपकरण (HDD / etc) पर एक फाइलसिस्टम (ext3 / ext4 / etc।) के लिए नीचे मैप करता है।
VFS का आरेख
यह आरेख दिखाता है कि कैसे एक write()
उपयोगकर्ता की प्रक्रिया वीएफएस का पता लगाती है और अंततः डिवाइस ड्राइवर पर अपना काम करती है जहां यह भौतिक भंडारण माध्यम को लिखा जाता है। यह पहला स्थान है जहां हमारा सामना होता है pdflush
। यह एक डेमॉन है जो बैकग्राउंड माध्यम में गंदे डेटा और मेटाडेटा बफर ब्लॉक को फ्लश करने के लिए जिम्मेदार है। आरेख यह नहीं दिखाता है, लेकिन एक और डेमॉन है kjournald
, जो pdflush
डिस्क के साथ गंदे जर्नल ब्लॉक लिखने के समान कार्य करता है, जो एक साथ बैठता है । नोट: जर्नल ब्लॉक यह है कि ext4 और JFS जैसी फाइलसिस्टम डिस्क में होने वाले परिवर्तनों से पहले फाइल में डिस्क में बदलाव का ट्रैक रखती है।
उपरोक्त विवरण इस पत्र में आगे चर्चा की गई है ।
write()
चरणों का अवलोकन
I / O sybsystem संचालन का एक सरल अवलोकन प्रदान करने के लिए, हम एक उदाहरण का उपयोग करेंगे जहां फ़ंक्शन write()
को उपयोगकर्ता स्पेस एप्लिकेशन द्वारा बुलाया जाता है।
- एक प्रक्रिया
write()
सिस्टम कॉल के माध्यम से एक फ़ाइल लिखने का अनुरोध करती है ।
- कर्नेल फ़ाइल में मैप किए गए पेज कैश को अपडेट करता है।
- एक pdflush कर्नेल थ्रेड डिस्क पर पेज कैश फ्लश करने का ख्याल रखता है।
- फ़ाइल सिस्टम परत प्रत्येक ब्लॉक बफर को एक साथ
bio struct
( संदर्भ के लिए 1.4.3, "ब्लॉक परत" पृष्ठ 23 पर ) रखता है और ब्लॉक डिवाइस परत के लिए एक लिखित अनुरोध प्रस्तुत करता है।
- ब्लॉक डिवाइस लेयर को ऊपरी लेयर से रिक्वेस्ट मिलती है और I / O एलीवेटर ऑपरेशन करती है और रिक्वेस्ट I / O रिक्वेस्ट क्यू में डालती है।
- एक डिवाइस ड्राइवर जैसे SCSI या अन्य डिवाइस विशिष्ट ड्राइवर लेखन कार्रवाई का ध्यान रखेंगे।
- एक डिस्क डिवाइस फर्मवेयर हार्डवेयर ऑपरेशन जैसे सर, रोटेशन और सेक्टर पर डेटा ट्रांसफर करने के लिए करता है।
वीएमएम सबसिस्टम
अपने गहरे गोता को जारी रखते हुए, अब हम VMM उपतंत्र में देख सकते हैं। यह घटक मुख्य मेमोरी (रैम), स्वैप और भौतिक भंडारण माध्यम के बीच स्थिरता बनाए रखने के लिए जिम्मेदार है। स्थिरता बनाए रखने के लिए प्राथमिक तंत्र है bdflush
। स्मृति के पन्नों को गंदा समझे जाने के लिए उन्हें संग्रहण माध्यम पर मौजूद डेटा के साथ सिंक्रनाइज़ करना होगा। संग्रहण माध्यम के साथ इस डेटा को सिंक्रनाइज़ करने के लिए डेमॉन के bdflush
साथ समन्वय करेगा pdflush
।
वीएमएम का आरेख
विनिमय
जब सिस्टम मेमोरी दुर्लभ हो जाती है या कर्नेल स्वैप टाइमर समाप्त हो जाता है, तो kswapd
डेमन पृष्ठों को मुक्त करने का प्रयास करेगा। इसलिए जब तक मुफ्त पेजों की संख्या ऊपर रहेगी free_pages_high
, kswapd
कुछ नहीं करेंगे। हालांकि, यदि नि: शुल्क पृष्ठों की संख्या नीचे गिरती है, तो kswapd
पृष्ठ को पुन: शुरू करने की प्रक्रिया शुरू होगी। kswapd
स्थानांतरण के लिए पृष्ठों को चिह्नित करने के बाद bdflush
, pdflush
डेमॉन के माध्यम से भंडारण माध्यम में किसी भी बकाया परिवर्तन को सिंक्रनाइज़ करने का ध्यान रखेगा ।
संदर्भ और आगे की रीडिंग