تجريد الأجهزة

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

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

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

بما أن القيود المادية قد تختلف باختلاف الأجهزة، فإن واجهة برمجة التطبيقات (API) لا تستطيع إخفاء ذلك إلا بافتراض نموذج "القاسم المشترك الأدنى". وبالتالي، قد تصبح بعض القرارات المعمارية العميقة من جانب التنفيذ ذات صلة بمستخدمي نسخة معينة من التجريد.

يُعدّ مفهوم النقل استعارةً جيدة. فكلٌّ من ركوب الدراجة وقيادة السيارة يُعتبران وسيلة نقل. يشتركان في بعض الخصائص (مثل ضرورة التوجيه) ويختلفان في بعض الجوانب المادية (مثل مصدر الطاقة). يمكن دائمًا تحديد مفهوم "القيادة إلى" وترك الخيار للمُنفِّذ لتحديد ما إذا كان ركوب الدراجة أو قيادة السيارة هو الأنسب. يتم تجريد وظيفة "النقل البري ذي العجلات" وتُغلَّف تفاصيل "كيفية القيادة".

برمجة

تُتيح لغة البرمجة عالية المستوى تجريدًا للأجهزة، مما يسمح للمبرمج بكتابة خوارزمية دون استخدام تعليمات خاصة بوحدة المعالجة المركزية (CPU) أو بنية مجموعة تعليماتها (ISA) - وهي العمليات الأساسية لوحدة المعالجة المركزية. على سبيل المثال، يُولّد المُصرّف التعليمات الخاصة بوحدة المعالجة المركزية لبنية مجموعة تعليمات معينة. وبهذه الطريقة، يُمكن لشفرة المصدر أن تدعم قابلية النقل عبر منصات متعددة.

طبقة تجريد الأجهزة

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

