سؤال

كنت أبحث عن كيفية عمل أطراف node.js twisted و js وأحاول أن أفهم بالضبط كيف يدعم نظام التشغيل عمليات الإدخال/الإخراج باستخدام عمليات الاسترجاعات.

أتفهم أنه أمر جيد لأننا بحاجة إلى مؤشرات ترابط أقل لأننا لسنا بحاجة إلى حظر الخيوط التي تنتظر عمليات الإدخال/الإخراج. ولكن يجب أن يتصل بشيء رد الاتصال بمجرد انتهاء الإدخال/الإخراج.

كيف يتم تنفيذ هذا من قبل نظام التشغيل؟

هل كانت مفيدة؟

المحلول

تتمثل إحدى الأساليب في جعل نظام التشغيل يرفع معلومات حول أي شخص ينتظر رد الاتصال إلى بنية البيانات ذات الصلة ، مثل المكافئ في الواصف في الملف الذي تنتظره الإخطار القراءة. عندما يحدث شيء ما لمواصف الملف ، يقوم نظام التشغيل بمسح النوادل لمعرفة ما إذا كان ينبغي إخطار أي شيء. إذا كان ينبغي عليهم ذلك ، فهذا يفعل ذلك. يمكنك أن تقرأ عن تطبيق واحد في هذا ورقة الليمون تقدم FreeBSD's kqueue آلية. انظر على وجه الخصوص القسم 6 ، "التنفيذ" ، القسمين الفرعيين 3 و 4 ، "النشاط على مصدر الحدث" و "التسليم".

نصائح أخرى

يتم حل هذا في نظام التشغيل باستخدام "مرافق/واجهات إشعار الأحداث I/O" ، على سبيل المثال Epoll, ، تصويت، Kqueue أو حدد.

ألق نظرة على ماهر, وخاصة '' '' حلقة IO/الحدث للحصول على مثال ملموس ، يتم استخدام "أنظمة الإخطار" المذكورة أعلاه. ((java.nio.channels.selector هي طريقة Java Nio لتوفير تجريد لهذا.)

إخلاء المسئولية: أنا ملزم ماهر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top