उबंटू में मुझे कई बार विभाजन की गलती का सामना करना पड़ा है। एक विभाजन दोष क्या है और यह कब होता है?
उबंटू में मुझे कई बार विभाजन की गलती का सामना करना पड़ा है। एक विभाजन दोष क्या है और यह कब होता है?
जवाबों:
कोई त्रुटि कह विभाजन गलती (या segfault , या SIGSEGV ) Ubuntu और अन्य यूनिक्स की तरह ऑपरेटिंग सिस्टम, या कह सामान्य संरक्षण गलती Windows में, जब एक कार्यक्रम के प्रयास स्मृति का एक हिस्सा है कि पहुँचा नहीं जा सकता है, या जो कार्यक्रम का उपयोग करने के लिए है तक पहुँचने से निषिद्ध है। एक विभाजन दोष प्रोग्राम क्रैश का एक प्रकार है, जो एक प्रोग्राम की असामान्य समाप्ति है। अधिक जानकारी के लिए क्रैश , स्मृति सुरक्षा , विभाजन दोष , सामान्य सुरक्षा दोष और SIGSEGV पर विकिपीडिया लेख देखें (और विषय की अधिक बनावट समझ यहां प्रस्तुत की गई है)।
एक विभाजन दोष लगभग हमेशा कार्यक्रम में एक बग के कारण होता है जहां यह होता है। मैं अनुमान लगा रहा हूं कि आपके अधिकांश या सभी विभाजन दोष एक ही एप्लिकेशन से हो रहे हैं। कृपया उन परिस्थितियों के बारे में अधिक जानकारी प्रदान करें, जिनके तहत आपकी मशीन पर विभाजन दोष हो रहे हैं, और कौन सा कार्यक्रम दुर्घटनाग्रस्त हो रहा है। कृपया प्राप्त होने वाले त्रुटि संदेश का पूर्ण और सटीक पाठ और इससे पहले आने वाले अन्य संदेश भी प्रदान करें। इससे हमें आपकी समस्या के लिए विस्तृत सलाह प्रदान करना संभव हो सकता है (बजाय एक खराबी के सामान्य जानकारी के बजाय)।
आपके लिए यह जानकारी प्रदान करने का सबसे अच्छा तरीका यह है कि आप इसे शामिल करने के लिए अपने प्रश्न को संपादित करें । वैकल्पिक रूप से, यदि आप चाहते हैं कि यह प्रश्न सामान्य रूप से विभाजन दोषों के बारे में हो, तो आप यह पूछने के लिए एक नया प्रश्न पोस्ट कर सकते हैं कि विशेष रूप से आपके विभाजन दोष क्या हो रहे हैं (यदि आप ऐसा करते हैं, तो अपने नए प्रश्न में इन सभी विवरणों को प्रदान करना सुनिश्चित करें) ।
विभाजन दोष आवेदन में एक बग के कारण होता है। तकनीकी रूप से इसका मतलब है कि एप्लिकेशन मेमोरी के उस हिस्से को पढ़ने या लिखने की कोशिश करता है जो इसके अंतर्गत नहीं आता (या मौजूद नहीं है)। यह निश्चित रूप से किसी और की स्मृति को पढ़ने या लिखने से मना किया जाता है और जब सिस्टम (कर्नेल) इसका पता लगाता है, तो यह एप्लिकेशन को छोड़ने के लिए मजबूर करेगा।
वे दिन गए जब लोग असेंबली कोड के माध्यम से ट्रेस करते थे और एक समस्या को डीबग करते थे। एबेंड्स, डॉ। वाटसन, सेगमेंटेशन दोष। वो हरे दिन गए।
एक विभाजन दोष के कारणों में से एक है जब कोड जिसमें मेमोरी तक सीधी पहुंच होती है विफल रहता है। जब कोड का एक टुकड़ा एक अलग एप्लिकेशन के मेमोरी सेगमेंट तक पहुंचने की कोशिश करता है, तो विभाजन की गलती होती है। स्मृति आवंटन बड़े स्मृति के बड़े सन्निहित ब्लॉक को आवंटित करने की अनुमति देने के लिए कुछ समय के लिए चारों ओर ले जाया जाता है। जबकि यह पुनर्प्राप्त करने का प्रयास करता है, कर्नेल अपनी सभी मेमोरी जानकारी को एक फ़ाइल में सहेजने की पूरी कोशिश करता है, सीपीयू पर चल रहे सभी अनुप्रयोगों की वर्तमान स्थिति और एक फ़ाइल के लिए उनका राज्य (अंतिम निर्देश रन) और बस मर जाता है। यह अधिक से अधिक पुनर्प्राप्ति जानकारी को संग्रहीत करने का प्रयास करेगा, और जितनी संभव हो उतने फ़ाइलों को बंद कर सकता है, ताकि hdd के टूटे हुए लिंक न मिलें।
इसे डिबग करें और इसे ठीक करें यदि आप इसे अक्सर पुन: पेश कर सकते हैं। यदि आप इसे पुन: पेश नहीं कर सकते हैं, तो बस अपने हाथों को मिलाएं, घुटने टेकें और नरक की तरह प्रार्थना करें कि आप इसे "नियमित रूप से" न देखें।
SIGSEGV
हैंडलर को किसी अन्य चीज के लिए सेट करना बेहद दुर्लभ है SIG_DFL
(जो कि डंप है और कोर से बाहर निकलें SIGSEGV
) क्योंकि अगर आप मेमोरी एक्सेस कर रहे हैं तो आपको ऐसा नहीं करना चाहिए, तो कुछ बहुत हो गया है गलत और वसूली शायद असंभव है। (2) एक कोर को प्रक्रिया बंद कर दिए जाने के बाद ही डंप किया जाएगा। (3) कोर डंप में केवल उस प्रक्रिया की मेमोरी और रजिस्टर शामिल हैं जिन्हें डंप किया गया था। (4) अन्य प्रक्रियाएँ, सीपीयू और कर्नेल अन्य प्रक्रिया के सेगफॉल्ट से प्रभावित नहीं होते हैं।