سؤال

لقد كنت أستخدم C ++ لفترة من الوقت الآن وبدأت في الاهتمام ببرمجة نظام المستوى الأدنى مثل برامج التشغيل والأشياء. حتى نوع من نظام التشغيل البدائي يمكن أن يكون مشروعًا مثيرًا للاهتمام!

ليس لدي أدنى فكرة حيث يمكنني البدء. هل هناك أي أشياء غير محددة-يمكن أن أبدأ بها وهل هناك أي شيء عن C ++ يجب أن أحاول تجنب الاستثناءات في الرمز الحرجة للأداء؟

نظام التشغيل الحالي الخاص بي هو Windows 7 إذا كان هذا مهمًا كثيرًا.

هل كانت مفيدة؟

المحلول

كتابة برامج تشغيل أجهزة Windows في C ++ ليست مستحيلة ، لا توجد العديد من وظائف CRT التي يمكنك استخدامها لتحقيق مشكلة. المشغل الجديد غير قابل للاستخدام على سبيل المثال ، ليس عليك أن تخشى std :: bad_alloc. ما لم تحل محله ، فإن ذلك يقطع مجموعة كبيرة من فئات مكتبة C ++ القياسية.

ولكن هذا ليس حقًا نقطة برنامج تشغيل الجهاز ، فمن المهم أن تجعله صغيرًا قدر الإمكان. C ++ يؤتي ثماره عند الكتابة مركب الشفرة. أنت تفعل صراحة ليس تريد كتابة رمز معقد في برنامج تشغيل الجهاز. تصحيح الأخطاء هو redrum.

لينوس حقا يحب ج في النواة. هناك سبب وجيه لذلك.

نصائح أخرى

القي نظرة على Osdev.org (يتم الرد على الكثير من الأسئلة التي ستظهر في ذهنك عند التفكير في تطوير نظام التشغيل الخاص بك هنا).

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

لحسن الحظ ، هذه الأشياء قليلة بما يكفي بحيث يمكن كتابتها بلغة التجميع التي يتم الوصول إليها من C ++.

أود أن أقترح بشدة أن تبدأ من خلال اختراق سائقي وكرات الجهاز المفتوح المصدر الموجود ، والتي لا يمكنك فعلها إلا في Linux أو *BSD. ستمنحك التجربة أيضًا شعورًا جيدًا بما إذا كنت مقطوعًا لهذا النوع من البرمجة.

أملك سمع يتم كتابة نظام Symbian OS المفتوح مؤخرًا باستخدام C و C ++. لست متأكدًا من الأجزاء التي يتم إجراؤها باستخدام C ++ لأنني لم أقرأ قاعدة التعليمات البرمجية. النظر في النظر في ذلك.

لدى kerneltrap.org بعض المناقشات الجيدة حول سبب عدم وجود C ++ في قاعدة الكود. النظر في قراءة ذلك أيضا.

Symbian OS مكتوب في متغير C ++. بالطبع ، هناك رمز تجميع للأشياء ذات المستوى المنخفض ، ولكن كل هذا اختتم. لا يمكنك استخدام الاستثناءات ، وبالنسبة للبرامج التشغيل في الوقت الفعلي ، لا يمكنك القيام بأشياء طبيعية مثل تخصيص الذاكرة الديناميكية ، ولا حتى في C.

أوصي C لغة البرمجة و Assembler. لست متأكدًا مما إذا كان من الممكن أن يكون هناك مستوى منخفض مع C ++.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top