linux - हरण - लिनक्स के फायदे




लिनक्स में आई/ओ क्यों कर रही है? (2)

इसके पीछे तर्क क्या है? यदि I / O की प्रक्रिया को संकेत संभाल करने की अनुमति है तो क्या बुरा परिणाम होंगे?


अब जब मैंने मौरिस बाक द्वारा किताब "द डिज़ाईन ऑफ यूनिक्स ऑपरेटिंग सिस्टम्स" पढ़ ली है, तो मुझे इस सवाल का जवाब अपने आप से दो।

संक्षेप में, I / O अपरिवर्तनीय बनाने के लिए I / O कार्य को समाप्त करने के उद्देश्य से ASAP, सिग्नल द्वारा हस्तक्षेप किए बिना।

कुछ संबंधित ज्ञान जिसे मैंने पुस्तक से प्राप्त किया:

  1. "अनएन्टरप्टिबल" शब्द को "अन्तुलनीय नींद" का उल्लेख करना चाहिए जब एक प्रक्रिया अन्तर्निहित नींद में होती है, तो यह सिग्नल्स द्वारा जागृत नहीं किया जा सकता है, न ही संकेतों को संभाल सकता है
  2. एक प्रक्रिया सिग्नल संभालती है जब: a। यह कर्नेल मोड में चल रहा है और यूजर मोड पर लौटने वाला है। ख। नींद अन्तर्निहित होने पर यह नींद राज्य में प्रवेश करने और जाने के बारे में है।
  3. क्या होता है जब एक नींद की प्रक्रिया एक संकेत द्वारा जागृत हो जाती है? यह संकेत को संभालता है, प्रक्रिया से बाहर निकलने वाली डिफ़ॉल्ट कार्रवाई के साथ। जब कोई प्रक्रिया I / O समापन के लिए प्रतीक्षा कर रही है, तो आप निश्चित रूप से यह समय से पहले से बाहर निकलना नहीं चाहते हैं।

लिनक्स डेवलपर्स प्रलेखन के मुताबिक, डेटा हानि को रोकने और असंगत स्थिति में आने वाले हार्डवेयर से बचने के लिए है।

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





sleep