الأسئلة الأكثر شيوعًا التي يتم طرحها في المقابلة مؤخرًا هي حقل IO. تم الرد على بعضهم ، في حين أن بعضهم لم يرد جيدًا. في الآونة الأخيرة ، بدأت في معرفة المزيد عن بعض هذه الأشياء وأريد تلخيصها.
نقطة الجبهة
1. مساحة نظام مساحة المستخدم
سيقوم نظام Linux بتقسيم العملية إلى مساحتين ومساحة المستخدم ومساحة النظام. على سبيل المثال ، الترميز العادي لدينا هو كل مساحة المستخدم. إذا كنا بحاجة إلى استدعاء وظائف النظام ، مثل نسخ ملفات نظام ، نحتاج إلى استدعاء مكونات النظام ، والحصول على خدمات kernel ، والعمليات الكاملة.
مرحلتين من IO
تنقسم عملية تنفيذ IO إلى مرحلتين ، في انتظار جاهزة لتنفيذ نسخة
الانتظار جاهزًا: نعلم أنه عندما نقوم بإجراء عمليات IO ، قد تأتي البيانات من تطبيقات أو شبكات أخرى. إذا لم تكن هناك بيانات ، فإن نظام التشغيل سينتظر ذلك. في هذا الوقت ، قد ينتظر التطبيق أيضًا النسخ: انسخ البيانات إلى مساحة عمل التطبيق
الحظر وغير الحظر ، متزامن وغير متزامن
دعنا نتحدث عن التزامن وتبادل التزامن أولاً. أسهل شيء هو معرفة ما إذا كان الخيط أو العملية قد بدأ في إكمال IO. عند مزامنة IO ، سيتوقف النظام وينتظر حتى ينتهي هذا قبل القيام بأشياء أخرى. يستخدم IO غير المتزامن طريقة متعددة الخيوط لبدء مؤشر ترابط جديد للقيام بذلك ، ويمكنك القيام بأشياء أخرى وانتظار الإخطار.
دعنا نتحدث عن الحظر وغير الحظر. يركز هذان الأمرين فعليًا على حالة البرنامج عند انتظار نتيجة المكالمة. الحظر يعني أنه عندما تحصل على هذه النتيجة ، ستتعلق حتى تنتظر النتيجة الكاملة. عدم الحظر يعني أنه عندما لا تستطيع العملية الحصول على النتيجة ، لا يوجد خيط حظر. هذا متشابك بعض الشيء. هناك تفسير شائع. إذا كانت حظر ، أريد الحصول على هذا الشيء. أثناء عملية الاستحواذ ، فقدت وحدة المعالجة المركزية. لن أحصل على وحدة المعالجة المركزية حتى النتيجة. ومع ذلك ، إذا كنت غير محظور ، فسوف أستمر في الاحتفاظ بوحدة المعالجة المركزية ، ولا يزال بإمكاني التحقق من ذلك.
عدة نماذج IO
هناك 5 أنواع حاليا
حظر IO
النوع الأكثر تقليدية IO ، أي ، سوف القراءة والكتابة حظر
غير المحظور IO
عندما يبدأ المستخدم القراءة ، لن يفقد وحدة المعالجة المركزية ، فسيستمر في التحقق. إذا لم يكن ناجحًا ، فسيتم إرجاع خطأ. إذا تلقى إشارة ناجحة ، فسوف تبدأ عملية قراءة للحصول على النتيجة الكاملة.
تعدد الإرسال IO
هذا هو جوهر جافا نيو. سيكون هناك مؤشر ترابط يدير حالة مآخذ متعددة للتحقق مما إذا كنت جاهزًا. فقط عندما تجد أنك جاهز حقًا ، فستتصل بوحدة المعالجة المركزية لأداء عمليات IO. هذا أكثر أهمية
إشارة محرك IO
استخدام أقل ، تجاهل
غير متزامن IO
احصل على موضوع للتنفيذ