شرح برامج تشغيل الجهاز (Device Driver)



29 أكتوبر، 2021 | تيتو 4 تك


  • في مجال الحوسبة ، تعد برامج تشغيل الجهاز (تشار إليها عادةً باسم برامج التشغيل) برامج كمبيوتر تعمل أو تتحكم في نوع معين من الأجهزة المتصلة بجهاز الكمبيوتر. توفر برامج التشغيل واجهة برمجية للأجهزة ، مما يمكّن أنظمة التشغيل وبرامج الكمبيوتر الأخرى من الوصول إلى وظائف الأجهزة دون الحاجة إلى معرفة التفاصيل الدقيقة للأجهزة المستخدمة.

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

     

     

    enlightened  الغرض من برامج التشغيل

     

    تعمل برامج تشغيل الأجهزة على تبسيط البرمجة من خلال العمل كمترجم بين الجهاز والتطبيقات أو أنظمة التشغيل التي تستخدمه. يمكن للمبرمجين كتابة رمز التطبيق ذي المستوى الأعلى بشكل مستقل عن أي جهاز محدد يستخدمه المستخدم النهائي.
    على سبيل المثال ، قد يكون لتطبيق عالي المستوى للتفاعل مع منفذ تسلسلي وظيفتان ببساطة هما "إرسال البيانات" و "استقبال البيانات". في المستوى الأدنى ، يقوم برنامج تشغيل الجهاز الذي ينفذ هذه الوظائف بالاتصال بوحدة تحكم المنفذ التسلسلي المحددة المثبتة على كمبيوتر المستخدم. تختلف الأوامر اللازمة للتحكم في 16550 UART كثيرًا عن الأوامر اللازمة للتحكم في محول المنفذ التسلسلي FTDI ، لكن كل برنامج تشغيل جهاز خاص بالأجهزة يلخص هذه التفاصيل في نفس واجهة البرنامج (أو ما شابهها).
     
     

    enlightened  تطوير برامج التشغيل

     

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

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

     

    ـــ   حاولت Microsoft تقليل عدم استقرار النظام بسبب سوء كتابة برامج تشغيل الأجهزة من خلال إنشاء إطار عمل جديد لتطوير برنامج التشغيل ، يسمى Windows Driver Foundation (WDF). يتضمن ذلك إطار عمل برنامج تشغيل وضع المستخدم (UMDF) الذي يشجع على تطوير أنواع معينة من برامج التشغيل - بشكل أساسي تلك التي تنفذ بروتوكولًا قائمًا على الرسائل للتواصل مع أجهزتها - كمشغل في وضع المستخدم. إذا تعطلت برامج التشغيل هذه ، فإنها لا تسبب عدم استقرار النظام. يستمر نموذج Kernel-Mode Driver Framework (KMDF) في السماح بتطوير برامج تشغيل الأجهزة في وضع kernel ، ولكنه يحاول توفير تطبيقات قياسية للوظائف المعروفة بأنها تسبب مشكلات ، بما في ذلك إلغاء عمليات الإدخال / الإخراج ، وإدارة الطاقة ، والتوصيل و تشغيل دعم الجهاز.
     
    ـــ   في بيئات Linux ، يمكن للمبرمجين إنشاء برامج تشغيل للأجهزة كأجزاء من kernel ، بشكل منفصل كوحدات قابلة للتحميل ، أو كبرامج تشغيل في وضع المستخدم (لأنواع معينة من الأجهزة حيث توجد واجهات kernel ، مثل أجهزة USB). يتضمن Makedev قائمة بالأجهزة في Linux: ttyS (طرفي) ، lp (منفذ متوازي) ، hd (قرص) ، حلقة ، صوت (بما في ذلك جهاز مزج الصوت ، وجهاز التسلسل ، و dsp ، والصوت).
     
    ـــ تحتوي ملفات Microsoft Windows .sys ووحدات Linux .ko النمطية على برامج تشغيل الأجهزة القابلة للتحميل. تتمثل ميزة برامج تشغيل الأجهزة القابلة للتحميل في أنه لا يمكن تحميلها إلا عند الضرورة ثم تفريغها ، وبالتالي توفير ذاكرة kernel.
     
     

    enlightened  وضع النواة مقابل وضع المستخدم

     

    يمكن تشغيل برامج تشغيل الأجهزة ، خاصة على أنظمة Microsoft Windows الحديثة ، في وضع النواة kernel (Ring 0 على x86 CPUs) أو في وضع المستخدم (Ring 3 على x86 CPUs). تتمثل الفائدة الأساسية لتشغيل برنامج التشغيل في وضع المستخدم في تحسين الاستقرار ، حيث لا يمكن لبرنامج تشغيل الجهاز المكتوب بشكل سيئ في وضع المستخدم تعطل النظام عن طريق الكتابة فوق ذاكرة kernel. من ناحية أخرى ، عادةً ما تفرض انتقالات وضع المستخدم / kernel عبئًا كبيرًا على الأداء ، وبالتالي تحظر برامج تشغيل وضع المستخدم من أجل زمن انتقال منخفض ومتطلبات إنتاجية عالية.
    يمكن الوصول إلى مساحة Kernel بواسطة وحدة المستخدم فقط من خلال استخدام استدعاءات النظام. تعد برامج المستخدم النهائي مثل غلاف UNIX أو التطبيقات الأخرى المستندة إلى واجهة المستخدم الرسومية جزءًا من مساحة المستخدم. تتفاعل هذه التطبيقات مع الأجهزة من خلال وظائف تدعم kernel.
     
     

    enlightened  التطبيقات

     

    نظرًا لتنوع الأجهزة وأنظمة التشغيل الحديثة ، تعمل برامج التشغيل في العديد من البيئات المختلفة. قد يتفاعل المشغل مع:
     
    1  -  الطابعات
    2 - محولات الفيديو
    3 - بطاقات الشبكة
    4 - كروت الصوت
    5 - الناقلات المحلية من مختلف الأنواع
    6 - نواقل الإدخال / الإخراج ذات النطاق الترددي المنخفض من مختلف الأنواع (لأجهزة التأشير مثل الماوس ، ولوحات المفاتيح ، و USB ، وما إلى ذلك)
    7 - أجهزة تخزين الكمبيوتر مثل القرص الصلب والأقراص المضغوطة وناقلات الأقراص المرنة (ATA و SATA و SCSI)
    8 - تنفيذ الدعم لأنظمة الملفات المختلفة
    9 - ماسحات الصور
    10 - الكاميرات الرقمية
     
    تتضمن المستويات الشائعة للتجريد لبرامج تشغيل الأجهزة ما يلي:
     
    1  -   بالنسبة للأجهزة :
     
    ـــ   التواصل مباشرة
    ـــ   الكتابة إلى أو القراءة من سجل التحكم في الجهاز
    ـــ   استخدام واجهة ذات مستوى أعلى (مثل Video BIOS)
    ـــ استخدام برنامج تشغيل جهاز آخر ذي مستوى منخفض (على سبيل المثال ، برامج تشغيل نظام الملفات باستخدام برامج تشغيل الأقراص)
    ـــ محاكاة العمل باستخدام الأجهزة ، أثناء القيام بشيء مختلف تمامًا
     
    2 - بالنسبة للبرامج :
     
    ـــ السماح لنظام التشغيل بالوصول المباشر إلى موارد الأجهزة
    ـــ تنفيذ الأوليات فقط
    ـــ تنفيذ واجهة لبرامج غير مشغلة (على سبيل المثال ، TWAIN)
    ـــ تنفيذ لغة ما ، أحيانًا على مستوى عالٍ جدًا (على سبيل المثال ، PostScript)
     
    لذا فإن اختيار برامج تشغيل الأجهزة الصحيحة وتثبيتها لأجهزة معينة غالبًا ما يكون مكونًا رئيسيًا في تكوين نظام الكمبيوتر.
     
     

    enlightened  برامج تشغيل الأجهزة الافتراضية

     

    تمثل برامج تشغيل الأجهزة الظاهرية نوعًا معينًا من برامج تشغيل الأجهزة. يتم استخدامها لمحاكاة جهاز ، خاصة في بيئات المحاكاة الافتراضية ، على سبيل المثال عند تشغيل برنامج DOS على كمبيوتر Microsoft Windows أو عند تشغيل نظام تشغيل ضيف ، على سبيل المثال ، مضيف Xen. بدلاً من تمكين نظام التشغيل الضيف من الحوار مع الأجهزة ، تأخذ برامج تشغيل الأجهزة الافتراضية الدور المعاكس وتحاكي قطعة من الأجهزة ، بحيث يمكن أن يتوهم نظام التشغيل الضيف وبرامج التشغيل الخاصة به التي تعمل داخل جهاز افتراضي بالوصول إلى أجهزة حقيقية. يتم توجيه محاولات نظام التشغيل الضيف للوصول إلى الأجهزة إلى برنامج تشغيل الجهاز الظاهري في نظام التشغيل المضيف ، على سبيل المثال ، استدعاءات الوظائف. يمكن لبرنامج تشغيل الجهاز الظاهري أيضًا إرسال أحداث محاكاة على مستوى المعالج مثل المقاطعات إلى الجهاز الظاهري.
    قد تعمل الأجهزة الافتراضية أيضًا في بيئة غير افتراضية. على سبيل المثال ، يتم استخدام محول الشبكة الافتراضية مع شبكة خاصة افتراضية ، بينما يتم استخدام جهاز القرص الظاهري مع بروتوكول iSCSI. يمكن أن يكون برنامج Daemon Tools مثالًا جيدًا على برامج تشغيل الأجهزة الافتراضية.
    هناك العديد من المتغيرات لبرامج تشغيل الأجهزة الافتراضية ، مثل VxDs و VLMs و VDDs.
     
     

    enlightened  المشغلات المفتوحة

     

    ـــ   الطابعات  : CUPS
    ـــ   RAIDs  : (CCISS واجهة أوامر Compaq لدعم SCSI-3)
    ـــ   الماسحات الضوئية  : SANE
    ـــ   الفيديو  : Vidix، Direct Rendering Infrastructure
     
    أوصاف Solaris لبرامج تشغيل الأجهزة الشائعة الاستخدام
     
    ـــ   fas : جهاز تحكم SCSI سريع / واسع
    ـــ   hme : إيثرنت سريع (10/100 ميجابت / ثانية)
    ـــ   isp : وحدات تحكم SCSI التفاضلية وبطاقة SunSwift
    ـــ   glm : (وحدة ارتباط جيجابود) وحدات تحكم UltraSCSI
    ـــ   scsi : أجهزة الكمبيوتر الصغيرة ذات الواجهة التسلسلية (SCSI)
    ـــ   sf  : (soc + أو حلقة تحكيم القناة الليفية الاجتماعية FCAL)
    ـــ   soc : وحدات تحكم صفيف التخزين SPARC (SSA) وجهاز التحكم
    ـــ   social  : وحدات التحكم الضوئية التسلسلية لـ FCAL (soc +)
     
     

    enlightened  واجهات برمجة التطبيقات (APIs)

     

    1  -  Windows Display Driver Model (WDDM) - بنية برنامج تشغيل عرض الرسومات لنظام التشغيل Windows Vista و Windows 7 و Windows 8.

    2  -  مؤسسة برنامج تشغيل Windows (WDF).

    3  -  نموذج برنامج تشغيل Windows (WDM).

    4  -  مواصفات واجهة برنامج تشغيل الشبكة (NDIS) —واجهة برمجة تطبيقات لتشغيل بطاقة الشبكة القياسية.

    5  -  هندسة صوت Linux المتقدمة (ALSA) - اعتبارًا من عام 2009 واجهة مشغل صوت Linux القياسية.

    6  -  Scanner Access Now Easy (SANE) - واجهة المجال العام لأجهزة الماسح الضوئي للصور النقطية.

    7  -  I / O Kit - إطار عمل مفتوح المصدر من Apple لتطوير برامج تشغيل أجهزة Mac OS X.

    8  -  نظام الملفات القابل للتثبيت (IFS) - واجهة برمجة تطبيقات لنظام الملفات لنظام التشغيل IBM OS / 2 و Microsoft Windows NT.

    9  -  Open Data-Link Interface (ODI) - واجهة برمجة تطبيقات لبطاقة شبكة تشبه NDIS.

    10  -  واجهة برنامج تشغيل موحدة (UDI) - مشروع واجهة برنامج تشغيل عبر الأنظمة الأساسية.

    11  -  Dynax Driver Framework (dxd) - إطار عمل برنامج تشغيل متعدد الأنظمة الأساسية مفتوح المصدر C ++ لـ KMDF و IOKit.

     
     
    enlightened  المعرفات
     
    ـــ  يتم تحديد الجهاز الموجود في ناقل PCI أو USB بواسطة معرفين يتكون كل منهما من 4 أرقام سداسية عشرية. يحدد معرف البائع بائع الجهاز. يحدد معرف الجهاز جهازًا معينًا من الشركة المصنعة / البائع.
    ـــ غالبًا ما يحتوي جهاز PCI على زوج معرف للشريحة الرئيسية للجهاز ، وأيضًا زوج معرف النظام الفرعي الذي يحدد البائع ، والذي قد يكون مختلفًا عن الشركة المصنعة للرقاقة.