이 프로젝트는 Void Echo와 Software Engineering School, Shandong University의 Three Liang @ Shandong University에 의해 가능합니다.
이 프로젝트는 Andrew S. Tanenbaum의 "Nachos : 또 다른 휴리스틱 운영 체제가 아닙니다"라는 책을 기반으로하는 간단한 OS입니다.
모든 코드는 CC0 1.0 범용 (CC0 1.0) 공개 도메인 헌신에 따라 있습니다.
코드를 실행하기 전에 다음 단계를 수행했는지 확인하십시오.
- 하나의 Linux 시스템을 사용하고 GCC 및 G ++ 컴파일러를 설치합니다.
- 시스템의 루트 디렉토리에 대한 전체 액세스 권한
- GCC-MIPS 크로스 컴파일러를 설치했습니다.
먼저, git 클론 명령을 실행하십시오.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-Project그런 다음 OS의 하나 이상의 구성 요소를 만들 수 있습니다.
Nachos에는 많은 구성 요소가 있으며 하나 이상의 구성 요소를 향상시켜 OS를 향상시킬 수 있습니다.
./code/machine, ./code/thread, ./code/monitor 디렉토리를 OS의 핵심이기 때문에 직접 변경해서는 안됩니다.
그렇다면 OS도 작동 할 수 있지만이 향상 스타일은 권장되지 않습니다.
각 랩마다 랩의 설명이 포함 된 readme.md 파일이 있습니다. 시작하기 전에 readme.md 파일을 읽으십시오.
./code/machine, ./code/thread 또는 ./code/monitor에서 코드를 변경하기로 결정하면 먼저 파일을 Lab 디렉토리로 변경 한 다음 코드를 변경해야합니다.
각 실험실의 디렉토리에는 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_LOCALNachos는 Windows에서 올바르게 실행할 수 없으며 (현재는 현재) Windows에서 코드를 수정하면 Linux에서 코드를 컴파일 할 수 있는지 확인하십시오.
Linux에서 개발되면 코드를 커밋하기 전에 먼저 make clean 실행하여 객체 파일과 실행 파일을 정리하십시오. 바이너리를 Github에 저지르는 것은 좋은 생각이 아닙니다.
또한 공적 파일 인
placeholder라는 일부 파일이 있음을 알 수 있습니다. 이 파일은 디렉토리 구조가 올바른지 확인하는 데 사용됩니다. GIT는 빈 디렉토리를 저지를 수 없으므로이 자리 표시자를 사용하여 Git이 구조를 기억하도록 강요합니다.
Windows를 사용하는 경우 Visual Studio Code를 사용하여 코드를 작성하고 VMware 공유 폴더를 사용하여 Windows와 Linux간에 코드를 공유 할 수 있습니다.
강력한 IDE를 사용하여 코드를 작성하고 Linux를 사용하여 코드를 실행할 수 있기 때문에 이것은 좋은 관행입니다. 속도가 느리고 버그, 지연, 문제 없음.
그러나 몇 가지 제한 사항이 있습니다. 상징적 링크를 사용할 수는 없지만 걱정하지 마십시오. Makefile.common 파일을 편집하고 일부 쉘 스크립트를 추가하여 이미이 문제를 해결했습니다.
이제 Windows에서 개발하고
Makefile변경하거나 쉘 스크립트를 실행할 필요없이 Linux에서 실행할 수 있습니다. 그러나 공유 폴더를 활성화하려면이 기능을 활성화하려면 고유 한VMWare Settings구성해야 할 수도 있습니다 . 이 기능을 활성화하지 못할 수도 있지만 걱정하지 마십시오.이 링크에서 해결책을 찾을 수 있습니다.
그건 그렇고, 당신이 개발하기가 너무 어려워지면, 자유롭게 연락을 주시면 도움을주기 위해 최선을 다하거나 책임있는 프로젝트 부품을 교환 할 수 있습니다.
개발하고 즐기십시오!