Relanceur Démon

Transcription

Relanceur Démon
EXAMEN Systèmes et réseaux
Mai 2010
Durée : 2 h 30 mn
Documents papiers autorisés
Que fait thread.c ?
Ci-joint le listing en une page de thread.c.
Question 1 : imaginer ce qu’imprime ce programme compilé sans -DBUG.
Question 2 : imaginer ce qu’imprime ce programme compilé avec -DBUG.
Question 3 : en termes de robustesse, si on veut programmer un démon réseau qui répond à
des requêtes réseaux de clients multiples (style serveur Web), faut-il privilégier des threads ou des
process multiples ?
Démon fragile
Soit un programme démon fragile, ou à durée de limitée naturellement. Afin de le relancer
quand il disparaît, on va passer par un programme relanceur.
Relanceur
Démon
Donner le squelette (Perl, C, ou autre) du programme relanceur. squelette veut dire les
grandes lignes, notamment en étant exhaustif sur les appels-système utiles.
Comment faire si le relanceur doit surveiller non pas un mais plusieurs programmes ?
NB : dans le système, c’est le cas des programmes tels que /sbin/getty lancés sur les consoles
virtuelles (Alt-F1 à Alt-F6).
modtime
Écrire, avec la syntaxe exacte (C, Perl, autre), le programme modtime.c qui permet d’obtenir :
clipper ~ $ modtime texte.tex
1274270703
(date de dernière modification du fichier texte.tex, exprimée en secondes depuis le 1 janvier 1970)
Ecrire un programme (sh, csh, perl, autre) qui proposerait de détruire les fichiers *.aux, *.log,
*.dvi quand ils sont postérieurs au fichier *.tex correspondant, programme utilisant le programme modtime ci-dessus. Ici une syntaxe approximative est permise.
1
talk
Ci-joint le source complet (mais vieux. . .) du programme talk. talk est un genre de téléphone/chat : une personne lance un appel, l’autre reçoit une notification d’appel, il répond et
ensuite les 2 personnes dialoguent dans 2 demi-écrans texte. Ici l’écran de toto@chaland :
----------------------------= YTalk version 3.3.0 =----------------------------Je suis ici toto@chaland...
Ici toto@chaland tape.
-----------------------------= toto@drakkar =----------------------------------Je suis la bas toto@drakkar...
Ici je vois que toto@drakkar a tapé.
--------------------------------------------------------------------------------
Ce programme fonctionne en 2 étapes :
– l’appel, équivalent de la sonnerie du téléphone. Ceci correspond au fichier ctl_transact.c
et au schéma :
HOST1
HOST2
user1$ talk user2@host2
user2$ talk user1@host1
(talkd)
(talkd)
Quel est le protocole utilisé ? Pouvez-vous justifier ce choix ?
– le dialogue une fois les interlocuteurs connectés, correspondant au schéma :
HOST1
HOST2
user1$ talk user2@host2
user2$ talk user1@host1
Quel protocole utiliser ? Pourquoi ?
Dans les fichiers ctl.c, ctl_transact.c, get_addrs.c, invite.c, rechercher les appelssystèmes, expliciter leurs fonctions et leurs principaux arguments. 2 à 5 lignes par appel
peuvent suffire.
2
EXAMEN Systèmes et réseaux
Mai 2010
Durée : 2 h 30 mn
Documents papiers autorisés
What does thread.c ?
Enclosed the listing in one page of thread.c.
Question 1 : what is the output of the program compiled without -DBUG.
Question 2 : what is the output of the program compiled with -DBUG.
Question 3 : in terms of reliability, when we want to program a network daemon which process
multiple requests of multiple clients (such as a Web server), do we have to favor multiple threads
or multiple process ?
Unreliable deamon
Suppose we have an unreliable daemon called démon, or naturally limited in time life.
To restart the daemon when it disappears, we use another program relanceur (relancer =
respawn in english).
Relanceur
Démon
Write the skeleton (Perl, C, or other language) of the program relanceur. skeleton means
outlines, but with all necessary system calls.
How do we do if the respawning program has to monitor not just one but several programs ?
NB : within an OS, this is the case of /sbin/getty, which display prompts on virtual screens
(Alt-F1 à Alt-F6).
modtime
Write, the most accurately, a program modtime.c which displays :
clipper ~ $ modtime texte.tex
1274270703
(modification time of file texte.tex, in seconds starting on January 1st, 1970)
Write a program (sh, csh, perl, autre) which propose to deletes files *.aux, *.log, *.dvi when
they are posterior from corresponding files *.tex *.tex, this program using the program modtime
previously written. Here, approximate syntax is allowed.
3
talk
Here is a listing of an old version of program talk. talk is a sort of chat : one person calls
another one, this second person receives a invite to answer, he/she answers, and then the screen
is divided in 2 parts. For instance here the screen of toto@chaland :
----------------------------= YTalk version 3.3.0 =----------------------------I am toto@chaland...
Here toto@chaland types.
-----------------------------= toto@drakkar =----------------------------------I am toto@drakkar...
Here I read what toto@drakkar types.
--------------------------------------------------------------------------------
This program has 2 steps :
– the call. This is the file ctl_transact.c and this diagram :
HOST1
HOST2
user1$ talk user2@host2
user2$ talk user1@host1
(talkd)
(talkd)
Which protocol is used ? Why ?
– when the 2 persons are connected, the dialog works with this diagram :
HOST1
HOST2
user1$ talk user2@host2
user2$ talk user1@host1
Which protocol do we use ? Why ?
In files, ctl.c, ctl_transact.c, get_addrs.c, invite.c, look for system calls, describe
their function and their main arguments. 2–5 lines per call is enough.
4