Proyek ini dimungkinkan oleh Void Echo dan tiga Liang @ Shandong University, School of Software Engineering.
Proyek ini adalah OS sederhana, yang didasarkan pada buku "Nachos: bukan sistem operasi lain yang sepenuhnya heuristik" oleh Andrew S. Tanenbaum.
Semua kode berada di bawah Dedikasi Domain Publik CC0 1.0 Universal (CC0 1.0).
Sebelum Anda menjalankan kode, pastikan Anda telah menyelesaikan langkah -langkah> berikut:
- Menggunakan satu sistem Linux, dan instal kompiler GCC dan G ++
- memiliki akses penuh ke direktori root sistem
- Memasang kompiler silang GCC-MIPS.
Pertama, jalankan perintah git clone.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-ProjectKemudian Anda dapat membuat satu atau lebih komponen OS.
Di Nachos, ada banyak komponen, dan Anda dapat meningkatkan OS dengan meningkatkan satu atau lebih komponen.
Perhatikan bahwa Anda tidak boleh mengubah direktori.
Jika Anda melakukannya, OS juga dapat berfungsi, tetapi gaya meningkatkan ini tidak disarankan.
Untuk setiap laboratorium, ada file readme.md, yang berisi deskripsi lab. Harap baca file readme.md sebelum memulai.
Ketika Anda memutuskan untuk mengubah kode di ./code/machine, ./code/thread atau ./code/monitor, Anda harus menyalin file yang pertama untuk diubah menjadi direktori lab, dan kemudian ubah kode di sana.
Di bawah direktori setiap lab, ada file Makefile dan Makefile.local. Biasanya, Anda tidak perlu mengubah file makefile, tetapi Anda mungkin perlu mengubah file makefile.local. Untuk memastikan perubahan Anda dapat dikompilasi.
Makefile. Lokal dari setiap lab berbeda, dan mereka harus seperti ini:
# 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_LOCALPerhatikan bahwa nachos tidak dapat berjalan dengan benar pada windows (setidaknya untuk saat ini), dan jika Anda memodifikasi kode pada windows, cukup pastikan kode dapat dikompilasi di Linux.
Jika Anda mengembangkan di Linux, sebelum Anda melakukan kode, silakan jalankan make clean terlebih dahulu untuk membersihkan file objek dan file yang dapat dieksekusi. Bukan ide yang baik untuk melakukan binari ke GitHub.
Anda juga dapat memperhatikan bahwa ada beberapa file bernama
placeholder, yang semuanya merupakan file kosong. File -file ini digunakan untuk memastikan struktur direktori benar. Git tidak dapat melakukan direktori kosong, jadi kami menggunakan placeholder ini untuk memaksa Git untuk mengingat strukturnya.
Jika Anda menggunakan Windows, Anda dapat menggunakan kode Visual Studio untuk menulis kode, dan menggunakan folder bersama VMware untuk berbagi kode antara Windows dan Linux.
Ini adalah praktik yang baik, karena Anda dapat menggunakan IDE yang kuat untuk menulis kode, dan menggunakan Linux untuk menjalankan kode. Tidak ada perlambatan , tidak ada bug, tidak ada penundaan, tidak ada masalah.
Tetapi ada beberapa keterbatasan: Anda tidak dapat menggunakan tautan simbolik, tetapi jangan khawatir, saya sudah memecahkan masalah ini dengan mengedit file Makefile.common dan menambahkan beberapa skrip shell.
Anda sekarang dapat mengembangkan di Windows, dan menjalankan di Linux tanpa perlu mengubah
Makefileatau menjalankan skrip shell apa pun. Tetapi, jika Anda ingin mengaktifkan folder bersama, Anda mungkin harus mengkonfigurasiVMWare SettingsAnda sendiri untuk mengaktifkan fitur ini. Kemungkinannya adalah Anda mungkin gagal mengaktifkan fitur ini, tetapi jangan khawatir, Anda mungkin menemukan solusi dari tautan ini.
Ngomong -ngomong, jika Anda menemukan beberapa bagian terlalu sulit untuk dikembangkan, jangan ragu untuk menghubungi saya, saya akan mencoba yang terbaik untuk memberikan bantuan, atau kami dapat menukar bagian proyek kami yang bertanggung jawab.
Kembangkan dan nikmati!