पेज फॉल्ट

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

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

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

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

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

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

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

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

ऑपरेटिंग प्रणाली पेज फॉल्ट एरर की रिपोर्टिंग के लिए अलग-अलग तंत्र प्रदान करते हैं। Micrओएसoft 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 ओएसR 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.