wiki:WikiStart

Version 300 (modified by Mattia Monga, 6 years ago) ( diff )

--

Laboratorio di Sistemi Operativi

Materiale 2017/2018

1. 28 febbraio 2018 (Aula 400)

2. 7 marzo 2018 (Aula 309)

3. 21 marzo 2018 (Aula 309)

4. 28 marzo 2018 (Aula 309)

5. 4 aprile 2018 (Aula 309)

6. 11 aprile 2018 (Aula 309)

7. 18 aprile 2018 (Aula 309)

8. 2 maggio 2018 (Aula 309)

9. 16 maggio 2018 (Aula 309)

10. 23 maggio 2018 (Aula 309)

11. 30 maggio 2018 (Aula 309)

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

Note: See TracWiki for help on using the wiki.