पेज फॉल्ट

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

किसी भी ऑपरेटिंग सिस्टम में आभासी मेमोरी, जैसे कि खिड़कियाँ, मैकओएस और लिनक्स कर्नेल का उपयोग करने वाले प्रोग्रामों के लिए उपलब्ध मेमोरी की मात्रा बढ़ाने के लिए मान्य पृष्ठ दोष सामान्य और आवश्यक हैं।

माइनर
यदि गलती उत्पन्न होने पर पृष्ठ मेमोरी में लोड हो जाता है, लेकिन मेमोरी प्रबंधन इकाई में मेमोरी में लोड होने के रूप में चिह्नित नहीं होता है, तो इसे मामूली या सॉफ्ट पेज गलती कहा जाता है। ऑपरेटिंग सिस्टम में पेज फॉल्ट हैंडलर को केवल उस पेज के लिए मेमोरी मैनेजमेंट यूनिट में एंट्री करने की जरूरत होती है, जो पेज को मेमोरी में इंगित करता है और इंगित करता है कि पेज मेमोरी में लोड है; इसे पृष्ठ को स्मृति में पढ़ने की आवश्यकता नहीं है। यह तब हो सकता है जब विभिन्न प्रोग्रामों द्वारा साझा मेमोरी (इंटरप्रोसेस संचार) और पेज को पहले से ही अन्य प्रोग्राम्स के लिए मेमोरी में लाया गया हो।

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

मेजर
यह एक ऑपरेटिंग सिस्टम द्वारा मांग पर उपलब्ध प्रोग्राम मेमोरी की मात्रा बढ़ाने के लिए उपयोग किया जाने वाला तंत्र है। ऑपरेटिंग सिस्टम प्रोग्राम के भागों को डिस्क से लोड करने में देरी करता है जब तक कि प्रोग्राम इसका उपयोग करने का प्रयास नहीं करता है और पृष्ठ दोष उत्पन्न नहीं होता है। यदि पेज फॉल्ट के समय मेमोरी में लोड नहीं होता है, तो इसे मेजर या हार्ड पेज फॉल्ट कहा जाता है। OS में पेज फॉल्ट हैंडलर को एक फ्री लोकेशन खोजने की जरूरत है: या तो मेमोरी में फ्री पेज, या मेमोरी में नॉन-फ्री पेज। इस उत्तरार्द्ध का उपयोग किसी अन्य प्रक्रिया द्वारा किया जा सकता है, जिस स्थिति में OS को उस पृष्ठ में डेटा लिखने की आवश्यकता होती है (यदि इसे अंतिम बार संशोधित किए जाने के बाद से नहीं लिखा गया है) और उस पृष्ठ को इसकी प्रक्रिया में स्मृति में लोड नहीं होने के रूप में चिह्नित करें पेज टेबल। एक बार स्थान उपलब्ध हो जाने के बाद, OS नए पेज के डेटा को मेमोरी में पढ़ सकता है, मेमोरी मैनेजमेंट यूनिट में इसके स्थान पर एक प्रविष्टि जोड़ सकता है, और इंगित कर सकता है कि पेज लोड हो गया है। इस प्रकार प्रमुख दोष मामूली दोषों की तुलना में अधिक महंगे हैं और बाधित कार्यक्रम के निष्पादन में भंडारण पहुंच विलंबता जोड़ते हैं।

अमान्य
यदि किसी पते के संदर्भ में पेज फॉल्ट होता है जो वर्चुअल एड्रेस स्पेस का हिस्सा नहीं है, जिसका अर्थ है कि इसके अनुरूप मेमोरी में कोई पेज नहीं हो सकता है, तो इसे अमान्य पेज फॉल्ट कहा जाता है। ऑपरेटिंग सिस्टम में पेज फॉल्ट हैंडलर तब आम तौर पर आपत्तिजनक प्रक्रिया के लिए एक विखंडन दोष पास करेगा, यह दर्शाता है कि एक्सेस अमान्य था; यह आमतौर पर उस कोड की असामान्य समाप्ति का परिणाम होता है जिसने अमान्य संदर्भ बनाया था। एक अशक्त सूचक को आमतौर पर पता स्थान में 0 को संबोधित करने के लिए सूचक के रूप में दर्शाया जाता है; कई ऑपरेटिंग सिस्टम MMU को यह इंगित करने के लिए सेट करते हैं कि जिस पेज में वह पता है वह मेमोरी में नहीं है, और उस पेज को वर्चुअल एड्रेस स्पेस में शामिल न करें, ताकि एक नल पॉइंटर द्वारा संदर्भित मेमोरी को पढ़ने या लिखने का प्रयास अमान्य हो जाए पृष्ठ दोष।

