نظام تشغيل بسيط يمكن تشغيله على معالجات متعددة النواة x86-64.
هذا هو واجبي المنزلي في دورة تجربة نظام التشغيل. نظرًا لأن الفصل يتحدث فقط عن تصميم نظام التشغيل على وحدة المعالجة المركزية ذات 32 بت من النواة ، وأنا مهتم أكثر بتشغيل أنظمة التشغيل التي تعمل على معالجات متعددة النواة ، اخترت كتابة نظام تشغيل على معالجات متعددة متماثلة X64.
تم تطويره باستخدام Ubuntu 16.04. تبعيات التثبيت:
apt install make gcc gdb qemu
يجري
make qemu

يوفر واجهة برمجة تطبيقات العملية/الخيط للتطبيقات ، والعمليات الداعمة/إنشاء مؤشرات الترابط ، والانتظار ، والإلغاء ، والنوم وغيرها من العمليات.
ينفذ تقنية نسخة الذاكرة على المكاتب أثناء إنشاء العملية.
تجنب ظروف السباق عندما تنفذ وحدات المعالجة المركزية متعددة التعليمات من خلال آليات المطفلة المتزامنة المناسبة.
استخدم Lapic/ioapic لتحقيق بدء التشغيل والتحكم في وحدات المعالجة المركزية متعددة النواة.
متغيرات المتجر المتعلقة بوحدة المعالجة المركزية محددة من خلال متغيرات thread_local.
| رقم سري | اسم |
|---|---|
| 0 | شوكة |
| 1 | مخرج |
| 2 | thread_create |
| 3 | thread_exit |
| 4 | Wait_process |
| 5 | انتظر |
| 6 | get_pid |
| 7 | get_tid |
| 8 | Kill_Process |
| 9 | kill_thread |
| 10 | ينام |
| 11 | يفتح |
| 12 | يغلق |
| 13 | يقرأ |
| 14 | يكتب |
| 15 | إلغاء ارتباط |
| 16 | Readdir |
| 17 | Stat |
| 18 | mkdir |
| 19 | RMDIR |
| 20 | LSEEK |
| واحد وعشرون | exec |
تنفيذ آلية الإشارة.
تنفيذ الدعم لنظام الملفات شائع الاستخدام.
مكدس بروتوكول TCP/IP.