/كيف يعمل نظام التشغيل ؟

كيف يعمل نظام التشغيل ؟

نظام التشغيل :

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

الوظائف الأساسية لنظام التشغيل :

1- عملية الإقلاع
2- إدارة المهام
3- إدارة الذاكرة
4- إدارة النبيطة
5- إدارة الملفات

1- عملية الإقلاع :

عندما تقوم بالضغط على زر التشغيل ويبدأ الحاسوب الشخصي في العمل، فإن أول ما يتم تشغيله هو نظام الإدخال والإخراج الأساسي Basic Input/Output System- BIOS– ، وهو برنامج مثبت على شريحة ذاكرة للقراءة فقط تسمى BIOS ROM Chip. يقوم هذا البرنامج بتمهيد الكمبيوتر للعمل وإجراء اختبار ذاتي للنظام Power-on Self-Test وتحميل نظام التشغيل. ومن أجل تحميل نظام التشغيل، تقوم BIOS بنسخ أول قطاع sector في القرص الصلب Hard-disk إلى الذاكرة RAM. يحتوي أول قطاع في القرص الصلب على الـ Boot-loader الذي يقوم فعليا بتحميل نظام التشغيل، ولذلك يسمى هذا القطاع بقطاع الإقلاع Boot sector. عادة ما يكون حجم القطاع 512 بايت (فقط!) ويحتوي على:

– برنامج الإقلاع Boot-loader وحجمه 446 بايت

– جدول الأقسام Partition Table وحجمه 64 بايت

– توقيع Signature بحجم 2 بايت

1

يقوم برنامج الإقلاع بتحميل نواة نظام التشغيل Operating System Kernel إلى الذاكرة وتشغيلها، النواة هي قلب نظام التشغيل وهي المسؤولة عن إدارة المهام والذاكرة والملفات وغيره، وعندما تبدأ النواة في العمل، تقوم بتمهيد نفسها. وفي النظام UNIX تقوم النواة بعد ذلك بتشغيل برنامج Initialization daemon والذي يقوم بعد ذلك بتشغيل باقي البرامج وإظهار سطح المكتب. تعمل النواة كحلقة وصل بين البرامج والعتاد. فمثلا عندما يريد برنامج ما فتح ملف وقراءته، تقوم النواة بتلبية الطلب بشكل منظم.

2- إدارة المهام :

من أهم ما يميز نظم التشغيل الحديثة أنها تسمح بتشغيل أكثر من برنامج في نفس الوقت، وهو ما يسمى بتعدد المهام Multi-tasking. ولكن، ما عهدناه عن المعالج أنه يستطيع فقط تشغيل برنامج واحد في اللحظة الواحدة، فوظيفة المعالج هي استقبال سلسلة الأوامر من الذاكرة وتنفيذها أمرا تلو الآخر، و(سلسلة اﻷوامر) هذه هي ما نسميه نحن بالبرنامج، ومن أجل تشغيل العديد من البرامج في نفس الوقت، تستخدم نظم التشغيل حيلة ذكية،  لو افترضنا مثلا أن هناك برنامجين A و B، يقوم النظام بتشغيل البرنامج A لفترة معينة (10 ميللي ثانية على سبيل المثال)، ومن ثم إيقافه مؤقتا، وتشغيل البرنامج B لفترة أخرى، ثم إيقاف البرنامج B بعد انتهاء فترته واستئناف البرنامج A، وهكذا.. ولأن فترة التحويل Switching Period صغيرة جدا (10 ميللي ثانية) يُخيل للمستخدم أن البرنامجين يعملان في نفس الوقت، البرمجية المسؤولة عن عملية التحويل switching تسمىTask Scheduler، ويوجد خوارزميات كثيرة لعملية الجدولة، ولعل أشهرها وأبسطها خوارزمية Round-robin وهي التي قمنا بتوضيحها أعلاه،  وتتم عملية التحويل بمساعدة رقاقة chip تسمى Timer والتي تقوم بإرسال إشارة إلى المعالج CPU كل 10 ميللي ثانية، وعندما يستقبل المعالج هذه الإشارة يقوم بإيقاف البرنامج الجاري تنفيذه وتشغيل الـ Task scheduler الذي يقوم بعملية التحويل واستئناف برنامج آخر.

 2

