قلتُ لك في مقال الإقلاع إنّ نواة النظام، حين تأخذ زمام الجهاز، تحمّل «برامج التشغيل التي تخاطب كلّ قطعة». ومرّت العبارة سريعًا، لكنّها تخفي أعجوبةً حقيقيّة. فكّر: نظام تشغيلٍ واحدٌ، ويندوز مثلًا، يعمل على ملايين الأجهزة المختلفة، بآلاف أنواع البطاقات والطابعات والشاشات، صنعها مئات الشركات، كلٌّ يبني قطعته بطريقته الخاصّة. فكيف يعرف نظامٌ واحدٌ أن يخاطبها كلّها؟ هذا سؤال هذا المقال.
الجواب في طبقةٍ وسيطةٍ ذكيّةٍ اسمها برامج التشغيل، أو التعريفات كما يسمّيها الناس. في هذا المقال تفهم المشكلة التي تحلّها هذه البرامج، وكيف تعمل مترجمًا بين لغة النظام الموحّدة ولغة كلّ قطعةٍ خاصّة، ولماذا تعمل بعض الأجهزة فور توصيلها بينما يحتاج غيرها تعريفًا، ولماذا يقدر تعريفٌ معيوبٌ على إسقاط الجهاز كلّه، ومن أين تأخذ تعريفاتك بأمانٍ بعيدًا عن الفخاخ الشائعة.
المشكلة: نظامٌ واحدٌ وآلاف الأجهزة
تخيّل لو كان على نظام التشغيل أن يعرف تفاصيل كلّ قطعةٍ صُنِعت وستُصنَع. كلّ طابعةٍ من كلّ شركةٍ بموديلاتها المتعدّدة، وكلّ بطاقة شبكةٍ، وكلّ كاميرا. لكان نظام التشغيل ضخمًا إلى حدّ الاستحالة، ولاحتاج تحديثًا كاملًا مع كلّ جهازٍ جديدٍ يظهر في السوق. ولما استطاعت شركةٌ صغيرةٌ أن تصنع قطعةً جديدةً إلّا إذا أقنعت صانع النظام بإضافة دعمها. نظامٌ مغلقٌ على نفسه، عاجزٌ عن النموّ.
المشكلة الجوهريّة أنّ كلّ قطعة عتادٍ تتكلّم «لغتها» الخاصّة: إشاراتٌ كهربائيّةٌ وأوامر محدّدةٌ يفهمها تصميمها وحده. طابعةٌ من شركةٍ تنتظر أوامر بترتيبٍ معيّن، وطابعةٌ من أخرى تنتظرها بترتيبٍ مختلفٍ تمامًا، وإن كانتا تؤدّيان الوظيفة نفسها. لا توجد لغةٌ واحدةٌ تتكلّمها كلّ الأجهزة، ولا يعقل أن يتعلّم النظام كلّ اللغات. لا بدّ من حلٍّ يفصل النظام عن تفاصيل كلّ قطعة.
الحلّ: المترجم
الحلّ أن يوضَع بين النظام والقطعة مترجمٌ صغيرٌ مخصّصٌ لتلك القطعة بالذات: هذا هو برنامج التشغيل (Driver). النظام يتكلّم بلغته العامّة الموحّدة، والقطعة تتكلّم بلغتها الخاصّة، والتعريف يترجم بينهما. حين يريد النظام الطباعة، يقول أمرًا عامًّا «اطبع هذه الصفحة»، فيترجمه تعريف الطابعة إلى سلسلة الإشارات الدقيقة التي تفهمها تلك الطابعة بعينها، ويتولّى تفاصيل التخاطب معها.[1]
وجمال هذا الحلّ أنّه يفصل الطرفين فصلًا تامًّا. النظام لا يعرف شيئًا عن تفاصيل الطابعة، ولا يريد أن يعرف: يكفيه أن يصدر الأمر العامّ. والطابعة لا تعرف شيئًا عن النظام: يكفيها أن تتلقّى لغتها الخاصّة. التعريف وحده يقف في المنتصف يعرف الطرفين. لهذا يكتب صانع القطعة تعريفها هو، لأنّه أدرى الناس بلغتها، فيسلّم النظام مترجمًا جاهزًا لا يحتاج النظام لفهم ما بداخله.
بهذا صار النظام مفتوحًا للنموّ بلا حدّ. تظهر قطعةٌ جديدةٌ تمامًا لم تكن موجودةً يوم صُنِع النظام؟ لا مشكلة: يكتب صانعها تعريفها، فيتعلّم النظام مخاطبتها دون أن يتغيّر هو نفسه. أضفت جهازًا لم يُخلَق مثله من قبل؟ يكفي تعريفه ليندمج. هذه الطبقة الوسيطة هي سرّ قدرة نظامٍ واحدٍ على العمل مع عتادٍ لا حصر له، ماضيه وحاضره ومستقبله.
طبقة التجريد: القابس الموحّد
لتفهم الفكرة أعمق، تخيّل مقبس الكهرباء في جدار بيتك. كلّ جهازٍ في البيت مختلفٌ في الداخل تمامًا، لكنّ كلّها تنتهي بقابسٍ موحّدٍ يدخل المقبس نفسه. لا يحتاج الجدار أن يعرف شيئًا عن الغسّالة أو المصباح، يكفي أن يعطي كهرباءً بشكلٍ متّفقٍ عليه. القابس هو الواجهة الموحّدة التي تخفي اختلاف الأجهزة. برامج التشغيل تفعل الشيء نفسه بين النظام والعتاد.
النظام يعرّف «مقابس» عامّةً لكلّ صنف: مقبسٌ لكلّ ما هو طابعة، وآخر لكلّ ما هو بطاقة شبكة، وثالثٌ لكلّ ما هو قرص. هذه الواجهة العامّة اسمها طبقة التجريد. كلّ تعريفٍ يتكفّل بأن يجعل قطعته تبدو للنظام كأنّها «الطابعة العامّة» المثاليّة، مهما اختلف داخلها. فيتعامل النظام والبرامج مع الصنف لا مع القطعة، ويبقى اختلاف القطع مخفيًّا خلف الواجهة الموحّدة.
ولهذا فائدةٌ عمليّةٌ تلمسها كلّ يوم: برنامجٌ واحدٌ يطبع على أيّ طابعةٍ دون أن يعرف نوعها، ومشغّل الموسيقى يخرج الصوت من أيّ سمّاعةٍ دون أن يهتمّ بصانعها. البرامج تخاطب الصنف العامّ، والتعريف يترجم إلى القطعة الخاصّة. لولا هذه الطبقة، لاحتاج كلّ برنامجٍ أن يعرف كلّ قطعة، وهو ما رأيتَ استحالته. التجريد يحرّر الجميع من تفاصيل بعضهم البعض.
لماذا يعمل بعضها فورًا؟
لاحظت غالبًا أنّ فأرةً أو لوحة مفاتيحٍ تعمل فور توصيلها دون تعريف، بينما تطلب طابعةٌ أو بطاقةٌ خاصّةٌ تعريفًا. السرّ في المعايير الموحّدة. اتّفقت الصناعة على «لغةٍ» قياسيّةٍ لأصنافٍ شائعةٍ كالفأرة ولوحة المفاتيح وذواكر USB، فصار كلّ من يصنعها يتكلّم اللغة نفسها. ولأنّ النظام يحمل تعريفًا عامًّا لهذه اللغة القياسيّة، تعمل أيّ فأرةٍ فورًا دون تعريفٍ خاصّ.
أمّا القطع المعقّدة أو المتفرّدة، كبطاقة رسوماتٍ متقدّمةٍ أو طابعةٍ بمزايا خاصّة، فلها قدراتٌ تتجاوز اللغة القياسيّة، وتحتاج تعريفًا خاصًّا يفتح كامل إمكاناتها. قد تعمل بطاقة الرسوم بتعريفٍ عامٍّ بحدٍّ أدنى، لكنّها لن تعطي أداءها الكامل حتّى تركّب تعريف صانعها. لهذا تبدو صورة جهازٍ جديدٍ باهتةً أو بدقّةٍ منخفضةٍ حتّى تثبّت تعريف بطاقته، فينطلق حينها بكامل قوّته.
أين تعمل التعريفات؟ ولماذا يهمّ؟
هنا نقطةٌ دقيقةٌ لها أثرٌ كبير. لأنّ التعريف يخاطب العتاد مباشرةً، فهو يعمل في أعمق طبقةٍ من النظام وأكثرها سلطةً، اسمها فضاء النواة. البرامج العاديّة التي تستعملها تعمل في طبقةٍ محدودة الصلاحيّات، معزولةٍ عن قلب النظام، فإن تعطّل برنامجٌ منها أُغلِق وحده دون أن يمسّ غيره. أمّا التعريف فيعمل في القلب نفسه، بصلاحيّاتٍ شبه مطلقةٍ على الجهاز.[3]
هذه السلطة ضروريّةٌ ليقوم التعريف بعمله، لكنّها سلاحٌ ذو حدّين. تعريفٌ معيوبٌ أو رديء الكتابة لا يتعطّل وحده، بل قد يسقط النظام كلّه معه، لأنّه في قلبه لا في أطرافه. هنا يكمن سرّ «الشاشة الزرقاء» الشهيرة في ويندوز، أو ما يشبهها في الأنظمة الأخرى: كثيرٌ من هذه الانهيارات المفاجئة سببها تعريفٌ سيّئٌ فشل في القلب، فأوقف النظام حمايةً من ضررٍ أكبر.
لهذا حين يبدأ جهازك ينهار فجأةً بشاشاتٍ زرقاء بعد تركيب قطعةٍ جديدةٍ أو تحديث تعريف، فأوّل المتّهمين هو ذلك التعريف. والعودة إلى نسخته السابقة كثيرًا ما تحلّ المشكلة. فهم أنّ التعريف يعمل في القلب يفسّر لك لماذا يكون خطؤه أخطر من خطأ أيّ برنامجٍ عاديّ، ولماذا تشدّد الأنظمة في التحقّق منه قبل السماح له بالعمل.
التوصيل والتشغيل
في الماضي كان تركيب قطعةٍ جديدةٍ عذابًا: تركّبها، ثمّ تبحث عن تعريفها في قرصٍ مرفق، وتضبط إعداداتٍ يدويّةً معقّدةً حتّى يتعرّف عليها النظام. ثمّ جاءت تقنيّة التوصيل والتشغيل (Plug and Play) فغيّرت كلّ شيء. صار النظام يكتشف القطعة الجديدة لحظة توصيلها، ويسألها عن هويّتها، ثمّ يبحث تلقائيًّا عن تعريفها المناسب ويثبّته دون تدخّلٍ منك في الغالب.
هذا ما يحدث حين تصل جهازًا جديدًا فترى رسالة «يجري إعداد الجهاز» ثمّ يعمل بعد لحظات. النظام تعرّف على القطعة، وجاب مخزونه من التعريفات أو جلب المناسب من الإنترنت، وثبّته، وهيّأ كلّ شيء. هذه الراحة التي تأخذها اليوم مسلّمةً كانت حلمًا قبل عقود. لكنّها لا تنجح دائمًا مع كلّ قطعة، فتبقى حالاتٌ تحتاج تدخّلك لجلب التعريف يدويًّا، وهنا يأتي السؤال المهمّ.
وكيف يعرف النظام أيّ تعريفٍ يناسب القطعة الجديدة؟ لكلّ قطعةٍ رقم هويّةٍ فريدٌ يعلن عن نفسه به عند التوصيل: هذا الرقم يقول من صنعها وأيّ موديلٍ هي. يقرؤه النظام، ثمّ يبحث في مخزونه أو على الإنترنت عن التعريف الموسوم بهذا الرقم بالضبط. لهذا قد يثبّت النظام تعريفًا خاطئًا لقطعتين متشابهتين تحملان رقمًا متقاربًا، فتعمل القطعة بشكلٍ ناقصٍ حتّى تصحّح التعريف يدويًّا.
من أين تأخذ تعريفاتك؟
هذا أهمّ ما في المقال عمليًّا، وأكثر ما يُخطئ فيه الناس. القاعدة الذهبيّة: خذ التعريف من مصدرٍ واحدٍ موثوقٍ فقط، وهو موقع الشركة الصانعة للقطعة أو للجهاز مباشرةً. تعريف بطاقة الرسوم من موقع صانعها، وتعريف الحاسوب المحمول من موقع شركته. هذه المصادر تعطيك التعريف الصحيح السليم، الموقّع من صاحبه، دون زياداتٍ خبيثة. لا تبحث عنه في مواقع مجهولةٍ مهما بدت مغرية.
واحذر خاصّةً برامج «تحديث التعريفات» التي تعدك بفحص جهازك وتحديث كلّ تعريفاته بضغطة زرّ. كثيرٌ منها في أحسن حالٍ عديم الفائدة، وفي أسوئه بابٌ للبرمجيّات الخبيثة والإعلانات المزعجة، وقد يثبّت تعريفاتٍ خاطئةً تسبّب مشاكل أكثر ممّا تحلّ. لا تحتاج هذه البرامج أصلًا: نظامك الحديث وموقع الصانع يكفيانك. تذكّر أنّ التعريف يعمل في قلب نظامك، فمصدره مسألة أمنٍ لا راحةٍ فقط.
والمصدر الثاني الموثوق هو نظام التشغيل نفسه. صار ويندوز وماك ولينكس يجلبون كثيرًا من التعريفات تلقائيًّا عبر التحديث الرسميّ، من مخزونٍ فحصته الشركة ووثّقته. لهذا كثيرٌ من الأجهزة تعمل بكامل طاقتها اليوم دون أن تبحث عن تعريفٍ يدويًّا أصلًا. فإن عملت قطعتك بعد التحديث الرسميّ، فلا داعي لأن تبحث في مكانٍ آخر، فقد جاءك التعريف من أأمن مصدرٍ ممكن.
وتنبيهٌ أخير: كثيرٌ من الشركات تغلّف تعريفها ببرنامجٍ ضخمٍ محمّلٍ بإضافاتٍ لا تحتاجها، من لوحات تحكّمٍ ثقيلةٍ إلى إعلاناتٍ وخدماتٍ تعمل في الخلفيّة. أنت تريد التعريف وحده، لا هذه الحمولة. حين يتيح لك المثبّت خيارًا، اختر التثبيت المخصّص وثبّت التعريف فقط، ودع الزوائد. جهازك أخفّ وأنقى بتعريفٍ نظيفٍ بلا حاشيةٍ تستهلك موارده وتزعجك بلا فائدة.
تعريفاتٌ بلا عتاد
ليست كلّ التعريفات لقطعٍ ماديّة. بعضها يخاطب عتادًا وهميًّا لا وجود له. حين ترى «طابعةً» في نظامك تحفظ ما ترسله إليها ملفًّا بدل ورقة، فتلك ليست طابعةً حقيقيّة، بل تعريفٌ برمجيٌّ يتظاهر بأنّه طابعة، فيستقبل الأمر العامّ ويحوّله إلى ملفّ. النظام لا يفرّق: يخاطب هذه «الطابعة» الوهميّة كأيّ طابعةٍ حقيقيّة، لأنّها تقدّم له الواجهة العامّة نفسها التي شرحتُها لك.
هذه فكرةٌ أنيقةٌ تفتح أبوابًا كثيرة. أجهزةٌ صوتيّةٌ وهميّةٌ توجّه الصوت بين البرامج، وأقراصٌ وهميّةٌ تقرأ صورة قرصٍ كأنّها قرصٌ حقيقيّ، وبطاقات شبكةٍ وهميّةٌ تبني شبكاتٍ افتراضيّة. كلّها تعريفاتٌ تقدّم للنظام واجهةً معياريّةً دون عتادٍ خلفها. هذا يبيّن أنّ التعريف في جوهره ليس مرتبطًا بالعتاد بالضرورة، بل هو أيّ شيءٍ يقدّم للنظام واجهةَ صنفٍ معروف، حقيقيًّا كان ما خلفه أم برمجيًّا.
التوقيع: هويّةٌ لا تُزوَّر
لأنّ التعريف بهذه الخطورة، وضعت الأنظمة الحديثة حارسًا: توقيع التعريفات. كلّ تعريفٍ موثوقٍ يحمل توقيعًا رقميًّا من صانعه، يثبت أنّه منه فعلًا وأنّه لم يُعبَث به بعد نشره. حين تحاول تثبيت تعريفٍ بلا توقيعٍ صحيح، يحذّرك النظام أو يمنعه أصلًا، لأنّ تعريفًا مجهول المصدر في قلب النظام خطرٌ لا يُحتمَل. هذا التوقيع امتدادٌ لفكرة الإقلاع الآمن التي شرحتُها لك في المقال السابق.[2]
ولهذا حين تثبّت تعريفًا من موقع صانعه، يمرّ بسلام، لأنّه موقّع. وحين تحاول تثبيت تعريفٍ من مصدرٍ مشبوه، يعترض النظام. هذه ليست عرقلةً، بل حمايةٌ في أخطر نقطةٍ يمكن أن يدخل منها الخبث. من يفهم لماذا يعمل التعريف في القلب، يفهم لماذا تشدّد الأنظمة في توقيعه، ويعرف أنّ تجاوز هذا التحذير ليس أمرًا يُستهان به.
وأبعد من مجرّد التوقيع، تفحص بعض الشركات التعريفات في مختبراتها قبل اعتمادها، فتختبر أنّها لا تعطّل النظام وتعمل كما ينبغي. التعريف الذي يجتاز هذا الفحص يحمل شهادةً تطمئنك إلى أنّه مرّ باختبارٍ حقيقيّ، لا مجرّد توقيعٍ يثبت مصدره. لهذا يُنصَح بتفضيل التعريفات المعتمدة على غيرها حين تتوفّر، فهي أقلّ احتمالًا لأن تجلب لك شاشةً زرقاء أو سلوكًا غريبًا في قلب نظامك.
التعريف مقابل البرنامج الثابت
قد يختلط عليك التعريف بالبرنامج الثابت الذي شرحتُه لك في مقال الإقلاع، وبينهما فرقٌ مهمّ. البرنامج الثابت يعيش داخل القطعة نفسها، محفورًا في شريحتها، يشغّلها من الداخل. أمّا التعريف فيعيش في نظام تشغيل حاسوبك، ومهمّته أن يخاطب تلك القطعة من الخارج. القطعة تحمل برنامجها الثابت أينما ذهبت، لكنّها تحتاج تعريفًا في كلّ جهازٍ توصَل به.
بعبارةٍ أخرى: البرنامج الثابت لغة القطعة الداخليّة، والتعريف مترجمٌ يتكلّم تلك اللغة من جهة النظام. كلاهما ضروريٌّ ويعملان معًا: البرنامج الثابت يجعل القطعة تعرف كيف تشتغل، والتعريف يجعل نظامك يعرف كيف يأمرها. فهم الفرق يجنّبك خلطًا شائعًا، ويوضّح لماذا قد تحدّث أحدهما دون الآخر، ولماذا تُحدَّث برامج القطع الثابتة من مصدرٍ ووجهةٍ غير تعريفاتها.
متى تحدّث تعريفاتك؟
القاعدة العامّة كالتي ذكرتُها لك في البرنامج الثابت: إن كان كلّ شيءٍ يعمل جيّدًا، فلا داعي لتحديث تعريفٍ لمجرّد وجود إصدارٍ أحدث. التحديث بلا حاجةٍ قد يجلب مشاكل لم تكن عندك. حدّث تعريفًا حين يحلّ مشكلةً تعانيها فعلًا، أو يضيف دعمًا لشيءٍ تريده، أو يسدّ ثغرةً أمنيّة. غير ذلك، «إن لم يكن مكسورًا فلا تصلحه» تنطبق هنا كثيرًا.
الاستثناء الأبرز تعريف بطاقة الرسوم، خاصّةً للاعبين. فصانعو البطاقات يصدرون تحديثاتٍ متكرّرةً تحسّن أداء الألعاب الجديدة وتصلح عيوبها، فيستفيد اللاعب من متابعتها. وكذلك أيّ تحديثٍ يُعلَن أنّه يسدّ ثغرةً أمنيّة يستحقّ التثبيت، لأنّ التعريف في قلب النظام هدفٌ مغرٍ للمهاجمين. وازن دائمًا بين فائدةٍ حقيقيّةٍ وخطر تغييرٍ لا تحتاجه، ولا تحدّث لمجرّد التحديث.
حين ينكسر تعريف
يحدث أحيانًا أن يعمل جهازك جيّدًا، ثمّ تتعطّل قطعةٌ فيه فجأةً بعد تحديثٍ تلقائيٍّ من النظام. السبب المتكرّر أنّ التحديث جلب تعريفًا جديدًا معيوبًا أو غير مناسبٍ لقطعتك بالذات. لهذا توفّر الأنظمة زرّ «التراجع عن التعريف» الذي يعيد النسخة السابقة التي كانت تعمل. حين تنكسر قطعةٌ عقب تحديث، فهذا أوّل ما تجرّبه: عد بالتعريف خطوةً إلى الوراء.
وحيلةٌ أخرى تحلّ كثيرًا من الأعطال الغامضة: إزالة التعريف ثمّ إعادة تثبيته. أحيانًا يفسد التعريف المثبّت لسببٍ ما، فيتصرّف الجهاز تصرّفًا عجيبًا، ويصلحه تثبيتٌ نظيفٌ من جديد. تحذف التعريف من مدير الأجهزة، ثمّ تعيد تشغيل الجهاز، فيكتشف النظام القطعة من جديدٍ ويثبّت لها تعريفًا نظيفًا. هذه من أبسط الحلول وأكثرها فاعليّةً، وكثيرًا ما تغني عن حلولٍ أعقد.
ومن أوجاع العتاد القديم أنّ صانعه قد يتوقّف عن كتابة تعريفاتٍ له للأنظمة الجديدة. فتجد قطعةً سليمةً تمامًا لا تعمل على نظامٍ حديثٍ لمجرّد غياب تعريفٍ لها، فتتحوّل إلى نفايةٍ إلكترونيّةٍ وهي صالحة. هذه مشكلةٌ حقيقيّةٌ في عالمٍ يتغيّر بسرعة، ودافعٌ لبعضهم للبقاء على أنظمةٍ قديمةٍ تدعم عتادهم، أو للجوء إلى أنظمةٍ كلينكس التي يكتب مجتمعها تعريفاتٍ لعتادٍ هجره صانعه.
التعريف بابًا للخطر
بما أنّ التعريف يعمل في قلب النظام بصلاحيّةٍ مطلقة، صار هدفًا مغريًا للمهاجمين. من أخبث الأساليب الحديثة أن يستغلّ مهاجمٌ تعريفًا موقّعًا سليمًا لكنّه يحمل ثغرة: يثبّته على جهاز الضحيّة، ثمّ ينفذ عبر ثغرته إلى قلب النظام، متجاوزًا الحماية لأنّ التعريف موقّعٌ فيثق به النظام. هذا يبيّن أنّ التوقيع وحده لا يكفي: تعريفٌ موثوق المصدر قد يبقى خطرًا إن كان فيه عيبٌ يُستغَلّ.
لهذا صارت الأنظمة تحتفظ بقوائم بالتعريفات المعروف أنّها مثغورةٌ وتمنع تحميلها، وتشدّد في عزل التعريفات عن بعضها قدر الإمكان. وهذا سببٌ إضافيٌّ لألّا تثبّت تعريفًا إلّا لحاجة، ومن مصدره الأصليّ، وبأحدث إصدارٍ سدّ ثغراته. كلّ تعريفٍ في جهازك بابٌ إلى قلبه، وكلّ بابٍ زائدٍ خطرٌ محتمل. أقلّ التعريفات المثبّتة، مع تحديث ما يسدّ الثغرات منها، أسلم من كثرةٍ لا تحتاجها.
لينكس وطريقٌ آخر
يسلك لينكس طريقًا مختلفًا في التعريفات. فبدل أن يعتمد على تعريفاتٍ منفصلةٍ من كلّ صانع، يضمّ كثيرًا منها داخل نواته مباشرةً. لهذا يعمل عتادٌ كثيرٌ على لينكس فور تثبيته دون بحثٍ عن تعريف، لأنّ نواته تحمل دعمه أصلًا. هذه ميزةٌ كبيرةٌ للأجهزة المدعومة: تركّب النظام فيعمل كلّ شيءٍ تلقائيًّا، بلا مطاردة تعريفاتٍ كما في غيره.
لكنّ لهذا وجهًا آخر. القطع الجديدة جدًّا، أو التي لا ينشر صانعها تفاصيلها للمطوّرين، قد لا تجد دعمًا في النواة فورًا، فتتأخّر أو لا تعمل بكامل قوّتها. هذا سبب شائعٌ لمتاعب بعض العتاد على لينكس. فرقٌ في الفلسفة: نظامٌ يعتمد على الصانع ليكتب التعريف، وآخر يكتب مجتمعه التعريفات ويضمّها للنواة. لكلٍّ حسناته وعيوبه، والنتيجة تختلف من قطعةٍ لأخرى.
جرّبه بنفسك
افتح «مدير الأجهزة» في ويندوز، أو ما يقابله في نظامك، وتصفّح قائمة كلّ ما في جهازك من عتاد: المعالج، وبطاقة الشاشة، وبطاقات الصوت والشبكة، والأقراص. كلّ عنصرٍ في هذه القائمة يخاطبه النظام عبر تعريف. ابحث عن أيّ عنصرٍ عليه علامة تعجّبٍ صفراء: تلك إشارةٌ إلى قطعةٍ بلا تعريفٍ سليم، وهي أوّل ما تفحصه حين لا يعمل شيءٌ في جهازك كما ينبغي.
وانقر على بطاقة الرسوم في القائمة واقرأ تفاصيل تعريفها: اسم صانعه، وإصداره، وتاريخه. جرّب أن تفتح موقع الصانع وتقارن إصدارك بأحدث إصدارٍ منشور، دون أن تحدّث شيئًا الآن. هكذا تتعوّد على المصدر الصحيح للتعريفات، وتميّزه عن مواقع «التحديث السريع» المشبوهة. هذه العادة وحدها تحميك من كثيرٍ من المشاكل التي يجلبها الناس على أنفسهم من حيث لا يدرون، ومن مالٍ يُدفَع لإصلاح ما كان يُصلَح بنقرتين في البيت.
من الترجمة إلى الإدارة
عرفتَ كيف تحلّ برامج التشغيل مشكلةً تبدو مستحيلة: أن يخاطب نظامٌ واحدٌ آلاف الأجهزة المختلفة. مترجمٌ صغيرٌ لكلّ قطعة، يقف بين لغة النظام العامّة ولغتها الخاصّة، خلف طبقة تجريدٍ تخفي الاختلاف. وفهمتَ لماذا يعمل بعضها فورًا، ولماذا يعمل التعريف في قلب النظام، ومن أين تأخذه بأمان. صار «تثبيت التعريف» عندك مفهومًا لا طقسًا غامضًا.
وبهذا تكون قد رأيتَ القطع كلّها والطبقات التي تربطها: العتاد، والملفّات، ونظام الملفّات، والإقلاع، والتعريفات. لكن ثمّة لاعبٌ ظلّ حاضرًا في كلّ مقالٍ دون أن يُفرَد بالحديث: هو الذي يحمّل التعريفات، ويدير الذاكرة، ويوزّع المعالج على البرامج، وينظّم الملفّات. إنّه نظام التشغيل، المايسترو الذي يقود هذه الأوركسترا كلّها. وقد آن أوان أن تجلس أمامه وجهًا لوجه في المقال القادم.
المصادر
- ويكيبيديا، «برنامج تعريف (Device Driver)» (تعريف برنامج التشغيل ودوره وسيطًا يترجم بين نظام التشغيل والعتاد). ↩
- Microsoft Learn، «Driver signing» (توقيع التعريفات رقميًّا للتحقّق من مصدرها وسلامتها قبل تشغيلها في النواة). ↩
- MIT Technology Review بالعربيّة، «برنامج تشغيل الجهاز» (التعريف يعمل في طبقة النواة ويوفّر طريقة موحّدة للتفاعل بين النظام وأنواع الأجهزة). ↩