• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 29 maggio 2019

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova Pratica di Laboratorio di Sistemi Operativi 29 maggio 2019"

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 29 maggio 2019

Esercizio 0 (“Se copiate, vi cacciamo”)

Rendete la vostra directory home inaccessibile ad altri utenti (sia in lettura che in esecuzione). Si puo’

tenere una sola directory in /public che abbia come nome il vostro username e.g.

“/public/giovanni.rossi” e che abbia permessi 700.

Non usare system o popen o simili! Non fare exec di “sh -c”.

Esercizio 1: Linguaggio C (obbligatorio) 20 punti

Usando pthread_create occorre creare due thread che chiameremo produttore e consumatore.

Il thread produttore ripetutamente genera un numero causuale, lo stampa lo mette in una variabile condivisa con il consumatore e attende (ritardo casuale). Il thread consumatore legge dalla variabile condivisa i valori e li stampa (anche il consumatore attende per un periodo casuale prima di tentare di leggere il valore successivo)

Ogni valore prodotto deve venir consumato una e una sola volta, per la sincronizzazione si richiede di usare eventfd in modalità EFD_SEMAPHORE.

Esercizio 2: Linguaggio C: 10 punti

Scrivere una shell minimale usando la libreria s2argv/execs (da scaricare da github).

La shell deve eseguire comandi con o senza parametri e terminare con logout o fine del file di input (^D).

Esercizio 3: Python o bash: (10 punti):

Rielaborando l'output del comando:

echo "#include<sys/syscall.h>" | gcc -dD -E -

scrivere un programma python o uno script bash che generi automaticamente un programma C che consenta di associare ogni syscall al suo numero e viceversa.

es: "sysnumber fork" deve restituire 57 mentre "sysnumber 72" deve avere come risposta fnctl (l'esempio si riferisce a sistemi di architettura x86_64)

Esercizio 4: (“Consegnate! E’ ora!”):

Consegnare lo script e il sorgente dei programma C, in attachment separati, entro il tempo a disposizione, via e-mail a: renzo chiocciola cs.unibo.it. Il subject del mail deve essere uguale a PROVAPRATICA, i nomi dei file in attachment devono contenere il vostro cognome (per evitare confusioni in fase di correzione).

INOLTRE:

Se volete che il vostro lavoro venga giudicato, lasciate aperta la vostra sessione (incluso il vostro editor) e lasciate il laboratorio. Verrete richiamati uno alla volta per una breve discussione sul vostro elaborato.

Riferimenti

Documenti correlati

Ogni altro tipo di file che non sia file ordinario o directory (e.g. socket, named pipe, file speciali, link simbolici) devono essere ignorati.. Esercizio 2: Linguaggio C:

Scrivere un programma python (o uno script bash) che dato come parametro il pathname di una directory ponga in output il numero dei file e delle directory contenute nel

Creare I file printgroupdir.c, printgroupdir.h e un file testpgd.c contenente un programma principale che prenda come argv[1] e argv[2] i due parametri della funzione.. Produrre

Scrivere un programma che preso come parametro a linea comando il path di una directory elenchi solamente I file che hanno un nome che ha come suffisso un numero (es.. I

All'attivazione scrive nel file il proprio pid e aspetta un segnale sigusr1.Quando riceve il segnale legge Anche in questo esercizio occorre usare solo la signalfd e non la signal o

Quindi il programma “dovrebbe” stampare una riga di log per ogni file o directory creata o cancellata in tutto il sottoalbero che ha nella directory-base la radice.. Nota:

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me colonne di tutti i file regolari,

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me righe di tutti i file regolari,