يقوم نظام التشغيل أيضا بتوفير واجهة لبرمجة التطبيقات Application programming interface وهي عبارة عن مجموعة من الإجراءات routines التي يمكن للبرامج استخدامها من أجل قراءة الملفات – كتابة الملفات – تشغيل برامج أخرى – طباعة حرف على الشاشة – قراءة الوقت وغيرهم، ويقوم نظام التشغيل بتلبية طلبات البرامج المختلفة مع التأكد من عدم وجود تعارضات، فمثلا لا يمكن لبرنامجيين أن يستخدما الطابعة في نفس الوقت وإلا ستقوم الطابعة بطباعة معلومات مختلطة Rubbish. يقوم نظام التشغيل بالتنسيق بين البرنامجين لكي يتم استخدام الطابعة بشكل صحيح.

 3- إدارة الذاكرة :

أثناء عمل النظام، يحتل كل برنامج جزء معين من الذاكرة RAM، ومن أجل تنظيم عملية تقسيم الذاكرة وتوزيعها على البرامج المختلفة، يستخدم نظام التشغيل تقنية الذاكرة الوهمية Virtual Memory technique، وهي تقوم على المبادئ الآتية:

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

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

– البرامج الخاملة يمكن نقل صفحاتها من الذاكرة الرئيسية إلى القرص الصلب، وعندما ينشط البرنامج يمكن استرجاع صفحاته من القرص الصلب إلى الذاكرة الرئيسية، الهدف من ذلك هو توفير الذاكرة الرئيسية للبرامج النشطة لتحقيق أقصى استفادة، تسمى عملية النقل هذه بالمبادلة Swapping.

  3

4- إدارة النبيطة :4

يوفر نظام التشغيل طبقة بين البرامج وبين العتاد وذلك لحماية النبائط من البرمجيات الخبيثة أو التالفة، ولتنظيم الاستخدام المشترك، ولحجب التفاصيل. يوفر النظام مجموعة من النماذج Modules والتي تسمى محركات الأجهزة Device drivers. يقوم كل محرك/نموذج بإدارة جهاز معين، فهناك محرك خاص بالقرص الصلب، يقوم بإرسال واستقبال الإشارات للقرص الصلب من أجل قراءة وكتابة المعلومات من وإلى القرص. وهناك محرك خاص بلوحة المفاتيح، يقوم  باستقبال البيانات من لوحة المفاتيح وإرسالها إلى البرامج التي تعمل في الذاكرة. وهناك محرك خاصة ببطاقة العرض VGA card ويقوم برسم الأشكال على شاشة العرض. توفر واجهة برمجة التطبيقات API ايضا مجموعة من الإجراءات routines التي تعمل كحلقة وصل بين البرامج وبين محركات الأجهزة، لا يحتاج البرنامج إلى معرفة التفاصيل الداخلية للعتاد، فقط يقوم البرنامج باستدعاء إجراءات بسيطة جدا وانتظار النتائج.

5- إدارة الملفات :

5

من أجل تبسيط عملية تخزين واسترجاع البيانات، يقوم نظام التشغيل بتقسيم البيانات على القرص الصلب إلى مجموعة من الملفات والتي تمثل قوالب لتخزين البيانات. ويتم تجميع الملفات في مجموعة من الأدلة (مجلدات) Directories والتي تمثل أوعية لحفظ الملفات. ويقوم المستخدم بإنشاء المجلدات وكتابة الملفات وقراءتها وذلك بمساعدة نظام التشغيل. تتمثل مهمة الأخير في رسم جداول وتخزينها على القرص الصلب، تحتوي هذه الجداول على اسماء الملفات وحجم كل ملف ومكانه على القرص. وعند استدعاء ملف ما يقوم النظام بالنظر في هذه الجداول لمعرفة مكان الملف على القرص وبياناته. تلك المنظومة تسمى بنظام الملفات file-system. وكل نظام تشغيل له نظام الملفات الخاص به. فمثلا، نظام DOS يستخدم جداول تخصيص الملفات FAT
File Allocation Table-
 وهو عبارة عن جدول صغير يتم رسمه في بداية القرص، ولكل ملف في النظام قائمة مرتبطة linked-list تحدد مواقع بيانات الملف على القرص. يستخدم لينوكس نظام ملفات أكثر تعقيدا وهو ext2 وهو يشبه إلى حد كبير نظم الملفات المستخدمة في أنظمة يونكس. وفكرته تتمثل في أن كل ملف عبارة عن عقدة Index Node- Inode– . يتم تخزين قوائم من الـ inodes، وتحتوي كل inode على معلومات الملف الذي تشير إليه. ويتم معاملة الدلائل على إنها ملفات عادية ولكن تحتوي على اسماء وعناوين ملفات أخرى.