1. John Siracusa
    1. Mountain Lion
      1. Introduction
      2. Achat et installation
      3. Changements d'interface (1)
      4. Changements d'interface (2)
      5. Changements d'interface (3)
      6. Applications (1)
      7. Applications (2)
      8. Applications (3)
      9. Applications (4)
      10. Applications (5)
      11. iCloud(1)
      12. iCloud(2)
      13. iCloud(3)
      14. Gatekeeper(1)
      15. Gatekeeper(2)
      16. Retina et HiDPI
      17. Fourre-tout (1)
      18. Fourre-tout (2)
      19. Fourre-tout (3)
      20. Fourre-tout (4)
      21. Fourre-tout (5)
      22. Fourre-tout (6)
      23. Recommandations
      24. Deux pères, un fils
    2. Lion
      1. Introduction
      2. Installation
      3. Revoir les fondamentaux
      4. Redimensionnement des fenêtres
      5. Et voici pour les cinglés
      6. La gestion des fenêtres
      7. Le modèle de document
      8. le modèle des processus
      9. Les éléments internes (1)
      10. Les éléments internes (2)
      11. ARC
      12. Le système de fichiers
      13. Ses modifications dans Lion
      14. Documents, résolution
      15. Le Finder
      16. Mail, Safari
      17. Fourre tout (1)
      18. Fourre tout (2)
      19. Recommendations
    3. Snow Leopard
      1. Introduction
      2. Le ticket d'entrée
      3. L'installation
      4. Nouvel aspect
      5. Détails internes
      6. Quick Time X
      7. Système de fichiers
      8. Faire plus avec plus
      9. LLVM et Clang
      10. Les blocs
      11. Concurrence
      12. Grand Central Dispatch
      13. Asynchronicité
      14. Open CL
      15. La différence...
      16. Quick Time Player
      17. Le Dock
      18. Le Finder
      19. Exchange
      20. Performances
      21. Fourre tout (1)
      22. Fourre tout (2)
      23. Le futur
    4. Leopard
      1. Introduction
      2. L'héritage
      3. Nouvel aspect 1
      4. Nouvel aspect 2
      5. Le noyau
      6. 64 bits
      7. FS Events
      8. Core animation
      9. Quartz GL
      10. Core UI
      11. Détails internes
      12. Le Finder
      13. Le Dock
      14. Time Machine
      15. Performances
      16. Pot pourri
      17. Demain
    5. Tiger
      1. Introduction
      2. Retour sur le passé
      3. Nouvel aspect de Tiger
      4. Mises à jour du noyau
      5. Le lancement
      6. Les méta-données
      7. Attributs étendus
      8. Listes de contrôle d'accès
      9. Spotlight 1
      10. Spotlight 2 : analyse et potentiel
      11. Types de fichiers
      12. Méta-données : la fin
      13. Quartz
      14. Quartz 2D Extreme
      15. Core Image
      16. La vidéo sous Tiger
      17. Dashboard
      18. Le Finder
      19. Les performances
      20. Pot pourri
      21. Conclusion
    6. Panther
      1. Introduction
      2. Les précédents
      3. L'installation
      4. Nouvel aspect
      5. Performances
      6. Changement rapide d'utilisateur
      7. Gestion des fenêtres
      8. Exposé
      9. Le Finder
      10. Performance du Finder
      11. Toujours le même
      12. Safari
      13. XCode
      14. Conclusion
    7. Jaguar
      1. Introduction
      2. Le nom
      3. L'installation
      4. Modifications d'Unix
      5. Dévelopeurs...
      6. Quoi de neuf
      7. Rendezvous
      8. Quartz Extrême
      9. Performance
      10. Compositions
      11. Le Finder
      12. Applications
      13. Sherlock
      14. Le portrait
    8. Puma
      1. Prelude
      2. Introduction
      3. Installation
      4. Réglages système
      5. Performance
      6. Redimensionnement des fenêtres
      7. Utilisation de la mémoire
      8. Diagnostics de mémoire
      9. L'environnement Classique
      10. L'interface Utilisateur
      11. Le Finder
      12. Extensions de fichiers
      13. Divers, conclusion
    9. Cheeta (Mac OS X 10.0)
      1. Qu'est ce que Mac OS X
      2. Installation
      3. Le démarrage
      4. Utilisation de la RAM
      5. Performance
      6. Performance des applications
      7. Stabilité
      8. L'interface utilisateur
      9. Le Finder
      10. Le navigateur du Finder
      11. Le Finder (divers)
      12. L'interface utilisateur
      13. Os X Classique
      14. Système de fichiers
      15. Unix
      16. Applications
      17. Conclusion
    10. Les débuts de MacOsX
      1. 1999 : OSX DP2
      2. 2000 : Quartz et Aqua/a>
      3. Fin de la lune de miel
      4. la première bêta publique
      5. 2001 : Mac OS X 10.0
      6. Un investissement
    11. Finder Spatial
      1. Introduction
      2. Interfaces spatiales
      3. Le Finder spatial
      4. Le concierge
      5. Un nouveau Finder
      6. Le browser
      7. Le browser spatial
      8. Finder et méta-données
      9. Les modèles
      10. Pensées finales

