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