home 
news 
thread sync 
sync problems 
project intro 
assignment 1 
assignment 2 
assignment 3 
resources 
examples 
rules 
submit howto 
   
 

Introduction to nachos project / Introducere pentru proiectul nachos

Links / Legaturi utile

Tom Anderson's Nachos Home Page
Nachos Online Resources
Local Resources

Distributia originala se numeste "nachos-3.4.tar.Z". Ea nu poate fi compilata in Linux direct. O versiune modificata este "nachos-utt-vX.Y.tar.bz2", care ar trebui sa poata fi compilata si folosita sub Linux (>glibc-2.2.x, kernel 2.4.x).
Update: atit pentru v0.3 cit si pentru v0.4, utilizati gcc/g++ 4.x. Folositi versiunea nachos-utt-v0.3.tar.bz2 pentru versiuni de linux pe 32 de biti iar nachos-utt-v0.4.tar.bz2 pentru versiuni de linux pe 64 de biti.
Pentru acest din urma caz (sisteme linux pe 64 biti), veti avea nevoie de anumite pachete pentru a putea compila nachos pe 32 de biti (nu este portat pentru Intel/AMD pe 64 biti). Pentru Ubuntu (alte distributii ar trebui sa aiba pachete similare):
  • lib32stdc++6
  • binutils-multiarch
  • libc6-i386
  • libc6-dev-i386
  • gcc-4.2-multilib sau gcc-4.1-multilib (depinde de veriunea gcc pe care o aveti instalata)
  • ...(voi completa daca e cazul)

Instalarea si compilarea sistemului Nachos

Sistemul Nachos (cu modificarile corespunzatoare pentru a putea fi compilat in Linux) se poate descarca din sectiunea Resources; fisierul se numeste nachos-utt-vX.Y.tar.bz2, unde X.Y este versiunea.

Compilatorul configurat pentru a genera cod pentru procesorul MIPS (se numeste un "cross-compiler", deoarece genereaza cod pentru alta arhitectura decat cea pe care ruleaza) se gaseste in subdirectorul mips-cross-compiler.
Descarcati fie mips-all.tar.bz2 fie arhiva sparta in 3 fisiere (-bin, -doc, -lib) in scopul de a putea fi pusa pe dischete -- probabil, nu mai e cazul.
Pe statiile din laboratorul B528a acest cross-compiler a fost instalat deja.

Pentru a obtine un sistem functional, urmati urmatorii pasi:

  1. Descarcati distributia Nachos si compilatorul pentru MIPS. Vom presupune ca ele se afla in directorul vostru (home).
  2. Desfaceti arhiva Nachos:

    tar -xjf nachos-utt-v0.3.tar.bz2

    Alternativ, obtineti acelasi lucru prin:

    bzip2 -d nachos-utt-v0.3.tar.bz2
    tar -xf nachos-utt-v0.3.tar

  3. Ca superuser (pentru ca trebuie sa scrieti in directorul /usr/local), desfaceti arhiva compilatorului MIPS:

    su
    Password:********
    !!! asigurati-va in acest moment ca directorul curent este tot cel in care se gasesc arhivele !!!
    tar -xj -C / -f mips-all.tar.bz2
    SAU urmatoarele 3:
    tar -xj -C / -f mips-bin.tar.bz2
    tar -xj -C / -f mips-doc.tar.bz2
    tar -xj -C / -f mips-lib.tar.bz2

  4. Reveniti din modul superutilizator, si compilati Nachos:

    exit
    cd nachos-3.4/code
    make

  5. In pasul anterior, daca aveti instalata distributia RedHat 9, si posibil si in alte distributii noi, veti avea o eroare de compilare legata de variabila globala errno. Pentru scapa de aceasta eroare, modificati fisierul machine/sysdep.cc din:

    void
    ReadFromSocket(int sockID, char *buffer, int packetSize)
    {
    int retVal;
    extern int errno;

    in

    void
    ReadFromSocket(int sockID, char *buffer, int packetSize)
    {
    int retVal;
    //extern int errno;

    si adaugati la inceput fisierului o linie:

    #include <errno.h>

    Apoi, dati din nou comanda make.
  6. In acest moment, ar trebui sa aveti un sistem Nachos compilat fara erori. Pentru o verificare minimala executati:

    cd threads
    ./nachos

    Aceasta comanda ar trebui sa ruleze doua fire de executie, care vor tipari un numar de linii la consola, apoi sistemul Nachos va tipari cateva informatii despre executie. Apoi:

    cd ../userprog
    ./nachos -x ../test/halt

    Aceasta comada ar trebui sa execute programul de test "halt", care nu face decat sa ceara sistemului (Nachos) sa se opreasca. Din nou, Nachos va afisa cateva informatii legate de executia sa.
Daca, dintr-un motiv sau altul, compilatorul pentru MIPS nu functioneaza in Linux-ul vostru, va trebui sa il compilati voi. Pentru aceasta, obtineti pachetele binutils-2.14.tar.gz si gcc-2.95.3.tar.gz. URL-urile precedente se gasesc pe un mirror apropiat. Puteti de asemenea sa obineti acele pachete de la www.gnu.org (sau de la un alt mirror). Apoi, faceti urmatorii pasi:
  1. (se va completa daca va fi necesar)