Este projeto é possível pela Void Echo e três Liang @ Shandong University, Escola de Engenharia de Software.
O projeto é um sistema operacional simples, baseado no livro "Nachos: não é outro sistema operacional completamente heurístico", de Andrew S. Tanenbaum.
Todo o código está sob a dedicação do domínio público CC0 1.0 Universal (CC0 1.0).
Antes de executar o código, verifique se você realizou as seguintes etapas:
- Usando um sistema Linux e instale o compilador GCC e G ++
- ter acesso total ao diretório raiz do sistema
- instalou o compilador cruzado do GCC-MIPS.
Primeiro, execute o comando git clone.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-ProjectEntão você pode fazer um ou mais componentes do sistema operacional.
Nos nachos, existem muitos componentes e você pode aprimorar o sistema operacional aprimorando um ou mais componentes.
Observe que você não deve alterar o ./code/machine, ./code/thread, ./code/monitor diretórios diretamente, porque eles são o núcleo do sistema operacional.
Se o fizer, o sistema operacional também pode funcionar, mas esse estilo aprimorado não é recomendado.
Para cada laboratório, existe um arquivo readme.md, que contém a descrição do laboratório. Leia o arquivo readme.md antes de começar.
Quando você decide alterar o código em ./code/machine, ./code/thread ou ./code/monitor, você deve copiar primeiro o arquivo a ser alterado para o diretório do laboratório e alterar o código lá.
Sob o diretório de cada laboratório, existem arquivos makefile e makefile.local. Geralmente, você não precisa alterar o arquivo makefile, mas pode ser necessário alterar o arquivo makefile.local. Para garantir que suas alterações possam ser compiladas.
O makefile.local de cada laboratório é diferente, e eles devem ser assim:
# 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_LOCALObserve que os nachos não podem ser executados corretamente no Windows (pelo menos por enquanto) e, se você modificar o código no Windows, verifique se o código pode ser compilado no Linux.
Se você se desenvolver no Linux, antes de confirmar seu código, funcione make clean primeiro para limpar os arquivos de objeto e os arquivos executáveis. Não é uma boa ideia cometer binários no Github.
Você também pode notar que existem alguns arquivos denominados
placeholder, que são todos arquivos vazios. Esses arquivos são usados para garantir que a estrutura do diretório esteja correta. O GIT não pode cometer diretórios vazios, por isso usamos esses espaços reservados para forçar o Git a lembrar a estrutura.
Se você estiver usando o Windows, poderá usar o código do Visual Studio para gravar o código e usar pastas compartilhadas VMware para compartilhar o código entre o Windows e o Linux.
Esta é uma boa prática, porque você pode usar o IDE poderoso para escrever o código e usar o Linux para executar o código. Sem desacelerar , sem insetos, sem demora, sem problemas.
Mas existem algumas limitações: você não pode usar links simbólicos, mas não se preocupe, eu já havia resolvido esse problema editando o arquivo Makefile.common e adicionando alguns scripts de shell.
Agora você pode se desenvolver no Windows e executar no Linux sem a necessidade de alterar o
Makefileou executar scripts de shell. Mas, se você deseja ativar pastas compartilhadas, talvez seja necessário definir suas própriasVMWare Settingspara ativar esse recurso. As chances são de que você possa deixar de ativar esse recurso, mas não se preocupe, você pode encontrar uma solução a partir deste link.
A propósito, se você achar algumas partes muito difíceis de desenvolver, não hesite em entrar em contato comigo, tentarei o meu melhor para fornecer ajuda ou podemos trocar nossas peças de projeto responsáveis.
Desenvolver e aproveitar!