أصبح هذا المشروع ممكنًا بواسطة Void Echo و Three Liang @ Shandong University ، كلية هندسة البرمجيات.
المشروع هو نظام تشغيل بسيط ، والذي يعتمد على كتاب "Nachos: ليس نظام تشغيل آخر تمامًا" لـ Andrew S. Tanenbaum.
جميع الكود تحت CC0 1.0 Universal (CC0 1.0) تفاني المجال العام.
قبل تشغيل الرمز ، يرجى التأكد من أنك قد أنجزت الخطوات التالية:
- باستخدام نظام Linux واحد ، وقم بتثبيت برنامج التحويل البرمجي GCC و G ++
- يمكنك الوصول الكامل إلى دليل الجذر للنظام
- تثبيت المتقاطع مع GCC-MIPS.
أولا ، تشغيل git clone command.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-Projectثم يمكنك عمل مكونات أو أكثر من نظام التشغيل.
في Nachos ، هناك العديد من المكونات ، ويمكنك تحسين نظام التشغيل من خلال تعزيز مكون واحد أو أكثر.
لاحظ أنه لا ينبغي عليك تغيير ./code/machine ، ./code/thread ، ./code/monitor بشكل مباشر ، لأنها جوهر نظام التشغيل.
إذا قمت بذلك ، يمكن أن يعمل نظام التشغيل أيضًا ، ولكن لا ينصح بهذا النمط.
لكل مختبر ، يوجد ملف readme.md ، والذي يحتوي على وصف المختبر. يرجى قراءة ملف readme.md قبل البدء.
عندما تقرر تغيير الرمز في ./code/machine ، ./code/thread أو ./code/monitor ، يجب عليك أولاً نسخ الملف ليتم تغييره إلى دليل المختبر ، ثم تغيير الرمز هناك.
تحت دليل كل مختبر ، هناك ملفات makefile و makefile.local. عادة ، لا تحتاج إلى تغيير ملف MakeFile ، ولكن قد تحتاج إلى تغيير ملف makefile.local. للتأكد من تجميع التغييرات الخاصة بك.
يختلف Makefile.local لكل مختبر ، ويجب أن يكون هكذا:
# Makefile.local for lab 2
ifndef MAKEFILE_THREADS_LOCAL
define MAKEFILE_THREADS_LOCAL
yes
endef
SFILES = switch $( HOST_LINUX ) .s
# If you add new files, you need to add them to CCFILES,
# you can define CFILES if you choose to make .c files instead.
CCFILES = main.cc
list.cc
scheduler.cc
synch.cc
synchlist.cc
system.cc
thread.cc
utility.cc
threadtest.cc
synchtest.cc
interrupt.cc
sysdep.cc
stats.cc
timer.cc
INCPATH += -I- -I../lab2 -I../threads -I../machine # find in ./ directory, if not found, find in ../threads, etc. Usually, this line is the only line you need to change.
DEFINES += -DTHREADS # This line defines the macro THREADS, which is equal to `#define THREADS`. `DEFINES` is a special variable in Makefile.
endif # MAKEFILE_THREADS_LOCALلاحظ أنه لا يمكن تشغيل nachos بشكل صحيح على Windows (على الأقل في الوقت الحالي) ، وإذا قمت بتعديل الرمز على Windows ، فقط تأكد من تجميع الكود على Linux.
إذا قمت بتطوير على Linux ، قبل ارتكاب الرمز الخاص بك ، يرجى تشغيل make clean First لتنظيف ملفات الكائنات والملفات القابلة للتنفيذ. ليس من الجيد ارتكاب ثنائيات لجيثب.
قد تلاحظ أيضًا أن هناك بعض الملفات المسماة
placeholder، وهي جميع الملفات الفارغة. يتم استخدام هذه الملفات للتأكد من أن بنية الدليل صحيحة. لا يمكن لـ GIT ارتكاب أدلة فارغة ، لذلك نستخدم هذه العناصر النائبة لإجبار GIT على تذكر الهيكل.
إذا كنت تستخدم Windows ، فيمكنك استخدام رمز Visual Studio لكتابة الرمز ، واستخدام المجلدات المشتركة لـ VMware لمشاركة الكود بين Windows و Linux.
هذه ممارسة جيدة ، لأنه يمكنك استخدام IDE القوي لكتابة الرمز ، واستخدام Linux لتشغيل الرمز. لا تبطئ ، لا البق ، لا تأخير ، لا مشكلة.
ولكن هناك بعض القيود: لا يمكنك استخدام روابط رمزية ، لكن لا تقلق ، لقد قمت بالفعل بحل هذه المشكلة عن طريق تحرير ملف Makefile.common وإضافة بعض البرامج النصية للقذائف.
يمكنك الآن التطوير على Windows ، والتشغيل على Linux دون الحاجة إلى تغيير
Makefileأو تشغيل أي نصوص Shell. ولكن ، إذا كنت تريد تمكين المجلدات المشتركة ، فقد تضطر إلى تكوينVMWare Settingsالخاصة بك لتمكين هذه الميزة. هناك احتمالات أنك قد تفشل في تمكين هذه الميزة ، ولكن لا تقلق ، فقد تجد حلاً من هذا الرابط.
بالمناسبة ، إذا وجدت بعض الأجزاء من الصعب للغاية تطويرها ، فلا تتردد في الاتصال بي ، فسأبذل قصارى جهدي لتقديم المساعدة ، أو يمكننا تبادل أجزاء المشروع المسؤولة.
تطوير واستمتع!