अमान्य शर्तें
अवैध पहुंच और अमान्य पृष्ठ दोषों के परिणामस्वरूप विभाजन दोष या बस त्रुटि हो सकती है, जिसके परिणामस्वरूप ऐप या OS क्रैश (कंप्यूटिंग) हो सकता है। सॉफ्टवेयर बग अक्सर इन समस्याओं का कारण होते हैं, लेकिन हार्डवेयर मेमोरी त्रुटियाँ, जैसे कि overclocking के कारण, पॉइंटर्स को दूषित कर सकती हैं और स्वस्थ कोड विफल हो सकती हैं।

ऑपरेटिंग सिस्टम पेज फॉल्ट एरर की रिपोर्टिंग के लिए अलग-अलग तंत्र प्रदान करते हैं। Microsoft Windows अमान्य पृष्ठ दोषों को एक्सेस उल्लंघन अपवादों के रूप में रिपोर्ट करने के लिए संरचित अपवाद हैंडलिंग का उपयोग करता है। UNIX-जैसी प्रणालियाँ आमतौर पर प्रोग्राम को इन त्रुटि स्थितियों की रिपोर्ट करने के लिए SIGSEGV जैसे सिग्नल (कंप्यूटिंग) का उपयोग करती हैं। यदि त्रुटि प्राप्त करने वाला प्रोग्राम इसे हैंडल नहीं करता है, तो ऑपरेटिंग सिस्टम एक डिफ़ॉल्ट क्रिया करता है, जिसमें आमतौर पर चल रही प्रक्रिया (कंप्यूटिंग) को समाप्त करना शामिल होता है जो त्रुटि की स्थिति का कारण बनता है, और उपयोगकर्ता को सूचित करता है कि प्रोग्राम खराब हो गया है। विंडोज अक्सर ऐसे क्रैश की सूचना बिना किसी विवरण के देता है। एक अनुभवी उपयोगकर्ता WinDbg और क्रैश के दौरान Windows द्वारा बनाए गए minidump का उपयोग करके विस्तृत जानकारी प्राप्त कर सकता है। यूनिक्स-जैसे ऑपरेटिंग सिस्टम इन स्थितियों को सेगमेंटेशन उल्लंघन या बस त्रुटि जैसे त्रुटि संदेशों के साथ रिपोर्ट करते हैं, और कोर निपात उत्पन्न कर सकते हैं।

प्रदर्शन प्रभाव
पृष्ठ दोष प्रणाली के प्रदर्शन को नीचा दिखाते हैं और थ्रैशिंग (कंप्यूटर विज्ञान) का कारण बन सकते हैं। हार्ड डिस्क ड्राइव का उपयोग करने वाले पारंपरिक कंप्यूटरों पर प्रमुख पृष्ठ दोष उनके प्रदर्शन पर महत्वपूर्ण प्रभाव डाल सकते हैं, क्योंकि औसत हार्ड डिस्क ड्राइव में 3 ms की औसत घूर्णी विलंबता, 5 ms का खोज समय और 0.05 ms/पृष्ठ का स्थानांतरण समय होता है. इसलिए, पेजिंग के लिए कुल समय लगभग 8 एमएस (= 8,000 μs) है। यदि मेमोरी एक्सेस का समय 0.2 μs है, तो पेज फॉल्ट ऑपरेशन को लगभग 40,000 गुना धीमा कर देगा।

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

एक बड़ी भौतिक स्मृति भी पृष्ठ दोषों को कम करती है।

यह भी देखें

 * बेलाडी की विसंगति

संदर्भ

 * John L. Hennessy, David A. Patterson, Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)
 * Tanenbaum, Andrew S. Operating Systems: Design and Implementation (Second Edition). New Jersey: Prentice-Hall 1997.
 * Intel Architecture Software Developer's Manual–Volume 3: System Programming

बाहरी संबंध

 * "So What Is A Page Fault?" from OSR Online (a Windows-specific explanation)
 * "Virtual Memory Details" from the Red Hat website.
 * "UnhandledExceptionFilter (Windows)" from MSDN Online.
 * "Page fault overhead" for information about how page faults can crucially affect processing time.