Changeset 208


Ignore:
Timestamp:
11/05/08 19:58:44 (15 years ago)
Author:
nanardon
Message:
  • finish
Location:
trunk/unix
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/unix/Makefile

    r206 r208  
    1919        sparse.c \ 
    2020        temp.sh \ 
     21        libsmall.c \ 
     22        libsmall.h \ 
     23        small.c \ 
    2124 
    2225unix_IMAGESJPG= \ 
     
    3134        x-mplayer-capcv-twm.png \ 
    3235        x-resume.png \ 
     36        150px-Tux.png \ 
    3337 
    3438unix_FIGURES= \ 
  • trunk/unix/libsmall.c

    r198 r208  
    11#include "libsmall.h" 
    2  
    32int func(void) { 
    43    return(0); 
  • trunk/unix/small.c

    r198 r208  
    11#include "libsmall.h" 
    2  
    32int main(void) { 
    43    return(func()); 
  • trunk/unix/unix.tex

    r207 r208  
    285285\begin{itemize} 
    286286\item un numéro (6160386) 
    287 \item un type 
    288287\item des métadata 
    289288\begin{itemize} 
     
    404403\end{block} 
    405404\pause 
     405\vfill 
    406406\begin{block}{utilisation ?} 
    407407Chaque fois que des données seront allouées à emplacement dans le fichier: 
     
    446446Je peux le lire comme un fichier: 
    447447\begin{verbatim} 
    448 [nanardon@virgo ~]$ dd if=/dev/sr0 bs=1024 count=20 | wc 
     448$ dd if=/dev/sr0 bs=1024 count=20 | wc 
    44944920+0 enregistrements lus 
    45045020+0 enregistrements écrits 
     
    459459\begin{exampleblock}{Première console:} 
    460460\begin{verbatim} 
    461 [olivier@andromede unix]$ mkfifo /tmp/fifo 
    462 [olivier@andromede unix]$ cat /etc/passwd > /tmp/fifo 
     461$ mkfifo /tmp/fifo 
     462$ cat /etc/passwd > /tmp/fifo 
    463463\end{verbatim} 
    464464\end{exampleblock} 
     
    467467\begin{exampleblock}{Deuxième console:} 
    468468\begin{verbatim} 
    469 [olivier@andromede ~]$ grep root < /tmp/fifo 
     469$ grep root < /tmp/fifo 
    470470root:x:0:0:root:/root:/bin/bash 
    471471\end{verbatim} 
     
    530530\end{block} 
    531531\pause 
    532  
     532\vfill 
    533533\begin{alertblock}{le FHS} 
    534534Le Filesystem Hierarchy Standard normalise l'empacement des fichiers 
     
    582582\item cache (disque) 
    583583\end{itemize} 
     584\pause 
    584585\item swap (sur disque, très lente) 
    585586\end{itemize} 
     
    632633\begin{frame}[fragile] 
    633634\frametitle{Mémoire à crédit} 
     635 
     636\begin{exampleblock}{malloc.c} 
     637\small 
     638\listinginput{1}{malloc.c} 
     639\end{exampleblock} 
    634640\begin{columns} 
    635641\column{2.5in} 
    636 \begin{block}{malloc est une promesse} 
    637 \begin{itemize} 
    638 \item malloc promet la ram 
    639 \item la ram n'est allouée qu'à l'écriture 
    640 \end{itemize} 
    641 \end{block} 
    642 \column{2.5in} 
     642\pause 
    643643\begin{block}{sortie formatée} 
    644644\begin{tabular}{|c|c|c|} 
     
    653653\end{tabular} 
    654654\end{block} 
     655\column{2in} 
     656\pause 
     657\begin{block}{malloc est une promesse} 
     658\begin{itemize} 
     659\item malloc promet la ram 
     660\item la ram n'est allouée qu'à l'écriture 
     661\end{itemize} 
     662\end{block} 
    655663\end{columns} 
    656  
    657 \begin{exampleblock}{malloc.c} 
    658 \small 
    659 \listinginput{1}{malloc.c} 
    660 \end{exampleblock} 
    661664 
    662665\end{frame} 
     
    672675\includegraphics[height=15mm]{fork} 
    673676\end{block} 
    674  
     677\pause 
    675678\begin{columns} 
    676 \column{2in} 
     679\column{2.5in} 
    677680\begin{block}{motivation} 
    678681\begin{itemize} 
     
    683686\end{itemize} 
    684687\end{block} 
     688\pause 
    685689\column{2in} 
    686690\begin{block}{pros \& cons} 
     
    703707\end{exampleblock} 
    704708\column{2.5in} 
     709\pause 
     710\begin{block}{Ram utilisée} 
    705711\begin{tabular}{|l|c|} 
    706712\hline 
     
    715721\hline 
    716722\end{tabular} 
     723\end{block} 
    717724\end{columns} 
    718725\end{frame} 
     
    730737\item le fonctionnement ressemble à fork mais 
    731738\begin{itemize} 
    732 \item programmation différente 
    733 \item gestion par le système différente 
     739\item programmation et gestion différentes 
    734740\item complexe mais éfficace 
    735741\end{itemize} 
    736742\end{itemize} 
    737743\end{block} 
    738  
     744\pause 
    739745\begin{alertblock}{Linux: libpthread (glibc) POSIX} 
    740746Je ne garantie pas que tout les UNIX fournissent le support des threads 
    741747\end{alertblock} 
     748\pause 
    742749\begin{exampleblock}{} 
    743750\small 
     
    756763\begin{block}{points à retenir} 
    757764\begin{itemize} 
    758 \item flux de donnée continu 
     765\item flux de donnée continu unique 
    759766\item sens unique 
    760767\item bloquants 
    761 \item flux unique 
    762 \end{itemize} 
    763 \end{block} 
    764  
     768\end{itemize} 
     769\end{block} 
     770\pause 
     771\vfill 
    765772\begin{block}{Utilisation} 
    766773\begin{itemize} 
     
    772779 
    773780\begin{frame} 
    774 \frametitle{IPC, la boite aux lettres système} 
     781\frametitle{IPC/SHM, la boite aux lettres système} 
    775782\begin{block}{fonctions} 
    776783\begin{itemize} 
     
    779786\end{itemize} 
    780787\end{block} 
    781  
     788\pause 
     789\vfill 
    782790\begin{block}{+ et -} 
    783791\begin{itemize} 
     
    788796\end{itemize} 
    789797\end{block} 
     798\pause 
     799\vfill 
     800\begin{block}{La doc (pour le C)} 
     801\textbf{man} 
     802shmat, shmdt, shmop, shm\_overview, 
     803shmctl, shmget, shm\_open, shm\_unlink 
     804\end{block} 
    790805\end{frame} 
    791806 
     
    800815\end{itemize} 
    801816\end{block} 
    802  
     817\pause 
     818\vfill 
    803819\begin{block}{modes} 
    804820\begin{itemize} 
     
    810826\item problème de latence 
    811827\end{itemize} 
    812 \item écoute sur un socket 
     828\pause 
     829\item écoute sur un socket (fichier de type \ldots) 
    813830\begin{itemize} 
    814831\item communication locale 
     
    832849\begin{itemize} 
    833850\item données formatées (format ELF ces jours-ci) 
     851\pause 
    834852\item executable (ou presque) par le processeur 
     853\pause 
    835854\item contient des objets: 
    836855\begin{itemize} 
     
    847866 
    848867\begin{frame} 
    849 \frametitle{quand c'est propres} 
     868\frametitle{Le standard} 
    850869\begin{block}{Normallement un programme fournit} 
    851870\begin{itemize} 
    852871\item foo.h: l'entête pour la compilation 
     872\pause 
    853873\item libfoo.so.1: la librairie utilisée, versionnée 
     874\pause 
    854875\item libfoo.so: (lien) pour l'éditeur de lien 
     876\pause 
    855877\item libfoo.a: la version statique 
    856878\end{itemize} 
    857879\end{block} 
    858  
     880\pause 
     881\vfill 
    859882\begin{block}{le point sur les dynamiques} 
    860883\begin{itemize} 
     
    864887\item factorisation du code dans la RAM et sur le disque 
    865888\end{itemize} 
     889\pause 
    866890\item inconvénients 
    867891\begin{itemize} 
     
    877901\begin{itemize} 
    878902\item codé dans l'executable (\emph{rpath}) 
     903\pause 
    879904\item codé en dur: \verb+/lib(64)+, \verb+/usr/lib(64)+ 
    880 \item indiqués dans ld.so.conf 
    881 \end{itemize} 
    882 \end{block} 
    883  
     905\pause 
     906\item indiqués dans \verb+/etc/ld.so.conf+ 
     907\end{itemize} 
     908\end{block} 
     909\pause 
     910\vfill 
    884911\begin{exampleblock}{ldd} 
    885912\begin{small} 
     
    892919\end{small} 
    893920\end{exampleblock} 
    894  
     921\pause 
     922\vfill 
    895923\begin{alertblock}{linux-gate.so.1} 
    896924Code injecté directement par le kernel, ignorez le ! 
     
    908936\listinginput[1]{1}{libsmall.c} 
    909937\end{exampleblock} 
     938\pause 
    910939\vfill 
    911940\begin{block}{la version statique} 
     
    915944\end{verbatim} 
    916945\end{block} 
     946\pause 
    917947\begin{block}{la version dynamique} 
    918948\begin{verbatim} 
     
    924954 
    925955\begin{frame}[fragile] 
    926 \frametitle{l'exemple: la librairie} 
     956\frametitle{l'exemple: le programme} 
    927957\begin{exampleblock}{small.c} 
    928958\small 
    929959\listinginput[1]{1}{small.c} 
    930960\end{exampleblock} 
     961\pause 
    931962\vfill 
    932963\begin{block}{la version statique} 
     
    936967\end{verbatim} 
    937968\end{block} 
     969\pause 
    938970\begin{block}{la version dynamique} 
    939971\begin{verbatim} 
     
    951983Un code lié à une bibliothèque ne fonctionnera jamais sans. 
    952984\end{alertblock} 
    953  
     985\pause 
     986\vfill 
    954987\begin{block}{les deux clefs:} 
    955988\begin{itemize} 
     
    958991\end{itemize} 
    959992\end{block} 
    960  
     993\pause 
     994\vfill 
    961995\begin{block}{exemple d'utilisation} 
    962996\begin{itemize} 
     
    9841018\end{itemize} 
    9851019\end{block} 
     1020\pause 
     1021\vfill 
    9861022\begin{alertblock}{X ça pue !} 
    9871023Oui, c'est le prix de la compatibilité\ldots 
     
    10021038\item souris (et autres rongeurs) 
    10031039\end{itemize} 
     1040\pause 
    10041041\item protocol d'affichage (reseau) 
     1042\pause 
    10051043\item \textbf{serveur d'affichage} 
    10061044\end{itemize} 
    10071045\end{block} 
    10081046\column{2.5in} 
    1009 \begin{exampleblock}{le serveur X} 
     1047\pause 
     1048\begin{exampleblock}{le serveur X, c'est ça:} 
    10101049\centering 
    10111050\includegraphics[height=40mm]{x} 
     
    10231062\end{block} 
    10241063\column{2in} 
     1064\pause 
    10251065\begin{exampleblock}{} 
    10261066\centering 
     
    10351075\begin{itemize} 
    10361076\item application X11 
    1037 \item il créer les fenetres 
    1038 \item fourni un menu 
     1077\item il créé les fenetres 
     1078\item fourni un menu (éventuellement) 
    10391079\end{itemize} 
    10401080\end{block} 
     
    10431083\end{alertblock} 
    10441084\column{2in} 
     1085\pause 
    10451086\begin{exampleblock}{} 
    10461087\centering 
     
    10581099\end{frame} 
    10591100 
     1101\section*{Fin} 
     1102 
     1103\begin{frame}{Des questions} 
     1104\center{ 
     1105\hfill 
     1106\includegraphics{150px-Tux} 
     1107\hfill 
     1108} 
     1109\end{frame} 
     1110 
    10601111\end{document} 
Note: See TracChangeset for help on using the changeset viewer.