wiki:WikiStart

Version 352 (modified by monga, 9 days ago) (diff)

--

Laboratorio di Sistemi Operativi

Edizione per gli studenti del corso di laurea in "Sicurezza dei sistemi e delle reti informatiche" (F68)

Materiale 2019/2020

1. 7 ottobre 2019 (Aula 303)

2. 14 ottobre 2019 (Aula Delta)

qemu-system-i386 -cdrom /path/dove/hai/messo/solab.iso
# meglio con 768M di memoria
qemu-system-i386 -m 768 -cdrom /path/dove/hai/messo/solab.iso
# è utile usare attivare la rete e connettersi con ssh -p 8022 user@localhost per evitare problemi con la tastiera, soprattutto in ambiente Windows & Mac
qemu-system-i386 -m 768 -net nic,model=virtio -net user,hostfwd=tcp::8022-:22 -cdrom /path/dove/hai/messo/solab.iso
# In ambiente Linux l'emulatore kernel KVM velocizza parecchio l'esecuzione
qemu-system-i386 -m 768 -enable-kvm -net nic,model=virtio -net user,hostfwd=tcp::8022-:22 -cdrom /path/dove/hai/messo/solab.iso

3. 21 ottobre 2019 (Aula Delta)

4. 28 ottobre 2019 (Aula Delta)

5. 4 novembre 2019 (Aula Delta)

Esame

La procedura per finalizzare l'intero esame di Sistemi Operativi I e II è riassunta di seguito:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>

int solab(void) {
    return rand() % 31;
}

int teoria(void) {
    return rand() % 31;
}

int main() {
    int fds[2], rt, rl;
    printf("Iscrizione SIFA a (entrambi) Sistemi Operativi I e II\n");
    pipe(fds);
    srand(time(NULL));
    if (fork() == 0) {
        int r;
        do {
            sleep(rand() % 2);
            r = solab();
            printf("Voto laboratorio: %d\n", r);
        } while (r < 18);
        close(fds[0]);
        write(fds[1], &r, sizeof(r));
        return 0;
    } 
    do {
        sleep(rand() % 3);
        rt = teoria();
        printf("Voto teoria: %d\n", rt);
        srand(time(NULL));
    } while (rt < 18);

    close(fds[1]);
    read(fds[0], &rl, sizeof(rl));
    printf("Registrazione (occorre essere iscritti SIFA) di Sistemi Operativi I e II: %u \n", 
           (unsigned int)((3.*(float)rl + 9.*(float)rt)/12.));
    return 0;
}

Materiale aa.aa. precedenti