١- المُقدمة

  28 Jul 2015


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

نظام التشغيل Operating system هو برنامج الكمبيوتر المسؤول عن إدارة البرامج المختلفة، وإدارة النبيطة (Hardware)، وتوفير الواجهة بين العتاد والبرمجيات (Software). يحتوي نظام التشغيل أيضا على مجموعة من البرامج التي توفر للمستخدم مجموعة من التطبيقات المختلفة مثل تصفح الملفات File browsing وتحرير النصوص Text editing. الجزء المنوط بإدارة العتاد والبرامج وتوفير الواجهة بينهم في العادة يسمى النواة Kernel ويكون لها كافة الصلاحيات مثل الوصول المباشر للعتاد. أما برامج التطبيقات فتسمى برامج المستخدم User programs.

من أمثلة نظم التشغيل المشهورة نظام جنو/لينوكس GNU/Linux، نظام النوافذ Windows، وعائلة نظم يونكس UNIX.

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

المتطلبات القبلية Prerequisites:

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

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

ستحتاج أيضاً لنظام التشغيل GNU/Linux من أجل كتابة البرامج وترجمتها. يجب أن يحتوي النظام على binutils (للمجمع والرابط) وgcc (مترجم لغة سي) وmake (من أجل كتابة Makefiles). معظم التوزيعات تكون عليها تلك الأدوات جاهزة. ستحتاج إلى qemu من أجل محاكاة البرامج وقد نحتاج إلى بعض الأدوات الأخرى مثل hexedit.

comments powered by Disqus