تحتوي أنظمة التشغيل المحمولة مثل CP/M ( نظام الإدخال والإخراج الأساسي CP/M BIOSوDOS ( نظام الإدخال والإخراج الأساسي DOS BIOS )، و Solaris ، و Linux ، و BSD ، وmacOS ، وغيرها، على طبقة تجريد الأجهزة (HAL)، حتى وإن لم يُذكر ذلك صراحةً. بعض أنظمة التشغيل، مثل Linux، قادرة على إدراج طبقة تجريد الأجهزة أثناء التشغيل، كما في نظام Adeos. يُعرف نظام التشغيل NetBSD بطبقة تجريد الأجهزة الواضحة التي تُمكّنه من أن يكون عالي قابلية النقل. [ 1 ] يتضمن هذا النظام أنظمة فرعية مثل uvm(9)/ pmap(9)، bus_space(9)و، bus_dma(9)و، وغيرها. كما يتم تجريد ناقلات البيانات الشائعة الاستخدام في أكثر من بنية، مثل ISA ، وEISA ، وPCI ، وPCIe ، وغيرها، مما يسمح بنقل برامج التشغيل بسهولة مع الحد الأدنى من تعديل التعليمات البرمجية.

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

في بنية البرمجيات، توجد طبقة تجريد الأجهزة (HAL) أسفل واجهة برمجة التطبيقات (API)، بينما توجد طبقة التطبيق (التي غالباً ما تُكتب بلغة عالية المستوى) فوق واجهة برمجة التطبيقات وتتواصل مع الأجهزة عن طريق استدعاء وظائف في واجهة برمجة التطبيقات.

مايكروسوفت ويندوز

طبقة تجريد الأجهزة في بنية نظام التشغيل ويندوز إن تي

تحتوي نواة نظام التشغيل Windows NT على طبقة تجريد الأجهزة (HAL) في مساحة النواة، تقع بين الأجهزة والخدمات التنفيذية الموجودة في الملف [ 2 ] [ 3 ] ضمن . يتيح ذلك إمكانية نقل كود وضع النواة لنظام Windows NT إلى مجموعة متنوعة من المعالجات، ذات بنى مختلفة لوحدات إدارة الذاكرة ، وأنظمة متنوعة ذات بنى مختلفة لناقل الإدخال/الإخراج؛ حيث يعمل معظم هذا الكود دون تغيير على تلك الأنظمة، عند تجميعه لمجموعة التعليمات المناسبة لها. على سبيل المثال، لم تكن محطات عمل SGI القائمة على معالجات Intel x86 متوافقة مع محطات عمل IBM PC ، ولكن بفضل طبقة تجريد الأجهزة (HAL)، كان نظام Windows 2000 يعمل عليها. [ 4 ] منذ إصداري Windows Vista و Windows Server 2008 ، يتم تحديد طبقة تجريد الأجهزة (HAL) المستخدمة تلقائيًا أثناء بدء التشغيل ؛ في الواقع، منذ إصدار Windows Vista ، لا يسمح نظام Windows NT إلا بطبقة تجريد الأجهزة (HAL) القائمة على ACPI . [ 5 ]ntoskrnl.exehal.dll

يحتوي نظام التشغيل Windows CE أيضًا على طبقة تجريد الأجهزة (HAL) تسمى طبقة تكيف OEM (OAL)، ويتم تجميعها إلى oal.exeأو oal.dll، ويتم تضمينها في nk.binصورة التمهيد.

في نظام التشغيل Windows 9x ، كل من النواة الفعلية وHAL الفعلية هي vmm32.vxd.

AS/400

يُمكن إيجاد مثال "متطرف" لطبقة تجريد الأجهزة (HAL) في بنيتي System/38 و AS/400 ، المُطبّقتين حاليًا في نظام التشغيل IBM i . تُولّد معظم مُجمّعات هذه الأنظمة رمزًا آليًا مُجرّدًا؛ يقوم الرمز الداخلي المُرخّص (LIC) بترجمة هذا الرمز الآلي الافتراضي إلى رمز أصلي للمعالج الذي يعمل عليه، ثم يُنفّذ الرمز الأصلي الناتج. [ 6 ] (الاستثناءات هي المُجمّعات التي تُولّد الرمز الداخلي المُرخّص نفسه؛ فهذه المُجمّعات غير مُتاحة خارج IBM). وقد حقق هذا نجاحًا كبيرًا لدرجة أن برامج التطبيقات وبرامج نظام التشغيل التي تعمل فوق طبقة الرمز الداخلي المُرخّص، والتي جُمّعت على نظام S/38 الأصلي، تعمل دون تعديل أو إعادة تجميع على أحدث أنظمة AS/400، على الرغم من التغيير الجذري الذي طرأ على الأجهزة الأساسية؛ حيث استُخدمت ثلاثة أنواع مختلفة على الأقل من المعالجات. [ 6 ]

أندرويد

قدّم نظام أندرويد طبقة تجريد الأجهزة (HAL) تُعرف باسم "واجهة المورّد" (تحت الاسم الرمزي "مشروع تريبل") في الإصدار 8.0 "أوريو" . تعمل هذه الطبقة على تجريد التعليمات البرمجية منخفضة المستوى من إطار عمل نظام أندرويد، ويجب جعلها متوافقة مع الإصدارات اللاحقة لدعم الإصدارات المستقبلية من أندرويد، وذلك لتسهيل تطوير تحديثات البرامج الثابتة. [ 7 ] قبل مشروع تريبل، كان نظام أندرويد يعتمد على طبقات تجريد الأجهزة القديمة غير الموحدة. [ 8 ]

Halium هو HAL قائم على نظام Android تستخدمه العديد من أنظمة تشغيل الهواتف المحمولة مثل Ubuntu Touch و LuneOS للتشغيل على الهواتف الذكية التي تم تثبيت نظام Android عليها مسبقًا.

انظر أيضاً

مراجع

  1. "قابلية النقل ومنصات الأجهزة المدعومة" . مؤسسة NetBSD . تم الاطلاع عليه بتاريخ 12 مايو 2009 .
  2. "طبقة تجريد الأجهزة (HAL) لنظام التشغيل Windows NT" . مايكروسوفت . 31 أكتوبر 2006. تم الاطلاع عليه بتاريخ 25 أغسطس 2007 .
  3. كاستر، هيلين (1993)، داخل ويندوز إن تي ، مطبعة مايكروسوفت ، رمز ببليوغرافي : 1993iwn..book.....C
  4. "تغيير طبقة تجريد الأجهزة في ويندوز 2000 / إكس بي - Smallvoid.com" . 15 يناير 2001. تم الاطلاع عليه بتاريخ 18 سبتمبر 2020 .
  5. روسينوفيتش، مارك إي.؛ سولومون، ديفيد أ.؛ إيونيسكو، أليكس (2008). أساسيات ويندوز: بما في ذلك ويندوز سيرفر 2008 وويندوز فيستا ( الطبعة الخامسة). ريدموند، واشنطن، الولايات المتحدة الأمريكية: مطبعة مايكروسوفت . ص 65. ISBN   978-0-7356-2530-3.
  6. 1 2 سولتيس، فرانك ج. (1997). داخل نظام AS/400: عرض سلسلة AS/400e ( الطبعة الثانية). لوفلاند، كولورادو، الولايات المتحدة الأمريكية: مطبعة ديوك. ISBN  978-1-882419-66-1.
  7. «مشروع "تريبل" من جوجل يحل إحدى العقبات العديدة التي تواجه تحديثات نظام أندرويد» . آرس تكنيكا . ١٢ مايو ٢٠١٧. تم الاطلاع عليه بتاريخ ١٢ مايو ٢٠١٧ .
  8. "طبقات تجريد الأجهزة التقليدية والقديمة" . مشروع أندرويد مفتوح المصدر .

للمزيد من القراءة