Changeset 208
- Timestamp:
- 11/05/08 19:58:44 (15 years ago)
- Location:
- trunk/unix
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/unix/Makefile
r206 r208 19 19 sparse.c \ 20 20 temp.sh \ 21 libsmall.c \ 22 libsmall.h \ 23 small.c \ 21 24 22 25 unix_IMAGESJPG= \ … … 31 34 x-mplayer-capcv-twm.png \ 32 35 x-resume.png \ 36 150px-Tux.png \ 33 37 34 38 unix_FIGURES= \ -
trunk/unix/libsmall.c
r198 r208 1 1 #include "libsmall.h" 2 3 2 int func(void) { 4 3 return(0); -
trunk/unix/small.c
r198 r208 1 1 #include "libsmall.h" 2 3 2 int main(void) { 4 3 return(func()); -
trunk/unix/unix.tex
r207 r208 285 285 \begin{itemize} 286 286 \item un numéro (6160386) 287 \item un type288 287 \item des métadata 289 288 \begin{itemize} … … 404 403 \end{block} 405 404 \pause 405 \vfill 406 406 \begin{block}{utilisation ?} 407 407 Chaque fois que des données seront allouées à emplacement dans le fichier: … … 446 446 Je peux le lire comme un fichier: 447 447 \begin{verbatim} 448 [nanardon@virgo ~]$ dd if=/dev/sr0 bs=1024 count=20 | wc448 $ dd if=/dev/sr0 bs=1024 count=20 | wc 449 449 20+0 enregistrements lus 450 450 20+0 enregistrements écrits … … 459 459 \begin{exampleblock}{Première console:} 460 460 \begin{verbatim} 461 [olivier@andromede unix]$ mkfifo /tmp/fifo462 [olivier@andromede unix]$ cat /etc/passwd > /tmp/fifo461 $ mkfifo /tmp/fifo 462 $ cat /etc/passwd > /tmp/fifo 463 463 \end{verbatim} 464 464 \end{exampleblock} … … 467 467 \begin{exampleblock}{Deuxième console:} 468 468 \begin{verbatim} 469 [olivier@andromede ~]$ grep root < /tmp/fifo469 $ grep root < /tmp/fifo 470 470 root:x:0:0:root:/root:/bin/bash 471 471 \end{verbatim} … … 530 530 \end{block} 531 531 \pause 532 532 \vfill 533 533 \begin{alertblock}{le FHS} 534 534 Le Filesystem Hierarchy Standard normalise l'empacement des fichiers … … 582 582 \item cache (disque) 583 583 \end{itemize} 584 \pause 584 585 \item swap (sur disque, très lente) 585 586 \end{itemize} … … 632 633 \begin{frame}[fragile] 633 634 \frametitle{Mémoire à crédit} 635 636 \begin{exampleblock}{malloc.c} 637 \small 638 \listinginput{1}{malloc.c} 639 \end{exampleblock} 634 640 \begin{columns} 635 641 \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 643 643 \begin{block}{sortie formatée} 644 644 \begin{tabular}{|c|c|c|} … … 653 653 \end{tabular} 654 654 \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} 655 663 \end{columns} 656 657 \begin{exampleblock}{malloc.c}658 \small659 \listinginput{1}{malloc.c}660 \end{exampleblock}661 664 662 665 \end{frame} … … 672 675 \includegraphics[height=15mm]{fork} 673 676 \end{block} 674 677 \pause 675 678 \begin{columns} 676 \column{2 in}679 \column{2.5in} 677 680 \begin{block}{motivation} 678 681 \begin{itemize} … … 683 686 \end{itemize} 684 687 \end{block} 688 \pause 685 689 \column{2in} 686 690 \begin{block}{pros \& cons} … … 703 707 \end{exampleblock} 704 708 \column{2.5in} 709 \pause 710 \begin{block}{Ram utilisée} 705 711 \begin{tabular}{|l|c|} 706 712 \hline … … 715 721 \hline 716 722 \end{tabular} 723 \end{block} 717 724 \end{columns} 718 725 \end{frame} … … 730 737 \item le fonctionnement ressemble à fork mais 731 738 \begin{itemize} 732 \item programmation différente 733 \item gestion par le système différente 739 \item programmation et gestion différentes 734 740 \item complexe mais éfficace 735 741 \end{itemize} 736 742 \end{itemize} 737 743 \end{block} 738 744 \pause 739 745 \begin{alertblock}{Linux: libpthread (glibc) POSIX} 740 746 Je ne garantie pas que tout les UNIX fournissent le support des threads 741 747 \end{alertblock} 748 \pause 742 749 \begin{exampleblock}{} 743 750 \small … … 756 763 \begin{block}{points à retenir} 757 764 \begin{itemize} 758 \item flux de donnée continu 765 \item flux de donnée continu unique 759 766 \item sens unique 760 767 \item bloquants 761 \ item flux unique762 \end{ itemize}763 \ end{block}764 768 \end{itemize} 769 \end{block} 770 \pause 771 \vfill 765 772 \begin{block}{Utilisation} 766 773 \begin{itemize} … … 772 779 773 780 \begin{frame} 774 \frametitle{IPC , la boite aux lettres système}781 \frametitle{IPC/SHM, la boite aux lettres système} 775 782 \begin{block}{fonctions} 776 783 \begin{itemize} … … 779 786 \end{itemize} 780 787 \end{block} 781 788 \pause 789 \vfill 782 790 \begin{block}{+ et -} 783 791 \begin{itemize} … … 788 796 \end{itemize} 789 797 \end{block} 798 \pause 799 \vfill 800 \begin{block}{La doc (pour le C)} 801 \textbf{man} 802 shmat, shmdt, shmop, shm\_overview, 803 shmctl, shmget, shm\_open, shm\_unlink 804 \end{block} 790 805 \end{frame} 791 806 … … 800 815 \end{itemize} 801 816 \end{block} 802 817 \pause 818 \vfill 803 819 \begin{block}{modes} 804 820 \begin{itemize} … … 810 826 \item problème de latence 811 827 \end{itemize} 812 \item écoute sur un socket 828 \pause 829 \item écoute sur un socket (fichier de type \ldots) 813 830 \begin{itemize} 814 831 \item communication locale … … 832 849 \begin{itemize} 833 850 \item données formatées (format ELF ces jours-ci) 851 \pause 834 852 \item executable (ou presque) par le processeur 853 \pause 835 854 \item contient des objets: 836 855 \begin{itemize} … … 847 866 848 867 \begin{frame} 849 \frametitle{ quand c'est propres}868 \frametitle{Le standard} 850 869 \begin{block}{Normallement un programme fournit} 851 870 \begin{itemize} 852 871 \item foo.h: l'entête pour la compilation 872 \pause 853 873 \item libfoo.so.1: la librairie utilisée, versionnée 874 \pause 854 875 \item libfoo.so: (lien) pour l'éditeur de lien 876 \pause 855 877 \item libfoo.a: la version statique 856 878 \end{itemize} 857 879 \end{block} 858 880 \pause 881 \vfill 859 882 \begin{block}{le point sur les dynamiques} 860 883 \begin{itemize} … … 864 887 \item factorisation du code dans la RAM et sur le disque 865 888 \end{itemize} 889 \pause 866 890 \item inconvénients 867 891 \begin{itemize} … … 877 901 \begin{itemize} 878 902 \item codé dans l'executable (\emph{rpath}) 903 \pause 879 904 \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 884 911 \begin{exampleblock}{ldd} 885 912 \begin{small} … … 892 919 \end{small} 893 920 \end{exampleblock} 894 921 \pause 922 \vfill 895 923 \begin{alertblock}{linux-gate.so.1} 896 924 Code injecté directement par le kernel, ignorez le ! … … 908 936 \listinginput[1]{1}{libsmall.c} 909 937 \end{exampleblock} 938 \pause 910 939 \vfill 911 940 \begin{block}{la version statique} … … 915 944 \end{verbatim} 916 945 \end{block} 946 \pause 917 947 \begin{block}{la version dynamique} 918 948 \begin{verbatim} … … 924 954 925 955 \begin{frame}[fragile] 926 \frametitle{l'exemple: l a librairie}956 \frametitle{l'exemple: le programme} 927 957 \begin{exampleblock}{small.c} 928 958 \small 929 959 \listinginput[1]{1}{small.c} 930 960 \end{exampleblock} 961 \pause 931 962 \vfill 932 963 \begin{block}{la version statique} … … 936 967 \end{verbatim} 937 968 \end{block} 969 \pause 938 970 \begin{block}{la version dynamique} 939 971 \begin{verbatim} … … 951 983 Un code lié à une bibliothèque ne fonctionnera jamais sans. 952 984 \end{alertblock} 953 985 \pause 986 \vfill 954 987 \begin{block}{les deux clefs:} 955 988 \begin{itemize} … … 958 991 \end{itemize} 959 992 \end{block} 960 993 \pause 994 \vfill 961 995 \begin{block}{exemple d'utilisation} 962 996 \begin{itemize} … … 984 1018 \end{itemize} 985 1019 \end{block} 1020 \pause 1021 \vfill 986 1022 \begin{alertblock}{X ça pue !} 987 1023 Oui, c'est le prix de la compatibilité\ldots … … 1002 1038 \item souris (et autres rongeurs) 1003 1039 \end{itemize} 1040 \pause 1004 1041 \item protocol d'affichage (reseau) 1042 \pause 1005 1043 \item \textbf{serveur d'affichage} 1006 1044 \end{itemize} 1007 1045 \end{block} 1008 1046 \column{2.5in} 1009 \begin{exampleblock}{le serveur X} 1047 \pause 1048 \begin{exampleblock}{le serveur X, c'est ça:} 1010 1049 \centering 1011 1050 \includegraphics[height=40mm]{x} … … 1023 1062 \end{block} 1024 1063 \column{2in} 1064 \pause 1025 1065 \begin{exampleblock}{} 1026 1066 \centering … … 1035 1075 \begin{itemize} 1036 1076 \item application X11 1037 \item il cré erles fenetres1038 \item fourni un menu 1077 \item il créé les fenetres 1078 \item fourni un menu (éventuellement) 1039 1079 \end{itemize} 1040 1080 \end{block} … … 1043 1083 \end{alertblock} 1044 1084 \column{2in} 1085 \pause 1045 1086 \begin{exampleblock}{} 1046 1087 \centering … … 1058 1099 \end{frame} 1059 1100 1101 \section*{Fin} 1102 1103 \begin{frame}{Des questions} 1104 \center{ 1105 \hfill 1106 \includegraphics{150px-Tux} 1107 \hfill 1108 } 1109 \end{frame} 1110 1060 1111 \end{document}
Note: See TracChangeset
for help on using the changeset viewer.