هل يوجد وصف جيد لآلية "استدعاء النظام" المستخدمة في أنظمة التشغيل؟[مغلق]

StackOverflow https://stackoverflow.com/questions/126976

سؤال

أنا أبحث عن كتاب تمهيدي جيد أو وصف تقني لـ نداء النظام آلية تستخدمها أنظمة التشغيل للانتقال من مساحة المستخدم إلى النواة لاستدعاء وظائف مثل "الفتح" و"القراءة" و"الكتابة" وما إلى ذلك...

هل هناك أي شيء آخر غير ويكيبيديا دخول؟المواقع الإلكترونية، وملفات PDF، والكتب، وكود المصدر، كلها موضع ترحيب :)

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

المحلول

حسنًا، بالنسبة للكود المصدري، هناك الكثير من النوى مفتوحة المصدر التي يمكنك الغوص فيها.

أما بالنسبة للكتب كتاب روبرت لوف على نواة لينكس مفيدة للغاية.

نصائح أخرى

تعتمد الطريقة الدقيقة على بنية المعالج والعمليات التي يحددها للانتقال إلى وضع kernel.كان أحد الأساليب التقليدية على نظام التشغيل x86 هو استخدام مقاطعة البرنامج.وأضافت إنتل أنه اتضح أن هذا لم يكن سريعًا جدًا بالنسبة للحالة العامة، لذلك لاحقًا SYSCALL وأضاف AMD SYSENTER.Windows XP والإصدارات الأحدث اختر تقنية استدعاء النظام المناسبة للنظام الأساسي، في وقت التمهيد.

يمكنك اختيار استخدام أرقام مقاطعة برامج محددة لوظائف محددة، ولكن بشكل عام لا يحتوي المعالج على مقاطعات كافية لتغطية جميع وظائف النظام، لذلك من الضروري جعل أحد السجلات يحتوي على رقم الوظيفة المطلوبة.إذا كنت تفعل ذلك على أي حال، فلن يكون من الصعب جدًا استخدام وظيفة استدعاء النظام الواحدة فقط.

يستخدم Windows CE، قبل الإصدار 6.0، نموذج عنوان ظاهري للعملية جنبًا إلى جنب والذي يسمح بالفعل للعمليات بالاتصال ببعضها البعض مباشرةً.تم إعداد وسائل حماية الصفحة بحيث يحدث خطأ انتهاك الوصول عند القيام بذلك:تحصل النواة على التحكم، وتصلح مساحة عنوان العملية (نقل العملية المستدعىة إلى الفتحة 0)، وتصلح الوسائط المستندة إلى الفتحة 0 للإشارة إلى عملية الاستدعاء، وتعود إلى وضع المستخدم.نظرًا لأن عنوان المرسل موجود في عملية أخرى، فعندما يعود استدعاء الوظيفة، تحدث العملية العكسية.لسوء الحظ، لا يسمح هذا النموذج إلا بمساحات عناوين افتراضية صغيرة جدًا لكل عملية (32 ميجابايت) وعدد قليل من العمليات (32)، لذلك يعود Windows CE 6.0 إلى نموذج استدعاء النظام الأكثر تقليدية.

قد ترغب في إلقاء نظرة على نواة minix.إنه مفتوح المصدر، ومصمم ليكون بسيطًا، ويستخدم في الكثير من دورات نظام التشغيل أحادي المستوى.قم بالبحث في /usr/src/kernel/proc.c وخاصة وظيفة sys_call والوظائف المحيطة.ضع في اعتبارك أن minix عبارة عن نواة صغيرة، لذا قد تختلف بعض الأشياء بدقة عما اعتدت عليه.

إذا كنت ترغب في شراء كتاب مفيد للغاية لبرمجة *nix.أوصي بـ "البرمجة المتقدمة في بيئة UNIX" من تأليف ستيفنز وراجو.لديها تفسيرات متعمقة، وأمثلة التعليمات البرمجية.

للحصول على شرح جيد لاستدعاءات النظام في Linux، انظر إلى نماذج برامج تشغيل الأجهزة الموجودة في برامج تشغيل الأجهزة لينكس.

إنها تعتمد على الهندسة المعمارية، وتتطلب فهمًا لهندسة الكمبيوتر.يحتوي كتاب Tanenbaum's "Structured Computer Organization" على ملخص جيد لأساسيات استدعاء النظام.للمزيد، اقرأ أي كتاب مدرسي عن تصميم نظام التشغيل.

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