2010-10-28 14 views
6

मैं देख रहा था कि मुड़ और नोड.जेएस फ्रेमवर्क कैसे काम करते हैं और मैं हूं कि यह समझने की कोशिश कर रहा है कि ऑपरेटिंग सिस्टम कॉलबैक का उपयोग करके I/O संचालन का समर्थन करता है।इवेंट संचालित प्रोग्रामिंग कैसे कार्यान्वित किया जाता है?

मुझे समझ में आता है कि यह अच्छा है क्योंकि हमें कम धागे की आवश्यकता है क्योंकि हम को I/O संचालन के लिए अवरुद्ध थ्रेड को अवरुद्ध करने की आवश्यकता नहीं है। लेकिन कुछ बार को I/O समाप्त होने के बाद कॉलबैक को कॉल करना होगा।

यह ऑपरेटिंग सिस्टम द्वारा कैसे कार्यान्वित किया जाता है?

उत्तर

5

एक दृष्टिकोण ओएस प्रासंगिक डेटा संरचना करने के लिए एक कॉलबैक के लिए इंतज़ार कर किसी को भी के बारे में जानकारी देते है im, जैसे फाइल डिस्क्रिप्टर के समकक्ष कर्नेल के बारे में आप अधिसूचना अधिसूचना के लिए प्रतीक्षा कर रहे हैं। जब उस फ़ाइल डिस्क्रिप्टर के साथ कुछ होता है, तो ओएस प्रतीक्षाकर्ताओं को यह देखने के लिए स्कैन करता है कि किसी को अधिसूचित किया जाना चाहिए या नहीं। अगर उन्हें चाहिए, तो ऐसा करता है। आप Lemon's paper introducing FreeBSD's kqueue mechanism में इसके बारे में एक कार्यान्वयन को पढ़ सकते हैं। विशेष खंड 6, "कार्यान्वयन", उपखंड 3 और 4, "घटना स्रोत पर गतिविधि" और "वितरण" में देखें।

3

यह "मैं/हे घटना अधिसूचना सुविधा/इंटरफेस" का उपयोग करके ओएस में हल किया जाता है, उदा epoll, चुनाव, kqueue या का चयन करें।

deft पर विशेष रूप से इसके io/event loop पर एक ठोस उदाहरण के लिए देखें कि कैसे ऊपर उल्लिखित "अधिसूचना सिस्टम" का उपयोग किया जाता है। (java.nio.channels.Selector इस के लिए एक अमूर्त प्रदान करने के लिए जावा NIO तरीका है।)

अस्वीकरण: एक दक्ष committer

संबंधित मुद्दे