Vous êtes sur la page 1sur 4

Gestion

des impressions dans un systme


Lobjectif de ce projet est la simulation de CUPS (Common Unix Printing System). Il sagit de
dlguer une machine la gestion des travaux dimpression soumis par des utilisateurs connects sur
des machines du rseau.
La machine serveur dimpression recueille les demandes des utilisateurs. Elle les traite, puis elle
transmet limprimante concerne les donnes imprimer.
Cette simulation met en jeu plusieurs niveaux dactivits simulant les entits concourant la mise en
uvre du systme dimpression et de son utilisation.
Il sagit de les synchroniser et de les faire communiquer.

1 Les machines-sites
Chaque machine du systme rparti sera simule par un processus Unix.
Au sein de ce processus, de cette machine, les activits supportes seront reprsentes, elles, par des
threads Posix. Ces activits implmenteront aussi bien les tches permettant de mettre en uvre le
systme dimpression que les tches utilisatrices du service dimpression.
La communication entre les machines utilisera un module Communication fourni, implmentant une
communication par socket Unix.

2 Les utilisateurs du service dimpression


Les tches utilisatrices du service dimpression doivent pouvoir au minimum :

Imprimer tout type de fichier (texte, pdf, image, etc.). On se donnera une fonction qui, partir
dun chemin daccs, fournit le type du contenu du fichier.

Soumettre des travaux dimpression, en prcisant un certain nombre de choix (la liste nest pas
exhaustive) :
Imprimante demande.
Nombre de copies.
Recto/verso ou non.

Connatre ltat davancement dun travail dimpression prcdemment soumis.

Annuler un travail dimpression qui na pas encore t trait ou en interrompre un qui est en cours
dimpression.

Connatre ltat de la file dattente dune imprimante donne.


Dautres services laisss votre apprciation peuvent tre proposs.

3 Le serveur dimpression
Pour simplifier, on supposera que le systme ne comporte quun serveur dimpression, responsable
dun certain nombre dimprimantes.
Le serveur dimpression sexcute sur une machine-site, qui lui est ddie. Il assure le lien entre les
tches utilisatrices qui sexcutent sur des machines-sites et les imprimantes gres.
Une imprimante pourra tre directement connecte au serveur dimpression ou accessible distance,
via une autre machine-site.
Le projet ne vise pas simuler le fonctionnement rel dun serveur dimpression CUPS, mais
implmenter un modle simplifi, dcrit en annexe 1.

Le serveur dimpression assure, entre autres, les tches suivantes :


-

Linitialisation du service dimpression partir dun fichier de configuration dcrivant lensemble


des imprimantes gres.

La prise en compte des requtes mises par les activits clientes. Ceci est assur par la tche CUPS
Scheduler qui authentifie chaque requte par validation de lidentit de la machine mettrice. Cette
requte correspond :
La soumission dun travail dimpression. Dans ce cas, un job est cr et mis en file dattente,
pour quil soit pris en charge ensuite par une tche CUPS Filters .
Connatre ltat davancement dune demande dimpression.
Connatre ltat dune imprimante donne.
Annuler une demande dimpression ou en stopper une en cours.

Une tche CUPS Filter prend en compte une requte dimpression en crant, partir du fichier
soumis, un fichier contenant une traduction que limprimante comprend. Le traitement que devra
raliser la tche CUPS filter est donc spcifique au contenu du fichier imprimer et au format
intermdiaire quil faut produire. Le fichier produit est ensuite transmis limprimante demande.
Plusieurs requtes, et en particulier plusieurs conversions de fichiers, doivent pouvoir tre ralises en
parallle. Il est vident que certaines demandes (tat, annulation, arrt, etc.) mritent dtre prises en
compte le plus rapidement possible pour assurer la meilleure qualit de service possible.
-

4 Les imprimantes
Les travaux dimpression affects une imprimante sont pris en charge par une tche ddie
spcifique cette imprimante.
Lorsque limprimante est directement connecte au serveur (liaison USB, srie, parallle, etc.), cette
tche crit directement le contenu du fichier imprimer sur le priphrique.
Lorsque limprimante est accessible distance, cette tche transfre le contenu du fichier la tche
localise sur la machine-site imprimante qui assurera alors laccs physique limprimante. La
communication entre les deux machines (serveur dimpression et imprimante distante) utilisera le
module Communication fourni.
Il est vident que, si plusieurs impressions peuvent se drouler en parallle, une imprimante ne peut
traiter ses impressions que lune aprs lautre.

5 Travail demand
La finalit de ce projet nest pas daligner des lignes de code C, mais plutt de bien concevoir un
systme parallle et rparti et dexpliciter la synchronisation et la communication mises en uvre pour
permettre aux activits qui le composent, dassurer correctement le service demand.
Une attention particulire sera donc porte la description des structures de donnes utilises, aux
rponses apportes aux contraintes de synchronisation et de communication mises en vidence et au
degr de paralllisme assur.
Ce projet met en uvre maintes reprises le modle producteurs/consommateurs. Lcriture dun
module implmentant une classe gnrique TamponPartag pourrait contribuer simplifier la
ralisation du projet et sa lisibilit.
Le projet pourra tre ralis par binme.

5.1 Etape 1
Rdiger un rapport succinct explicitant votre comprhension du cahier de charges et vos choix
conceptuels pour y rpondre. Un schma devra prsenter lensemble des activits ainsi que les
mcanismes de synchronisation et de communication qui leur permettent de cooprer.
La synchronisation/communication au niveau processus sappuiera sur le module fourni.
Pour ce qui est du niveau tches au sein dun processus, ce sont les concepts Posix (thread, condition,
mutex, semaphore et signaux) qui seront utiliss.

5.2 Etape 2
Donner la conception dtaille de chaque classe dobjets utilise pour mettre en uvre ce projet
(structure de donnes, fichier de spcification et source C dimplmentation).

5.3 Etape 3
Donner un makefile de votre projet, permettant sa gnration et son test. Une version dmo, ainsi
quun compte-rendu, retour dexprience, complteront votre restitution.

6 Module fourni
Le fichier zip fourni contient une hirarchie de fichiers quil faudra extraire telle quelle. Elle contient
Dans le rpertoire communication, les fichiers communication.h et communication.c qui
implmentent le module de communication fourni, mais non impos.
Dans le rpertoire serveur, le fichier serveur.c qui contient le code dun processus serveur qui
envoie un client le contenu du fichier demand.
Dans le rpertoire client, le fichier client.c qui contient le code dun processus client qui
demande rcuprer auprs dun serveur un fichier donn.

Vous aimerez peut-être aussi