السلام عليكم ورحمه الله وبركاته
دعونا نبتعد قليلا عن المواضيع والمقالات التي تتحدث عن تصميم نظام تشغيل ونريد ذلك ...الخ والتي كنت في الماضي واحدا من مؤيديها ولننظر الي ارض الواقع قليلا ونبدأ بخطوات المشاركة كلا بما لديه
وسأكتب بعض الاشياء التي يمكن تسميتها ملحوظات اكثر منها مقالة كاملة (لكني اطمع ان يحن علي الاخ عبد الله الشمري ب5 نقاط مرة واحدة للمرة الاول فى حياتي هنا :lol: ) والملحوظات تلك أكتسبت بعضها من التواصل مع الاخرين المهتمين بذلك المجال ومنها خلال عملي قبل توقف Arab-OS ( ارجو الا يتحدث أحد عنه مطلقا فى هذا الموضوع وسبب توقفي هو الثانوية العامة فى المقام الآول وبعض الاسباب الاخري ) ومن خلال ايضا بعض ما كتب فى بعض الكتب وخبرات بعض المختصين فى هذا المجال حول كتابة نظم التشغيل
حسنا بعيدا عن الفلسفة والكلام نتكلم قليلا فى الامور الاهم
كتابة نظم التشغيل
نظام التشغيل :
هو Sodtware (برنامج) يدير الحاسب ويتيح التعامل مع البرمجيات والتطبيقات امختلفة ويعتبر الحد الفاصل بين المستخدم والعتاد ويقدم للمستخدم ادارة لموارد العتاد فى صورة رومسية (عادة) ويدير نظام التشغيل التطبيقات ويتيح API للتعامل مع البرمجيات وتستخدم فى تطويرها وهذا هو تعريف مبسط لنظام التشغيل (ليس كاملا بالمناسبة لكني أراه كافيا فى الوقت الحالي استكشف أنت بعد ذلك )
المعرفة المطلوبة لكتابة نظم التشغيل : (ليس بالتأكيد لكي تصبح محترف فى كتابتها فهذا أمر نسبي بالتدريب والخبرة والمهارات)
- معرفة لغة الاسمبلي ولغة C فى الغالب (نعم ان لغة الاسمبلي مهمة ولو كنت ستستخدم لغة مثل C او غيرها فى كتابة معظم النظام لآن هناك امورا سيتوجب استخدامك للاسمبلي فيها )
- تراكيب البيانات (Data Structure) ومفاهميها المختلفة مثل (Array, Linked List, Binary Tree, Hash…الخ)
- معرفتك لCompilers , Linkers , Object Files , Executable Files وانواع الملفات التنفيذية وبنيتها مثل ELF و غيرها
- أنماط عمل المعالج (Precessor Modes) مثل Real Mode ,Protected Mode , Long Mode ... الخ
- معرفة بالBIOS والمقاطعات (Interrupts) و SR و DMA و IO ...الخ
- معرفة جيدة بمفاهيم الHardware
- دراسة جيدة لمبادئ الحاسب OS Concepts
ان كتابة نظام تشغيل متوسط ليست مهمة سهلة لكن كتابة بعض النظم الصغيرة والبسيطة كتدريب وتعلم تعتبر الي حد ما سهلة لكن الاهم هو دراسة المفاهيم والتدرب الجيد لكن وبالرغم من ان كتابة نظم التشغيل ليست مهمة سهلة بل صعبة لكنها أيضا ليست مستحيلة وتطوير نظم التشغيل قد يأخذ الكثير من الوقت عما كنت حتي تتوقعه أنت ويقول بعض المختصين ( الذين اراهم متقدمين فى هذا المجال) ان يمكنك اذا كان لديك المعرفة والمهارة اللازمة كتابة نواة نظام تشغيل تعمل فى غضون 6 أشهر
أهدافك :
كتابة نظام تشغيل تنقسم الي كتابة العديد من المكونات (modules ) وكتابة كل المكونات من الصفر سوف يأخذ الكثير والكثير من الوقت وكذلك فان كل المكونات ليست ضرورية ولازمة وتصلح مع كل انظمة التشغيل لذا قرر اولا اي نوع من انظمة التشغيل تريد الكتابة وهذا فعليا يعتمد بشكل كبير علي نوع Krenel ويمكنك معرفة المزيد عنها من هنا وبالمناسبة هناك العديد من القرارات مثل هل نظامك سيكون يعتمد على shell أم GUI أم الاثنان وخوازرميات المعالجة و ادارة المهام والذاكرة ..... الخ
لذا النصيحة الدائمة هي حدد اهدافك وقراراتك (Set your Goals )
بماذا تبدأ ؟
ابدأ بتحليل تصميم نظامك وKrenel قبل ان تبدأ في التطوير فالدراسة والتخطيط الجيد والبحث العلمي فابحث عن ابحاث ومشاريع سابقة وانظر وضع خطتك وراجعها واعمل تحليل منطقي وبعدها ابدأ بTask Step Task
الادوات المشهورة لدي مطوري انظمة التشغيل :
هناك العديد من الادوات التي تساعدك في ذلك الامر لكن العديد من المبرمجين يفضلون كتابة الادوات واستخدجام الادوات الخاصة بهم
عموما فى البداية لن يكون عليك ذلك
GCCوNASM/FASMوIdوالعديد من الادوات الاخري تستخدم بشكل واسع فى برمجة انظمة التشغيل
وتحتاج ايضا الي معرفة Mixed Code وكيفية استخدام كود لغة C مع لغة Assmbley وهو ما يسمي بMixed Code
التنقيح (Debugging) :
تجربة وتنقيج الKrenel أمر فى غاية الاهمية فسوف تحتاج الي استخدامها وتجربتها على real machine او Virtual Machine واالخيار الثاني افضل ويستحسن وينصح به وامثلته كثيرة مثل Bochs و QEmu و غيرهم
وتحتاج ايضا الي بعض الادوات الاخري مثل FileDisk وبعض الادوات لانشاء image files للتجربة على VM Machine
ملاحظات عامة :
اذا كنت تكتب نواة نظام تشغيل فانك يجب ان تركز على الوقت وتعتني به جيدا أو انك لن تستطيع انهاء المشروع حاول توزيع الوقت على ذلك النحو حسب نصيحة العديد من الذين دخلوا هذا المجال ومنهم بعض المهندسين الكبار
- التصميم 25% (15 % للقراءة والدراسة - 10% للتصميم والتطوير )
- الادوات وتهيئة بيئة العمل والتطوير 5%
- تجربة بعض الانظمة البسيطة وتطويرها للتدرب على استخدام مكوان توادوات داخل النظام مثل GRUB وتجربة افكارك 25 %
- انشاء نواة حقيقة (تختلف فى اكتمالها وتعقيدها وجودتها علي حسب قدراتك ) 30 %
- التحليل والتنقيج 20 %
المصادر :
الكتب
Operating Systems Design and Implementation
PC Intern: The Encyclopedia of System Programming
Developing Your Own 32-Bit Operating System
Art of Assembly
المواقع
http://wiki.osdev.org/Main_Page
أتمني ان اكون افدت الجميع ولو بشئ بسيط وأرجو من الجميع فقط طلب بسيط
الدعاء بظهر الغيب لمصرنا الحبيبة واتمني ذلك من جميع المتواجدين ان تمر تلك المرحلة الحرجة والازمات التي تمر بالبلاد وكذلك سوريا واليمن وليبيا ويصلح حال بلاد الاسلام والمسلمين وخصوصا بلدي مصر التي اعيش فى غربة حارقة عنها وما زال فيها تجري الدماء ويسقط الشباب شهداء بسبب اذناب النظام السابق
والله ولي التوفيق