الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

درس كتابه كرنال بلغه السى بلس باس

مغلق
بدأه azab1987 في 13 فبراير 2003 · 8 رد · 1,555 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم هذا الموقع به كيفيه كتابه الكرنال بلغه السى بلس بلس

http://www.invalidsoftware.net/os/

#2

اشكرك على الرابط .....

لم اقراء المقال حتى الان .... ولكن اعتقد ان كتابة نواة بلغة السي++ صعب شوي .......

لانه عند كتابة النواة بالسي++ سوف نخسر الدعم الجبار التي توفره لنا مكتبة السي++ المعيارية، صحيح اننا نخسرها عند كتابة النواة بلغة السي، و لكن مكتبة السي لا تقارن بمكتبة السي++ .....

على سبيل المثال: سنخسر دعم المعامل new و delete !!! سنخسر دعم ال RTTI بالإظافة إلى مناداة ال constructors للمتغيرات العامة global و ال static ..... اعتقد ان كتابة نواة بلغة السي++ يحتاج مزيد من الأبحاث و الدراسات ...

#3

أستاذ Developer .NET

هل تقصد أن أنوية أنظمة التشغيل تكتب بالسي غالباً

#4

كتابة نواة بالسي++ ليس بالمستحيل .... هو فقط صعب !! و يضيف إلى نظام التشغيل Level جديد من الصعوبة .

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

تحياتي ...

#5

مشكور ألف شكر

#6

لقد وجدت مثال و سوف أحاول ارساله

فى القريب العاجل

#7

السلام عليكم

لم أفهم يا أخي Developer ما ذا تقصد بقولك "لانه عند كتابة النواة بالسي++ سوف نخسر الدعم الجبار التي توفره لنا مكتبة السي++ المعيارية، صحيح اننا نخسرها عند كتابة النواة بلغة السي، و لكن مكتبة السي لا تقارن بمكتبة السي++ ....." فأنت لا تستطيع استخدام معظم المكتبة القياسية لا في C ولا في ++C لأن الكومبايلرات تستخدم مقاطعات الدوس في حال بناء البرنامج في الدوس فهل لديك معلومات عن كومبايلر يقوم باستخدام مقاطعات البيوس فقط؟

وثانيا تستطيع كتابة أي برنامج يعمل على C في ++C ولكن... هناك عدة مقالات تقنية حول استخدام الامكانيات الاضافية في ++C وأقصد بشكل رئيسي الكلاسات في عملية تطوير أنظمة التشغيل يعني عمل OOP في نظام التشغيل

#8

عند تطوير نظام التشغيل فإن المبرمج هو الذي يقوم بمناداة مقاطعات الدوس بنفسه و ليس الكومبايلر .... يعني في النهاية سوف تقوم بكتابة كود بالاسمبلي لتقوم بمناداة المقاطعة !

اما من ناحية نقطتك الثانيه .... المسألة التي اتكلم عنها ليس بهذه البساطة، دعك من كلمة ان كل برنامج مكتوب بلغة السي تستطيع ان تقوم بنقله إلى لغة السي++ لأننا في هذه الحالة لم ننفذ الهدف الذي صنعت السي++ من اجله ! في النهاية برنامجنا هو برنامج سي و تستطيع ترجمه بأي مترجم سي ...

اما من ناحية المقالات التقنية التي تتحدث عن تطوير نواة نظام تشغيل بلغة السي++ فلقد قرأت الكثير منها، و يعيبها انه تتكلم بصورة نظرية بحته، و الواقع مختلف جدا عند تطوير نظام التشغيل ! يوجد في لغة السي++ العديد من الأمور التي تجعل صنع نواة بها شبه مستحيل، على سبيل المثال : كيف ستوفر interface لمبرمجي ال drivers لنظامك تشغيلك بحيث تضمن هذه ال interface ان ال driver الذي يستخدمها لن يتأثر في نسخة جديدة من نظام تشغيلك ؟ إذا كان لديك مقال يتحدث عن هذه النقطة فأكون شاكر لك لو تضع رابط له .... نقطة أخرى: ماذا ستفعل عندما تريد ان تقوم بعملية تصحيح خطأ في الكود بتعديل احد ال classes لديك ..... كيف تضمن ان جميع الكود الذي يستخدم هذه ال class سوف يعمل بشكل صحيح بعد تعديل الخطأ ؟!!! هذه الأسئلة صعبة الإجابة عليها !!!! و يوجد الكثير من الأسئلة ايضا تحتاج إلى إجابه لم اذكرها .

كتبت العديد من المشاريع بلغة السي++ و ما اكتسبته من هذه المشاريع ان الاسئلة السابقة صعب إجابتها !! و اكثر المقالات التي قرأتها كانت حلولها ليست جيدة بحيث تستخدمها في تطوير برنامج في مستوى نظام تشغيل؟

نقطة أخرى حول أدى نظام التشغيل في النهاية .... تخيل معي لدقيقة فقط ... عدد عمليات ال push الذي ستقوم بها كل method عند مناداتها !!! الا تعتقد ان عملية ال push هذه تعتبر overhead ممكن تجنبه !!! أحد الحلول التي اعرفها لهذه المشكلة هي كتابة ال methods على شكل static methods لضمان أداء أعلى، و لكن في هذه الحالة سأخسر بعض ال flexability !

تقبل تحياتي ....

#9

ألف شكر على هذا الوضوع الرائع

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…