Changes between Version 9 and Version 10 of Cours1


Ignore:
Timestamp:
Jul 2, 2006, 8:25:26 PM (14 years ago)
Author:
Vincent Caron
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Cours1

    v9 v10  
    1 = Cours 1: Interopérabilité - applicatifs (émulation, portage) =
    2 
    3 == Emulation bas niveau (émulation matérielle) ==
    4 
    5  * Bochs: http://bochs.sf.net
    6  * QEMU: http://fabrice.bellard.free.fr/qemu/
    7    Premier niveau: émulation CPU
    8    Second niveau: émulation plateforme (périphériques: vidéo, disque, réseau, etc)
    9    Besoin d'un BIOS (cf. OpenBIOS, LinuxBIOS)
    10 
    11  * VMware (propriétaire): http://vmware.com
    12 
    13  * sujets avancés: la translation dynamique de code, l'analyse de code bas niveau (valgrind),
    14    les périphériques virtuels, usermode Linux, linux-vserver, Xen...
    15 
    16 == Virtualisation ==
    17 
    18  Un micro-noyau pour héberger des noyaux classiques
    19  * Approche transparente: complexe et très limitée suivant la plateforme
    20  * Approche coopérative: Xen, Adeos
    21 
    22 == Emulation ABI: exemple de Wine ==
    23 
    24  * Petit historique du projet
    25    Sun & IBM, 1992: premières émulations Windows 16bit (WABI, OS/2)
    26    Linux hackers, 1993: démarrage de Wine (Youngdale, Metcalfe, Julliard, Icaza, Amstadt)
    27    1996: Excel fonctionne
    28    2006: jeux Direct3D, IE, Office, etc.
    29    Pourquoi (http://winehq.org/site/why): diversité, portabilité, remote desktop, sécurité, liberté, etc.
    30 
    31  * Architecture
    32    S'appuie sur Unix et X. Peut charger des DLLs depuis une plateforme x86, remplace
    33    progressivement les DLLs propriétaires par des implémentations natives libres.
    34    Emulation DOS, Win16, Win32.
    35    Emulation de l'environnement et des services inter-applications (Winserver)
    36    Compatibilité des bugs.
    37    Toolchain: cross-gcc pour win32 + binutils dédiés PE+MSVC.
    38 
    39  * les extensions propriétaires: WineX (TransGaming), CrossOver (CodeWeavers)
    40    CodeWeavers: maintenance Wine,
    41    Transgaming: D3D vers OpenGL
    42 
    43  * exemple pratique: le support des codecs propriétaires win32 depuis GNU/Linux (libavifile, mplayer, etc)
    44    http://cvs.sourceforge.net/viewcvs.py/avifile/avifile-0.6/plugins/libwin32/
    45 
    46 
    47 == Emulation API win32: Wine ==
    48  * avec mingw32: 100% interopérable win32, 100% libre (apt-get install libwine-dev)
    49  * avec gcc: portage
    50  
    51 == via le respect des standards (ISO C/C++, POSIX) ==
    52 
    53  * théorie & réalité, le choc des philosophies (DCOM, héritage du Pascal, etc)
    54    ISO-C99/MSVCRT/MSVC7
    55    Pascal/C
    56    Unicode: UCS-2 vs. UTF-8
    57    Ressources: winres vs. gettext
    58 
    59 == Via des toolkits portables ==
    60  * bas niveau: SDL, glib
    61  * niveau applicatif: GTK+, Qt
    62  * haut niveau: XUL
    63 
    64 
    65 == De Unix vers MS Windows et vice-versa ==
    66 
    67  * Cygwin (portage GNU libc pour un environnement POSIX)
    68  * gnuwin32 (portage outils POSIX)
    69  * les 'Services for Unix' de MS (subsystem NT)
     1Page dépréciée en faveur de EnstaCours1.