• Non ci sono risultati.

Programmation Système Verrous

N/A
N/A
Protected

Academic year: 2021

Condividi "Programmation Système Verrous"

Copied!
1
0
0

Testo completo

(1)

Programmation Système Verrous

Juliusz Chroboczek Khouloud Zine Elabidine

3 décembre 2012

Exercice 1 (Introduction aux verrous).

1. Écrivez un programme qui ouvre le fichier /tmp/compteur, lit un entier n qui y est contenu, puis le remplace par l’entier n + 1, et recommence cent mille fois

1

. Créez manuellement un fichier /tmp/compteur qui contient l’entier 0, et exécutez votre programme. Vérifiez que le fichier /tmp/compteur contient bien 100000.

2. Recommencez l’expérience en exécutant votre programme deux fois simultanément. Que constatez-vous ?

3. Modifiez votre programme pour qu’il corrige le problème à l’aide de l’appel système flock

2

. (Pensez au type de lock qu’il faudra utiliser, et quelle sera sa portée.)

Exercice 2 (Agenda). On se propose d’écrire un programme qui manipule un agenda. L’agenda sera stocké dans un fichier ~/agenda.dat qui aura la forme suivante :

1354483503 Écrire le TP 10

1354527000 Aller assurer le TP 10 1354534200 Aller déjeuner

Le fichier est constitué d’une suite triée d’événements, un par ligne. Chaque événement est représenté par sa date en secondes depuis l’Époque (comme la valeur retournée par time), suivi d’une description de l’événement.

1. Écrivez un programme affiche-agenda qui affiche le contenu de l’agenda sous une forme lisible par un être humain (vous pourrez vous servir des fonctions strftime et localtime) sans omettre de vérouiller le fichier à l’aide de la fonction flock. Deux instances de affiche-agenda peuvent-elles accéder au fichier en même temps ? Vérifiez votre hypothèse en ajoutant un appel à sleep au bon moment.

2. Modifiez votre programme affiche-agenda pour que lorsqu’il est invoqué avec l’option -1 il n’affiche que le prochain événement.

3. Écrivez un programme ajoute-evenement qui ajoute un événement passé en paramètre de ligne de commande. (Vous pourrez vous servir de la fonction strptime.) Une instance de ajoute-evenement peut-elle accéder au fichier en même temps qu’une instance de affiche-agenda ? Comme ci-dessus, vérifiez en ajoutant des appels à sleep aux endroits judicieux.

1. Si vous utilisez stdio plutôt que des appels systèmes, il faudra penser à utiliser la fonction fflush au bon moment.

2. L’auteur de ces lignes refuse d’utiliser les locks POSIX.

1

Riferimenti

Documenti correlati

Écrivez un programme qui crée deux processu, un père qui affiche à l’aide de l’appel système write la chaîne "Je suis le père\n", et un fils qui affiche la chaîne

Modifiez votre programme pour que, une fois la commande exécutée, il affiche comment elle s’est terminée — soit Terminaison normale avec résultat n, soit Tuée par le signal n,

Modifiez votre programme pour que chaque appel à premier se fasse dans un processus séparé ; vous utiliserez la valeur de retour du processus pour indiquer si l’entier était

Écrivez un programme occurrences qui prend en paramètre une expression régulière r et n noms de fichiers puis qui affiche le nombre total d’occurrences de r dans les n fichiers

Écrivez un programme occurrences qui prend en paramètre une expression régulière r et n noms de fichiers puis qui affiche le nombre total d’occurrences de r dans les n fichiers

Le programme principal et le fils partageront une variable initialisée à 0, qu’ils incrémenteront 1 chacun un million de fois ; vérifiez que la variable vaut deux millions à la

Reimplémentez votre solution en implémentant un sémaphore comptant à la main à l’aide d’une variable entière, un mutex et une variable de condition.. Proposez une

Ensembles finis, cardinal, crible, cardinal d’un produit, alphabet braille, tirage avec re- mise, exemples.. Arrangements, permutations, dénombrement, coeffs binomiaux, formule