Changeset 201


Ignore:
Timestamp:
11/01/08 09:42:56 (15 years ago)
Author:
nanardon
Message:
  • add X11 frame
Location:
trunk/unix
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/unix/Makefile

    r200 r201  
    2424        process.png \ 
    2525        fork.png \ 
    26         compil.png 
     26        compil.png \ 
     27        x.png \ 
     28        x-mplayer-capcv.png \ 
     29        x-mplayer-capcv-twm.png \ 
     30        x-resume.png \ 
    2731 
    2832unix_FIGURES= \ 
  • trunk/unix/unix.tex

    r199 r201  
    140140\textbf{Norme POSIX:} 
    141141standard de fonctionnement et commandes (IEEE). 
     142\end{frame} 
     143 
     144\begin{frame} 
     145\frametitle{GNU/Linux} 
     146\begin{block}{Contenu du système} 
     147\begin{itemize} 
     148\item Linux: le noyau lui même 
     149\item des applis eparpillées sur internet 
     150\end{itemize} 
     151\end{block} 
     152 
     153\begin{block}{Les distributions} 
     154Ensemble cohérent noyau/applications 
     155 
     156\begin{itemize} 
     157\item Redhat: Mandriva Suse Centos \ldots 
     158\item Debian: ubuntu 
     159\item gentoo 
     160\item slackware 
     161\item \ldots 
     162\end{itemize} 
     163\end{block} 
    142164\end{frame} 
    143165 
     
    546568\end{frame} 
    547569 
    548 \begin{frame} 
     570\begin{frame}[fragile] 
    549571\frametitle{les threads} 
    550572\begin{block}{Sépare un processus en deux} 
     
    565587\end{block} 
    566588 
    567 \begin{alertblock}{Linux: libpthread (glibc)} 
    568 Les threads sont POSIX. 
    569  
     589\begin{alertblock}{Linux: libpthread (glibc) POSIX} 
    570590Je ne garantie pas que tout les UNIX fournissent le support des threads 
    571591\end{alertblock} 
     592\begin{exampleblock}{} 
     593\small 
     594\begin{verbatim} 
     595[olivier@andromede unix]$ ps aux | grep transcode 
     596PID %CPU %MEM    VSZ   RSS  TIME  COMMAND 
     5973477  124  1.3 119972 41344 36:32 transcode 
     598\end{verbatim} 
     599\end{exampleblock} 
    572600\end{frame} 
    573601 
     
    647675\begin{frame} 
    648676\frametitle{la logique} 
    649 \includegraphics[height=50mm]{compil} 
    650 \end{frame} 
    651  
    652 \begin{frame} 
    653 \frametitle{le code executable} 
     677\begin{columns} 
     678\column{2in} 
     679\includegraphics[height=40mm]{compil} 
     680\column{2.5in} 
    654681\begin{block}{un quoi ?} 
    655682\begin{itemize} 
     
    664691\end{itemize} 
    665692\end{block} 
    666 \end{frame} 
    667  
    668 \subsection{Programme} 
    669  
    670 \begin{frame}[fragile] 
    671 \frametitle{programme} 
    672 \begin{exampleblock}{empty.c} 
    673 \listinginput[1]{1}{empty.c} 
    674 \begin{verbatim} 
    675 gcc -o empty empty.c 
    676 \end{verbatim} 
    677 \end{exampleblock} 
     693\end{columns} 
     694\end{frame} 
     695 
     696\subsection{Bibliothèques} 
     697 
     698\begin{frame} 
     699\frametitle{quand c'est propres} 
     700\begin{block}{Normallement un programme fournit} 
     701\begin{itemize} 
     702\item foo.h: l'entête pour la compilation 
     703\item libfoo.so.1: la librairie utilisée, versionnée 
     704\item libfoo.so: (lien) pour l'éditeur de lien 
     705\item libfoo.a: la version statique 
     706\end{itemize} 
     707\end{block} 
     708 
     709\begin{block}{le point sur les dynamiques} 
     710\begin{itemize} 
     711\item avantages: 
     712\begin{itemize} 
     713\item les maj sont répercutés sans recompilation des applis 
     714\item factorisation du code dans la RAM et sur le disque 
     715\end{itemize} 
     716\item inconvénients 
     717\begin{itemize} 
     718\item doit être disponible lors de l'éxecution 
     719\end{itemize} 
     720\end{itemize} 
     721\end{block} 
     722\end{frame} 
     723 
     724\begin{frame}[fragile] 
     725\frametitle{Trouver les dynamiques} 
     726\begin{block}{la recherche} 
     727\begin{itemize} 
     728\item codé dans l'executable (\emph{rpath}) 
     729\item codé en dur: \verb+/lib(64)+, \verb+/usr/lib(64)+ 
     730\item indiqués dans ld.so.conf 
     731\end{itemize} 
     732\end{block} 
     733 
     734\begin{exampleblock}{ldd} 
     735\begin{small} 
     736\begin{verbatim} 
     737[olivier@andromede unix]$ ldd /bin/rm 
     738        linux-gate.so.1 =>  (0xffffe000) 
     739        libc.so.6 => /lib/i686/libc.so.6 (0xb7ee3000) 
     740        /lib/ld-linux.so.2 (0xb8064000) 
     741\end{verbatim} 
     742\end{small} 
     743\end{exampleblock} 
     744 
     745\begin{alertblock}{linux-gate.so.1} 
     746Code injecté directement par le kernel, ignorez le ! 
     747\end{alertblock} 
     748\end{frame} 
     749 
     750\begin{frame}[fragile] 
     751\frametitle{l'exemple: la librairie} 
     752\begin{exampleblock}{libsmall.h} 
     753\small 
     754\listinginput[1]{1}{libsmall.h} 
     755\end{exampleblock} 
     756\begin{exampleblock}{libsmall.c} 
     757\small 
     758\listinginput[1]{1}{libsmall.c} 
     759\end{exampleblock} 
     760\vfill 
     761\begin{block}{la version statique} 
     762\begin{verbatim} 
     763gcc -c libsmall.o libsmall.c 
     764ar rcs libsmall.a libsmall.o 
     765\end{verbatim} 
     766\end{block} 
     767\begin{block}{la version dynamique} 
     768\begin{verbatim} 
     769gcc -c libsmall.o libsmall.c 
     770gcc -shared -o libsmall.so libsmall.o 
     771\end{verbatim} 
     772\end{block} 
     773\end{frame} 
     774 
     775\begin{frame}[fragile] 
     776\frametitle{l'exemple: la librairie} 
     777\begin{exampleblock}{small.c} 
     778\small 
     779\listinginput[1]{1}{small.c} 
     780\end{exampleblock} 
     781\vfill 
     782\begin{block}{la version statique} 
     783\begin{verbatim} 
     784gcc -c -o small.o small.c 
     785gcc -o small.static libsmall.a small.o 
     786\end{verbatim} 
     787\end{block} 
     788\begin{block}{la version dynamique} 
     789\begin{verbatim} 
     790gcc -c -o small.o libsmall.c 
     791gcc -o small.dyn -L. -lsmall small.o 
     792    -Wl,-rpath=$(pwd) # $(PWD) pour le chemin courant 
     793\end{verbatim} 
     794\end{block} 
     795\end{frame} 
     796 
     797\begin{frame} 
     798\frametitle{Et puis il y a \emph{dlopen()}} 
     799 
     800\begin{alertblock}{le mode standard dynamique} 
     801Un code lié à une bibliothèque ne fonctionnera jamais sans. 
     802\end{alertblock} 
     803 
     804\begin{block}{les deux clefs:} 
     805\begin{itemize} 
     806\item \emph{dlopen()} charge une bibliotèque 
     807\item \emph{dlsym()} va chercher les fonctions 
     808\end{itemize} 
     809\end{block} 
     810 
     811\begin{block}{exemple d'utilisation} 
     812\begin{itemize} 
     813\item pour étendre les fonctionnalités d'une appli (perl, python, apache) 
     814\item pour eviter de charger du code inutilement 
     815\end{itemize} 
     816\end{block} 
    678817\end{frame} 
    679818 
    680819\section{X11} 
    681820 
     821\begin{frame} 
     822\frametitle{Histoire} 
     823\begin{block}{} 
     824\begin{itemize} 
     825\item \textbf{1984 création par le MIT} 
     826\item X est le successeur de W (sur system V) 
     827\item 1985 ajout de la couleur (DEC VAXstation) 
     828\item 1986 X10R2, X10R3, X10R4 
     829\item 1987 X11, 1988 X11R2, 1991 X11R5 
     830\item \textbf{1992 création de XFree86 (utilisé par Linux)} 
     831\item 1999 X11R6.5 
     832\item 2004 Xorg se sépare de XFree86 (pb de license) 
     833\item \textbf{depuis tout les UNIX libres utilisent Xorg} 
     834\end{itemize} 
     835\end{block} 
     836\begin{alertblock}{X ça pue !} 
     837Oui, c'est le prix de la compatibilité\ldots 
     838\end{alertblock} 
     839\end{frame} 
     840 
     841\begin{frame} 
     842\frametitle{X: serveur d'affichage} 
     843\begin{columns} 
     844\column{2in} 
     845\begin{block}{} 
     846\begin{itemize} 
     847\item gestionnaire de matériel 
     848\begin{itemize} 
     849\item carte graphique 
     850\item ecran 
     851\item clavier 
     852\item souris (et autres rongeurs) 
     853\end{itemize} 
     854\item protocol d'affichage (reseau) 
     855\item \textbf{serveur d'affichage} 
     856\end{itemize} 
     857\end{block} 
     858\column{2.5in} 
     859\begin{exampleblock}{le serveur X} 
     860\centering 
     861\includegraphics[height=40mm]{x} 
     862\end{exampleblock} 
     863\end{columns} 
     864\end{frame} 
     865 
     866\begin{frame} 
     867\frametitle{Applications X11} 
     868\begin{columns} 
     869\column{2.5in} 
     870\begin{block}{} 
     871Une application X11 se connecte au serveur X, 
     872et demande un affichage. 
     873\end{block} 
     874\column{2in} 
     875\begin{exampleblock}{} 
     876\centering 
     877\includegraphics[height=30mm]{x-mplayer-capcv} 
     878\end{exampleblock} 
     879\end{columns} 
     880\pause 
     881\vfill 
     882\begin{columns} 
     883\column{2.5in} 
     884\begin{block}{le Window Manager} 
     885\begin{itemize} 
     886\item application X11 
     887\item il créer les fenetres 
     888\item fourni un menu 
     889\end{itemize} 
     890\end{block} 
     891\begin{alertblock}{} 
     892KDE, GNOME, XFCE: envirronements de bureau 
     893\end{alertblock} 
     894\column{2in} 
     895\begin{exampleblock}{} 
     896\centering 
     897\includegraphics[height=30mm]{x-mplayer-capcv-twm} 
     898\end{exampleblock} 
     899\end{columns} 
     900\end{frame} 
     901 
     902\begin{frame} 
     903\frametitle{X11: résumé} 
     904\begin{exampleblock}{} 
     905\centering 
     906\includegraphics[height=60mm]{x-resume} 
     907\end{exampleblock} 
     908\end{frame} 
     909 
    682910\end{document} 
Note: See TracChangeset for help on using the changeset viewer.