Deodeokos
هذا مشروع نظام التشغيل مكتوب استنادًا إلى مبدأ 64 -Pit Multicore OS والإنقاذ.
من السهل التسجيل ، لذلك قد تكون هناك تغييرات وأخطاء متكررة!
البيئة والبناء
- Apple M1 MacBook Air
- DOCKER (Ubuntu 18.04 / AMD64)
- نظرًا لأن GCC ، QEMU ... هو نظام تشغيل مكتوب في بيئة X86_64 ، إذا كنت M1 ، فأنت بحاجة إلى إضافة خيار Docker Platform.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
مرجع
- بيئة QEMU التي تم تقديمها في كتاب "64 -bit -pit -multi -core OS والإنقاذ" هي 0.10.4 ، لذلك إذا كنت تستخدم أحدث QEMU ، فلن يظهر نظام التشغيل بشكل صحيح. يمكنني استخدام إصدار QEMU 2 وأحتاج إلى تعديل محمل التمهيد لحله. قم بتغيير 80 -سطر
cmp al, 19 من bootloader.asm إلى cmp al, 37 للعمل.
تصحيح الأخطاء
GDB
إذا تابعت تصحيح الأخطاء من خلال GDB ، فستحتاج إلى قشتين.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
تصحيح التقدم بعد تحديد نقطة التوقف
vscode
أولاً ، قم بتثبيت ملحق التصحيح الأصلي.
إذا قمت بالتواصل مع تصحيح الأخطاء في بيئة VSCODE ، اتبع العملية التالية.
-
.vscode/task.json qemu تنفيذ التنفيذ - Run Qemu Debug in
.vscode/task.json - نقطة توقف
- تصحيح الأخطاء مع F5
يمكنك تخصيص الأمر عن طريق تعديل محتويات .vscode/launch.json و .vscode/task.json .
يتغير
- 210125: تطبيق SPINLOCK SYNC
- 211220: معالجة تشتت المقاطعة في وضع I/O متماثل
- 211116: التنفيذ متعدد الطور 2 (التنشيط الأساسي)
- 211028: تطبيق متعدد الأوساط 1 (تطبيق جدول MP)
- 211020: تطبيق برنامج تشغيل جهاز المنفذ التسلسلي
- 211017: ذاكرة التخزين المؤقت لنظام الملفات وتنفيذ Rampdic
- 211002: تطبيق ملف I / O
- 210927: تكوين بيئة تصحيح الأخطاء
- 210902: تطبيق نظام الملفات البسيط
- 210830: مضيف سائق القرص الثابت
- 210824: تنفيذ تخصيص الذاكرة الديناميكية
- 210813: تطبيق متعدد القراءة
- 210809: حل حالة العرق من خلال Mutex
- 210807: تنفيذ جدولة قائمة الانتظار متعددة المستويات
- 210802: تنفيذ جدولة Round Robin
- 210725: تنفيذ تعدد المهام البسيطة
- 210723: أضف جهاز مؤقت
- 210720: تنفيذ قذيفة وحدة التحكم
- 210719: تنفيذ المقاطعة باستخدام وحدة تحكم الموافقة المسبقة عن علم
- 210717: أضف مقاطعة لوحة المفاتيح الأساسية (الاقتراع)
- 210716: إضافة برنامج تشغيل لوحة المفاتيح
- 210712: تم تحويله من وضع الحماية إلى وضع IA-32E
- 210708: قم بإنشاء الكيرنيل الأول
- 210706: الانتقال من الوضع الحقيقي إلى وضع الحماية
- 210701: أضف لوادر التمهيد