سؤال

أحب البرمجة والتحديات كتابة نواة يبدو البرمجة التحدي.

للأسف, حبات من الصعب بشكل خاص لاختبار لأنهم في الأساس جوهر أنظمة التشغيل بحيث لا يمكن بسهولة ركض فوق من نظام التشغيل.

ومع ذلك أنا أعرف عن التطبيقات التي تسمى الأجهزة الظاهرية التي يمكن أن تحاكي أجهزة الكمبيوتر.

ما هي أسهل/أفضل طريقة لتطوير واختبار حبات(C+الجمعية) باستخدام الأجهزة الظاهرية?

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

المحلول

في حين BOCHS يبدو أن يكون أفضل مما يتيح لك معرفة عندما يكون هناك شيء يذهب على نحو خاطئ مع الحيوانات الأليفة الخاص بك نظام التشغيل...فمن جدا slooooow!يمكنني استخدام VirtualPC للأغراض العامة واختبار BOCHS عند الحصول على أشياء غامضة.

أيضا, سوف أكثر من المرجح أن يكون تمهيد نظام التشغيل كل 2 دقيقة ، لذلك فإنه يساعد على أن يكون نوعا من الآلية وسيلة لبناء صورة التمهيد والنار من Virtual PC.

لقد بنيت GRUB boot floppy image مع جميع الأشياء الضرورية للوصول إلى التمهيد النواة.بن من جذورها.يمكنني استخدام ملف دفعي إلى نسخ هذا الملف إلى المشروع الظاهري دليل استخدام صورة الدهون مولد إلى نسختي kernel الصورة.ثم مجرد إطلاق VirtualPC المشروع.Vola!

مقتطفات من الملف الدفعي:

COPY Images\Base.vfd Images\Boot.vfd /Y
fat_imgen.exe modify Images\Boot.vfd -f Source\Bin\KERNEL.BIN
COPY Images\Boot.vfd Emulators\VirtualPC\ /Y
START Emulators\VirtualPC\MyOS.vmc

واحد الاقتراح الأخير:تعيين VirtualPC عملية الأولوية المنخفضة ثق بي على هذا واحد!سأكون سعيدا تبادل بعض التعليمات البرمجية!

الأدوات: DGJPP, NASM ، اليرقة.
كود: osdev.غزاله ، osdever.net

نصائح أخرى

وكنت قد تكون مهتمة في النظر في HelenOS . ولها من النوية الصفر التي تم تصديرها إلى العديد من أبنية (الأحذية على ما يرام على المعدن) تم تطويرها باستخدام المحاكاة مثل Simics وكيمو.

ونحن نستخدم نكش ثابت التي يتم نسخها إلى ISO النهائي أثناء عملية الإنشاء. بعض الأشياء فقط لتكون على هذا النحو حتى يصبح OS استضافة النفس. أنا أوصي NOT تنفيذ الخاصة مكتبة مساحة المستخدم C الخاص بك إلا إذا كنت حقا تريد أن تفعل كل شيء من الصفر .. سوف تصبح النفس استضافة أقرب من ذلك بكثير:)

وعلى الرغم من Simics هو غير حرة، وأنا أوصي به (والتي بنيت في التصحيح / أدوات التنميط به) في حين جعل النواة. مرة واحدة لديك نوع من وحدة التحكم نواة ومسجل في المكان، كيمو يقوم بعمل لطيفة للغاية.

وانها واضحة. إنشاء جهاز ظاهري، والكتابة النواة، بنسخه إلى الجهاز الظاهري، تشغيل الجهاز الظاهري.

وستحتاج إلى أن تكون أكثر تحديدا إذا كنت تريد المزيد من النصائح محددة.

وربما فقط إنشاء الجهاز (x86 و أعتقد)، ومن ثم تحقيق بالضبط كيف تتصرف أثناء التمهيد. يجب أن يكون هناك واحد أو أكثر من الملفات في نظام الملفات الجهاز المضيف التي تكون بمثابة نظام الملفات الجهاز الظاهري، ثم كنت بحاجة لوضع بعض المعلومات قطاع التمهيد هناك التي تسبب نواة في التنمية الخاصة بك للإقلاع.

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

واختيار واحدة عشوائيا، bochs يبدو أن <لأ href = "HTTP: //bochs.sourceforge ؟ صافي /-CGI بن / topper.pl اسم = جديد + Bochs + الوثائق وURL = HTTP: //bochs.sourceforge.net/doc/docbook/user/index.html "يختلط =" نوفولو noreferrer "> الدعم تحرير وسائل الإعلام التمهيد من الخارج باستخدام الأدوات القياسية مثل دد الخ.

The first question that you need to ask yourself is what hardware architecture are you targeting? I'll assume for the sake of this discussion that you are targeting the IA_32 architecture, which would probably be a wise choice as there is plenty of readily-available documentation on that processor.

If you're truly serious about this undertaking, then you will definitely want to run your debug/code/build/deploy cycle against an emulator or VM. Someone mentioned BOCHS, which is very popular. If emulation speed is your thing, there is also an emulator called Qemu that is faster than BOCHS.

I'd suggest that your development environment run under Linux or Windows, which again would probably be a wise choice due to the available documentation for those dev environments.

Make is your friend. Use it to automate the build/execute process. I'd advise you to pick your toolsets/compilers up front, and spend some time learning them well. It will save you in the long run.

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