La simultanéité dans un monde nouveau : prélude




La lutte pour faire un usage efficace d'un grand nombre d'ordinateurs indépendants n'est pas nouvelle. Pendant des décades, le champ de l'informatique à haute performance a abordé ce problème. Les défis rencontrés par les gens qui écrivent des programmes pour les super-ordinateurs sont maintenant descendus jusqu'aux ordinateurs de bureau, et même jusqu'aux mobiles.

Dans l'industrie informatique, certains ont vu les choses venir plus tôt que d'autres. Il y a presque 20 ans, Be Inc fut constituée autour de l'idée visant à créer une plate-forme d'ordinateur personnel débarrassée des limitations du passé, et prête pour exploiter l'abondance qui s'annonçait de plusieurs unités de calcul indépendantes. Pour cela, Be créa la BeBox, un ordinateur personnel à deux CPUs, et BeOS, un tout nouveau système d'exploitation.

L'expression préférée pour caractériser BeOS fut le "le multithread ubiquitaire" (pervasive mutithreading) . La Be Box, et les autres machines qui faisaient tourner Be OS tiraient le meilleur parti des ressources de calcul limitées (selon les standards actuels) à leur disposition. Les démos furent impressionnantes. Une machine à deux processeurs de 66 MHz (ne m'obligez pas à faire un autre croquis) pouvait afficher plusieurs vidéos simultanément, tout en jouant aussi plusieurs pistes audio à partir d'un CD, -quelques unes en tâche de fond- et en même temps, l'interface utilisateur restait capable de répondre parfaitement.

Laissez-moi vous dire, car j'ai vécu cette période moi-même, que l'expérience était à vous couper le souffle à l'époque. Be OS fit instantanément des convertis parmi des centaines de mordus de technologie, dont beaucoup considèrent que l'expérience d'un ordinateur de bureau actuel n'atteint pas la vitesse de réaction de Be OS. C'est sans doute vrai émotionellement, si ce n'est littéralement.

Après avoir été sur le point d'acheter Be à la fin des années 90, Apple a finalement acquis NeXT, et le reste, c'est de l'histoire. Mais si Apple avait adopté le plan Be, les développeurs Mac auraient eu une route très difficile devant eux. Alors que ce multithread envahissant permettait des démos d'une technologie impressionnante, et une expérience inoubliable pour l'utilisateur, il pouvait être très exigeant pour le programmeur. Be OS était tout en threads, allant jusqu'à utiliser un thread séparé pour chaque fenêtre. Que vous le vouliez ou non, votre programme Be OS devait être multithread.

La programmation parallèle est notoirement difficile, et la gestion manuelle des threads de style POSIX représente la partie la plus profonde de la piscine. Les meilleurs programmeurs dans le monde sont sollicités pour créer de gros programmes multithread dans des langages de bas niveau comme C ou C++, sans se retrouver empalés sur les pieux de l'interblocage (deadlock), des situations de compétition (race conditions), et d'autres périls inhérents à l'exécution de très nombreux threads simultanés qui partagent le même espace de mémoire. Il faut faire une utilisation très prudente des primitives de verrouillage pour éviter des situations de concurrence dans des données partagées, qui accaparent les performances, et les bogues, oh les bogues ! Le terme "Heisenbug" (Heisenbug) aurait bien pu être inventé pour la programmation multithread.

Dix neuf ans après que Be se soit engagé dans la voie consistant à mettre plus de silicium dans les PCs, le défi n'a fait que s'amplifier. Les transistors sont là, plus que jamais. Les programmes à un seul thread sur les Macs de haut de gamme d'aujourd'hui même quand ils utilisent "100 % de CPU" n'illuminent qu'une seule tour parmi les 16 qu'affiche la fenêtre du moniteur de CPU.

Cœurs inutilisés

Plein de transistors inutilisés

Roulette multicolore

La roulette de la mort (The Iconfactory)



Et pitié pour l'utilisateur si ce cœur encombré du CPU fait tourner le thread principal d'une application avec interface graphique sous Mac OS X. Un thread principal sur un CPU saturé signifie que aucune entrée utilisateur n'est poussée dans la queue d'événements par l'application. Quelques secondes de ce régime, et une vieille amie fait son apparition : la roulette multicolore de la mort.


Voilà l'ennemi : un matériel avec plus de ressources de calcul que les programmeurs ne savent en utiliser, la plus grande partie inactive, et pendant ce temps, l'utilisateur est complètement bloqué dans ses tentatives d'utiliser l'application courante. Quelle est la réponse de Léopard des neiges ? Lisez la suite...