l3.libnazgul/doc/rapport/devel.tex

57 lines
3.1 KiB
TeX
Raw Normal View History

2004-02-25 15:45:14 +00:00
\chapter{Le d<>veloppement}
2004-02-25 21:22:51 +00:00
\section{Outils utilis<69>s pour le d<>veloppement}
2004-02-25 15:45:14 +00:00
\subsection{Travail collaboratif}
2004-02-25 21:22:51 +00:00
\par Nous avons travaill<6C> ensemble gr{\^a}ce <20> CVS (Concurrent Versions System). Notre projet est h<>berg<72> chez Sourceforge\footnote{\url{http://www.sourceforge.net}}.
2004-02-25 15:45:14 +00:00
Le CVS permet la modification du code du projet en m{\^e}me temps par plusieurs personnes. Les modifications et les mises <20> jour de chacun des membres du projet sont diffus<75>es instantan<61>ment, avec un risque minimis<69> de conflits lors des modifications du m{\^e}me code.
\subsection{Moyens techniques}
\par Chacun selon nos pr<70>f<EFBFBD>rences, nous avons utilis<69>s des machines sous GNU/Linux ou Microsoft Windows et cod<6F> avec Vim.
La personne sous Microsoft Windows avait une session graphique sur un serveur GNU/Linux, appartenant a un autre membre du projet,
2004-02-25 20:37:05 +00:00
gr{\^a}ce <20> l'utilisation de VNC\footnote{\url{http://www.realvnc.com}} (Virtual Network Computing).
2004-02-25 15:45:14 +00:00
Cela afin de permettre <20> l'utilisateur de Microsoft Windows de pouvoir
tester la biblioth<74>que dans les meilleures conditions, car sous
Microsoft Windows l'utilisateur n'est pas pr<70>venu des
{\em segmentation fault} et autres erreurs syst<73>me.
2004-02-25 16:31:55 +00:00
2004-02-25 18:21:37 +00:00
\section{Programmation}
2004-02-25 16:31:55 +00:00
\section{Difficult<EFBFBD>s rencontr<74>es}
2004-02-25 17:40:20 +00:00
\par Nous n'avons pas eu de grosses difficult<6C>s <20> proprement parler.
Nous avions juste quelques restrictions, comme le fait de ne pas
pouvoir utiliser de pointeurs absolus, car l'espace d'adressage entre
les diff<66>rents processus n'est pas forc<72>ment le m{\^e}me. Ils ont
seulement ont un segment de m<>moire partag<61>e en commun. Il a donc
fallu utiliser les diff<66>rentes {\em id} des espaces de messages {\em msgSpace}, ou
encore des {\em pools} pour pouvoir faire en sorte que les processus peuvent
bien acc<63>der aux {\em buffers} situ<74>s dans la m<>moire partag<61>e.
2004-02-25 18:21:37 +00:00
\par Le choix des identifiants ne fut pas simple non plus, car il
fallait en changer en fonction des diff<66>rentes impl<70>mentations. Par
exemple nous pouvions avoir des identifiants du type ``\verb+/tmp/identifiant+'',
qui ne marchaient que sur un type de machines. Sur les autres il
fallait en avoir un du type ``\verb+/identifiant+''. Cela nous a amener
<EFBFBD> faire une distinction de cas et g<>n<EFBFBD>rer un identifiant diff<66>rent
selon que l'on soit sur une machine de type {\em HP-UX}, {\em SunOS}
ou {\em Linux}.
\par Malheureusement le fait de travailler sur plusieurs types de
machines n'<27>tait pas seulement g{\^e}nant pour les identifiants,
mais <20>galement pour cr<63>er la biblioth<74>que. En effet, il faut ajouter
plus ou moins d'options <20> la compilation: soit il faut ajouter \verb+-lrt+, dans un cas ou \verb+-lrt -lpthread+ dans l'autre.
\par Ces distinctions se font dans les {\em Makefile}, \verb+/src/Makefile+ et \verb+/test/Makefile+.
\par Encore une autre difficult<6C> d{\^u}e <20> Posix, est la
projection de fichier ou {\em mapping} avec {\em mmap}. L'offset
peut {\^e}tre align<67> sur les pages m<>moires sur
certains syst<73>mes. Or ceci est emb{\^e}tant lorsque l'on veut
acc<EFBFBD>der <20> un fichier qui commence n'importe o<> dans le bloc m<>moire.
Pour rem<65>dier <20> cela, nous {\em mappons} jusqu'<27> ``juste derri<72>re le
buffer''. Nous autorisons le buffer en lecture/<2F>criture et nous d<>pla<6C>ons
l'adresse obtenue au d<>but du buffer.