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

25 يونيو، 2023 * تيتو 4 تك

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

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

 
 

 

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

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

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

 

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

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

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

1. حاولت Microsoft تقليل عدم استقرار النظام؛ بسبب سوء كتابة برامج تشغيل الأجهزة من خلال إنشاء إطار عمل جديد لتطوير برنامج التشغيل، يسمى Windows Driver Foundation (WDF). يتضمن ذلك إطار عمل برنامج تشغيل وضع المستخدم (UMDF) الذي يشجع على تطوير أنواع معينة من برامج التشغيل - بشكل رئيسي تلك التي تنفذ بروتوكولًا قائمًا على الرسائل للتواصل مع أجهزتها - كمشغل في وضع المستخدم. إذا تعطلت برامج التشغيل هذه، فإنها لا تسبب عدم استقرار النظام. يستمر نموذج Kernel-Mode Driver Framework (KMDF) في السماح بتطوير برامج تشغيل الأجهزة في وضع Kernel، ولكنه يحاول توفير تطبيقات قياسية للوظائف المعروفة بأنها تسبب مشكلات، بما في ذلك إلغاء عمليات الإدخال / الإخراج، وإدارة الطاقة، والتوصيل وتشغيل دعم الجهاز.

2. في بيئات Linux، يمكن للمبرمجين إنشاء برامج تشغيل للأجهزة كأجزاء من Kernel، بشكل منفصل كوحدات قابلة للتحميل، أو كبرامج تشغيل في وضع المستخدم (لأنواع معينة من الأجهزة حيث توجد واجهات Kernel، مثل أجهزة USB). يتضمن Makedev قائمة بالأجهزة في Linux: ttyS (طرفي)، Lp (منفذ متوازي)، Hd (قرص)، حلقة، صوت (بما في ذلك جهاز مزج الصوت، وجهاز التسلسل، و Dsp، والصوت).

3. تحتوي ملفات Microsoft Windows.sys ووحدات Linux.ko النمطية على برامج تشغيل الأجهزة القابلة للتحميل. تتمثل ميزة برامج تشغيل الأجهزة القابلة للتحميل في أنه لا يمكن تحميلها إلا عند الضرورة ثم تفريغها، ومن ثم توفير ذاكرة Kernel.

 

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

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

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

 

تطبيقات برامج  تشغيل الجهاز

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

تتضمن المستويات الشائعة للتجريد لبرامج تشغيل الأجهزة ما يلي:

1. بالنسبة للأجهزة: التواصل مباشرة والكتابة إلى أو القراءة من سجل التحكم في الجهاز واستخدام واجهة ذات مستوى أعلى (مثل Video BIOS) واستخدام برنامج تشغيل جهاز آخر ذي مستوى منخفض (على سبيل المثال ، برامج تشغيل نظام الملفات باستخدام برامج تشغيل الأقراص) ومحاكاة العمل باستخدام الأجهزة ، أثناء القيام بشيء مختلف تمامًا

2. بالنسبة للبرامج: السماح لنظام التشغيل بالوصول المباشر إلى موارد الأجهزة وتنفيذ الأوليات فقط وتنفيذ واجهة لبرامج غير مشغلة (على سبيل المثال ، TWAIN) وتنفيذ لغة ما ، أحيانًا على مستوى عالٍ جدًا (على سبيل المثال ، PostScript)

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

 

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

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

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

هناك العديد من المتغيرات لبرامج تشغيل الأجهزة الافتراضية ، مثل VxDs و VLMs و VDDs.

 

واجهات برمجة التطبيقات (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.

التسميات